<?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>225997</bug_id>
          
          <creation_ts>2021-05-19 17:20:24 -0700</creation_ts>
          <short_desc>[JSC] Call custom accessors / values with their holder&apos;s global object</short_desc>
          <delta_ts>2025-03-23 14:38:46 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/29767</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>220233</blocked>
    
    <blocked>228943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vmamah531</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1761789</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-19 17:20:24 -0700</bug_when>
    <thetext>[JSC] Call custom accessors / values with their holder&apos;s global object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761791</commentid>
    <comment_count>1</comment_count>
      <attachid>429120</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-19 17:24:39 -0700</bug_when>
    <thetext>Created attachment 429120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762995</commentid>
    <comment_count>2</comment_count>
      <attachid>429495</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-23 19:37:10 -0700</bug_when>
    <thetext>Created attachment 429495
Patch

Fix global object for non-reified properties, use CustomAccessor for JS built-ins, and add tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762996</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-23 19:38:26 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764139</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-26 17:21:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/78541835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767924</commentid>
    <comment_count>5</comment_count>
      <attachid>430897</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-06-08 15:02:27 -0700</bug_when>
    <thetext>Created attachment 430897
Patch

Rebase on top of relanded put() revamp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768025</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-08 19:16:37 -0700</bug_when>
    <thetext>That&apos;s really awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771794</commentid>
    <comment_count>7</comment_count>
      <attachid>431994</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-06-22 14:31:06 -0700</bug_when>
    <thetext>Created attachment 431994
WIP

Introduce CallFrame::callerLexicalGlobalObject() and [CustomNativeFunctionAccessor] extended attribute to accomodate JSLocation setters, which need lexical global object to set document.referrer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771798</commentid>
    <comment_count>8</comment_count>
      <attachid>431995</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-06-22 14:41:58 -0700</bug_when>
    <thetext>Created attachment 431995
WIP

Add missing Source/WebCore/bindings/js/JSLocationCustom.h file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773332</commentid>
    <comment_count>9</comment_count>
      <attachid>432455</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-06-28 23:25:13 -0700</bug_when>
    <thetext>Created attachment 432455
Patch

Call CustomValue setters with correct realm as well, rework callerGlobalObject() to use vm.topCallFrame for custom accessors, revert changes to create_hash_table, and add tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774178</commentid>
    <comment_count>10</comment_count>
      <attachid>432710</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-01 11:21:08 -0700</bug_when>
    <thetext>Created attachment 432710
Patch

Fix --debug build, smsimplify callerGlobalObject(), add test for JSCustomSetterFunction passing correct referrer, and improve ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774182</commentid>
    <comment_count>11</comment_count>
      <attachid>432711</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-01 11:26:42 -0700</bug_when>
    <thetext>Created attachment 432711
Patch

svn add LayoutTests/imported</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774183</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-01 11:29:02 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #6)
&gt; That&apos;s really awesome.

Thanks! I would appreciate a review.

Once we land this, implementing RegExpConstructor legacy features (https://bugs.webkit.org/show_bug.cgi?id=220233) would be so much easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774296</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-01 16:51:08 -0700</bug_when>
    <thetext>Looks like a real regression in this test:

    http/tests/security/block-top-level-navigations-by-untrusted-first-party-iframes.html

We should probably hold off on review until that is resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774458</commentid>
    <comment_count>14</comment_count>
      <attachid>432794</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-02 07:46:27 -0700</bug_when>
    <thetext>Created attachment 432794
Patch

Attempt to retrieve VMEntryScope&apos;s global object even if vm.topCallFrame is nullptr, fixing the test regression, and make JSCustomSetterFunction test more sophisticated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778138</commentid>
    <comment_count>15</comment_count>
      <attachid>432794</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-20 03:55:51 -0700</bug_when>
    <thetext>Comment on attachment 432794
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778962</commentid>
    <comment_count>16</comment_count>
      <attachid>434056</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-22 19:39:04 -0700</bug_when>
    <thetext>Created attachment 434056
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779098</commentid>
    <comment_count>17</comment_count>
      <attachid>434099</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-23 10:58:48 -0700</bug_when>
    <thetext>Created attachment 434099
Patch for landing

svn add &lt;missing LayoutTest files&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779099</commentid>
    <comment_count>18</comment_count>
      <attachid>434099</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-23 11:09:31 -0700</bug_when>
    <thetext>Comment on attachment 434099
Patch for landing

I&apos;m putting r+ on my own patch (that was already reviewed by Yusuke (thanks!)) so the GitHub&apos;s WPT export bot mark my PR (https://github.com/web-platform-tests/wpt/pull/29767) as reviewed for me to land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779136</commentid>
    <comment_count>19</comment_count>
      <attachid>434110</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-23 12:23:54 -0700</bug_when>
    <thetext>Created attachment 434110
Patch for landing

Remove trailing whitespace from wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value-cross-realm.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779155</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-23 13:13:38 -0700</bug_when>
    <thetext>Committed r280256 (239923@main): &lt;https://commits.webkit.org/239923@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434110.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429120</attachid>
            <date>2021-05-19 17:24:39 -0700</date>
            <delta_ts>2021-05-23 19:37:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225997-20210520032437.patch</filename>
            <type>text/plain</type>
            <size>11502</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzc3NjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIxLTA1LTE5ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1
ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9nZXR0ZXItc2V0dGVyLWdsb2Jh
bG9iamVjdC1pbi1pYy0yLmpzOiBBZGRlZC4KKwogMjAyMS0wNS0xOSAgUm9iaW4gTW9yaXNzZXQg
IDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0eXBvIGluIEFpclVzZUNvdW50
cwpJbmRleDogSlNUZXN0cy9zdHJlc3MvZ2V0dGVyLXNldHRlci1nbG9iYWxvYmplY3QtaW4taWMt
Mi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9nZXR0ZXItc2V0dGVyLWdsb2JhbG9i
amVjdC1pbi1pYy0yLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2dldHRlci1z
ZXR0ZXItZ2xvYmFsb2JqZWN0LWluLWljLTIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NyBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30KKworY29uc3QgY3JlYXRlQ3VzdG9tID0gYAor
ICAgIHZhciBjdXN0b20gPSAkdm0uY3JlYXRlQ3VzdG9tVGVzdEdldHRlclNldHRlcigpOworYDsK
KworKGZ1bmN0aW9uIGRpcmVjdEN1c3RvbUFjY2Vzc29yR2V0KCkgeworICAgIGNvbnN0IG90aGVy
ID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b20gPSBvdGhl
ci5jdXN0b207CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAg
IGFzc2VydChvdGhlckN1c3RvbS5jdXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCA9PT0gb3RoZXIp
OworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBkaXJlY3RDdXN0b21WYWx1ZUdldCgpIHsKKyAg
ICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVy
Q3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkr
KykgeworICAgICAgICBhc3NlcnQob3RoZXJDdXN0b20uY3VzdG9tVmFsdWVHbG9iYWxPYmplY3Qg
PT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gZGlyZWN0Q3VzdG9tQWNjZXNz
b3JTZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAg
ICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVyLmN1c3RvbTsKKworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgY29uc3QgdmFsdWUgPSB7fTsKKyAgICAgICAgb3Ro
ZXJDdXN0b20uY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPSB2YWx1ZTsKKyAgICAgICAgYXNz
ZXJ0KHZhbHVlLnJlc3VsdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBk
aXJlY3RDdXN0b21WYWx1ZVNldCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVh
dGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBjb25zdCB2YWx1ZSA9IHt9
OworICAgICAgICBvdGhlckN1c3RvbS5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9IHZhbHVlOwor
ICAgICAgICBhc3NlcnQodmFsdWUucmVzdWx0ID09PSBvdGhlcik7CisgICAgfQorfSkoKTsKKwor
KGZ1bmN0aW9uIHByb3RvdHlwZUNoYWluQ3VzdG9tQWNjZXNzb3JHZXQoKSB7CisgICAgY29uc3Qg
b3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbUhl
aXIgPSBPYmplY3QuY3JlYXRlKG90aGVyLmN1c3RvbSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGFzc2VydChvdGhlckN1c3RvbUhlaXIuY3VzdG9tQWNj
ZXNzb3JHbG9iYWxPYmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24g
cHJvdG90eXBlQ2hhaW5DdXN0b21WYWx1ZUdldCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0
cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tSGVpciA9IE9iamVjdC5j
cmVhdGUob3RoZXIuY3VzdG9tKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKysp
IHsKKyAgICAgICAgYXNzZXJ0KG90aGVyQ3VzdG9tSGVpci5jdXN0b21WYWx1ZUdsb2JhbE9iamVj
dCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBwcm90b3R5cGVDaGFpbkN1
c3RvbUFjY2Vzc29yU2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1
c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b21IZWlyID0gT2JqZWN0LmNyZWF0ZShvdGhlci5j
dXN0b20pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBj
b25zdCB2YWx1ZSA9IHt9OworICAgICAgICBvdGhlckN1c3RvbUhlaXIuY3VzdG9tQWNjZXNzb3JH
bG9iYWxPYmplY3QgPSB2YWx1ZTsKKyAgICAgICAgYXNzZXJ0KHZhbHVlLnJlc3VsdCA9PT0gb3Ro
ZXIpOworICAgIH0KK30pKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI3NzcyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNS0xOSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWth
bGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gQ2FsbCBjdXN0b20gYWNjZXNzb3JzIC8g
dmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFsIG9iamVjdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTk3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElubGluZVNs
b3cpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90LmNwcDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlTbG90OjpjdXN0b21HZXR0ZXIgY29uc3QpOgorICAgICAgICAqIHRvb2xzL0pTRG9s
bGFyVk0uY3BwOgorCiAyMDIxLTA1LTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBTcGVlZCB1cCBkZWJ1ZyB2YWxpZGF0aW9uIGluIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jaygpLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkocmV2aXNpb24gMjc3
NzI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDA1LDcgKzE0MDUsNiBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqc3RhdGUuaml0Owog
ICAgIFZNJiB2bSA9IHN0YXRlLm1fdm07CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQu
Y29kZUJsb2NrKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLm1f
Z2xvYmFsT2JqZWN0OwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gc3RhdGUubV9lY21hTW9kZTsK
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3RhdGUuc3R1YkluZm87CiAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gc3RhdGUudmFsdWVSZWdzOwpAQCAtMTYwMyw2ICsxNjAy
LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAg
ICAgQVNTRVJUKGJhc2VHUFIgIT0gbG9hZGVkVmFsdWVHUFIpOwogICAgICAgICAgICAgQVNTRVJU
KG1fdHlwZSAhPSBTZXR0ZXIgfHwgdmFsdWVSZWdzUGF5bG9hZEdQUiAhPSBsb2FkZWRWYWx1ZUdQ
Uik7CiAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS5t
X2dsb2JhbE9iamVjdDsKKwogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgSlMgY2FsbCB1c2luZyBh
IEpTIGNhbGwgaW5saW5lIGNhY2hlLiBBc3N1bWUgdGhhdDoKICAgICAgICAgICAgIC8vCiAgICAg
ICAgICAgICAvLyAtIFNQIGlzIGFsaWduZWQgYW5kIHJlcHJlc2VudHMgdGhlIGV4dGVudCBvZiB0
aGUgY2FsbGluZyBjb21waWxlcidzIHN0YWNrIHVzYWdlLgpAQCAtMTczNyw2ICsxNzM4LDggQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBDdXN0b21WYWx1ZUdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tQWNjZXNz
b3JHZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0
b21BY2Nlc3NvclNldHRlcik7CiAgICAgICAgICAgICBBU1NFUlQoIWRvZXNQcm9wZXJ0eVN0b3Jh
Z2VMb2Fkcyk7IC8vIE9yIHdlIG5lZWQgYW4gZXh0cmEgcmVnaXN0ZXIuIFdlIHJlbHkgb24gcHJv
cGVydHlPd25lckdQUiBiZWluZyBjb3JyZWN0IGhlcmUuCiAKKyAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBoYXNBbHRlcm5hdGVCYXNlKCkgPyBhbHRlcm5hdGVCYXNl
KCktPmdsb2JhbE9iamVjdCh2bSkgOiBzdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCk7CisKICAg
ICAgICAgICAgIC8vIE5lZWQgdG8gbWFrZSByb29tIGZvciB0aGUgQyBjYWxsIHNvIGFueSBvZiBv
dXIgc3RhY2sgc3BpbGxhZ2UgaXNuJ3Qgb3ZlcndyaXR0ZW4uIEl0J3MKICAgICAgICAgICAgIC8v
IGhhcmQgdG8gdHJhY2sgaWYgc29tZW9uZSBkaWQgc3BpbGxhZ2Ugb3Igbm90LCBzbyB3ZSBqdXN0
IGFzc3VtZSB0aGF0IHdlIGFsd2F5cyBuZWVkCiAgICAgICAgICAgICAvLyB0byBtYWtlIHNvbWUg
c3BhY2UgaGVyZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAJKHJldmlzaW9uIDI3NzcyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODA1LDcgKzgwNSw3IEBAIGJvb2wgSlNP
YmplY3Q6OnB1dElubGluZVNsb3coSlNHbG9iYWxPYmoKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUob2JqLCBzZXR0ZXIpOwogCi0g
ICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBjYWxsQ3VzdG9tU2V0dGVyKGdsb2JhbE9iamVj
dCwgc2V0dGVyLCBpc0FjY2Vzc29yLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlLCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FsbEN1c3RvbVNldHRl
cihvYmotPmdsb2JhbE9iamVjdCh2bSksIHNldHRlciwgaXNBY2Nlc3Nvciwgb2JqLCBzbG90LnRo
aXNWYWx1ZSgpLCB2YWx1ZSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAh
PSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAkocmV2aXNpb24gMjc3NzI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsMTUgKzM1LDE2IEBAIEpTVmFsdWUgUHJvcGVydHlTbG90OjpmdW5jdGlvbkdldHRlcihKU0cK
IAogSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmN1c3RvbUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogeworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IG1fYXR0cmli
dXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciA/IG1fdGhpc1ZhbHVlIDog
SlNWYWx1ZShzbG90QmFzZSgpKTsKICAgICBpZiAoYXV0byBkb21BdHRyaWJ1dGUgPSB0aGlzLT5k
b21BdHRyaWJ1dGUoKSkgewotICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKHZtLCBkb21BdHRyaWJ1dGUtPmNsYXNzSW5m
bykpIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICAgICAgICAgIHJldHVybiB0aHJvd0RPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBkb21BdHRyaWJ1dGUtPmNsYXNzSW5mbywgcHJvcGVydHlOYW1lKTsK
ICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS5jdXN0
b20uZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgcHJv
cGVydHlOYW1lKSk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKG1fc2xvdEJhc2Us
ICJzbG90QmFzZSgpIHNob3VsZCBiZSBwcmVzZW50LiIpOworICAgIHJldHVybiBKU1ZhbHVlOjpk
ZWNvZGUobV9kYXRhLmN1c3RvbS5nZXRWYWx1ZShtX3Nsb3RCYXNlLT5nbG9iYWxPYmplY3Qodm0p
LCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgcHJvcGVydHlOYW1lKSk7CiB9CiAKIEpTVmFs
dWUgUHJvcGVydHlTbG90OjpnZXRQdXJlUmVzdWx0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI3NzcyOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU1OCw3ICsxNTU4LDkgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoY3Vz
dG9tRwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoY3VzdG9tR2V0QWNjZXNzb3JH
bG9iYWxPYmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoY3VzdG9tR2V0
VmFsdWVHbG9iYWxPYmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3Vz
dG9tU2V0QWNjZXNzb3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3VzdG9t
U2V0QWNjZXNzb3JHbG9iYWxPYmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoY3VzdG9tU2V0VmFsdWUpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3Vz
dG9tU2V0VmFsdWVHbG9iYWxPYmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoY3VzdG9tRnVuY3Rpb25TZXR0ZXIpOwogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoY3Vz
dG9tR2V0QWNjZXNzb3IsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTE2MDAsNiArMTYwMiwyMiBAQCBKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoY3VzdG9tU2V0QWNjZXNzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0pTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgaWYgKCF2YWx1ZS5p
c09iamVjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU09iamVjdCogb2JqZWN0
ID0gYXNPYmplY3QodmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7Cisg
ICAgb2JqZWN0LT5wdXQob2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJyZXN1bHQiKSwgZ2xvYmFsT2JqZWN0LCBzbG90KTsKKworICAgIHJldHVybiB0cnVl
OworfQorCiBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0VmFsdWUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBzbG90VmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwpAQCAtMTYxOCw2ICsxNjM2LDI0IEBAIEpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihjdXN0b21TZXRWYWx1ZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0LCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgc2xvdFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAg
ICBSRUxFQVNFX0FTU0VSVChKU1ZhbHVlOjpkZWNvZGUoc2xvdFZhbHVlKS5pbmhlcml0czxKU1Rl
c3RDdXN0b21HZXR0ZXJTZXR0ZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkpOworCisgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIGlmICghdmFsdWUu
aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwor
ICAgIG9iamVjdC0+cHV0KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicmVzdWx0IiksIGdsb2JhbE9iamVjdCwgc2xvdCk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3RvbUZ1bmN0aW9uU2V0dGVyLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwpAQCAtMTY0NSw5ICsxNjgxLDkgQEAgdm9pZCBKU1Rlc3RDdXN0b21H
ZXR0ZXJTZXR0ZXI6OmZpbmlzaENyZQogICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3IiKSwKICAgICAgICAgQ3Vz
dG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yLCBjdXN0b21TZXRB
Y2Nlc3NvciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IpKTsKICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0IiksCi0gICAgICAgIEN1c3Rv
bUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRWYWx1ZUdsb2JhbE9iamVjdCwgbnVs
bHB0ciksIDApOworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9t
R2V0VmFsdWVHbG9iYWxPYmplY3QsIGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0KSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSkpOwogICAgIHB1
dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3Vz
dG9tQWNjZXNzb3JHbG9iYWxPYmplY3QiKSwKLSAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpj
cmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yR2xvYmFsT2JqZWN0LCBudWxscHRyKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
KTsKKyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vz
c29yR2xvYmFsT2JqZWN0LCBjdXN0b21TZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsKIAogICAg
IHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y3VzdG9tRnVuY3Rpb24iKSwKICAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0s
IGN1c3RvbUdldEFjY2Vzc29yLCBjdXN0b21GdW5jdGlvblNldHRlciksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429495</attachid>
            <date>2021-05-23 19:37:10 -0700</date>
            <delta_ts>2021-06-08 15:02:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225997-20210524053708.patch</filename>
            <type>text/plain</type>
            <size>68438</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzc5NDApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA1LTIzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1
ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90
by1jaGFpbi1wdXQuanM6CisgICAgICAgICogc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2Jq
ZWN0LWluLWljLTIuanM6IEFkZGVkLgorCiAyMDIxLTA1LTIyICBSb3NzIEtpcnNsaW5nICA8cm9z
cy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBTdXBwb3J0IEVyZ29ub21pYyBCcmFuZCBD
aGVja3MgcHJvcG9zYWwgKGAjeCBpbiBvYmpgKQpJbmRleDogSlNUZXN0cy9zdHJlc3MvY3VzdG9t
LWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNz
L2N1c3RvbS1nZXQtc2V0LXByb3RvLWNoYWluLXB1dC5qcwkocmV2aXNpb24gMjc3OTQwKQorKysg
SlNUZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzCSh3b3JraW5n
IGNvcHkpCkBAIC05OSw4ICs5OSw4IEBAIGZ1bmN0aW9uIGdldEJhc2VzKCkgewogKCgpID0+IHsK
ICAgICBmb3IgKGxldCBiYXNlIG9mIGdldEJhc2VzKCkpIHsKICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDA7ICsraSkKLSAgICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgYmFzZS5j
dXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQg
dG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOwotICAgICAgICBhc3NlcnQoIVJlZmxl
Y3Quc2V0KE9iamVjdChiYXNlKSwgImN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0Iiwge30pKTsK
KyAgICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgYmFzZS5jdXN0b21BY2Nlc3NvclJlYWRP
bmx5ID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkg
cHJvcGVydHkuIik7CisgICAgICAgIGFzc2VydCghUmVmbGVjdC5zZXQoT2JqZWN0KGJhc2UpLCAi
Y3VzdG9tQWNjZXNzb3JSZWFkT25seSIsIHt9KSk7CiAgICAgfQogfSkoKTsKIApAQCAtMTA4LDIx
ICsxMDgsMjEgQEAgZnVuY3Rpb24gZ2V0QmFzZXMoKSB7CiAoKCkgPT4gewogICAgIGZvciAobGV0
IHByaW1pdGl2ZSBvZiBwcmltaXRpdmVzKSB7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwOyArK2kpCi0gICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IHByaW1pdGl2ZS5jdXN0
b21WYWx1ZUdsb2JhbE9iamVjdCA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNz
aWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOworICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkg
PT4geyBwcmltaXRpdmUuY3VzdG9tVmFsdWVOb1NldHRlciA9IHt9OyB9LCAiVHlwZUVycm9yOiBB
dHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOwogICAgIH0KIAogICAg
IGZvciAobGV0IG9iamVjdCBvZiBnZXRPYmplY3RzKCkpIHsKICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDA7ICsraSkKLSAgICAgICAgICAgIG9iamVjdC5jdXN0b21WYWx1ZUdsb2JhbE9i
amVjdCA9IHt9OwotICAgICAgICBhc3NlcnQob2JqZWN0Lmhhc093blByb3BlcnR5KCJjdXN0b21W
YWx1ZUdsb2JhbE9iamVjdCIpKTsKLSAgICAgICAgYXNzZXJ0KFJlZmxlY3Quc2V0KG9iamVjdCwg
ImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0Iiwge30pKTsKKyAgICAgICAgICAgIG9iamVjdC5jdXN0
b21WYWx1ZU5vU2V0dGVyID0ge307CisgICAgICAgIGFzc2VydChvYmplY3QuaGFzT3duUHJvcGVy
dHkoImN1c3RvbVZhbHVlTm9TZXR0ZXIiKSk7CisgICAgICAgIGFzc2VydChSZWZsZWN0LnNldChv
YmplY3QsICJjdXN0b21WYWx1ZU5vU2V0dGVyIiwge30pKTsKICAgICB9CiAKICAgICBmb3IgKGxl
dCBvYmplY3Qgb2YgZ2V0T2JqZWN0cygpKSB7CiAgICAgICAgIE9iamVjdC5wcmV2ZW50RXh0ZW5z
aW9ucyhvYmplY3QpOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7Ci0g
ICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG9iamVjdC5jdXN0b21WYWx1ZUdsb2JhbE9i
amVjdCA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5
IHByb3BlcnR5LiIpOwotICAgICAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChvYmplY3QsICJj
dXN0b21WYWx1ZUdsb2JhbE9iamVjdCIsIHt9KSk7CisgICAgICAgICAgICBzaG91bGRUaHJvdygo
KSA9PiB7IG9iamVjdC5jdXN0b21WYWx1ZU5vU2V0dGVyID0ge307IH0sICJUeXBlRXJyb3I6IEF0
dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7CisgICAgICAgICAgICBh
c3NlcnQoIVJlZmxlY3Quc2V0KG9iamVjdCwgImN1c3RvbVZhbHVlTm9TZXR0ZXIiLCB7fSkpOwog
ICAgICAgICB9CiAgICAgfQogfSkoKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2dldHRlci1zZXR0
ZXItZ2xvYmFsb2JqZWN0LWluLWljLTIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mv
Z2V0dGVyLXNldHRlci1nbG9iYWxvYmplY3QtaW4taWMtMi5qcwkobm9uZXhpc3RlbnQpCisrKyBK
U1Rlc3RzL3N0cmVzcy9nZXR0ZXItc2V0dGVyLWdsb2JhbG9iamVjdC1pbi1pYy0yLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYg
KCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7Cit9CisKK2Nv
bnN0IGNyZWF0ZUN1c3RvbSA9IGAKKyAgICB2YXIgY3VzdG9tID0gJHZtLmNyZWF0ZUN1c3RvbVRl
c3RHZXR0ZXJTZXR0ZXIoKTsKK2A7CisKKyhmdW5jdGlvbiBkaXJlY3RDdXN0b21BY2Nlc3Nvckdl
dCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNv
bnN0IG90aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxZTU7IGkrKykgeworICAgICAgICBhc3NlcnQob3RoZXJDdXN0b20uY3VzdG9tQWNjZXNzb3JH
bG9iYWxPYmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gZGlyZWN0
Q3VzdG9tVmFsdWVHZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3Vz
dG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVyLmN1c3RvbTsKKworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KG90aGVyQ3VzdG9tLmN1
c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID09PSBvdGhlcik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0
aW9uIGRpcmVjdEN1c3RvbUFjY2Vzc29yU2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3Ry
aW5nKGNyZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b20gPSBvdGhlci5jdXN0b207
CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGNvbnN0IHZh
bHVlID0ge307CisgICAgICAgIG90aGVyQ3VzdG9tLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0
ID0gdmFsdWU7CisgICAgICAgIGFzc2VydCh2YWx1ZS5yZXN1bHQgPT09IG90aGVyKTsKKyAgICB9
Cit9KSgpOworCisoZnVuY3Rpb24gZGlyZWN0Q3VzdG9tVmFsdWVTZXQoKSB7CisgICAgY29uc3Qg
b3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbSA9
IG90aGVyLmN1c3RvbTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAg
ICAgICAgY29uc3QgdmFsdWUgPSB7fTsKKyAgICAgICAgb3RoZXJDdXN0b20uY3VzdG9tVmFsdWVH
bG9iYWxPYmplY3QgPSB2YWx1ZTsKKyAgICAgICAgYXNzZXJ0KHZhbHVlLnJlc3VsdCA9PT0gb3Ro
ZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBwcm90b3R5cGVDaGFpbkN1c3RvbUFjY2Vz
c29yR2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7Cisg
ICAgY29uc3Qgb3RoZXJDdXN0b21IZWlyID0gT2JqZWN0LmNyZWF0ZShvdGhlci5jdXN0b20pOwor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBhc3NlcnQob3Ro
ZXJDdXN0b21IZWlyLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID09PSBvdGhlcik7CisgICAg
fQorfSkoKTsKKworKGZ1bmN0aW9uIHByb3RvdHlwZUNoYWluQ3VzdG9tVmFsdWVHZXQoKSB7Cisg
ICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhl
ckN1c3RvbUhlaXIgPSBPYmplY3QuY3JlYXRlKG90aGVyLmN1c3RvbSk7CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGFzc2VydChvdGhlckN1c3RvbUhlaXIu
Y3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVu
Y3Rpb24gcHJvdG90eXBlQ2hhaW5DdXN0b21BY2Nlc3NvclNldCgpIHsKKyAgICBjb25zdCBvdGhl
ciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tSGVpciA9
IE9iamVjdC5jcmVhdGUob3RoZXIuY3VzdG9tKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MWU1OyBpKyspIHsKKyAgICAgICAgY29uc3QgdmFsdWUgPSB7fTsKKyAgICAgICAgb3RoZXJDdXN0
b21IZWlyLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID0gdmFsdWU7CisgICAgICAgIGFzc2Vy
dCh2YWx1ZS5yZXN1bHQgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc5NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTggQEAKKzIwMjEtMDUtMjMgIEFs
ZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIENh
bGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRoIHRoZWlyIGhvbGRlcidzIGdsb2JhbCBv
YmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEp1
c3QgbGlrZSBKUyBidWlsdC1pbnMsIGdldHRlciAvIHNldHRlciBmdW5jdGlvbnMgb2YgV2ViSURM
IGF0dHJpYnV0ZXMgYXJlIGNyZWF0ZWQgaW4gcmVhbG0KKyAgICAgICAgb2YgdGhlaXIgaG9sZGVy
IGludGVyZmFjZSBbMV1bMl0sIHdoaWNoIGlzIHRoZWlyIF9jdXJyZW50XyByZWFsbSBmb3IgdGhy
b3dpbmcgYW4gZXJyb3IgWzNdLgorCisgICAgICAgIFdpdGggdGhpcyBwYXRjaCwgY3VzdG9tIHBy
b3BlcnRpZXMgZ2V0IGNvcnJlY3QgZ2xvYmFsIG9iamVjdCBpbnN0ZWFkIG9mIGxleGljYWwsIGlu
Y2x1ZGluZworICAgICAgICB3aGVuIGlubGluZSBjYWNoZWQsIGFsaWduaW5nIHRoZW0gd2l0aCBm
dW5jdGlvbnMgYW5kIHJlZ3VsYXIgYWNjZXNzb3JzLgorCisgICAgICAgIFRoZSBsYXR0ZXIgYWxs
b3dlZCBKUyBidWlsdC1pbnMgbGlrZSBTeW1ib2wjZGVzY3JpcHRpb24gdG8gc3dpdGNoIHRvIEN1
c3RvbUFjY2Vzc29yLCB3aGljaAorICAgICAgICBpcyBzbGlnaHRseSBtb3JlIGVmZmljaWVudCB0
byBjYWxsIGZyb20gQysrLCBkb2Vzbid0IG5lZWQgcmVpZmljYXRpb24gb24gZmlyc3QgYWNjZXNz
LCBhbmQKKyAgICAgICAgaGFzIG5pY2VyIHNpZ25hdHVyZS4KKworICAgICAgICBBbHNvLCByZW5h
bWVzIFdBU00gYWNjZXNzb3JzIHRvIGRyb3AgImZ1bmMiIGFuZCByZW1vdmVzIHVudXNlZCBmdW5j
dGlvbiBsZW5ndGggcGFyYW1ldGVyLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIgKHN0ZXAgMikKKyAgICAgICAgWzJd
OiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLXNldHRlciAo
c3RlcCA1KQorICAgICAgICBbM106IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Vj
bWFzY3JpcHQtdGhyb3cKKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGNyZWF0ZV9o
YXNoX3RhYmxlOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAg
ICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmll
d1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRJbmxpbmVTbG93KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAo
SlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmN1c3RvbUdldHRlciBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpnZXRW
YWx1ZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHRvb2xzL0pT
RG9sbGFyVk0uY3BwOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAg
ICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6IERlbGV0ZWQuCisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRh
YmxlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KToKKwogMjAyMS0wNS0yMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIEVOQUJMRShNQVNNX1BST0JFKSBmbGFnLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jcmVhdGVfaGFzaF90YWJsZQkocmV2aXNpb24gMjc3OTQwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw4ICs5Nywx
MCBAQCB3aGlsZSAoPElOPikgewogICAgICAgICB9IGVsc2lmICgkYXR0ID1+IG0vQWNjZXNzb3Iv
KSB7CiAgICAgICAgICAgICBteSAkZ2V0ID0gJHZhbDsKICAgICAgICAgICAgIG15ICRwdXQgPSAi
bnVsbHB0ciI7CisgICAgICAgICAgICAkYXR0cnNbLTFdID1+IHMvQWNjZXNzb3IvQ3VzdG9tQWNj
ZXNzb3IvOworICAgICAgICAgICAgJGF0dHJzWy0xXSAuPSAifFJlYWRPbmx5IjsKICAgICAgICAg
ICAgICRoYXNTZXR0ZXIgPSAidHJ1ZSI7Ci0gICAgICAgICAgICBwdXNoKEB2YWx1ZXMsIHsgInR5
cGUiID0+ICJQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IiLCAiZ2V0IiA9PiAkZ2V0LCAicHV0
IiA9PiAkcHV0IH0pOworICAgICAgICAgICAgcHVzaChAdmFsdWVzLCB7ICJ0eXBlIiA9PiAiUHJv
cGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5IiwgImdldCIgPT4gJGdldCwgInB1dCIgPT4gJHB1dCB9
KTsKICAgICAgICAgfSBlbHNpZiAoJGF0dCA9fiBtL0NlbGxQcm9wZXJ0eS8pIHsKICAgICAgICAg
ICAgIG15ICRwcm9wZXJ0eSA9ICR2YWw7CiAgICAgICAgICAgICBwdXNoKEB2YWx1ZXMsIHsgInR5
cGUiID0+ICJQcm9wZXJ0eUF0dHJpYnV0ZTo6Q2VsbFByb3BlcnR5IiwgInByb3BlcnR5IiA9PiAk
cHJvcGVydHkgfSk7CkBAIC0zMTAsMTEgKzMxMiw2IEBAIHN1YiBvdXRwdXQoKSB7CiAgICAgICAg
ICAgICAkZmlyc3RWYWx1ZSA9ICR2YWx1ZXNbJGldeyJmdW5jdGlvbiJ9OwogICAgICAgICAgICAg
JHNlY29uZFZhbHVlID0gJHZhbHVlc1skaV17InBhcmFtcyJ9OwogICAgICAgICAgICAgJGludHJp
bnNpYyA9ICR2YWx1ZXNbJGldeyJpbnRyaW5zaWMifTsKLSAgICAgICAgfSBlbHNpZiAoJHZhbHVl
c1skaV17InR5cGUifSBlcSAiUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIikgewotICAgICAg
ICAgICAgJGZpcnN0Q2FzdFN0ciA9ICJzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4iOwot
ICAgICAgICAgICAgJHNlY29uZENhc3RTdHIgPSAic3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+IjsKLSAgICAgICAgICAgICRmaXJzdFZhbHVlID0gJHZhbHVlc1skaV17ImdldCJ9OwotICAg
ICAgICAgICAgJHNlY29uZFZhbHVlID0gJHZhbHVlc1skaV17InB1dCJ9OwogICAgICAgICB9IGVs
c2lmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHki
KSB7CiAgICAgICAgICAgICAkZmlyc3RDYXN0U3RyID0gInN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPiI7CiAgICAgICAgICAgICAkc2Vjb25kQ2FzdFN0ciA9ICJzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4iOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkocmV2aXNpb24gMjc3OTQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDA1LDcgKzE0MDUsNiBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1w
bChBY2Nlc3NHZW5lCiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqc3RhdGUuaml0OwogICAgIFZN
JiB2bSA9IHN0YXRlLm1fdm07CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQuY29kZUJs
b2NrKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLm1fZ2xvYmFs
T2JqZWN0OwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gc3RhdGUubV9lY21hTW9kZTsKICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3RhdGUuc3R1YkluZm87CiAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzID0gc3RhdGUudmFsdWVSZWdzOwpAQCAtMTYwMyw2ICsxNjAyLDggQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAgICAgQVNT
RVJUKGJhc2VHUFIgIT0gbG9hZGVkVmFsdWVHUFIpOwogICAgICAgICAgICAgQVNTRVJUKG1fdHlw
ZSAhPSBTZXR0ZXIgfHwgdmFsdWVSZWdzUGF5bG9hZEdQUiAhPSBsb2FkZWRWYWx1ZUdQUik7CiAK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS5tX2dsb2Jh
bE9iamVjdDsKKwogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgSlMgY2FsbCB1c2luZyBhIEpTIGNh
bGwgaW5saW5lIGNhY2hlLiBBc3N1bWUgdGhhdDoKICAgICAgICAgICAgIC8vCiAgICAgICAgICAg
ICAvLyAtIFNQIGlzIGFsaWduZWQgYW5kIHJlcHJlc2VudHMgdGhlIGV4dGVudCBvZiB0aGUgY2Fs
bGluZyBjb21waWxlcidzIHN0YWNrIHVzYWdlLgpAQCAtMTczNyw2ICsxNzM4LDggQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBDdXN0b21WYWx1ZUdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tQWNjZXNzb3JHZXR0
ZXIgfHwgbV90eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0b21BY2Nl
c3NvclNldHRlcik7CiAgICAgICAgICAgICBBU1NFUlQoIWRvZXNQcm9wZXJ0eVN0b3JhZ2VMb2Fk
cyk7IC8vIE9yIHdlIG5lZWQgYW4gZXh0cmEgcmVnaXN0ZXIuIFdlIHJlbHkgb24gcHJvcGVydHlP
d25lckdQUiBiZWluZyBjb3JyZWN0IGhlcmUuCiAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBoYXNBbHRlcm5hdGVCYXNlKCkgPyBhbHRlcm5hdGVCYXNlKCktPmds
b2JhbE9iamVjdCh2bSkgOiBzdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCk7CisKICAgICAgICAg
ICAgIC8vIE5lZWQgdG8gbWFrZSByb29tIGZvciB0aGUgQyBjYWxsIHNvIGFueSBvZiBvdXIgc3Rh
Y2sgc3BpbGxhZ2UgaXNuJ3Qgb3ZlcndyaXR0ZW4uIEl0J3MKICAgICAgICAgICAgIC8vIGhhcmQg
dG8gdHJhY2sgaWYgc29tZW9uZSBkaWQgc3BpbGxhZ2Ugb3Igbm90LCBzbyB3ZSBqdXN0IGFzc3Vt
ZSB0aGF0IHdlIGFsd2F5cyBuZWVkCiAgICAgICAgICAgICAvLyB0byBtYWtlIHNvbWUgc3BhY2Ug
aGVyZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc3OTQwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZSk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsQ29sbGF0b3JQcm90b3R5cGVH
ZXR0ZXJDb21wYXJlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxDb2xs
YXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oSW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOwogCkBAIC0xMDUsMTQgKzEwNSwx
NCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yRnVuCiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNvbXBhcmVTdHJp
bmdzKGdsb2JhbE9iamVjdCwgeFZpZXdXaXRoU3RyaW5nLnZpZXcsIHlWaWV3V2l0aFN0cmluZy52
aWV3KSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yUHJvdG90
eXBlR2V0dGVyQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsQ29sbGF0b3JQcm90
b3R5cGVHZXR0ZXJDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAvLyAxMC4zLjMgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSAoRUNNQS00
MDIgMi4wKQogICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0aGlzIENvbGxhdG9yIG9iamVjdC4K
LSAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0b3Iq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRv
ciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoIWNvbGxhdG9yKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkNvbGxhdG9yLnBy
b3RvdHlwZS5jb21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIENvbGxhdG9yIl9zKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjc3OTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRl
ckZvcm1hdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlVG9QYXJ0
cyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyk7CkBAIC0xMTMsMTQgKzExMywxNCBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9yCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1
ZSkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIC8vIDEyLjMuMyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgZHRmIGJlIHRoaXMgRGF0ZVRpbWVG
b3JtYXQgb2JqZWN0LgotICAgIGF1dG8qIGR0ZiA9IEludGxEYXRlVGltZUZvcm1hdDo6dW53cmFw
Rm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cisg
ICAgYXV0byogZHRmID0gSW50bERhdGVUaW1lRm9ybWF0Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMo
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAvLyAyLiBSZXR1cm5JZkFicnVwdChkdGYpLgog
ICAgIGlmIChVTkxJS0VMWSghZHRmKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzc5NDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTYgKzM0LDE2IEBAIG5hbWVzcGFjZSBKU0Mgewogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNYXhp
bWl6ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90
eXBlRnVuY01pbmltaXplKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxM
b2NhbGVQcm90b3R5cGVGdW5jVG9TdHJpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lKTsKLXN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhcik7Ci1z
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
Q2FzZUZpcnN0KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJDb2xsYXRpb24pOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSk7Ci1zdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYyk7Ci1zdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVt
YmVyaW5nU3lzdGVtKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2Nh
bGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0KTsKLXN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24pOworc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VO
YW1lKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJDYWxlbmRhcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24pOworc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNs
ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBl
R2V0dGVyTnVtZXJpYyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJSZWdpb24pOwogCiB9CiAKQEAgLTE0MiwxMiArMTQyLDEyIEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuYmFzZU5hbWUKLUpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byog
bG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5iYXNlTmFt
ZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBM
b2NhbGUiX3MpOwogCkBAIC0xNTYsMTIgKzE1NiwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
SW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFyCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
SW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRs
TG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9
IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FsZW5kYXIgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9z
KTsKIApAQCAtMTcwLDEyICsxNzAsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxM
b2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9j
YWxlLnByb3RvdHlwZS5jYXNlRmlyc3QKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2Fs
ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5
bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhc2VGaXJzdCBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwog
CkBAIC0xODQsMTIgKzE4NCwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2Fs
ZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUu
cHJvdG90eXBlLmNvbGxhdGlvbgotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJDb2xsYXRpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2Fs
ZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1p
Y0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY29sbGF0aW9uIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAg
LTE5OCwxMiArMTk4LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJv
dG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90
b3R5cGUuaG91ckN5Y2xlCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3Rv
dHlwZUdldHRlckhvdXJDeWNsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVySG91ckN5Y2xlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2Fz
dDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
IWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5ob3VyQ3ljbGUgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMjEy
LDEyICsyMTIsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwog
fQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlw
ZS5udW1lcmljCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdl
dHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdl
dHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2Nh
bGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50
bC5Mb2NhbGUucHJvdG90eXBlLm51bWVyaWMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4g
b2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMjI1LDEyICsyMjUsMTIg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRw
czovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5udW1iZXJpbmdT
eXN0ZW0KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
TnVtYmVyaW5nU3lzdGVtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
ICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbSBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwog
CkBAIC0yMzksMTIgKzIzOSwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2Fs
ZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUu
cHJvdG90eXBlLmxhbmd1YWdlCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckxhbmd1YWdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJMYW5ndWFnZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nh
c3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubGFuZ3VhZ2UgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMjUz
LDEyICsyNTMsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwog
fQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlw
ZS5zY3JpcHQKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyU2NyaXB0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0
ZXJTY3JpcHQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1
dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5M
b2NhbGUucHJvdG90eXBlLnNjcmlwdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0yNjcsMTIgKzI2NywxMiBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLnJlZ2lvbgotSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24sIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNE
eW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUu
cmVnaW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIExvY2FsZSJfcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAy
Nzc5NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0
VG9QYXJ0cyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihJbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdCk7CkBAIC0xMDgsMTQgKzEwOCwx
NCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bE51bWJlckZvcm1hCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVl
KSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIC8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChF
Q01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IG5mIGJlIHRoaXMgTnVtYmVyRm9ybWF0IG9iamVj
dC4KLSAgICBhdXRvKiBuZiA9IEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9u
cyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIG5mID0g
SW50bE51bWJlckZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAgICAgaWYgKFVOTElLRUxZKCFuZikpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Il9zKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMjc3OTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
d1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDkgKzgzLDkgQEAgc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZQogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0KTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9GdW5jU2V0QmlnSW50NjQpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0Z1bmNTZXRCaWdVaW50NjQpOwot
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZl
cik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVy
Qnl0ZUxlbmd0aCk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1By
b3RvR2V0dGVyQnl0ZU9mZnNldCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihk
YXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KTsKIAogfQogCkBAIC0y
MjMsMjQgKzIyMywyNCBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBn
CiAKIElHTk9SRV9DTEFOR19XQVJOSU5HU19CRUdJTigibWlzc2luZy1wcm90b3R5cGVzIikKIAot
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlciwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHlu
YW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBK
U0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVm
ZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh2aWV3LT5wb3NzaWJseVNoYXJl
ZEpTQnVmZmVyKGdsb2JhbE9iamVjdCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGRh
dGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFW
aWV3Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTRGF0YVZpZXcqIHZpZXcg
PSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5ieXRlTGVuZ3RoIGV4cGVjdHMg
fHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAgICAgaWYgKHZpZXctPmlzRGV0YWNo
ZWQoKSkKQEAgLTI0OSwxMiArMjQ5LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRh
Vmlld1Byb3RvR2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZpZXctPmxl
bmd0aCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0
dGVyQnl0ZU9mZnNldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVy
Qnl0ZU9mZnNldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxK
U0RhdGFWaWV3Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXZp
ZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJEYXRhVmlldy5wcm90b3R5cGUuYnl0ZU9mZnNldCBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERh
dGFWaWV3IG9iamVjdCIpOwogICAgIGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNzc5NDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgwNSw3ICs4MDUsNyBAQCBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEpT
R2xvYmFsT2JqCiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBzbG90
LnNldEN1c3RvbVZhbHVlKG9iaiwgc2V0dGVyKTsKIAotICAgICAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gY2FsbEN1c3RvbVNldHRlcihnbG9iYWxPYmplY3QsIHNldHRlciwgaXNBY2Nlc3Nvciwg
b2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIHJlc3VsdCA9IGNhbGxDdXN0b21TZXR0ZXIob2JqLT5nbG9iYWxPYmplY3Qodm0p
LCBzZXR0ZXIsIGlzQWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUsIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgPT0gVHJpU3RhdGU6OlRydWU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkocmV2aXNpb24gMjc3
OTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5Niw3ICsyOTYsNyBAQCBpbmxpbmUgYm9vbCBwdXRFbnRyeShKU0dsb2JhbE9i
amVjdCogZ2xvCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUo
YmFzZSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOwogCi0gICAgICAgIGF1dG8gcmVzdWx0ID0g
Y2FsbEN1c3RvbVNldHRlcihnbG9iYWxPYmplY3QsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpLCBp
c0FjY2Vzc29yLCBiYXNlLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBjYWxsQ3VzdG9tU2V0dGVyKGJhc2UtPmdsb2JhbE9iamVj
dCh2bSksIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpLCBpc0FjY2Vzc29yLCBiYXNlLCBzbG90LnRo
aXNWYWx1ZSgpLCB2YWx1ZSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNw
cAkocmV2aXNpb24gMjc3OTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDEyIEBAIEpTVmFsdWUg
UHJvcGVydHlTbG90OjpmdW5jdGlvbkdldHRlcihKU0cKICAgICByZXR1cm4gbV9kYXRhLmdldHRl
ci5nZXR0ZXJTZXR0ZXItPmNhbGxHZXR0ZXIoZ2xvYmFsT2JqZWN0LCBtX3RoaXNWYWx1ZSk7CiB9
CiAKLUpTVmFsdWUgUHJvcGVydHlTbG90OjpjdXN0b21HZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKK0pTVmFsdWUgUHJv
cGVydHlTbG90OjpjdXN0b21HZXR0ZXIoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KSBjb25zdAogeworICAgIEFTU0VSVChtX3Nsb3RCYXNlKTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9zbG90QmFzZS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IG1fYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciA/IG1fdGhpc1ZhbHVlIDogSlNWYWx1ZShzbG90QmFzZSgpKTsKICAgICBpZiAoYXV0byBk
b21BdHRyaWJ1dGUgPSB0aGlzLT5kb21BdHRyaWJ1dGUoKSkgewotICAgICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKHZtLCBk
b21BdHRyaWJ1dGUtPmNsYXNzSW5mbykpIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgICAgIHJldHVybiB0aHJvd0RPTUF0dHJpYnV0
ZUdldHRlclR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBkb21BdHRyaWJ1dGUtPmNsYXNz
SW5mbywgcHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAyNzc5NDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDcgKzM2
Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVl
IGZ1bmN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYWx1ZSBjdXN0b21HZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUp
IGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY3VzdG9tR2V0dGVyKFZNJiwg
UHJvcGVydHlOYW1lKSBjb25zdDsKIAogICAgIHVuaW9uIHsKICAgICAgICAgRW5jb2RlZEpTVmFs
dWUgdmFsdWU7CkBAIC00MDQsNyArNDA0LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIFByb3Bl
cnR5U2xvdDo6Z2V0VgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS52YWx1
ZSk7CiAgICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVHZXR0ZXIpCiAgICAgICAgIHJldHVy
biBmdW5jdGlvbkdldHRlcihnbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBjdXN0b21HZXR0ZXIo
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBjdXN0b21HZXR0ZXIoZ2V0
Vk0oZ2xvYmFsT2JqZWN0KSwgcHJvcGVydHlOYW1lKTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1Zh
bHVlIFByb3BlcnR5U2xvdDo6Z2V0VmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
dWludDY0X3QgcHJvcGVydHlOYW1lKSBjb25zdApAQCAtNDE0LDcgKzQxNCw3IEBAIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmdldFYKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmRlY29kZShtX2RhdGEudmFsdWUpOwogICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlR2V0
dGVyKQogICAgICAgICByZXR1cm4gZnVuY3Rpb25HZXR0ZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBy
ZXR1cm4gY3VzdG9tR2V0dGVyKGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJv
cGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGN1c3RvbUdldHRlcihnZXRWTShnbG9iYWxPYmplY3Qp
LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3Nzk0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24pOworc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoc3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbik7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyk7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKTsKIApAQCAtODcs
MTIgKzg3LDEyIEBAIGlubGluZSBTeW1ib2wqIHRyeUV4dHJhY3RTeW1ib2woVk0mIHZtLCAKICAg
ICByZXR1cm4gYXNTeW1ib2woanNDYXN0PFN5bWJvbE9iamVjdCo+KHRoaXNPYmplY3QpLT5pbnRl
cm5hbFZhbHVlKCkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9H
ZXR0ZXJEZXNjcmlwdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihzeW1ib2xQcm90b0dldHRl
ckRlc2NyaXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghc3ltYm9sKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTeW1ib2xEZXNjcmlwdGlvblR5
cGVFcnJvcik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkocmV2aXNpb24gMjc3OTQwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTU4
LDcgKzE1NTgsOSBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HCiBz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXRBY2Nlc3Nvckdsb2JhbE9i
amVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXRWYWx1ZUds
b2JhbE9iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRB
Y2Nlc3Nvcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRBY2Nl
c3Nvckdsb2JhbE9iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0
b21TZXRWYWx1ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRW
YWx1ZUdsb2JhbE9iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0
b21GdW5jdGlvblNldHRlcik7CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXRB
Y2Nlc3NvciwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQpAQCAtMTYwMCw2ICsxNjAyLDIyIEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihjdXN0b21TZXRBY2Nlc3MKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKGN1c3RvbVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09i
amVjdCh2YWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBvYmpl
Y3QtPnB1dChvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InJlc3VsdCIpLCBnbG9iYWxPYmplY3QsIHNsb3QpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHNsb3RWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7CkBAIC0xNjE4LDYgKzE2MzYsMjQgQEAgSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKGN1c3RvbVNldFZhbHVlLAogICAgIHJldHVybiB0cnVlOwogfQogCitKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoY3VzdG9tU2V0VmFsdWVHbG9iYWxPYmplY3QsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBzbG90VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFz
c2VydFNjb3BlOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIFJFTEVB
U0VfQVNTRVJUKEpTVmFsdWU6OmRlY29kZShzbG90VmFsdWUpLmluaGVyaXRzPEpTVGVzdEN1c3Rv
bUdldHRlclNldHRlcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSk7CisKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgaWYgKCF2YWx1ZS5pc09iamVj
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QodmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgb2Jq
ZWN0LT5wdXQob2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJyZXN1bHQiKSwgZ2xvYmFsT2JqZWN0LCBzbG90KTsKKworICAgIHJldHVybiB0cnVlOworfQor
CiBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tRnVuY3Rpb25TZXR0ZXIsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNz
ZXJ0U2NvcGU7CkBAIC0xNjQ1LDkgKzE2ODEsMTMgQEAgdm9pZCBKU1Rlc3RDdXN0b21HZXR0ZXJT
ZXR0ZXI6OmZpbmlzaENyZQogICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3IiKSwKICAgICAgICAgQ3VzdG9tR2V0
dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yLCBjdXN0b21TZXRBY2Nlc3Nv
ciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IpKTsKICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0IiksCi0gICAgICAgIEN1c3RvbUdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRWYWx1ZUdsb2JhbE9iamVjdCwgbnVsbHB0ciks
IDApOworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0VmFs
dWVHbG9iYWxPYmplY3QsIGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0KSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSkpOwogICAgIHB1dERpcmVj
dEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNj
ZXNzb3JHbG9iYWxPYmplY3QiKSwKLSAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGN1c3RvbUdldEFjY2Vzc29yR2xvYmFsT2JqZWN0LCBudWxscHRyKSwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKKyAg
ICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yR2xv
YmFsT2JqZWN0LCBjdXN0b21TZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsKKyAgICBwdXREaXJl
Y3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbVZh
bHVlTm9TZXR0ZXIiKSwKKyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1
c3RvbUdldFZhbHVlLCBudWxscHRyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21WYWx1ZSkpOworICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3JSZWFkT25seSIpLAorICAg
ICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3IsIG51
bGxwdHIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOwogCiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21GdW5jdGlvbiIpLAogICAgICAgICBDdXN0b21H
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3IsIGN1c3RvbUZ1bmN0aW9u
U2V0dGVyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlJbnN0YW5jZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3
Nzk0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVk
ZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhw
b3J0cyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG9HZXR0ZXJFeHBvcnRzKTsKIH0KIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUubHV0LmgiCkBAIC00Niw3ICs0Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJB
c3NlbWJseUluc3RhbmNlUHJvdG8KIAogLyogU291cmNlIGZvciBXZWJBc3NlbWJseUluc3RhbmNl
UHJvdG90eXBlLmx1dC5oCiAgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlJbnN0YW5j
ZQotIGV4cG9ydHMgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMgQWNjZXNzb3Ig
MAorIGV4cG9ydHMgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvR2V0dGVyRXhwb3J0cyBBY2Nlc3Nv
cgogIEBlbmQKICAqLwogCkBAIC02MiwxMiArNjIsMTIgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUg
SlNXZWJBc3NlbWJseUluc3RhbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhwb3J0cywgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9HZXR0ZXJFeHBvcnRzLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBnZXRJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsgCisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0
YW5jZSA9IGdldEluc3RhbmNlKGdsb2JhbE9iamVjdCwgdm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZS0+
bW9kdWxlUmVjb3JkKCktPmV4cG9ydHNPYmplY3QoKSkpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjc3OTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93KTsKLXN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9HZXR0
ZXJCdWZmZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlN
ZW1vcnlQcm90b0Z1bmNUeXBlKTsKIH0KIApAQCAtNTMsNyArNTMsNyBAQCBjb25zdCBDbGFzc0lu
Zm8gV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5CiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseU1lbW9y
eQogIGdyb3cgICB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3cgICBGdW5jdGlvbiAxCi0g
YnVmZmVyIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyIEFjY2Vzc29yIDAKKyBidWZm
ZXIgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0dldHRlckJ1ZmZlciBBY2Nlc3NvcgogIHR5cGUgICB3
ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY1R5cGUgICBGdW5jdGlvbiAwCiBAZW5kCiAqLwpAQCAt
ODgsMTIgKzg4LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW8K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdC5wYWdlQ291bnQoKSkp
OwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1
bmNCdWZmZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlNZW1vcnlQcm90b0dl
dHRlckJ1ZmZlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoZ2xvYmFsT2JqZWN0
LCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7IAorICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkq
IG1lbW9yeSA9IGdldE1lbW9yeShnbG9iYWxPYmplY3QsIHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7IAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG1lbW9yeS0+
YnVmZmVyKGdsb2JhbE9iamVjdCkpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyNzc5NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVRhYmxlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAog
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3Ro
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHdlYkFzc2VtYmx5VGFibGVQcm90
b0dldHRlckxlbmd0aCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3Nl
bWJseVRhYmxlUHJvdG9GdW5jR3Jvdyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tih3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQpOwpAQCAtNTIsNyArNTIsNyBA
QCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwCiAKIC8qIFNvdXJjZSBm
b3IgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5sdXQuaAogIEBiZWdpbiBwcm90b3R5cGVUYWJs
ZVdlYkFzc2VtYmx5VGFibGUKLSBsZW5ndGggd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0
aCBBY2Nlc3NvciAwCisgbGVuZ3RoIHdlYkFzc2VtYmx5VGFibGVQcm90b0dldHRlckxlbmd0aCBB
Y2Nlc3NvcgogIGdyb3cgICB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdyAgIEZ1bmN0aW9u
IDEKICBnZXQgICAgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldCAgICBGdW5jdGlvbiAxCiAg
c2V0ICAgIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQgICAgRnVuY3Rpb24gMgpAQCAtNzIs
MTIgKzcyLDEyIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlUYWJsZSoKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1i
bHlUYWJsZVByb3RvRnVuY0xlbmd0aCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJs
eVRhYmxlUHJvdG9HZXR0ZXJMZW5ndGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGds
b2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTV2ViQXNzZW1i
bHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShnbG9iYWxPYmplY3QsIHZtLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRhYmxl
LT5sZW5ndGgoKSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTQwKQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIw
MjEtMDUtMjMgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAg
ICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRoIHRoZWlyIGhvbGRl
cidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgY3Jvc3MtcmVhbG0gV2ViSURMIGdldHRlcnMgLyBz
ZXR0ZXJzIHRvIHVzZSBjb3JyZWN0ICh0aGVpcikgcmVhbG0KKyAgICAgICAgZm9yIGltcGxpY2l0
IHx0aGlzfCB2YWx1ZSBhbmQgVHlwZUVycm9yIFsxXVsyXSwgYWxpZ25pbmcgYXR0cmlidXRlcyB3
aXRoIG9wZXJhdGlvbnMKKyAgICAgICAgYW5kIFdlYktpdCB3aXRoIG90aGVyIGltcGxlbWVudGF0
aW9ucy4KKworICAgICAgICBBbHNvLCBlbmFibGVzIGZ1dHVyZSByZW1vdmFsIG9mIE5hdGl2ZVRv
SlNWYWx1ZURPTUNvbnZlcnROZWVkc0dsb2JhbE9iamVjdC4KKworICAgICAgICBbMV0gaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIgKHN0ZXAgMS4x
LjIuMSkKKyAgICAgICAgWzJdIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1h
dHRyaWJ1dGUtc2V0dGVyIChzdGVwIDQuMSkKKworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmpl
Y3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sCisgICAgICAgICAgICAgICBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
aW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorCiAyMDIxLTA1LTIzICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAo
Q0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAy
Nzc5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkod29ya2luZyBjb3B5KQpAQCAtNzA4NSw2ICs3MDg1LDcgQEAgc3ViIE5hdGl2ZVRvSlNW
YWx1ZURPTUNvbnZlcnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDA7CiB9CiAKKyMgRklYTUU6IElz
IGV4dHJhIGdsb2JhbCBvYmplY3QgbmVjZXNzYXJ5IGFmdGVyIGh0dHBzOi8vd2Via2l0Lm9yZy9i
L2lkPTIyNTk5Nz8gSXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGxleGljYWxHbG9iYWxPYmplY3Qu
CiBzdWIgTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVydE5lZWRzR2xvYmFsT2JqZWN0CiB7CiAgICAg
bXkgKCR0eXBlKSA9IEBfOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTQwKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDUtMjMg
IEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0Nd
IENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRoIHRoZWlyIGhvbGRlcidzIGdsb2Jh
bCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZXNlIHRlc3RzIHVzZWQgdG8gcGFzcyBhcyBpcywgcHJvYmFibHksIGR1ZSB0byBjb21iaW5h
dGlvbiBvZiBvbGQgKGluY29ycmVjdCkgYmVoYXZpb3IgYW5kCisgICAgICAgIHNvbWUgaW1wbGVt
ZW50YXRpb24gZGV0YWlscyBvZiBydW4td2Via2l0LXRlc3RzLiBUaGV5IGZhaWwgb24gTWluaUJy
b3dzZXIgLyBDaHJvbWUgLyBGaXJlZm94CisgICAgICAgIHVubGVzcyBtb2RpZmllZCBub3QgdXNl
IGRhdGE6Ly8gcHJvdG9jb2wsIHdoaWNoIGlzIG5vdCBzeXN0ZW0gdW5kZXIgdGVzdC4KKworICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZy
YW1lLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2Vz
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMv
ZHVtbXktZnJhbWUtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MT2JqZWN0
RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1j
b250ZXh0LTIuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXIt
ZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbDoKKwogMjAyMS0wNS0y
MiAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtUb29sc11bcnVuLXdlYmtpdC10ZXN0c10gUmVtb3ZlIG1vcmUgbGVmdG92ZXIgdGVzdHMgd2Vi
c2VydmVyIFBIUCByZW1haW5zCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0
RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDI3Nzk0MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmpl
Y3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTUsMTAgKzUsMTAgQEAgUEFTUyB3aW5kb3cuZnJhbWVzWzBdLmZyYW1lRWxlbWVudC5jb250ZQog
UEFTUyB3aW5kb3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5uYW1lIGlzICJvYmoiCiBQQVNTIHdp
bmRvdy5mcmFtZXNbMV0uZnJhbWVFbGVtZW50LmNvbnRlbnRXaW5kb3cgaXMgd2luZG93LmZyYW1l
c1sxXS5mcmFtZUVsZW1lbnQuY29udGVudERvY3VtZW50LmRlZmF1bHRWaWV3CiBQQVNTIHdpbmRv
dy5mcmFtZXNbMV0uZnJhbWVFbGVtZW50LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQgaXMgd2luZG93
LmZyYW1lc1sxXS5mcmFtZUVsZW1lbnQuY29udGVudERvY3VtZW50Ci1Mb2FkaW5nICdkYXRhOnRl
eHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRzIG9mIGlmcmFtZScgaW4gaWZyYW1lLi4uCi1Mb2FkaW5n
ICdkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRzIG9mIG9iamVjdCcgaW4gb2JqZWN0Li4u
Ci1QQVNTIHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24udG9TdHJpbmcoKSBpcyAiZGF0YTp0ZXh0
L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJhbWUiCi1QQVNTIHdpbmRvdy5mcmFtZXNbMV0u
bG9jYXRpb24udG9TdHJpbmcoKSBpcyAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBv
ZiBvYmplY3QiCitMb2FkaW5nICdyZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sJyBpbiBpZnJh
bWUuLi4KK0xvYWRpbmcgJ3Jlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwnIGluIG9iamVjdC4u
LgorUEFTUyB3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLmhyZWYuZW5kc1dpdGgoInJlc291cmNl
cy9kdW1teS1mcmFtZS0yLmh0bWwiKSBpcyB0cnVlCitQQVNTIHdpbmRvdy5mcmFtZXNbMV0ubG9j
YXRpb24uaHJlZi5lbmRzV2l0aCgicmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbCIpIGlzIHRy
dWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1l
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1l
bnQvb2JqZWN0LWFzLWZyYW1lLmh0bWwJKHJldmlzaW9uIDI3Nzk0MCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC02LDggKzYsOCBAQAogCiBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotdmFyIHVw
ZGF0ZWRGcmFtZVVSTCA9ICJkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRzIG9mIGlmcmFt
ZSI7Ci12YXIgdXBkYXRlZE9iamVjdFVSTCA9ICJkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRl
bnRzIG9mIG9iamVjdCI7Cit2YXIgdXBkYXRlZEZyYW1lVVJMID0gInJlc291cmNlcy9kdW1teS1m
cmFtZS0yLmh0bWwiOwordmFyIHVwZGF0ZWRPYmplY3RVUkwgPSAicmVzb3VyY2VzL2R1bW15LWZy
YW1lLTEuaHRtbCI7CiAKIGZ1bmN0aW9uIHJ1blRlc3RzKCkKIHsKQEAgLTM2LDggKzM2LDggQEAg
ZnVuY3Rpb24gaGFuZGxlTG9hZCgpCiAgICAgaWYgKG51bUxvYWRzIDwgMikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc2hvdWxkQmUoIndpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24udG9TdHJpbmco
KSIsICciJyArIHVwZGF0ZWRGcmFtZVVSTCArICciJyk7Ci0gICAgc2hvdWxkQmUoIndpbmRvdy5m
cmFtZXNbMV0ubG9jYXRpb24udG9TdHJpbmcoKSIsICciJyArIHVwZGF0ZWRPYmplY3RVUkwgKyAn
IicpOworICAgIHNob3VsZEJlVHJ1ZShgd2luZG93LmZyYW1lc1swXS5sb2NhdGlvbi5ocmVmLmVu
ZHNXaXRoKCIke3VwZGF0ZWRGcmFtZVVSTH0iKWApOworICAgIHNob3VsZEJlVHJ1ZShgd2luZG93
LmZyYW1lc1sxXS5sb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCIke3VwZGF0ZWRPYmplY3RVUkx9Iilg
KTsKIAogICAgIGZpbmlzaEpTVGVzdCgpOwogfQpAQCAtNDYsOCArNDYsOCBAQCBmdW5jdGlvbiBo
YW5kbGVMb2FkKCkKIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+CiAKLTxpZnJh
bWUgbmFtZT0iZnJhbWUiIHNyYz0iZGF0YTp0ZXh0L2h0bWwsT2xkIGNvbnRlbnRzIG9mIGlmcmFt
ZSI+PC9pZnJhbWU+Ci08b2JqZWN0IG5hbWU9Im9iaiIgdHlwZT0idGV4dC9odG1sIiBkYXRhPSJk
YXRhOnRleHQvaHRtbCxPbGQgY29udGVudHMgb2Ygb2JqZWN0Ij48L29iamVjdD4KKzxpZnJhbWUg
bmFtZT0iZnJhbWUiIHNyYz0icmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbCI+PC9pZnJhbWU+
Cis8b2JqZWN0IG5hbWU9Im9iaiIgdHlwZT0idGV4dC9odG1sIiBkYXRhPSJyZXNvdXJjZXMvZHVt
bXktZnJhbWUtMi5odG1sIj48L29iamVjdD4KIAogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1l
LTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxl
bWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0x
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACis8IURPQ1RZUEUgaHRtbD4KK09s
ZCBjb250ZW50cyBvZiBpZnJhbWUgLyBOZXcgY29udGVudHMgb2Ygb2JqZWN0CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUt
Mi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVt
ZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTIu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIgQEAKKzwhRE9DVFlQRSBodG1sPgorT2xk
IGNvbnRlbnRzIG9mIG9iamVjdCAvIE5ldyBjb250ZW50cyBvZiBpZnJhbWUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxl
c3MtZG9jLWNvbnRleHQtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQt
Mi5odG1sCShyZXZpc2lvbiAyNzc5NDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRy
aWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxodG1sPgogPGJvZHkgb25sb2FkPSJ0ZXN0
KCkiPgotPGlmcmFtZSBzcmM9J2RhdGE6dGV4dC9odG1sLDxhIGlkPSJhIiBocmVmPSIlMjMiIG9u
Y2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZh
cG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+
PC9pZnJhbWU+Cis8aWZyYW1lIHNyY2RvYz0nPGEgaWQ9ImEiIGhyZWY9IiUyMyIgb25jbGljaz0i
ZG9jdW1lbnQud3JpdGUod2luZG93ICE9IHRvcCA/ICZhcG9zOzxwPkZBSUw8L3A+JmFwb3M7IDog
JmFwb3M7PHA+UEFTUzwvcD4mYXBvczspOyByZXR1cm4gZmFsc2UiPmxpbms8L2E+Jz48L2lmcmFt
ZT4KIDxzY3JpcHQ+CiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0
ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0
ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCShyZXZpc2lvbiAyNzc5NDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZy
b20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIDxodG1sPgogPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgotPGlmcmFtZSBzcmM9J2RhdGE6
dGV4dC9odG1sLDxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdp
bmRvdyAhPSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+
JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+Cis8aWZyYW1lIHNyY2Rv
Yz0nPGEgaWQ9ImEiIGhyZWY9IiUyMyIgb25jbGljaz0iZG9jdW1lbnQud3JpdGUod2luZG93ICE9
IHRvcCA/ICZhcG9zOzxwPkZBSUw8L3A+JmFwb3M7IDogJmFwb3M7PHA+UEFTUzwvcD4mYXBvczsp
OyByZXR1cm4gZmFsc2UiPmxpbms8L2E+Jz48L2lmcmFtZT4KIDxzY3JpcHQ+CiBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKSW5kZXg6IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTQwKQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisy
MDIxLTA1LTIzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAg
ICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1ZXMgd2l0aCB0aGVpciBob2xk
ZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5n
L2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlw
dC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3Jp
cHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmlu
ZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9j
cmVhdGUtcmVhbG0uanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJ
REwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1cHBvcnQvZHVtbXktaWZyYW1lLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFt
ZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbDoKKwogMjAyMS0wNS0yMSAgUm9iIEJ1aXMgIDxyYnVp
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIGdyaWQgdHJhY2sgc2l6ZSBzaG91bGQgcmVqZWN0IHVu
aXRsZXNzIGxlbmd0aApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQt
dGhpcy12YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1i
aW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1w
bGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw4IEBACisKK0ZBSUwgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIGdldHRl
ciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCBhc3NlcnRfdGhyb3dz
X2pzOiBmdW5jdGlvbiAiKCkgPT4geyBPYmplY3QuY3JlYXRlKG90aGVyKS53aW5kb3c7IH0iIGRp
ZCBub3QgdGhyb3cKK0ZBSUwgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNldHRlciB0aHJv
d3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCBhc3NlcnRfdGhyb3dzX2pzOiBm
dW5jdGlvbiAiKCkgPT4geyBPYmplY3QuY3JlYXRlKG90aGVyKS5uYW1lID0gImR1bW15IjsgfSIg
ZGlkIG5vdCB0aHJvdworRkFJTCBDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9u
IHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IGFzc2VydF90aHJvd3Nf
anM6IGZ1bmN0aW9uICIoKSA9PiB7IE9iamVjdC5jcmVhdGUob3RoZXIpLmZvY3VzKCk7IH0iIGRp
ZCBub3QgdGhyb3cKK0ZBSUwgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIGdldHRlciBjYWxs
ZWQgb24gbnVsbCAvIHVuZGVmaW5lZCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFRoZSBXaW5kb3cubmFtZSBnZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV2luZG93IgorRkFJTCBDcm9zcy1yZWFsbSBn
bG9iYWwgb2JqZWN0J3Mgc2V0dGVyIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjog
VGhlIFdpbmRvdy5sb2NhdGlvbiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgV2luZG93IgorUEFTUyBDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIGNh
bGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2Jq
ZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2Ny
aXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJlYWxt
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGlj
aXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkNy
b3NzLXJlYWxtIGdldHRlciAvIHNldHRlciAvIG9wZXJhdGlvbiBkb2Vzbid0IHVzZSBsZXhpY2Fs
IGdsb2JhbCBvYmplY3QgaWYgfHRoaXN8IHZhbHVlIGlzIGluY29tcGF0aWJsZSBvYmplY3QgLyBu
dWxsIC8gdW5kZWZpbmVkPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIiPgorPGxpbmsgcmVs
PSJoZWxwIiBocmVmPSJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmli
dXRlLXNldHRlciI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI2Rmbi1jcmVhdGUtb3BlcmF0aW9uLWZ1bmN0aW9uIj4KKworPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InN1
cHBvcnQvY3JlYXRlLXJlYWxtLmpzIj48L3NjcmlwdD4KKworPGJvZHk+Cis8c2NyaXB0PgorcHJv
bWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IG90aGVyID0gYXdhaXQgY3JlYXRlUmVh
bG0odCk7CisgICAgY29uc3Qgbm90V2luZG93ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJv
dG90eXBlT2Yob3RoZXIpKTsKKworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9y
LCAoKSA9PiB7IE9iamVjdC5jcmVhdGUob3RoZXIpLndpbmRvdzsgfSk7CisgICAgYXNzZXJ0X3Ro
cm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihvdGhlciwgImhpc3RvcnkiKS5nZXQuY2FsbChub3RXaW5kb3cpOyB9KTsKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LmdldChvdGhl
ciwgInNjcmVlbiIsIG5vdFdpbmRvdyk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIu
VHlwZUVycm9yLCAoKSA9PiB7IG5ldyBQcm94eShvdGhlciwge30pLm9uY2xpY2s7IH0pOworfSwg
IkNyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBnZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9u
IGluY29tcGF0aWJsZSBvYmplY3QiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAg
IGNvbnN0IG90aGVyID0gYXdhaXQgY3JlYXRlUmVhbG0odCk7CisgICAgY29uc3Qgbm90V2luZG93
ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yob3RoZXIpKTsKKworICAgIGFz
c2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5jcmVhdGUob3Ro
ZXIpLm5hbWUgPSAiZHVtbXkiOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVF
cnJvciwgKCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90aGVyLCAic3Rh
dHVzIikuc2V0LmNhbGwobm90V2luZG93LCBvdGhlci5zdGF0dXMpOyB9KTsKKyAgICAvLyBwYXJl
bnQgaXMgW1JlcGxhY2VhYmxlXQorICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9y
LCAoKSA9PiB7IFJlZmxlY3Quc2V0KG90aGVyLCAicGFyZW50Iiwgd2luZG93LCBub3RXaW5kb3cp
OyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcg
UHJveHkob3RoZXIsIHt9KS5sb2NhdGlvbiA9IGxvY2F0aW9uOyB9KTsKK30sICJDcm9zcy1yZWFs
bSBnbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGli
bGUgb2JqZWN0Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhl
ciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG5vdFdpbmRvdyA9IE9iamVjdC5j
cmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG90aGVyKSk7CisKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKG90aGVyKS5mb2N1cygp
OyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBvdGhl
ci5jbGVhckludGVydmFsLmNhbGwobm90V2luZG93LCAwKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5hcHBseShvdGhlci5ibHVyLCBu
b3RXaW5kb3csIFtdKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3Is
ICgpID0+IHsgbmV3IFByb3h5KG90aGVyLCB7fSkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9vIiwg
KCkgPT4ge30pOyB9KTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9u
IHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7CisKK3Byb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQp
OworICAgIGNvbnN0IG90aGVyTmFtZUdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iob3RoZXIsICJuYW1lIikuZ2V0OworCisgICAgYXNzZXJ0X2VxdWFscyhSZWZsZWN0Lmdl
dChvdGhlciwgInNlbGYiLCBudWxsKSwgb3RoZXIpOworICAgIGFzc2VydF9lcXVhbHMoUmVmbGVj
dC5nZXQob3RoZXIsICJkb2N1bWVudCIsIHVuZGVmaW5lZCksIG90aGVyLmRvY3VtZW50KTsKKyAg
ICBhc3NlcnRfZXF1YWxzKG90aGVyTmFtZUdldHRlci5jYWxsKG51bGwpLCAiZHVtbXkiKTsKKyAg
ICAvLyBBbiBlbmdpbmUgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgY29kZSBwYXRoIGZvciBjYWxsaW5n
IGEgZnVuY3Rpb24gZnJvbSBvdXRlciBzY29wZSB0byBpbXBsZW1lbnQgc3RlcCAxLmIuaWlpIG9m
IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZXZhbHVhdGVjYWxsCisgICAgYXNzZXJ0X2Vx
dWFscygoKCkgPT4gb3RoZXJOYW1lR2V0dGVyKCkpKCksICJkdW1teSIpOworfSwgIkNyb3NzLXJl
YWxtIGdsb2JhbCBvYmplY3QncyBnZXR0ZXIgY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQiKTsK
KworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IG90aGVyID0gYXdhaXQgY3Jl
YXRlUmVhbG0odCk7CisgICAgY29uc3Qgb3RoZXJMb2NhdGlvblNldHRlciA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXIsICJsb2NhdGlvbiIpLnNldDsKKyAgICBjb25zdCBv
dGhlckhyZWYgPSBvdGhlci5sb2NhdGlvbi5ocmVmOworICAgIGNvbnN0IG5ld1NlbGYgPSB7fTsK
KworICAgIC8vIHNlbGYgaXMgW1JlcGxhY2VhYmxlXQorICAgIGFzc2VydF90cnVlKFJlZmxlY3Qu
c2V0KG90aGVyLCAic2VsZiIsIG5ld1NlbGYsIG51bGwpKTsKKyAgICBhc3NlcnRfdHJ1ZShSZWZs
ZWN0LnNldChvdGhlciwgIm5hbWUiLCAibmV3TmFtZSIsIHVuZGVmaW5lZCkpOworCisgICAgb3Ro
ZXJMb2NhdGlvblNldHRlci5jYWxsKG51bGwsIGAke290aGVySHJlZn0jZm9vYCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhvdGhlci5sb2NhdGlvbi5oYXNoLCAiI2ZvbyIpOworICAgIC8vIEFuIGVuZ2lu
ZSBtaWdodCBoYXZlIGRpZmZlcmVudCBjb2RlIHBhdGggZm9yIGNhbGxpbmcgYSBmdW5jdGlvbiBm
cm9tIG91dGVyIHNjb3BlIHRvIGltcGxlbWVudCBzdGVwIDEuYi5paWkgb2YgaHR0cHM6Ly90YzM5
LmVzL2VjbWEyNjIvI3NlYy1ldmFsdWF0ZWNhbGwKKyAgICAoKCkgPT4geyBvdGhlckxvY2F0aW9u
U2V0dGVyKGAke290aGVySHJlZn0jYmFyYCk7IH0pKCk7CisgICAgYXNzZXJ0X2VxdWFscyhvdGhl
ci5sb2NhdGlvbi5oYXNoLCAiI2JhciIpOworCisgICAgLy8gQ2hlY2sgdGhlc2UgYWZ0ZXIgY2Fs
bGluZyAibG9jYXRpb24iIHNldHRlciBtYWtlIHN1cmUgbm8gbmF2aWdhdGlvbiBoYXMgb2NjdXJy
ZWQKKyAgICBhc3NlcnRfZXF1YWxzKG90aGVyLnNlbGYsIG5ld1NlbGYpOworICAgIGFzc2VydF9l
cXVhbHMob3RoZXIubmFtZSwgIm5ld05hbWUiKTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwgb2Jq
ZWN0J3Mgc2V0dGVyIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIik7CisKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOwor
ICAgIGNvbnN0IG90aGVyRm9jdXMgPSBvdGhlci5mb2N1czsKKyAgICBjb25zdCBvdGhlckRpc3Bh
dGNoRXZlbnQgPSBvdGhlci5kaXNwYXRjaEV2ZW50OworICAgIAorICAgIGFzc2VydF9lcXVhbHMo
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgZG9jdW1lbnQuYm9keSk7CisgICAgLy8gQW4gZW5naW5l
IG1pZ2h0IGhhdmUgZGlmZmVyZW50IGNvZGUgcGF0aCBmb3IgY2FsbGluZyBhIGZ1bmN0aW9uIGZy
b20gb3V0ZXIgc2NvcGUgdG8gaW1wbGVtZW50IHN0ZXAgMS5iLmlpaSBvZiBodHRwczovL3RjMzku
ZXMvZWNtYTI2Mi8jc2VjLWV2YWx1YXRlY2FsbAorICAgICgoKSA9PiB7IG90aGVyRm9jdXMoKTsg
fSkoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuY29udGVudFdp
bmRvdywgb3RoZXIpOworCisgICAgbGV0IGNhdWdodEV2ZW50OworICAgIG90aGVyLmFkZEV2ZW50
TGlzdGVuZXIuY2FsbChudWxsLCAiZm9vIiwgZXZlbnQgPT4geyBjYXVnaHRFdmVudCA9IGV2ZW50
OyB9KTsKKyAgICBjb25zdCBkaXNwYXRjaGVkRXZlbnQgPSBuZXcgb3RoZXIuRXZlbnQoImZvbyIp
OworICAgIGFzc2VydF90cnVlKG90aGVyRGlzcGF0Y2hFdmVudChkaXNwYXRjaGVkRXZlbnQpKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGNhdWdodEV2ZW50LCBkaXNwYXRjaGVkRXZlbnQpOworCisgICAg
Y29uc3QgbWVzc2FnZVByb21pc2UgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIG90aGVyLCAibWVzc2Fn
ZSIpLndhaXRfZm9yKCJtZXNzYWdlIik7CisgICAgb3RoZXIucG9zdE1lc3NhZ2UuY2FsbChudWxs
LCAiZm9vIik7CisgICAgYXNzZXJ0X2VxdWFscygoYXdhaXQgbWVzc2FnZVByb21pc2UpLmRhdGEs
ICJmb28iKTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIGNhbGxl
ZCBvbiBudWxsIC8gdW5kZWZpbmVkIik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9p
bnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFz
Y3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3Mt
cmVhbG0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorCitQQVNT
IENyb3NzLXJlYWxtIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9i
amVjdAorUEFTUyBDcm9zcy1yZWFsbSBzZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29t
cGF0aWJsZSBvYmplY3QKK1BBU1MgQ3Jvc3MtcmVhbG0gb3BlcmF0aW9uIHRocm93cyB3aGVuIGNh
bGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlk
LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
aW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlw
dC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPkNyb3NzLXJlYWxtIGdldHRlciAvIHNldHRlciAvIG9wZXJhdGlvbiBkb2Vz
bid0IHVzZSBsZXhpY2FsIGdsb2JhbCBvYmplY3QgdG8gdGhyb3cgYW4gZXJyb3IgZm9yIGluY29t
cGF0aWJsZSB8dGhpc3wgdmFsdWU8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRw
czovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLWdldHRlciI+Cis8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1h
dHRyaWJ1dGUtc2V0dGVyIj4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9oZXljYW0u
Z2l0aHViLmlvL3dlYmlkbC8jZGZuLWNyZWF0ZS1vcGVyYXRpb24tZnVuY3Rpb24iPgorCis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0ic3VwcG9ydC9jcmVhdGUtcmVhbG0uanMiPjwvc2NyaXB0PgorCis8Ym9keT4KKzxzY3JpcHQ+
Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2FpdCBjcmVh
dGVSZWFsbSh0KTsKKyAgICBjb25zdCBub3RFbGVtZW50ID0gT2JqZWN0LmNyZWF0ZShvdGhlci5I
VE1MRWxlbWVudC5wcm90b3R5cGUpOworCisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBl
RXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShvdGhlci5kb2N1bWVudCkuaGVhZDsgfSk7Cisg
ICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihvdGhlci5IVE1MRWxlbWVudC5wcm90b3R5cGUsICJ0aXRsZSIp
LmdldC5jYWxsKG5vdEVsZW1lbnQpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5
cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LmdldChvdGhlci5kb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKSwgImhpZGRlbiIsIG5vdEVsZW1lbnQpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkob3RoZXIudGV4dCwge30pLm5vZGVU
eXBlOyB9KTsKK30sICJDcm9zcy1yZWFsbSBnZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGlu
Y29tcGF0aWJsZSBvYmplY3QiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNv
bnN0IG90aGVyID0gYXdhaXQgY3JlYXRlUmVhbG0odCk7CisgICAgY29uc3Qgbm90RWxlbWVudCA9
IE9iamVjdC5jcmVhdGUob3RoZXIuSFRNTEVsZW1lbnQucHJvdG90eXBlKTsKKyAgICBjb25zdCBu
b3RUZXh0ID0gT2JqZWN0LmNyZWF0ZShvdGhlci5UZXh0LnByb3RvdHlwZSk7CisKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKG90aGVy
LmVsZW1lbnQpLmlubmVySFRNTCA9ICIiOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVy
LlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90aGVy
LkhUTUxFbGVtZW50LnByb3RvdHlwZSwgIm9uY2xpY2siKS5zZXQuY2FsbChub3RFbGVtZW50LCBu
dWxsKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsg
UmVmbGVjdC5zZXQobmV3IG90aGVyLlRleHQoImZvbyIpLCAiZGF0YSIsICJmb28iLCBub3RUZXh0
KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgbmV3
IFByb3h5KG90aGVyLmRvY3VtZW50LCB7fSkudGl0bGUgPSAiIjsgfSk7Cit9LCAiQ3Jvc3MtcmVh
bG0gc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7CisK
K3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNyZWF0
ZVJlYWxtKHQpOworICAgIGNvbnN0IG5vdERvY3VtZW50ID0gT2JqZWN0LmNyZWF0ZShvdGhlci5I
VE1MRG9jdW1lbnQucHJvdG90eXBlKTsKKyAgICBjb25zdCBub3RUZXh0ID0gT2JqZWN0LmNyZWF0
ZShvdGhlci5UZXh0LnByb3RvdHlwZSk7CisKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5
cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKG90aGVyLmVsZW1lbnQpLmNsaWNrKCk7IH0p
OworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IG90aGVyLmRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IuY2FsbChub3REb2N1bWVudCwgIioiKTsgfSk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5hcHBseShvdGhl
ci50ZXh0LnJlbW92ZSwgbm90VGV4dCwgW10pOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90
aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkob3RoZXIuZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiYSIpLCB7fSkuYWRkRXZlbnRMaXN0ZW5lcigiZm9vIiwgKCkgPT4ge30pOyB9KTsKK30s
ICJDcm9zcy1yZWFsbSBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJs
ZSBvYmplY3QiKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1cHBvcnQvY3JlYXRl
LXJlYWxtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9zdXBwb3J0L2NyZWF0ZS1yZWFs
bS5qcwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9jcmVhdGUtcmVhbG0u
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorInVzZSBzdHJpY3QiOworCitmdW5j
dGlvbiBjcmVhdGVSZWFsbSh0KSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgICAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUi
KTsKKyAgICAgICAgaWZyYW1lLm9ubG9hZCA9ICgpID0+IHsgcmVzb2x2ZShpZnJhbWUuY29udGVu
dFdpbmRvdyk7IH07CisgICAgICAgIGlmcmFtZS5uYW1lID0gImR1bW15IjsKKyAgICAgICAgaWZy
YW1lLnNyYyA9ICJzdXBwb3J0L2R1bW15LWlmcmFtZS5odG1sIjsKKyAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmQoaWZyYW1lKTsKKyAgICAgICAgdC5hZGRfY2xlYW51cCgoKSA9PiB7IGlmcmFt
ZS5yZW1vdmUoKTsgfSk7CisgICAgfSk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9k
dW1teS1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9kdW1t
eS1pZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9kdW1t
eS1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGJvZHk+Zm9vCis8YnV0dG9uIGlkPSJlbGVt
ZW50Ij48L2J1dHRvbj4KKzxzY3JpcHQ+CisgICAgd2luZG93LnRleHQgPSBkb2N1bWVudC5ib2R5
LmZpcnN0Q2hpbGQ7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJl
cXVlc3QtY3NzLWNyb3NzLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3OTQwKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gt
cmVxdWVzdC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw4ICsxLDYgQEAKIAogUEFTUyBzZXR1cCBnbG9iYWwgc3RhdGUKIFBBU1MgTUlNRSBj
aGVja2luZyBvZiBDU1MgcmVzb3VyY2VzIGZldGNoZWQgdmlhIHNlcnZpY2Ugd29ya2VyIHdoZW4g
Q29udGVudC1UeXBlIGlzIG5vdCBzZXQuCi1GQUlMIFNhbWUtb3JpZ2luIHBvbGljeSBmb3IgYWNj
ZXNzIHRvIENTUyByZXNvdXJjZXMgZmV0Y2hlZCB2aWEgc2VydmljZSB3b3JrZXIgYXNzZXJ0X3Ro
cm93c19kb206IGZ1bmN0aW9uICIoKSA9PiB7Ci0gICAgZi5jb250ZW50RG9jdW1lbnQuc3R5bGVT
aGVldHNbMF0uY3NzUnVsZXNbMF0uY3NzVGV4dDsKLSAgfSIgdGhyZXcgYW4gZXhjZXB0aW9uIGZy
b20gdGhlIHdyb25nIGdsb2JhbAorRkFJTCBTYW1lLW9yaWdpbiBwb2xpY3kgZm9yIGFjY2VzcyB0
byBDU1MgcmVzb3VyY2VzIGZldGNoZWQgdmlhIHNlcnZpY2Ugd29ya2VyIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlNlY3VyaXR5RXJyb3I6IE5v
dCBhbGxvd2VkIHRvIGFjY2VzcyBjcm9zcy1vcmlnaW4gc3R5bGVzaGVldCIKIFBBU1MgY2xlYW51
cCBnbG9iYWwgc3RhdGUKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1yZWFk
YWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVh
ZGFibGUuaHRtbAkocmV2aXNpb24gMjc3OTQwKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5z
Zm9ybS1yZWFkYWJsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDkgKzksMTAgQEAKICAgICAg
ICAgPGlmcmFtZSBzcmM9Ii4iIGlkPSJmcmFtZSI+PC9pZnJhbWU+CiAgICAgICAgIDxzY3JpcHQ+
CiBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBmcmFtZURPTUV4Y2Vw
dGlvbiA9IGZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9uOwogICAgIGNvbnN0IHRyYW5z
Zm9ybSA9IG5ldyBmcmFtZS5jb250ZW50V2luZG93LlNGcmFtZVRyYW5zZm9ybTsKICAgICBmcmFt
ZS5yZW1vdmUoKTsKLSAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAo
KSA9PiB0cmFuc2Zvcm0ucmVhZGFibGUpOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlk
U3RhdGVFcnJvciIsIGZyYW1lRE9NRXhjZXB0aW9uLCAoKSA9PiB0cmFuc2Zvcm0ucmVhZGFibGUp
OwogfSk7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430897</attachid>
            <date>2021-06-08 15:02:27 -0700</date>
            <delta_ts>2021-06-22 14:31:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225997-20210609010225.patch</filename>
            <type>text/plain</type>
            <size>67544</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzg2MjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTA4ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1
ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90
by1jaGFpbi1wdXQuanM6CisgICAgICAgICogc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2Jq
ZWN0LWluLWljLTIuanM6IEFkZGVkLgorCiAyMDIxLTA2LTA2ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIFJlc29sdmVkQ2xvc3VyZVZhciB0
byBnZXQgYnJhbmQgZnJvbSBzY29wZQpJbmRleDogSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1z
ZXQtcHJvdG8tY2hhaW4tcHV0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2N1c3Rv
bS1nZXQtc2V0LXByb3RvLWNoYWluLXB1dC5qcwkocmV2aXNpb24gMjc4NjA5KQorKysgSlNUZXN0
cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzCSh3b3JraW5nIGNvcHkp
CkBAIC05OSw4ICs5OSw4IEBAIGZ1bmN0aW9uIGdldEJhc2VzKCkgewogKCgpID0+IHsKICAgICBm
b3IgKGxldCBiYXNlIG9mIGdldEJhc2VzKCkpIHsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDA7ICsraSkKLSAgICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgYmFzZS5jdXN0b21B
Y2Nlc3Nvckdsb2JhbE9iamVjdCA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNz
aWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOwotICAgICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0
KE9iamVjdChiYXNlKSwgImN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0Iiwge30pKTsKKyAgICAg
ICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgYmFzZS5jdXN0b21BY2Nlc3NvclJlYWRPbmx5ID0g
e307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVy
dHkuIik7CisgICAgICAgIGFzc2VydCghUmVmbGVjdC5zZXQoT2JqZWN0KGJhc2UpLCAiY3VzdG9t
QWNjZXNzb3JSZWFkT25seSIsIHt9KSk7CiAgICAgfQogfSkoKTsKIApAQCAtMTA4LDIxICsxMDgs
MjEgQEAgZnVuY3Rpb24gZ2V0QmFzZXMoKSB7CiAoKCkgPT4gewogICAgIGZvciAobGV0IHByaW1p
dGl2ZSBvZiBwcmltaXRpdmVzKSB7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyAr
K2kpCi0gICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IHByaW1pdGl2ZS5jdXN0b21WYWx1
ZUdsb2JhbE9iamVjdCA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRv
IHJlYWRvbmx5IHByb3BlcnR5LiIpOworICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBw
cmltaXRpdmUuY3VzdG9tVmFsdWVOb1NldHRlciA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0
ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOwogICAgIH0KIAogICAgIGZvciAo
bGV0IG9iamVjdCBvZiBnZXRPYmplY3RzKCkpIHsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDA7ICsraSkKLSAgICAgICAgICAgIG9iamVjdC5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9
IHt9OwotICAgICAgICBhc3NlcnQob2JqZWN0Lmhhc093blByb3BlcnR5KCJjdXN0b21WYWx1ZUds
b2JhbE9iamVjdCIpKTsKLSAgICAgICAgYXNzZXJ0KFJlZmxlY3Quc2V0KG9iamVjdCwgImN1c3Rv
bVZhbHVlR2xvYmFsT2JqZWN0Iiwge30pKTsKKyAgICAgICAgICAgIG9iamVjdC5jdXN0b21WYWx1
ZU5vU2V0dGVyID0ge307CisgICAgICAgIGFzc2VydChvYmplY3QuaGFzT3duUHJvcGVydHkoImN1
c3RvbVZhbHVlTm9TZXR0ZXIiKSk7CisgICAgICAgIGFzc2VydChSZWZsZWN0LnNldChvYmplY3Qs
ICJjdXN0b21WYWx1ZU5vU2V0dGVyIiwge30pKTsKICAgICB9CiAKICAgICBmb3IgKGxldCBvYmpl
Y3Qgb2YgZ2V0T2JqZWN0cygpKSB7CiAgICAgICAgIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhv
YmplY3QpOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7Ci0gICAgICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG9iamVjdC5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9
IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3Bl
cnR5LiIpOwotICAgICAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChvYmplY3QsICJjdXN0b21W
YWx1ZUdsb2JhbE9iamVjdCIsIHt9KSk7CisgICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7
IG9iamVjdC5jdXN0b21WYWx1ZU5vU2V0dGVyID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRl
ZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7CisgICAgICAgICAgICBhc3NlcnQo
IVJlZmxlY3Quc2V0KG9iamVjdCwgImN1c3RvbVZhbHVlTm9TZXR0ZXIiLCB7fSkpOwogICAgICAg
ICB9CiAgICAgfQogfSkoKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xv
YmFsb2JqZWN0LWluLWljLTIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZ2V0dGVy
LXNldHRlci1nbG9iYWxvYmplY3QtaW4taWMtMi5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3Rz
L3N0cmVzcy9nZXR0ZXItc2V0dGVyLWdsb2JhbG9iamVjdC1pbi1pYy0yLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNzcgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7Cit9CisKK2NvbnN0IGNy
ZWF0ZUN1c3RvbSA9IGAKKyAgICB2YXIgY3VzdG9tID0gJHZtLmNyZWF0ZUN1c3RvbVRlc3RHZXR0
ZXJTZXR0ZXIoKTsKK2A7CisKKyhmdW5jdGlvbiBkaXJlY3RDdXN0b21BY2Nlc3NvckdldCgpIHsK
KyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90
aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7
IGkrKykgeworICAgICAgICBhc3NlcnQob3RoZXJDdXN0b20uY3VzdG9tQWNjZXNzb3JHbG9iYWxP
YmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gZGlyZWN0Q3VzdG9t
VmFsdWVHZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsK
KyAgICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVyLmN1c3RvbTsKKworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KG90aGVyQ3VzdG9tLmN1c3RvbVZh
bHVlR2xvYmFsT2JqZWN0ID09PSBvdGhlcik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIGRp
cmVjdEN1c3RvbUFjY2Vzc29yU2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNy
ZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b20gPSBvdGhlci5jdXN0b207CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGNvbnN0IHZhbHVlID0g
e307CisgICAgICAgIG90aGVyQ3VzdG9tLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID0gdmFs
dWU7CisgICAgICAgIGFzc2VydCh2YWx1ZS5yZXN1bHQgPT09IG90aGVyKTsKKyAgICB9Cit9KSgp
OworCisoZnVuY3Rpb24gZGlyZWN0Q3VzdG9tVmFsdWVTZXQoKSB7CisgICAgY29uc3Qgb3RoZXIg
PSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVy
LmN1c3RvbTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAg
Y29uc3QgdmFsdWUgPSB7fTsKKyAgICAgICAgb3RoZXJDdXN0b20uY3VzdG9tVmFsdWVHbG9iYWxP
YmplY3QgPSB2YWx1ZTsKKyAgICAgICAgYXNzZXJ0KHZhbHVlLnJlc3VsdCA9PT0gb3RoZXIpOwor
ICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBwcm90b3R5cGVDaGFpbkN1c3RvbUFjY2Vzc29yR2V0
KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7CisgICAgY29u
c3Qgb3RoZXJDdXN0b21IZWlyID0gT2JqZWN0LmNyZWF0ZShvdGhlci5jdXN0b20pOworCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBhc3NlcnQob3RoZXJDdXN0
b21IZWlyLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID09PSBvdGhlcik7CisgICAgfQorfSko
KTsKKworKGZ1bmN0aW9uIHByb3RvdHlwZUNoYWluQ3VzdG9tVmFsdWVHZXQoKSB7CisgICAgY29u
c3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3Rv
bUhlaXIgPSBPYmplY3QuY3JlYXRlKG90aGVyLmN1c3RvbSk7CisKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGFzc2VydChvdGhlckN1c3RvbUhlaXIuY3VzdG9t
VmFsdWVHbG9iYWxPYmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24g
cHJvdG90eXBlQ2hhaW5DdXN0b21BY2Nlc3NvclNldCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1
blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tSGVpciA9IE9iamVj
dC5jcmVhdGUob3RoZXIuY3VzdG9tKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBp
KyspIHsKKyAgICAgICAgY29uc3QgdmFsdWUgPSB7fTsKKyAgICAgICAgb3RoZXJDdXN0b21IZWly
LmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID0gdmFsdWU7CisgICAgICAgIGFzc2VydCh2YWx1
ZS5yZXN1bHQgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzg2MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTggQEAKKzIwMjEtMDYtMDggIEFsZXhleSBT
aHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIENhbGwgY3Vz
dG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRoIHRoZWlyIGhvbGRlcidzIGdsb2JhbCBvYmplY3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEp1c3QgbGlr
ZSBKUyBidWlsdC1pbnMsIGdldHRlciAvIHNldHRlciBmdW5jdGlvbnMgb2YgV2ViSURMIGF0dHJp
YnV0ZXMgYXJlIGNyZWF0ZWQgaW4gcmVhbG0KKyAgICAgICAgb2YgdGhlaXIgaG9sZGVyIGludGVy
ZmFjZSBbMV1bMl0sIHdoaWNoIGlzIHRoZWlyIF9jdXJyZW50XyByZWFsbSBmb3IgdGhyb3dpbmcg
YW4gZXJyb3IgWzNdLgorCisgICAgICAgIFdpdGggdGhpcyBwYXRjaCwgY3VzdG9tIHByb3BlcnRp
ZXMgZ2V0IGNvcnJlY3QgZ2xvYmFsIG9iamVjdCBpbnN0ZWFkIG9mIGxleGljYWwsIGluY2x1ZGlu
ZworICAgICAgICB3aGVuIGlubGluZSBjYWNoZWQsIGFsaWduaW5nIHRoZW0gd2l0aCBmdW5jdGlv
bnMgYW5kIHJlZ3VsYXIgYWNjZXNzb3JzLgorCisgICAgICAgIFRoZSBsYXR0ZXIgYWxsb3dlZCBK
UyBidWlsdC1pbnMgbGlrZSBTeW1ib2wjZGVzY3JpcHRpb24gdG8gc3dpdGNoIHRvIEN1c3RvbUFj
Y2Vzc29yLCB3aGljaAorICAgICAgICBpcyBzbGlnaHRseSBtb3JlIGVmZmljaWVudCB0byBjYWxs
IGZyb20gQysrLCBkb2Vzbid0IG5lZWQgcmVpZmljYXRpb24gb24gZmlyc3QgYWNjZXNzLCBhbmQK
KyAgICAgICAgaGFzIG5pY2VyIHNpZ25hdHVyZS4KKworICAgICAgICBBbHNvLCByZW5hbWVzIFdB
U00gYWNjZXNzb3JzIHRvIGRyb3AgImZ1bmMiIGFuZCByZW1vdmVzIHVudXNlZCBmdW5jdGlvbiBs
ZW5ndGggcGFyYW1ldGVyLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIgKHN0ZXAgMikKKyAgICAgICAgWzJdOiBodHRw
czovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLXNldHRlciAoc3RlcCA1
KQorICAgICAgICBbM106IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2VjbWFzY3Jp
cHQtdGhyb3cKKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGNyZWF0ZV9oYXNoX3Rh
YmxlOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJ
bmxpbmVTbG93KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlNDOjpw
dXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwOgorICAgICAgICAo
SlNDOjpQcm9wZXJ0eVNsb3Q6OmN1c3RvbUdldHRlciBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpnZXRWYWx1ZSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFy
Vk0uY3BwOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9q
cy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKwog
MjAyMS0wNi0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IFtKU0NdIFVzZSBSZXNvbHZlZENsb3N1cmVWYXIgdG8gZ2V0IGJyYW5kIGZyb20gc2NvcGUKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUJKHJldmlzaW9uIDI3ODYw
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQkod29ya2luZyBj
b3B5KQpAQCAtOTcsOCArOTcsMTAgQEAgd2hpbGUgKDxJTj4pIHsKICAgICAgICAgfSBlbHNpZiAo
JGF0dCA9fiBtL0FjY2Vzc29yLykgewogICAgICAgICAgICAgbXkgJGdldCA9ICR2YWw7CiAgICAg
ICAgICAgICBteSAkcHV0ID0gIm51bGxwdHIiOworICAgICAgICAgICAgJGF0dHJzWy0xXSA9fiBz
L0FjY2Vzc29yL0N1c3RvbUFjY2Vzc29yLzsKKyAgICAgICAgICAgICRhdHRyc1stMV0gLj0gInxS
ZWFkT25seSI7CiAgICAgICAgICAgICAkaGFzU2V0dGVyID0gInRydWUiOwotICAgICAgICAgICAg
cHVzaChAdmFsdWVzLCB7ICJ0eXBlIiA9PiAiUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIiwg
ImdldCIgPT4gJGdldCwgInB1dCIgPT4gJHB1dCB9KTsKKyAgICAgICAgICAgIHB1c2goQHZhbHVl
cywgeyAidHlwZSIgPT4gIlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eSIsICJnZXQiID0+ICRn
ZXQsICJwdXQiID0+ICRwdXQgfSk7CiAgICAgICAgIH0gZWxzaWYgKCRhdHQgPX4gbS9DZWxsUHJv
cGVydHkvKSB7CiAgICAgICAgICAgICBteSAkcHJvcGVydHkgPSAkdmFsOwogICAgICAgICAgICAg
cHVzaChAdmFsdWVzLCB7ICJ0eXBlIiA9PiAiUHJvcGVydHlBdHRyaWJ1dGU6OkNlbGxQcm9wZXJ0
eSIsICJwcm9wZXJ0eSIgPT4gJHByb3BlcnR5IH0pOwpAQCAtMzEwLDExICszMTIsNiBAQCBzdWIg
b3V0cHV0KCkgewogICAgICAgICAgICAgJGZpcnN0VmFsdWUgPSAkdmFsdWVzWyRpXXsiZnVuY3Rp
b24ifTsKICAgICAgICAgICAgICRzZWNvbmRWYWx1ZSA9ICR2YWx1ZXNbJGldeyJwYXJhbXMifTsK
ICAgICAgICAgICAgICRpbnRyaW5zaWMgPSAkdmFsdWVzWyRpXXsiaW50cmluc2ljIn07Ci0gICAg
ICAgIH0gZWxzaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIlByb3BlcnR5QXR0cmlidXRlOjpB
Y2Nlc3NvciIpIHsKLSAgICAgICAgICAgICRmaXJzdENhc3RTdHIgPSAic3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+IjsKLSAgICAgICAgICAgICRzZWNvbmRDYXN0U3RyID0gInN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPiI7Ci0gICAgICAgICAgICAkZmlyc3RWYWx1ZSA9ICR2YWx1
ZXNbJGldeyJnZXQifTsKLSAgICAgICAgICAgICRzZWNvbmRWYWx1ZSA9ICR2YWx1ZXNbJGldeyJw
dXQifTsKICAgICAgICAgfSBlbHNpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiUHJvcGVydHlB
dHRyaWJ1dGU6OlByb3BlcnR5IikgewogICAgICAgICAgICAgJGZpcnN0Q2FzdFN0ciA9ICJzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4iOwogICAgICAgICAgICAgJHNlY29u
ZENhc3RTdHIgPSAic3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+IjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJ
KHJldmlzaW9uIDI3ODYwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwNSw3ICsxNDA1LDYgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgIENDYWxsSGVscGVycyYgaml0ID0g
KnN0YXRlLmppdDsKICAgICBWTSYgdm0gPSBzdGF0ZS5tX3ZtOwogICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gaml0LmNvZGVCbG9jaygpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBzdGF0ZS5tX2dsb2JhbE9iamVjdDsKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IHN0YXRl
Lm1fZWNtYU1vZGU7CiAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKnN0YXRlLnN0
dWJJbmZvOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHN0YXRlLnZhbHVlUmVnczsKQEAg
LTE2MDMsNiArMTYwMiw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dl
bmUKICAgICAgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IGxvYWRlZFZhbHVlR1BSKTsKICAgICAg
ICAgICAgIEFTU0VSVChtX3R5cGUgIT0gU2V0dGVyIHx8IHZhbHVlUmVnc1BheWxvYWRHUFIgIT0g
bG9hZGVkVmFsdWVHUFIpOwogCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gc3RhdGUubV9nbG9iYWxPYmplY3Q7CisKICAgICAgICAgICAgIC8vIENyZWF0ZSBhIEpT
IGNhbGwgdXNpbmcgYSBKUyBjYWxsIGlubGluZSBjYWNoZS4gQXNzdW1lIHRoYXQ6CiAgICAgICAg
ICAgICAvLwogICAgICAgICAgICAgLy8gLSBTUCBpcyBhbGlnbmVkIGFuZCByZXByZXNlbnRzIHRo
ZSBleHRlbnQgb2YgdGhlIGNhbGxpbmcgY29tcGlsZXIncyBzdGFjayB1c2FnZS4KQEAgLTE3Mzcs
NiArMTczOCw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAg
ICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ3VzdG9tVmFsdWVHZXR0ZXIgfHwgbV90eXBlID09
IEN1c3RvbUFjY2Vzc29yR2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0b21WYWx1ZVNldHRlciB8fCBt
X3R5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwogICAgICAgICAgICAgQVNTRVJUKCFkb2Vz
UHJvcGVydHlTdG9yYWdlTG9hZHMpOyAvLyBPciB3ZSBuZWVkIGFuIGV4dHJhIHJlZ2lzdGVyLiBX
ZSByZWx5IG9uIHByb3BlcnR5T3duZXJHUFIgYmVpbmcgY29ycmVjdCBoZXJlLgogCisgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaGFzQWx0ZXJuYXRlQmFzZSgpID8g
YWx0ZXJuYXRlQmFzZSgpLT5nbG9iYWxPYmplY3Qodm0pIDogc3RydWN0dXJlKCktPmdsb2JhbE9i
amVjdCgpOworCiAgICAgICAgICAgICAvLyBOZWVkIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIEMgY2Fs
bCBzbyBhbnkgb2Ygb3VyIHN0YWNrIHNwaWxsYWdlIGlzbid0IG92ZXJ3cml0dGVuLiBJdCdzCiAg
ICAgICAgICAgICAvLyBoYXJkIHRvIHRyYWNrIGlmIHNvbWVvbmUgZGlkIHNwaWxsYWdlIG9yIG5v
dCwgc28gd2UganVzdCBhc3N1bWUgdGhhdCB3ZSBhbHdheXMgbmVlZAogICAgICAgICAgICAgLy8g
dG8gbWFrZSBzb21lIHNwYWNlIGhlcmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3
ODYwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxDb2xsYXRvclByb3Rv
dHlwZUdldHRlckNvbXBhcmUpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50
bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxDb2xsYXRvckZ1bmNDb21wYXJlKTsK
IApAQCAtMTA1LDE0ICsxMDUsMTQgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxDb2xs
YXRvckZ1bgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNv
bGxhdG9yLT5jb21wYXJlU3RyaW5ncyhnbG9iYWxPYmplY3QsIHhWaWV3V2l0aFN0cmluZy52aWV3
LCB5Vmlld1dpdGhTdHJpbmcudmlldykpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTAuMy4zIEludGwuQ29sbGF0b3IucHJvdG90
eXBlLmNvbXBhcmUgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhp
cyBDb2xsYXRvciBvYmplY3QuCi0gICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1p
Y0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIElu
dGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFjb2xsYXRvcikKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciJfcykpOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3ODYwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRl
ckZvcm1hdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1
bmNGb3JtYXRSYW5nZVRvUGFydHMpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMpOwpAQCAtMTEzLDE0
ICsxMTMsMTQgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGltZUZvcgogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0
KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMi4zLjMgSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IGR0
ZiBiZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KLSAgICBhdXRvKiBkdGYgPSBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGR0ZiA9IEludGxEYXRlVGltZUZvcm1hdDo6dW53
cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgLy8gMi4gUmV0
dXJuSWZBYnJ1cHQoZHRmKS4KICAgICBpZiAoVU5MSUtFTFkoIWR0ZikpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjc4NjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bExvY2FsZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2ICszNCwxNiBAQCBu
YW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2Nh
bGVQcm90b3R5cGVGdW5jTWF4aW1pemUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNaW5pbWl6ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKLXN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFt
ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBl
R2V0dGVyQ2FsZW5kYXIpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uKTsKLXN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUp
Owotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdl
dHRlck51bWVyaWMpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2Fs
ZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UpOwotc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCk7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyUmVnaW9uKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJCYXNlTmFtZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
UihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29s
bGF0aW9uKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJIb3VyQ3ljbGUpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
SW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMpOworc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
TGFuZ3VhZ2UpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlclNjcmlwdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uKTsKIAogfQogCkBAIC0xNDIsMTIgKzE0Miwx
MiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmJhc2VOYW1l
Ci1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VO
YW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNl
TmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byog
bG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2Fs
ZS5wcm90b3R5cGUuYmFzZU5hbWUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMTU2LDEyICsxNTYsMTIgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jYWxlbmRhcgotSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9
IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90
eXBlLmNhbGVuZGFyIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTE3MCwxMiArMTcwLDEyIEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FzZUZpcnN0Ci1KU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0LCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5
bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAg
YXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5j
YXNlRmlyc3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMTg0LDEyICsxODQsMTIgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb24KLUpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24sIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1p
Y0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRv
KiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNvbGxh
dGlvbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMg
YSBMb2NhbGUiX3MpOwogCkBAIC0xOTgsMTIgKzE5OCwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNz
ZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZQotSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2Fz
dDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxv
Y2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuaG91ckN5Y2xl
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExv
Y2FsZSJfcyk7CiAKQEAgLTIxMiwxMiArMjEyLDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1J
bnRsLkxvY2FsZS5wcm90b3R5cGUubnVtZXJpYwotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2Nh
bGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNE
eW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmljIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAK
QEAgLTIyNSwxMiArMjI1LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxl
UHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5w
cm90b3R5cGUubnVtYmVyaW5nU3lzdGVtCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
UihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byog
bG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5udW1iZXJp
bmdTeXN0ZW0gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMjM5LDEyICsyMzksMTIgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5sYW5ndWFnZQotSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nh
c3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBs
b2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1YWdl
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExv
Y2FsZSJfcyk7CiAKQEAgLTI1MywxMiArMjUzLDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1J
bnRsLkxvY2FsZS5wcm90b3R5cGUuc2NyaXB0Ci1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50
bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5h
bWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5zY3JpcHQgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAt
MjY3LDEyICsyNjcsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90
bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3Rv
dHlwZS5yZWdpb24KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBl
R2V0dGVyUmVnaW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJSZWdpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2Nh
bGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50
bC5Mb2NhbGUucHJvdG90eXBlLnJlZ2lvbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjc4NjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOworc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXQp
OwpAQCAtMTA4LDE0ICsxMDgsMTQgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxOdW1i
ZXJGb3JtYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQo
Z2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
UihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBuZiBiZSB0aGlz
IE51bWJlckZvcm1hdCBvYmplY3QuCi0gICAgYXV0byogbmYgPSBJbnRsTnVtYmVyRm9ybWF0Ojp1
bndyYXBGb3JPbGRGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBhdXRvKiBuZiA9IEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9u
cyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChVTkxJS0VMWSghbmYpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcykpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
d1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3ODYwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw5
ICs4Myw5IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWUKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NCk7
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvRnVuY1NldEJp
Z0ludDY0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9G
dW5jU2V0QmlnVWludDY0KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFW
aWV3UHJvdG9HZXR0ZXJCdWZmZXIpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQpOworc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlcik7CitzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9m
ZnNldCk7CiAKIH0KIApAQCAtMjIzLDI0ICsyMjMsMjQgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0
YShKU0dsb2JhbE9iamVjdCogZwogCiBJR05PUkVfQ0xBTkdfV0FSTklOR1NfQkVHSU4oIm1pc3Np
bmctcHJvdG90eXBlcyIpCiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3Rv
R2V0dGVyQnVmZmVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJC
dWZmZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTRGF0
YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CisgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRh
Vmlldyo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF2aWV3KQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0
YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9i
amVjdCIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dmlldy0+cG9zc2libHlTaGFyZWRKU0J1ZmZlcihnbG9iYWxPYmplY3QpKSk7CiB9CiAKLUpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmlldyogdmlldyA9IGpz
RHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUu
Ynl0ZUxlbmd0aCBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogICAg
IGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCkBAIC0yNDksMTIgKzI0OSwxMiBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0
YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNEYXRhVmlldyogdmll
dyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ5dGVPZmZzZXQgZXhwZWN0
cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKICAgICBpZiAodmlldy0+aXNEZXRh
Y2hlZCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAkocmV2aXNpb24gMjc4NjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjIsNyArODIyLDcgQEAgYm9vbCBKU09iamVj
dDo6cHV0SW5saW5lU2xvdyhKU0dsb2JhbE9iagogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzNDcKICAgICAgICAgICAgICAgICBz
bG90LnNldEN1c3RvbUFjY2Vzc29yKG9iaiwgY3VzdG9tU2V0dGVyKTsKICAgICAgICAgICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgY3VzdG9tU2V0dGVyKGdsb2JhbE9i
amVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3QudGhpc1ZhbHVlKCkpLCBKU1ZhbHVlOjplbmNvZGUo
dmFsdWUpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIGN1c3RvbVNldHRlcihvYmot
Pmdsb2JhbE9iamVjdCh2bSksIEpTVmFsdWU6OmVuY29kZShzbG90LnRoaXNWYWx1ZSgpKSwgSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAJKHJldmlzaW9uIDI3ODYwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDExICszMywxMiBAQCBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6ZnVuY3Rpb25HZXR0
ZXIoSlNHCiAgICAgcmV0dXJuIG1fZGF0YS5nZXR0ZXIuZ2V0dGVyU2V0dGVyLT5jYWxsR2V0dGVy
KGdsb2JhbE9iamVjdCwgbV90aGlzVmFsdWUpOwogfQogCi1KU1ZhbHVlIFByb3BlcnR5U2xvdDo6
Y3VzdG9tR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIGNvbnN0CitKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Y3VzdG9tR2V0dGVyKFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKKyAgICBBU1NFUlQobV9z
bG90QmFzZSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fc2xvdEJhc2Ut
Pmdsb2JhbE9iamVjdCh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBtX2F0dHJpYnV0ZXMg
JiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgPyBtX3RoaXNWYWx1ZSA6IEpTVmFs
dWUoc2xvdEJhc2UoKSk7CiAgICAgaWYgKGF1dG8gZG9tQXR0cmlidXRlID0gdGhpcy0+ZG9tQXR0
cmlidXRlKCkpIHsKLSAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAg
ICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyh2bSwgZG9tQXR0cmlidXRlLT5jbGFzc0luZm8pKSB7
CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgZG9tQXR0cmlidXRlLT5jbGFzc0luZm8sIHByb3BlcnR5TmFtZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNp
b24gMjc4NjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihKU0dsb2JhbE9i
amVjdCopIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY3VzdG9tR2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU1ZhbHVlIGN1c3RvbUdldHRlcihWTSYsIFByb3BlcnR5TmFtZSkgY29uc3Q7CiAKICAg
ICB1bmlvbiB7CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlIHZhbHVlOwpAQCAtNDA1LDcgKzQwNSw3
IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmdldFYKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmRlY29kZShtX2RhdGEudmFsdWUpOwogICAgIGlmIChtX3Byb3BlcnR5VHlw
ZSA9PSBUeXBlR2V0dGVyKQogICAgICAgICByZXR1cm4gZnVuY3Rpb25HZXR0ZXIoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICByZXR1cm4gY3VzdG9tR2V0dGVyKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTsKKyAgICByZXR1cm4gY3VzdG9tR2V0dGVyKGdldFZNKGdsb2JhbE9iamVjdCksIHByb3BlcnR5
TmFtZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmdldFZhbHVl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkgY29u
c3QKQEAgLTQxNSw3ICs0MTUsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90
OjpnZXRWCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLnZhbHVlKTsKICAg
ICBpZiAobV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUdldHRlcikKICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uR2V0dGVyKGdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIGN1c3RvbUdldHRlcihnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBj
dXN0b21HZXR0ZXIoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJv
cGVydHlOYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAy
Nzg2MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0dldHRlckRlc2Ny
aXB0aW9uKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHN5bWJvbFByb3RvR2V0
dGVyRGVzY3JpcHRpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oc3ltYm9s
UHJvdG9GdW5jVG9TdHJpbmcpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oc3lt
Ym9sUHJvdG9GdW5jVmFsdWVPZik7CiAKQEAgLTg3LDEyICs4NywxMiBAQCBpbmxpbmUgU3ltYm9s
KiB0cnlFeHRyYWN0U3ltYm9sKFZNJiB2bSwgCiAgICAgcmV0dXJuIGFzU3ltYm9sKGpzQ2FzdDxT
eW1ib2xPYmplY3QqPih0aGlzT2JqZWN0KS0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0KIAotSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24sIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoc3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRy
YWN0U3ltYm9sKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBTeW1ib2wqIHN5bWJv
bCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoIXN5bWJvbCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgU3ltYm9sRGVzY3JpcHRpb25UeXBlRXJyb3IpOwogICAgIHNjb3BlLnJlbGVh
c2UoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJ
KHJldmlzaW9uIDI3ODYwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5MSw3ICsxNTkxLDkgQEAgc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoY3VzdG9tRwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoY3VzdG9tR2V0QWNjZXNzb3JHbG9iYWxPYmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoY3VzdG9tR2V0VmFsdWVHbG9iYWxPYmplY3QpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0QWNjZXNzb3IpOworc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0QWNjZXNzb3JHbG9iYWxPYmplY3QpOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0VmFsdWUpOworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0VmFsdWVHbG9iYWxPYmplY3QpOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3VzdG9tRnVuY3Rpb25TZXR0ZXIpOwogCiBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoY3VzdG9tR2V0QWNjZXNzb3IsIChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTE2MzMsNiArMTYz
NSwyMiBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0QWNjZXNzCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRBY2Nlc3Nv
ckdsb2JhbE9iamVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOworICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgb2JqZWN0LT5wdXQob2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN1bHQiKSwgZ2xvYmFsT2JqZWN0LCBz
bG90KTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
Y3VzdG9tU2V0VmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBzbG90VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpAQCAtMTY1MSw2ICsx
NjY5LDI0IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRWYWx1ZSwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldFZhbHVl
R2xvYmFsT2JqZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgc2xvdFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5TmFtZSkp
Cit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBSRUxFQVNFX0FTU0VSVChKU1ZhbHVlOjpkZWNvZGUo
c2xvdFZhbHVlKS5pbmhlcml0czxKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI+KGdsb2JhbE9iamVj
dC0+dm0oKSkpOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIG9iamVjdC0+cHV0KG9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdWx0IiksIGdsb2JhbE9iamVjdCwg
c2xvdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KGN1c3RvbUZ1bmN0aW9uU2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpAQCAtMTY3OCw5ICsxNzE0
LDEzIEBAIHZvaWQgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyOjpmaW5pc2hDcmUKICAgICBwdXRE
aXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3Rv
bUFjY2Vzc29yIiksCiAgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0
b21HZXRBY2Nlc3NvciwgY3VzdG9tU2V0QWNjZXNzb3IpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSk7CiAgICAgcHV0RGlyZWN0Q3VzdG9t
QWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21WYWx1ZUdsb2Jh
bE9iamVjdCIpLAotICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9t
R2V0VmFsdWVHbG9iYWxPYmplY3QsIG51bGxwdHIpLCAwKTsKKyAgICAgICAgQ3VzdG9tR2V0dGVy
U2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldFZhbHVlR2xvYmFsT2JqZWN0LCBjdXN0b21TZXRW
YWx1ZUdsb2JhbE9iamVjdCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tVmFsdWUpKTsKICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0IiksCi0gICAg
ICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3Nvckdsb2Jh
bE9iamVjdCwgbnVsbHB0ciksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CisgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCwgY3VzdG9tU2V0QWNjZXNz
b3JHbG9iYWxPYmplY3QpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yKSk7CisgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21WYWx1ZU5vU2V0dGVyIiksCisgICAgICAgIEN1
c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRWYWx1ZSwgbnVsbHB0ciksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWUpKTsKKyAg
ICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImN1c3RvbUFjY2Vzc29yUmVhZE9ubHkiKSwKKyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpj
cmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yLCBudWxscHRyKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAogICAgIHB1
dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3Vz
dG9tRnVuY3Rpb24iKSwKICAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1
c3RvbUdldEFjY2Vzc29yLCBjdXN0b21GdW5jdGlvblNldHRlciksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzg2MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmgiCiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
d2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvR2V0dGVyRXhwb3J0cyk7CiB9
CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmx1dC5oIgpAQCAtNDYs
NyArNDYsNyBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvCiAKIC8q
IFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5sdXQuaAogIEBiZWdpbiBw
cm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5SW5zdGFuY2UKLSBleHBvcnRzIHdlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b0Z1bmNFeHBvcnRzIEFjY2Vzc29yIDAKKyBleHBvcnRzIHdlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b0dldHRlckV4cG9ydHMgQWNjZXNzb3IKICBAZW5kCiAgKi8KIApAQCAtNjIsMTIg
KzYyLDEyIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlJbnN0YW4KICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlJ
bnN0YW5jZVByb3RvRnVuY0V4cG9ydHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIod2ViQXNzZW1i
bHlJbnN0YW5jZVByb3RvR2V0dGVyRXhwb3J0cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0g
Z2V0SW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7IAor
ICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBnZXRJbnN0YW5jZShnbG9iYWxP
YmplY3QsIHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoaW5zdGFuY2UtPm1vZHVsZVJlY29yZCgpLT5leHBvcnRzT2Jq
ZWN0KCkpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3ODYw
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5
UHJvdG9GdW5jR3Jvdyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3Nl
bWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUih3ZWJBc3NlbWJseU1lbW9yeVByb3RvR2V0dGVyQnVmZmVyKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jVHlwZSk7CiB9CiAK
QEAgLTUzLDcgKzUzLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90
eQogLyogU291cmNlIGZvciBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaAogQGJlZ2lu
IHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlNZW1vcnkKICBncm93ICAgd2ViQXNzZW1ibHlNZW1v
cnlQcm90b0Z1bmNHcm93ICAgRnVuY3Rpb24gMQotIGJ1ZmZlciB3ZWJBc3NlbWJseU1lbW9yeVBy
b3RvRnVuY0J1ZmZlciBBY2Nlc3NvciAwCisgYnVmZmVyIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9H
ZXR0ZXJCdWZmZXIgQWNjZXNzb3IKICB0eXBlICAgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNU
eXBlICAgRnVuY3Rpb24gMAogQGVuZAogKi8KQEAgLTg4LDEyICs4OCwxMiBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihyZXN1bHQucGFnZUNvdW50KCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9HZXR0ZXJCdWZmZXIsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseU1lbW9yeSog
bWVtb3J5ID0gZ2V0TWVtb3J5KGdsb2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOyAKKyAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoZ2xvYmFs
T2JqZWN0LCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOyAKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZShtZW1vcnktPmJ1ZmZlcihnbG9iYWxPYmplY3QpKSk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc4NjA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUih3ZWJBc3NlbWJseVRhYmxlUHJvdG9HZXR0ZXJMZW5ndGgpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3cpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlUYWJsZVByb3RvRnVu
Y0dldCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxl
UHJvdG9GdW5jU2V0KTsKQEAgLTUyLDcgKzUyLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2Vt
Ymx5VGFibGVQcm90b3R5cAogCiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUubHV0LmgKICBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseVRhYmxlCi0gbGVuZ3Ro
IHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGggQWNjZXNzb3IgMAorIGxlbmd0aCB3ZWJB
c3NlbWJseVRhYmxlUHJvdG9HZXR0ZXJMZW5ndGggQWNjZXNzb3IKICBncm93ICAgd2ViQXNzZW1i
bHlUYWJsZVByb3RvRnVuY0dyb3cgICBGdW5jdGlvbiAxCiAgZ2V0ICAgIHdlYkFzc2VtYmx5VGFi
bGVQcm90b0Z1bmNHZXQgICAgRnVuY3Rpb24gMQogIHNldCAgICB3ZWJBc3NlbWJseVRhYmxlUHJv
dG9GdW5jU2V0ICAgIEZ1bmN0aW9uIDIKQEAgLTcyLDEyICs3MiwxMiBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSBKU1dlYkFzc2VtYmx5VGFibGUqCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlUYWJsZVByb3RvR2V0dGVyTGVuZ3RoLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNz
ZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShnbG9iYWxPYmplY3QsIHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKKyAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUo
Z2xvYmFsT2JqZWN0LCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0YWJsZS0+bGVuZ3RoKCkpKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI3ODYwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA2LTA4ICBBbGV4ZXkgU2h2YXlrYSAg
PHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nl
c3NvcnMgLyB2YWx1ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVz
IGNyb3NzLXJlYWxtIFdlYklETCBnZXR0ZXJzIC8gc2V0dGVycyB0byB1c2UgY29ycmVjdCAodGhl
aXIpIHJlYWxtCisgICAgICAgIGZvciBpbXBsaWNpdCB8dGhpc3wgdmFsdWUgYW5kIFR5cGVFcnJv
ciBbMV1bMl0sIGFsaWduaW5nIGF0dHJpYnV0ZXMgd2l0aCBvcGVyYXRpb25zCisgICAgICAgIGFu
ZCBXZWJLaXQgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgQWxzbywgZW5h
YmxlcyBmdXR1cmUgcmVtb3ZhbCBvZiBOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNHbG9i
YWxPYmplY3QuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwv
I2Rmbi1hdHRyaWJ1dGUtZ2V0dGVyIChzdGVwIDEuMS4yLjEpCisgICAgICAgIFsyXSBodHRwczov
L2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLXNldHRlciAoc3RlcCA0LjEp
CisKKyAgICAgICAgVGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURM
L2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jv
c3MtcmVhbG0uaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1y
ZWFsbS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKwogMjAyMS0wNi0wOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+IGFuZCBW
aWN0b3IgTS4gSmFxdWV6IEwuIDx2amFxdWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVXBkYXRl
IGxpYndlYnJ0YyB0byBNOTIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNzg2MDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5
KQpAQCAtNzA4Myw2ICs3MDgzLDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZURPTUNvbnZlcnROZWVk
c1N0YXRlCiAgICAgcmV0dXJuIDA7CiB9CiAKKyMgRklYTUU6IElzIGV4dHJhIGdsb2JhbCBvYmpl
Y3QgbmVjZXNzYXJ5IGFmdGVyIGh0dHBzOi8vd2Via2l0Lm9yZy9iL2lkPTIyNTk5Nz8gSXQgc2hv
dWxkIGJlIHRoZSBzYW1lIGFzIGxleGljYWxHbG9iYWxPYmplY3QuCiBzdWIgTmF0aXZlVG9KU1Zh
bHVlRE9NQ29udmVydE5lZWRzR2xvYmFsT2JqZWN0CiB7CiAgICAgbXkgKCR0eXBlKSA9IEBfOwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMjc4NjA5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDYtMDggIEFsZXhleSBTaHZheWthICA8
c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vz
c29ycyAvIHZhbHVlcyB3aXRoIHRoZWlyIGhvbGRlcidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk5NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIHRlc3RzIHVzZWQg
dG8gcGFzcyBhcyBpcywgcHJvYmFibHksIGR1ZSB0byBjb21iaW5hdGlvbiBvZiBvbGQgKGluY29y
cmVjdCkgYmVoYXZpb3IgYW5kCisgICAgICAgIHNvbWUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBv
ZiBydW4td2Via2l0LXRlc3RzLiBUaGV5IGZhaWwgb24gTWluaUJyb3dzZXIgLyBDaHJvbWUgLyBG
aXJlZm94CisgICAgICAgIHVubGVzcyBtb2RpZmllZCBub3QgdXNlIGRhdGE6Ly8gcHJvdG9jb2ws
IHdoaWNoIGlzIG5vdCBzeXN0ZW0gdW5kZXIgdGVzdC4KKworICAgICAgICAqIGZhc3QvZG9tL0hU
TUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLmh0bWw6CisgICAgICAg
ICogZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMv
ZHVtbXktZnJhbWUtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9hdHRyaWJ1
dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZyb20tZnJh
bWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbDoKKwogMjAyMS0wNi0wOCAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIGxpYndlYnJ0YyB0byBNOTIKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFt
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9i
amVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4NjA5
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZy
YW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSwxMCArNSwxMCBAQCBQQVNTIHdp
bmRvdy5mcmFtZXNbMF0uZnJhbWVFbGVtZW50LmNvbnRlCiBQQVNTIHdpbmRvdy5mcmFtZXNbMV0u
ZnJhbWVFbGVtZW50Lm5hbWUgaXMgIm9iaiIKIFBBU1Mgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVs
ZW1lbnQuY29udGVudFdpbmRvdyBpcyB3aW5kb3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250
ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcKIFBBU1Mgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVsZW1l
bnQuY29udGVudFdpbmRvdy5kb2N1bWVudCBpcyB3aW5kb3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVu
dC5jb250ZW50RG9jdW1lbnQKLUxvYWRpbmcgJ2RhdGE6dGV4dC9odG1sLFVwZGF0ZWQgY29udGVu
dHMgb2YgaWZyYW1lJyBpbiBpZnJhbWUuLi4KLUxvYWRpbmcgJ2RhdGE6dGV4dC9odG1sLFVwZGF0
ZWQgY29udGVudHMgb2Ygb2JqZWN0JyBpbiBvYmplY3QuLi4KLVBBU1Mgd2luZG93LmZyYW1lc1sw
XS5sb2NhdGlvbi50b1N0cmluZygpIGlzICJkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRz
IG9mIGlmcmFtZSIKLVBBU1Mgd2luZG93LmZyYW1lc1sxXS5sb2NhdGlvbi50b1N0cmluZygpIGlz
ICJkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRzIG9mIG9iamVjdCIKK0xvYWRpbmcgJ3Jl
c291cmNlcy9kdW1teS1mcmFtZS0yLmh0bWwnIGluIGlmcmFtZS4uLgorTG9hZGluZyAncmVzb3Vy
Y2VzL2R1bW15LWZyYW1lLTEuaHRtbCcgaW4gb2JqZWN0Li4uCitQQVNTIHdpbmRvdy5mcmFtZXNb
MF0ubG9jYXRpb24uaHJlZi5lbmRzV2l0aCgicmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbCIp
IGlzIHRydWUKK1BBU1Mgd2luZG93LmZyYW1lc1sxXS5sb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCJy
ZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1sIikgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUuaHRt
bAkocmV2aXNpb24gMjc4NjA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVs
ZW1lbnQvb2JqZWN0LWFzLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBA
CiAKIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi12YXIgdXBkYXRlZEZyYW1lVVJMID0gImRhdGE6
dGV4dC9odG1sLFVwZGF0ZWQgY29udGVudHMgb2YgaWZyYW1lIjsKLXZhciB1cGRhdGVkT2JqZWN0
VVJMID0gImRhdGE6dGV4dC9odG1sLFVwZGF0ZWQgY29udGVudHMgb2Ygb2JqZWN0IjsKK3ZhciB1
cGRhdGVkRnJhbWVVUkwgPSAicmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbCI7Cit2YXIgdXBk
YXRlZE9iamVjdFVSTCA9ICJyZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1sIjsKIAogZnVuY3Rp
b24gcnVuVGVzdHMoKQogewpAQCAtMzYsOCArMzYsOCBAQCBmdW5jdGlvbiBoYW5kbGVMb2FkKCkK
ICAgICBpZiAobnVtTG9hZHMgPCAyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzaG91bGRCZSgi
d2luZG93LmZyYW1lc1swXS5sb2NhdGlvbi50b1N0cmluZygpIiwgJyInICsgdXBkYXRlZEZyYW1l
VVJMICsgJyInKTsKLSAgICBzaG91bGRCZSgid2luZG93LmZyYW1lc1sxXS5sb2NhdGlvbi50b1N0
cmluZygpIiwgJyInICsgdXBkYXRlZE9iamVjdFVSTCArICciJyk7CisgICAgc2hvdWxkQmVUcnVl
KGB3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLmhyZWYuZW5kc1dpdGgoIiR7dXBkYXRlZEZyYW1l
VVJMfSIpYCk7CisgICAgc2hvdWxkQmVUcnVlKGB3aW5kb3cuZnJhbWVzWzFdLmxvY2F0aW9uLmhy
ZWYuZW5kc1dpdGgoIiR7dXBkYXRlZE9iamVjdFVSTH0iKWApOwogCiAgICAgZmluaXNoSlNUZXN0
KCk7CiB9CkBAIC00Niw4ICs0Niw4IEBAIGZ1bmN0aW9uIGhhbmRsZUxvYWQoKQogPC9oZWFkPgog
PGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj4KIAotPGlmcmFtZSBuYW1lPSJmcmFtZSIgc3JjPSJk
YXRhOnRleHQvaHRtbCxPbGQgY29udGVudHMgb2YgaWZyYW1lIj48L2lmcmFtZT4KLTxvYmplY3Qg
bmFtZT0ib2JqIiB0eXBlPSJ0ZXh0L2h0bWwiIGRhdGE9ImRhdGE6dGV4dC9odG1sLE9sZCBjb250
ZW50cyBvZiBvYmplY3QiPjwvb2JqZWN0PgorPGlmcmFtZSBuYW1lPSJmcmFtZSIgc3JjPSJyZXNv
dXJjZXMvZHVtbXktZnJhbWUtMS5odG1sIj48L2lmcmFtZT4KKzxvYmplY3QgbmFtZT0ib2JqIiB0
eXBlPSJ0ZXh0L2h0bWwiIGRhdGE9InJlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0bWwiPjwvb2Jq
ZWN0PgogCiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
T2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1m
cmFtZS0xLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9i
amVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDIgQEAKKzwhRE9DVFlQRSBodG1sPgorT2xkIGNvbnRlbnRzIG9mIGlmcmFtZSAv
IE5ldyBjb250ZW50cyBvZiBvYmplY3QKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxP
YmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZy
YW1lLTIuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2Jq
ZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMiBAQAorPCFET0NUWVBFIGh0bWw+CitPbGQgY29udGVudHMgb2Ygb2JqZWN0IC8g
TmV3IGNvbnRlbnRzIG9mIGlmcmFtZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0
cmlidXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVy
LWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHJldmlzaW9uIDI3ODYw
OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQt
ZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogPGh0bWw+CiA8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Ci08aWZyYW1lIHNyYz0nZGF0
YTp0ZXh0L2h0bWwsPGEgaWQ9ImEiIGhyZWY9IiUyMyIgb25jbGljaz0iZG9jdW1lbnQud3JpdGUo
d2luZG93ICE9IHRvcCA/ICZhcG9zOzxwPkZBSUw8L3A+JmFwb3M7IDogJmFwb3M7PHA+UEFTUzwv
cD4mYXBvczspOyByZXR1cm4gZmFsc2UiPmxpbms8L2E+Jz48L2lmcmFtZT4KKzxpZnJhbWUgc3Jj
ZG9jPSc8YSBpZD0iYSIgaHJlZj0iJTIzIiBvbmNsaWNrPSJkb2N1bWVudC53cml0ZSh3aW5kb3cg
IT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4mYXBvczsgOiAmYXBvczs8cD5QQVNTPC9wPiZhcG9z
Oyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4nPjwvaWZyYW1lPgogPHNjcmlwdD4KIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZy
YW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2Mt
Y29udGV4dC0yLmh0bWwJKHJldmlzaW9uIDI3ODYwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRl
eHQtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+CiA8Ym9keSBv
bmxvYWQ9InRlc3QoKSI+Ci08aWZyYW1lIHNyYz0nZGF0YTp0ZXh0L2h0bWwsPGEgaWQ9ImEiIGhy
ZWY9IiUyMyIgb25jbGljaz0iZG9jdW1lbnQud3JpdGUod2luZG93ICE9IHRvcCA/ICZhcG9zOzxw
PkZBSUw8L3A+JmFwb3M7IDogJmFwb3M7PHA+UEFTUzwvcD4mYXBvczspOyByZXR1cm4gZmFsc2Ui
Pmxpbms8L2E+Jz48L2lmcmFtZT4KKzxpZnJhbWUgc3JjZG9jPSc8YSBpZD0iYSIgaHJlZj0iJTIz
IiBvbmNsaWNrPSJkb2N1bWVudC53cml0ZSh3aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwv
cD4mYXBvczsgOiAmYXBvczs8cD5QQVNTPC9wPiZhcG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwv
YT4nPjwvaWZyYW1lPgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzg2MDkpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDYtMDggIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIENhbGwgY3VzdG9t
IGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRoIHRoZWlyIGhvbGRlcidzIGdsb2JhbCBvYmplY3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk5NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNp
dC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVj
dC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludmFsaWQtdGhp
cy12YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1
ZS1jcm9zcy1yZWFsbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
V2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9zdXBwb3J0L2NyZWF0ZS1yZWFsbS5qczogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
c3VwcG9ydC9kdW1teS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LWNzcy1j
cm9zcy1vcmlnaW4uaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS5o
dG1sOgorCiAyMDIxLTA2LTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVcGRhdGUgbGlid2VicnRjIHRvIE05MgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2Jh
bC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9X
ZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1
ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5n
L2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4IEBACisKK0ZBSUwgQ3Jvc3MtcmVhbG0gZ2xv
YmFsIG9iamVjdCdzIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9i
amVjdCBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4geyBPYmplY3QuY3JlYXRlKG90
aGVyKS53aW5kb3c7IH0iIGRpZCBub3QgdGhyb3cKK0ZBSUwgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9i
amVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCBh
c3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4geyBPYmplY3QuY3JlYXRlKG90aGVyKS5u
YW1lID0gImR1bW15IjsgfSIgZGlkIG5vdCB0aHJvdworRkFJTCBDcm9zcy1yZWFsbSBnbG9iYWwg
b2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2Jq
ZWN0IGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiB7IE9iamVjdC5jcmVhdGUob3Ro
ZXIpLmZvY3VzKCk7IH0iIGRpZCBub3QgdGhyb3cKK0ZBSUwgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9i
amVjdCdzIGdldHRlciBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFRoZSBXaW5k
b3cubmFtZSBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV2luZG93Igor
RkFJTCBDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIGNhbGxlZCBvbiBudWxsIC8g
dW5kZWZpbmVkIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIlR5cGVFcnJvcjogVGhlIFdpbmRvdy5sb2NhdGlvbiBzZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgV2luZG93IgorUEFTUyBDcm9zcy1yZWFsbSBnbG9iYWwgb2Jq
ZWN0J3Mgb3BlcmF0aW9uIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkCisKSW5kZXg6IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQt
YmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlz
LXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ds
b2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPkNyb3NzLXJlYWxtIGdldHRlciAvIHNldHRlciAvIG9wZXJhdGlvbiBk
b2Vzbid0IHVzZSBsZXhpY2FsIGdsb2JhbCBvYmplY3QgaWYgfHRoaXN8IHZhbHVlIGlzIGluY29t
cGF0aWJsZSBvYmplY3QgLyBudWxsIC8gdW5kZWZpbmVkPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVs
cCIgaHJlZj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1n
ZXR0ZXIiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNkZm4tYXR0cmlidXRlLXNldHRlciI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1jcmVhdGUtb3BlcmF0aW9uLWZ1bmN0
aW9uIj4KKworPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InN1cHBvcnQvY3JlYXRlLXJlYWxtLmpzIj48L3NjcmlwdD4KKworPGJv
ZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IG90aGVy
ID0gYXdhaXQgY3JlYXRlUmVhbG0odCk7CisgICAgY29uc3Qgbm90V2luZG93ID0gT2JqZWN0LmNy
ZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yob3RoZXIpKTsKKworICAgIGFzc2VydF90aHJvd3Nf
anMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5jcmVhdGUob3RoZXIpLndpbmRvdzsg
fSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvdGhlciwgImhpc3RvcnkiKS5nZXQuY2FsbChub3RX
aW5kb3cpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4g
eyBSZWZsZWN0LmdldChvdGhlciwgInNjcmVlbiIsIG5vdFdpbmRvdyk7IH0pOworICAgIGFzc2Vy
dF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IG5ldyBQcm94eShvdGhlciwge30p
Lm9uY2xpY2s7IH0pOworfSwgIkNyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBnZXR0ZXIgdGhy
b3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QiKTsKKworcHJvbWlzZV90ZXN0
KGFzeW5jIHQgPT4geworICAgIGNvbnN0IG90aGVyID0gYXdhaXQgY3JlYXRlUmVhbG0odCk7Cisg
ICAgY29uc3Qgbm90V2luZG93ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
b3RoZXIpKTsKKworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7
IE9iamVjdC5jcmVhdGUob3RoZXIpLm5hbWUgPSAiZHVtbXkiOyB9KTsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKG90aGVyLCAic3RhdHVzIikuc2V0LmNhbGwobm90V2luZG93LCBvdGhlci5zdGF0dXMp
OyB9KTsKKyAgICAvLyBwYXJlbnQgaXMgW1JlcGxhY2VhYmxlXQorICAgIGFzc2VydF90aHJvd3Nf
anMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3Quc2V0KG90aGVyLCAicGFyZW50Iiwg
d2luZG93LCBub3RXaW5kb3cpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVF
cnJvciwgKCkgPT4geyBuZXcgUHJveHkob3RoZXIsIHt9KS5sb2NhdGlvbiA9IGxvY2F0aW9uOyB9
KTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNh
bGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+
IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG5v
dFdpbmRvdyA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG90aGVyKSk7CisK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3Jl
YXRlKG90aGVyKS5mb2N1cygpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVF
cnJvciwgKCkgPT4geyBvdGhlci5jbGVhckludGVydmFsLmNhbGwobm90V2luZG93LCAwKTsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5h
cHBseShvdGhlci5ibHVyLCBub3RXaW5kb3csIFtdKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19q
cyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5KG90aGVyLCB7fSkucmVtb3ZlRXZl
bnRMaXN0ZW5lcigiZm9vIiwgKCkgPT4ge30pOyB9KTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwg
b2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2Jq
ZWN0Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3
YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG90aGVyTmFtZUdldHRlciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXIsICJuYW1lIikuZ2V0OworCisgICAgYXNzZXJ0
X2VxdWFscyhSZWZsZWN0LmdldChvdGhlciwgInNlbGYiLCBudWxsKSwgb3RoZXIpOworICAgIGFz
c2VydF9lcXVhbHMoUmVmbGVjdC5nZXQob3RoZXIsICJkb2N1bWVudCIsIHVuZGVmaW5lZCksIG90
aGVyLmRvY3VtZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKG90aGVyTmFtZUdldHRlci5jYWxsKG51
bGwpLCAiZHVtbXkiKTsKKyAgICAvLyBBbiBlbmdpbmUgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgY29k
ZSBwYXRoIGZvciBjYWxsaW5nIGEgZnVuY3Rpb24gZnJvbSBvdXRlciBzY29wZSB0byBpbXBsZW1l
bnQgc3RlcCAxLmIuaWlpIG9mIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZXZhbHVhdGVj
YWxsCisgICAgYXNzZXJ0X2VxdWFscygoKCkgPT4gb3RoZXJOYW1lR2V0dGVyKCkpKCksICJkdW1t
eSIpOworfSwgIkNyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBnZXR0ZXIgY2FsbGVkIG9uIG51
bGwgLyB1bmRlZmluZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0
IG90aGVyID0gYXdhaXQgY3JlYXRlUmVhbG0odCk7CisgICAgY29uc3Qgb3RoZXJMb2NhdGlvblNl
dHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXIsICJsb2NhdGlvbiIp
LnNldDsKKyAgICBjb25zdCBvdGhlckhyZWYgPSBvdGhlci5sb2NhdGlvbi5ocmVmOworICAgIGNv
bnN0IG5ld1NlbGYgPSB7fTsKKworICAgIC8vIHNlbGYgaXMgW1JlcGxhY2VhYmxlXQorICAgIGFz
c2VydF90cnVlKFJlZmxlY3Quc2V0KG90aGVyLCAic2VsZiIsIG5ld1NlbGYsIG51bGwpKTsKKyAg
ICBhc3NlcnRfdHJ1ZShSZWZsZWN0LnNldChvdGhlciwgIm5hbWUiLCAibmV3TmFtZSIsIHVuZGVm
aW5lZCkpOworCisgICAgb3RoZXJMb2NhdGlvblNldHRlci5jYWxsKG51bGwsIGAke290aGVySHJl
Zn0jZm9vYCk7CisgICAgYXNzZXJ0X2VxdWFscyhvdGhlci5sb2NhdGlvbi5oYXNoLCAiI2ZvbyIp
OworICAgIC8vIEFuIGVuZ2luZSBtaWdodCBoYXZlIGRpZmZlcmVudCBjb2RlIHBhdGggZm9yIGNh
bGxpbmcgYSBmdW5jdGlvbiBmcm9tIG91dGVyIHNjb3BlIHRvIGltcGxlbWVudCBzdGVwIDEuYi5p
aWkgb2YgaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1ldmFsdWF0ZWNhbGwKKyAgICAoKCkg
PT4geyBvdGhlckxvY2F0aW9uU2V0dGVyKGAke290aGVySHJlZn0jYmFyYCk7IH0pKCk7CisgICAg
YXNzZXJ0X2VxdWFscyhvdGhlci5sb2NhdGlvbi5oYXNoLCAiI2JhciIpOworCisgICAgLy8gQ2hl
Y2sgdGhlc2UgYWZ0ZXIgY2FsbGluZyAibG9jYXRpb24iIHNldHRlciBtYWtlIHN1cmUgbm8gbmF2
aWdhdGlvbiBoYXMgb2NjdXJyZWQKKyAgICBhc3NlcnRfZXF1YWxzKG90aGVyLnNlbGYsIG5ld1Nl
bGYpOworICAgIGFzc2VydF9lcXVhbHMob3RoZXIubmFtZSwgIm5ld05hbWUiKTsKK30sICJDcm9z
cy1yZWFsbSBnbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVk
Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0
IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG90aGVyRm9jdXMgPSBvdGhlci5mb2N1czsKKyAg
ICBjb25zdCBvdGhlckRpc3BhdGNoRXZlbnQgPSBvdGhlci5kaXNwYXRjaEV2ZW50OworICAgIAor
ICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgZG9jdW1lbnQuYm9keSk7
CisgICAgLy8gQW4gZW5naW5lIG1pZ2h0IGhhdmUgZGlmZmVyZW50IGNvZGUgcGF0aCBmb3IgY2Fs
bGluZyBhIGZ1bmN0aW9uIGZyb20gb3V0ZXIgc2NvcGUgdG8gaW1wbGVtZW50IHN0ZXAgMS5iLmlp
aSBvZiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWV2YWx1YXRlY2FsbAorICAgICgoKSA9
PiB7IG90aGVyRm9jdXMoKTsgfSkoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQuY29udGVudFdpbmRvdywgb3RoZXIpOworCisgICAgbGV0IGNhdWdodEV2ZW50Owor
ICAgIG90aGVyLmFkZEV2ZW50TGlzdGVuZXIuY2FsbChudWxsLCAiZm9vIiwgZXZlbnQgPT4geyBj
YXVnaHRFdmVudCA9IGV2ZW50OyB9KTsKKyAgICBjb25zdCBkaXNwYXRjaGVkRXZlbnQgPSBuZXcg
b3RoZXIuRXZlbnQoImZvbyIpOworICAgIGFzc2VydF90cnVlKG90aGVyRGlzcGF0Y2hFdmVudChk
aXNwYXRjaGVkRXZlbnQpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNhdWdodEV2ZW50LCBkaXNwYXRj
aGVkRXZlbnQpOworCisgICAgY29uc3QgbWVzc2FnZVByb21pc2UgPSBuZXcgRXZlbnRXYXRjaGVy
KHQsIG90aGVyLCAibWVzc2FnZSIpLndhaXRfZm9yKCJtZXNzYWdlIik7CisgICAgb3RoZXIucG9z
dE1lc3NhZ2UuY2FsbChudWxsLCAiZm9vIik7CisgICAgYXNzZXJ0X2VxdWFscygoYXdhaXQgbWVz
c2FnZVByb21pc2UpLmRhdGEsICJmb28iKTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0
J3Mgb3BlcmF0aW9uIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIik7Cis8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2Vj
bWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3Mt
cmVhbG0tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlk
LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNSBAQAorCitQQVNTIENyb3NzLXJlYWxtIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQg
b24gaW5jb21wYXRpYmxlIG9iamVjdAorUEFTUyBDcm9zcy1yZWFsbSBzZXR0ZXIgdGhyb3dzIHdo
ZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgQ3Jvc3MtcmVhbG0gb3BlcmF0
aW9uIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CisKSW5kZXg6IExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3Jp
cHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9l
Y21hc2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFs
bS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkNyb3NzLXJlYWxtIGdldHRlciAvIHNldHRl
ciAvIG9wZXJhdGlvbiBkb2Vzbid0IHVzZSBsZXhpY2FsIGdsb2JhbCBvYmplY3QgdG8gdGhyb3cg
YW4gZXJyb3IgZm9yIGluY29tcGF0aWJsZSB8dGhpc3wgdmFsdWU8L3RpdGxlPgorPGxpbmsgcmVs
PSJoZWxwIiBocmVmPSJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmli
dXRlLWdldHRlciI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtc2V0dGVyIj4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWNyZWF0ZS1vcGVyYXRpb24t
ZnVuY3Rpb24iPgorCis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0ic3VwcG9ydC9jcmVhdGUtcmVhbG0uanMiPjwvc2NyaXB0Pgor
Cis8Ym9keT4KKzxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qg
b3RoZXIgPSBhd2FpdCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBub3RFbGVtZW50ID0gT2Jq
ZWN0LmNyZWF0ZShvdGhlci5IVE1MRWxlbWVudC5wcm90b3R5cGUpOworCisgICAgYXNzZXJ0X3Ro
cm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShvdGhlci5kb2N1
bWVudCkuaGVhZDsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgp
ID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvdGhlci5IVE1MRWxlbWVudC5w
cm90b3R5cGUsICJ0aXRsZSIpLmdldC5jYWxsKG5vdEVsZW1lbnQpOyB9KTsKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LmdldChvdGhlci5kb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwgImhpZGRlbiIsIG5vdEVsZW1lbnQpOyB9KTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkob3Ro
ZXIudGV4dCwge30pLm5vZGVUeXBlOyB9KTsKK30sICJDcm9zcy1yZWFsbSBnZXR0ZXIgdGhyb3dz
IHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QiKTsKKworcHJvbWlzZV90ZXN0KGFz
eW5jIHQgPT4geworICAgIGNvbnN0IG90aGVyID0gYXdhaXQgY3JlYXRlUmVhbG0odCk7CisgICAg
Y29uc3Qgbm90RWxlbWVudCA9IE9iamVjdC5jcmVhdGUob3RoZXIuSFRNTEVsZW1lbnQucHJvdG90
eXBlKTsKKyAgICBjb25zdCBub3RUZXh0ID0gT2JqZWN0LmNyZWF0ZShvdGhlci5UZXh0LnByb3Rv
dHlwZSk7CisKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBP
YmplY3QuY3JlYXRlKG90aGVyLmVsZW1lbnQpLmlubmVySFRNTCA9ICIiOyB9KTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG90aGVyLkhUTUxFbGVtZW50LnByb3RvdHlwZSwgIm9uY2xpY2siKS5zZXQu
Y2FsbChub3RFbGVtZW50LCBudWxsKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5U
eXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5zZXQobmV3IG90aGVyLlRleHQoImZvbyIpLCAiZGF0
YSIsICJmb28iLCBub3RUZXh0KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBl
RXJyb3IsICgpID0+IHsgbmV3IFByb3h5KG90aGVyLmRvY3VtZW50LCB7fSkudGl0bGUgPSAiIjsg
fSk7Cit9LCAiQ3Jvc3MtcmVhbG0gc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBh
dGlibGUgb2JqZWN0Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBv
dGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG5vdERvY3VtZW50ID0gT2Jq
ZWN0LmNyZWF0ZShvdGhlci5IVE1MRG9jdW1lbnQucHJvdG90eXBlKTsKKyAgICBjb25zdCBub3RU
ZXh0ID0gT2JqZWN0LmNyZWF0ZShvdGhlci5UZXh0LnByb3RvdHlwZSk7CisKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKG90aGVyLmVs
ZW1lbnQpLmNsaWNrKCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9y
LCAoKSA9PiB7IG90aGVyLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IuY2FsbChub3REb2N1bWVudCwg
IioiKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsg
UmVmbGVjdC5hcHBseShvdGhlci50ZXh0LnJlbW92ZSwgbm90VGV4dCwgW10pOyB9KTsKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkob3RoZXIu
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLCB7fSkuYWRkRXZlbnRMaXN0ZW5lcigiZm9vIiwg
KCkgPT4ge30pOyB9KTsKK30sICJDcm9zcy1yZWFsbSBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2Fs
bGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QiKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5k
aW5nL3N1cHBvcnQvY3JlYXRlLXJlYWxtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9z
dXBwb3J0L2NyZWF0ZS1yZWFsbS5qcwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3Vw
cG9ydC9jcmVhdGUtcmVhbG0uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorInVz
ZSBzdHJpY3QiOworCitmdW5jdGlvbiBjcmVhdGVSZWFsbSh0KSB7CisgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgaWZyYW1lLm9ubG9hZCA9ICgpID0+IHsgcmVz
b2x2ZShpZnJhbWUuY29udGVudFdpbmRvdyk7IH07CisgICAgICAgIGlmcmFtZS5uYW1lID0gImR1
bW15IjsKKyAgICAgICAgaWZyYW1lLnNyYyA9ICJzdXBwb3J0L2R1bW15LWlmcmFtZS5odG1sIjsK
KyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoaWZyYW1lKTsKKyAgICAgICAgdC5hZGRfY2xl
YW51cCgoKSA9PiB7IGlmcmFtZS5yZW1vdmUoKTsgfSk7CisgICAgfSk7Cit9CkluZGV4OiBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0
LWJpbmRpbmcvc3VwcG9ydC9kdW1teS1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJp
bmRpbmcvc3VwcG9ydC9kdW1teS1pZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJp
bmRpbmcvc3VwcG9ydC9kdW1teS1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGJvZHk+Zm9v
Cis8YnV0dG9uIGlkPSJlbGVtZW50Ij48L2J1dHRvbj4KKzxzY3JpcHQ+CisgICAgd2luZG93LnRl
eHQgPSBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQ7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL2ZldGNoLXJlcXVlc3QtY3NzLWNyb3NzLW9yaWdpbi5odHRwcy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jv
c3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4NjA5KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDYgQEAKIAogUEFTUyBzZXR1cCBnbG9iYWwg
c3RhdGUKIFBBU1MgTUlNRSBjaGVja2luZyBvZiBDU1MgcmVzb3VyY2VzIGZldGNoZWQgdmlhIHNl
cnZpY2Ugd29ya2VyIHdoZW4gQ29udGVudC1UeXBlIGlzIG5vdCBzZXQuCi1GQUlMIFNhbWUtb3Jp
Z2luIHBvbGljeSBmb3IgYWNjZXNzIHRvIENTUyByZXNvdXJjZXMgZmV0Y2hlZCB2aWEgc2Vydmlj
ZSB3b3JrZXIgYXNzZXJ0X3Rocm93c19kb206IGZ1bmN0aW9uICIoKSA9PiB7Ci0gICAgZi5jb250
ZW50RG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uY3NzVGV4dDsKLSAgfSIgdGhy
ZXcgYW4gZXhjZXB0aW9uIGZyb20gdGhlIHdyb25nIGdsb2JhbAorRkFJTCBTYW1lLW9yaWdpbiBw
b2xpY3kgZm9yIGFjY2VzcyB0byBDU1MgcmVzb3VyY2VzIGZldGNoZWQgdmlhIHNlcnZpY2Ugd29y
a2VyIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
IlNlY3VyaXR5RXJyb3I6IE5vdCBhbGxvd2VkIHRvIGFjY2VzcyBjcm9zcy1vcmlnaW4gc3R5bGVz
aGVldCIKIFBBU1MgY2xlYW51cCBnbG9iYWwgc3RhdGUKIApJbmRleDogTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2Zy
YW1lLXRyYW5zZm9ybS1yZWFkYWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3Nm
cmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbAkocmV2aXNpb24gMjc4NjA5KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFu
c2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05
LDkgKzksMTAgQEAKICAgICAgICAgPGlmcmFtZSBzcmM9Ii4iIGlkPSJmcmFtZSI+PC9pZnJhbWU+
CiAgICAgICAgIDxzY3JpcHQ+CiBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBj
b25zdCBmcmFtZURPTUV4Y2VwdGlvbiA9IGZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9u
OwogICAgIGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBmcmFtZS5jb250ZW50V2luZG93LlNGcmFtZVRy
YW5zZm9ybTsKICAgICBmcmFtZS5yZW1vdmUoKTsKLSAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52
YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiB0cmFuc2Zvcm0ucmVhZGFibGUpOworICAgIGFzc2VydF90
aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZyYW1lRE9NRXhjZXB0aW9uLCAoKSA9PiB0
cmFuc2Zvcm0ucmVhZGFibGUpOwogfSk7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431994</attachid>
            <date>2021-06-22 14:31:06 -0700</date>
            <delta_ts>2021-06-22 14:50:27 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-225997-20210623003104.patch</filename>
            <type>text/plain</type>
            <size>78662</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzkwNjcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTIxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1
ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90
by1jaGFpbi1wdXQuanM6CisgICAgICAgICogc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2Jq
ZWN0LWluLWljLTIuanM6IEFkZGVkLgorCiAyMDIxLTA2LTIwICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQWRkIFZhbHVlT2YgZmFzdCBwYXRoIGlu
IHRvUHJpbWl0aXZlCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90by1j
aGFpbi1wdXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQt
cHJvdG8tY2hhaW4tcHV0LmpzCShyZXZpc2lvbiAyNzkwNjYpCisrKyBKU1Rlc3RzL3N0cmVzcy9j
dXN0b20tZ2V0LXNldC1wcm90by1jaGFpbi1wdXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTk5LDgg
Kzk5LDggQEAgZnVuY3Rpb24gZ2V0QmFzZXMoKSB7CiAoKCkgPT4gewogICAgIGZvciAobGV0IGJh
c2Ugb2YgZ2V0QmFzZXMoKSkgewogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytp
KQotICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBiYXNlLmN1c3RvbUFjY2Vzc29yR2xv
YmFsT2JqZWN0ID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVh
ZG9ubHkgcHJvcGVydHkuIik7Ci0gICAgICAgIGFzc2VydCghUmVmbGVjdC5zZXQoT2JqZWN0KGJh
c2UpLCAiY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QiLCB7fSkpOworICAgICAgICAgICAgc2hv
dWxkVGhyb3coKCkgPT4geyBiYXNlLmN1c3RvbUFjY2Vzc29yUmVhZE9ubHkgPSB7fTsgfSwgIlR5
cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAg
ICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0b21BY2Nlc3NvclJl
YWRPbmx5Iiwge30pKTsKICAgICB9CiB9KSgpOwogCkBAIC0xMDgsMjEgKzEwOCwyMSBAQCBmdW5j
dGlvbiBnZXRCYXNlcygpIHsKICgoKSA9PiB7CiAgICAgZm9yIChsZXQgcHJpbWl0aXZlIG9mIHBy
aW1pdGl2ZXMpIHsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkKLSAgICAg
ICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgcHJpbWl0aXZlLmN1c3RvbVZhbHVlR2xvYmFsT2Jq
ZWN0ID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkg
cHJvcGVydHkuIik7CisgICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IHByaW1pdGl2ZS5j
dXN0b21WYWx1ZU5vU2V0dGVyID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3Np
Z24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7CiAgICAgfQogCiAgICAgZm9yIChsZXQgb2JqZWN0
IG9mIGdldE9iamVjdHMoKSkgewogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytp
KQotICAgICAgICAgICAgb2JqZWN0LmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID0ge307Ci0gICAg
ICAgIGFzc2VydChvYmplY3QuaGFzT3duUHJvcGVydHkoImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0
IikpOwotICAgICAgICBhc3NlcnQoUmVmbGVjdC5zZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVHbG9i
YWxPYmplY3QiLCB7fSkpOworICAgICAgICAgICAgb2JqZWN0LmN1c3RvbVZhbHVlTm9TZXR0ZXIg
PSB7fTsKKyAgICAgICAgYXNzZXJ0KG9iamVjdC5oYXNPd25Qcm9wZXJ0eSgiY3VzdG9tVmFsdWVO
b1NldHRlciIpKTsKKyAgICAgICAgYXNzZXJ0KFJlZmxlY3Quc2V0KG9iamVjdCwgImN1c3RvbVZh
bHVlTm9TZXR0ZXIiLCB7fSkpOwogICAgIH0KIAogICAgIGZvciAobGV0IG9iamVjdCBvZiBnZXRP
YmplY3RzKCkpIHsKICAgICAgICAgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKG9iamVjdCk7CiAg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKLSAgICAgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsgb2JqZWN0LmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID0ge307IH0sICJU
eXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7Ci0g
ICAgICAgICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0KG9iamVjdCwgImN1c3RvbVZhbHVlR2xvYmFs
T2JqZWN0Iiwge30pKTsKKyAgICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgb2JqZWN0LmN1
c3RvbVZhbHVlTm9TZXR0ZXIgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2ln
biB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIGFzc2VydCghUmVmbGVjdC5z
ZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVOb1NldHRlciIsIHt9KSk7CiAgICAgICAgIH0KICAgICB9
CiB9KSgpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvZ2V0dGVyLXNldHRlci1nbG9iYWxvYmplY3Qt
aW4taWMtMi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9nZXR0ZXItc2V0dGVyLWds
b2JhbG9iamVjdC1pbi1pYy0yLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2dl
dHRlci1zZXR0ZXItZ2xvYmFsb2JqZWN0LWluLWljLTIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3NyBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30KKworY29uc3QgY3JlYXRlQ3VzdG9t
ID0gYAorICAgIHZhciBjdXN0b20gPSAkdm0uY3JlYXRlQ3VzdG9tVGVzdEdldHRlclNldHRlcigp
OworYDsKKworKGZ1bmN0aW9uIGRpcmVjdEN1c3RvbUFjY2Vzc29yR2V0KCkgeworICAgIGNvbnN0
IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b20g
PSBvdGhlci5jdXN0b207CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7Cisg
ICAgICAgIGFzc2VydChvdGhlckN1c3RvbS5jdXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCA9PT0g
b3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBkaXJlY3RDdXN0b21WYWx1ZUdldCgp
IHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0
IG90aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTU7IGkrKykgeworICAgICAgICBhc3NlcnQob3RoZXJDdXN0b20uY3VzdG9tVmFsdWVHbG9iYWxP
YmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gZGlyZWN0Q3VzdG9t
QWNjZXNzb3JTZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9t
KTsKKyAgICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVyLmN1c3RvbTsKKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgY29uc3QgdmFsdWUgPSB7fTsKKyAgICAg
ICAgb3RoZXJDdXN0b20uY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPSB2YWx1ZTsKKyAgICAg
ICAgYXNzZXJ0KHZhbHVlLnJlc3VsdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5j
dGlvbiBkaXJlY3RDdXN0b21WYWx1ZVNldCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmlu
ZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOwor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBjb25zdCB2YWx1
ZSA9IHt9OworICAgICAgICBvdGhlckN1c3RvbS5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9IHZh
bHVlOworICAgICAgICBhc3NlcnQodmFsdWUucmVzdWx0ID09PSBvdGhlcik7CisgICAgfQorfSko
KTsKKworKGZ1bmN0aW9uIHByb3RvdHlwZUNoYWluQ3VzdG9tQWNjZXNzb3JHZXQoKSB7CisgICAg
Y29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1
c3RvbUhlaXIgPSBPYmplY3QuY3JlYXRlKG90aGVyLmN1c3RvbSk7CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGFzc2VydChvdGhlckN1c3RvbUhlaXIuY3Vz
dG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVu
Y3Rpb24gcHJvdG90eXBlQ2hhaW5DdXN0b21WYWx1ZUdldCgpIHsKKyAgICBjb25zdCBvdGhlciA9
IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tSGVpciA9IE9i
amVjdC5jcmVhdGUob3RoZXIuY3VzdG9tKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1
OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KG90aGVyQ3VzdG9tSGVpci5jdXN0b21WYWx1ZUdsb2Jh
bE9iamVjdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBwcm90b3R5cGVD
aGFpbkN1c3RvbUFjY2Vzc29yU2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNy
ZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b21IZWlyID0gT2JqZWN0LmNyZWF0ZShv
dGhlci5jdXN0b20pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAg
ICAgICBjb25zdCB2YWx1ZSA9IHt9OworICAgICAgICBvdGhlckN1c3RvbUhlaXIuY3VzdG9tQWNj
ZXNzb3JHbG9iYWxPYmplY3QgPSB2YWx1ZTsKKyAgICAgICAgYXNzZXJ0KHZhbHVlLnJlc3VsdCA9
PT0gb3RoZXIpOworICAgIH0KK30pKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTA2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw1OCBAQAorMjAyMS0wNi0yMSAgQWxleGV5IFNodmF5a2EgIDxz
aHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gQ2FsbCBjdXN0b20gYWNjZXNz
b3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFsIG9iamVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTk3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBsaWtlIEpTIGJ1aWx0
LWlucywgZ2V0dGVyIC8gc2V0dGVyIGZ1bmN0aW9ucyBvZiBXZWJJREwgYXR0cmlidXRlcyBhcmUg
Y3JlYXRlZCBpbiByZWFsbQorICAgICAgICBvZiB0aGVpciBob2xkZXIgaW50ZXJmYWNlIFsxXVsy
XSwgd2hpY2ggaXMgdGhlaXIgX2N1cnJlbnRfIHJlYWxtIGZvciB0aHJvd2luZyBhbiBlcnJvciBb
M10uCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCBjdXN0b20gcHJvcGVydGllcyBnZXQgY29y
cmVjdCBnbG9iYWwgb2JqZWN0IGluc3RlYWQgb2YgbGV4aWNhbCwgaW5jbHVkaW5nCisgICAgICAg
IHdoZW4gaW5saW5lIGNhY2hlZCwgYWxpZ25pbmcgdGhlbSB3aXRoIGZ1bmN0aW9ucyBhbmQgcmVn
dWxhciBhY2Nlc3NvcnMuCisKKyAgICAgICAgVGhlIGxhdHRlciBhbGxvd2VkIEpTIGJ1aWx0LWlu
cyBsaWtlIFN5bWJvbCNkZXNjcmlwdGlvbiB0byBzd2l0Y2ggdG8gQ3VzdG9tQWNjZXNzb3IsIHdo
aWNoCisgICAgICAgIGlzIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50IHRvIGNhbGwgZnJvbSBDKyss
IGRvZXNuJ3QgbmVlZCByZWlmaWNhdGlvbiBvbiBmaXJzdCBhY2Nlc3MsIGFuZAorICAgICAgICBo
YXMgbmljZXIgc2lnbmF0dXJlLgorCisgICAgICAgIEFsc28sIHJlbmFtZXMgV0FTTSBhY2Nlc3Nv
cnMgdG8gZHJvcCAiZnVuYyIgYW5kIHJlbW92ZXMgdW51c2VkIGZ1bmN0aW9uIGxlbmd0aCBwYXJh
bWV0ZXIuCisKKyAgICAgICAgWzFdOiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNk
Zm4tYXR0cmlidXRlLWdldHRlciAoc3RlcCAyKQorICAgICAgICBbMl06IGh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtc2V0dGVyIChzdGVwIDUpCisgICAgICAg
IFszXTogaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZWNtYXNjcmlwdC10aHJvdwor
CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisgICAg
ICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElubGluZVNsb3cp
OgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnB1dEVudHJ5KToK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHA6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5U2xvdDo6Y3VzdG9tR2V0dGVyIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5
U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmdldFZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKEpTQzo6SlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorCiAyMDIxLTA2LTIw
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQWRk
IFZhbHVlT2YgZmFzdCBwYXRoIGluIHRvUHJpbWl0aXZlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvY3JlYXRlX2hhc2hfdGFibGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2NyZWF0ZV9oYXNoX3RhYmxlCShyZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUJKHdvcmtpbmcgY29weSkKQEAgLTk3LDggKzk3LDEw
IEBAIHdoaWxlICg8SU4+KSB7CiAgICAgICAgIH0gZWxzaWYgKCRhdHQgPX4gbS9BY2Nlc3Nvci8p
IHsKICAgICAgICAgICAgIG15ICRnZXQgPSAkdmFsOwogICAgICAgICAgICAgbXkgJHB1dCA9ICJu
dWxscHRyIjsKKyAgICAgICAgICAgICRhdHRyc1stMV0gPX4gcy9BY2Nlc3Nvci9DdXN0b21BY2Nl
c3Nvci87CisgICAgICAgICAgICAkYXR0cnNbLTFdIC49ICJ8UmVhZE9ubHkiOwogICAgICAgICAg
ICAgJGhhc1NldHRlciA9ICJ0cnVlIjsKLSAgICAgICAgICAgIHB1c2goQHZhbHVlcywgeyAidHlw
ZSIgPT4gIlByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciIsICJnZXQiID0+ICRnZXQsICJwdXQi
ID0+ICRwdXQgfSk7CisgICAgICAgICAgICBwdXNoKEB2YWx1ZXMsIHsgInR5cGUiID0+ICJQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHkiLCAiZ2V0IiA9PiAkZ2V0LCAicHV0IiA9PiAkcHV0IH0p
OwogICAgICAgICB9IGVsc2lmICgkYXR0ID1+IG0vQ2VsbFByb3BlcnR5LykgewogICAgICAgICAg
ICAgbXkgJHByb3BlcnR5ID0gJHZhbDsKICAgICAgICAgICAgIHB1c2goQHZhbHVlcywgeyAidHlw
ZSIgPT4gIlByb3BlcnR5QXR0cmlidXRlOjpDZWxsUHJvcGVydHkiLCAicHJvcGVydHkiID0+ICRw
cm9wZXJ0eSB9KTsKQEAgLTMxMCwxMSArMzEyLDYgQEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAg
ICAgICRmaXJzdFZhbHVlID0gJHZhbHVlc1skaV17ImZ1bmN0aW9uIn07CiAgICAgICAgICAgICAk
c2Vjb25kVmFsdWUgPSAkdmFsdWVzWyRpXXsicGFyYW1zIn07CiAgICAgICAgICAgICAkaW50cmlu
c2ljID0gJHZhbHVlc1skaV17ImludHJpbnNpYyJ9OwotICAgICAgICB9IGVsc2lmICgkdmFsdWVz
WyRpXXsidHlwZSJ9IGVxICJQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IiKSB7Ci0gICAgICAg
ICAgICAkZmlyc3RDYXN0U3RyID0gInN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPiI7Ci0g
ICAgICAgICAgICAkc2Vjb25kQ2FzdFN0ciA9ICJzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4iOwotICAgICAgICAgICAgJGZpcnN0VmFsdWUgPSAkdmFsdWVzWyRpXXsiZ2V0In07Ci0gICAg
ICAgICAgICAkc2Vjb25kVmFsdWUgPSAkdmFsdWVzWyRpXXsicHV0In07CiAgICAgICAgIH0gZWxz
aWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eSIp
IHsKICAgICAgICAgICAgICRmaXJzdENhc3RTdHIgPSAic3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+IjsKICAgICAgICAgICAgICRzZWNvbmRDYXN0U3RyID0gInN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPiI7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCShyZXZpc2lvbiAyNzkwNjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MTYsNyArMTQxNiw2IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KEFjY2Vzc0dlbmUKICAgICBDQ2FsbEhlbHBlcnMmIGppdCA9ICpzdGF0ZS5qaXQ7CiAgICAgVk0m
IHZtID0gc3RhdGUubV92bTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGppdC5jb2RlQmxv
Y2soKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUubV9nbG9iYWxP
YmplY3Q7CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBzdGF0ZS5tX2VjbWFNb2RlOwogICAgIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdGF0ZS5zdHViSW5mbzsKICAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MgPSBzdGF0ZS52YWx1ZVJlZ3M7CkBAIC0xNjE5LDYgKzE2MTgsOCBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBBU1NF
UlQoYmFzZUdQUiAhPSBsb2FkZWRWYWx1ZUdQUik7CiAgICAgICAgICAgICBBU1NFUlQobV90eXBl
ICE9IFNldHRlciB8fCB2YWx1ZVJlZ3NQYXlsb2FkR1BSICE9IGxvYWRlZFZhbHVlR1BSKTsKIAor
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLm1fZ2xvYmFs
T2JqZWN0OworCiAgICAgICAgICAgICAvLyBDcmVhdGUgYSBKUyBjYWxsIHVzaW5nIGEgSlMgY2Fs
bCBpbmxpbmUgY2FjaGUuIEFzc3VtZSB0aGF0OgogICAgICAgICAgICAgLy8KICAgICAgICAgICAg
IC8vIC0gU1AgaXMgYWxpZ25lZCBhbmQgcmVwcmVzZW50cyB0aGUgZXh0ZW50IG9mIHRoZSBjYWxs
aW5nIGNvbXBpbGVyJ3Mgc3RhY2sgdXNhZ2UuCkBAIC0xNzU0LDYgKzE3NTUsOCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBBU1NFUlQobV90
eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0b21BY2Nlc3NvckdldHRl
ciB8fCBtX3R5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbUFjY2Vz
c29yU2V0dGVyKTsKICAgICAgICAgICAgIEFTU0VSVCghZG9lc1Byb3BlcnR5U3RvcmFnZUxvYWRz
KTsgLy8gT3Igd2UgbmVlZCBhbiBleHRyYSByZWdpc3Rlci4gV2UgcmVseSBvbiBwcm9wZXJ0eU93
bmVyR1BSIGJlaW5nIGNvcnJlY3QgaGVyZS4KIAorICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGhhc0FsdGVybmF0ZUJhc2UoKSA/IGFsdGVybmF0ZUJhc2UoKS0+Z2xv
YmFsT2JqZWN0KHZtKSA6IHN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKTsKKwogICAgICAgICAg
ICAgLy8gTmVlZCB0byBtYWtlIHJvb20gZm9yIHRoZSBDIGNhbGwgc28gYW55IG9mIG91ciBzdGFj
ayBzcGlsbGFnZSBpc24ndCBvdmVyd3JpdHRlbi4gSXQncwogICAgICAgICAgICAgLy8gaGFyZCB0
byB0cmFjayBpZiBzb21lb25lIGRpZCBzcGlsbGFnZSBvciBub3QsIHNvIHdlIGp1c3QgYXNzdW1l
IHRoYXQgd2UgYWx3YXlzIG5lZWQKICAgICAgICAgICAgIC8vIHRvIG1ha2Ugc29tZSBzcGFjZSBo
ZXJlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZS5jcHAJKHJldmlzaW9uIDI3OTA2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNiArMjQ0LDQxIEBA
IFNvdXJjZU9yaWdpbiBDYWxsRnJhbWU6OmNhbGxlclNvdXJjZU9yaWcKICAgICByZXR1cm4gc291
cmNlT3JpZ2luOwogfQogCitKU0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjpjYWxsZXJMZXhpY2Fs
R2xvYmFsT2JqZWN0KFZNJiB2bSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChjYWxsZWUoKS5pc0Nl
bGwoKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG51bGxwdHI7CisgICAg
Ym9vbCBoYXZlU2tpcHBlZEZpcnN0RnJhbWUgPSB0cnVlOworICAgIFN0YWNrVmlzaXRvcjo6dmlz
aXQodGhpcywgdm0sIFsmXShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIHsKKyAgICAgICAgaWYgKCFz
dGQ6OmV4Y2hhbmdlKGhhdmVTa2lwcGVkRmlyc3RGcmFtZSwgdHJ1ZSkpCisgICAgICAgICAgICBy
ZXR1cm4gU3RhY2tWaXNpdG9yOjpTdGF0dXM6OkNvbnRpbnVlOworCisgICAgICAgIHN3aXRjaCAo
dmlzaXRvci0+Y29kZVR5cGUoKSkgeworICAgICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6
OkNvZGVUeXBlOjpGdW5jdGlvbjoKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxGdW5jdGlv
bkV4ZWN1dGFibGUqPih2aXNpdG9yLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpLT5p
c0J1aWx0aW5GdW5jdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6
OlN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKworICAgICAgICBj
YXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkNvZGVUeXBlOjpFdmFsOgorICAgICAgICBjYXNlIFN0
YWNrVmlzaXRvcjo6RnJhbWU6OkNvZGVUeXBlOjpNb2R1bGU6CisgICAgICAgIGNhc2UgU3RhY2tW
aXNpdG9yOjpGcmFtZTo6Q29kZVR5cGU6Okdsb2JhbDoKKyAgICAgICAgY2FzZSBTdGFja1Zpc2l0
b3I6OkZyYW1lOjpDb2RlVHlwZTo6V2FzbToKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IHZp
c2l0b3ItPmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIHJldHVybiBT
dGFja1Zpc2l0b3I6OlN0YXR1czo6RG9uZTsKKworICAgICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6
RnJhbWU6OkNvZGVUeXBlOjpOYXRpdmU6CisgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpTdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVzOjpEb25l
OworICAgIH0pOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICBnbG9iYWxPYmplY3Qg
PSB2bS5kZXByZWNhdGVkVk1FbnRyeUdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpOworICAgIEFT
U0VSVChnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBnbG9iYWxPYmplY3Q7Cit9CisKIFN0cmlu
ZyBDYWxsRnJhbWU6OmZyaWVuZGx5RnVuY3Rpb25OYW1lKCkKIHsKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMjc5MDY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDYsNiArMTQ2LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKEVudHJ5RnJhbWUqJikgY29uc3Q7CiAKICAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgU291cmNlT3JpZ2luIGNhbGxlclNvdXJjZU9yaWdpbihWTSYp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0dsb2JhbE9iamVjdCogY2FsbGVyTGV4aWNh
bEdsb2JhbE9iamVjdChWTSYpOwogCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgY2FsbGVyRnJh
bWVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbGVyRnJhbWVBbmRQQywgY2Fs
bGVyRnJhbWUpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5MDY2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVy
Q29tcGFyZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsQ29sbGF0b3JQ
cm90b3R5cGVHZXR0ZXJDb21wYXJlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOwogCkBAIC0xMDUs
MTQgKzEwNSwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yRnVuCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNv
bXBhcmVTdHJpbmdzKGdsb2JhbE9iamVjdCwgeFZpZXdXaXRoU3RyaW5nLnZpZXcsIHlWaWV3V2l0
aFN0cmluZy52aWV3KSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bENvbGxh
dG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsQ29s
bGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICAvLyAxMC4zLjMgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFy
ZSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0aGlzIENvbGxhdG9y
IG9iamVjdC4KLSAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRs
Q29sbGF0b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSW50bENvbGxhdG9y
KiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWNvbGxhdG9yKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkNv
bGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9i
amVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIl9zKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5MDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZUdldHRlckZvcm1hdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJh
bmdlVG9QYXJ0cyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyk7CkBAIC0xMTMsMTQgKzExMywxNCBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9yCiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEyLjMuMyBJbnRsLkRhdGVUaW1lRm9ybWF0LnBy
b3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgZHRmIGJlIHRoaXMg
RGF0ZVRpbWVGb3JtYXQgb2JqZWN0LgotICAgIGF1dG8qIGR0ZiA9IEludGxEYXRlVGltZUZvcm1h
dDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgYXV0byogZHRmID0gSW50bERhdGVUaW1lRm9ybWF0Ojp1bndyYXBGb3JPbGRG
dW5jdGlvbnMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAvLyAyLiBSZXR1cm5JZkFicnVw
dChkdGYpLgogICAgIGlmIChVTkxJS0VMWSghZHRmKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyNzkwNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTYgKzM0LDE2IEBAIG5hbWVzcGFjZSBK
U0Mgewogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlw
ZUZ1bmNNYXhpbWl6ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9j
YWxlUHJvdG90eXBlRnVuY01pbmltaXplKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKEludGxMb2NhbGVQcm90b3R5cGVGdW5jVG9TdHJpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lKTsKLXN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxl
bmRhcik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyQ2FzZUZpcnN0KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24pOwotc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSk7Ci1zdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJp
Yyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBl
R2V0dGVyTnVtYmVyaW5nU3lzdGVtKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0KTsKLXN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24p
Oworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckJhc2VOYW1lKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2Nh
bGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0KTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24pOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckhvdXJDeWNsZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVyTnVtZXJpYyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
UihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyU2NyaXB0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJSZWdpb24pOwogCiB9CiAKQEAgLTE0MiwxMiArMTQyLDEyIEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5
LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuYmFzZU5hbWUKLUpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBq
c0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cisg
ICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlw
ZS5iYXNlTmFtZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6
ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0xNTYsMTIgKzE1NiwxMiBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFyCi1KU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWlj
Q2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8q
IGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FsZW5k
YXIgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
TG9jYWxlIl9zKTsKIApAQCAtMTcwLDEyICsxNzAsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2Vj
LUludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8
SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2Nh
bGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhc2VGaXJzdCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2Nh
bGUiX3MpOwogCkBAIC0xODQsMTIgKzE4NCwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
SW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50
bC5Mb2NhbGUucHJvdG90eXBlLmNvbGxhdGlvbgotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
SW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRs
TG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9
IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY29sbGF0aW9uIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJf
cyk7CiAKQEAgLTE5OCwxMiArMTk4LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRs
TG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxv
Y2FsZS5wcm90b3R5cGUuaG91ckN5Y2xlCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2Nh
bGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNE
eW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5ob3VyQ3ljbGUgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsK
IApAQCAtMjEyLDEyICsyMTIsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2Nh
bGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxl
LnByb3RvdHlwZS5udW1lcmljCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0
PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICgh
bG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWVyaWMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMjI1LDEy
ICsyMjUsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQog
CiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5u
dW1iZXJpbmdTeXN0ZW0KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2Nh
bGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExv
Y2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBq
c0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbSBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2Nh
bGUiX3MpOwogCkBAIC0yMzksMTIgKzIzOSwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
SW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50
bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1YWdlCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50
bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9j
YWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpz
RHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubGFuZ3VhZ2UgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsK
IApAQCAtMjUzLDEyICsyNTMsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2Nh
bGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxl
LnByb3RvdHlwZS5zY3JpcHQKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyU2NyaXB0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJTY3JpcHQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PElu
dGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9j
YWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnNjcmlwdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0yNjcsMTIgKzI2
NywxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8v
IGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLnJlZ2lv
bgotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdp
b24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lv
biwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9j
YWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5w
cm90b3R5cGUucmVnaW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jRm9ybWF0VG9QYXJ0cyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdCk7CkBAIC0xMDgs
MTQgKzEwOCwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bE51bWJlckZvcm1hCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmpl
Y3QsIHZhbHVlKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIC8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
Zm9ybWF0IChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IG5mIGJlIHRoaXMgTnVtYmVyRm9y
bWF0IG9iamVjdC4KLSAgICBhdXRvKiBuZiA9IEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9s
ZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1
dG8qIG5mID0gSW50bE51bWJlckZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9i
amVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKFVOTElLRUxZKCFuZikpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
TnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Il9zKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjc5MDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDkgKzgzLDkgQEAg
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZQogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0KTsKIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9GdW5jU2V0QmlnSW50NjQpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0Z1bmNTZXRCaWdV
aW50NjQpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dl
dHRlckJ1ZmZlcik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1By
b3RvR2V0dGVyQnl0ZUxlbmd0aCk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihk
YXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KTsKIAog
fQogCkBAIC0yMjMsMjQgKzIyMywyNCBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFs
T2JqZWN0KiBnCiAKIElHTk9SRV9DTEFOR19XQVJOSU5HU19CRUdJTigibWlzc2luZy1wcm90b3R5
cGVzIikKIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZm
ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlciwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmlldyogdmll
dyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRhVmlldy5wcm90
b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh2aWV3LT5wb3Nz
aWJseVNoYXJlZEpTQnVmZmVyKGdsb2JhbE9iamVjdCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2Fz
dDxKU0RhdGFWaWV3Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTRGF0YVZp
ZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5ieXRlTGVuZ3Ro
IGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAgICAgaWYgKHZpZXct
PmlzRGV0YWNoZWQoKSkKQEAgLTI0OSwxMiArMjQ5LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihkYXRhVmlld1Byb3RvR2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHZpZXctPmxlbmd0aCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmll
d1Byb3RvR2V0dGVyQnl0ZU9mZnNldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1By
b3RvR2V0dGVyQnl0ZU9mZnNldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5h
bWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnl0ZU9mZnNldCBleHBlY3RzIHx0aGlzfCB0
byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogICAgIGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lv
biAyNzkwNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc2MCw2ICs3NjAsNTIgQEAgYm9vbCBKU09iamVjdDo6cHV0KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYQogICAgIHJldHVybiBwdXRJbmxpbmVGb3JKU09iamVjdChjZWxs
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCitzdHJ1Y3Qg
UHJvcGVydHlGb3JQdXQgeworICAgIGNvbnN0IHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgY29u
c3QgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIGNvbnN0IFB1dFZhbHVlRnVuYyBjdXN0b21T
ZXR0ZXI7Cit9OworCitzdGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFByb3BlcnR5
Rm9yUHV0PiBsb29rdXBQcm9wZXJ0eUZvclB1dChWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgUHV0VmFsdWVGdW5jIGN1c3RvbVNldHRlciA9IG51bGxwdHI7
CisgICAgYXV0byBnZXRGcm9tU3RydWN0dXJlID0gWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkg
LT4gc3RkOjpvcHRpb25hbDxQcm9wZXJ0eUZvclB1dD4geworICAgICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2
bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAo
YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpCisg
ICAgICAgICAgICBjdXN0b21TZXR0ZXIgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4ob2Jq
ZWN0LT5nZXREaXJlY3Qob2Zmc2V0KSktPnNldHRlcigpOworICAgICAgICByZXR1cm4gUHJvcGVy
dHlGb3JQdXQgeyBhdHRyaWJ1dGVzLCBvZmZzZXQsIGN1c3RvbVNldHRlciB9OworICAgIH07CisK
KyAgICBpZiAoYXV0byBwcm9wZXJ0eSA9IGdldEZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKSkKKyAg
ICAgICAgcmV0dXJuIHByb3BlcnR5OworCisgICAgaWYgKHN0cnVjdHVyZS0+aGFzTm9uUmVpZmll
ZFN0YXRpY1Byb3BlcnRpZXMoKSkgeworICAgICAgICBpZiAoYXV0byBlbnRyeSA9IHN0cnVjdHVy
ZS0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXMgPSBlbnRyeS0+dmFsdWUtPmF0dHJpYnV0ZXMoKTsKKyAgICAgICAg
ICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KQorICAgICAg
ICAgICAgICAgIHJldHVybiBQcm9wZXJ0eUZvclB1dCB7IGF0dHJpYnV0ZXMsIGludmFsaWRPZmZz
ZXQsIG51bGxwdHIgfTsKKworICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0
dHJpYnV0ZTo6QWNjZXNzb3IpIHsKKyAgICAgICAgICAgICAgICBzbG90LmRpc2FibGVDYWNoaW5n
KCk7CisgICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgZW50cnktPnRhYmxl
LT5jbGFzc0ZvclRoaXMsIHByb3BlcnR5TmFtZSwgKmVudHJ5LT52YWx1ZSwgKm9iamVjdCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGdldEZyb21TdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IGFmdGVyIHdlIHN0b3AgZGVmYXVsdGluZyB0byBDdXN0b21WYWx1ZSBpbiBzdGF0aWMgaGFzaCB0
YWJsZXMuCisgICAgICAgICAgICBpZiAoIShhdHRyaWJ1dGVzICYgKFByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluT3JGdW5jdGlvbk9y
QWNjZXNzb3JPckxhenlQcm9wZXJ0eU9yQ29uc3RhbnQpKSkKKyAgICAgICAgICAgICAgICBhdHRy
aWJ1dGVzIHw9IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZTsKKyAgICAgICAgICAgIGlm
IChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkK
KyAgICAgICAgICAgICAgICBjdXN0b21TZXR0ZXIgPSBlbnRyeS0+dmFsdWUtPnByb3BlcnR5UHV0
dGVyKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlGb3JQdXQgeyBhdHRyaWJ1dGVzLCBp
bnZhbGlkT2Zmc2V0LCBjdXN0b21TZXR0ZXIgfTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCghcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpKTsKQEAgLTc3OCwzNSArODI0LDEyIEBAIGJvb2wgSlNPYmplY3Q6
OnB1dElubGluZVNsb3coSlNHbG9iYWxPYmoKICAgICAgICAgaWYgKG9iaiAhPSB0aGlzICYmIHN0
cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNQdXQoKSkKICAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgb2JqLT5tZXRob2RUYWJsZSh2bSktPnB1dChvYmosIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogCi0gICAgICAgIGJvb2wgaGFzUHJv
cGVydHkgPSBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAgUHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgY3VzdG9tU2V0dGVyID0gbnVsbHB0cjsKLSAgICAg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcyk7Ci0gICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAg
ICAgICAgICAgIGhhc1Byb3BlcnR5ID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVz
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkKLSAgICAgICAgICAg
ICAgICBjdXN0b21TZXR0ZXIgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4ob2JqLT5nZXRE
aXJlY3Qob2Zmc2V0KSktPnNldHRlcigpOwotICAgICAgICB9IGVsc2UgaWYgKHN0cnVjdHVyZS0+
aGFzTm9uUmVpZmllZFN0YXRpY1Byb3BlcnRpZXMoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8g
ZW50cnkgPSBzdHJ1Y3R1cmUtPmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShwcm9wZXJ0eU5hbWUpKSB7
Ci0gICAgICAgICAgICAgICAgaGFzUHJvcGVydHkgPSB0cnVlOwotICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZXMgPSBlbnRyeS0+dmFsdWUtPmF0dHJpYnV0ZXMoKTsKLQotICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhZnRlciB3cml0YWJsZSBhY2Nlc3NvcnMgYXJlIGludHJv
ZHVjZWQgdG8gc3RhdGljIGhhc2ggdGFibGVzLgotICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1
dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKQotICAgICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGVzIHw9IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seTsKLSAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgd2Ugc3RvcCBkZWZhdWx0aW5nIHRvIEN1c3Rv
bVZhbHVlIGluIHN0YXRpYyBoYXNoIHRhYmxlcy4KLSAgICAgICAgICAgICAgICBpZiAoIShhdHRy
aWJ1dGVzICYgKFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IFByb3BlcnR5QXR0
cmlidXRlOjpCdWlsdGluT3JGdW5jdGlvbk9yQWNjZXNzb3JPckxhenlQcm9wZXJ0eU9yQ29uc3Rh
bnQpKSkKLSAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tVmFsdWU7Ci0KLSAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpCi0gICAgICAgICAgICAgICAgICAg
IGN1c3RvbVNldHRlciA9IGVudHJ5LT52YWx1ZS0+cHJvcGVydHlQdXR0ZXIoKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoYXNQcm9wZXJ0eSkgeworICAgICAgICBp
ZiAoYXV0byBwcm9wZXJ0eSA9IGxvb2t1cFByb3BlcnR5Rm9yUHV0KHZtLCBvYmosIHN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRl
cyA9IHByb3BlcnR5LT5hdHRyaWJ1dGVzOwogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5
QXR0cmlidXRlOjpBY2Nlc3NvcikgeworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHByb3BlcnR5LT5vZmZzZXQ7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRP
ZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUg
dGhhdCB3ZSBkZWNpZGUgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eSBiZWZvcmUgd2UgcG90ZW50aWFs
bHkgZXhlY3V0ZSBhcmliaXRyYXJ5IEpTLgogICAgICAgICAgICAgICAgIGlmICghdGhpcy0+c3Ry
dWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKQEAgLTgxNCwxOCArODM3LDE3
IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coSlNHbG9iYWxPYmoKICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihvYmot
PmdldERpcmVjdChvZmZzZXQpKS0+Y2FsbFNldHRlcihnbG9iYWxPYmplY3QsIHNsb3QudGhpc1Zh
bHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
cikgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhZnRlciBXZWJJREwg
Z2VuZXJhdG9yIGlzIGZpeGVkIHRvIHNldCBSZWFkT25seSBmb3IgW1J1bnRpbWVDb25kaXRpb25h
bGx5UmVhZFdyaXRlXSBhdHRyaWJ1dGVzLgotICAgICAgICAgICAgICAgIGlmICghY3VzdG9tU2V0
dGVyKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
UHV0VmFsdWVGdW5jIGN1c3RvbVNldHRlciA9IHByb3BlcnR5LT5jdXN0b21TZXR0ZXI7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGN1c3RvbVNldHRlcik7CiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYgd2UncmUgbm90IGFuIHVuY2Fj
aGVhYmxlIGRpY3Rpb25hcnk6CiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTM0NwogICAgICAgICAgICAgICAgIHNsb3Quc2V0Q3Vz
dG9tQWNjZXNzb3Iob2JqLCBjdXN0b21TZXR0ZXIpOwogICAgICAgICAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgICAgICAgICBjdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjplbmNvZGUoc2xvdC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgY3VzdG9tU2V0dGVyKG9iai0+Z2xvYmFsT2Jq
ZWN0KHZtKSwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3QudGhpc1ZhbHVlKCkpLCBKU1ZhbHVlOjplbmNv
ZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBQdXRWYWx1ZUZ1bmMgY3VzdG9t
U2V0dGVyID0gcHJvcGVydHktPmN1c3RvbVNldHRlcjsKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogT25jZSBsZWdhY3kgUmVnRXhwIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZCwgdGhlcmUgd291
bGQgYmUgbm8gdXNlIGNhc2UgZm9yIGNhbGxpbmcgQ3VzdG9tVmFsdWUgc2V0dGVyIGlmIHJlY2Vp
dmVyIGlzIGFsdGVyZWQuCiAgICAgICAgICAgICAgICAgaWYgKGN1c3RvbVNldHRlciAmJiAhKGlz
VGhpc1ZhbHVlQWx0ZXJlZChzbG90LCBvYmopICYmIHNsb3QuY29udGV4dCgpID09IFB1dFByb3Bl
cnR5U2xvdDo6UmVmbGVjdFNldCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYgd2UncmUgbm90IGFuIHVuY2FjaGVhYmxl
IGRpY3Rpb25hcnk6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5j
cHAJKHJldmlzaW9uIDI3OTA2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDE4IEBAIHZvaWQgcmVpZnlTdGF0
aWNBY2Nlc3NvcihWTSYgdm0sIGNvbnN0IEgKICAgICAgICAgICAgIGdldHRlciA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCBnZXR0ZXJOYW1lLCB2YWx1ZS5hY2Nlc3Nv
ckdldHRlcigpKTsKICAgICAgICAgfQogICAgIH0KLSAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29y
ID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBudWxscHRy
KTsKKyAgICBKU09iamVjdCogc2V0dGVyID0gbnVsbHB0cjsKKyAgICBpZiAodmFsdWUuYWNjZXNz
b3JTZXR0ZXIoKSkgeworICAgICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgUHJvcGVydHlB
dHRyaWJ1dGU6OkJ1aWx0aW4pCisgICAgICAgICAgICBzZXR0ZXIgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHZhbHVlLmJ1aWx0aW5BY2Nlc3NvclNldHRlckdlbmVyYXRvcigpKHZtKSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgc2V0dGVyTmFtZSA9
IHRyeU1ha2VTdHJpbmcoInNldCAiX3MsIFN0cmluZygqcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSkpOworICAgICAgICAgICAgaWYgKCFzZXR0ZXJOYW1lKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIHNldHRlciA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAxLCBzZXR0ZXJOYW1lLCB2YWx1ZS5hY2Nlc3NvclNldHRlcigpKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBzZXR0ZXIpOwogICAgIHRoaXNPYmplY3QucHV0RGly
ZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgcHJvcGVydHlOYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCShyZXZpc2lvbiAyNzkw
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTIgQEAgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmZ1
bmN0aW9uR2V0dGVyKEpTRwogICAgIHJldHVybiBtX2RhdGEuZ2V0dGVyLmdldHRlclNldHRlci0+
Y2FsbEdldHRlcihnbG9iYWxPYmplY3QsIG1fdGhpc1ZhbHVlKTsKIH0KIAotSlNWYWx1ZSBQcm9w
ZXJ0eVNsb3Q6OmN1c3RvbUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAorSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmN1c3Rv
bUdldHRlcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CisgICAg
QVNTRVJUKG1fc2xvdEJhc2UpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X3Nsb3RCYXNlLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gbV9h
dHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yID8gbV90aGlzVmFs
dWUgOiBKU1ZhbHVlKHNsb3RCYXNlKCkpOwogICAgIGlmIChhdXRvIGRvbUF0dHJpYnV0ZSA9IHRo
aXMtPmRvbUF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHModm0sIGRvbUF0dHJpYnV0ZS0+Y2xh
c3NJbmZvKSkgewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgICAgICAgICAgcmV0dXJuIHRocm93RE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGRvbUF0dHJpYnV0ZS0+Y2xhc3NJbmZvLCBwcm9wZXJ0eU5h
bWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgJKHJldmlzaW9uIDI3OTA2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIo
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGN1
c3RvbUdldHRlcihKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjdXN0b21HZXR0ZXIoVk0mLCBQcm9wZXJ0eU5hbWUpIGNv
bnN0OwogCiAgICAgdW5pb24gewogICAgICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZTsKQEAgLTQw
NSw3ICs0MDUsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90OjpnZXRWCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLnZhbHVlKTsKICAgICBpZiAobV9w
cm9wZXJ0eVR5cGUgPT0gVHlwZUdldHRlcikKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uR2V0dGVy
KGdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIGN1c3RvbUdldHRlcihnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIGN1c3RvbUdldHRlcihnZXRWTShnbG9iYWxPYmplY3Qp
LCBwcm9wZXJ0eU5hbWUpOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90
OjpnZXRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBwcm9wZXJ0
eU5hbWUpIGNvbnN0CkBAIC00MTUsNyArNDE1LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIFBy
b3BlcnR5U2xvdDo6Z2V0VgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS52
YWx1ZSk7CiAgICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVHZXR0ZXIpCiAgICAgICAgIHJl
dHVybiBmdW5jdGlvbkdldHRlcihnbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBjdXN0b21HZXR0
ZXIoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAg
ICByZXR1cm4gY3VzdG9tR2V0dGVyKGdldFZNKGdsb2JhbE9iamVjdCksIElkZW50aWZpZXI6OmZy
b20odm0sIHByb3BlcnR5TmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAko
cmV2aXNpb24gMjc5MDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9H
ZXR0ZXJEZXNjcmlwdGlvbik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihzeW1i
b2xQcm90b0dldHRlckRlc2NyaXB0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHN5bWJvbFByb3RvRnVuY1RvU3RyaW5nKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YpOwogCkBAIC04NywxMiArODcsMTIgQEAgaW5s
aW5lIFN5bWJvbCogdHJ5RXh0cmFjdFN5bWJvbChWTSYgdm0sIAogICAgIHJldHVybiBhc1N5bWJv
bChqc0Nhc3Q8U3ltYm9sT2JqZWN0Kj4odGhpc09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiB9
CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9u
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24sIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN5bWJvbCogc3ltYm9s
ID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgU3lt
Ym9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKCFzeW1ib2wpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIFN5bWJvbERlc2NyaXB0aW9uVHlwZUVycm9yKTsKICAgICBz
Y29wZS5yZWxlYXNlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwCShyZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTEsNyArMTU5MSw5IEBAIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGN1c3RvbUcKIHN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGN1c3RvbUdldEFjY2Vzc29yR2xvYmFsT2JqZWN0KTsKIHN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGN1c3RvbUdldFZhbHVlR2xvYmFsT2JqZWN0KTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldEFjY2Vzc29yKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldFZhbHVlKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKGN1c3RvbUZ1bmN0aW9uU2V0dGVy
KTsKIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGN1c3RvbUdldEFjY2Vzc29yLCAoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCkBAIC0x
NjMzLDYgKzE2MzUsMjIgQEAgSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldEFjY2Vz
cwogICAgIHJldHVybiB0cnVlOwogfQogCitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9t
U2V0QWNjZXNzb3JHbG9iYWxPYmplY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIG9iamVjdC0+cHV0KG9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdWx0IiksIGdsb2Jh
bE9iamVjdCwgc2xvdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKGN1c3RvbVNldFZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgc2xvdFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAg
LTE2NTEsNiArMTY2OSwyNCBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0VmFs
dWUsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjdXN0
b21TZXRWYWx1ZUdsb2JhbE9iamVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHNsb3RWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1
ZTo6ZGVjb2RlKHNsb3RWYWx1ZSkuaW5oZXJpdHM8SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyPihn
bG9iYWxPYmplY3QtPnZtKCkpKTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Cisg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBvYmplY3QtPnB1dChvYmplY3Qs
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3VsdCIpLCBnbG9i
YWxPYmplY3QsIHNsb3QpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIEpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihjdXN0b21GdW5jdGlvblNldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAgLTE2
NzgsOSArMTcxNCwxMyBAQCB2b2lkIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcjo6ZmluaXNoQ3Jl
CiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJjdXN0b21BY2Nlc3NvciIpLAogICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3IsIGN1c3RvbVNldEFjY2Vzc29yKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikpOwogICAgIHB1dERp
cmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9t
VmFsdWVHbG9iYWxPYmplY3QiKSwKLSAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGN1c3RvbUdldFZhbHVlR2xvYmFsT2JqZWN0LCBudWxscHRyKSwgMCk7CisgICAgICAgIEN1
c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRWYWx1ZUdsb2JhbE9iamVjdCwg
Y3VzdG9tU2V0VmFsdWVHbG9iYWxPYmplY3QpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlKSk7CiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Io
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21BY2Nlc3Nvckdsb2JhbE9iamVj
dCIpLAotICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNj
ZXNzb3JHbG9iYWxPYmplY3QsIG51bGxwdHIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpOworICAgICAgICBDdXN0b21HZXR0
ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3JHbG9iYWxPYmplY3QsIGN1c3Rv
bVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikpOworICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29y
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tVmFsdWVOb1NldHRlciIpLAor
ICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0VmFsdWUsIG51
bGxwdHIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZh
bHVlKSk7CisgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjdXN0b21BY2Nlc3NvclJlYWRPbmx5IiksCisgICAgICAgIEN1c3RvbUdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3NvciwgbnVsbHB0ciksIFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CiAKICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImN1c3RvbUZ1bmN0aW9uIiksCiAgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCBjdXN0b21HZXRBY2Nlc3NvciwgY3VzdG9tRnVuY3Rpb25TZXR0ZXIpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5MDY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0dldHRlckV4
cG9ydHMpOwogfQogCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5sdXQu
aCIKQEAgLTQ2LDcgKzQ2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5SW5zdGFuY2VQ
cm90bwogCiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmgK
ICBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseUluc3RhbmNlCi0gZXhwb3J0cyB3ZWJB
c3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhwb3J0cyBBY2Nlc3NvciAwCisgZXhwb3J0cyB3ZWJB
c3NlbWJseUluc3RhbmNlUHJvdG9HZXR0ZXJFeHBvcnRzIEFjY2Vzc29yCiAgQGVuZAogICovCiAK
QEAgLTYyLDEyICs2MiwxMiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5SW5z
dGFuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0dldHRlckV4cG9ydHMsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBp
bnN0YW5jZSA9IGdldEluc3RhbmNlKGdsb2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOyAKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gZ2V0SW5zdGFu
Y2UoZ2xvYmFsT2JqZWN0LCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNlLT5tb2R1bGVSZWNvcmQoKS0+
ZXhwb3J0c09iamVjdCgpKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1lbW9yeVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3Nl
bWJseU1lbW9yeVByb3RvRnVuY0dyb3cpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04od2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlNZW1vcnlQcm90b0dldHRlckJ1ZmZlcik7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY1R5
cGUpOwogfQogCkBAIC01Myw3ICs1Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseU1l
bW9yeVByb3RvdHkKIC8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0
LmgKIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5TWVtb3J5CiAgZ3JvdyAgIHdlYkFz
c2VtYmx5TWVtb3J5UHJvdG9GdW5jR3JvdyAgIEZ1bmN0aW9uIDEKLSBidWZmZXIgd2ViQXNzZW1i
bHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIgQWNjZXNzb3IgMAorIGJ1ZmZlciB3ZWJBc3NlbWJseU1l
bW9yeVByb3RvR2V0dGVyQnVmZmVyIEFjY2Vzc29yCiAgdHlwZSAgIHdlYkFzc2VtYmx5TWVtb3J5
UHJvdG9GdW5jVHlwZSAgIEZ1bmN0aW9uIDAKIEBlbmQKICovCkBAIC04OCwxMiArODgsMTIgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtbwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0LnBhZ2VDb3VudCgpKSk7CiB9CiAKLUpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlciwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJseU1lbW9yeVByb3RvR2V0dGVyQnVmZmVyLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1i
bHlNZW1vcnkqIG1lbW9yeSA9IGdldE1lbW9yeShnbG9iYWxPYmplY3QsIHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsgCisgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0gZ2V0TWVt
b3J5KGdsb2JhbE9iamVjdCwgdm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsgCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUobWVtb3J5LT5idWZmZXIoZ2xvYmFsT2Jq
ZWN0KSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTA2NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgpOworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlUYWJsZVByb3RvR2V0dGVyTGVuZ3RoKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1
bmNHcm93KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFi
bGVQcm90b0Z1bmNHZXQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNz
ZW1ibHlUYWJsZVByb3RvRnVuY1NldCk7CkBAIC01Miw3ICs1Miw3IEBAIGNvbnN0IENsYXNzSW5m
byBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXAKIAogLyogU291cmNlIGZvciBXZWJBc3NlbWJseVRh
YmxlUHJvdG90eXBlLmx1dC5oCiAgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlUYWJs
ZQotIGxlbmd0aCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoIEFjY2Vzc29yIDAKKyBs
ZW5ndGggd2ViQXNzZW1ibHlUYWJsZVByb3RvR2V0dGVyTGVuZ3RoIEFjY2Vzc29yCiAgZ3JvdyAg
IHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93ICAgRnVuY3Rpb24gMQogIGdldCAgICB3ZWJB
c3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0ICAgIEZ1bmN0aW9uIDEKICBzZXQgICAgd2ViQXNzZW1i
bHlUYWJsZVByb3RvRnVuY1NldCAgICBGdW5jdGlvbiAyCkBAIC03MiwxMiArNzIsMTIgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseVRhYmxlKgogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5j
TGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHdlYkFzc2VtYmx5VGFibGVQcm90b0dldHRl
ckxlbmd0aCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZ2xvYmFsT2JqZWN0LCB2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9
IGdldFRhYmxlKGdsb2JhbE9iamVjdCwgdm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGFibGUtPmxlbmd0aCgpKSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0wNi0yMSAgQWxleGV5
IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gQ2FsbCBj
dXN0b20gYWNjZXNzb3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFsIG9iamVj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTk3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBmaXhlcyBjcm9zcy1yZWFsbSBXZWJJREwgZ2V0dGVycyAvIHNldHRlcnMgdG8gdXNlIGNv
cnJlY3QgKHRoZWlyKSByZWFsbQorICAgICAgICBmb3IgaW1wbGljaXQgfHRoaXN8IHZhbHVlIGFu
ZCBUeXBlRXJyb3IgWzFdWzJdLCBhbGlnbmluZyBhdHRyaWJ1dGVzIHdpdGggb3BlcmF0aW9ucwor
ICAgICAgICBhbmQgV2ViS2l0IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAg
IEFsc28sIGVuYWJsZXMgZnV0dXJlIHJlbW92YWwgb2YgTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVy
dE5lZWRzR2xvYmFsT2JqZWN0LgorCisgICAgICAgIFsxXSBodHRwczovL2hleWNhbS5naXRodWIu
aW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLWdldHRlciAoc3RlcCAxLjEuMi4xKQorICAgICAgICBb
Ml0gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1zZXR0ZXIg
KHN0ZXAgNC4xKQorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlz
LXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFs
dWUtY3Jvc3MtcmVhbG0uaHRtbAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisKIDIwMjEtMDYtMjEgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSByZWR1bmRhbnQgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91
dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQ
YWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc5MDY2KQorKysgU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50Q3Vz
dG9tLmgKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgKICAgICBiaW5kaW5n
cy9qcy9KU0V4ZWNTdGF0ZS5oCisgICAgYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5oCiAg
ICAgYmluZGluZ3MvanMvSlNNZWRpYUxpc3RDdXN0b20uaAogICAgIGJpbmRpbmdzL2pzL0pTTm9k
ZUN1c3RvbS5oCiAgICAgYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MDAsNiArMjcwMCw3IEBACiAJCTg0QzVCMkZC
MTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEM1QjJGOTEyMTZEQzgx
MDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oICovOyB9OwogCQk4NEM2
Nzg0RDEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QzY3ODRCMTIxNDgxNDcwMEE5MjkwMiAv
KiBTVkdQYXRoQmxlbmRlci5oICovOyB9OwogCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyog
QWZmaW5lVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NEQwQzQwNTExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODRFN0VDMzQy
NjgwRkEzQTAwQjlDMDIyIC8qIEpTTG9jYXRpb25DdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0RTdFQzMzMjY4MEZBMkUwMEI5QzAyMiAvKiBK
U0xvY2F0aW9uQ3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODUwMzFCM0QwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTAzMUIy
NzBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZlbnQuaCAqLzsgfTsKIAkJODUwMzFC
M0UwQTQ0RUZDNzAwRjk5MkUwIC8qIERhdGFUcmFuc2Zlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMzFCMjgwQTQ0RUZDNzAwRjk5MkUwIC8qIERh
dGFUcmFuc2Zlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg1MDMxQjQwMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlwYm9hcmRFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMzFCMkEwQTQ0RUZD
NzAwRjk5MkUwIC8qIENsaXBib2FyZEV2ZW50LmggKi87IH07CkBAIC0xMTM3MSw2ICsxMTM3Miw3
IEBACiAJCTg0RDBDNDAzMTExNUYxRDQwMDE4QUEzNCAvKiBBZmZpbmVUcmFuc2Zvcm0uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWZmaW5lVHJhbnNmb3JtLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODREMEM0MDUxMTE1RjFFQTAwMThBQTM0IC8q
IEFmZmluZVRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZmZp
bmVUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODREOUExNUYyNjAy
REQ0MDAwOEQ2RDVBIC8qIEpTRE9NQ29uc3RydWN0b3JOb3RDYWxsYWJsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNvbnN0cnVjdG9yTm90Q2FsbGFibGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODRFN0VDMzMyNjgwRkEyRTAwQjlDMDIyIC8qIEpT
TG9jYXRpb25DdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNMb2NhdGlvbkN1c3RvbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTAzMUIyNjBBNDRFRkM3MDBGOTkyRTAgLyogQmVm
b3JlVW5sb2FkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJlZm9yZVVubG9hZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUw
MzFCMjcwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCZWZvcmVVbmxvYWRFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NTAzMUIyODBBNDRFRkM3MDBGOTkyRTAgLyogRGF0YVRyYW5zZmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhVHJhbnNmZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NTk0LDYgKzI3NTk2LDcgQEAKIAkJCQk2NTJG
QkJCQjBERTI3Q0I2MDAwMUQzODYgLyogSlNET01XaW5kb3dDdXN0b20uaCAqLywKIAkJCQlCQzU4
MjNGNDBDMEE5OERGMDA1M0YxQjUgLyogSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJ
QkNFMUM0M0YwRDk4MzBGNDAwM0IwMkYyIC8qIEpTTG9jYXRpb25DdXN0b20uY3BwICovLAorCQkJ
CTg0RTdFQzMzMjY4MEZBMkUwMEI5QzAyMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmggKi8sCiAJCQkJ
NEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0
b20uY3BwICovLAogCQkJCTQxOEMzOTVEMUM4RjBBQUIwMDUxQzhBMyAvKiBKU1JlYWRhYmxlU3Ry
ZWFtU291cmNlQ3VzdG9tLmNwcCAqLywKIAkJCQk0NkJDQkJCRTIwODUwMDVCMDA3MTA2MzggLyog
SlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwICovLApAQCAtMzM2OTgsNiArMzM3MDEsNyBAQAog
CQkJCTcxMjQ3RTNFMUZFQTVGOTAwMDhDMDhDRSAvKiBKU0tleWZyYW1lRWZmZWN0T3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1RjQ1NDMwRjdDM0I1RjAwRDdDMUZCIC8qIEpTTGF6eUV2
ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTFDNDNDMEQ5ODMwRDMwMDNCMDJG
MiAvKiBKU0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NEU3RUMzNDI2ODBGQTNBMDBC
OUMwMjIgLyogSlNMb2NhdGlvbkN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNBODA2MjAx
RTAzQjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREFC
NkQyRTE3QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9zdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTU5NzQxREIxQjdEMTQwMTAwMjAxQzkyIC8qIEpTTWVkaWFEZXZpY2VJbmZvLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRp
b25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTIg
KzIxLDEzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTTG9jYXRp
b24uaCIKKyNpbmNsdWRlICJKU0xvY2F0aW9uQ3VzdG9tLmgiCiAKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgor
I2luY2x1ZGUgIkpTTG9jYXRpb24uaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNGdW5jdGlvbi5oPgpAQCAtMTg4LDQgKzE4OSw2NCBAQCBib29sIEpTTG9jYXRp
b246OnByZXZlbnRFeHRlbnNpb25zKEpTT2JqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBsb2Nh
dGlvbk5hdGl2ZUZ1bmN0aW9uR2V0dGVyQm9keShKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgRnVuY3Rv
ciBmdW5jdG9yKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTTG9jYXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAgICByZXR1cm4gdGhyb3dWTURPTUF0dHJpYnV0
ZUdldHRlclR5cGVFcnJvcigmZ2xvYmFsT2JqZWN0LCBzY29wZSwgSlNMb2NhdGlvbjo6aW5mbygp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBhdHRyaWJ1dGVOYW1lKSk7CisKKyAgICBhdXRv
JiBsb2NhdGlvbiA9IHRoaXNPYmplY3QtPndyYXBwZWQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVVNWU3RyaW5nPihnbG9iYWxPYmplY3QsIHNjb3BlLCBmdW5jdG9yKGxv
Y2F0aW9uKSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiAKK3N0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgbG9jYXRpb25OYXRpdmVGdW5jdGlvblNldHRlckJvZHkoSlNHbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IGNoYXIq
IGF0dHJpYnV0ZU5hbWUsIEZ1bmN0b3IgZnVuY3RvcikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3Qudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmNhbGxGcmFtZS0+Y2FsbGVyTGV4aWNh
bEdsb2JhbE9iamVjdCh2bSk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNMb2NhdGlvbio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRoaXNP
YmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRE9NQXR0cmlidXRlU2V0dGVyVHlwZUVycm9y
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgSlNMb2NhdGlvbjo6aW5mbygpLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCBhdHRyaWJ1dGVOYW1lKSk7CisKKyAgICBhdXRvJiBsb2NhdGlv
biA9IHRoaXNPYmplY3QtPndyYXBwZWQoKTsKKyAgICBib29sIGlzU2FtZU9yaWdpbiA9IEJpbmRp
bmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygmbGV4aWNhbEdsb2JhbE9i
amVjdCwgbG9jYXRpb24ud2luZG93KCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcik7CisgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpc1NhbWVPcmlnaW4gPyB0
cnVlIDogIXN0cmNtcChhdHRyaWJ1dGVOYW1lLCAiaHJlZiIpKTsKKyAgICBhdXRvJiBnbG9iYWxP
YmplY3RGb3JFeGNlcHRpb25zID0gaXNTYW1lT3JpZ2luID8gZ2xvYmFsT2JqZWN0IDogbGV4aWNh
bEdsb2JhbE9iamVjdDsKKworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFVTVlN0
cmluZz4oZ2xvYmFsT2JqZWN0Rm9yRXhjZXB0aW9ucywgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworCisgICAgYXV0byByZXN1
bHQgPSBmdW5jdG9yKGxvY2F0aW9uLCBhY3RpdmVET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVj
dCksIGZpcnN0RE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3QpLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CisgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkpCisgICAgICAg
IHByb3BhZ2F0ZUV4Y2VwdGlvbihnbG9iYWxPYmplY3RGb3JFeGNlcHRpb25zLCBzY29wZSwgcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworfQorCisjZGVmaW5lIERFRklORV9MT0NBVElPTl9OQVRJVkVfRlVOQ1RJ
T05fQUNDRVNTT1JfQVRUUklCVVRFX0dFVFRFUihuYW1lLCBfKSBcCisgICAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzTG9jYXRpb25fIyNuYW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBs
b2NhdGlvbk5hdGl2ZUZ1bmN0aW9uR2V0dGVyQm9keSgqZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUs
ICNuYW1lLCBbXSAoTG9jYXRpb24mIGxvY2F0aW9uKSB7IFwKKyAgICAgICAgICAgIHJldHVybiBs
b2NhdGlvbi5uYW1lKCk7IFwKKyAgICAgICAgfSk7IFwKKyAgICB9CitMT0NBVElPTl9FQUNIX05B
VElWRV9GVU5DVElPTl9BQ0NFU1NPUl9BVFRSSUJVVEUoREVGSU5FX0xPQ0FUSU9OX05BVElWRV9G
VU5DVElPTl9BQ0NFU1NPUl9BVFRSSUJVVEVfR0VUVEVSKQorI3VuZGVmIERFRklORV9MT0NBVElP
Tl9OQVRJVkVfRlVOQ1RJT05fQUNDRVNTT1JfQVRUUklCVVRFX0dFVFRFUgorCisjZGVmaW5lIERF
RklORV9MT0NBVElPTl9OQVRJVkVfRlVOQ1RJT05fQUNDRVNTT1JfQVRUUklCVVRFX1NFVFRFUihu
YW1lLCBzZXR0ZXJOYW1lKSBcCisgICAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHNldEpTTG9j
YXRpb25fIyNuYW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBsb2NhdGlvbk5hdGl2ZUZ1bmN0
aW9uU2V0dGVyQm9keSgqZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsICNuYW1lLCBbXSAoTG9jYXRp
b24mIGxvY2F0aW9uLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdp
bmRvdywgU3RyaW5nJiYgdmFsdWUpIHsgXAorICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uLnNl
dHRlck5hbWUoYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgV1RGTW92ZSh2YWx1ZSkpOyBcCisg
ICAgICAgIH0pOyBcCisgICAgfQorTE9DQVRJT05fRUFDSF9OQVRJVkVfRlVOQ1RJT05fQUNDRVNT
T1JfQVRUUklCVVRFKERFRklORV9MT0NBVElPTl9OQVRJVkVfRlVOQ1RJT05fQUNDRVNTT1JfQVRU
UklCVVRFX1NFVFRFUikKKyN1bmRlZiBERUZJTkVfTE9DQVRJT05fTkFUSVZFX0ZVTkNUSU9OX0FD
Q0VTU09SX0FUVFJJQlVURV9TRVRURVIKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHJldmlzaW9uIDI3OTA2NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yMDU0LDYgKzIwNTQsMTIgQEAg
c3ViIEdldEpTQ0F0dHJpYnV0ZXNGb3JBdHRyaWJ1dGUKICAgICBteSAkaXNHbG9iYWxDb25zdHJ1
Y3RvciA9ICRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBl
KTsKICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IikgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05vdEVudW1lcmFibGV9IHx8
ICRpc0dsb2JhbENvbnN0cnVjdG9yKTsKICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IikgaWYgSXNSZWFkb25seSgkYXR0cmlidXRlKTsKKworICAg
IGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21OYXRpdmVGdW5jdGlv
bkFjY2Vzc29yfSkgeworICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkFjY2Vzc29yIik7CisgICAgICAgIHJldHVybiAic3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KCIgLiAoKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNpYWxzKSA6ICIwIikgLiAi
KSI7CisgICAgfQorCiAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciIpIHVubGVzcyAkaXNHbG9iYWxDb25zdHJ1Y3RvciBvciBJc0pTQnVp
bHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSIpIGlmIElzQWNjZWxlcmF0ZWRET01BdHRy
aWJ1dGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUiKSBpZiAkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OwpAQCAtNTE2Niw2ICs1MTcyLDcgQEAgc3ViIEdlbmVy
YXRlQXR0cmlidXRlR2V0dGVyQW5kU2V0dGVyRGVjbAogCiAgICAgcmV0dXJuIGlmIElzSlNCdWls
dGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgIHJldHVybiBpZiAkYXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsK
KyAgICByZXR1cm4gaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmF0
aXZlRnVuY3Rpb25BY2Nlc3Nvcn07CiAKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29k
ZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKQEAgLTUzMjcsNiArNTMzNCw3IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0
ZUdldHRlckRlZmluaXRpb24KIAogICAgIHJldHVybiBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNl
LCAkYXR0cmlidXRlKTsKICAgICByZXR1cm4gaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZX07CisgICAgcmV0dXJuIGlm
ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hdGl2ZUZ1bmN0aW9uQWNj
ZXNzb3J9OwogCiAgICAgbXkgJGF0dHJpYnV0ZUdldHRlck5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0
ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgIG15ICRhdHRy
aWJ1dGVHZXR0ZXJCb2R5TmFtZSA9ICRhdHRyaWJ1dGVHZXR0ZXJOYW1lIC4gIkdldHRlciI7CkBA
IC01NTA5LDYgKzU1MTcsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJEZWZpbml0aW9u
CiAgICAgcmV0dXJuIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmli
dXRlLT50eXBlKTsKICAgICByZXR1cm4gaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7CiAgICAgcmV0dXJuIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Rl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9OworICAgIHJldHVybiBpZiAkYXR0cmli
dXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21OYXRpdmVGdW5jdGlvbkFjY2Vzc29yfTsK
IAogICAgIG15ICRjb25kaXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NvbmRpdGlvbmFsfTsKICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CkBAIC03MDg4LDYgKzcwOTcs
NyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVydE5lZWRzU3RhdGUKICAgICByZXR1cm4g
MDsKIH0KIAorIyBGSVhNRTogSXMgZXh0cmEgZ2xvYmFsIG9iamVjdCBuZWNlc3NhcnkgYWZ0ZXIg
aHR0cHM6Ly93ZWJraXQub3JnL2IvaWQ9MjI1OTk3PyBJdCBzaG91bGQgYmUgdGhlIHNhbWUgYXMg
bGV4aWNhbEdsb2JhbE9iamVjdC4KIHN1YiBOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNH
bG9iYWxPYmplY3QKIHsKICAgICBteSAoJHR5cGUpID0gQF87CkBAIC03MjM5LDYgKzcyNDksOSBA
QCBzdWIgR2VuZXJhdGVIYXNoVGFibGVWYWx1ZUFycmF5CiAgICAgICAgICAgICAkZmlyc3RUYXJn
ZXRUeXBlID0gInN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPiI7CiAgICAgICAgIH0gZWxz
aWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9CdWlsdGluLykgewogICAgICAgICAgICAgJGZpcnN0
VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPiI7CisgICAgICAgIH0g
ZWxzaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS8oPzwhQ3VzdG9tKUFjY2Vzc29yLykgeworICAg
ICAgICAgICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4iOworICAgICAgICAgICAgJHNlY29uZFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+IjsKICAgICAgICAgfSBlbHNpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0Nv
bnN0YW50SW50ZWdlci8pIHsKICAgICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUgPSAiIjsKICAg
ICAgICAgfSBlbHNpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0RPTUpJVEF0dHJpYnV0ZS8pIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29u
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy5qc29uCShyZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkod29ya2luZyBjb3B5KQpAQCAtNDcxLDYgKzQ3MSw5
IEBACiAgICAgICAgICAgICAidmFsdWVzIjogWyJFeGVjU3RhdGUiLCAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCIsICJHbG9iYWxPYmplY3QiLCAiQWN0aXZlV2luZG93IiwgIkZpcnN0V2luZG93Iiwg
IlByb3BlcnR5TmFtZSJdLAogICAgICAgICAgICAgInN1cHBvcnRzQ29uanVuY3Rpb24iOiB0cnVl
CiAgICAgICAgIH0sCisgICAgICAgICJDdXN0b21OYXRpdmVGdW5jdGlvbkFjY2Vzc29yIjogewor
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KKyAgICAgICAgfSwK
ICAgICAgICAgIlNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZSI6IHsKICAgICAgICAgICAg
ICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdLAogICAgICAgICAgICAgInZhbHVlcyI6
IFsiKiJdLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHJldmlzaW9uIDI3OTA2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00
MSwyMiArNDEsMjMgQEAKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKICAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIExlZ2FjeVVuZm9yZ2VhYmxlLAorICAg
IEpTQ3VzdG9tSGVhZGVyLAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBMb2NhdGlv
biB7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgRG9Ob3RD
aGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJl
ZjsKKyAgICBbQ3VzdG9tTmF0aXZlRnVuY3Rpb25BY2Nlc3Nvcl0gc3RyaW5naWZpZXIgYXR0cmli
dXRlIFVTVlN0cmluZyBocmVmOwogCiAgICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdp
bmRvd10gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKICAgICBbRG9Ob3RDaGVja1Nl
Y3VyaXR5LCBDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIHVuZGVmaW5lZCByZXBs
YWNlKFVTVlN0cmluZyB1cmwpOwogICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3ddIHVuZGVmaW5l
ZCByZWxvYWQoKTsKIAogICAgIC8vIFVSSSBkZWNvbXBvc2l0aW9uIGF0dHJpYnV0ZXMKLSAgICBb
U2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3Ry
aW5nIHByb3RvY29sOwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5k
b3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaG9zdDsKLSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZl
V2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhvc3RuYW1lOwotICAgIFtT
ZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJp
bmcgcG9ydDsKLSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBh
dHRyaWJ1dGUgVVNWU3RyaW5nIHBhdGhuYW1lOwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVX
aW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc2VhcmNoOwotICAgIFtTZXR0
ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcg
aGFzaDsKKyAgICBbQ3VzdG9tTmF0aXZlRnVuY3Rpb25BY2Nlc3Nvcl0gYXR0cmlidXRlIFVTVlN0
cmluZyBwcm90b2NvbDsKKyAgICBbQ3VzdG9tTmF0aXZlRnVuY3Rpb25BY2Nlc3Nvcl0gYXR0cmli
dXRlIFVTVlN0cmluZyBob3N0OworICAgIFtDdXN0b21OYXRpdmVGdW5jdGlvbkFjY2Vzc29yXSBh
dHRyaWJ1dGUgVVNWU3RyaW5nIGhvc3RuYW1lOworICAgIFtDdXN0b21OYXRpdmVGdW5jdGlvbkFj
Y2Vzc29yXSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHBvcnQ7CisgICAgW0N1c3RvbU5hdGl2ZUZ1bmN0
aW9uQWNjZXNzb3JdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcGF0aG5hbWU7CisgICAgW0N1c3RvbU5h
dGl2ZUZ1bmN0aW9uQWNjZXNzb3JdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc2VhcmNoOworICAgIFtD
dXN0b21OYXRpdmVGdW5jdGlvbkFjY2Vzc29yXSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhhc2g7CiAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIG9yaWdpbjsKIApJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjc5MDY2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMjEtMDYtMjIgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hA
Z21haWwuY29tPgorCisgICAgICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVl
cyB3aXRoIHRoZWlyIGhvbGRlcidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIHRlc3RzIHVzZWQgdG8gcGFzcyBhcyBp
cywgcHJvYmFibHksIGR1ZSB0byBjb21iaW5hdGlvbiBvZiBvbGQgKGluY29ycmVjdCkgYmVoYXZp
b3IgYW5kCisgICAgICAgIHNvbWUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBydW4td2Via2l0
LXRlc3RzLiBUaGV5IGZhaWwgb24gTWluaUJyb3dzZXIgLyBDaHJvbWUgLyBGaXJlZm94CisgICAg
ICAgIHVubGVzcyBtb2RpZmllZCBub3QgdXNlIGRhdGE6Ly8gcHJvdG9jb2wsIHdoaWNoIGlzIG5v
dCBzeXN0ZW0gdW5kZXIgdGVzdC4KKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxPYmplY3RFbGVt
ZW50L29iamVjdC1hcy1mcmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRN
TE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLmh0bWw6CisgICAgICAgICogZmFzdC9kb20v
SFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9I
VE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUt
Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXIt
Y2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1j
b250ZXh0LTIuaHRtbDoKKwogMjAyMS0wNi0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQ1NTIGNvdW50ZXIgc3R5bGUgaW1wcm92ZW1lbnRzIGZvciBBcm1lbmlh
biwgVGFtaWwsIGFuZCBzb21lIENKSyBzdHlsZXMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZy
YW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc5MDY2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNSwxMCArNSwxMCBAQCBQQVNTIHdpbmRvdy5mcmFtZXNbMF0uZnJhbWVFbGVt
ZW50LmNvbnRlCiBQQVNTIHdpbmRvdy5mcmFtZXNbMV0uZnJhbWVFbGVtZW50Lm5hbWUgaXMgIm9i
aiIKIFBBU1Mgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVsZW1lbnQuY29udGVudFdpbmRvdyBpcyB3
aW5kb3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcK
IFBBU1Mgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVsZW1lbnQuY29udGVudFdpbmRvdy5kb2N1bWVu
dCBpcyB3aW5kb3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250ZW50RG9jdW1lbnQKLUxvYWRp
bmcgJ2RhdGE6dGV4dC9odG1sLFVwZGF0ZWQgY29udGVudHMgb2YgaWZyYW1lJyBpbiBpZnJhbWUu
Li4KLUxvYWRpbmcgJ2RhdGE6dGV4dC9odG1sLFVwZGF0ZWQgY29udGVudHMgb2Ygb2JqZWN0JyBp
biBvYmplY3QuLi4KLVBBU1Mgd2luZG93LmZyYW1lc1swXS5sb2NhdGlvbi50b1N0cmluZygpIGlz
ICJkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRzIG9mIGlmcmFtZSIKLVBBU1Mgd2luZG93
LmZyYW1lc1sxXS5sb2NhdGlvbi50b1N0cmluZygpIGlzICJkYXRhOnRleHQvaHRtbCxVcGRhdGVk
IGNvbnRlbnRzIG9mIG9iamVjdCIKK0xvYWRpbmcgJ3Jlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0
bWwnIGluIGlmcmFtZS4uLgorTG9hZGluZyAncmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbCcg
aW4gb2JqZWN0Li4uCitQQVNTIHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24uaHJlZi5lbmRzV2l0
aCgicmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbCIpIGlzIHRydWUKK1BBU1Mgd2luZG93LmZy
YW1lc1sxXS5sb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCJyZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5o
dG1sIikgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmpl
Y3QtYXMtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
T2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUuaHRtbAkocmV2aXNpb24gMjc5MDY2KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiAKIGpzVGVzdElzQXN5bmMgPSB0cnVl
OwogCi12YXIgdXBkYXRlZEZyYW1lVVJMID0gImRhdGE6dGV4dC9odG1sLFVwZGF0ZWQgY29udGVu
dHMgb2YgaWZyYW1lIjsKLXZhciB1cGRhdGVkT2JqZWN0VVJMID0gImRhdGE6dGV4dC9odG1sLFVw
ZGF0ZWQgY29udGVudHMgb2Ygb2JqZWN0IjsKK3ZhciB1cGRhdGVkRnJhbWVVUkwgPSAicmVzb3Vy
Y2VzL2R1bW15LWZyYW1lLTIuaHRtbCI7Cit2YXIgdXBkYXRlZE9iamVjdFVSTCA9ICJyZXNvdXJj
ZXMvZHVtbXktZnJhbWUtMS5odG1sIjsKIAogZnVuY3Rpb24gcnVuVGVzdHMoKQogewpAQCAtMzYs
OCArMzYsOCBAQCBmdW5jdGlvbiBoYW5kbGVMb2FkKCkKICAgICBpZiAobnVtTG9hZHMgPCAyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBzaG91bGRCZSgid2luZG93LmZyYW1lc1swXS5sb2NhdGlv
bi50b1N0cmluZygpIiwgJyInICsgdXBkYXRlZEZyYW1lVVJMICsgJyInKTsKLSAgICBzaG91bGRC
ZSgid2luZG93LmZyYW1lc1sxXS5sb2NhdGlvbi50b1N0cmluZygpIiwgJyInICsgdXBkYXRlZE9i
amVjdFVSTCArICciJyk7CisgICAgc2hvdWxkQmVUcnVlKGB3aW5kb3cuZnJhbWVzWzBdLmxvY2F0
aW9uLmhyZWYuZW5kc1dpdGgoIiR7dXBkYXRlZEZyYW1lVVJMfSIpYCk7CisgICAgc2hvdWxkQmVU
cnVlKGB3aW5kb3cuZnJhbWVzWzFdLmxvY2F0aW9uLmhyZWYuZW5kc1dpdGgoIiR7dXBkYXRlZE9i
amVjdFVSTH0iKWApOwogCiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CkBAIC00Niw4ICs0Niw4IEBA
IGZ1bmN0aW9uIGhhbmRsZUxvYWQoKQogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0cygp
Ij4KIAotPGlmcmFtZSBuYW1lPSJmcmFtZSIgc3JjPSJkYXRhOnRleHQvaHRtbCxPbGQgY29udGVu
dHMgb2YgaWZyYW1lIj48L2lmcmFtZT4KLTxvYmplY3QgbmFtZT0ib2JqIiB0eXBlPSJ0ZXh0L2h0
bWwiIGRhdGE9ImRhdGE6dGV4dC9odG1sLE9sZCBjb250ZW50cyBvZiBvYmplY3QiPjwvb2JqZWN0
PgorPGlmcmFtZSBuYW1lPSJmcmFtZSIgc3JjPSJyZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1s
Ij48L2lmcmFtZT4KKzxvYmplY3QgbmFtZT0ib2JqIiB0eXBlPSJ0ZXh0L2h0bWwiIGRhdGE9InJl
c291cmNlcy9kdW1teS1mcmFtZS0yLmh0bWwiPjwvb2JqZWN0PgogCiA8L2JvZHk+CiA8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMv
ZHVtbXktZnJhbWUtMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1
bW15LWZyYW1lLTEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorT2xkIGNvbnRlbnRzIG9mIGlmcmFtZSAvIE5ldyBjb250ZW50cyBvZiBvYmplY3QK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9k
dW1teS1mcmFtZS0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVt
bXktZnJhbWUtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorPCFET0NUWVBF
IGh0bWw+CitPbGQgY29udGVudHMgb2Ygb2JqZWN0IC8gTmV3IGNvbnRlbnRzIG9mIGlmcmFtZQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1m
cm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1k
b2MtY29udGV4dC0yLmh0bWwJKHJldmlzaW9uIDI3OTA2NikKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRl
eHQtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+CiA8Ym9keSBv
bmxvYWQ9InRlc3QoKSI+Ci08aWZyYW1lIHNyYz0nZGF0YTp0ZXh0L2h0bWwsPGEgaWQ9ImEiIGhy
ZWY9IiUyMyIgb25jbGljaz0iZG9jdW1lbnQud3JpdGUod2luZG93ICE9IHRvcCA/ICZhcG9zOzxw
PkZBSUw8L3A+JmFwb3M7IDogJmFwb3M7PHA+UEFTUzwvcD4mYXBvczspOyByZXR1cm4gZmFsc2Ui
Pmxpbms8L2E+Jz48L2lmcmFtZT4KKzxpZnJhbWUgc3JjZG9jPSc8YSBpZD0iYSIgaHJlZj0iJTIz
IiBvbmNsaWNrPSJkb2N1bWVudC53cml0ZSh3aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwv
cD4mYXBvczsgOiAmYXBvczs8cD5QQVNTPC9wPiZhcG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwv
YT4nPjwvaWZyYW1lPgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0
cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3Rl
bmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHJldmlzaW9u
IDI3OTA2NikKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1l
eHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+CiA8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Ci08aWZyYW1l
IHNyYz0nZGF0YTp0ZXh0L2h0bWwsPGEgaWQ9ImEiIGhyZWY9IiUyMyIgb25jbGljaz0iZG9jdW1l
bnQud3JpdGUod2luZG93ICE9IHRvcCA/ICZhcG9zOzxwPkZBSUw8L3A+JmFwb3M7IDogJmFwb3M7
PHA+UEFTUzwvcD4mYXBvczspOyByZXR1cm4gZmFsc2UiPmxpbms8L2E+Jz48L2lmcmFtZT4KKzxp
ZnJhbWUgc3JjZG9jPSc8YSBpZD0iYSIgaHJlZj0iJTIzIiBvbmNsaWNrPSJkb2N1bWVudC53cml0
ZSh3aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4mYXBvczsgOiAmYXBvczs8cD5QQVNT
PC9wPiZhcG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4nPjwvaWZyYW1lPgogPHNjcmlwdD4K
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwpJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzkwNjYpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjEtMDYtMjIgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgorCisgICAgICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRo
IHRoZWlyIGhvbGRlcidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2Ny
aXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJlYWxt
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNy
b3NzLXJlYWxtLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJ
REwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNt
YXNjcmlwdC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGlu
Zy9zdXBwb3J0L2NyZWF0ZS1yZWFsbS5qczogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9kdW1teS1pZnJhbWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LWNzcy1jcm9zcy1vcmlnaW4uaHR0cHMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFu
c2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS5odG1sOgorCiAyMDIxLTA2LTE5ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggQ1NTIHNlcmlhbGl6YXRp
b24gaXNzdWVzIGFmZmVjdGluZyBjc3MtY291bnRlci1zdHlsZXMgdGVzdHMKSW5kZXg6IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QtY3NzLWNyb3NzLW9yaWdpbi5odHRwcy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3Mt
Y3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc5MDY2KQorKysgTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDYgQEAKIAogUEFTUyBzZXR1cCBnbG9i
YWwgc3RhdGUKIFBBU1MgTUlNRSBjaGVja2luZyBvZiBDU1MgcmVzb3VyY2VzIGZldGNoZWQgdmlh
IHNlcnZpY2Ugd29ya2VyIHdoZW4gQ29udGVudC1UeXBlIGlzIG5vdCBzZXQuCi1GQUlMIFNhbWUt
b3JpZ2luIHBvbGljeSBmb3IgYWNjZXNzIHRvIENTUyByZXNvdXJjZXMgZmV0Y2hlZCB2aWEgc2Vy
dmljZSB3b3JrZXIgYXNzZXJ0X3Rocm93c19kb206IGZ1bmN0aW9uICIoKSA9PiB7Ci0gICAgZi5j
b250ZW50RG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uY3NzVGV4dDsKLSAgfSIg
dGhyZXcgYW4gZXhjZXB0aW9uIGZyb20gdGhlIHdyb25nIGdsb2JhbAorRkFJTCBTYW1lLW9yaWdp
biBwb2xpY3kgZm9yIGFjY2VzcyB0byBDU1MgcmVzb3VyY2VzIGZldGNoZWQgdmlhIHNlcnZpY2Ug
d29ya2VyIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIlNlY3VyaXR5RXJyb3I6IE5vdCBhbGxvd2VkIHRvIGFjY2VzcyBjcm9zcy1vcmlnaW4gc3R5
bGVzaGVldCIKIFBBU1MgY2xlYW51cCBnbG9iYWwgc3RhdGUKIApJbmRleDogTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0v
c2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3Jt
L3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbAkocmV2aXNpb24gMjc5MDY2KQorKysgTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10
cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC05LDkgKzksMTAgQEAKICAgICAgICAgPGlmcmFtZSBzcmM9Ii4iIGlkPSJmcmFtZSI+PC9pZnJh
bWU+CiAgICAgICAgIDxzY3JpcHQ+CiBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAg
ICBjb25zdCBmcmFtZURPTUV4Y2VwdGlvbiA9IGZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0
aW9uOwogICAgIGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBmcmFtZS5jb250ZW50V2luZG93LlNGcmFt
ZVRyYW5zZm9ybTsKICAgICBmcmFtZS5yZW1vdmUoKTsKLSAgICBhc3NlcnRfdGhyb3dzX2RvbSgi
SW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiB0cmFuc2Zvcm0ucmVhZGFibGUpOworICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZyYW1lRE9NRXhjZXB0aW9uLCAoKSA9
PiB0cmFuc2Zvcm0ucmVhZGFibGUpOwogfSk7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9ib2R5
Pgo=
</data>
<flag name="commit-queue"
          id="453928"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431995</attachid>
            <date>2021-06-22 14:41:58 -0700</date>
            <delta_ts>2021-06-28 23:25:07 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-225997-20210623004156.patch</filename>
            <type>text/plain</type>
            <size>81072</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzkwNjcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTIxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1
ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90
by1jaGFpbi1wdXQuanM6CisgICAgICAgICogc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2Jq
ZWN0LWluLWljLTIuanM6IEFkZGVkLgorCiAyMDIxLTA2LTIwICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQWRkIFZhbHVlT2YgZmFzdCBwYXRoIGlu
IHRvUHJpbWl0aXZlCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90by1j
aGFpbi1wdXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQt
cHJvdG8tY2hhaW4tcHV0LmpzCShyZXZpc2lvbiAyNzkwNjYpCisrKyBKU1Rlc3RzL3N0cmVzcy9j
dXN0b20tZ2V0LXNldC1wcm90by1jaGFpbi1wdXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTk5LDgg
Kzk5LDggQEAgZnVuY3Rpb24gZ2V0QmFzZXMoKSB7CiAoKCkgPT4gewogICAgIGZvciAobGV0IGJh
c2Ugb2YgZ2V0QmFzZXMoKSkgewogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytp
KQotICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBiYXNlLmN1c3RvbUFjY2Vzc29yR2xv
YmFsT2JqZWN0ID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVh
ZG9ubHkgcHJvcGVydHkuIik7Ci0gICAgICAgIGFzc2VydCghUmVmbGVjdC5zZXQoT2JqZWN0KGJh
c2UpLCAiY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QiLCB7fSkpOworICAgICAgICAgICAgc2hv
dWxkVGhyb3coKCkgPT4geyBiYXNlLmN1c3RvbUFjY2Vzc29yUmVhZE9ubHkgPSB7fTsgfSwgIlR5
cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAg
ICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0b21BY2Nlc3NvclJl
YWRPbmx5Iiwge30pKTsKICAgICB9CiB9KSgpOwogCkBAIC0xMDgsMjEgKzEwOCwyMSBAQCBmdW5j
dGlvbiBnZXRCYXNlcygpIHsKICgoKSA9PiB7CiAgICAgZm9yIChsZXQgcHJpbWl0aXZlIG9mIHBy
aW1pdGl2ZXMpIHsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkKLSAgICAg
ICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgcHJpbWl0aXZlLmN1c3RvbVZhbHVlR2xvYmFsT2Jq
ZWN0ID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkg
cHJvcGVydHkuIik7CisgICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IHByaW1pdGl2ZS5j
dXN0b21WYWx1ZU5vU2V0dGVyID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3Np
Z24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7CiAgICAgfQogCiAgICAgZm9yIChsZXQgb2JqZWN0
IG9mIGdldE9iamVjdHMoKSkgewogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytp
KQotICAgICAgICAgICAgb2JqZWN0LmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID0ge307Ci0gICAg
ICAgIGFzc2VydChvYmplY3QuaGFzT3duUHJvcGVydHkoImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0
IikpOwotICAgICAgICBhc3NlcnQoUmVmbGVjdC5zZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVHbG9i
YWxPYmplY3QiLCB7fSkpOworICAgICAgICAgICAgb2JqZWN0LmN1c3RvbVZhbHVlTm9TZXR0ZXIg
PSB7fTsKKyAgICAgICAgYXNzZXJ0KG9iamVjdC5oYXNPd25Qcm9wZXJ0eSgiY3VzdG9tVmFsdWVO
b1NldHRlciIpKTsKKyAgICAgICAgYXNzZXJ0KFJlZmxlY3Quc2V0KG9iamVjdCwgImN1c3RvbVZh
bHVlTm9TZXR0ZXIiLCB7fSkpOwogICAgIH0KIAogICAgIGZvciAobGV0IG9iamVjdCBvZiBnZXRP
YmplY3RzKCkpIHsKICAgICAgICAgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKG9iamVjdCk7CiAg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKLSAgICAgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsgb2JqZWN0LmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID0ge307IH0sICJU
eXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7Ci0g
ICAgICAgICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0KG9iamVjdCwgImN1c3RvbVZhbHVlR2xvYmFs
T2JqZWN0Iiwge30pKTsKKyAgICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgb2JqZWN0LmN1
c3RvbVZhbHVlTm9TZXR0ZXIgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2ln
biB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIGFzc2VydCghUmVmbGVjdC5z
ZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVOb1NldHRlciIsIHt9KSk7CiAgICAgICAgIH0KICAgICB9
CiB9KSgpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvZ2V0dGVyLXNldHRlci1nbG9iYWxvYmplY3Qt
aW4taWMtMi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9nZXR0ZXItc2V0dGVyLWds
b2JhbG9iamVjdC1pbi1pYy0yLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2dl
dHRlci1zZXR0ZXItZ2xvYmFsb2JqZWN0LWluLWljLTIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3NyBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30KKworY29uc3QgY3JlYXRlQ3VzdG9t
ID0gYAorICAgIHZhciBjdXN0b20gPSAkdm0uY3JlYXRlQ3VzdG9tVGVzdEdldHRlclNldHRlcigp
OworYDsKKworKGZ1bmN0aW9uIGRpcmVjdEN1c3RvbUFjY2Vzc29yR2V0KCkgeworICAgIGNvbnN0
IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b20g
PSBvdGhlci5jdXN0b207CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7Cisg
ICAgICAgIGFzc2VydChvdGhlckN1c3RvbS5jdXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCA9PT0g
b3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBkaXJlY3RDdXN0b21WYWx1ZUdldCgp
IHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0
IG90aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTU7IGkrKykgeworICAgICAgICBhc3NlcnQob3RoZXJDdXN0b20uY3VzdG9tVmFsdWVHbG9iYWxP
YmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gZGlyZWN0Q3VzdG9t
QWNjZXNzb3JTZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9t
KTsKKyAgICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVyLmN1c3RvbTsKKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgY29uc3QgdmFsdWUgPSB7fTsKKyAgICAg
ICAgb3RoZXJDdXN0b20uY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPSB2YWx1ZTsKKyAgICAg
ICAgYXNzZXJ0KHZhbHVlLnJlc3VsdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5j
dGlvbiBkaXJlY3RDdXN0b21WYWx1ZVNldCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmlu
ZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOwor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBjb25zdCB2YWx1
ZSA9IHt9OworICAgICAgICBvdGhlckN1c3RvbS5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9IHZh
bHVlOworICAgICAgICBhc3NlcnQodmFsdWUucmVzdWx0ID09PSBvdGhlcik7CisgICAgfQorfSko
KTsKKworKGZ1bmN0aW9uIHByb3RvdHlwZUNoYWluQ3VzdG9tQWNjZXNzb3JHZXQoKSB7CisgICAg
Y29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1
c3RvbUhlaXIgPSBPYmplY3QuY3JlYXRlKG90aGVyLmN1c3RvbSk7CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGFzc2VydChvdGhlckN1c3RvbUhlaXIuY3Vz
dG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVu
Y3Rpb24gcHJvdG90eXBlQ2hhaW5DdXN0b21WYWx1ZUdldCgpIHsKKyAgICBjb25zdCBvdGhlciA9
IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tSGVpciA9IE9i
amVjdC5jcmVhdGUob3RoZXIuY3VzdG9tKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1
OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KG90aGVyQ3VzdG9tSGVpci5jdXN0b21WYWx1ZUdsb2Jh
bE9iamVjdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBwcm90b3R5cGVD
aGFpbkN1c3RvbUFjY2Vzc29yU2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNy
ZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b21IZWlyID0gT2JqZWN0LmNyZWF0ZShv
dGhlci5jdXN0b20pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAg
ICAgICBjb25zdCB2YWx1ZSA9IHt9OworICAgICAgICBvdGhlckN1c3RvbUhlaXIuY3VzdG9tQWNj
ZXNzb3JHbG9iYWxPYmplY3QgPSB2YWx1ZTsKKyAgICAgICAgYXNzZXJ0KHZhbHVlLnJlc3VsdCA9
PT0gb3RoZXIpOworICAgIH0KK30pKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTA2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw1OCBAQAorMjAyMS0wNi0yMSAgQWxleGV5IFNodmF5a2EgIDxz
aHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gQ2FsbCBjdXN0b20gYWNjZXNz
b3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFsIG9iamVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTk3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBsaWtlIEpTIGJ1aWx0
LWlucywgZ2V0dGVyIC8gc2V0dGVyIGZ1bmN0aW9ucyBvZiBXZWJJREwgYXR0cmlidXRlcyBhcmUg
Y3JlYXRlZCBpbiByZWFsbQorICAgICAgICBvZiB0aGVpciBob2xkZXIgaW50ZXJmYWNlIFsxXVsy
XSwgd2hpY2ggaXMgdGhlaXIgX2N1cnJlbnRfIHJlYWxtIGZvciB0aHJvd2luZyBhbiBlcnJvciBb
M10uCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCBjdXN0b20gcHJvcGVydGllcyBnZXQgY29y
cmVjdCBnbG9iYWwgb2JqZWN0IGluc3RlYWQgb2YgbGV4aWNhbCwgaW5jbHVkaW5nCisgICAgICAg
IHdoZW4gaW5saW5lIGNhY2hlZCwgYWxpZ25pbmcgdGhlbSB3aXRoIGZ1bmN0aW9ucyBhbmQgcmVn
dWxhciBhY2Nlc3NvcnMuCisKKyAgICAgICAgVGhlIGxhdHRlciBhbGxvd2VkIEpTIGJ1aWx0LWlu
cyBsaWtlIFN5bWJvbCNkZXNjcmlwdGlvbiB0byBzd2l0Y2ggdG8gQ3VzdG9tQWNjZXNzb3IsIHdo
aWNoCisgICAgICAgIGlzIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50IHRvIGNhbGwgZnJvbSBDKyss
IGRvZXNuJ3QgbmVlZCByZWlmaWNhdGlvbiBvbiBmaXJzdCBhY2Nlc3MsIGFuZAorICAgICAgICBo
YXMgbmljZXIgc2lnbmF0dXJlLgorCisgICAgICAgIEFsc28sIHJlbmFtZXMgV0FTTSBhY2Nlc3Nv
cnMgdG8gZHJvcCAiZnVuYyIgYW5kIHJlbW92ZXMgdW51c2VkIGZ1bmN0aW9uIGxlbmd0aCBwYXJh
bWV0ZXIuCisKKyAgICAgICAgWzFdOiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNk
Zm4tYXR0cmlidXRlLWdldHRlciAoc3RlcCAyKQorICAgICAgICBbMl06IGh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtc2V0dGVyIChzdGVwIDUpCisgICAgICAg
IFszXTogaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZWNtYXNjcmlwdC10aHJvdwor
CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisgICAg
ICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElubGluZVNsb3cp
OgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnB1dEVudHJ5KToK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHA6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5U2xvdDo6Y3VzdG9tR2V0dGVyIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5
U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmdldFZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKEpTQzo6SlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorCiAyMDIxLTA2LTIw
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQWRk
IFZhbHVlT2YgZmFzdCBwYXRoIGluIHRvUHJpbWl0aXZlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvY3JlYXRlX2hhc2hfdGFibGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2NyZWF0ZV9oYXNoX3RhYmxlCShyZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUJKHdvcmtpbmcgY29weSkKQEAgLTk3LDggKzk3LDEw
IEBAIHdoaWxlICg8SU4+KSB7CiAgICAgICAgIH0gZWxzaWYgKCRhdHQgPX4gbS9BY2Nlc3Nvci8p
IHsKICAgICAgICAgICAgIG15ICRnZXQgPSAkdmFsOwogICAgICAgICAgICAgbXkgJHB1dCA9ICJu
dWxscHRyIjsKKyAgICAgICAgICAgICRhdHRyc1stMV0gPX4gcy9BY2Nlc3Nvci9DdXN0b21BY2Nl
c3Nvci87CisgICAgICAgICAgICAkYXR0cnNbLTFdIC49ICJ8UmVhZE9ubHkiOwogICAgICAgICAg
ICAgJGhhc1NldHRlciA9ICJ0cnVlIjsKLSAgICAgICAgICAgIHB1c2goQHZhbHVlcywgeyAidHlw
ZSIgPT4gIlByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciIsICJnZXQiID0+ICRnZXQsICJwdXQi
ID0+ICRwdXQgfSk7CisgICAgICAgICAgICBwdXNoKEB2YWx1ZXMsIHsgInR5cGUiID0+ICJQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHkiLCAiZ2V0IiA9PiAkZ2V0LCAicHV0IiA9PiAkcHV0IH0p
OwogICAgICAgICB9IGVsc2lmICgkYXR0ID1+IG0vQ2VsbFByb3BlcnR5LykgewogICAgICAgICAg
ICAgbXkgJHByb3BlcnR5ID0gJHZhbDsKICAgICAgICAgICAgIHB1c2goQHZhbHVlcywgeyAidHlw
ZSIgPT4gIlByb3BlcnR5QXR0cmlidXRlOjpDZWxsUHJvcGVydHkiLCAicHJvcGVydHkiID0+ICRw
cm9wZXJ0eSB9KTsKQEAgLTMxMCwxMSArMzEyLDYgQEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAg
ICAgICRmaXJzdFZhbHVlID0gJHZhbHVlc1skaV17ImZ1bmN0aW9uIn07CiAgICAgICAgICAgICAk
c2Vjb25kVmFsdWUgPSAkdmFsdWVzWyRpXXsicGFyYW1zIn07CiAgICAgICAgICAgICAkaW50cmlu
c2ljID0gJHZhbHVlc1skaV17ImludHJpbnNpYyJ9OwotICAgICAgICB9IGVsc2lmICgkdmFsdWVz
WyRpXXsidHlwZSJ9IGVxICJQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IiKSB7Ci0gICAgICAg
ICAgICAkZmlyc3RDYXN0U3RyID0gInN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPiI7Ci0g
ICAgICAgICAgICAkc2Vjb25kQ2FzdFN0ciA9ICJzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4iOwotICAgICAgICAgICAgJGZpcnN0VmFsdWUgPSAkdmFsdWVzWyRpXXsiZ2V0In07Ci0gICAg
ICAgICAgICAkc2Vjb25kVmFsdWUgPSAkdmFsdWVzWyRpXXsicHV0In07CiAgICAgICAgIH0gZWxz
aWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eSIp
IHsKICAgICAgICAgICAgICRmaXJzdENhc3RTdHIgPSAic3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+IjsKICAgICAgICAgICAgICRzZWNvbmRDYXN0U3RyID0gInN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPiI7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCShyZXZpc2lvbiAyNzkwNjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MTYsNyArMTQxNiw2IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KEFjY2Vzc0dlbmUKICAgICBDQ2FsbEhlbHBlcnMmIGppdCA9ICpzdGF0ZS5qaXQ7CiAgICAgVk0m
IHZtID0gc3RhdGUubV92bTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGppdC5jb2RlQmxv
Y2soKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUubV9nbG9iYWxP
YmplY3Q7CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBzdGF0ZS5tX2VjbWFNb2RlOwogICAgIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdGF0ZS5zdHViSW5mbzsKICAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MgPSBzdGF0ZS52YWx1ZVJlZ3M7CkBAIC0xNjE5LDYgKzE2MTgsOCBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBBU1NF
UlQoYmFzZUdQUiAhPSBsb2FkZWRWYWx1ZUdQUik7CiAgICAgICAgICAgICBBU1NFUlQobV90eXBl
ICE9IFNldHRlciB8fCB2YWx1ZVJlZ3NQYXlsb2FkR1BSICE9IGxvYWRlZFZhbHVlR1BSKTsKIAor
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLm1fZ2xvYmFs
T2JqZWN0OworCiAgICAgICAgICAgICAvLyBDcmVhdGUgYSBKUyBjYWxsIHVzaW5nIGEgSlMgY2Fs
bCBpbmxpbmUgY2FjaGUuIEFzc3VtZSB0aGF0OgogICAgICAgICAgICAgLy8KICAgICAgICAgICAg
IC8vIC0gU1AgaXMgYWxpZ25lZCBhbmQgcmVwcmVzZW50cyB0aGUgZXh0ZW50IG9mIHRoZSBjYWxs
aW5nIGNvbXBpbGVyJ3Mgc3RhY2sgdXNhZ2UuCkBAIC0xNzU0LDYgKzE3NTUsOCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBBU1NFUlQobV90
eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0b21BY2Nlc3NvckdldHRl
ciB8fCBtX3R5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbUFjY2Vz
c29yU2V0dGVyKTsKICAgICAgICAgICAgIEFTU0VSVCghZG9lc1Byb3BlcnR5U3RvcmFnZUxvYWRz
KTsgLy8gT3Igd2UgbmVlZCBhbiBleHRyYSByZWdpc3Rlci4gV2UgcmVseSBvbiBwcm9wZXJ0eU93
bmVyR1BSIGJlaW5nIGNvcnJlY3QgaGVyZS4KIAorICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGhhc0FsdGVybmF0ZUJhc2UoKSA/IGFsdGVybmF0ZUJhc2UoKS0+Z2xv
YmFsT2JqZWN0KHZtKSA6IHN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKTsKKwogICAgICAgICAg
ICAgLy8gTmVlZCB0byBtYWtlIHJvb20gZm9yIHRoZSBDIGNhbGwgc28gYW55IG9mIG91ciBzdGFj
ayBzcGlsbGFnZSBpc24ndCBvdmVyd3JpdHRlbi4gSXQncwogICAgICAgICAgICAgLy8gaGFyZCB0
byB0cmFjayBpZiBzb21lb25lIGRpZCBzcGlsbGFnZSBvciBub3QsIHNvIHdlIGp1c3QgYXNzdW1l
IHRoYXQgd2UgYWx3YXlzIG5lZWQKICAgICAgICAgICAgIC8vIHRvIG1ha2Ugc29tZSBzcGFjZSBo
ZXJlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZS5jcHAJKHJldmlzaW9uIDI3OTA2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNiArMjQ0LDQxIEBA
IFNvdXJjZU9yaWdpbiBDYWxsRnJhbWU6OmNhbGxlclNvdXJjZU9yaWcKICAgICByZXR1cm4gc291
cmNlT3JpZ2luOwogfQogCitKU0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjpjYWxsZXJMZXhpY2Fs
R2xvYmFsT2JqZWN0KFZNJiB2bSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChjYWxsZWUoKS5pc0Nl
bGwoKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG51bGxwdHI7CisgICAg
Ym9vbCBoYXZlU2tpcHBlZEZpcnN0RnJhbWUgPSB0cnVlOworICAgIFN0YWNrVmlzaXRvcjo6dmlz
aXQodGhpcywgdm0sIFsmXShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIHsKKyAgICAgICAgaWYgKCFz
dGQ6OmV4Y2hhbmdlKGhhdmVTa2lwcGVkRmlyc3RGcmFtZSwgdHJ1ZSkpCisgICAgICAgICAgICBy
ZXR1cm4gU3RhY2tWaXNpdG9yOjpTdGF0dXM6OkNvbnRpbnVlOworCisgICAgICAgIHN3aXRjaCAo
dmlzaXRvci0+Y29kZVR5cGUoKSkgeworICAgICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6
OkNvZGVUeXBlOjpGdW5jdGlvbjoKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxGdW5jdGlv
bkV4ZWN1dGFibGUqPih2aXNpdG9yLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpLT5p
c0J1aWx0aW5GdW5jdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6
OlN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKworICAgICAgICBj
YXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkNvZGVUeXBlOjpFdmFsOgorICAgICAgICBjYXNlIFN0
YWNrVmlzaXRvcjo6RnJhbWU6OkNvZGVUeXBlOjpNb2R1bGU6CisgICAgICAgIGNhc2UgU3RhY2tW
aXNpdG9yOjpGcmFtZTo6Q29kZVR5cGU6Okdsb2JhbDoKKyAgICAgICAgY2FzZSBTdGFja1Zpc2l0
b3I6OkZyYW1lOjpDb2RlVHlwZTo6V2FzbToKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IHZp
c2l0b3ItPmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIHJldHVybiBT
dGFja1Zpc2l0b3I6OlN0YXR1czo6RG9uZTsKKworICAgICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6
RnJhbWU6OkNvZGVUeXBlOjpOYXRpdmU6CisgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpTdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVzOjpEb25l
OworICAgIH0pOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICBnbG9iYWxPYmplY3Qg
PSB2bS5kZXByZWNhdGVkVk1FbnRyeUdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpOworICAgIEFT
U0VSVChnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBnbG9iYWxPYmplY3Q7Cit9CisKIFN0cmlu
ZyBDYWxsRnJhbWU6OmZyaWVuZGx5RnVuY3Rpb25OYW1lKCkKIHsKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMjc5MDY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDYsNiArMTQ2LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKEVudHJ5RnJhbWUqJikgY29uc3Q7CiAKICAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgU291cmNlT3JpZ2luIGNhbGxlclNvdXJjZU9yaWdpbihWTSYp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0dsb2JhbE9iamVjdCogY2FsbGVyTGV4aWNh
bEdsb2JhbE9iamVjdChWTSYpOwogCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgY2FsbGVyRnJh
bWVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbGVyRnJhbWVBbmRQQywgY2Fs
bGVyRnJhbWUpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5MDY2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVy
Q29tcGFyZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsQ29sbGF0b3JQ
cm90b3R5cGVHZXR0ZXJDb21wYXJlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOwogCkBAIC0xMDUs
MTQgKzEwNSwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yRnVuCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNv
bXBhcmVTdHJpbmdzKGdsb2JhbE9iamVjdCwgeFZpZXdXaXRoU3RyaW5nLnZpZXcsIHlWaWV3V2l0
aFN0cmluZy52aWV3KSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bENvbGxh
dG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsQ29s
bGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICAvLyAxMC4zLjMgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFy
ZSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0aGlzIENvbGxhdG9y
IG9iamVjdC4KLSAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRs
Q29sbGF0b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSW50bENvbGxhdG9y
KiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWNvbGxhdG9yKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkNv
bGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9i
amVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIl9zKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5MDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZUdldHRlckZvcm1hdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJh
bmdlVG9QYXJ0cyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyk7CkBAIC0xMTMsMTQgKzExMywxNCBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9yCiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEyLjMuMyBJbnRsLkRhdGVUaW1lRm9ybWF0LnBy
b3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgZHRmIGJlIHRoaXMg
RGF0ZVRpbWVGb3JtYXQgb2JqZWN0LgotICAgIGF1dG8qIGR0ZiA9IEludGxEYXRlVGltZUZvcm1h
dDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgYXV0byogZHRmID0gSW50bERhdGVUaW1lRm9ybWF0Ojp1bndyYXBGb3JPbGRG
dW5jdGlvbnMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAvLyAyLiBSZXR1cm5JZkFicnVw
dChkdGYpLgogICAgIGlmIChVTkxJS0VMWSghZHRmKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyNzkwNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTYgKzM0LDE2IEBAIG5hbWVzcGFjZSBK
U0Mgewogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlw
ZUZ1bmNNYXhpbWl6ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9j
YWxlUHJvdG90eXBlRnVuY01pbmltaXplKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKEludGxMb2NhbGVQcm90b3R5cGVGdW5jVG9TdHJpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lKTsKLXN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxl
bmRhcik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyQ2FzZUZpcnN0KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24pOwotc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSk7Ci1zdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJp
Yyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBl
R2V0dGVyTnVtYmVyaW5nU3lzdGVtKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0KTsKLXN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24p
Oworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckJhc2VOYW1lKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2Nh
bGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0KTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24pOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckhvdXJDeWNsZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVyTnVtZXJpYyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
UihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyU2NyaXB0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJSZWdpb24pOwogCiB9CiAKQEAgLTE0MiwxMiArMTQyLDEyIEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5
LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuYmFzZU5hbWUKLUpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBq
c0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cisg
ICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlw
ZS5iYXNlTmFtZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6
ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0xNTYsMTIgKzE1NiwxMiBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFyCi1KU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWlj
Q2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8q
IGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FsZW5k
YXIgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
TG9jYWxlIl9zKTsKIApAQCAtMTcwLDEyICsxNzAsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2Vj
LUludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8
SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2Nh
bGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhc2VGaXJzdCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2Nh
bGUiX3MpOwogCkBAIC0xODQsMTIgKzE4NCwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
SW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50
bC5Mb2NhbGUucHJvdG90eXBlLmNvbGxhdGlvbgotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
SW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRs
TG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9
IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY29sbGF0aW9uIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJf
cyk7CiAKQEAgLTE5OCwxMiArMTk4LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRs
TG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxv
Y2FsZS5wcm90b3R5cGUuaG91ckN5Y2xlCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2Nh
bGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNE
eW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5ob3VyQ3ljbGUgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsK
IApAQCAtMjEyLDEyICsyMTIsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2Nh
bGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxl
LnByb3RvdHlwZS5udW1lcmljCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0
PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICgh
bG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWVyaWMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMjI1LDEy
ICsyMjUsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQog
CiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5u
dW1iZXJpbmdTeXN0ZW0KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2Nh
bGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExv
Y2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBq
c0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbSBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2Nh
bGUiX3MpOwogCkBAIC0yMzksMTIgKzIzOSwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
SW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50
bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1YWdlCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50
bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9j
YWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpz
RHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubGFuZ3VhZ2UgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsK
IApAQCAtMjUzLDEyICsyNTMsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2Nh
bGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxl
LnByb3RvdHlwZS5zY3JpcHQKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyU2NyaXB0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJTY3JpcHQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PElu
dGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9j
YWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnNjcmlwdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0yNjcsMTIgKzI2
NywxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8v
IGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLnJlZ2lv
bgotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdp
b24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lv
biwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9j
YWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5w
cm90b3R5cGUucmVnaW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jRm9ybWF0VG9QYXJ0cyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdCk7CkBAIC0xMDgs
MTQgKzEwOCwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bE51bWJlckZvcm1hCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmpl
Y3QsIHZhbHVlKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIC8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
Zm9ybWF0IChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IG5mIGJlIHRoaXMgTnVtYmVyRm9y
bWF0IG9iamVjdC4KLSAgICBhdXRvKiBuZiA9IEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9s
ZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1
dG8qIG5mID0gSW50bE51bWJlckZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9i
amVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKFVOTElLRUxZKCFuZikpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
TnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Il9zKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjc5MDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDkgKzgzLDkgQEAg
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZQogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0KTsKIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9GdW5jU2V0QmlnSW50NjQpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0Z1bmNTZXRCaWdV
aW50NjQpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dl
dHRlckJ1ZmZlcik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1By
b3RvR2V0dGVyQnl0ZUxlbmd0aCk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihk
YXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KTsKIAog
fQogCkBAIC0yMjMsMjQgKzIyMywyNCBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFs
T2JqZWN0KiBnCiAKIElHTk9SRV9DTEFOR19XQVJOSU5HU19CRUdJTigibWlzc2luZy1wcm90b3R5
cGVzIikKIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZm
ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlciwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmlldyogdmll
dyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRhVmlldy5wcm90
b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh2aWV3LT5wb3Nz
aWJseVNoYXJlZEpTQnVmZmVyKGdsb2JhbE9iamVjdCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2Fz
dDxKU0RhdGFWaWV3Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTRGF0YVZp
ZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5ieXRlTGVuZ3Ro
IGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAgICAgaWYgKHZpZXct
PmlzRGV0YWNoZWQoKSkKQEAgLTI0OSwxMiArMjQ5LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihkYXRhVmlld1Byb3RvR2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHZpZXctPmxlbmd0aCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmll
d1Byb3RvR2V0dGVyQnl0ZU9mZnNldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1By
b3RvR2V0dGVyQnl0ZU9mZnNldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5h
bWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnl0ZU9mZnNldCBleHBlY3RzIHx0aGlzfCB0
byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogICAgIGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lv
biAyNzkwNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc2MCw2ICs3NjAsNTIgQEAgYm9vbCBKU09iamVjdDo6cHV0KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYQogICAgIHJldHVybiBwdXRJbmxpbmVGb3JKU09iamVjdChjZWxs
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCitzdHJ1Y3Qg
UHJvcGVydHlGb3JQdXQgeworICAgIGNvbnN0IHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgY29u
c3QgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIGNvbnN0IFB1dFZhbHVlRnVuYyBjdXN0b21T
ZXR0ZXI7Cit9OworCitzdGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFByb3BlcnR5
Rm9yUHV0PiBsb29rdXBQcm9wZXJ0eUZvclB1dChWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgUHV0VmFsdWVGdW5jIGN1c3RvbVNldHRlciA9IG51bGxwdHI7
CisgICAgYXV0byBnZXRGcm9tU3RydWN0dXJlID0gWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkg
LT4gc3RkOjpvcHRpb25hbDxQcm9wZXJ0eUZvclB1dD4geworICAgICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2
bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAo
YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpCisg
ICAgICAgICAgICBjdXN0b21TZXR0ZXIgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4ob2Jq
ZWN0LT5nZXREaXJlY3Qob2Zmc2V0KSktPnNldHRlcigpOworICAgICAgICByZXR1cm4gUHJvcGVy
dHlGb3JQdXQgeyBhdHRyaWJ1dGVzLCBvZmZzZXQsIGN1c3RvbVNldHRlciB9OworICAgIH07CisK
KyAgICBpZiAoYXV0byBwcm9wZXJ0eSA9IGdldEZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKSkKKyAg
ICAgICAgcmV0dXJuIHByb3BlcnR5OworCisgICAgaWYgKHN0cnVjdHVyZS0+aGFzTm9uUmVpZmll
ZFN0YXRpY1Byb3BlcnRpZXMoKSkgeworICAgICAgICBpZiAoYXV0byBlbnRyeSA9IHN0cnVjdHVy
ZS0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXMgPSBlbnRyeS0+dmFsdWUtPmF0dHJpYnV0ZXMoKTsKKyAgICAgICAg
ICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KQorICAgICAg
ICAgICAgICAgIHJldHVybiBQcm9wZXJ0eUZvclB1dCB7IGF0dHJpYnV0ZXMsIGludmFsaWRPZmZz
ZXQsIG51bGxwdHIgfTsKKworICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0
dHJpYnV0ZTo6QWNjZXNzb3IpIHsKKyAgICAgICAgICAgICAgICBzbG90LmRpc2FibGVDYWNoaW5n
KCk7CisgICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgZW50cnktPnRhYmxl
LT5jbGFzc0ZvclRoaXMsIHByb3BlcnR5TmFtZSwgKmVudHJ5LT52YWx1ZSwgKm9iamVjdCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGdldEZyb21TdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IGFmdGVyIHdlIHN0b3AgZGVmYXVsdGluZyB0byBDdXN0b21WYWx1ZSBpbiBzdGF0aWMgaGFzaCB0
YWJsZXMuCisgICAgICAgICAgICBpZiAoIShhdHRyaWJ1dGVzICYgKFByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluT3JGdW5jdGlvbk9y
QWNjZXNzb3JPckxhenlQcm9wZXJ0eU9yQ29uc3RhbnQpKSkKKyAgICAgICAgICAgICAgICBhdHRy
aWJ1dGVzIHw9IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZTsKKyAgICAgICAgICAgIGlm
IChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkK
KyAgICAgICAgICAgICAgICBjdXN0b21TZXR0ZXIgPSBlbnRyeS0+dmFsdWUtPnByb3BlcnR5UHV0
dGVyKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlGb3JQdXQgeyBhdHRyaWJ1dGVzLCBp
bnZhbGlkT2Zmc2V0LCBjdXN0b21TZXR0ZXIgfTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCghcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpKTsKQEAgLTc3OCwzNSArODI0LDEyIEBAIGJvb2wgSlNPYmplY3Q6
OnB1dElubGluZVNsb3coSlNHbG9iYWxPYmoKICAgICAgICAgaWYgKG9iaiAhPSB0aGlzICYmIHN0
cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNQdXQoKSkKICAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgb2JqLT5tZXRob2RUYWJsZSh2bSktPnB1dChvYmosIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogCi0gICAgICAgIGJvb2wgaGFzUHJv
cGVydHkgPSBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAgUHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgY3VzdG9tU2V0dGVyID0gbnVsbHB0cjsKLSAgICAg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcyk7Ci0gICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAg
ICAgICAgICAgIGhhc1Byb3BlcnR5ID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVz
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkKLSAgICAgICAgICAg
ICAgICBjdXN0b21TZXR0ZXIgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4ob2JqLT5nZXRE
aXJlY3Qob2Zmc2V0KSktPnNldHRlcigpOwotICAgICAgICB9IGVsc2UgaWYgKHN0cnVjdHVyZS0+
aGFzTm9uUmVpZmllZFN0YXRpY1Byb3BlcnRpZXMoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8g
ZW50cnkgPSBzdHJ1Y3R1cmUtPmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShwcm9wZXJ0eU5hbWUpKSB7
Ci0gICAgICAgICAgICAgICAgaGFzUHJvcGVydHkgPSB0cnVlOwotICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZXMgPSBlbnRyeS0+dmFsdWUtPmF0dHJpYnV0ZXMoKTsKLQotICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhZnRlciB3cml0YWJsZSBhY2Nlc3NvcnMgYXJlIGludHJv
ZHVjZWQgdG8gc3RhdGljIGhhc2ggdGFibGVzLgotICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1
dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKQotICAgICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGVzIHw9IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seTsKLSAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgd2Ugc3RvcCBkZWZhdWx0aW5nIHRvIEN1c3Rv
bVZhbHVlIGluIHN0YXRpYyBoYXNoIHRhYmxlcy4KLSAgICAgICAgICAgICAgICBpZiAoIShhdHRy
aWJ1dGVzICYgKFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IFByb3BlcnR5QXR0
cmlidXRlOjpCdWlsdGluT3JGdW5jdGlvbk9yQWNjZXNzb3JPckxhenlQcm9wZXJ0eU9yQ29uc3Rh
bnQpKSkKLSAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tVmFsdWU7Ci0KLSAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpCi0gICAgICAgICAgICAgICAgICAg
IGN1c3RvbVNldHRlciA9IGVudHJ5LT52YWx1ZS0+cHJvcGVydHlQdXR0ZXIoKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoYXNQcm9wZXJ0eSkgeworICAgICAgICBp
ZiAoYXV0byBwcm9wZXJ0eSA9IGxvb2t1cFByb3BlcnR5Rm9yUHV0KHZtLCBvYmosIHN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRl
cyA9IHByb3BlcnR5LT5hdHRyaWJ1dGVzOwogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5
QXR0cmlidXRlOjpBY2Nlc3NvcikgeworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHByb3BlcnR5LT5vZmZzZXQ7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRP
ZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUg
dGhhdCB3ZSBkZWNpZGUgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eSBiZWZvcmUgd2UgcG90ZW50aWFs
bHkgZXhlY3V0ZSBhcmliaXRyYXJ5IEpTLgogICAgICAgICAgICAgICAgIGlmICghdGhpcy0+c3Ry
dWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKQEAgLTgxNCwxOCArODM3LDE3
IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coSlNHbG9iYWxPYmoKICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihvYmot
PmdldERpcmVjdChvZmZzZXQpKS0+Y2FsbFNldHRlcihnbG9iYWxPYmplY3QsIHNsb3QudGhpc1Zh
bHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
cikgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhZnRlciBXZWJJREwg
Z2VuZXJhdG9yIGlzIGZpeGVkIHRvIHNldCBSZWFkT25seSBmb3IgW1J1bnRpbWVDb25kaXRpb25h
bGx5UmVhZFdyaXRlXSBhdHRyaWJ1dGVzLgotICAgICAgICAgICAgICAgIGlmICghY3VzdG9tU2V0
dGVyKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
UHV0VmFsdWVGdW5jIGN1c3RvbVNldHRlciA9IHByb3BlcnR5LT5jdXN0b21TZXR0ZXI7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGN1c3RvbVNldHRlcik7CiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYgd2UncmUgbm90IGFuIHVuY2Fj
aGVhYmxlIGRpY3Rpb25hcnk6CiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTM0NwogICAgICAgICAgICAgICAgIHNsb3Quc2V0Q3Vz
dG9tQWNjZXNzb3Iob2JqLCBjdXN0b21TZXR0ZXIpOwogICAgICAgICAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgICAgICAgICBjdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjplbmNvZGUoc2xvdC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgY3VzdG9tU2V0dGVyKG9iai0+Z2xvYmFsT2Jq
ZWN0KHZtKSwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3QudGhpc1ZhbHVlKCkpLCBKU1ZhbHVlOjplbmNv
ZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBQdXRWYWx1ZUZ1bmMgY3VzdG9t
U2V0dGVyID0gcHJvcGVydHktPmN1c3RvbVNldHRlcjsKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogT25jZSBsZWdhY3kgUmVnRXhwIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZCwgdGhlcmUgd291
bGQgYmUgbm8gdXNlIGNhc2UgZm9yIGNhbGxpbmcgQ3VzdG9tVmFsdWUgc2V0dGVyIGlmIHJlY2Vp
dmVyIGlzIGFsdGVyZWQuCiAgICAgICAgICAgICAgICAgaWYgKGN1c3RvbVNldHRlciAmJiAhKGlz
VGhpc1ZhbHVlQWx0ZXJlZChzbG90LCBvYmopICYmIHNsb3QuY29udGV4dCgpID09IFB1dFByb3Bl
cnR5U2xvdDo6UmVmbGVjdFNldCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYgd2UncmUgbm90IGFuIHVuY2FjaGVhYmxl
IGRpY3Rpb25hcnk6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5j
cHAJKHJldmlzaW9uIDI3OTA2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDE4IEBAIHZvaWQgcmVpZnlTdGF0
aWNBY2Nlc3NvcihWTSYgdm0sIGNvbnN0IEgKICAgICAgICAgICAgIGdldHRlciA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCBnZXR0ZXJOYW1lLCB2YWx1ZS5hY2Nlc3Nv
ckdldHRlcigpKTsKICAgICAgICAgfQogICAgIH0KLSAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29y
ID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBudWxscHRy
KTsKKyAgICBKU09iamVjdCogc2V0dGVyID0gbnVsbHB0cjsKKyAgICBpZiAodmFsdWUuYWNjZXNz
b3JTZXR0ZXIoKSkgeworICAgICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgUHJvcGVydHlB
dHRyaWJ1dGU6OkJ1aWx0aW4pCisgICAgICAgICAgICBzZXR0ZXIgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHZhbHVlLmJ1aWx0aW5BY2Nlc3NvclNldHRlckdlbmVyYXRvcigpKHZtKSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgc2V0dGVyTmFtZSA9
IHRyeU1ha2VTdHJpbmcoInNldCAiX3MsIFN0cmluZygqcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSkpOworICAgICAgICAgICAgaWYgKCFzZXR0ZXJOYW1lKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIHNldHRlciA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAxLCBzZXR0ZXJOYW1lLCB2YWx1ZS5hY2Nlc3NvclNldHRlcigpKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBzZXR0ZXIpOwogICAgIHRoaXNPYmplY3QucHV0RGly
ZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgcHJvcGVydHlOYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCShyZXZpc2lvbiAyNzkw
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTIgQEAgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmZ1
bmN0aW9uR2V0dGVyKEpTRwogICAgIHJldHVybiBtX2RhdGEuZ2V0dGVyLmdldHRlclNldHRlci0+
Y2FsbEdldHRlcihnbG9iYWxPYmplY3QsIG1fdGhpc1ZhbHVlKTsKIH0KIAotSlNWYWx1ZSBQcm9w
ZXJ0eVNsb3Q6OmN1c3RvbUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAorSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmN1c3Rv
bUdldHRlcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CisgICAg
QVNTRVJUKG1fc2xvdEJhc2UpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X3Nsb3RCYXNlLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gbV9h
dHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yID8gbV90aGlzVmFs
dWUgOiBKU1ZhbHVlKHNsb3RCYXNlKCkpOwogICAgIGlmIChhdXRvIGRvbUF0dHJpYnV0ZSA9IHRo
aXMtPmRvbUF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHModm0sIGRvbUF0dHJpYnV0ZS0+Y2xh
c3NJbmZvKSkgewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgICAgICAgICAgcmV0dXJuIHRocm93RE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGRvbUF0dHJpYnV0ZS0+Y2xhc3NJbmZvLCBwcm9wZXJ0eU5h
bWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgJKHJldmlzaW9uIDI3OTA2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIo
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGN1
c3RvbUdldHRlcihKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjdXN0b21HZXR0ZXIoVk0mLCBQcm9wZXJ0eU5hbWUpIGNv
bnN0OwogCiAgICAgdW5pb24gewogICAgICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZTsKQEAgLTQw
NSw3ICs0MDUsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90OjpnZXRWCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLnZhbHVlKTsKICAgICBpZiAobV9w
cm9wZXJ0eVR5cGUgPT0gVHlwZUdldHRlcikKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uR2V0dGVy
KGdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIGN1c3RvbUdldHRlcihnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIGN1c3RvbUdldHRlcihnZXRWTShnbG9iYWxPYmplY3Qp
LCBwcm9wZXJ0eU5hbWUpOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90
OjpnZXRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBwcm9wZXJ0
eU5hbWUpIGNvbnN0CkBAIC00MTUsNyArNDE1LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIFBy
b3BlcnR5U2xvdDo6Z2V0VgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS52
YWx1ZSk7CiAgICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVHZXR0ZXIpCiAgICAgICAgIHJl
dHVybiBmdW5jdGlvbkdldHRlcihnbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBjdXN0b21HZXR0
ZXIoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAg
ICByZXR1cm4gY3VzdG9tR2V0dGVyKGdldFZNKGdsb2JhbE9iamVjdCksIElkZW50aWZpZXI6OmZy
b20odm0sIHByb3BlcnR5TmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAko
cmV2aXNpb24gMjc5MDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9H
ZXR0ZXJEZXNjcmlwdGlvbik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihzeW1i
b2xQcm90b0dldHRlckRlc2NyaXB0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHN5bWJvbFByb3RvRnVuY1RvU3RyaW5nKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YpOwogCkBAIC04NywxMiArODcsMTIgQEAgaW5s
aW5lIFN5bWJvbCogdHJ5RXh0cmFjdFN5bWJvbChWTSYgdm0sIAogICAgIHJldHVybiBhc1N5bWJv
bChqc0Nhc3Q8U3ltYm9sT2JqZWN0Kj4odGhpc09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiB9
CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9u
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24sIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN5bWJvbCogc3ltYm9s
ID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgU3lt
Ym9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKCFzeW1ib2wpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIFN5bWJvbERlc2NyaXB0aW9uVHlwZUVycm9yKTsKICAgICBz
Y29wZS5yZWxlYXNlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwCShyZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTEsNyArMTU5MSw5IEBAIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGN1c3RvbUcKIHN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGN1c3RvbUdldEFjY2Vzc29yR2xvYmFsT2JqZWN0KTsKIHN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGN1c3RvbUdldFZhbHVlR2xvYmFsT2JqZWN0KTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldEFjY2Vzc29yKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldFZhbHVlKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKGN1c3RvbUZ1bmN0aW9uU2V0dGVy
KTsKIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGN1c3RvbUdldEFjY2Vzc29yLCAoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCkBAIC0x
NjMzLDYgKzE2MzUsMjIgQEAgSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldEFjY2Vz
cwogICAgIHJldHVybiB0cnVlOwogfQogCitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9t
U2V0QWNjZXNzb3JHbG9iYWxPYmplY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIG9iamVjdC0+cHV0KG9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdWx0IiksIGdsb2Jh
bE9iamVjdCwgc2xvdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKGN1c3RvbVNldFZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgc2xvdFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAg
LTE2NTEsNiArMTY2OSwyNCBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0VmFs
dWUsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjdXN0
b21TZXRWYWx1ZUdsb2JhbE9iamVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHNsb3RWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1
ZTo6ZGVjb2RlKHNsb3RWYWx1ZSkuaW5oZXJpdHM8SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyPihn
bG9iYWxPYmplY3QtPnZtKCkpKTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Cisg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBvYmplY3QtPnB1dChvYmplY3Qs
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3VsdCIpLCBnbG9i
YWxPYmplY3QsIHNsb3QpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIEpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihjdXN0b21GdW5jdGlvblNldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAgLTE2
NzgsOSArMTcxNCwxMyBAQCB2b2lkIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcjo6ZmluaXNoQ3Jl
CiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJjdXN0b21BY2Nlc3NvciIpLAogICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3IsIGN1c3RvbVNldEFjY2Vzc29yKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikpOwogICAgIHB1dERp
cmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9t
VmFsdWVHbG9iYWxPYmplY3QiKSwKLSAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGN1c3RvbUdldFZhbHVlR2xvYmFsT2JqZWN0LCBudWxscHRyKSwgMCk7CisgICAgICAgIEN1
c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRWYWx1ZUdsb2JhbE9iamVjdCwg
Y3VzdG9tU2V0VmFsdWVHbG9iYWxPYmplY3QpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlKSk7CiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Io
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21BY2Nlc3Nvckdsb2JhbE9iamVj
dCIpLAotICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNj
ZXNzb3JHbG9iYWxPYmplY3QsIG51bGxwdHIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpOworICAgICAgICBDdXN0b21HZXR0
ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3JHbG9iYWxPYmplY3QsIGN1c3Rv
bVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikpOworICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29y
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tVmFsdWVOb1NldHRlciIpLAor
ICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0VmFsdWUsIG51
bGxwdHIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZh
bHVlKSk7CisgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjdXN0b21BY2Nlc3NvclJlYWRPbmx5IiksCisgICAgICAgIEN1c3RvbUdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3NvciwgbnVsbHB0ciksIFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CiAKICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImN1c3RvbUZ1bmN0aW9uIiksCiAgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCBjdXN0b21HZXRBY2Nlc3NvciwgY3VzdG9tRnVuY3Rpb25TZXR0ZXIpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5MDY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0dldHRlckV4
cG9ydHMpOwogfQogCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5sdXQu
aCIKQEAgLTQ2LDcgKzQ2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5SW5zdGFuY2VQ
cm90bwogCiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmgK
ICBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseUluc3RhbmNlCi0gZXhwb3J0cyB3ZWJB
c3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhwb3J0cyBBY2Nlc3NvciAwCisgZXhwb3J0cyB3ZWJB
c3NlbWJseUluc3RhbmNlUHJvdG9HZXR0ZXJFeHBvcnRzIEFjY2Vzc29yCiAgQGVuZAogICovCiAK
QEAgLTYyLDEyICs2MiwxMiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5SW5z
dGFuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0dldHRlckV4cG9ydHMsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBp
bnN0YW5jZSA9IGdldEluc3RhbmNlKGdsb2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOyAKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gZ2V0SW5zdGFu
Y2UoZ2xvYmFsT2JqZWN0LCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNlLT5tb2R1bGVSZWNvcmQoKS0+
ZXhwb3J0c09iamVjdCgpKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1lbW9yeVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3Nl
bWJseU1lbW9yeVByb3RvRnVuY0dyb3cpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04od2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlNZW1vcnlQcm90b0dldHRlckJ1ZmZlcik7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY1R5
cGUpOwogfQogCkBAIC01Myw3ICs1Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseU1l
bW9yeVByb3RvdHkKIC8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0
LmgKIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5TWVtb3J5CiAgZ3JvdyAgIHdlYkFz
c2VtYmx5TWVtb3J5UHJvdG9GdW5jR3JvdyAgIEZ1bmN0aW9uIDEKLSBidWZmZXIgd2ViQXNzZW1i
bHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIgQWNjZXNzb3IgMAorIGJ1ZmZlciB3ZWJBc3NlbWJseU1l
bW9yeVByb3RvR2V0dGVyQnVmZmVyIEFjY2Vzc29yCiAgdHlwZSAgIHdlYkFzc2VtYmx5TWVtb3J5
UHJvdG9GdW5jVHlwZSAgIEZ1bmN0aW9uIDAKIEBlbmQKICovCkBAIC04OCwxMiArODgsMTIgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtbwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0LnBhZ2VDb3VudCgpKSk7CiB9CiAKLUpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlciwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJseU1lbW9yeVByb3RvR2V0dGVyQnVmZmVyLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1i
bHlNZW1vcnkqIG1lbW9yeSA9IGdldE1lbW9yeShnbG9iYWxPYmplY3QsIHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsgCisgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0gZ2V0TWVt
b3J5KGdsb2JhbE9iamVjdCwgdm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsgCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUobWVtb3J5LT5idWZmZXIoZ2xvYmFsT2Jq
ZWN0KSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTA2NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgpOworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlUYWJsZVByb3RvR2V0dGVyTGVuZ3RoKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1
bmNHcm93KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFi
bGVQcm90b0Z1bmNHZXQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNz
ZW1ibHlUYWJsZVByb3RvRnVuY1NldCk7CkBAIC01Miw3ICs1Miw3IEBAIGNvbnN0IENsYXNzSW5m
byBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXAKIAogLyogU291cmNlIGZvciBXZWJBc3NlbWJseVRh
YmxlUHJvdG90eXBlLmx1dC5oCiAgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlUYWJs
ZQotIGxlbmd0aCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoIEFjY2Vzc29yIDAKKyBs
ZW5ndGggd2ViQXNzZW1ibHlUYWJsZVByb3RvR2V0dGVyTGVuZ3RoIEFjY2Vzc29yCiAgZ3JvdyAg
IHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93ICAgRnVuY3Rpb24gMQogIGdldCAgICB3ZWJB
c3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0ICAgIEZ1bmN0aW9uIDEKICBzZXQgICAgd2ViQXNzZW1i
bHlUYWJsZVByb3RvRnVuY1NldCAgICBGdW5jdGlvbiAyCkBAIC03MiwxMiArNzIsMTIgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseVRhYmxlKgogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5j
TGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHdlYkFzc2VtYmx5VGFibGVQcm90b0dldHRl
ckxlbmd0aCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZ2xvYmFsT2JqZWN0LCB2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9
IGdldFRhYmxlKGdsb2JhbE9iamVjdCwgdm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGFibGUtPmxlbmd0aCgpKSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0wNi0yMSAgQWxleGV5
IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gQ2FsbCBj
dXN0b20gYWNjZXNzb3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFsIG9iamVj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTk3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBmaXhlcyBjcm9zcy1yZWFsbSBXZWJJREwgZ2V0dGVycyAvIHNldHRlcnMgdG8gdXNlIGNv
cnJlY3QgKHRoZWlyKSByZWFsbQorICAgICAgICBmb3IgaW1wbGljaXQgfHRoaXN8IHZhbHVlIGFu
ZCBUeXBlRXJyb3IgWzFdWzJdLCBhbGlnbmluZyBhdHRyaWJ1dGVzIHdpdGggb3BlcmF0aW9ucwor
ICAgICAgICBhbmQgV2ViS2l0IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAg
IEFsc28sIGVuYWJsZXMgZnV0dXJlIHJlbW92YWwgb2YgTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVy
dE5lZWRzR2xvYmFsT2JqZWN0LgorCisgICAgICAgIFsxXSBodHRwczovL2hleWNhbS5naXRodWIu
aW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLWdldHRlciAoc3RlcCAxLjEuMi4xKQorICAgICAgICBb
Ml0gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1zZXR0ZXIg
KHN0ZXAgNC4xKQorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlz
LXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFs
dWUtY3Jvc3MtcmVhbG0uaHRtbAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisKIDIwMjEtMDYtMjEgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSByZWR1bmRhbnQgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91
dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQ
YWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc5MDY2KQorKysgU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50Q3Vz
dG9tLmgKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgKICAgICBiaW5kaW5n
cy9qcy9KU0V4ZWNTdGF0ZS5oCisgICAgYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5oCiAg
ICAgYmluZGluZ3MvanMvSlNNZWRpYUxpc3RDdXN0b20uaAogICAgIGJpbmRpbmdzL2pzL0pTTm9k
ZUN1c3RvbS5oCiAgICAgYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MDAsNiArMjcwMCw3IEBACiAJCTg0QzVCMkZC
MTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEM1QjJGOTEyMTZEQzgx
MDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oICovOyB9OwogCQk4NEM2
Nzg0RDEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QzY3ODRCMTIxNDgxNDcwMEE5MjkwMiAv
KiBTVkdQYXRoQmxlbmRlci5oICovOyB9OwogCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyog
QWZmaW5lVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NEQwQzQwNTExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODRFN0VDMzQy
NjgwRkEzQTAwQjlDMDIyIC8qIEpTTG9jYXRpb25DdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0RTdFQzMzMjY4MEZBMkUwMEI5QzAyMiAvKiBK
U0xvY2F0aW9uQ3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODUwMzFCM0QwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTAzMUIy
NzBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZlbnQuaCAqLzsgfTsKIAkJODUwMzFC
M0UwQTQ0RUZDNzAwRjk5MkUwIC8qIERhdGFUcmFuc2Zlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMzFCMjgwQTQ0RUZDNzAwRjk5MkUwIC8qIERh
dGFUcmFuc2Zlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg1MDMxQjQwMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlwYm9hcmRFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMzFCMkEwQTQ0RUZD
NzAwRjk5MkUwIC8qIENsaXBib2FyZEV2ZW50LmggKi87IH07CkBAIC0xMTM3MSw2ICsxMTM3Miw3
IEBACiAJCTg0RDBDNDAzMTExNUYxRDQwMDE4QUEzNCAvKiBBZmZpbmVUcmFuc2Zvcm0uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWZmaW5lVHJhbnNmb3JtLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODREMEM0MDUxMTE1RjFFQTAwMThBQTM0IC8q
IEFmZmluZVRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZmZp
bmVUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODREOUExNUYyNjAy
REQ0MDAwOEQ2RDVBIC8qIEpTRE9NQ29uc3RydWN0b3JOb3RDYWxsYWJsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNvbnN0cnVjdG9yTm90Q2FsbGFibGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODRFN0VDMzMyNjgwRkEyRTAwQjlDMDIyIC8qIEpT
TG9jYXRpb25DdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNMb2NhdGlvbkN1c3RvbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTAzMUIyNjBBNDRFRkM3MDBGOTkyRTAgLyogQmVm
b3JlVW5sb2FkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJlZm9yZVVubG9hZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUw
MzFCMjcwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCZWZvcmVVbmxvYWRFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NTAzMUIyODBBNDRFRkM3MDBGOTkyRTAgLyogRGF0YVRyYW5zZmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhVHJhbnNmZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NTk0LDYgKzI3NTk2LDcgQEAKIAkJCQk2NTJG
QkJCQjBERTI3Q0I2MDAwMUQzODYgLyogSlNET01XaW5kb3dDdXN0b20uaCAqLywKIAkJCQlCQzU4
MjNGNDBDMEE5OERGMDA1M0YxQjUgLyogSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJ
QkNFMUM0M0YwRDk4MzBGNDAwM0IwMkYyIC8qIEpTTG9jYXRpb25DdXN0b20uY3BwICovLAorCQkJ
CTg0RTdFQzMzMjY4MEZBMkUwMEI5QzAyMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmggKi8sCiAJCQkJ
NEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0
b20uY3BwICovLAogCQkJCTQxOEMzOTVEMUM4RjBBQUIwMDUxQzhBMyAvKiBKU1JlYWRhYmxlU3Ry
ZWFtU291cmNlQ3VzdG9tLmNwcCAqLywKIAkJCQk0NkJDQkJCRTIwODUwMDVCMDA3MTA2MzggLyog
SlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwICovLApAQCAtMzM2OTgsNiArMzM3MDEsNyBAQAog
CQkJCTcxMjQ3RTNFMUZFQTVGOTAwMDhDMDhDRSAvKiBKU0tleWZyYW1lRWZmZWN0T3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1RjQ1NDMwRjdDM0I1RjAwRDdDMUZCIC8qIEpTTGF6eUV2
ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTFDNDNDMEQ5ODMwRDMwMDNCMDJG
MiAvKiBKU0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NEU3RUMzNDI2ODBGQTNBMDBC
OUMwMjIgLyogSlNMb2NhdGlvbkN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNBODA2MjAx
RTAzQjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREFC
NkQyRTE3QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9zdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTU5NzQxREIxQjdEMTQwMTAwMjAxQzkyIC8qIEpTTWVkaWFEZXZpY2VJbmZvLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRp
b25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTIg
KzIxLDEzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTTG9jYXRp
b24uaCIKKyNpbmNsdWRlICJKU0xvY2F0aW9uQ3VzdG9tLmgiCiAKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgor
I2luY2x1ZGUgIkpTTG9jYXRpb24uaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNGdW5jdGlvbi5oPgpAQCAtMTg4LDQgKzE4OSw2NCBAQCBib29sIEpTTG9jYXRp
b246OnByZXZlbnRFeHRlbnNpb25zKEpTT2JqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBsb2Nh
dGlvbk5hdGl2ZUZ1bmN0aW9uR2V0dGVyQm9keShKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgRnVuY3Rv
ciBmdW5jdG9yKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTTG9jYXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAgICByZXR1cm4gdGhyb3dWTURPTUF0dHJpYnV0
ZUdldHRlclR5cGVFcnJvcigmZ2xvYmFsT2JqZWN0LCBzY29wZSwgSlNMb2NhdGlvbjo6aW5mbygp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBhdHRyaWJ1dGVOYW1lKSk7CisKKyAgICBhdXRv
JiBsb2NhdGlvbiA9IHRoaXNPYmplY3QtPndyYXBwZWQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVVNWU3RyaW5nPihnbG9iYWxPYmplY3QsIHNjb3BlLCBmdW5jdG9yKGxv
Y2F0aW9uKSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiAKK3N0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgbG9jYXRpb25OYXRpdmVGdW5jdGlvblNldHRlckJvZHkoSlNHbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IGNoYXIq
IGF0dHJpYnV0ZU5hbWUsIEZ1bmN0b3IgZnVuY3RvcikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3Qudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmNhbGxGcmFtZS0+Y2FsbGVyTGV4aWNh
bEdsb2JhbE9iamVjdCh2bSk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNMb2NhdGlvbio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRoaXNP
YmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRE9NQXR0cmlidXRlU2V0dGVyVHlwZUVycm9y
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgSlNMb2NhdGlvbjo6aW5mbygpLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCBhdHRyaWJ1dGVOYW1lKSk7CisKKyAgICBhdXRvJiBsb2NhdGlv
biA9IHRoaXNPYmplY3QtPndyYXBwZWQoKTsKKyAgICBib29sIGlzU2FtZU9yaWdpbiA9IEJpbmRp
bmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygmbGV4aWNhbEdsb2JhbE9i
amVjdCwgbG9jYXRpb24ud2luZG93KCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcik7CisgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpc1NhbWVPcmlnaW4gPyB0
cnVlIDogIXN0cmNtcChhdHRyaWJ1dGVOYW1lLCAiaHJlZiIpKTsKKyAgICBhdXRvJiBnbG9iYWxP
YmplY3RGb3JFeGNlcHRpb25zID0gaXNTYW1lT3JpZ2luID8gZ2xvYmFsT2JqZWN0IDogbGV4aWNh
bEdsb2JhbE9iamVjdDsKKworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFVTVlN0
cmluZz4oZ2xvYmFsT2JqZWN0Rm9yRXhjZXB0aW9ucywgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworCisgICAgYXV0byByZXN1
bHQgPSBmdW5jdG9yKGxvY2F0aW9uLCBhY3RpdmVET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVj
dCksIGZpcnN0RE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3QpLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CisgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkpCisgICAgICAg
IHByb3BhZ2F0ZUV4Y2VwdGlvbihnbG9iYWxPYmplY3RGb3JFeGNlcHRpb25zLCBzY29wZSwgcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworfQorCisjZGVmaW5lIERFRklORV9MT0NBVElPTl9OQVRJVkVfRlVOQ1RJ
T05fQUNDRVNTT1JfQVRUUklCVVRFX0dFVFRFUihuYW1lLCBfKSBcCisgICAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzTG9jYXRpb25fIyNuYW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBs
b2NhdGlvbk5hdGl2ZUZ1bmN0aW9uR2V0dGVyQm9keSgqZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUs
ICNuYW1lLCBbXSAoTG9jYXRpb24mIGxvY2F0aW9uKSB7IFwKKyAgICAgICAgICAgIHJldHVybiBs
b2NhdGlvbi5uYW1lKCk7IFwKKyAgICAgICAgfSk7IFwKKyAgICB9CitMT0NBVElPTl9FQUNIX05B
VElWRV9GVU5DVElPTl9BQ0NFU1NPUl9BVFRSSUJVVEUoREVGSU5FX0xPQ0FUSU9OX05BVElWRV9G
VU5DVElPTl9BQ0NFU1NPUl9BVFRSSUJVVEVfR0VUVEVSKQorI3VuZGVmIERFRklORV9MT0NBVElP
Tl9OQVRJVkVfRlVOQ1RJT05fQUNDRVNTT1JfQVRUUklCVVRFX0dFVFRFUgorCisjZGVmaW5lIERF
RklORV9MT0NBVElPTl9OQVRJVkVfRlVOQ1RJT05fQUNDRVNTT1JfQVRUUklCVVRFX1NFVFRFUihu
YW1lLCBzZXR0ZXJOYW1lKSBcCisgICAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHNldEpTTG9j
YXRpb25fIyNuYW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBsb2NhdGlvbk5hdGl2ZUZ1bmN0
aW9uU2V0dGVyQm9keSgqZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsICNuYW1lLCBbXSAoTG9jYXRp
b24mIGxvY2F0aW9uLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdp
bmRvdywgU3RyaW5nJiYgdmFsdWUpIHsgXAorICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uLnNl
dHRlck5hbWUoYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgV1RGTW92ZSh2YWx1ZSkpOyBcCisg
ICAgICAgIH0pOyBcCisgICAgfQorTE9DQVRJT05fRUFDSF9OQVRJVkVfRlVOQ1RJT05fQUNDRVNT
T1JfQVRUUklCVVRFKERFRklORV9MT0NBVElPTl9OQVRJVkVfRlVOQ1RJT05fQUNDRVNTT1JfQVRU
UklCVVRFX1NFVFRFUikKKyN1bmRlZiBERUZJTkVfTE9DQVRJT05fTkFUSVZFX0ZVTkNUSU9OX0FD
Q0VTU09SX0FUVFJJQlVURV9TRVRURVIKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBbGV4ZXkgU2h2YXlrYSA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNkZWZpbmUgTE9DQVRJT05fRUFDSF9OQVRJVkVfRlVOQ1RJT05fQUNDRVNTT1JfQVRU
UklCVVRFKG1hY3JvKSBcCisgICAgbWFjcm8oaHJlZiwgc2V0SHJlZikgXAorICAgIG1hY3JvKHBy
b3RvY29sLCBzZXRQcm90b2NvbCkgXAorICAgIG1hY3JvKGhvc3QsIHNldEhvc3QpIFwKKyAgICBt
YWNybyhob3N0bmFtZSwgc2V0SG9zdG5hbWUpIFwKKyAgICBtYWNybyhwb3J0LCBzZXRQb3J0KSBc
CisgICAgbWFjcm8ocGF0aG5hbWUsIHNldFBhdGhuYW1lKSBcCisgICAgbWFjcm8oc2VhcmNoLCBz
ZXRTZWFyY2gpIFwKKyAgICBtYWNybyhoYXNoLCBzZXRIYXNoKQorCisjZGVmaW5lIERFQ0xBUkVf
TE9DQVRJT05fTkFUSVZFX0ZVTkNUSU9OX0FDQ0VTU09SX0FUVFJJQlVURShuYW1lLCBfKSBcCisg
ICAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc0xvY2F0aW9uXyMjbmFtZSk7IFwKKyAgICBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHNldEpTTG9jYXRpb25fIyNuYW1lKTsKK0xPQ0FUSU9O
X0VBQ0hfTkFUSVZFX0ZVTkNUSU9OX0FDQ0VTU09SX0FUVFJJQlVURShERUNMQVJFX0xPQ0FUSU9O
X05BVElWRV9GVU5DVElPTl9BQ0NFU1NPUl9BVFRSSUJVVEUpCisjdW5kZWYgREVDTEFSRV9MT0NB
VElPTl9OQVRJVkVfRlVOQ1RJT05fQUNDRVNTT1JfQVRUUklCVVRFCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjA1
NCw2ICsyMDU0LDEyIEBAIHN1YiBHZXRKU0NBdHRyaWJ1dGVzRm9yQXR0cmlidXRlCiAgICAgbXkg
JGlzR2xvYmFsQ29uc3RydWN0b3IgPSAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUo
JGF0dHJpYnV0ZS0+dHlwZSk7CiAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSIpIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntO
b3RFbnVtZXJhYmxlfSB8fCAkaXNHbG9iYWxDb25zdHJ1Y3Rvcik7CiAgICAgcHVzaChAc3BlY2lh
bHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSIpIGlmIElzUmVhZG9ubHkoJGF0
dHJpYnV0ZSk7CisKKyAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3Vz
dG9tTmF0aXZlRnVuY3Rpb25BY2Nlc3Nvcn0pIHsKKyAgICAgICAgcHVzaChAc3BlY2lhbHMsICJK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciIpOworICAgICAgICByZXR1cm4gInN0YXRp
Y19jYXN0PHVuc2lnbmVkPigiIC4gKChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8ICIsIEBzcGVj
aWFscykgOiAiMCIpIC4gIikiOworICAgIH0KKwogICAgIHB1c2goQHNwZWNpYWxzLCAiSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IiKSB1bmxlc3MgJGlzR2xvYmFsQ29uc3Ry
dWN0b3Igb3IgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgcHVzaChA
c3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUiKSBpZiBJc0Fj
Y2VsZXJhdGVkRE9NQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgIHB1c2go
QHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlIikgaWYg
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfTsKQEAgLTUxNjYsNiArNTE3
Miw3IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckFuZFNldHRlckRlY2wKIAogICAgIHJl
dHVybiBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICByZXR1cm4g
aWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZX07CisgICAgcmV0dXJuIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0N1c3RvbU5hdGl2ZUZ1bmN0aW9uQWNjZXNzb3J9OwogCiAgICAgbXkgJGNvbmRpdGlv
bmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0
dHJpYnV0ZSk7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJp
bmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CkBAIC01MzI3LDYgKzUzMzQsNyBAQCBzdWIg
R2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJEZWZpbml0aW9uCiAKICAgICByZXR1cm4gaWYgSXNKU0J1
aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgcmV0dXJuIGlmICRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9
OworICAgIHJldHVybiBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21O
YXRpdmVGdW5jdGlvbkFjY2Vzc29yfTsKIAogICAgIG15ICRhdHRyaWJ1dGVHZXR0ZXJOYW1lID0g
R2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRl
KTsKICAgICBteSAkYXR0cmlidXRlR2V0dGVyQm9keU5hbWUgPSAkYXR0cmlidXRlR2V0dGVyTmFt
ZSAuICJHZXR0ZXIiOwpAQCAtNTUwOSw2ICs1NTE3LDcgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRl
U2V0dGVyRGVmaW5pdGlvbgogICAgIHJldHVybiBpZiAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1
Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSk7CiAgICAgcmV0dXJuIGlmIElzSlNCdWlsdGluKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgIHJldHVybiBpZiAkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsKKyAgICBy
ZXR1cm4gaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmF0aXZlRnVu
Y3Rpb25BY2Nlc3Nvcn07CiAKICAgICBteSAkY29uZGl0aW9uYWwgPSAkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CiAgICAgaWYgKCRjb25kaXRpb25hbCkgewpA
QCAtNzA4OCw2ICs3MDk3LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZURPTUNvbnZlcnROZWVkc1N0
YXRlCiAgICAgcmV0dXJuIDA7CiB9CiAKKyMgRklYTUU6IElzIGV4dHJhIGdsb2JhbCBvYmplY3Qg
bmVjZXNzYXJ5IGFmdGVyIGh0dHBzOi8vd2Via2l0Lm9yZy9iL2lkPTIyNTk5Nz8gSXQgc2hvdWxk
IGJlIHRoZSBzYW1lIGFzIGxleGljYWxHbG9iYWxPYmplY3QuCiBzdWIgTmF0aXZlVG9KU1ZhbHVl
RE9NQ29udmVydE5lZWRzR2xvYmFsT2JqZWN0CiB7CiAgICAgbXkgKCR0eXBlKSA9IEBfOwpAQCAt
NzIzOSw2ICs3MjQ5LDkgQEAgc3ViIEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJheQogICAgICAg
ICAgICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4i
OwogICAgICAgICB9IGVsc2lmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vQnVpbHRpbi8pIHsKICAg
ICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRv
cj4iOworICAgICAgICB9IGVsc2lmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vKD88IUN1c3RvbSlB
Y2Nlc3Nvci8pIHsKKyAgICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+IjsKKyAgICAgICAgICAgICRzZWNvbmRUYXJnZXRUeXBlID0gInN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPiI7CiAgICAgICAgIH0gZWxzaWYgKCJAJHNwZWNp
YWxzWyRpXSIgPX4gbS9Db25zdGFudEludGVnZXIvKSB7CiAgICAgICAgICAgICAkZmlyc3RUYXJn
ZXRUeXBlID0gIiI7CiAgICAgICAgIH0gZWxzaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9ET01K
SVRBdHRyaWJ1dGUvKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjc5MDY2KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkK
QEAgLTQ3MSw2ICs0NzEsOSBAQAogICAgICAgICAgICAgInZhbHVlcyI6IFsiRXhlY1N0YXRlIiwg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiLCAiR2xvYmFsT2JqZWN0IiwgIkFjdGl2ZVdpbmRvdyIs
ICJGaXJzdFdpbmRvdyIsICJQcm9wZXJ0eU5hbWUiXSwKICAgICAgICAgICAgICJzdXBwb3J0c0Nv
bmp1bmN0aW9uIjogdHJ1ZQogICAgICAgICB9LAorICAgICAgICAiQ3VzdG9tTmF0aXZlRnVuY3Rp
b25BY2Nlc3NvciI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0
ZSJdCisgICAgICAgIH0sCiAgICAgICAgICJTZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGUi
OiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKICAgICAg
ICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRp
b24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCShy
ZXZpc2lvbiAyNzkwNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNDEsMjIgKzQxLDIzIEBACiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVF
eG90aWNPYmplY3QsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBMZWdhY3lV
bmZvcmdlYWJsZSwKKyAgICBKU0N1c3RvbUhlYWRlciwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBp
bnRlcmZhY2UgTG9jYXRpb24gewotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmly
c3RXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eU9uU2V0dGVyXSBzdHJpbmdpZmllciBhdHRyaWJ1
dGUgVVNWU3RyaW5nIGhyZWY7CisgICAgW0N1c3RvbU5hdGl2ZUZ1bmN0aW9uQWNjZXNzb3JdIHN0
cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKIAogICAgIFtDYWxsV2l0aD1BY3Rp
dmVXaW5kb3cmRmlyc3RXaW5kb3ddIHVuZGVmaW5lZCBhc3NpZ24oVVNWU3RyaW5nIHVybCk7CiAg
ICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93
XSB1bmRlZmluZWQgcmVwbGFjZShVU1ZTdHJpbmcgdXJsKTsKICAgICBbQ2FsbFdpdGg9QWN0aXZl
V2luZG93XSB1bmRlZmluZWQgcmVsb2FkKCk7CiAKICAgICAvLyBVUkkgZGVjb21wb3NpdGlvbiBh
dHRyaWJ1dGVzCi0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10g
YXR0cmlidXRlIFVTVlN0cmluZyBwcm90b2NvbDsKLSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZl
V2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhvc3Q7Ci0gICAgW1NldHRl
ckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBo
b3N0bmFtZTsKLSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBh
dHRyaWJ1dGUgVVNWU3RyaW5nIHBvcnQ7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRv
dyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBwYXRobmFtZTsKLSAgICBbU2V0dGVy
Q2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHNl
YXJjaDsKLSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRy
aWJ1dGUgVVNWU3RyaW5nIGhhc2g7CisgICAgW0N1c3RvbU5hdGl2ZUZ1bmN0aW9uQWNjZXNzb3Jd
IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcHJvdG9jb2w7CisgICAgW0N1c3RvbU5hdGl2ZUZ1bmN0aW9u
QWNjZXNzb3JdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaG9zdDsKKyAgICBbQ3VzdG9tTmF0aXZlRnVu
Y3Rpb25BY2Nlc3Nvcl0gYXR0cmlidXRlIFVTVlN0cmluZyBob3N0bmFtZTsKKyAgICBbQ3VzdG9t
TmF0aXZlRnVuY3Rpb25BY2Nlc3Nvcl0gYXR0cmlidXRlIFVTVlN0cmluZyBwb3J0OworICAgIFtD
dXN0b21OYXRpdmVGdW5jdGlvbkFjY2Vzc29yXSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHBhdGhuYW1l
OworICAgIFtDdXN0b21OYXRpdmVGdW5jdGlvbkFjY2Vzc29yXSBhdHRyaWJ1dGUgVVNWU3RyaW5n
IHNlYXJjaDsKKyAgICBbQ3VzdG9tTmF0aXZlRnVuY3Rpb25BY2Nlc3Nvcl0gYXR0cmlidXRlIFVT
VlN0cmluZyBoYXNoOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47
CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3OTA2NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA2LTIyICBBbGV4ZXkgU2h2YXlr
YSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBh
Y2Nlc3NvcnMgLyB2YWx1ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSB0ZXN0cyB1
c2VkIHRvIHBhc3MgYXMgaXMsIHByb2JhYmx5LCBkdWUgdG8gY29tYmluYXRpb24gb2Ygb2xkIChp
bmNvcnJlY3QpIGJlaGF2aW9yIGFuZAorICAgICAgICBzb21lIGltcGxlbWVudGF0aW9uIGRldGFp
bHMgb2YgcnVuLXdlYmtpdC10ZXN0cy4gVGhleSBmYWlsIG9uIE1pbmlCcm93c2VyIC8gQ2hyb21l
IC8gRmlyZWZveAorICAgICAgICB1bmxlc3MgbW9kaWZpZWQgbm90IHVzZSBkYXRhOi8vIHByb3Rv
Y29sLCB3aGljaCBpcyBub3Qgc3lzdGVtIHVuZGVyIHRlc3QuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS5odG1sOgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlczogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3Vy
Y2VzL2R1bW15LWZyYW1lLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYXR0
cmlidXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWw6
CisgICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9t
LWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWw6CisKIDIwMjEtMDYtMjAgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENTUyBjb3VudGVyIHN0eWxlIGltcHJvdmVt
ZW50cyBmb3IgQXJtZW5pYW4sIFRhbWlsLCBhbmQgc29tZSBDSksgc3R5bGVzCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVt
ZW50L29iamVjdC1hcy1mcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3OTA2NikKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsMTAgKzUsMTAgQEAgUEFTUyB3aW5kb3cuZnJh
bWVzWzBdLmZyYW1lRWxlbWVudC5jb250ZQogUEFTUyB3aW5kb3cuZnJhbWVzWzFdLmZyYW1lRWxl
bWVudC5uYW1lIGlzICJvYmoiCiBQQVNTIHdpbmRvdy5mcmFtZXNbMV0uZnJhbWVFbGVtZW50LmNv
bnRlbnRXaW5kb3cgaXMgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVsZW1lbnQuY29udGVudERvY3Vt
ZW50LmRlZmF1bHRWaWV3CiBQQVNTIHdpbmRvdy5mcmFtZXNbMV0uZnJhbWVFbGVtZW50LmNvbnRl
bnRXaW5kb3cuZG9jdW1lbnQgaXMgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVsZW1lbnQuY29udGVu
dERvY3VtZW50Ci1Mb2FkaW5nICdkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRzIG9mIGlm
cmFtZScgaW4gaWZyYW1lLi4uCi1Mb2FkaW5nICdkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRl
bnRzIG9mIG9iamVjdCcgaW4gb2JqZWN0Li4uCi1QQVNTIHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRp
b24udG9TdHJpbmcoKSBpcyAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJh
bWUiCi1QQVNTIHdpbmRvdy5mcmFtZXNbMV0ubG9jYXRpb24udG9TdHJpbmcoKSBpcyAiZGF0YTp0
ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBvYmplY3QiCitMb2FkaW5nICdyZXNvdXJjZXMv
ZHVtbXktZnJhbWUtMi5odG1sJyBpbiBpZnJhbWUuLi4KK0xvYWRpbmcgJ3Jlc291cmNlcy9kdW1t
eS1mcmFtZS0xLmh0bWwnIGluIG9iamVjdC4uLgorUEFTUyB3aW5kb3cuZnJhbWVzWzBdLmxvY2F0
aW9uLmhyZWYuZW5kc1dpdGgoInJlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0bWwiKSBpcyB0cnVl
CitQQVNTIHdpbmRvdy5mcmFtZXNbMV0ubG9jYXRpb24uaHJlZi5lbmRzV2l0aCgicmVzb3VyY2Vz
L2R1bW15LWZyYW1lLTEuaHRtbCIpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9i
amVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLmh0bWwJKHJldmlz
aW9uIDI3OTA2NikKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29i
amVjdC1hcy1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogCiBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKIAotdmFyIHVwZGF0ZWRGcmFtZVVSTCA9ICJkYXRhOnRleHQvaHRt
bCxVcGRhdGVkIGNvbnRlbnRzIG9mIGlmcmFtZSI7Ci12YXIgdXBkYXRlZE9iamVjdFVSTCA9ICJk
YXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRzIG9mIG9iamVjdCI7Cit2YXIgdXBkYXRlZEZy
YW1lVVJMID0gInJlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0bWwiOwordmFyIHVwZGF0ZWRPYmpl
Y3RVUkwgPSAicmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbCI7CiAKIGZ1bmN0aW9uIHJ1blRl
c3RzKCkKIHsKQEAgLTM2LDggKzM2LDggQEAgZnVuY3Rpb24gaGFuZGxlTG9hZCgpCiAgICAgaWYg
KG51bUxvYWRzIDwgMikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2hvdWxkQmUoIndpbmRvdy5m
cmFtZXNbMF0ubG9jYXRpb24udG9TdHJpbmcoKSIsICciJyArIHVwZGF0ZWRGcmFtZVVSTCArICci
Jyk7Ci0gICAgc2hvdWxkQmUoIndpbmRvdy5mcmFtZXNbMV0ubG9jYXRpb24udG9TdHJpbmcoKSIs
ICciJyArIHVwZGF0ZWRPYmplY3RVUkwgKyAnIicpOworICAgIHNob3VsZEJlVHJ1ZShgd2luZG93
LmZyYW1lc1swXS5sb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCIke3VwZGF0ZWRGcmFtZVVSTH0iKWAp
OworICAgIHNob3VsZEJlVHJ1ZShgd2luZG93LmZyYW1lc1sxXS5sb2NhdGlvbi5ocmVmLmVuZHNX
aXRoKCIke3VwZGF0ZWRPYmplY3RVUkx9IilgKTsKIAogICAgIGZpbmlzaEpTVGVzdCgpOwogfQpA
QCAtNDYsOCArNDYsOCBAQCBmdW5jdGlvbiBoYW5kbGVMb2FkKCkKIDwvaGVhZD4KIDxib2R5IG9u
bG9hZD0icnVuVGVzdHMoKSI+CiAKLTxpZnJhbWUgbmFtZT0iZnJhbWUiIHNyYz0iZGF0YTp0ZXh0
L2h0bWwsT2xkIGNvbnRlbnRzIG9mIGlmcmFtZSI+PC9pZnJhbWU+Ci08b2JqZWN0IG5hbWU9Im9i
aiIgdHlwZT0idGV4dC9odG1sIiBkYXRhPSJkYXRhOnRleHQvaHRtbCxPbGQgY29udGVudHMgb2Yg
b2JqZWN0Ij48L29iamVjdD4KKzxpZnJhbWUgbmFtZT0iZnJhbWUiIHNyYz0icmVzb3VyY2VzL2R1
bW15LWZyYW1lLTEuaHRtbCI+PC9pZnJhbWU+Cis8b2JqZWN0IG5hbWU9Im9iaiIgdHlwZT0idGV4
dC9odG1sIiBkYXRhPSJyZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sIj48L29iamVjdD4KIAog
PC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVs
ZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVt
ZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyIEBACis8IURPQ1RZUEUgaHRtbD4KK09sZCBjb250ZW50cyBvZiBpZnJhbWUgLyBOZXcgY29u
dGVudHMgb2Ygb2JqZWN0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxl
bWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0
bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1l
bnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIgQEAKKzwhRE9DVFlQRSBodG1sPgorT2xkIGNvbnRlbnRzIG9mIG9iamVjdCAvIE5ldyBjb250
ZW50cyBvZiBpZnJhbWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1s
aXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQt
ZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCShyZXZpc2lvbiAyNzkwNjYpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJh
bWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IDxodG1sPgogPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgotPGlmcmFtZSBzcmM9J2RhdGE6dGV4dC9o
dG1sLDxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAh
PSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7
KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+Cis8aWZyYW1lIHNyY2RvYz0nPGEg
aWQ9ImEiIGhyZWY9IiUyMyIgb25jbGljaz0iZG9jdW1lbnQud3JpdGUod2luZG93ICE9IHRvcCA/
ICZhcG9zOzxwPkZBSUw8L3A+JmFwb3M7IDogJmFwb3M7PHA+UEFTUzwvcD4mYXBvczspOyByZXR1
cm4gZmFsc2UiPmxpbms8L2E+Jz48L2lmcmFtZT4KIDxzY3JpcHQ+CiBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3Mt
ZG9jLWNvbnRleHQtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQt
Mi5odG1sCShyZXZpc2lvbiAyNzkwNjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRy
aWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxodG1sPgogPGJvZHkgb25sb2FkPSJ0
ZXN0KCkiPgotPGlmcmFtZSBzcmM9J2RhdGE6dGV4dC9odG1sLDxhIGlkPSJhIiBocmVmPSIlMjMi
IG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBvczs8cD5GQUlMPC9w
PiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9h
Pic+PC9pZnJhbWU+Cis8aWZyYW1lIHNyY2RvYz0nPGEgaWQ9ImEiIGhyZWY9IiUyMyIgb25jbGlj
az0iZG9jdW1lbnQud3JpdGUod2luZG93ICE9IHRvcCA/ICZhcG9zOzxwPkZBSUw8L3A+JmFwb3M7
IDogJmFwb3M7PHA+UEFTUzwvcD4mYXBvczspOyByZXR1cm4gZmFsc2UiPmxpbms8L2E+Jz48L2lm
cmFtZT4KIDxzY3JpcHQ+CiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNp
b24gMjc5MDY2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA2LTIyICBBbGV4ZXkgU2h2YXlrYSAgPHNo
dmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3Nv
cnMgLyB2YWx1ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12
YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGlj
aXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUt
Y3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3Mt
cmVhbG0uaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9l
Y21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9jcmVhdGUtcmVhbG0uanM6IEFkZGVkLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1cHBvcnQv
ZHVtbXktaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3Jp
Z2luLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbDoKKwog
MjAyMS0wNi0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IENTUyBzZXJpYWxpemF0aW9uIGlzc3VlcyBhZmZlY3RpbmcgY3NzLWNvdW50ZXItc3R5bGVzIHRl
c3RzCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LWNzcy1jcm9zcy1vcmln
aW4uaHR0cHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2Zl
dGNoLXJlcXVlc3QtY3NzLWNyb3NzLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDI3OTA2NikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QtY3NzLWNyb3NzLW9y
aWdpbi5odHRwcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw2IEBACiAK
IFBBU1Mgc2V0dXAgZ2xvYmFsIHN0YXRlCiBQQVNTIE1JTUUgY2hlY2tpbmcgb2YgQ1NTIHJlc291
cmNlcyBmZXRjaGVkIHZpYSBzZXJ2aWNlIHdvcmtlciB3aGVuIENvbnRlbnQtVHlwZSBpcyBub3Qg
c2V0LgotRkFJTCBTYW1lLW9yaWdpbiBwb2xpY3kgZm9yIGFjY2VzcyB0byBDU1MgcmVzb3VyY2Vz
IGZldGNoZWQgdmlhIHNlcnZpY2Ugd29ya2VyIGFzc2VydF90aHJvd3NfZG9tOiBmdW5jdGlvbiAi
KCkgPT4gewotICAgIGYuY29udGVudERvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBd
LmNzc1RleHQ7Ci0gIH0iIHRocmV3IGFuIGV4Y2VwdGlvbiBmcm9tIHRoZSB3cm9uZyBnbG9iYWwK
K0ZBSUwgU2FtZS1vcmlnaW4gcG9saWN5IGZvciBhY2Nlc3MgdG8gQ1NTIHJlc291cmNlcyBmZXRj
aGVkIHZpYSBzZXJ2aWNlIHdvcmtlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJTZWN1cml0eUVycm9yOiBOb3QgYWxsb3dlZCB0byBhY2Nlc3Mg
Y3Jvc3Mtb3JpZ2luIHN0eWxlc2hlZXQiCiBQQVNTIGNsZWFudXAgZ2xvYmFsIHN0YXRlCiAKSW5k
ZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVu
Y29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1l
bmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxlLmh0bWwJKHJldmlzaW9u
IDI3OTA2NikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtOSw5ICs5LDEwIEBACiAgICAgICAgIDxpZnJhbWUgc3JjPSIuIiBp
ZD0iZnJhbWUiPjwvaWZyYW1lPgogICAgICAgICA8c2NyaXB0PgogcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CisgICAgY29uc3QgZnJhbWVET01FeGNlcHRpb24gPSBmcmFtZS5jb250ZW50
V2luZG93LkRPTUV4Y2VwdGlvbjsKICAgICBjb25zdCB0cmFuc2Zvcm0gPSBuZXcgZnJhbWUuY29u
dGVudFdpbmRvdy5TRnJhbWVUcmFuc2Zvcm07CiAgICAgZnJhbWUucmVtb3ZlKCk7Ci0gICAgYXNz
ZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gdHJhbnNmb3JtLnJlYWRh
YmxlKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmcmFtZURP
TUV4Y2VwdGlvbiwgKCkgPT4gdHJhbnNmb3JtLnJlYWRhYmxlKTsKIH0pOwogICAgICAgIDwvc2Ny
aXB0PgogICAgIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432455</attachid>
            <date>2021-06-28 23:25:13 -0700</date>
            <delta_ts>2021-07-01 11:21:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225997-20210629092511.patch</filename>
            <type>text/plain</type>
            <size>125621</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzkzNjIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTI4ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1
ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90
by1jaGFpbi1wdXQuanM6CisgICAgICAgICogc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2Jq
ZWN0LWluLWljLTIuanM6IEFkZGVkLgorCiAyMDIxLTA2LTI1ICBHdWlsbGF1bWUgRW1vbnQgIDxn
dWlqZW1vbnRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnNraXAgc3RyZXNzL2NhbGwtYXBwbHkt
ZXhwb25lbnRpYWwtYnl0ZWNvZGUtc2l6ZS5qcyBvbiBtb3N0IHBsYXRmb3JtcwpJbmRleDogSlNU
ZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXByb3RvLWNoYWluLXB1dC5qcwkocmV2
aXNpb24gMjc5MzYyKQorKysgSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8tY2hh
aW4tcHV0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC05OSw4ICs5OSw4IEBAIGZ1bmN0aW9uIGdldEJh
c2VzKCkgewogKCgpID0+IHsKICAgICBmb3IgKGxldCBiYXNlIG9mIGdldEJhc2VzKCkpIHsKICAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkKLSAgICAgICAgICAgIHNob3VsZFRo
cm93KCgpID0+IHsgYmFzZS5jdXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCA9IHt9OyB9LCAiVHlw
ZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOwotICAg
ICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0KE9iamVjdChiYXNlKSwgImN1c3RvbUFjY2Vzc29yR2xv
YmFsT2JqZWN0Iiwge30pKTsKKyAgICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgYmFzZS5j
dXN0b21BY2Nlc3NvclJlYWRPbmx5ID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBh
c3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7CisgICAgICAgIGFzc2VydCghUmVmbGVjdC5z
ZXQoT2JqZWN0KGJhc2UpLCAiY3VzdG9tQWNjZXNzb3JSZWFkT25seSIsIHt9KSk7CiAgICAgfQog
fSkoKTsKIApAQCAtMTA4LDIxICsxMDgsMjEgQEAgZnVuY3Rpb24gZ2V0QmFzZXMoKSB7CiAoKCkg
PT4gewogICAgIGZvciAobGV0IHByaW1pdGl2ZSBvZiBwcmltaXRpdmVzKSB7CiAgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpCi0gICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9
PiB7IHByaW1pdGl2ZS5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9IHt9OyB9LCAiVHlwZUVycm9y
OiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOworICAgICAgICAg
ICAgc2hvdWxkVGhyb3coKCkgPT4geyBwcmltaXRpdmUuY3VzdG9tVmFsdWVOb1NldHRlciA9IHt9
OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5
LiIpOwogICAgIH0KIAogICAgIGZvciAobGV0IG9iamVjdCBvZiBnZXRPYmplY3RzKCkpIHsKICAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkKLSAgICAgICAgICAgIG9iamVjdC5j
dXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9IHt9OwotICAgICAgICBhc3NlcnQob2JqZWN0Lmhhc093
blByb3BlcnR5KCJjdXN0b21WYWx1ZUdsb2JhbE9iamVjdCIpKTsKLSAgICAgICAgYXNzZXJ0KFJl
ZmxlY3Quc2V0KG9iamVjdCwgImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0Iiwge30pKTsKKyAgICAg
ICAgICAgIG9iamVjdC5jdXN0b21WYWx1ZU5vU2V0dGVyID0ge307CisgICAgICAgIGFzc2VydChv
YmplY3QuaGFzT3duUHJvcGVydHkoImN1c3RvbVZhbHVlTm9TZXR0ZXIiKSk7CisgICAgICAgIGFz
c2VydChSZWZsZWN0LnNldChvYmplY3QsICJjdXN0b21WYWx1ZU5vU2V0dGVyIiwge30pKTsKICAg
ICB9CiAKICAgICBmb3IgKGxldCBvYmplY3Qgb2YgZ2V0T2JqZWN0cygpKSB7CiAgICAgICAgIE9i
amVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QpOwogICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDsgKytpKSB7Ci0gICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG9iamVjdC5j
dXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8g
YXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOwotICAgICAgICAgICAgYXNzZXJ0KCFSZWZs
ZWN0LnNldChvYmplY3QsICJjdXN0b21WYWx1ZUdsb2JhbE9iamVjdCIsIHt9KSk7CisgICAgICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG9iamVjdC5jdXN0b21WYWx1ZU5vU2V0dGVyID0ge307
IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHku
Iik7CisgICAgICAgICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0KG9iamVjdCwgImN1c3RvbVZhbHVl
Tm9TZXR0ZXIiLCB7fSkpOwogICAgICAgICB9CiAgICAgfQogfSkoKTsKSW5kZXg6IEpTVGVzdHMv
c3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2JqZWN0LWluLWljLTIuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9zdHJlc3MvZ2V0dGVyLXNldHRlci1nbG9iYWxvYmplY3QtaW4taWMtMi5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9nZXR0ZXItc2V0dGVyLWdsb2JhbG9iamVj
dC1pbi1pYy0yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKK2Z1bmN0aW9uIGFz
c2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3Nl
cnRpb24hIik7Cit9CisKK2NvbnN0IGNyZWF0ZUN1c3RvbSA9IGAKKyAgICB2YXIgY3VzdG9tID0g
JHZtLmNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIoKTsKK2A7CisKKyhmdW5jdGlvbiBkaXJl
Y3RDdXN0b21BY2Nlc3NvckdldCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVh
dGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBhc3NlcnQob3RoZXJDdXN0
b20uY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOwor
CisoZnVuY3Rpb24gZGlyZWN0Q3VzdG9tVmFsdWVHZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBy
dW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVyLmN1
c3RvbTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgYXNz
ZXJ0KG90aGVyQ3VzdG9tLmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID09PSBvdGhlcik7CisgICAg
fQorfSkoKTsKKworKGZ1bmN0aW9uIGRpcmVjdEN1c3RvbUFjY2Vzc29yU2V0KCkgeworICAgIGNv
bnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0
b20gPSBvdGhlci5jdXN0b207CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7
CisgICAgICAgIGNvbnN0IHZhbHVlID0ge307CisgICAgICAgIG90aGVyQ3VzdG9tLmN1c3RvbUFj
Y2Vzc29yR2xvYmFsT2JqZWN0ID0gdmFsdWU7CisgICAgICAgIGFzc2VydCh2YWx1ZS5yZXN1bHQg
PT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gZGlyZWN0Q3VzdG9tVmFsdWVT
ZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBj
b25zdCBvdGhlckN1c3RvbSA9IG90aGVyLmN1c3RvbTsKKworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMWU1OyBpKyspIHsKKyAgICAgICAgY29uc3QgdmFsdWUgPSB7fTsKKyAgICAgICAgb3RoZXJD
dXN0b20uY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB2YWx1ZTsKKyAgICAgICAgYXNzZXJ0KHZh
bHVlLnJlc3VsdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBwcm90b3R5
cGVDaGFpbkN1c3RvbUFjY2Vzc29yR2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5n
KGNyZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b21IZWlyID0gT2JqZWN0LmNyZWF0
ZShvdGhlci5jdXN0b20pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgewor
ICAgICAgICBhc3NlcnQob3RoZXJDdXN0b21IZWlyLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0
ID09PSBvdGhlcik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIHByb3RvdHlwZUNoYWluQ3Vz
dG9tVmFsdWVHZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9t
KTsKKyAgICBjb25zdCBvdGhlckN1c3RvbUhlaXIgPSBPYmplY3QuY3JlYXRlKG90aGVyLmN1c3Rv
bSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGFzc2Vy
dChvdGhlckN1c3RvbUhlaXIuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPT09IG90aGVyKTsKKyAg
ICB9Cit9KSgpOworCisoZnVuY3Rpb24gcHJvdG90eXBlQ2hhaW5DdXN0b21BY2Nlc3NvclNldCgp
IHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0
IG90aGVyQ3VzdG9tSGVpciA9IE9iamVjdC5jcmVhdGUob3RoZXIuY3VzdG9tKTsKKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgY29uc3QgdmFsdWUgPSB7fTsK
KyAgICAgICAgb3RoZXJDdXN0b21IZWlyLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID0gdmFs
dWU7CisgICAgICAgIGFzc2VydCh2YWx1ZS5yZXN1bHQgPT09IG90aGVyKTsKKyAgICB9Cit9KSgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzkzNjIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMjEtMDYtMjggIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgor
CisgICAgICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRoIHRoZWly
IGhvbGRlcidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEp1c3QgbGlrZSBKUyBidWlsdC1pbnMsIGdldHRlciAvIHNldHRlciBm
dW5jdGlvbnMgb2YgV2ViSURMIGF0dHJpYnV0ZXMgYXJlIGNyZWF0ZWQgaW4gcmVhbG0KKyAgICAg
ICAgb2YgdGhlaXIgaG9sZGVyIGludGVyZmFjZSBbMV1bMl0sIHdoaWNoIGlzIHRoZWlyIF9jdXJy
ZW50XyByZWFsbSBmb3IgdGhyb3dpbmcgYW4gZXJyb3IgWzNdLgorCisgICAgICAgIFdpdGggdGhp
cyBwYXRjaCwgY3VzdG9tIHByb3BlcnRpZXMgZ2V0IGNvcnJlY3QgZ2xvYmFsIG9iamVjdCBpbnN0
ZWFkIG9mIGxleGljYWwsIGluY2x1ZGluZworICAgICAgICB3aGVuIGlubGluZSBjYWNoZWQsIGFs
aWduaW5nIHRoZW0gd2l0aCBmdW5jdGlvbnMgYW5kIHJlZ3VsYXIgYWNjZXNzb3JzLgorCisgICAg
ICAgIFRoZSBsYXR0ZXIgYWxsb3dlZCBKUyBidWlsdC1pbnMgbGlrZSBTeW1ib2w6OmRlc2NyaXB0
aW9uIHRvIHN3aXRjaCB0byBDdXN0b21BY2Nlc3Nvciwgd2hpY2gKKyAgICAgICAgaXMgc2xpZ2h0
bHkgbW9yZSBlZmZpY2llbnQgdG8gY2FsbCBmcm9tIEMrKywgZG9lc24ndCBuZWVkIHJlaWZpY2F0
aW9uIG9uIGZpcnN0IGFjY2VzcywgYW5kCisgICAgICAgIGhhcyBuaWNlciBzaWduYXR1cmUuCisK
KyAgICAgICAgQWxzbywgcmVuYW1lcyBXQVNNIGFjY2Vzc29ycyB0byBkcm9wICJmdW5jIiBhbmQg
cmVtb3ZlcyB1bnVzZWQgZnVuY3Rpb24gbGVuZ3RoIHBhcmFtZXRlci4KKworICAgICAgICBbMV06
IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtZ2V0dGVyIChz
dGVwIDIpCisgICAgICAgIFsyXTogaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZu
LWF0dHJpYnV0ZS1zZXR0ZXIgKHN0ZXAgNSkKKyAgICAgICAgWzNdOiBodHRwczovL2hleWNhbS5n
aXRodWIuaW8vd2ViaWRsLyNlY21hc2NyaXB0LXRocm93CisKKyAgICAgICAgKiBieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToK
KyAgICAgICAgKiBjcmVhdGVfaGFzaF90YWJsZToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xs
YXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uik6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAg
KiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lU2xvdyk6CisgICAgICAgICogcnVudGltZS9Q
cm9wZXJ0eVNsb3QuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmN1c3RvbUdldHRl
ciBjb25zdCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlTbG90OjpnZXRWYWx1ZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TeW1i
b2xQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIp
OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9DVVNUT01fR0VUVEVSKToKKwogMjAyMS0wNi0yOCAgWWlqaWEgSHVhbmcgIDx5aWpp
YV9odWFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1
Y3Rpb24gc2VsZWN0b3IgdG8gdXNlIEJJQyBzdXBwb3J0ZWQgYnkgQVJNNjQKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUJKHJldmlzaW9uIDI3OTM2MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQkod29ya2luZyBjb3B5KQpAQCAt
OTQsMTEgKzk0LDYgQEAgd2hpbGUgKDxJTj4pIHsKICAgICAgICAgaWYgKCRhdHQgPX4gbS9GdW5j
dGlvbi8pIHsKICAgICAgICAgICAgIHB1c2goQHZhbHVlcywgeyAidHlwZSIgPT4gIlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiIsICJmdW5jdGlvbiIgPT4gJHZhbCwgInBhcmFtcyIgPT4gKGxl
bmd0aCgkcGFyYW0pID8gJHBhcmFtIDogIiIpLCAiaW50cmluc2ljIiA9PiAobGVuZ3RoKCRpbnRy
aW5zaWMpID8gJGludHJpbnNpYyA6ICJOb0ludHJpbnNpYyIpIH0pOwogICAgICAgICAgICAgI3By
aW50ZiBTVERFUlIgIldBUk5JTkc6IE51bWJlciBvZiBhcmd1bWVudHMgbWlzc2luZyBmb3IgJGtl
eS8kdmFsXG4iIGlmIChsZW5ndGgoJHBhcmFtKSA9PSAwKTsKLSAgICAgICAgfSBlbHNpZiAoJGF0
dCA9fiBtL0FjY2Vzc29yLykgewotICAgICAgICAgICAgbXkgJGdldCA9ICR2YWw7Ci0gICAgICAg
ICAgICBteSAkcHV0ID0gIm51bGxwdHIiOwotICAgICAgICAgICAgJGhhc1NldHRlciA9ICJ0cnVl
IjsKLSAgICAgICAgICAgIHB1c2goQHZhbHVlcywgeyAidHlwZSIgPT4gIlByb3BlcnR5QXR0cmli
dXRlOjpBY2Nlc3NvciIsICJnZXQiID0+ICRnZXQsICJwdXQiID0+ICRwdXQgfSk7CiAgICAgICAg
IH0gZWxzaWYgKCRhdHQgPX4gbS9DZWxsUHJvcGVydHkvKSB7CiAgICAgICAgICAgICBteSAkcHJv
cGVydHkgPSAkdmFsOwogICAgICAgICAgICAgcHVzaChAdmFsdWVzLCB7ICJ0eXBlIiA9PiAiUHJv
cGVydHlBdHRyaWJ1dGU6OkNlbGxQcm9wZXJ0eSIsICJwcm9wZXJ0eSIgPT4gJHByb3BlcnR5IH0p
OwpAQCAtMzEwLDExICszMDUsNiBAQCBzdWIgb3V0cHV0KCkgewogICAgICAgICAgICAgJGZpcnN0
VmFsdWUgPSAkdmFsdWVzWyRpXXsiZnVuY3Rpb24ifTsKICAgICAgICAgICAgICRzZWNvbmRWYWx1
ZSA9ICR2YWx1ZXNbJGldeyJwYXJhbXMifTsKICAgICAgICAgICAgICRpbnRyaW5zaWMgPSAkdmFs
dWVzWyRpXXsiaW50cmluc2ljIn07Ci0gICAgICAgIH0gZWxzaWYgKCR2YWx1ZXNbJGldeyJ0eXBl
In0gZXEgIlByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciIpIHsKLSAgICAgICAgICAgICRmaXJz
dENhc3RTdHIgPSAic3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+IjsKLSAgICAgICAgICAg
ICRzZWNvbmRDYXN0U3RyID0gInN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPiI7Ci0gICAg
ICAgICAgICAkZmlyc3RWYWx1ZSA9ICR2YWx1ZXNbJGldeyJnZXQifTsKLSAgICAgICAgICAgICRz
ZWNvbmRWYWx1ZSA9ICR2YWx1ZXNbJGldeyJwdXQifTsKICAgICAgICAgfSBlbHNpZiAoJHZhbHVl
c1skaV17InR5cGUifSBlcSAiUHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5IikgewogICAgICAg
ICAgICAgJGZpcnN0Q2FzdFN0ciA9ICJzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4iOwogICAgICAgICAgICAgJHNlY29uZENhc3RTdHIgPSAic3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+IjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDI3OTM2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQxNiw3ICsxNDE2LDYgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2Vu
ZQogICAgIENDYWxsSGVscGVycyYgaml0ID0gKnN0YXRlLmppdDsKICAgICBWTSYgdm0gPSBzdGF0
ZS5tX3ZtOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gaml0LmNvZGVCbG9jaygpOwotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS5tX2dsb2JhbE9iamVjdDsKICAg
ICBFQ01BTW9kZSBlY21hTW9kZSA9IHN0YXRlLm1fZWNtYU1vZGU7CiAgICAgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvID0gKnN0YXRlLnN0dWJJbmZvOwogICAgIEpTVmFsdWVSZWdzIHZhbHVl
UmVncyA9IHN0YXRlLnZhbHVlUmVnczsKQEAgLTE2MTksNiArMTYxOCw4IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgIEFTU0VSVChiYXNlR1BS
ICE9IGxvYWRlZFZhbHVlR1BSKTsKICAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgIT0gU2V0dGVy
IHx8IHZhbHVlUmVnc1BheWxvYWRHUFIgIT0gbG9hZGVkVmFsdWVHUFIpOwogCisgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUubV9nbG9iYWxPYmplY3Q7CisK
ICAgICAgICAgICAgIC8vIENyZWF0ZSBhIEpTIGNhbGwgdXNpbmcgYSBKUyBjYWxsIGlubGluZSBj
YWNoZS4gQXNzdW1lIHRoYXQ6CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gLSBTUCBp
cyBhbGlnbmVkIGFuZCByZXByZXNlbnRzIHRoZSBleHRlbnQgb2YgdGhlIGNhbGxpbmcgY29tcGls
ZXIncyBzdGFjayB1c2FnZS4KQEAgLTE3NTQsNiArMTc1NSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6
Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ3Vz
dG9tVmFsdWVHZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbUFjY2Vzc29yR2V0dGVyIHx8IG1fdHlw
ZSA9PSBDdXN0b21WYWx1ZVNldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIp
OwogICAgICAgICAgICAgQVNTRVJUKCFkb2VzUHJvcGVydHlTdG9yYWdlTG9hZHMpOyAvLyBPciB3
ZSBuZWVkIGFuIGV4dHJhIHJlZ2lzdGVyLiBXZSByZWx5IG9uIHByb3BlcnR5T3duZXJHUFIgYmVp
bmcgY29ycmVjdCBoZXJlLgogCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gaGFzQWx0ZXJuYXRlQmFzZSgpID8gYWx0ZXJuYXRlQmFzZSgpLT5nbG9iYWxPYmplY3Qo
dm0pIDogc3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpOworCiAgICAgICAgICAgICAvLyBOZWVk
IHRvIG1ha2Ugcm9vbSBmb3IgdGhlIEMgY2FsbCBzbyBhbnkgb2Ygb3VyIHN0YWNrIHNwaWxsYWdl
IGlzbid0IG92ZXJ3cml0dGVuLiBJdCdzCiAgICAgICAgICAgICAvLyBoYXJkIHRvIHRyYWNrIGlm
IHNvbWVvbmUgZGlkIHNwaWxsYWdlIG9yIG5vdCwgc28gd2UganVzdCBhc3N1bWUgdGhhdCB3ZSBh
bHdheXMgbmVlZAogICAgICAgICAgICAgLy8gdG8gbWFrZSBzb21lIHNwYWNlIGhlcmUuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
clByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTM2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOworc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFy
ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsQ29sbGF0b3JQcm90b3R5
cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KEludGxDb2xsYXRvckZ1bmNDb21wYXJlKTsKIApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFz
c0luZm8gSW50bENvbGxhdG9yUHJvdG90eXBlOjpzCiAKIC8qIFNvdXJjZSBmb3IgSW50bENvbGxh
dG9yUHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gY29sbGF0b3JQcm90b3R5cGVUYWJsZQotICBjb21w
YXJlICAgICAgICAgIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUgICAgICAgIERv
bnRFbnVtfEFjY2Vzc29yCisgIGNvbXBhcmUgICAgICAgICAgSW50bENvbGxhdG9yUHJvdG90eXBl
R2V0dGVyQ29tcGFyZSAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICAg
cmVzb2x2ZWRPcHRpb25zICBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
ICBEb250RW51bXxGdW5jdGlvbiAwCiBAZW5kCiAqLwpAQCAtMTA1LDE0ICsxMDUsMTQgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxDb2xsYXRvckZ1bgogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5jb21wYXJlU3RyaW5ncyhnbG9i
YWxPYmplY3QsIHhWaWV3V2l0aFN0cmluZy52aWV3LCB5Vmlld1dpdGhTdHJpbmcudmlldykpKTsK
IH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxDb2xsYXRvclByb3RvdHlwZUdldHRl
ckNvbXBhcmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bENvbGxhdG9yUHJvdG90eXBlR2V0
dGVyQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
Ly8gMTAuMy4zIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgKEVDTUEtNDAyIDIuMCkK
ICAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhpcyBDb2xsYXRvciBvYmplY3QuCi0gICAgSW50
bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5
bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKCFjb2xsYXRvcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUu
Y29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQg
YXMgYSBDb2xsYXRvciJfcykpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDI3OTM2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlRnVuY0Zvcm1hdFJhbmdlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZVRvUGFydHMpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
RnVuY0Zvcm1hdFRvUGFydHMpOwpAQCAtNTMsNyArNTMsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90CiAKIC8qIFNvdXJjZSBmb3IgSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVUYWJsZQotICBm
b3JtYXQgICAgICAgICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9y
bWF0ICAgICAgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICBmb3JtYXQgICAgICAgICAgICAg
ICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgICAgICBE
b250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogICBmb3JtYXRSYW5nZSAgICAgICAgICAg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAyCiAgIGZvcm1hdFRvUGFydHMgICAgICAgICBJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
ICAgcmVzb2x2ZWRPcHRpb25zICAgICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNS
ZXNvbHZlZE9wdGlvbnMgICAgICAgRG9udEVudW18RnVuY3Rpb24gMApAQCAtMTEzLDE0ICsxMTMs
MTQgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGltZUZvcgogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0KGdsb2Jh
bE9iamVjdCwgdmFsdWUpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMi4zLjMgSW50bC5EYXRlVGltZUZvcm1h
dC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IGR0ZiBiZSB0
aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KLSAgICBhdXRvKiBkdGYgPSBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIGF1dG8qIGR0ZiA9IEludGxEYXRlVGltZUZvcm1hdDo6dW53cmFwRm9y
T2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgLy8gMi4gUmV0dXJuSWZB
YnJ1cHQoZHRmKS4KICAgICBpZiAoVU5MSUtFTFkoIWR0ZikpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMjc5MzYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2Fs
ZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2ICszNCwxNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90
b3R5cGVGdW5jTWF4aW1pemUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50
bExvY2FsZVByb3RvdHlwZUZ1bmNNaW5pbWl6ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKLXN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZSk7Ci1z
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
Q2FsZW5kYXIpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckNhc2VGaXJzdCk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uKTsKLXN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUpOwotc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51
bWVyaWMpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3Rv
dHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UpOwotc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCk7Ci1zdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVn
aW9uKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJCYXNlTmFtZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCk7CitzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9u
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJIb3VyQ3ljbGUpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3Vh
Z2UpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlw
ZUdldHRlclNjcmlwdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uKTsKIAogfQogCkBAIC01OCwxNiArNTgsMTYgQEAgY29u
c3QgQ2xhc3NJbmZvIEludGxMb2NhbGVQcm90b3R5cGU6OnNfaQogICBtYXhpbWl6ZSAgICAgICAg
IEludGxMb2NhbGVQcm90b3R5cGVGdW5jTWF4aW1pemUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDAKICAgbWluaW1pemUgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01pbmltaXpl
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCiAgIHRvU3RyaW5nICAgICAgICAgSW50bExv
Y2FsZVByb3RvdHlwZUZ1bmNUb1N0cmluZyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAot
ICBiYXNlTmFtZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZSAgICAg
ICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIGNhbGVuZGFyICAgICAgICAgSW50bExvY2FsZVByb3Rv
dHlwZUdldHRlckNhbGVuZGFyICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgY2FzZUZpcnN0
ICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0ICAgICAgICBEb250RW51
bXxBY2Nlc3NvcgotICBjb2xsYXRpb24gICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJD
b2xsYXRpb24gICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIGhvdXJDeWNsZSAgICAgICAgSW50
bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSAgICAgICAgRG9udEVudW18QWNjZXNzb3IK
LSAgbnVtZXJpYyAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYyAgICAg
ICAgICBEb250RW51bXxBY2Nlc3NvcgotICBudW1iZXJpbmdTeXN0ZW0gIEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0gIERvbnRFbnVtfEFjY2Vzc29yCi0gIGxhbmd1YWdl
ICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlICAgICAgICAgRG9udEVu
dW18QWNjZXNzb3IKLSAgc2NyaXB0ICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
U2NyaXB0ICAgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgotICByZWdpb24gICAgICAgICAgIElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24gICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29y
CisgIGJhc2VOYW1lICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lICAg
ICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgY2FsZW5kYXIgICAgICAg
ICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIgICAgICAgICBEb250RW51bXxSZWFk
T25seXxDdXN0b21BY2Nlc3NvcgorICBjYXNlRmlyc3QgICAgICAgIEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJDYXNlRmlyc3QgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29y
CisgIGNvbGxhdGlvbiAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbiAg
ICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgaG91ckN5Y2xlICAgICAg
ICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlICAgICAgICBEb250RW51bXxSZWFk
T25seXxDdXN0b21BY2Nlc3NvcgorICBudW1lcmljICAgICAgICAgIEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJOdW1lcmljICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29y
CisgIG51bWJlcmluZ1N5c3RlbSAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5
c3RlbSAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbGFuZ3VhZ2UgICAgICAg
ICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UgICAgICAgICBEb250RW51bXxSZWFk
T25seXxDdXN0b21BY2Nlc3NvcgorICBzY3JpcHQgICAgICAgICAgIEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJTY3JpcHQgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29y
CisgIHJlZ2lvbiAgICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbiAgICAg
ICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKIEBlbmQKICovCiAKQEAgLTE0
MiwxMiArMTQyLDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8K
IH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5
cGUuYmFzZU5hbWUKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBl
R2V0dGVyQmFzZU5hbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlw
ZUdldHRlckJhc2VOYW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRs
TG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2Fs
ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkludGwuTG9jYWxlLnByb3RvdHlwZS5iYXNlTmFtZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0xNTYsMTIgKzE1
NiwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8v
IGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVu
ZGFyCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNh
bGVuZGFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJD
YWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0
byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxv
Y2FsZS5wcm90b3R5cGUuY2FsZW5kYXIgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2Jq
ZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMTcwLDEyICsxNzAsMTIgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczov
L3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QKLUpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmly
c3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxv
Y2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUu
cHJvdG90eXBlLmNhc2VGaXJzdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0xODQsMTIgKzE4NCwxMiBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNvbGxhdGlvbgotSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24sIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxl
ID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90
b3R5cGUuY29sbGF0aW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTE5OCwxMiArMTk4LDEyIEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuaG91ckN5Y2xlCi1KU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBq
c0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cisg
ICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlw
ZS5ob3VyQ3ljbGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxp
emVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMjEyLDEyICsyMTIsMTIgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmljCi1KU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nh
c3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBs
b2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWVyaWMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9j
YWxlIl9zKTsKIApAQCAtMjI1LDEyICsyMjUsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUlu
dGwuTG9jYWxlLnByb3RvdHlwZS5udW1iZXJpbmdTeXN0ZW0KLUpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0sIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9
IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90
eXBlLm51bWJlcmluZ1N5c3RlbSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0yMzksMTIgKzIzOSwxMiBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1YWdlCi1KU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0g
anNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5
cGUubGFuZ3VhZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxp
emVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMjUzLDEyICsyNTMsMTIgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5zY3JpcHQKLUpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJTY3JpcHQsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8
SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2Nh
bGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnNjcmlwdCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUi
X3MpOwogCkBAIC0yNjcsMTIgKzI2NywxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50
bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5M
b2NhbGUucHJvdG90eXBlLnJlZ2lvbgotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2Nh
bGVQcm90b3R5cGVHZXR0ZXJSZWdpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2Fs
ZVByb3RvdHlwZUdldHRlclJlZ2lvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nh
c3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUucmVnaW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzkzNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyk7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9ybWF0
RnVuY0Zvcm1hdCk7CkBAIC00OSw3ICs0OSw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXAKIAogLyogU291cmNlIGZvciBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
Lmx1dC5oCiBAYmVnaW4gbnVtYmVyRm9ybWF0UHJvdG90eXBlVGFibGUKLSAgZm9ybWF0ICAgICAg
ICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgRG9udEVu
dW18QWNjZXNzb3IKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0ICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICAg
Zm9ybWF0VG9QYXJ0cyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFy
dHMgICAgRG9udEVudW18RnVuY3Rpb24gMQogICByZXNvbHZlZE9wdGlvbnMgIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICBEb250RW51bXxGdW5jdGlvbiAwCiBA
ZW5kCkBAIC0xMDgsMTQgKzEwOCwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bE51
bWJlckZvcm1hCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1h
dChnbG9iYWxPYmplY3QsIHZhbHVlKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IG5mIGJlIHRo
aXMgTnVtYmVyRm9ybWF0IG9iamVjdC4KLSAgICBhdXRvKiBuZiA9IEludGxOdW1iZXJGb3JtYXQ6
OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGF1dG8qIG5mID0gSW50bE51bWJlckZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rp
b25zKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKFVOTElLRUxZKCFuZikpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Il9zKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5MzYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDkgKzU3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgIHNldEZsb2F0NjQgICAgICAgICAgICBkYXRh
Vmlld1Byb3RvRnVuY1NldEZsb2F0NjQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAg
MiAgRGF0YVZpZXdTZXRGbG9hdDY0CiAgIHNldEJpZ0ludDY0ICAgICAgICAgICBkYXRhVmlld1By
b3RvRnVuY1NldEJpZ0ludDY0ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgogICBz
ZXRCaWdVaW50NjQgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRCaWdVaW50NjQgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgYnVmZmVyICAgICAgICAgICAgICAgIGRhdGFW
aWV3UHJvdG9HZXR0ZXJCdWZmZXIgICAgICAgICAgICBEb250RW51bXxBY2Nlc3NvciAgICAgICAw
Ci0gIGJ5dGVMZW5ndGggICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCAg
ICAgICAgRG9udEVudW18QWNjZXNzb3IgICAgICAgMAotICBieXRlT2Zmc2V0ICAgICAgICAgICAg
ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yICAg
ICAgIDAKKyAgYnVmZmVyICAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIg
ICAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBieXRlTGVuZ3Ro
ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGggICAgICAgIERvbnRFbnVt
fFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGJ5dGVPZmZzZXQgICAgICAgICAgICBkYXRhVmll
d1Byb3RvR2V0dGVyQnl0ZU9mZnNldCAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNj
ZXNzb3IKIEBlbmQKICovCiAKQEAgLTgzLDkgKzgzLDkgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oZGF0YVZpZQogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0
YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGRhdGFWaWV3UHJvdG9GdW5jU2V0QmlnSW50NjQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0Z1bmNTZXRCaWdVaW50NjQpOwotc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlcik7Ci1zdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCk7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnl0
ZU9mZnNldCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3Rv
R2V0dGVyQnVmZmVyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3
UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KTsKIAogfQogCkBAIC0yMjMsMjQgKzIyMywy
NCBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnCiAKIElHTk9SRV9D
TEFOR19XQVJOSU5HU19CRUdJTigibWlzc2luZy1wcm90b3R5cGVzIikKIAotSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNE
YXRhVmlldyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2
aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMg
fHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh2aWV3LT5wb3NzaWJseVNoYXJlZEpTQnVmZmVyKGds
b2JhbE9iamVjdCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJv
dG9HZXR0ZXJCeXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9H
ZXR0ZXJCeXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWND
YXN0PEpTRGF0YVZpZXcqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
ICghdmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5ieXRlTGVuZ3RoIGV4cGVjdHMgfHRoaXN8IHRvIGJl
IGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAgICAgaWYgKHZpZXctPmlzRGV0YWNoZWQoKSkKQEAgLTI0
OSwxMiArMjQ5LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2UK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiB9
CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNl
dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
K0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmlldyog
dmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRhVmlldy5w
cm90b3R5cGUuYnl0ZU9mZnNldCBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVj
dCIpOwogICAgIGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNzkzNjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5
MSw5ICs3OTEsNiBAQCBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEpTR2xvYmFsT2JqCiAg
ICAgICAgICAgICAgICAgaGFzUHJvcGVydHkgPSB0cnVlOwogICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZXMgPSBlbnRyeS0+dmFsdWUtPmF0dHJpYnV0ZXMoKTsKIAotICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBhZnRlciB3cml0YWJsZSBhY2Nlc3NvcnMgYXJlIGludHJvZHVj
ZWQgdG8gc3RhdGljIGhhc2ggdGFibGVzLgotICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVz
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKQotICAgICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGVzIHw9IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seTsKICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgd2Ugc3RvcCBkZWZhdWx0aW5nIHRvIEN1c3RvbVZh
bHVlIGluIHN0YXRpYyBoYXNoIHRhYmxlcy4KICAgICAgICAgICAgICAgICBpZiAoIShhdHRyaWJ1
dGVzICYgKFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IFByb3BlcnR5QXR0cmli
dXRlOjpCdWlsdGluT3JGdW5jdGlvbk9yQWNjZXNzb3JPckxhenlQcm9wZXJ0eU9yQ29uc3RhbnQp
KSkKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tVmFsdWU7CkBAIC04MjIsNyArODE5LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0SW5saW5l
U2xvdyhKU0dsb2JhbE9iagogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzNDcKICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3Rv
bUFjY2Vzc29yKG9iaiwgY3VzdG9tU2V0dGVyKTsKICAgICAgICAgICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgICAgICAgICAgY3VzdG9tU2V0dGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1
ZTo6ZW5jb2RlKHNsb3QudGhpc1ZhbHVlKCkpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIGN1c3RvbVNldHRlcihvYmotPmdsb2JhbE9iamVj
dCh2bSksIEpTVmFsdWU6OmVuY29kZShzbG90LnRoaXNWYWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2Rl
KHZhbHVlKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbVZhbHVlKSB7CkBAIC04MzEsNyArODI4LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0
SW5saW5lU2xvdyhKU0dsb2JhbE9iagogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIG9ubHkgYmUgY2FjaGluZyB0aGVzZSBpZiB3ZSdyZSBub3QgYW4gdW5jYWNoZWFibGUg
ZGljdGlvbmFyeToKICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNTM0NwogICAgICAgICAgICAgICAgICAgICBzbG90LnNldEN1
c3RvbVZhbHVlKG9iaiwgY3VzdG9tU2V0dGVyKTsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBjdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpl
bmNvZGUob2JqKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgcHJvcGVydHlOYW1lKSk7CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3VzdG9tU2V0dGVyKG9i
ai0+Z2xvYmFsT2JqZWN0KHZtKSwgSlNWYWx1ZTo6ZW5jb2RlKG9iaiksIEpTVmFsdWU6OmVuY29k
ZSh2YWx1ZSksIHByb3BlcnR5TmFtZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBpZiAoIWlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCBvYmopKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIEF2b2lkIFB1dE1vZGVQdXQgYmVjYXVzZSBpdCBmYWlscyBmb3Igbm9uLWV4dGVu
c2libGUgc3RydWN0dXJlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlTbG90LmNwcAkocmV2aXNpb24gMjc5MzYyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEg
KzMzLDEyIEBAIEpTVmFsdWUgUHJvcGVydHlTbG90OjpmdW5jdGlvbkdldHRlcihKU0cKICAgICBy
ZXR1cm4gbV9kYXRhLmdldHRlci5nZXR0ZXJTZXR0ZXItPmNhbGxHZXR0ZXIoZ2xvYmFsT2JqZWN0
LCBtX3RoaXNWYWx1ZSk7CiB9CiAKLUpTVmFsdWUgUHJvcGVydHlTbG90OjpjdXN0b21HZXR0ZXIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkg
Y29uc3QKK0pTVmFsdWUgUHJvcGVydHlTbG90OjpjdXN0b21HZXR0ZXIoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogeworICAgIEFTU0VSVChtX3Nsb3RCYXNlKTsKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9zbG90QmFzZS0+Z2xvYmFsT2JqZWN0
KHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IG1fYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciA/IG1fdGhpc1ZhbHVlIDogSlNWYWx1ZShzbG90QmFzZSgp
KTsKICAgICBpZiAoYXV0byBkb21BdHRyaWJ1dGUgPSB0aGlzLT5kb21BdHRyaWJ1dGUoKSkgewot
ICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKHZtLCBkb21BdHRyaWJ1dGUtPmNsYXNzSW5mbykpIHsKICAgICAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgICAgIHJldHVy
biB0aHJvd0RPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBk
b21BdHRyaWJ1dGUtPmNsYXNzSW5mbywgcHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAyNzkzNjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzY3LDcgKzM2Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBKU19FWFBP
UlRfUFJJVkFURSBKU1ZhbHVlIGZ1bmN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjdXN0b21HZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUg
Y3VzdG9tR2V0dGVyKFZNJiwgUHJvcGVydHlOYW1lKSBjb25zdDsKIAogICAgIHVuaW9uIHsKICAg
ICAgICAgRW5jb2RlZEpTVmFsdWUgdmFsdWU7CkBAIC00MDUsNyArNDA1LDcgQEAgQUxXQVlTX0lO
TElORSBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Z2V0VgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZGVjb2RlKG1fZGF0YS52YWx1ZSk7CiAgICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVHZXR0
ZXIpCiAgICAgICAgIHJldHVybiBmdW5jdGlvbkdldHRlcihnbG9iYWxPYmplY3QpOwotICAgIHJl
dHVybiBjdXN0b21HZXR0ZXIoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVy
biBjdXN0b21HZXR0ZXIoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSwgcHJvcGVydHlOYW1lKTsKIH0KIAog
QUxXQVlTX0lOTElORSBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Z2V0VmFsdWUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3QgcHJvcGVydHlOYW1lKSBjb25zdApAQCAtNDE1LDcg
KzQxNSw3IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmdldFYKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShtX2RhdGEudmFsdWUpOwogICAgIGlmIChtX3Byb3Bl
cnR5VHlwZSA9PSBUeXBlR2V0dGVyKQogICAgICAgICByZXR1cm4gZnVuY3Rpb25HZXR0ZXIoZ2xv
YmFsT2JqZWN0KTsKLSAgICByZXR1cm4gY3VzdG9tR2V0dGVyKGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGN1c3RvbUdldHRlcihn
ZXRWTShnbG9iYWxPYmplY3QpLCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTM2MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24pOworc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoc3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlv
bik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0Z1bmNUb1N0
cmluZyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0Z1bmNW
YWx1ZU9mKTsKIApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8gU3ltYm9sUHJvdG90
eXBlOjpzX2luZm8gCiAKIC8qIFNvdXJjZSBmb3IgU3ltYm9sUHJvdG90eXBlLmx1dC5oCiBAYmVn
aW4gc3ltYm9sUHJvdG90eXBlVGFibGUKLSAgZGVzY3JpcHRpb24gICAgICAgc3ltYm9sUHJvdG9H
ZXR0ZXJEZXNjcmlwdGlvbiAgICBEb250RW51bXxBY2Nlc3NvciAwCisgIGRlc2NyaXB0aW9uICAg
ICAgIHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24gICAgRG9udEVudW18UmVhZE9ubHl8Q3Vz
dG9tQWNjZXNzb3IKICAgdG9TdHJpbmcgICAgICAgICAgc3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCiAgIHZhbHVlT2YgICAgICAgICAgIHN5bWJvbFBy
b3RvRnVuY1ZhbHVlT2YgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAogQGVuZApAQCAtODcs
MTIgKzg3LDEyIEBAIGlubGluZSBTeW1ib2wqIHRyeUV4dHJhY3RTeW1ib2woVk0mIHZtLCAKICAg
ICByZXR1cm4gYXNTeW1ib2woanNDYXN0PFN5bWJvbE9iamVjdCo+KHRoaXNPYmplY3QpLT5pbnRl
cm5hbFZhbHVlKCkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9H
ZXR0ZXJEZXNjcmlwdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihzeW1ib2xQcm90b0dldHRl
ckRlc2NyaXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghc3ltYm9sKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTeW1ib2xEZXNjcmlwdGlvblR5
cGVFcnJvcik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkocmV2aXNpb24gMjc5MzYyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTkx
LDcgKzE1OTEsOSBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HCiBz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXRBY2Nlc3Nvckdsb2JhbE9i
amVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXRWYWx1ZUds
b2JhbE9iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRB
Y2Nlc3Nvcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRBY2Nl
c3Nvckdsb2JhbE9iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0
b21TZXRWYWx1ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRW
YWx1ZUdsb2JhbE9iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0
b21GdW5jdGlvblNldHRlcik7CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXRB
Y2Nlc3NvciwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQpAQCAtMTYzMyw2ICsxNjM1LDIyIEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihjdXN0b21TZXRBY2Nlc3MKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKGN1c3RvbVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09i
amVjdCh2YWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBvYmpl
Y3QtPnB1dChvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InJlc3VsdCIpLCBnbG9iYWxPYmplY3QsIHNsb3QpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHNsb3RWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7CkBAIC0xNjUxLDYgKzE2NjksMjQgQEAgSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKGN1c3RvbVNldFZhbHVlLAogICAgIHJldHVybiB0cnVlOwogfQogCitKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoY3VzdG9tU2V0VmFsdWVHbG9iYWxPYmplY3QsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBzbG90VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFz
c2VydFNjb3BlOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIFJFTEVB
U0VfQVNTRVJUKEpTVmFsdWU6OmRlY29kZShzbG90VmFsdWUpLmluaGVyaXRzPEpTVGVzdEN1c3Rv
bUdldHRlclNldHRlcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSk7CisKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgaWYgKCF2YWx1ZS5pc09iamVj
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QodmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgb2Jq
ZWN0LT5wdXQob2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJyZXN1bHQiKSwgZ2xvYmFsT2JqZWN0LCBzbG90KTsKKworICAgIHJldHVybiB0cnVlOworfQor
CiBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tRnVuY3Rpb25TZXR0ZXIsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNz
ZXJ0U2NvcGU7CkBAIC0xNjc4LDkgKzE3MTQsMTMgQEAgdm9pZCBKU1Rlc3RDdXN0b21HZXR0ZXJT
ZXR0ZXI6OmZpbmlzaENyZQogICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3IiKSwKICAgICAgICAgQ3VzdG9tR2V0
dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yLCBjdXN0b21TZXRBY2Nlc3Nv
ciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IpKTsKICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0IiksCi0gICAgICAgIEN1c3RvbUdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRWYWx1ZUdsb2JhbE9iamVjdCwgbnVsbHB0ciks
IDApOworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0VmFs
dWVHbG9iYWxPYmplY3QsIGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0KSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSkpOwogICAgIHB1dERpcmVj
dEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNj
ZXNzb3JHbG9iYWxPYmplY3QiKSwKLSAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGN1c3RvbUdldEFjY2Vzc29yR2xvYmFsT2JqZWN0LCBudWxscHRyKSwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKKyAg
ICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yR2xv
YmFsT2JqZWN0LCBjdXN0b21TZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsKKyAgICBwdXREaXJl
Y3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbVZh
bHVlTm9TZXR0ZXIiKSwKKyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1
c3RvbUdldFZhbHVlLCBudWxscHRyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21WYWx1ZSkpOworICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3JSZWFkT25seSIpLAorICAg
ICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3IsIG51
bGxwdHIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOwogCiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21GdW5jdGlvbiIpLAogICAgICAgICBDdXN0b21H
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3IsIGN1c3RvbUZ1bmN0aW9u
U2V0dGVyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlJbnN0YW5jZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3
OTM2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVk
ZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhw
b3J0cyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG9HZXR0ZXJFeHBvcnRzKTsKIH0KIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUubHV0LmgiCkBAIC00Niw3ICs0Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJB
c3NlbWJseUluc3RhbmNlUHJvdG8KIAogLyogU291cmNlIGZvciBXZWJBc3NlbWJseUluc3RhbmNl
UHJvdG90eXBlLmx1dC5oCiAgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlJbnN0YW5j
ZQotIGV4cG9ydHMgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMgQWNjZXNzb3Ig
MAorICBleHBvcnRzIHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0dldHRlckV4cG9ydHMgUmVhZE9u
bHl8Q3VzdG9tQWNjZXNzb3IKICBAZW5kCiAgKi8KIApAQCAtNjIsMTIgKzYyLDEyIEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlJbnN0YW4KICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVu
Y0V4cG9ydHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
R2V0dGVyRXhwb3J0cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gZ2V0SW5zdGFuY2UoZ2xv
YmFsT2JqZWN0LCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7IAorICAgIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogaW5zdGFuY2UgPSBnZXRJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoaW5zdGFuY2UtPm1vZHVsZVJlY29yZCgpLT5leHBvcnRzT2JqZWN0KCkpKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTM2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3Jvdyk7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3Rv
RnVuY0J1ZmZlcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJs
eU1lbW9yeVByb3RvR2V0dGVyQnVmZmVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jVHlwZSk7CiB9CiAKQEAgLTUzLDcgKzUzLDcg
QEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eQogLyogU291cmNlIGZv
ciBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaAogQGJlZ2luIHByb3RvdHlwZVRhYmxl
V2ViQXNzZW1ibHlNZW1vcnkKICBncm93ICAgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93
ICAgRnVuY3Rpb24gMQotIGJ1ZmZlciB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlciBB
Y2Nlc3NvciAwCisgYnVmZmVyIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9HZXR0ZXJCdWZmZXIgUmVh
ZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICB0eXBlICAgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNU
eXBlICAgRnVuY3Rpb24gMAogQGVuZAogKi8KQEAgLTg4LDEyICs4OCwxMiBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihyZXN1bHQucGFnZUNvdW50KCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9HZXR0ZXJCdWZmZXIsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseU1lbW9yeSog
bWVtb3J5ID0gZ2V0TWVtb3J5KGdsb2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOyAKKyAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoZ2xvYmFs
T2JqZWN0LCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOyAKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZShtZW1vcnktPmJ1ZmZlcihnbG9iYWxPYmplY3QpKSk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5MzYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUih3ZWJBc3NlbWJseVRhYmxlUHJvdG9HZXR0ZXJMZW5ndGgpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3cpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlUYWJsZVByb3RvRnVu
Y0dldCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxl
UHJvdG9GdW5jU2V0KTsKQEAgLTUyLDcgKzUyLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2Vt
Ymx5VGFibGVQcm90b3R5cAogCiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUubHV0LmgKICBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseVRhYmxlCi0gbGVuZ3Ro
IHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGggQWNjZXNzb3IgMAorIGxlbmd0aCB3ZWJB
c3NlbWJseVRhYmxlUHJvdG9HZXR0ZXJMZW5ndGggUmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICBn
cm93ICAgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3cgICBGdW5jdGlvbiAxCiAgZ2V0ICAg
IHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQgICAgRnVuY3Rpb24gMQogIHNldCAgICB3ZWJB
c3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0ICAgIEZ1bmN0aW9uIDIKQEAgLTcyLDEyICs3MiwxMiBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5VGFibGUqCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90
b0Z1bmNMZW5ndGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlUYWJsZVByb3Rv
R2V0dGVyTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShnbG9iYWxPYmplY3Qs
IHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRh
YmxlID0gZ2V0VGFibGUoZ2xvYmFsT2JqZWN0LCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0YWJsZS0+bGVuZ3RoKCkp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3OTM2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA2LTI4ICBB
bGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBD
YWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwg
b2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGZpeGVzIGNyb3NzLXJlYWxtIHlldCBzYW1lLW9yaWdpbiBXZWJJREwgYXR0cmli
dXRlcyB0byB0aHJvdyBlcnJvcnMgaW4gcmVhbG0KKyAgICAgICAgb2YgdGhlaXIgaW50ZXJmYWNl
LCB3aGlsZSBlbnN1cmluZyB0aGF0IGB3aW5kb3cubG9jYXRpb25gIGFuZCBgbG9jYXRpb24uaHJl
ZmAgc2V0dGVycworICAgICAgICBkb24ndCBsZWFrIGNyb3NzLW9yaWdpbiBPYmplY3QucHJvdG90
eXBlIHZpYSB0aHJvd24gZXJyb3IuCisKKyAgICAgICAgU2luY2UgTG9jYXRpb24gc2V0dGVycyBy
ZWxpZWQgb24gbGV4aWNhbCBnbG9iYWwgb2JqZWN0IHRvIHBhc3Mgb3V0Z29pbmcgYGRvY3VtZW50
LnJlZmVycmVyYCwKKyAgICAgICAgdGhleSB3ZXJlIHVwZGF0ZWQgdG8gdXNlIEluY3VtYmVudFdp
bmRvdyBhcyBwZXIgc3BlYyBbMV0uIGNhbGxlckdsb2JhbE9iamVjdCgpIHdhcyByZXdvcmtlZAor
ICAgICAgICB0byBiZSBtb3JlIGFjY3VyYXRlLCBza2lwcGluZyBuYXRpdmUgJiBidWlsdC1pbiBj
YWxsZXJzLCBhbmQgdXNlIHZtLnRvcENhbGxGcmFtZSBmb3IgY3VzdG9tCisgICAgICAgIGFjY2Vz
c29ycy4gVGhpcyBhbHNvIGZpeGVkIExvY2F0aW9uOjphc3NpZ24oKSAvIExvY2F0aW9uOjpyZXBs
YWNlKCkgdG8gcGFzcyBjb3JyZWN0IHJlZmVycmVyLgorCisgICAgICAgIEFsc28sIGZpeGVzIHN0
YXRpYyBhdHRyaWJ1dGVzIGxpa2UgYFBlcmZvcm1hbmNlT2JzZXJ2ZXIuc3VwcG9ydGVkRW50cnlU
eXBlc2AgdG8gcmV0dXJuCisgICAgICAgIHdyYXBwZXJzIG9mIHRoZWlyIHJlYWxtIGluc3RlYWQg
b2YgbGV4aWNhbC4KKworICAgICAgICBbMV0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9t
dWx0aXBhZ2UvaGlzdG9yeS5odG1sI2xvY2F0aW9uLW9iamVjdC1uYXZpZ2F0ZSAoc3RlcCAyKQor
CisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9l
Y21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3Nz
LXJlYWxtLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVh
bG0uaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93aW5kb3ctbG9jYXRpb24t
YW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3MtcmVhbG0tc2V0Lmh0bWwKKyAgICAgICAgICAgICAgIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGVyZm9ybWFuY2UtdGltZWxpbmUvc3VwcG9y
dGVkRW50cnlUeXBlcy1jcm9zcy1yZWFsbS1hY2Nlc3MuaHRtbAorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbGVyR2xv
YmFsT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjYWxsZXJHbG9iYWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6aW5j
dW1iZW50RE9NV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChH
ZW5lcmF0ZU5hbWVkR2V0dGVyTGFtYmRhKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbFdpdGhVc2lu
Z1JlZmVyZW5jZXMpOgorICAgICAgICAoR2VuZXJhdGVDYWxsV2l0aCk6CisgICAgICAgIEVuc3Vy
ZSBJbmN1bWJlbnRXaW5kb3cgY29tZXMgYmVmb3JlIEZpcnN0V2luZG93LgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTLyo6IFVwZGF0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBSZW1vdmUgYXR0cmlidXRlcyB0aGF0
IHJlbHkgb24gQ2FsbEZyYW1lIHNpbmNlIGN1c3RvbSBhY2Nlc3NvcnMgZG9uJ3QgaGF2ZSBpdC4K
KworICAgICAgICAqIHBhZ2UvTG9jYXRpb24uaWRsOgorICAgICAgICBSZW1vdmUgW0xlZ2FjeVVu
Zm9yZ2VhYmxlXSBmcm9tIGFuY2VzdG9yT3JpZ2lucyBiZWNhdXNlIGl0J3Mgc2V0IG9uIHRoZSBp
bnRlcmZhY2UuCisKIDIwMjEtMDYtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIENTUyBwYXJzZXIgImNvbnN1bWUgZGVjbGFyYXRpb24iIGFsZ29yaXRobSBkb2Vz
IG5vdCBoYW5kbGUgd2hpdGVzcGFjZSBjb3JyZWN0bHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3OTM2MikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTQyLDQ4ICs1NDIsNiBAQCBKU0M6OkpTT2JqZWN0KiBKU0RPTUdsb2Jh
bE9iamVjdDo6bW9kdWxlCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9i
amVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkp
OwogfQogCi1KU0RPTUdsb2JhbE9iamVjdCYgY2FsbGVyR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICBj
bGFzcyBHZXRDYWxsZXJHbG9iYWxPYmplY3RGdW5jdG9yIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IEdldENhbGxlckdsb2JhbE9iamVjdEZ1bmN0b3IoKSA9IGRlZmF1bHQ7Ci0KLSAgICAgICAgU3Rh
Y2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9oYXNTa2lwcGVkRmlyc3RGcmFtZSkgewot
ICAgICAgICAgICAgICAgIG1faGFzU2tpcHBlZEZpcnN0RnJhbWUgPSB0cnVlOwotICAgICAgICAg
ICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAoYXV0byogY29kZUJsb2NrID0gdmlzaXRvci0+Y29kZUJsb2NrKCkpCi0g
ICAgICAgICAgICAgICAgbV9nbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
OwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHZpc2l0b3ItPmNh
bGxlZSgpLnJhd1B0cigpKTsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ2FsbGVlIGlzIG5v
dCBhbiBvYmplY3QgaWYgdGhlIGNhbGxlciBpcyBXZWIgQXNzZW1ibHkuCi0gICAgICAgICAgICAg
ICAgLy8gRmlndXJlIG91dCB3aGF0IHRvIGRvIGhlcmUuIFdlIGNhbiBwcm9iYWJseSBnZXQgdGhl
IGdsb2JhbCBvYmplY3QKLSAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSB0b3AtbW9zdCBXYXNt
IEluc3RhbmNlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NzIx
Ci0gICAgICAgICAgICAgICAgaWYgKHZpc2l0b3ItPmNhbGxlZSgpLmlzQ2VsbCgpICYmIHZpc2l0
b3ItPmNhbGxlZSgpLmFzQ2VsbCgpLT5pc09iamVjdCgpKQotICAgICAgICAgICAgICAgICAgICBt
X2dsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2Vs
bCgpKS0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
U3RhY2tWaXNpdG9yOjpEb25lOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9Ci0KLSAgICBw
cml2YXRlOgotICAgICAgICBtdXRhYmxlIGJvb2wgbV9oYXNTa2lwcGVkRmlyc3RGcmFtZSB7IGZh
bHNlIH07Ci0gICAgICAgIG11dGFibGUgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0IHsg
bnVsbHB0ciB9OwotICAgIH07Ci0KLSAgICBHZXRDYWxsZXJHbG9iYWxPYmplY3RGdW5jdG9yIGl0
ZXI7Ci0gICAgY2FsbEZyYW1lLml0ZXJhdGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBpdGVy
KTsKLSAgICBpZiAoaXRlci5nbG9iYWxPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuICpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihpdGVyLmdsb2JhbE9iamVjdCgpKTsKLQotICAgIC8vIElmIHdl
IGNhbm5vdCBmaW5kIEpTR2xvYmFsT2JqZWN0IGluIGNhbGxlciBmcmFtZXMsIHdlIGp1c3QgcmV0
dXJuIHRoZSBjdXJyZW50IGxleGljYWxHbG9iYWxPYmplY3QuCi0gICAgcmV0dXJuICpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci19Ci0KIEpTRE9NR2xv
YmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgaWYgKGlzPERvY3VtZW50Pihj
b250ZXh0KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuaAkocmV2aXNpb24gMjc5MzYyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDggKzE0Miw2IEBA
IHByaXZhdGU6CiAgICAgSlNDOjpXZWFrR0NNYXA8Q3Jvc3NPcmlnaW5NYXBLZXksIEpTQzo6R2V0
dGVyU2V0dGVyPiBtX2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVyTWFwOwogfTsKIAotV0VCQ09SRV9F
WFBPUlQgSlNET01HbG9iYWxPYmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpDYWxsRnJhbWUmKTsKLQogSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01H
bG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIERPTVdyYXBwZXJXb3JsZCYpOwog
CiB0ZW1wbGF0ZTxjbGFzcyBKU0NsYXNzPgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAyNzkzNjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNXZWJBc3NlbWJseS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01pY3JvdGFzay5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTUVu
dHJ5U2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogCkBAIC0yODIsOSArMjgzLDQ2IEBAIEpTRE9NV2luZG93KiB0b0pTRE9NV2lu
ZG93KEZyYW1lJiBmcmFtZSwKICAgICByZXR1cm4gZnJhbWUuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0
KHdvcmxkKTsKIH0KIAotRE9NV2luZG93JiBpbmN1bWJlbnRET01XaW5kb3coSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQorc3RhdGljIEpT
R2xvYmFsT2JqZWN0KiBjYWxsZXJHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QmIGZhbGxiYWNr
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IG51bGxwdHIpCiB7Ci0gICAgcmV0
dXJuIGFzSlNET01XaW5kb3coJmNhbGxlckdsb2JhbE9iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUpKS0+d3JhcHBlZCgpOworICAgIFZNJiB2bSA9IGZhbGxiYWNrR2xvYmFsT2Jq
ZWN0LnZtKCk7CisgICAgQ2FsbEZyYW1lKiBzdGFydEZyYW1lID0gY2FsbEZyYW1lID8gY2FsbEZy
YW1lIDogdm0udG9wQ2FsbEZyYW1lOworICAgIGJvb2wgc2tpcE5leHRGcmFtZSA9ICEhY2FsbEZy
YW1lOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG51bGxwdHI7CisgICAg
U3RhY2tWaXNpdG9yOjp2aXNpdChzdGFydEZyYW1lLCB2bSwgWyZdKFN0YWNrVmlzaXRvciYgdmlz
aXRvcikgeworICAgICAgICBpZiAoc2tpcE5leHRGcmFtZSkgeworICAgICAgICAgICAgc2tpcE5l
eHRGcmFtZSA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVz
OjpDb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmlzaXRvci0+aXNXYXNtRnJhbWUo
KSkgeworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gdmlzaXRvci0+Y2FsbEZyYW1lKCktPmxl
eGljYWxHbG9iYWxPYmplY3Qodm0pOworICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6
U3RhdHVzOjpEb25lOworICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiBjb2RlQmxvY2sgPSB2
aXNpdG9yLT5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+Y29kZVR5
cGUoKSA9PSBDb2RlVHlwZTo6RnVuY3Rpb25Db2RlICYmIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpLT5pc0J1aWx0aW5GdW5jdGlv
bigpKQorICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6Q29udGlu
dWU7CisgICAgICAgICAgICBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
OworICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVzOjpEb25lOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6Q29udGludWU7CisgICAg
fSk7CisKKyAgICBpZiAoZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
OworICAgIGlmICh2bS5lbnRyeVNjb3BlKQorICAgICAgICByZXR1cm4gdm0uZW50cnlTY29wZS0+
Z2xvYmFsT2JqZWN0KCk7CisgICAgcmV0dXJuICZmYWxsYmFja0dsb2JhbE9iamVjdDsKK30KKwor
RE9NV2luZG93JiBpbmN1bWJlbnRET01XaW5kb3coSlNHbG9iYWxPYmplY3QmIGZhbGxiYWNrR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4gYXNKU0RPTVdp
bmRvdyhjYWxsZXJHbG9iYWxPYmplY3QoZmFsbGJhY2tHbG9iYWxPYmplY3QsICZjYWxsRnJhbWUp
KS0+d3JhcHBlZCgpOworfQorCitET01XaW5kb3cmIGluY3VtYmVudERPTVdpbmRvdyhKU0dsb2Jh
bE9iamVjdCYgZmFsbGJhY2tHbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGFzSlNET01XaW5k
b3coY2FsbGVyR2xvYmFsT2JqZWN0KGZhbGxiYWNrR2xvYmFsT2JqZWN0KSktPndyYXBwZWQoKTsK
IH0KIAogRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3coSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaAkocmV2aXNpb24gMjc5MzYyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNyBAQCBp
bmxpbmUgSlNET01XaW5kb3cqIHRvSlNET01XaW5kb3coRnJhbWUqCiAvLyBGSVhNRTogTWFrZSB0
aGlzIHdvcmsgZm9yIGFuICJhdXRob3IgZnVuY3Rpb24gb3Igc2NyaXB0IHRoYXQgb3JpZ2luYWxs
eSBzY2hlZHVsZWQgdGhlIGN1cnJlbnRseS1ydW5uaW5nIGNhbGxiYWNrLiIKIC8vIFNlZSA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQxMj4uCiBET01XaW5kb3cm
IGluY3VtYmVudERPTVdpbmRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpDYWxsRnJhbWUm
KTsKK0RPTVdpbmRvdyYgaW5jdW1iZW50RE9NV2luZG93KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsK
IAogRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCYpOwogRE9N
V2luZG93JiBmaXJzdERPTVdpbmRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZp
c2lvbiAyNzkzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MywxMCArMjYzLDE3IEBAIGJvb2wgSlNET01X
aW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2wKIAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKIAotICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCku
bG9jYXRpb25QdWJsaWNOYW1lKCkpIHsKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOworICAgIGlm
ICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCksIGVycm9yTWVzc2FnZSkpIHsKICAg
ICAgICAgLy8gV2Ugb25seSBhbGxvdyBzZXR0aW5nICJsb2NhdGlvbiIgYXR0cmlidXRlIGNyb3Nz
LW9yaWdpbi4KLSAgICAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLCBU
aHJvd1NlY3VyaXR5RXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBp
ZiAocHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSktPmJ1aWx0aW5OYW1lcygpLmxvY2F0aW9uUHVibGljTmFtZSgpKSB7CisgICAgICAgICAg
ICBhdXRvKiBzZXR0ZXIgPSBzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVy
dHlOYW1lKS0+cHJvcGVydHlQdXR0ZXIoKTsKKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
KyAgICAgICAgICAgIHNldHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUo
c2xvdC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0aHJvd1NlY3Vy
aXR5RXJyb3IoKmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSAmJiAhYWxsb3dzTGVnYWN5RXhwYW5kb0luZGV4ZWRQcm9wZXJ0aWVzKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2
aXNpb24gMjc5MzYyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSwxNyArMTExLDI2IEBAIGJvb2wgSlNMb2Nh
dGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmQKIGJvb2wgSlNMb2NhdGlvbjo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVy
dHlTbG90KQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIC8vIEFsd2F5cyBhbGxvdyBhc3NpZ25p
bmcgdG8gdGhlIHdob2xlIGxvY2F0aW9uLgogICAgIC8vIEhvd2V2ZXIsIGFsbG93aW5nIGFzc2ln
bmluZyBvZiBwaWVjZXMgbWlnaHQgaW5hZHZlcnRlbnRseSBkaXNjbG9zZSBwYXJ0cyBvZiB0aGUg
b3JpZ2luYWwgbG9jYXRpb24uCiAgICAgLy8gU28gZmFsbCB0aHJvdWdoIHRvIHRoZSBhY2Nlc3Mg
Y2hlY2sgZm9yIHRob3NlLgotICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuaHJlZlB1YmxpY05h
bWUoKSkgewotICAgICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkud2lu
ZG93KCksIFRocm93U2VjdXJpdHlFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+
d3JhcHBlZCgpLndpbmRvdygpLCBlcnJvck1lc3NhZ2UpKSB7CisgICAgICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVp
bHRpbk5hbWVzKCkuaHJlZlB1YmxpY05hbWUoKSkgeworICAgICAgICAgICAgYXV0byogc2V0dGVy
ID0gc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSktPnByb3Bl
cnR5UHV0dGVyKCk7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBz
ZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHB1dFByb3BlcnR5U2xv
dC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0aHJvd1NlY3VyaXR5
RXJyb3IoKmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVy
biBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAy
NzkzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkod29ya2luZyBjb3B5KQpAQCAtODUzLDcgKzg1Myw3IEBAIHN1YiBHZW5lcmF0ZU5hbWVk
R2V0dGVyTGFtYmRhCiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbk5hbWUsICRJ
RExUeXBlKSA9IEBfOwogICAgIAotICAgIG15IEBhcmd1bWVudHMgPSBHZW5lcmF0ZUNhbGxXaXRo
VXNpbmdSZWZlcmVuY2VzKCRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJzdGQ6Om51bGxvcHQiLCAidGhpc09iamVjdCIs
ICIgICAgICAgICIpOworICAgIG15IEBhcmd1bWVudHMgPSBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdS
ZWZlcmVuY2VzKCRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2Fs
bFdpdGh9LCAkb3V0cHV0QXJyYXksICJzdGQ6Om51bGxvcHQiLCAidGhpc09iamVjdCIsICIiLCAi
ICAgICAgICAiKTsKICAgICBwdXNoKEBhcmd1bWVudHMsICJwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8g
Z2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3Rvcjwk
e0lETFR5cGV9LCAke2NsYXNzTmFtZX0+KFtdICgke2NsYXNzTmFtZX0mIHRoaXNPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHtcbiIpOwpAQCAtNTg4
MSwxMCArNTg4MSw5IEBAIHN1YiBHZW5lcmF0ZUdldENhbGxEYXRhCiAKIHN1YiBHZW5lcmF0ZUNh
bGxXaXRoVXNpbmdSZWZlcmVuY2VzCiB7Ci0gICAgbXkgKCRjYWxsV2l0aCwgJG91dHB1dEFycmF5
LCAkcmV0dXJuVmFsdWUsICR0aGlzUmVmZXJlbmNlLCAkaW5kZW50KSA9IEBfOworICAgIG15ICgk
Y2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAkdGhpc1JlZmVyZW5jZSwgJGNh
bGxGcmFtZVJlZmVyZW5jZSwgJGluZGVudCkgPSBAXzsKIAotICAgIG15ICRjYWxsRnJhbWVQb2lu
dGVyID0gImNhbGxGcmFtZSI7Ci0gICAgbXkgJGNhbGxGcmFtZVJlZmVyZW5jZSA9ICIqY2FsbEZy
YW1lIjsKKyAgICBteSAkY2FsbEZyYW1lUG9pbnRlciA9ICRjYWxsRnJhbWVSZWZlcmVuY2UgJiYg
IiYkY2FsbEZyYW1lUmVmZXJlbmNlIjsKICAgICBteSAkZ2xvYmFsT2JqZWN0ID0gImpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSI7CiAKICAgICByZXR1cm4g
R2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAk
cmV0dXJuVmFsdWUsICRjYWxsRnJhbWVQb2ludGVyLCAkY2FsbEZyYW1lUmVmZXJlbmNlLCAkZ2xv
YmFsT2JqZWN0LCAkZ2xvYmFsT2JqZWN0LCAkdGhpc1JlZmVyZW5jZSwgJGluZGVudCk7CkBAIC01
OTY0LDE1ICs1OTYzLDE1IEBAIHN1YiBHZW5lcmF0ZUNhbGxXaXRoCiAgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJKU0RPTVdpbmRvd0Jhc2UuaCIpOwogICAgICAgICBwdXNoKEBjYWxsV2l0aEFy
Z3MsICJhY3RpdmVET01XaW5kb3coKiRnbG9iYWxPYmplY3QpIik7CiAgICAgfQotICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJGaXJz
dFdpbmRvdyIpKSB7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNv
bnRhaW5zKCRjYWxsV2l0aCwgIkluY3VtYmVudFdpbmRvdyIpKSB7CiAgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJET01XaW5kb3cuaCIpOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNE
T01XaW5kb3dCYXNlLmgiKTsKLSAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiZmlyc3RET01X
aW5kb3coKiRnbG9iYWxPYmplY3QpIik7CisgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgImlu
Y3VtYmVudERPTVdpbmRvdygqJGdsb2JhbE9iamVjdCIgLiAoJGNhbGxGcmFtZVJlZmVyZW5jZSA/
ICIsICIgLiAkY2FsbEZyYW1lUmVmZXJlbmNlIDogIiIpIC4gIikiKTsKICAgICB9Ci0gICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIklu
Y3VtYmVudFdpbmRvdyIpKSB7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJp
YnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIkZpcnN0V2luZG93IikpIHsKICAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIkRPTVdpbmRvdy5oIik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJK
U0RPTVdpbmRvd0Jhc2UuaCIpOwotICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3MsICJpbmN1bWJl
bnRET01XaW5kb3coKiRnbG9iYWxPYmplY3QsICRjYWxsRnJhbWVSZWZlcmVuY2UpIik7CisgICAg
ICAgIHB1c2goQGNhbGxXaXRoQXJncywgImZpcnN0RE9NV2luZG93KCokZ2xvYmFsT2JqZWN0KSIp
OwogICAgIH0KICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFp
bnMoJGNhbGxXaXRoLCAiUnVudGltZUZsYWdzIikpIHsKICAgICAgICAgcHVzaChAY2FsbFdpdGhB
cmdzLCAiJHtnbG9iYWxPYmplY3R9LT5ydW50aW1lRmxhZ3MoKSIpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24g
Mjc5MzYyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsOSArMjAwLDcgQEAgZW51bSBUZXN0Q29uZmlkZW5j
ZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogCiAgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gYXR0
cmlidXRlIGxvbmcgd2l0aEV4ZWNTdGF0ZUF0dHJpYnV0ZTsKICAgICBbQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0LCBTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0
ZSBsb25nIHdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlOwotICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBhdHRyaWJ1dGUgVGVzdE9iaiB3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCZFeGVjU3RhdGVdIGF0dHJpYnV0ZSBUZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlOwotICAgIFtDYWxsV2l0aD0gIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgICYgIEV4ZWNTdGF0ZSAgXSBhdHRyaWJ1dGUgVGVzdE9iaiB3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGU7CisgICAgW1Nl
dHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIERPTVN0
cmluZyB3aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGU7CiAKICAgICAvLyBPcHRpb25hbCBwYXJh
bWV0ZXJzLgogICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxBcmcob3B0aW9uYWwg
bG9uZyBvcHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI3OTM2MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzYxLDEyICsxNzYxLDggQEAgc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0Twogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2Jq
X3dpdGhFeGVjU3RhdGVBdHRyaWJ1dGUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0T2JqX3dpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aXRoQ2FsbFdpdGhB
bmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOwotc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0
ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGUpOwotc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVj
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdE9ial93aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJp
YnV0ZSk7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMSk7CkBAIC0yMTI2LDkg
KzIxMjIsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAg
eyAib253ZWJraXRmb28iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9vbndlYmtpdGZvbyksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9vbndlYmtpdGZv
bykgfSB9LAogICAgIHsgIndpdGhFeGVjU3RhdGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoRXhlY1N0
YXRlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhFeGVjU3RhdGVBdHRyaWJ1dGUpIH0gfSwKICAg
ICB7ICJ3aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3dpdGhD
YWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhDYWxsV2l0
aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKSB9IH0sCi0gICAgeyAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSkg
fSB9LAotICAgIHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmli
dXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1
dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRy
aWJ1dGUpIH0gfSwKLSAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKSB9IH0sCisgICAgeyAi
d2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfd2l0aFNldHRlckNhbGxXaXRoQXR0
cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSkgfSB9LAogI2lm
IEVOQUJMRShDb25kaXRpb24xKQogICAgIHsgImNvbmRpdGlvbmFsQXR0cjEiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9jb25k
aXRpb25hbEF0dHIxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2NvbmRpdGlvbmFsQXR0cjEpIH0gfSwKICNlbHNlCkBA
IC00MjYyLDExNSArNDI1NiwzNSBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0
T2JqX3dpCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0
T2JqX3dpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwog
fQogCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2Jq
X3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dT
Y29wZSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgqY29udGV4dCkp
KSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFt
ZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2Jq
X3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRy
aWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial93aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQotewot
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIiwgIlRl
c3RPYmoiKTsgfSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJS0VM
WSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnZva2VGdW5jdG9yUHJv
cGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewotICAgICAgICByZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZSgqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKLSAgICB9KTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJp
YnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2Jq
JiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJS0VM
WSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSgqanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2V0dGVyQ2FsbFdpdGhBdHRy
aWJ1dGUoKSkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial93aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RP
Ympfd2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJp
YnV0ZU5hbWUpKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpz
VGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGVT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpf
d2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
SW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgW10oSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRy
aWJ1dGUiLCAiVGVzdE9iaiIpOyB9KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKLSAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAg
aWYgKFVOTElLRUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGludm9r
ZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlKCpqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCksICpjYWxsRnJhbWUsICpjb250ZXh0LCAqbmF0
aXZlVmFsdWUpOwotICAgIH0pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1KU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhl
Y1N0YXRlQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQcm9w
ZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhl
Y1N0YXRlQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0T2JqJiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChV
TkxJS0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFtZSwg
KmNvbnRleHQpKSkpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3dp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKLXsKLSAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1
dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial93aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOyB9KTsKKyAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKLSAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGlj
YWxHbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKFVOTElL
RUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGludm9rZUZ1bmN0b3JQ
cm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCwgKm5h
dGl2ZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0V2l0aFNldHRlckNhbGxXaXRoQXR0
cmlidXRlKGluY3VtYmVudERPTVdpbmRvdygqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxl
eGljYWxHbG9iYWxPYmplY3QpKSwgZmlyc3RET01XaW5kb3coKmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
ICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5
TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RP
Ympfd2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCiB7Ci0gICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpfd2l0aFNl
dHRlckNhbGxXaXRoQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQogCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNpb24gMjc5MzYyKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDIyICs0MywyMiBAQAogICAgIExlZ2FjeVVuZm9yZ2VhYmxlLAogICAgIEV4cG9zZWQ9V2luZG93
CiBdIGludGVyZmFjZSBMb2NhdGlvbiB7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRv
dyZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0cmluZ2lmaWVyIGF0
dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKKyAgICBbU2V0dGVyQ2FsbFdpdGg9SW5jdW1iZW50V2lu
ZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHlPblNldHRlcl0gc3RyaW5naWZpZXIg
YXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogCi0gICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZG
aXJzdFdpbmRvd10gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKLSAgICBbRG9Ob3RD
aGVja1NlY3VyaXR5LCBDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIHVuZGVmaW5l
ZCByZXBsYWNlKFVTVlN0cmluZyB1cmwpOwotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3ddIHVu
ZGVmaW5lZCByZWxvYWQoKTsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93JkZpcnN0V2lu
ZG93XSB1bmRlZmluZWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOworICAgIFtDYWxsV2l0aD1JbmN1
bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eV0gdW5kZWZpbmVkIHJl
cGxhY2UoVVNWU3RyaW5nIHVybCk7CisgICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvd10gdW5k
ZWZpbmVkIHJlbG9hZCgpOwogCiAgICAgLy8gVVJJIGRlY29tcG9zaXRpb24gYXR0cmlidXRlcwot
ICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBV
U1ZTdHJpbmcgcHJvdG9jb2w7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJz
dFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBob3N0OwotICAgIFtTZXR0ZXJDYWxsV2l0aD1B
Y3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaG9zdG5hbWU7Ci0g
ICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVT
VlN0cmluZyBwb3J0OwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5k
b3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcGF0aG5hbWU7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFj
dGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBzZWFyY2g7Ci0gICAg
W1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0
cmluZyBoYXNoOworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5k
b3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcHJvdG9jb2w7CisgICAgW1NldHRlckNhbGxXaXRoPUlu
Y3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBob3N0OworICAg
IFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBV
U1ZTdHJpbmcgaG9zdG5hbWU7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZG
aXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBwb3J0OworICAgIFtTZXR0ZXJDYWxsV2l0
aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcGF0aG5h
bWU7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gYXR0
cmlidXRlIFVTVlN0cmluZyBzZWFyY2g7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdp
bmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBoYXNoOwogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47CiAKLSAgICBbTGVnYWN5VW5mb3JnZWFibGUs
IFNhbWVPYmplY3QsIENhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
Z0xpc3QgYW5jZXN0b3JPcmlnaW5zOworICAgIFtTYW1lT2JqZWN0LCBDYWNoZWRBdHRyaWJ1dGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGFuY2VzdG9yT3JpZ2luczsKIH07Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzkzNjIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0wNi0yOCAgQWxleGV5IFNodmF5a2EgIDxz
aHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gQ2FsbCBjdXN0b20gYWNjZXNz
b3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFsIG9iamVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTk3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MT2Jq
ZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
ZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS5odG1sOgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15
LWZyYW1lLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxp
c3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWw6CisgICAgICAg
ICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVz
cy1kb2MtY29udGV4dC0yLmh0bWw6CisgICAgICAgIFRoZXNlIHRlc3RzIHVzZWQgdG8gcGFzcyBh
cyBpcywgcHJvYmFibHksIGR1ZSB0byBjb21iaW5hdGlvbiBvZiBvbGQgKGluY29ycmVjdCkgYmVo
YXZpb3IgYW5kCisgICAgICAgIHNvbWUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBydW4td2Vi
a2l0LXRlc3RzLiBUaGV5IGZhaWwgb24gTWluaUJyb3dzZXIgLyBDaHJvbWUgLyBGaXJlZm94Cisg
ICAgICAgIHVubGVzcyBtb2RpZmllZCBub3QgdG8gdXNlIGRhdGE6Ly8gcHJvdG9jb2wsIHdoaWNo
IGlzIG5vdCBzeXN0ZW0gdW5kZXIgdGVzdC4KKworICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2Nh
dGlvbi1hc3NpZ24tZXhwZWN0ZWQudHh0OgorICAgICAgICBSZXZlcnQgdGhlIGNoYW5nZXMgbWFk
ZSB0byB0aGVzZSB0ZXN0cyBpbiByMTc0OTk2LiBMb2NhdGlvbjo6YXNzaWduKCkgbm93IHVzZXMg
Y29ycmVjdAorICAgICAgICAoaW5jdW1iZW50KSBXaW5kb3cgdG8gc2V0IHJlZmVycmVyIGFuZCBw
ZXJmb3JtIHNlY3VyaXR5IGNoZWNrcy4KKwogMjAyMS0wNi0yOCAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjc5MzEwKTogT2Nj
YXNpb25hbCBjcmFzaCB3aGVuIGZvY3VzaW5nIGxvZ2luIGZpZWxkcyBvbiBpUGFkIHdpdGggYSBz
b2Z0d2FyZSBrZXlib2FyZApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVs
ZW1lbnQvb2JqZWN0LWFzLWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNzkzNjIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0
RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01
LDEwICs1LDEwIEBAIFBBU1Mgd2luZG93LmZyYW1lc1swXS5mcmFtZUVsZW1lbnQuY29udGUKIFBB
U1Mgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVsZW1lbnQubmFtZSBpcyAib2JqIgogUEFTUyB3aW5k
b3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250ZW50V2luZG93IGlzIHdpbmRvdy5mcmFtZXNb
MV0uZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudC5kZWZhdWx0VmlldwogUEFTUyB3aW5kb3cu
ZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250ZW50V2luZG93LmRvY3VtZW50IGlzIHdpbmRvdy5m
cmFtZXNbMV0uZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudAotTG9hZGluZyAnZGF0YTp0ZXh0
L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJhbWUnIGluIGlmcmFtZS4uLgotTG9hZGluZyAn
ZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBvYmplY3QnIGluIG9iamVjdC4uLgot
UEFTUyB3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLnRvU3RyaW5nKCkgaXMgImRhdGE6dGV4dC9o
dG1sLFVwZGF0ZWQgY29udGVudHMgb2YgaWZyYW1lIgotUEFTUyB3aW5kb3cuZnJhbWVzWzFdLmxv
Y2F0aW9uLnRvU3RyaW5nKCkgaXMgImRhdGE6dGV4dC9odG1sLFVwZGF0ZWQgY29udGVudHMgb2Yg
b2JqZWN0IgorTG9hZGluZyAncmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbCcgaW4gaWZyYW1l
Li4uCitMb2FkaW5nICdyZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1sJyBpbiBvYmplY3QuLi4K
K1BBU1Mgd2luZG93LmZyYW1lc1swXS5sb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCJyZXNvdXJjZXMv
ZHVtbXktZnJhbWUtMi5odG1sIikgaXMgdHJ1ZQorUEFTUyB3aW5kb3cuZnJhbWVzWzFdLmxvY2F0
aW9uLmhyZWYuZW5kc1dpdGgoInJlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwiKSBpcyB0cnVl
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50
L29iamVjdC1hcy1mcmFtZS5odG1sCShyZXZpc2lvbiAyNzkzNjIpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNiw4ICs2LDggQEAKIAoganNUZXN0SXNBc3luYyA9IHRydWU7CiAKLXZhciB1cGRh
dGVkRnJhbWVVUkwgPSAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJhbWUi
OwotdmFyIHVwZGF0ZWRPYmplY3RVUkwgPSAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50
cyBvZiBvYmplY3QiOwordmFyIHVwZGF0ZWRGcmFtZVVSTCA9ICJyZXNvdXJjZXMvZHVtbXktZnJh
bWUtMi5odG1sIjsKK3ZhciB1cGRhdGVkT2JqZWN0VVJMID0gInJlc291cmNlcy9kdW1teS1mcmFt
ZS0xLmh0bWwiOwogCiBmdW5jdGlvbiBydW5UZXN0cygpCiB7CkBAIC0zNiw4ICszNiw4IEBAIGZ1
bmN0aW9uIGhhbmRsZUxvYWQoKQogICAgIGlmIChudW1Mb2FkcyA8IDIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHNob3VsZEJlKCJ3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLnRvU3RyaW5nKCki
LCAnIicgKyB1cGRhdGVkRnJhbWVVUkwgKyAnIicpOwotICAgIHNob3VsZEJlKCJ3aW5kb3cuZnJh
bWVzWzFdLmxvY2F0aW9uLnRvU3RyaW5nKCkiLCAnIicgKyB1cGRhdGVkT2JqZWN0VVJMICsgJyIn
KTsKKyAgICBzaG91bGRCZVRydWUoYHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24uaHJlZi5lbmRz
V2l0aCgiJHt1cGRhdGVkRnJhbWVVUkx9IilgKTsKKyAgICBzaG91bGRCZVRydWUoYHdpbmRvdy5m
cmFtZXNbMV0ubG9jYXRpb24uaHJlZi5lbmRzV2l0aCgiJHt1cGRhdGVkT2JqZWN0VVJMfSIpYCk7
CiAKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KQEAgLTQ2LDggKzQ2LDggQEAgZnVuY3Rpb24gaGFu
ZGxlTG9hZCgpCiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgogCi08aWZyYW1l
IG5hbWU9ImZyYW1lIiBzcmM9ImRhdGE6dGV4dC9odG1sLE9sZCBjb250ZW50cyBvZiBpZnJhbWUi
PjwvaWZyYW1lPgotPG9iamVjdCBuYW1lPSJvYmoiIHR5cGU9InRleHQvaHRtbCIgZGF0YT0iZGF0
YTp0ZXh0L2h0bWwsT2xkIGNvbnRlbnRzIG9mIG9iamVjdCI+PC9vYmplY3Q+Cis8aWZyYW1lIG5h
bWU9ImZyYW1lIiBzcmM9InJlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwiPjwvaWZyYW1lPgor
PG9iamVjdCBuYW1lPSJvYmoiIHR5cGU9InRleHQvaHRtbCIgZGF0YT0icmVzb3VyY2VzL2R1bW15
LWZyYW1lLTIuaHRtbCI+PC9vYmplY3Q+CiAKIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0x
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1l
bnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorPCFET0NUWVBFIGh0bWw+CitPbGQg
Y29udGVudHMgb2YgaWZyYW1lIC8gTmV3IGNvbnRlbnRzIG9mIG9iamVjdApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVu
dC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACis8IURPQ1RZUEUgaHRtbD4KK09sZCBj
b250ZW50cyBvZiBvYmplY3QgLyBOZXcgY29udGVudHMgb2YgaWZyYW1lCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNz
LWRvYy1jb250ZXh0LTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIu
aHRtbAkocmV2aXNpb24gMjc5MzYyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmli
dXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8aHRtbD4KIDxib2R5IG9ubG9hZD0idGVzdCgp
Ij4KLTxpZnJhbWUgc3JjPSdkYXRhOnRleHQvaHRtbCw8YSBpZD0iYSIgaHJlZj0iJTIzIiBvbmNs
aWNrPSJkb2N1bWVudC53cml0ZSh3aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4mYXBv
czsgOiAmYXBvczs8cD5QQVNTPC9wPiZhcG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4nPjwv
aWZyYW1lPgorPGlmcmFtZSBzcmNkb2M9JzxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9ImRv
Y3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZh
cG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+
CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVu
ZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVk
LWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAkocmV2aXNpb24gMjc5MzYyKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9t
LWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiA8aHRtbD4KIDxib2R5IG9ubG9hZD0idGVzdCgpIj4KLTxpZnJhbWUgc3JjPSdkYXRhOnRl
eHQvaHRtbCw8YSBpZD0iYSIgaHJlZj0iJTIzIiBvbmNsaWNrPSJkb2N1bWVudC53cml0ZSh3aW5k
b3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4mYXBvczsgOiAmYXBvczs8cD5QQVNTPC9wPiZh
cG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4nPjwvaWZyYW1lPgorPGlmcmFtZSBzcmNkb2M9
JzxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0
b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsg
cmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc5MzYyKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBh
cmVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw5IEBACi1UaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgd2l0aCB0aGUga2V5d29yZHMgYWxs
b3ctc2NyaXB0cyBhbmQgYWxsb3ctc2FtZS1vcmlnaW4gaXMgYWxsb3dlZCB0byBuYXZpZ2F0ZSBh
biBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0
dHJpYnV0ZS4KK0NPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBp
bml0aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFtZSB3aXRoIFVSTCAnc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLXNvdXJjZS5odG1sJy4gVGhlIGZyYW1lIGF0dGVtcHRpbmcgbmF2aWdhdGlvbiBp
cyBzYW5kYm94ZWQsIGFuZCBpcyB0aGVyZWZvcmUgZGlzYWxsb3dlZCBmcm9tIG5hdmlnYXRpbmcg
aXRzIGFuY2VzdG9ycy4KKworQ09OU09MRSBNRVNTQUdFOiBTZWN1cml0eUVycm9yOiBUaGUgb3Bl
cmF0aW9uIGlzIGluc2VjdXJlLgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQg
SUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBh
c3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS4KKworVGhpcyBpcyBkb25lIGJ5IGxvYWRp
bmcgdGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1lcywgYW5kIGEgc2luZ2xlIHNhbmRib3hlZCBvbmUu
IEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQgb25l
IHRvIG5vdCBiZSBvbmUgb2YgdGhlbS4KIAogVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9u
IHN1Y2Nlc3MuCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlzaW9u
IDI3OTM2MikKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1wYXJlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOSArMTMsOSBAQCBmdW5j
dGlvbiBjaGVja1Jlc3VsdHMoKQogewogICAgIHZhciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Rlc3RTdGF0dXMnKTsKIAotICAgIGlmIChzZWxmLm5hdmlnYXRlZC5sb2Nh
dGlvbi5ocmVmLmluZGV4T2YoJ3BhcmVudC5odG1sJykgIT0gLTEpCi0gICAgICAgIHRlc3RTdGF0
dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IHNhbmRib3hlZCBmcmFtZSBjb3VsZG5cJ3QgbmF2aWdhdGUn
OwotICAgIGVsc2UgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMSkKKyAgICBpZiAoc2VsZi5uYXZp
Z2F0ZWQubG9jYXRpb24uaHJlZi5pbmRleE9mKCdwYXJlbnQuaHRtbCcpID09IC0xKQorICAgICAg
ICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1lIG5hdmlnYXRl
ZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQogICAgICAgICB0ZXN0U3Rh
dHVzLmlubmVySFRNTCA9ICdQQVNTJzsKICAgICBlbHNlCiAgICAgICAgIHRlc3RTdGF0dXMuaW5u
ZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Blcmx5JzsKQEAgLTI4LDcg
KzI4LDcgQEAgZnVuY3Rpb24gY291bnRGcmFtZSgpCiB7CiAgICAgKytuYXZpZ2F0ZWRGcmFtZXM7
CiAKLSAgICBpZiAobmF2aWdhdGVkRnJhbWVzID09IDExKQorICAgIGlmIChuYXZpZ2F0ZWRGcmFt
ZXMgPT0gMTApCiAgICAgICAgIGNoZWNrUmVzdWx0cygpOwogfQogCkBAIC0zNywxMCArMzcsMTMg
QEAgZnVuY3Rpb24gY291bnRGcmFtZSgpCiAKIDxib2R5PgogCi0gICAgPHA+VGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIHdpdGggdGhlIGtleXdvcmRzCi0gICAgYWxs
b3ctc2NyaXB0cyBhbmQgYWxsb3ctc2FtZS1vcmlnaW4gaXMgYWxsb3dlZCB0byBuYXZpZ2F0ZSBh
biBhbmNlc3RvcgorICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElG
cmFtZSBjYW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IKICAgICBpbiB0aGUgZnJhbWUgdHJlZSBi
eSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS48L3A+CiAKKyAgICA8cD5UaGlzIGlz
IGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5nbGUK
KyAgICBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQsIGJ1
dCB0aGUgc2FuZGJveGVkCisgICAgb25lIHRvIDxiPm5vdDwvYj4gYmUgb25lIG9mIHRoZW0uPC9w
PgorICAgIAogICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24g
c3VjY2Vzcy48L3A+CiAKICAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3Np
Z24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDI3OTM2MikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBACi1kb2N1bWVudC5yZWZlcnJlciA9Citk
b2N1bWVudC5yZWZlcnJlciA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKIApJbmRleDogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzkzNjIpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIw
MjEtMDYtMjggIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAg
ICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRoIHRoZWlyIGhvbGRl
cidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
Z2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0
LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlw
dC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5k
aW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9zdXBwb3J0L2Ny
ZWF0ZS1yZWFsbS5qczogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9kdW1teS1pZnJhbWUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9y
aWdpbi1vYmplY3RzL3dpbmRvdy1sb2NhdGlvbi1hbmQtbG9jYXRpb24taHJlZi1jcm9zcy1yZWFs
bS1zZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9u
LWFuZC1sb2NhdGlvbi1ocmVmLWNyb3NzLXJlYWxtLXNldC5odG1sOiBBZGRlZC4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9j
b21waWxlLWV2ZW50LWhhbmRsZXItc2V0dGluZ3Mtb2JqZWN0cy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vz
c2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3By
b21pc2Utam9iLWluY3VtYmVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LWNzcy1j
cm9zcy1vcmlnaW4uaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS5o
dG1sOgorICAgICAgICBBbGwgdGhlc2UgYXJlIGNvbmZpcm1lZCBwcm9ncmVzc2lvbnMuCisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvcGVyZm9ybWFuY2UtdGltZWxpbmUvc3VwcG9ydGVk
RW50cnlUeXBlcy1jcm9zcy1yZWFsbS1hY2Nlc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvcGVyZm9ybWFuY2UtdGltZWxpbmUvc3VwcG9ydGVkRW50
cnlUeXBlcy1jcm9zcy1yZWFsbS1hY2Nlc3MuaHRtbDogQWRkZWQuCisKIDIwMjEtMDYtMjggIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENTUyBwYXJzZXIgImNvbnN1
bWUgZGVjbGFyYXRpb24iIGFsZ29yaXRobSBkb2VzIG5vdCBoYW5kbGUgd2hpdGVzcGFjZSBjb3Jy
ZWN0bHkKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
V2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFs
dWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9n
bG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRo
aXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOCBAQAorCitQQVNTIENyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBnZXR0ZXIgdGhyb3dz
IHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgQ3Jvc3MtcmVhbG0gZ2xv
YmFsIG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9i
amVjdAorUEFTUyBDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3
aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CitGQUlMIENyb3NzLXJlYWxtIGdsb2Jh
bCBvYmplY3QncyBnZXR0ZXIgY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUaGUg
V2luZG93Lm5hbWUgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRv
dyIKK0ZBSUwgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNldHRlciBjYWxsZWQgb24gbnVs
bCAvIHVuZGVmaW5lZCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFRoZSBXaW5kb3cubG9jYXRpb24gc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRvdyIKK1BBU1MgQ3Jvc3MtcmVhbG0gZ2xvYmFs
IG9iamVjdCdzIG9wZXJhdGlvbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorCkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2Ny
aXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJlYWxt
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQt
dGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGlu
Zy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDk3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5Dcm9zcy1yZWFsbSBnZXR0ZXIgLyBzZXR0ZXIgLyBvcGVyYXRp
b24gZG9lc24ndCB1c2UgbGV4aWNhbCBnbG9iYWwgb2JqZWN0IGlmIHx0aGlzfCB2YWx1ZSBpcyBp
bmNvbXBhdGlibGUgb2JqZWN0IC8gbnVsbCAvIHVuZGVmaW5lZDwvdGl0bGU+Cis8bGluayByZWw9
ImhlbHAiIGhyZWY9Imh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1
dGUtZ2V0dGVyIj4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHVi
LmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1zZXR0ZXIiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tY3JlYXRlLW9wZXJhdGlvbi1m
dW5jdGlvbiI+CisKKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJzdXBwb3J0L2NyZWF0ZS1yZWFsbS5qcyI+PC9zY3JpcHQ+CisK
Kzxib2R5PgorPHNjcmlwdD4KK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBv
dGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG5vdFdpbmRvdyA9IE9iamVj
dC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG90aGVyKSk7CisKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKG90aGVyKS53aW5k
b3c7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXIsICJoaXN0b3J5IikuZ2V0LmNhbGwo
bm90V2luZG93KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgp
ID0+IHsgUmVmbGVjdC5nZXQob3RoZXIsICJzY3JlZW4iLCBub3RXaW5kb3cpOyB9KTsKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkob3RoZXIs
IHt9KS5vbmNsaWNrOyB9KTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3MgZ2V0dGVy
IHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7CisKK3Byb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQp
OworICAgIGNvbnN0IG5vdFdpbmRvdyA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlw
ZU9mKG90aGVyKSk7CisKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkg
PT4geyBPYmplY3QuY3JlYXRlKG90aGVyKS5uYW1lID0gImR1bW15IjsgfSk7CisgICAgYXNzZXJ0
X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihvdGhlciwgInN0YXR1cyIpLnNldC5jYWxsKG5vdFdpbmRvdywgb3RoZXIuc3Rh
dHVzKTsgfSk7CisgICAgLy8gcGFyZW50IGlzIFtSZXBsYWNlYWJsZV0KKyAgICBhc3NlcnRfdGhy
b3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChvdGhlciwgInBhcmVu
dCIsIHdpbmRvdywgbm90V2luZG93KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5U
eXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5KG90aGVyLCB7fSkubG9jYXRpb24gPSBsb2NhdGlv
bjsgfSk7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hl
biBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMg
dCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2FpdCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25z
dCBub3RXaW5kb3cgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvdGhlcikp
OworCisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0
LmNyZWF0ZShvdGhlcikuZm9jdXMoKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5U
eXBlRXJyb3IsICgpID0+IHsgb3RoZXIuY2xlYXJJbnRlcnZhbC5jYWxsKG5vdFdpbmRvdywgMCk7
IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxl
Y3QuYXBwbHkob3RoZXIuYmx1ciwgbm90V2luZG93LCBbXSk7IH0pOworICAgIGFzc2VydF90aHJv
d3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IG5ldyBQcm94eShvdGhlciwge30pLnJlbW92
ZUV2ZW50TGlzdGVuZXIoImZvbyIsICgpID0+IHt9KTsgfSk7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xv
YmFsIG9iamVjdCdzIG9wZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxl
IG9iamVjdCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIg
PSBhd2FpdCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBvdGhlck5hbWVHZXR0ZXIgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90aGVyLCAibmFtZSIpLmdldDsKKworICAgIGFz
c2VydF9lcXVhbHMoUmVmbGVjdC5nZXQob3RoZXIsICJzZWxmIiwgbnVsbCksIG90aGVyKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKFJlZmxlY3QuZ2V0KG90aGVyLCAiZG9jdW1lbnQiLCB1bmRlZmluZWQp
LCBvdGhlci5kb2N1bWVudCk7CisgICAgYXNzZXJ0X2VxdWFscyhvdGhlck5hbWVHZXR0ZXIuY2Fs
bChudWxsKSwgImR1bW15Iik7CisgICAgLy8gQW4gZW5naW5lIG1pZ2h0IGhhdmUgZGlmZmVyZW50
IGNvZGUgcGF0aCBmb3IgY2FsbGluZyBhIGZ1bmN0aW9uIGZyb20gb3V0ZXIgc2NvcGUgdG8gaW1w
bGVtZW50IHN0ZXAgMS5iLmlpaSBvZiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWV2YWx1
YXRlY2FsbAorICAgIGFzc2VydF9lcXVhbHMoKCgpID0+IG90aGVyTmFtZUdldHRlcigpKSgpLCAi
ZHVtbXkiKTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIGNhbGxlZCBv
biBudWxsIC8gdW5kZWZpbmVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBj
b25zdCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG90aGVyTG9jYXRp
b25TZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90aGVyLCAibG9jYXRp
b24iKS5zZXQ7CisgICAgY29uc3Qgb3RoZXJIcmVmID0gb3RoZXIubG9jYXRpb24uaHJlZjsKKyAg
ICBjb25zdCBuZXdTZWxmID0ge307CisKKyAgICAvLyBzZWxmIGlzIFtSZXBsYWNlYWJsZV0KKyAg
ICBhc3NlcnRfdHJ1ZShSZWZsZWN0LnNldChvdGhlciwgInNlbGYiLCBuZXdTZWxmLCBudWxsKSk7
CisgICAgYXNzZXJ0X3RydWUoUmVmbGVjdC5zZXQob3RoZXIsICJuYW1lIiwgIm5ld05hbWUiLCB1
bmRlZmluZWQpKTsKKworICAgIG90aGVyTG9jYXRpb25TZXR0ZXIuY2FsbChudWxsLCBgJHtvdGhl
ckhyZWZ9I2Zvb2ApOworICAgIGFzc2VydF9lcXVhbHMob3RoZXIubG9jYXRpb24uaGFzaCwgIiNm
b28iKTsKKyAgICAvLyBBbiBlbmdpbmUgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgY29kZSBwYXRoIGZv
ciBjYWxsaW5nIGEgZnVuY3Rpb24gZnJvbSBvdXRlciBzY29wZSB0byBpbXBsZW1lbnQgc3RlcCAx
LmIuaWlpIG9mIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZXZhbHVhdGVjYWxsCisgICAg
KCgpID0+IHsgb3RoZXJMb2NhdGlvblNldHRlcihgJHtvdGhlckhyZWZ9I2JhcmApOyB9KSgpOwor
ICAgIGFzc2VydF9lcXVhbHMob3RoZXIubG9jYXRpb24uaGFzaCwgIiNiYXIiKTsKKworICAgIC8v
IENoZWNrIHRoZXNlIGFmdGVyIGNhbGxpbmcgImxvY2F0aW9uIiBzZXR0ZXIgbWFrZSBzdXJlIG5v
IG5hdmlnYXRpb24gaGFzIG9jY3VycmVkCisgICAgYXNzZXJ0X2VxdWFscyhvdGhlci5zZWxmLCBu
ZXdTZWxmKTsKKyAgICBhc3NlcnRfZXF1YWxzKG90aGVyLm5hbWUsICJuZXdOYW1lIik7Cit9LCAi
Q3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNldHRlciBjYWxsZWQgb24gbnVsbCAvIHVuZGVm
aW5lZCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBh
d2FpdCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBvdGhlckZvY3VzID0gb3RoZXIuZm9jdXM7
CisgICAgY29uc3Qgb3RoZXJEaXNwYXRjaEV2ZW50ID0gb3RoZXIuZGlzcGF0Y2hFdmVudDsKKyAg
ICAKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIGRvY3VtZW50LmJv
ZHkpOworICAgIC8vIEFuIGVuZ2luZSBtaWdodCBoYXZlIGRpZmZlcmVudCBjb2RlIHBhdGggZm9y
IGNhbGxpbmcgYSBmdW5jdGlvbiBmcm9tIG91dGVyIHNjb3BlIHRvIGltcGxlbWVudCBzdGVwIDEu
Yi5paWkgb2YgaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1ldmFsdWF0ZWNhbGwKKyAgICAo
KCkgPT4geyBvdGhlckZvY3VzKCk7IH0pKCk7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5h
Y3RpdmVFbGVtZW50LmNvbnRlbnRXaW5kb3csIG90aGVyKTsKKworICAgIGxldCBjYXVnaHRFdmVu
dDsKKyAgICBvdGhlci5hZGRFdmVudExpc3RlbmVyLmNhbGwobnVsbCwgImZvbyIsIGV2ZW50ID0+
IHsgY2F1Z2h0RXZlbnQgPSBldmVudDsgfSk7CisgICAgY29uc3QgZGlzcGF0Y2hlZEV2ZW50ID0g
bmV3IG90aGVyLkV2ZW50KCJmb28iKTsKKyAgICBhc3NlcnRfdHJ1ZShvdGhlckRpc3BhdGNoRXZl
bnQoZGlzcGF0Y2hlZEV2ZW50KSk7CisgICAgYXNzZXJ0X2VxdWFscyhjYXVnaHRFdmVudCwgZGlz
cGF0Y2hlZEV2ZW50KTsKKworICAgIGNvbnN0IG1lc3NhZ2VQcm9taXNlID0gbmV3IEV2ZW50V2F0
Y2hlcih0LCBvdGhlciwgIm1lc3NhZ2UiKS53YWl0X2ZvcigibWVzc2FnZSIpOworICAgIG90aGVy
LnBvc3RNZXNzYWdlLmNhbGwobnVsbCwgImZvbyIpOworICAgIGFzc2VydF9lcXVhbHMoKGF3YWl0
IG1lc3NhZ2VQcm9taXNlKS5kYXRhLCAiZm9vIik7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9i
amVjdCdzIG9wZXJhdGlvbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCIpOworPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNy
b3NzLXJlYWxtLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW52
YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDUgQEAKKworUEFTUyBDcm9zcy1yZWFsbSBnZXR0ZXIgdGhyb3dzIHdoZW4gY2Fs
bGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgQ3Jvc3MtcmVhbG0gc2V0dGVyIHRocm93
cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CitQQVNTIENyb3NzLXJlYWxtIG9w
ZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorCkluZGV4
OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21h
c2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJ
REwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1s
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3Mt
cmVhbG0uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Dcm9zcy1yZWFsbSBnZXR0ZXIgLyBz
ZXR0ZXIgLyBvcGVyYXRpb24gZG9lc24ndCB1c2UgbGV4aWNhbCBnbG9iYWwgb2JqZWN0IHRvIHRo
cm93IGFuIGVycm9yIGZvciBpbmNvbXBhdGlibGUgfHRoaXN8IHZhbHVlPC90aXRsZT4KKzxsaW5r
IHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0
dHJpYnV0ZS1nZXR0ZXIiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2hleWNhbS5n
aXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLXNldHRlciI+Cis8bGluayByZWw9ImhlbHAi
IGhyZWY9Imh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1jcmVhdGUtb3BlcmF0
aW9uLWZ1bmN0aW9uIj4KKworPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InN1cHBvcnQvY3JlYXRlLXJlYWxtLmpzIj48L3Njcmlw
dD4KKworPGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNv
bnN0IG90aGVyID0gYXdhaXQgY3JlYXRlUmVhbG0odCk7CisgICAgY29uc3Qgbm90RWxlbWVudCA9
IE9iamVjdC5jcmVhdGUob3RoZXIuSFRNTEVsZW1lbnQucHJvdG90eXBlKTsKKworICAgIGFzc2Vy
dF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5jcmVhdGUob3RoZXIu
ZG9jdW1lbnQpLmhlYWQ7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9y
LCAoKSA9PiB7IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXIuSFRNTEVsZW1l
bnQucHJvdG90eXBlLCAidGl0bGUiKS5nZXQuY2FsbChub3RFbGVtZW50KTsgfSk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5nZXQob3RoZXIu
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksICJoaWRkZW4iLCBub3RFbGVtZW50KTsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5
KG90aGVyLnRleHQsIHt9KS5ub2RlVHlwZTsgfSk7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2V0dGVyIHRo
cm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7CisKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOwor
ICAgIGNvbnN0IG5vdEVsZW1lbnQgPSBPYmplY3QuY3JlYXRlKG90aGVyLkhUTUxFbGVtZW50LnBy
b3RvdHlwZSk7CisgICAgY29uc3Qgbm90VGV4dCA9IE9iamVjdC5jcmVhdGUob3RoZXIuVGV4dC5w
cm90b3R5cGUpOworCisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+
IHsgT2JqZWN0LmNyZWF0ZShvdGhlci5lbGVtZW50KS5pbm5lckhUTUwgPSAiIjsgfSk7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihvdGhlci5IVE1MRWxlbWVudC5wcm90b3R5cGUsICJvbmNsaWNrIiku
c2V0LmNhbGwobm90RWxlbWVudCwgbnVsbCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3Ro
ZXIuVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3Quc2V0KG5ldyBvdGhlci5UZXh0KCJmb28iKSwg
ImRhdGEiLCAiZm9vIiwgbm90VGV4dCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIu
VHlwZUVycm9yLCAoKSA9PiB7IG5ldyBQcm94eShvdGhlci5kb2N1bWVudCwge30pLnRpdGxlID0g
IiI7IH0pOworfSwgIkNyb3NzLXJlYWxtIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5j
b21wYXRpYmxlIG9iamVjdCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29u
c3Qgb3RoZXIgPSBhd2FpdCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBub3REb2N1bWVudCA9
IE9iamVjdC5jcmVhdGUob3RoZXIuSFRNTERvY3VtZW50LnByb3RvdHlwZSk7CisgICAgY29uc3Qg
bm90VGV4dCA9IE9iamVjdC5jcmVhdGUob3RoZXIuVGV4dC5wcm90b3R5cGUpOworCisgICAgYXNz
ZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShvdGhl
ci5lbGVtZW50KS5jbGljaygpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVF
cnJvciwgKCkgPT4geyBvdGhlci5kb2N1bWVudC5xdWVyeVNlbGVjdG9yLmNhbGwobm90RG9jdW1l
bnQsICIqIik7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9
PiB7IFJlZmxlY3QuYXBwbHkob3RoZXIudGV4dC5yZW1vdmUsIG5vdFRleHQsIFtdKTsgfSk7Cisg
ICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5KG90
aGVyLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSwge30pLmFkZEV2ZW50TGlzdGVuZXIoImZv
byIsICgpID0+IHt9KTsgfSk7Cit9LCAiQ3Jvc3MtcmVhbG0gb3BlcmF0aW9uIHRocm93cyB3aGVu
IGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQt
YmluZGluZy9zdXBwb3J0L2NyZWF0ZS1yZWFsbS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRp
bmcvc3VwcG9ydC9jcmVhdGUtcmVhbG0uanMJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5n
L3N1cHBvcnQvY3JlYXRlLXJlYWxtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAK
KyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gY3JlYXRlUmVhbG0odCkgeworICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIHQuYWRkX2NsZWFudXAoKCkgPT4geyBp
ZnJhbWUucmVtb3ZlKCk7IH0pOworICAgICAgICBpZnJhbWUub25sb2FkID0gKCkgPT4geyByZXNv
bHZlKGlmcmFtZS5jb250ZW50V2luZG93KTsgfTsKKyAgICAgICAgaWZyYW1lLm5hbWUgPSAiZHVt
bXkiOworICAgICAgICBpZnJhbWUuc3JjID0gInN1cHBvcnQvZHVtbXktaWZyYW1lLmh0bWwiOwor
ICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChpZnJhbWUpOworICAgIH0pOworfQpJbmRleDog
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNj
cmlwdC1iaW5kaW5nL3N1cHBvcnQvZHVtbXktaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlw
dC1iaW5kaW5nL3N1cHBvcnQvZHVtbXktaWZyYW1lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlw
dC1iaW5kaW5nL3N1cHBvcnQvZHVtbXktaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxib2R5
PmZvbworPGJ1dHRvbiBpZD0iZWxlbWVudCI+PC9idXR0b24+Cis8c2NyaXB0PgorICAgIHdpbmRv
dy50ZXh0ID0gZG9jdW1lbnQuYm9keS5maXJzdENoaWxkOworPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3Jp
Z2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL3dpbmRvdy1sb2NhdGlvbi1hbmQtbG9jYXRpb24taHJl
Zi1jcm9zcy1yZWFsbS1zZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jv
c3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVmLWNyb3Nz
LXJlYWxtLXNldC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1v
cmlnaW4tb2JqZWN0cy93aW5kb3ctbG9jYXRpb24tYW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3MtcmVh
bG0tc2V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACisKK1BB
U1MgU2FtZS1vcmlnaW4gd2luZG93LmxvY2F0aW9uIGdldHRlciB0aHJvd3MgVHlwZUVycm9yIGlu
IGhvbGRlcidzIHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVlCitQQVNTIFNhbWUtb3JpZ2lu
IGxvY2F0aW9uLmhyZWYgZ2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0g
b24gaW52YWxpZCB8dGhpc3wgdmFsdWUKK1BBU1MgQ3Jvc3Mtb3JpZ2luIGxvY2F0aW9uLmhyZWYg
Z2V0dGVyIHRocm93cyBTZWN1cml0eUVycm9yIGluIGxleGljYWwgcmVhbG0KK1BBU1MgU2FtZS1v
cmlnaW4gd2luZG93LmxvY2F0aW9uIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidz
IHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVlCitQQVNTIFNhbWUtb3JpZ2luIGxvY2F0aW9u
LmhyZWYgc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gaW52YWxp
ZCB8dGhpc3wgdmFsdWUKK1BBU1MgQ3Jvc3Mtb3JpZ2luIHdpbmRvdy5sb2NhdGlvbiBzZXR0ZXIg
dGhyb3dzIFR5cGVFcnJvciBpbiBsZXhpY2FsIHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVl
CitQQVNTIENyb3NzLW9yaWdpbiBsb2NhdGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVycm9y
IGluIGxleGljYWwgcmVhbG0gb24gaW52YWxpZCB8dGhpc3wgdmFsdWUKK1BBU1MgU2FtZS1vcmln
aW4gd2luZG93LmxvY2F0aW9uYCBzZXR0ZXIgdGhyb3dzIFR5cGVFcnJvciBpbiBob2xkZXIncyBy
ZWFsbSBvbiBub24tY29lcmNpYmxlIFVSTCBhcmd1bWVudAorUEFTUyBTYW1lLW9yaWdpbiBsb2Nh
dGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9uIG5v
bi1jb2VyY2libGUgVVJMIGFyZ3VtZW50CitQQVNTIENyb3NzLW9yaWdpbiB3aW5kb3cubG9jYXRp
b24gc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gbGV4aWNhbCByZWFsbSBvbiBub24tY29lcmNp
YmxlIFVSTCBhcmd1bWVudAorUEFTUyBDcm9zcy1vcmlnaW4gbG9jYXRpb24uaHJlZiBzZXR0ZXIg
dGhyb3dzIFR5cGVFcnJvciBpbiBsZXhpY2FsIHJlYWxtIG9uIG5vbi1jb2VyY2libGUgVVJMIGFy
Z3VtZW50CisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0
aW9uLWFuZC1sb2NhdGlvbi1ocmVmLWNyb3NzLXJlYWxtLXNldC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlv
bi1ocmVmLWNyb3NzLXJlYWxtLXNldC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jv
c3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVmLWNyb3Nz
LXJlYWxtLXNldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA2IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Dcm9zcy1yZWFsbSBbW1Nl
dF1dIHRvIHdpbmRvdy5sb2NhdGlvbiBhbmQgbG9jYXRpb24uaHJlZiB0aHJvd3MgYW4gZXJyb3Ig
b2YgY29ycmVjdCByZWFsbTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyN3aW5kb3ciPgorPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNVbmZvcmdlYWJsZSI+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL2NvbW1vbi9nZXQtaG9zdC1pbmZvLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+Citjb25zdCBVUkxfU0FNRV9PUklHSU4gPSBnZXRfaG9zdF9pbmZvKCkuT1JJR0lOQUxf
SE9TVDsKK2NvbnN0IFVSTF9DUk9TU19PUklHSU4gPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1P
VEVfT1JJR0lOOworY29uc3QgVVJMX1ZBTElEID0gIiNmb28iOworY29uc3QgVVJMX0lOVkFMSUQg
PSAiaHR0cDovLyMiOworCitjb25zdCB7IGdldDogbG9jYXRpb25HZXQsIHNldDogbG9jYXRpb25T
ZXQgfSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAibG9jYXRpb24i
KTsKK2NvbnN0IHsgZ2V0OiBocmVmR2V0LCBzZXQ6IGhyZWZTZXQgfSA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IobG9jYXRpb24sICJocmVmIik7CisKKworcHJvbWlzZV90ZXN0KGFz
eW5jIHQgPT4geworICAgIGNvbnN0IHNhbWVPcmlnaW5XaW5kb3cgPSBhd2FpdCBtYWtlV2luZG93
KHQsIFVSTF9TQU1FX09SSUdJTik7CisgICAgYXNzZXJ0X3Rocm93c19qcyhzYW1lT3JpZ2luV2lu
ZG93LlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKHNhbWVPcmlnaW5XaW5kb3cpLmxv
Y2F0aW9uOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5kb3cuVHlwZUVy
cm9yLCAoKSA9PiB7IFJlZmxlY3QuZ2V0KHNhbWVPcmlnaW5XaW5kb3csICJsb2NhdGlvbiIsIHt9
KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgbG9jYXRpb25H
ZXQuY2FsbCh7fSk7IH0pOworfSwgIlNhbWUtb3JpZ2luIHdpbmRvdy5sb2NhdGlvbiBnZXR0ZXIg
dGhyb3dzIFR5cGVFcnJvciBpbiBob2xkZXIncyByZWFsbSBvbiBpbnZhbGlkIHx0aGlzfCB2YWx1
ZSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgc2FtZU9yaWdpbldp
bmRvdyA9IGF3YWl0IG1ha2VXaW5kb3codCwgVVJMX1NBTUVfT1JJR0lOKTsKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5kb3cuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5jcmVh
dGUoc2FtZU9yaWdpbldpbmRvdy5sb2NhdGlvbikuaHJlZjsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhzYW1lT3JpZ2luV2luZG93LlR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LmdldChzYW1l
T3JpZ2luV2luZG93LmxvY2F0aW9uLCAiaHJlZiIsIHt9KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IHsgaHJlZkdldCgpOyB9KTsKK30sICJTYW1lLW9yaWdpbiBs
b2NhdGlvbi5ocmVmIGdldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9u
IGludmFsaWQgfHRoaXN8IHZhbHVlIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAg
ICBjb25zdCBjcm9zc09yaWdpbldpbmRvdyA9IGF3YWl0IG1ha2VXaW5kb3codCwgVVJMX0NST1NT
X09SSUdJTik7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIlNFQ1VSSVRZX0VSUiIsICgpID0+IHsg
Y3Jvc3NPcmlnaW5XaW5kb3cubG9jYXRpb24uaHJlZjsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19k
b20oIlNFQ1VSSVRZX0VSUiIsICgpID0+IHsgaHJlZkdldC5jYWxsKGNyb3NzT3JpZ2luV2luZG93
LmxvY2F0aW9uKTsgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGNyb3NzT3JpZ2luV2luZG93LmxvY2F0aW9uLCAiaHJlZiIpLmdldCwgdW5kZWZp
bmVkKTsKK30sICJDcm9zcy1vcmlnaW4gbG9jYXRpb24uaHJlZiBnZXR0ZXIgdGhyb3dzIFNlY3Vy
aXR5RXJyb3IgaW4gbGV4aWNhbCByZWFsbSIpOworCisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+
IHsKKyAgICBjb25zdCBzYW1lT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxf
U0FNRV9PUklHSU4pOworICAgIGFzc2VydF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRvdy5UeXBl
RXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShzYW1lT3JpZ2luV2luZG93KS5sb2NhdGlvbiA9
IFVSTF9WQUxJRDsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhzYW1lT3JpZ2luV2luZG93LlR5
cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChzYW1lT3JpZ2luV2luZG93LCAibG9jYXRpb24i
LCBVUkxfVkFMSUQsIHt9KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IHsgbG9jYXRpb25TZXQuY2FsbCgoKSA9PiB7fSwgVVJMX1ZBTElEKTsgfSk7Cit9LCAiU2Ft
ZS1vcmlnaW4gd2luZG93LmxvY2F0aW9uIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRl
cidzIHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVlIik7CisKK3Byb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgICBjb25zdCBzYW1lT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0
LCBVUkxfU0FNRV9PUklHSU4pOworICAgIGFzc2VydF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRv
dy5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShzYW1lT3JpZ2luV2luZG93LmxvY2F0
aW9uKS5ocmVmID0gVVJMX1ZBTElEOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmln
aW5XaW5kb3cuVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3Quc2V0KHNhbWVPcmlnaW5XaW5kb3cu
bG9jYXRpb24sICJocmVmIiwgVVJMX1ZBTElELCB7fSk7IH0pOworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiB7IGhyZWZTZXQuY2FsbCh1bmRlZmluZWQsIFVSTF9WQUxJRCk7
IH0pOworfSwgIlNhbWUtb3JpZ2luIGxvY2F0aW9uLmhyZWYgc2V0dGVyIHRocm93cyBUeXBlRXJy
b3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gaW52YWxpZCB8dGhpc3wgdmFsdWUiKTsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGNyb3NzT3JpZ2luV2luZG93ID0gYXdhaXQg
bWFrZVdpbmRvdyh0LCBVUkxfQ1JPU1NfT1JJR0lOKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKGNyb3NzT3JpZ2luV2luZG93KS5sb2NhdGlv
biA9IFVSTF9WQUxJRDsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IHsgUmVmbGVjdC5zZXQoY3Jvc3NPcmlnaW5XaW5kb3csICJsb2NhdGlvbiIsIFVSTF9WQUxJRCwg
e30pOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBsb2NhdGlv
blNldC5jYWxsKFtdLCBVUkxfVkFMSUQpOyB9KTsKK30sICJDcm9zcy1vcmlnaW4gd2luZG93Lmxv
Y2F0aW9uIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGxleGljYWwgcmVhbG0gb24gaW52YWxp
ZCB8dGhpc3wgdmFsdWUiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0
IGNyb3NzT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfQ1JPU1NfT1JJR0lO
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRl
KGNyb3NzT3JpZ2luV2luZG93LmxvY2F0aW9uKS5ocmVmID0gVVJMX1ZBTElEOyB9KTsKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChjcm9zc09yaWdp
bldpbmRvdy5sb2NhdGlvbiwgImhyZWYiLCBVUkxfVkFMSUQsIHt9KTsgfSk7CisgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgaHJlZlNldC5jYWxsKG51bGwsIFVSTF9WQUxJ
RCk7IH0pOworfSwgIkNyb3NzLW9yaWdpbiBsb2NhdGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlw
ZUVycm9yIGluIGxleGljYWwgcmVhbG0gb24gaW52YWxpZCB8dGhpc3wgdmFsdWUiKTsKKworCitw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgc2FtZU9yaWdpbldpbmRvdyA9IGF3
YWl0IG1ha2VXaW5kb3codCwgVVJMX1NBTUVfT1JJR0lOKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KHNhbWVPcmlnaW5XaW5kb3cuVHlwZUVycm9yLCAoKSA9PiB7IHNhbWVPcmlnaW5XaW5kb3cubG9j
YXRpb24gPSBTeW1ib2woKTsgfSk7CisKKyAgICAvLyBUaGUgZXJyb3Igb3JpZ2luYXRlcyBpbiBz
YW1lT3JpZ2luV2luZG93LmxvY2F0aW9uLmhyZWYgc2V0dGVyLCBoZW5jZSBpdCdzIG5vdCBpbiBy
ZWFsbSBvZiBsb2NhdGlvblNldC4KKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5k
b3cuVHlwZUVycm9yLCAoKSA9PiB7IGxvY2F0aW9uU2V0LmNhbGwoc2FtZU9yaWdpbldpbmRvdywg
U3ltYm9sKCkpOyB9KTsKK30sICJTYW1lLW9yaWdpbiB3aW5kb3cubG9jYXRpb25gIHNldHRlciB0
aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9uIG5vbi1jb2VyY2libGUgVVJMIGFy
Z3VtZW50Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBzYW1lT3Jp
Z2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfU0FNRV9PUklHSU4pOworICAgIGFz
c2VydF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRvdy5UeXBlRXJyb3IsICgpID0+IHsgc2FtZU9y
aWdpbldpbmRvdy5sb2NhdGlvbi5ocmVmID0gU3ltYm9sKCk7IH0pOworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGhyZWZTZXQuY2FsbChzYW1lT3JpZ2luV2luZG93Lmxv
Y2F0aW9uLCBTeW1ib2woKSk7IH0pOworfSwgIlNhbWUtb3JpZ2luIGxvY2F0aW9uLmhyZWYgc2V0
dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gbm9uLWNvZXJjaWJsZSBV
UkwgYXJndW1lbnQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGNy
b3NzT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfQ1JPU1NfT1JJR0lOKTsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBjcm9zc09yaWdpbldpbmRv
dy5sb2NhdGlvbiA9IFN5bWJvbCgpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4geyBsb2NhdGlvblNldC5jYWxsKGNyb3NzT3JpZ2luV2luZG93LCBTeW1ib2woKSk7
IH0pOworfSwgIkNyb3NzLW9yaWdpbiB3aW5kb3cubG9jYXRpb24gc2V0dGVyIHRocm93cyBUeXBl
RXJyb3IgaW4gbGV4aWNhbCByZWFsbSBvbiBub24tY29lcmNpYmxlIFVSTCBhcmd1bWVudCIpOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgY3Jvc3NPcmlnaW5XaW5kb3cg
PSBhd2FpdCBtYWtlV2luZG93KHQsIFVSTF9DUk9TU19PUklHSU4pOworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGNyb3NzT3JpZ2luV2luZG93LmxvY2F0aW9uLmhyZWYg
PSBTeW1ib2woKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsg
aHJlZlNldC5jYWxsKGNyb3NzT3JpZ2luV2luZG93LmxvY2F0aW9uLCBTeW1ib2woKSk7IH0pOwor
fSwgIkNyb3NzLW9yaWdpbiBsb2NhdGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGlu
IGxleGljYWwgcmVhbG0gb24gbm9uLWNvZXJjaWJsZSBVUkwgYXJndW1lbnQiKTsKKworZnVuY3Rp
b24gbWFrZVdpbmRvdyh0LCBzcmMpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9
PiB7CisgICAgICAgIGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFt
ZSIpOworICAgICAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHsgaWZyYW1lLnJlbW92ZSgpOyB9KTsK
KyAgICAgICAgaWZyYW1lLm9ubG9hZCA9ICgpID0+IHsgcmVzb2x2ZShpZnJhbWUuY29udGVudFdp
bmRvdyk7IH07CisgICAgICAgIGlmcmFtZS5zcmMgPSBzcmM7CisgICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kKGlmcmFtZSk7CisgICAgfSk7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3Njcmlw
dGluZy9ldmVudHMvY29tcGlsZS1ldmVudC1oYW5kbGVyLXNldHRpbmdzLW9iamVjdHMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvY29tcGlsZS1ldmVudC1o
YW5kbGVyLXNldHRpbmdzLW9iamVjdHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzkzNjIpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBw
YXBpcy9zY3JpcHRpbmcvZXZlbnRzL2NvbXBpbGUtZXZlbnQtaGFuZGxlci1zZXR0aW5ncy1vYmpl
Y3RzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIAogUEFTUyBU
aGUgRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBjcmVhdGVkIGluIHRoZSBSZWFsbSBvZiB0aGUg
bm9kZSBkb2N1bWVudAogRkFJTCBUaGUgZW50cnkgc2V0dGluZ3Mgb2JqZWN0IHdoaWxlIGV4ZWN1
dGluZyB0aGUgY29tcGlsZWQgY2FsbGJhY2sgdmlhIFdlYiBJREwncyBpbnZva2UgbXVzdCBiZSB0
aGF0IG9mIHRoZSBub2RlIGRvY3VtZW50IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIvaHRtbC93
ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvcmVzb3VyY2VzL29wZW4td2luZG93Lmh0bWwiIGJ1
dCBnb3QgIi9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9vcGVuLXdpbmRvdy5odG1s
IgotRkFJTCBUaGUgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCB3aGlsZSBleGVjdXRpbmcgdGhl
IGNvbXBpbGVkIGNhbGxiYWNrIHZpYSBXZWIgSURMJ3MgaW52b2tlIG11c3QgYmUgdGhhdCBvZiB0
aGUgbm9kZSBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaWZyYW1lIiBidXQgZ290
ICJwYXJlbnQgZnJhbWUiCitQQVNTIFRoZSBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHdoaWxl
IGV4ZWN1dGluZyB0aGUgY29tcGlsZWQgY2FsbGJhY2sgdmlhIFdlYiBJREwncyBpbnZva2UgbXVz
dCBiZSB0aGF0IG9mIHRoZSBub2RlIGRvY3VtZW50CiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9j
ZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUv
cHJvbWlzZS1qb2ItaW5jdW1iZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3Jp
cHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQt
am9iLXF1ZXVlL3Byb21pc2Utam9iLWluY3VtYmVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3
OTM2MikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0
aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwxMyArMiwxMyBAQAogCiBQQVNTIFNhbml0eSBjaGVj
azogdGhpcyBhbGwgd29ya3MgYXMgZXhwZWN0ZWQgd2l0aCBubyBwcm9taXNlcyBpbnZvbHZlZAog
UEFTUyBGdWxmaWxsbWVudCBoYW5kbGVyIG9uIGZ1bGZpbGxlZCBwcm9taXNlCi1GQUlMIEZ1bGZp
bGxtZW50IGhhbmRsZXIgb24gZnVsZmlsbGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1bWJl
bnQgc2V0dGluZ3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8v
bG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVs
LTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3By
b21pc2Utam9iLWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2Fs
aG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2lu
dGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9jdXJyZW50
L2N1cnJlbnQuaHRtbCIKK0ZBSUwgRnVsZmlsbG1lbnQgaGFuZGxlciBvbiBmdWxmaWxsZWQgcHJv
bWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMv
c2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2Ny
aXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5o
dG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3Njcmlw
dGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1q
b2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50Lmh0bWwiCiBQQVNTIFJlamVjdGlvbiBoYW5k
bGVyIG9uIHJlamVjdGVkIHByb21pc2UKLUZBSUwgUmVqZWN0aW9uIGhhbmRsZXIgb24gcmVqZWN0
ZWQgcHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFw
cGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1q
YXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3Vt
YmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlz
L3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNj
cmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL2N1cnJlbnQvY3VycmVudC5odG1sIgorRkFJTCBSZWpl
Y3Rpb24gaGFuZGxlciBvbiByZWplY3RlZCBwcm9taXNlLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50
IHNldHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xv
Y2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0y
L2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9t
aXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhv
c3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRl
Z3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJl
bnQuaHRtbCIKIFBBU1MgRnVsZmlsbG1lbnQgaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tZnVsZmls
bGVkIHByb21pc2UKLUZBSUwgRnVsZmlsbG1lbnQgaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tZnVs
ZmlsbGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHN0
YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93
ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10
aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWluY3VtYmVudC1p
bmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBw
YXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWph
dmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9jdXJyZW50L2N1cnJlbnQuaHRtbCIKK0ZBSUwg
RnVsZmlsbG1lbnQgaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tZnVsZmlsbGVkIHByb21pc2UsIHVz
aW5nIGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGlu
Zy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2It
cXVldWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0
IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJv
Y2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVl
L3Byb21pc2Utam9iLWluY3VtYmVudC5odG1sIgogUEFTUyBSZWplY3Rpb24gaGFuZGxlciBvbiBw
ZW5kaW5nLXRoZW4tcmVqZWN0ZWQgcHJvbWlzZQotRkFJTCBSZWplY3Rpb24gaGFuZGxlciBvbiBw
ZW5kaW5nLXRoZW4tcmVqZWN0ZWQgcHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0
aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhv
c3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRl
Z3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1q
b2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4
MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRp
b24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL2N1cnJlbnQvY3VycmVu
dC5odG1sIgorRkFJTCBSZWplY3Rpb24gaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tcmVqZWN0ZWQg
cHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFw
aXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZh
c2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVu
dC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3Nj
cmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlw
dC1qb2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50Lmh0bWwiCiBQQVNTIFRoZW5hYmxlIHJl
c29sdXRpb24KLUZBSUwgVGhlbmFibGUgcmVzb2x1dGlvbiwgdXNpbmcgYmFja3VwIGluY3VtYmVu
dCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwt
Mi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJv
bWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxo
b3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50
ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL2N1cnJlbnQv
Y3VycmVudC5odG1sIgorRkFJTCBUaGVuYWJsZSByZXNvbHV0aW9uLCB1c2luZyBiYWNrdXAgaW5j
dW1iZW50IHNldHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0
cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1t
b2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNl
cy9wcm9taXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwt
Mi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1p
bmN1bWJlbnQuaHRtbCIKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9zdXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3Nz
LXJlYWxtLWFjY2Vzcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9zdXBwb3J0
ZWRFbnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3Jt
YW5jZS10aW1lbGluZS9zdXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgQ3Jvc3MtcmVh
bG0gc3VwcG9ydGVkRW50cnlUeXBlcyBhY2Nlc3MgcmV0dXJucyBBcnJheSBvZiBhbm90aGVyIHJl
YWxtCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
cGVyZm9ybWFuY2UtdGltZWxpbmUvc3VwcG9ydGVkRW50cnlUeXBlcy1jcm9zcy1yZWFsbS1hY2Nl
c3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlwZXMtY3Jvc3Mt
cmVhbG0tYWNjZXNzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9zdXBwb3J0ZWRFbnRy
eVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTggQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkNy
b3NzLXJlYWxtIGFjY2VzcyBvZiBzdXBwb3J0ZWRFbnRyeVR5cGVzIHJldHVybnMgQXJyYXkgb2Yg
YW5vdGhlciByZWFsbTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9wZXJmb3JtYW5jZS10aW1lbGluZS8jc3VwcG9ydGVkZW50cnl0eXBlcy1hdHRy
aWJ1dGUiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPGJvZHk+Cis8c2NyaXB0PgordGVzdCh0ID0+IHsKKyAgY29uc3QgaWZyYW1lID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgIHQuYWRkX2NsZWFudXAoKCkgPT4geyBpZnJh
bWUucmVtb3ZlKCk7IH0pOworICBpZnJhbWUub25sb2FkID0gdC5zdGVwX2Z1bmNfZG9uZSgoKSA9
PiB7CisgICAgY29uc3Qgb3RoZXJXaW5kb3cgPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKyAgICBh
c3NlcnRfdHJ1ZShvdGhlcldpbmRvdy5QZXJmb3JtYW5jZU9ic2VydmVyLnN1cHBvcnRlZEVudHJ5
VHlwZXMgaW5zdGFuY2VvZiBvdGhlcldpbmRvdy5BcnJheSk7CisgIH0pOworICBkb2N1bWVudC5i
b2R5LmFwcGVuZChpZnJhbWUpOworfSk7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL2ZldGNoLXJlcXVlc3QtY3NzLWNyb3NzLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3Jp
Z2luLmh0dHBzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc5MzYyKQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDYgQEAKIAogUEFTUyBzZXR1cCBnbG9iYWwgc3RhdGUK
IFBBU1MgTUlNRSBjaGVja2luZyBvZiBDU1MgcmVzb3VyY2VzIGZldGNoZWQgdmlhIHNlcnZpY2Ug
d29ya2VyIHdoZW4gQ29udGVudC1UeXBlIGlzIG5vdCBzZXQuCi1GQUlMIFNhbWUtb3JpZ2luIHBv
bGljeSBmb3IgYWNjZXNzIHRvIENTUyByZXNvdXJjZXMgZmV0Y2hlZCB2aWEgc2VydmljZSB3b3Jr
ZXIgYXNzZXJ0X3Rocm93c19kb206IGZ1bmN0aW9uICIoKSA9PiB7Ci0gICAgZi5jb250ZW50RG9j
dW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uY3NzVGV4dDsKLSAgfSIgdGhyZXcgYW4g
ZXhjZXB0aW9uIGZyb20gdGhlIHdyb25nIGdsb2JhbAorRkFJTCBTYW1lLW9yaWdpbiBwb2xpY3kg
Zm9yIGFjY2VzcyB0byBDU1MgcmVzb3VyY2VzIGZldGNoZWQgdmlhIHNlcnZpY2Ugd29ya2VyIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlNlY3Vy
aXR5RXJyb3I6IE5vdCBhbGxvd2VkIHRvIGFjY2VzcyBjcm9zcy1vcmlnaW4gc3R5bGVzaGVldCIK
IFBBU1MgY2xlYW51cCBnbG9iYWwgc3RhdGUKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRy
YW5zZm9ybS1yZWFkYWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10
cmFuc2Zvcm0tcmVhZGFibGUuaHRtbAkocmV2aXNpb24gMjc5MzYyKQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0v
c2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDkgKzks
MTAgQEAKICAgICAgICAgPGlmcmFtZSBzcmM9Ii4iIGlkPSJmcmFtZSI+PC9pZnJhbWU+CiAgICAg
ICAgIDxzY3JpcHQ+CiBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBm
cmFtZURPTUV4Y2VwdGlvbiA9IGZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9uOwogICAg
IGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBmcmFtZS5jb250ZW50V2luZG93LlNGcmFtZVRyYW5zZm9y
bTsKICAgICBmcmFtZS5yZW1vdmUoKTsKLSAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0
YXRlRXJyb3IiLCAoKSA9PiB0cmFuc2Zvcm0ucmVhZGFibGUpOworICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZyYW1lRE9NRXhjZXB0aW9uLCAoKSA9PiB0cmFuc2Zv
cm0ucmVhZGFibGUpOwogfSk7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432710</attachid>
            <date>2021-07-01 11:21:08 -0700</date>
            <delta_ts>2021-07-01 11:26:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225997-20210701212106.patch</filename>
            <type>text/plain</type>
            <size>106411</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzk0NzIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA3LTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1
ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90
by1jaGFpbi1wdXQuanM6CisgICAgICAgICogc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2Jq
ZWN0LWluLWljLTIuanM6IEFkZGVkLgorCiAyMDIxLTA2LTMwICBTYWFtIEJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFR1cm4gb2ZmIGRhdGEgSUNzIGJ5IGRlZmF1bHQKSW5k
ZXg6IEpTVGVzdHMvc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXByb3RvLWNoYWluLXB1dC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90by1jaGFpbi1wdXQu
anMJKHJldmlzaW9uIDI3OTM3MykKKysrIEpTVGVzdHMvc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXBy
b3RvLWNoYWluLXB1dC5qcwkod29ya2luZyBjb3B5KQpAQCAtOTksOCArOTksOCBAQCBmdW5jdGlv
biBnZXRCYXNlcygpIHsKICgoKSA9PiB7CiAgICAgZm9yIChsZXQgYmFzZSBvZiBnZXRCYXNlcygp
KSB7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpCi0gICAgICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiB7IGJhc2UuY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPSB7fTsg
fSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4i
KTsKLSAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0b21BY2Nl
c3Nvckdsb2JhbE9iamVjdCIsIHt9KSk7CisgICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7
IGJhc2UuY3VzdG9tQWNjZXNzb3JSZWFkT25seSA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0
ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOworICAgICAgICBhc3NlcnQoIVJl
ZmxlY3Quc2V0KE9iamVjdChiYXNlKSwgImN1c3RvbUFjY2Vzc29yUmVhZE9ubHkiLCB7fSkpOwog
ICAgIH0KIH0pKCk7CiAKQEAgLTEwOCwyMSArMTA4LDIxIEBAIGZ1bmN0aW9uIGdldEJhc2VzKCkg
ewogKCgpID0+IHsKICAgICBmb3IgKGxldCBwcmltaXRpdmUgb2YgcHJpbWl0aXZlcykgewogICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQotICAgICAgICAgICAgc2hvdWxkVGhy
b3coKCkgPT4geyBwcmltaXRpdmUuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB7fTsgfSwgIlR5
cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAg
ICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgcHJpbWl0aXZlLmN1c3RvbVZhbHVlTm9TZXR0
ZXIgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBw
cm9wZXJ0eS4iKTsKICAgICB9CiAKICAgICBmb3IgKGxldCBvYmplY3Qgb2YgZ2V0T2JqZWN0cygp
KSB7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpCi0gICAgICAgICAgICBv
YmplY3QuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB7fTsKLSAgICAgICAgYXNzZXJ0KG9iamVj
dC5oYXNPd25Qcm9wZXJ0eSgiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiKSk7Ci0gICAgICAgIGFz
c2VydChSZWZsZWN0LnNldChvYmplY3QsICJjdXN0b21WYWx1ZUdsb2JhbE9iamVjdCIsIHt9KSk7
CisgICAgICAgICAgICBvYmplY3QuY3VzdG9tVmFsdWVOb1NldHRlciA9IHt9OworICAgICAgICBh
c3NlcnQob2JqZWN0Lmhhc093blByb3BlcnR5KCJjdXN0b21WYWx1ZU5vU2V0dGVyIikpOworICAg
ICAgICBhc3NlcnQoUmVmbGVjdC5zZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVOb1NldHRlciIsIHt9
KSk7CiAgICAgfQogCiAgICAgZm9yIChsZXQgb2JqZWN0IG9mIGdldE9iamVjdHMoKSkgewogICAg
ICAgICBPYmplY3QucHJldmVudEV4dGVuc2lvbnMob2JqZWN0KTsKICAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDA7ICsraSkgewotICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBv
YmplY3QuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1w
dGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKLSAgICAgICAgICAgIGFzc2Vy
dCghUmVmbGVjdC5zZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiLCB7fSkpOwor
ICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBvYmplY3QuY3VzdG9tVmFsdWVOb1NldHRl
ciA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHBy
b3BlcnR5LiIpOworICAgICAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChvYmplY3QsICJjdXN0
b21WYWx1ZU5vU2V0dGVyIiwge30pKTsKICAgICAgICAgfQogICAgIH0KIH0pKCk7CkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy9nZXR0ZXItc2V0dGVyLWdsb2JhbG9iamVjdC1pbi1pYy0yLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2JqZWN0LWluLWlj
LTIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvZ2V0dGVyLXNldHRlci1nbG9i
YWxvYmplY3QtaW4taWMtMi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACitmdW5j
dGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJC
YWQgYXNzZXJ0aW9uISIpOworfQorCitjb25zdCBjcmVhdGVDdXN0b20gPSBgCisgICAgdmFyIGN1
c3RvbSA9ICR2bS5jcmVhdGVDdXN0b21UZXN0R2V0dGVyU2V0dGVyKCk7CitgOworCisoZnVuY3Rp
b24gZGlyZWN0Q3VzdG9tQWNjZXNzb3JHZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJp
bmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVyLmN1c3RvbTsK
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KG90
aGVyQ3VzdG9tLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID09PSBvdGhlcik7CisgICAgfQor
fSkoKTsKKworKGZ1bmN0aW9uIGRpcmVjdEN1c3RvbVZhbHVlR2V0KCkgeworICAgIGNvbnN0IG90
aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b20gPSBv
dGhlci5jdXN0b207CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAg
ICAgIGFzc2VydChvdGhlckN1c3RvbS5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9PT0gb3RoZXIp
OworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBkaXJlY3RDdXN0b21BY2Nlc3NvclNldCgpIHsK
KyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90
aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7
IGkrKykgeworICAgICAgICBjb25zdCB2YWx1ZSA9IHt9OworICAgICAgICBvdGhlckN1c3RvbS5j
dXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCA9IHZhbHVlOworICAgICAgICBhc3NlcnQodmFsdWUu
cmVzdWx0ID09PSBvdGhlcik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIGRpcmVjdEN1c3Rv
bVZhbHVlU2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7
CisgICAgY29uc3Qgb3RoZXJDdXN0b20gPSBvdGhlci5jdXN0b207CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGNvbnN0IHZhbHVlID0ge307CisgICAgICAg
IG90aGVyQ3VzdG9tLmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID0gdmFsdWU7CisgICAgICAgIGFz
c2VydCh2YWx1ZS5yZXN1bHQgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24g
cHJvdG90eXBlQ2hhaW5DdXN0b21BY2Nlc3NvckdldCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1
blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tSGVpciA9IE9iamVj
dC5jcmVhdGUob3RoZXIuY3VzdG9tKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBp
KyspIHsKKyAgICAgICAgYXNzZXJ0KG90aGVyQ3VzdG9tSGVpci5jdXN0b21BY2Nlc3Nvckdsb2Jh
bE9iamVjdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBwcm90b3R5cGVD
aGFpbkN1c3RvbVZhbHVlR2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0
ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b21IZWlyID0gT2JqZWN0LmNyZWF0ZShvdGhl
ci5jdXN0b20pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAg
ICBhc3NlcnQob3RoZXJDdXN0b21IZWlyLmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID09PSBvdGhl
cik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIHByb3RvdHlwZUNoYWluQ3VzdG9tQWNjZXNz
b3JTZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAg
ICBjb25zdCBvdGhlckN1c3RvbUhlaXIgPSBPYmplY3QuY3JlYXRlKG90aGVyLmN1c3RvbSk7CisK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGNvbnN0IHZhbHVl
ID0ge307CisgICAgICAgIG90aGVyQ3VzdG9tSGVpci5jdXN0b21BY2Nlc3Nvckdsb2JhbE9iamVj
dCA9IHZhbHVlOworICAgICAgICBhc3NlcnQodmFsdWUucmVzdWx0ID09PSBvdGhlcik7CisgICAg
fQorfSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5MzczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU5IEBACisyMDIxLTA3LTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1ZXMgd2l0
aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBKdXN0IGxpa2UgSlMgYnVpbHQtaW5zLCBnZXR0ZXIgLyBz
ZXR0ZXIgZnVuY3Rpb25zIG9mIFdlYklETCBhdHRyaWJ1dGVzIGFyZSBjcmVhdGVkIGluIHJlYWxt
CisgICAgICAgIG9mIHRoZWlyIGhvbGRlciBpbnRlcmZhY2UgWzFdWzJdLCB3aGljaCBpcyB0aGVp
ciBfY3VycmVudF8gcmVhbG0gZm9yIHRocm93aW5nIGFuIGVycm9yIFszXS4KKworICAgICAgICBX
aXRoIHRoaXMgcGF0Y2gsIGN1c3RvbSBwcm9wZXJ0aWVzIGdldCBjb3JyZWN0IGdsb2JhbCBvYmpl
Y3QgaW5zdGVhZCBvZiBsZXhpY2FsLCBpbmNsdWRpbmcKKyAgICAgICAgd2hlbiBpbmxpbmUgY2Fj
aGVkLCBhbGlnbmluZyB0aGVtIHdpdGggZnVuY3Rpb25zIGFuZCByZWd1bGFyIGFjY2Vzc29ycy4K
KworICAgICAgICBUaGUgbGF0dGVyIGFsbG93ZWQgSlMgYnVpbHQtaW5zIGxpa2UgU3ltYm9sOjpk
ZXNjcmlwdGlvbiB0byBzd2l0Y2ggdG8gQ3VzdG9tQWNjZXNzb3IsIHdoaWNoCisgICAgICAgIGlz
IHNsaWdodGx5IG1vcmUgZWZmaWNpZW50IHRvIGNhbGwgZnJvbSBDKyssIGRvZXNuJ3QgbmVlZCBy
ZWlmaWNhdGlvbiBvbiBmaXJzdCBhY2Nlc3MsIGFuZAorICAgICAgICBoYXMgbmljZXIgc2lnbmF0
dXJlLgorCisgICAgICAgIEFsc28sIHJlbmFtZXMgV0FTTSBhY2Nlc3NvcnMgdG8gZHJvcCAiZnVu
YyIgYW5kIHJlbW92ZXMgdW51c2VkIGZ1bmN0aW9uIGxlbmd0aCBwYXJhbWV0ZXIuCisKKyAgICAg
ICAgWzFdOiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLWdl
dHRlciAoc3RlcCAyKQorICAgICAgICBbMl06IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJp
ZGwvI2Rmbi1hdHRyaWJ1dGUtc2V0dGVyIChzdGVwIDUpCisgICAgICAgIFszXTogaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZWNtYXNjcmlwdC10aHJvdworCisgICAgICAgICogYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbCk6CisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpnbG9iYWxPYmplY3RP
ZkNsb3Nlc3RDb2RlQmxvY2spOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVT
bG93KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHA6CisgICAgICAgIChKU0M6
OlByb3BlcnR5U2xvdDo6Y3VzdG9tR2V0dGVyIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmdldFZhbHVlIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5j
cHA6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorCiAyMDIx
LTA2LTI4ICBZaWppYSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYSBuZXcgcGF0dGVybiB0byBpbnN0cnVjdGlvbiBzZWxlY3RvciB0byB1c2UgQklDIHN1cHBv
cnRlZCBieSBBUk02NApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3Rh
YmxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJs
ZQkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNo
X3RhYmxlCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMSArOTQsNiBAQCB3aGlsZSAoPElOPikgewog
ICAgICAgICBpZiAoJGF0dCA9fiBtL0Z1bmN0aW9uLykgewogICAgICAgICAgICAgcHVzaChAdmFs
dWVzLCB7ICJ0eXBlIiA9PiAiUHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uIiwgImZ1bmN0aW9u
IiA9PiAkdmFsLCAicGFyYW1zIiA9PiAobGVuZ3RoKCRwYXJhbSkgPyAkcGFyYW0gOiAiIiksICJp
bnRyaW5zaWMiID0+IChsZW5ndGgoJGludHJpbnNpYykgPyAkaW50cmluc2ljIDogIk5vSW50cmlu
c2ljIikgfSk7CiAgICAgICAgICAgICAjcHJpbnRmIFNUREVSUiAiV0FSTklORzogTnVtYmVyIG9m
IGFyZ3VtZW50cyBtaXNzaW5nIGZvciAka2V5LyR2YWxcbiIgaWYgKGxlbmd0aCgkcGFyYW0pID09
IDApOwotICAgICAgICB9IGVsc2lmICgkYXR0ID1+IG0vQWNjZXNzb3IvKSB7Ci0gICAgICAgICAg
ICBteSAkZ2V0ID0gJHZhbDsKLSAgICAgICAgICAgIG15ICRwdXQgPSAibnVsbHB0ciI7Ci0gICAg
ICAgICAgICAkaGFzU2V0dGVyID0gInRydWUiOwotICAgICAgICAgICAgcHVzaChAdmFsdWVzLCB7
ICJ0eXBlIiA9PiAiUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIiwgImdldCIgPT4gJGdldCwg
InB1dCIgPT4gJHB1dCB9KTsKICAgICAgICAgfSBlbHNpZiAoJGF0dCA9fiBtL0NlbGxQcm9wZXJ0
eS8pIHsKICAgICAgICAgICAgIG15ICRwcm9wZXJ0eSA9ICR2YWw7CiAgICAgICAgICAgICBwdXNo
KEB2YWx1ZXMsIHsgInR5cGUiID0+ICJQcm9wZXJ0eUF0dHJpYnV0ZTo6Q2VsbFByb3BlcnR5Iiwg
InByb3BlcnR5IiA9PiAkcHJvcGVydHkgfSk7CkBAIC0zMTAsMTEgKzMwNSw2IEBAIHN1YiBvdXRw
dXQoKSB7CiAgICAgICAgICAgICAkZmlyc3RWYWx1ZSA9ICR2YWx1ZXNbJGldeyJmdW5jdGlvbiJ9
OwogICAgICAgICAgICAgJHNlY29uZFZhbHVlID0gJHZhbHVlc1skaV17InBhcmFtcyJ9OwogICAg
ICAgICAgICAgJGludHJpbnNpYyA9ICR2YWx1ZXNbJGldeyJpbnRyaW5zaWMifTsKLSAgICAgICAg
fSBlbHNpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vz
c29yIikgewotICAgICAgICAgICAgJGZpcnN0Q2FzdFN0ciA9ICJzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4iOwotICAgICAgICAgICAgJHNlY29uZENhc3RTdHIgPSAic3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+IjsKLSAgICAgICAgICAgICRmaXJzdFZhbHVlID0gJHZhbHVlc1sk
aV17ImdldCJ9OwotICAgICAgICAgICAgJHNlY29uZFZhbHVlID0gJHZhbHVlc1skaV17InB1dCJ9
OwogICAgICAgICB9IGVsc2lmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJQcm9wZXJ0eUF0dHJp
YnV0ZTo6UHJvcGVydHkiKSB7CiAgICAgICAgICAgICAkZmlyc3RDYXN0U3RyID0gInN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPiI7CiAgICAgICAgICAgICAkc2Vjb25kQ2Fz
dFN0ciA9ICJzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4iOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkocmV2
aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDE2LDcgKzE0MTYsNiBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqc3Rh
dGUuaml0OwogICAgIFZNJiB2bSA9IHN0YXRlLm1fdm07CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBqaXQuY29kZUJsb2NrKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHN0YXRlLm1fZ2xvYmFsT2JqZWN0OwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gc3RhdGUubV9l
Y21hTW9kZTsKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3RhdGUuc3R1Yklu
Zm87CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gc3RhdGUudmFsdWVSZWdzOwpAQCAtMTYx
OSw2ICsxNjE4LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQog
ICAgICAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gbG9hZGVkVmFsdWVHUFIpOwogICAgICAgICAg
ICAgQVNTRVJUKG1fdHlwZSAhPSBTZXR0ZXIgfHwgdmFsdWVSZWdzUGF5bG9hZEdQUiAhPSBsb2Fk
ZWRWYWx1ZUdQUik7CiAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBzdGF0ZS5tX2dsb2JhbE9iamVjdDsKKwogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgSlMgY2Fs
bCB1c2luZyBhIEpTIGNhbGwgaW5saW5lIGNhY2hlLiBBc3N1bWUgdGhhdDoKICAgICAgICAgICAg
IC8vCiAgICAgICAgICAgICAvLyAtIFNQIGlzIGFsaWduZWQgYW5kIHJlcHJlc2VudHMgdGhlIGV4
dGVudCBvZiB0aGUgY2FsbGluZyBjb21waWxlcidzIHN0YWNrIHVzYWdlLgpAQCAtMTc1NCw2ICsx
NzU1LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDdXN0b21WYWx1ZUdldHRlciB8fCBtX3R5cGUgPT0gQ3Vz
dG9tQWNjZXNzb3JHZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IG1fdHlw
ZSA9PSBDdXN0b21BY2Nlc3NvclNldHRlcik7CiAgICAgICAgICAgICBBU1NFUlQoIWRvZXNQcm9w
ZXJ0eVN0b3JhZ2VMb2Fkcyk7IC8vIE9yIHdlIG5lZWQgYW4gZXh0cmEgcmVnaXN0ZXIuIFdlIHJl
bHkgb24gcHJvcGVydHlPd25lckdQUiBiZWluZyBjb3JyZWN0IGhlcmUuCiAKKyAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBoYXNBbHRlcm5hdGVCYXNlKCkgPyBhbHRl
cm5hdGVCYXNlKCktPmdsb2JhbE9iamVjdCh2bSkgOiBzdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0
KCk7CisKICAgICAgICAgICAgIC8vIE5lZWQgdG8gbWFrZSByb29tIGZvciB0aGUgQyBjYWxsIHNv
IGFueSBvZiBvdXIgc3RhY2sgc3BpbGxhZ2UgaXNuJ3Qgb3ZlcndyaXR0ZW4uIEl0J3MKICAgICAg
ICAgICAgIC8vIGhhcmQgdG8gdHJhY2sgaWYgc29tZW9uZSBkaWQgc3BpbGxhZ2Ugb3Igbm90LCBz
byB3ZSBqdXN0IGFzc3VtZSB0aGF0IHdlIGFsd2F5cyBuZWVkCiAgICAgICAgICAgICAvLyB0byBt
YWtlIHNvbWUgc3BhY2UgaGVyZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1
ZGUgIkxMSW50UENSYW5nZXMuaCIKICNpbmNsdWRlICJWTUVudHJ5UmVjb3JkLmgiCisjaW5jbHVk
ZSAiVk1FbnRyeVNjb3BlLmgiCiAjaW5jbHVkZSAiV2FzbUNvbnRleHRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiV2FzbUluc3RhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
CkBAIC0yNDQsNiArMjQ1LDMwIEBAIFNvdXJjZU9yaWdpbiBDYWxsRnJhbWU6OmNhbGxlclNvdXJj
ZU9yaWcKICAgICByZXR1cm4gc291cmNlT3JpZ2luOwogfQogCitKU0dsb2JhbE9iamVjdCogQ2Fs
bEZyYW1lOjpnbG9iYWxPYmplY3RPZkNsb3Nlc3RDb2RlQmxvY2soVk0mIHZtKQoreworICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBudWxscHRyOworICAgIFN0YWNrVmlzaXRvcjo6
dmlzaXQodGhpcywgdm0sIFsmXShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIHsKKyAgICAgICAgaWYg
KHZpc2l0b3ItPmlzV2FzbUZyYW1lKCkpIHsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IHZp
c2l0b3ItPmNhbGxGcmFtZSgpLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgICAg
IHJldHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6RG9uZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoYXV0byogY29kZUJsb2NrID0gdmlzaXRvci0+Y29kZUJsb2NrKCkpIHsKKyAgICAgICAgICAg
IGlmIChjb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gQ29kZVR5cGU6OkZ1bmN0aW9uQ29kZSAmJiBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpKS0+aXNCdWlsdGluRnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tW
aXNpdG9yOjpTdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6
OlN0YXR1czo6RG9uZTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQodmlzaXRvci0+Y29kZVR5
cGUoKSA9PSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZTo6TmF0aXZlKTsKKyAgICAgICAg
cmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVzOjpDb250aW51ZTsKKyAgICB9KTsKKyAgICBpZiAo
Z2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0OworICAgIGlmICh2bS5l
bnRyeVNjb3BlKQorICAgICAgICByZXR1cm4gdm0uZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFN0cmluZyBDYWxsRnJhbWU6OmZyaWVuZGx5RnVu
Y3Rpb25OYW1lKCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9j
aygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuaAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDcgQEAgbmFtZXNw
YWNlIEpTQyAgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDYWxsRnJhbWUqIGNhbGxlckZy
YW1lKEVudHJ5RnJhbWUqJikgY29uc3Q7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU291
cmNlT3JpZ2luIGNhbGxlclNvdXJjZU9yaWdpbihWTSYpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0T2ZDbG9zZXN0Q29kZUJsb2NrKFZNJik7
CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBjYWxsZXJGcmFtZU9mZnNldCgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihDYWxsZXJGcmFtZUFuZFBDLCBjYWxsZXJGcmFtZSk7IH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBh
cmUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yUHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSk7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgY29uc3QgQ2xh
c3NJbmZvIEludGxDb2xsYXRvclByb3RvdHlwZTo6cwogCiAvKiBTb3VyY2UgZm9yIEludGxDb2xs
YXRvclByb3RvdHlwZS5sdXQuaAogQGJlZ2luIGNvbGxhdG9yUHJvdG90eXBlVGFibGUKLSAgY29t
cGFyZSAgICAgICAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlICAgICAgICBE
b250RW51bXxBY2Nlc3NvcgorICBjb21wYXJlICAgICAgICAgIEludGxDb2xsYXRvclByb3RvdHlw
ZUdldHRlckNvbXBhcmUgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAg
IHJlc29sdmVkT3B0aW9ucyAgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyAgRG9udEVudW18RnVuY3Rpb24gMAogQGVuZAogKi8KQEAgLTEwNSwxNCArMTA1LDE0IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsQ29sbGF0b3JGdW4KICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+Y29tcGFyZVN0cmluZ3MoZ2xv
YmFsT2JqZWN0LCB4Vmlld1dpdGhTdHJpbmcudmlldywgeVZpZXdXaXRoU3RyaW5nLnZpZXcpKSk7
CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0
ZXJDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxDb2xsYXRvclByb3RvdHlwZUdl
dHRlckNvbXBhcmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IC8vIDEwLjMuMyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIChFQ01BLTQwMiAyLjAp
CiAgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0b3Igb2JqZWN0LgotICAgIElu
dGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNE
eW5hbWljQ2FzdDxJbnRsQ29sbGF0b3IqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmICghY29sbGF0b3IpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJvdG90eXBl
LmNvbXBhcmUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgQ29sbGF0b3IiX3MpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOworc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2VUb1BhcnRzKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZUZ1bmNGb3JtYXRUb1BhcnRzKTsKQEAgLTUzLDcgKzUzLDcgQEAgY29uc3QgQ2xhc3NJbmZvIElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdAogCiAvKiBTb3VyY2UgZm9yIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5sdXQuaAogQGJlZ2luIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlVGFibGUKLSAg
Zm9ybWF0ICAgICAgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdCAgICAgICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgZm9ybWF0ICAgICAgICAgICAg
ICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCAgICAgICAgICAgICAg
RG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICAgZm9ybWF0UmFuZ2UgICAgICAgICAg
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMgogICBmb3JtYXRUb1BhcnRzICAgICAgICAgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CiAgIHJlc29sdmVkT3B0aW9ucyAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5j
UmVzb2x2ZWRPcHRpb25zICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKQEAgLTExMywxNCArMTEz
LDE0IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsRGF0ZVRpbWVGb3IKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3JtYXQtPmZvcm1hdChnbG9i
YWxPYmplY3QsIHZhbHVlKSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBkdGYgYmUg
dGhpcyBEYXRlVGltZUZvcm1hdCBvYmplY3QuCi0gICAgYXV0byogZHRmID0gSW50bERhdGVUaW1l
Rm9ybWF0Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBkdGYgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnVud3JhcEZv
ck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIC8vIDIuIFJldHVybklm
QWJydXB0KGR0ZikuCiAgICAgaWYgKFVOTElLRUxZKCFkdGYpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2Nh
bGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNiArMzQsMTYgQEAgbmFtZXNw
YWNlIEpTQyB7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJv
dG90eXBlRnVuY01heGltaXplKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKElu
dGxMb2NhbGVQcm90b3R5cGVGdW5jTWluaW1pemUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUZ1bmNUb1N0cmluZyk7Ci1zdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUpOwot
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckNhbGVuZGFyKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbik7Ci1zdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlKTsKLXN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJO
dW1lcmljKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0pOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlKTsKLXN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJTY3JpcHQpOwotc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJl
Z2lvbik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyQmFzZU5hbWUpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50
bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QpOworc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlv
bik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBl
R2V0dGVySG91ckN5Y2xlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0pOworc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1
YWdlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJTY3JpcHQpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbik7CiAKIH0KIApAQCAtNTgsMTYgKzU4LDE2IEBAIGNv
bnN0IENsYXNzSW5mbyBJbnRsTG9jYWxlUHJvdG90eXBlOjpzX2kKICAgbWF4aW1pemUgICAgICAg
ICBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01heGltaXplICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAwCiAgIG1pbmltaXplICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNaW5pbWl6
ZSAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAogICB0b1N0cmluZyAgICAgICAgIEludGxM
b2NhbGVQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAK
LSAgYmFzZU5hbWUgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUgICAg
ICAgICBEb250RW51bXxBY2Nlc3NvcgotICBjYWxlbmRhciAgICAgICAgIEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJDYWxlbmRhciAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIGNhc2VGaXJz
dCAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCAgICAgICAgRG9udEVu
dW18QWNjZXNzb3IKLSAgY29sbGF0aW9uICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
Q29sbGF0aW9uICAgICAgICBEb250RW51bXxBY2Nlc3NvcgotICBob3VyQ3ljbGUgICAgICAgIElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUgICAgICAgIERvbnRFbnVtfEFjY2Vzc29y
Ci0gIG51bWVyaWMgICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMgICAg
ICAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgbnVtYmVyaW5nU3lzdGVtICBJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtICBEb250RW51bXxBY2Nlc3NvcgotICBsYW5ndWFn
ZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSAgICAgICAgIERvbnRF
bnVtfEFjY2Vzc29yCi0gIHNjcmlwdCAgICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
clNjcmlwdCAgICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgcmVnaW9uICAgICAgICAgICBJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uICAgICAgICAgICBEb250RW51bXxBY2Nlc3Nv
cgorICBiYXNlTmFtZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZSAg
ICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGNhbGVuZGFyICAgICAg
ICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyICAgICAgICAgRG9udEVudW18UmVh
ZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgY2FzZUZpcnN0ICAgICAgICBJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyQ2FzZUZpcnN0ICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3Nv
cgorICBjb2xsYXRpb24gICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24g
ICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGhvdXJDeWNsZSAgICAg
ICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSAgICAgICAgRG9udEVudW18UmVh
ZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbnVtZXJpYyAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyTnVtZXJpYyAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3Nv
cgorICBudW1iZXJpbmdTeXN0ZW0gIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdT
eXN0ZW0gIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGxhbmd1YWdlICAgICAg
ICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlICAgICAgICAgRG9udEVudW18UmVh
ZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgc2NyaXB0ICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyU2NyaXB0ICAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3Nv
cgorICByZWdpb24gICAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24gICAg
ICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiBAZW5kCiAqLwogCkBAIC0x
NDIsMTIgKzE0MiwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3Rv
CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90
eXBlLmJhc2VOYW1lCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlw
ZUdldHRlckJhc2VOYW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJCYXNlTmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50
bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2Nh
bGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuYmFzZU5hbWUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMTU2LDEyICsx
NTYsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAv
LyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jYWxl
bmRhcgotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJD
YWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
Q2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1
dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5M
b2NhbGUucHJvdG90eXBlLmNhbGVuZGFyIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9i
amVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTE3MCwxMiArMTcwLDEyIEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FzZUZpcnN0Ci1K
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJz
dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
K0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZp
cnN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBs
b2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxl
LnByb3RvdHlwZS5jYXNlRmlyc3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMTg0LDEyICsxODQsMTIgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb24KLUpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2Fs
ZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJv
dG90eXBlLmNvbGxhdGlvbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5p
dGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0xOTgsMTIgKzE5OCwxMiBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZQotSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0g
anNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5
cGUuaG91ckN5Y2xlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTIxMiwxMiArMjEyLDEyIEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubnVtZXJpYwotSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byog
bG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmlj
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExv
Y2FsZSJfcyk7CiAKQEAgLTIyNSwxMiArMjI1LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1J
bnRsLkxvY2FsZS5wcm90b3R5cGUubnVtYmVyaW5nU3lzdGVtCi1KU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUg
PSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3Rv
dHlwZS5udW1iZXJpbmdTeXN0ZW0gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMjM5LDEyICsyMzksMTIgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5sYW5ndWFnZQotSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9
IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90
eXBlLmxhbmd1YWdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTI1MywxMiArMjUzLDEyIEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuc2NyaXB0Ci1KU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0
PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9j
YWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5zY3JpcHQgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxl
Il9zKTsKIApAQCAtMjY3LDEyICsyNjcsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKElu
dGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwu
TG9jYWxlLnByb3RvdHlwZS5yZWdpb24KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2Nh
bGVQcm90b3R5cGVHZXR0ZXJSZWdpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
ICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnJlZ2lvbiBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZUdldHRlckZvcm1hdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9w
dGlvbnMpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bE51bWJlckZvcm1h
dEZ1bmNGb3JtYXQpOwpAQCAtNDksNyArNDksNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwCiAKIC8qIFNvdXJjZSBmb3IgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5sdXQuaAogQGJlZ2luIG51bWJlckZvcm1hdFByb3RvdHlwZVRhYmxlCi0gIGZvcm1hdCAgICAg
ICAgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCAgICAgICAgIERvbnRF
bnVtfEFjY2Vzc29yCisgIGZvcm1hdCAgICAgICAgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZUdldHRlckZvcm1hdCAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAg
IGZvcm1hdFRvUGFydHMgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1Bh
cnRzICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgcmVzb2x2ZWRPcHRpb25zICBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAgRG9udEVudW18RnVuY3Rpb24gMAog
QGVuZApAQCAtMTA4LDE0ICsxMDgsMTQgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxO
dW1iZXJGb3JtYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3Jt
YXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3Jt
YXQucHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBuZiBiZSB0
aGlzIE51bWJlckZvcm1hdCBvYmplY3QuCi0gICAgYXV0byogbmYgPSBJbnRsTnVtYmVyRm9ybWF0
Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBhdXRvKiBuZiA9IEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0
aW9ucyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChVTkxJS0VMWSghbmYpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcykp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Nyw5ICs1Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICBzZXRGbG9hdDY0ICAgICAgICAgICAgZGF0
YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAg
IDIgIERhdGFWaWV3U2V0RmxvYXQ2NAogICBzZXRCaWdJbnQ2NCAgICAgICAgICAgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRCaWdJbnQ2NCAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKICAg
c2V0QmlnVWludDY0ICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0QmlnVWludDY0ICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIGJ1ZmZlciAgICAgICAgICAgICAgICBkYXRh
Vmlld1Byb3RvR2V0dGVyQnVmZmVyICAgICAgICAgICAgRG9udEVudW18QWNjZXNzb3IgICAgICAg
MAotICBieXRlTGVuZ3RoICAgICAgICAgICAgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgg
ICAgICAgIERvbnRFbnVtfEFjY2Vzc29yICAgICAgIDAKLSAgYnl0ZU9mZnNldCAgICAgICAgICAg
IGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0ICAgICAgICBEb250RW51bXxBY2Nlc3NvciAg
ICAgICAwCisgIGJ1ZmZlciAgICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVy
ICAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgYnl0ZUxlbmd0
aCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoICAgICAgICBEb250RW51
bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBieXRlT2Zmc2V0ICAgICAgICAgICAgZGF0YVZp
ZXdQcm90b0dldHRlckJ5dGVPZmZzZXQgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFj
Y2Vzc29yCiBAZW5kCiAqLwogCkBAIC04Myw5ICs4Myw5IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGRhdGFWaWUKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRh
dGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihkYXRhVmlld1Byb3RvRnVuY1NldEJpZ0ludDY0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9GdW5jU2V0QmlnVWludDY0KTsKLXN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIpOwotc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgp
Owotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ5
dGVPZmZzZXQpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoZGF0YVZpZXdQcm90
b0dldHRlckJ1ZmZlcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihkYXRhVmll
d1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
UihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCk7CiAKIH0KIApAQCAtMjIzLDI0ICsyMjMs
MjQgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZwogCiBJR05PUkVf
Q0xBTkdfV0FSTklOR1NfQkVHSU4oIm1pc3NpbmctcHJvdG90eXBlcyIpCiAKLUpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpT
RGF0YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNEYXRhVmlldyog
dmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3Rz
IHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodmlldy0+cG9zc2libHlTaGFyZWRKU0J1ZmZlcihn
bG9iYWxPYmplY3QpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1By
b3RvR2V0dGVyQnl0ZUxlbmd0aCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3Rv
R2V0dGVyQnl0ZUxlbmd0aCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWlj
Q2FzdDxKU0RhdGFWaWV3Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnl0ZUxlbmd0aCBleHBlY3RzIHx0aGlzfCB0byBi
ZSBhIERhdGFWaWV3IG9iamVjdCIpOwogICAgIGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCkBAIC0y
NDksMTIgKzI0OSwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dl
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwog
fQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZz
ZXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTRGF0YVZpZXcq
IHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF2aWV3KQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcu
cHJvdG90eXBlLmJ5dGVPZmZzZXQgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmpl
Y3QiKTsKICAgICBpZiAodmlldy0+aXNEZXRhY2hlZCgpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OTEsOSArNzkxLDYgQEAgYm9vbCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhKU0dsb2JhbE9iagog
ICAgICAgICAgICAgICAgIGhhc1Byb3BlcnR5ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGVzID0gZW50cnktPnZhbHVlLT5hdHRyaWJ1dGVzKCk7CiAKLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgd3JpdGFibGUgYWNjZXNzb3JzIGFyZSBpbnRyb2R1
Y2VkIHRvIHN0YXRpYyBoYXNoIHRhYmxlcy4KLSAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRl
cyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcikKLSAgICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHk7CiAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIGFmdGVyIHdlIHN0b3AgZGVmYXVsdGluZyB0byBDdXN0b21W
YWx1ZSBpbiBzdGF0aWMgaGFzaCB0YWJsZXMuCiAgICAgICAgICAgICAgICAgaWYgKCEoYXR0cmli
dXRlcyAmIChQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6QnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0YW50
KSkpCiAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbVZhbHVlOwpAQCAtODIyLDcgKzgxOSw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGlu
ZVNsb3coSlNHbG9iYWxPYmoKICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzQ3CiAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0
b21BY2Nlc3NvcihvYmosIGN1c3RvbVNldHRlcik7CiAgICAgICAgICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICAgICAgICAgIGN1c3RvbVNldHRlcihnbG9iYWxPYmplY3QsIEpTVmFs
dWU6OmVuY29kZShzbG90LnRoaXNWYWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICBjdXN0b21TZXR0ZXIob2JqLT5nbG9iYWxPYmpl
Y3Qodm0pLCBKU1ZhbHVlOjplbmNvZGUoc2xvdC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29k
ZSh2YWx1ZSksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21WYWx1ZSkgewpAQCAtODMxLDcgKzgyOCw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1
dElubGluZVNsb3coSlNHbG9iYWxPYmoKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYgd2UncmUgbm90IGFuIHVuY2FjaGVhYmxl
IGRpY3Rpb25hcnk6CiAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzNDcKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRD
dXN0b21WYWx1ZShvYmosIGN1c3RvbVNldHRlcik7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgY3VzdG9tU2V0dGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6
ZW5jb2RlKG9iaiksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFtZSkpOworICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGN1c3RvbVNldHRlcihv
YmotPmdsb2JhbE9iamVjdCh2bSksIEpTVmFsdWU6OmVuY29kZShvYmopLCBKU1ZhbHVlOjplbmNv
ZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgaWYgKCFpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgb2JqKSkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBBdm9pZCBQdXRNb2RlUHV0IGJlY2F1c2UgaXQgZmFpbHMgZm9yIG5vbi1leHRl
bnNpYmxlIHN0cnVjdHVyZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEx
ICszMywxMiBAQCBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6ZnVuY3Rpb25HZXR0ZXIoSlNHCiAgICAg
cmV0dXJuIG1fZGF0YS5nZXR0ZXIuZ2V0dGVyU2V0dGVyLT5jYWxsR2V0dGVyKGdsb2JhbE9iamVj
dCwgbV90aGlzVmFsdWUpOwogfQogCi1KU1ZhbHVlIFByb3BlcnR5U2xvdDo6Y3VzdG9tR2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
IGNvbnN0CitKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Y3VzdG9tR2V0dGVyKFZNJiB2bSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKKyAgICBBU1NFUlQobV9zbG90QmFzZSk7Cisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fc2xvdEJhc2UtPmdsb2JhbE9iamVj
dCh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBtX2F0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgPyBtX3RoaXNWYWx1ZSA6IEpTVmFsdWUoc2xvdEJhc2Uo
KSk7CiAgICAgaWYgKGF1dG8gZG9tQXR0cmlidXRlID0gdGhpcy0+ZG9tQXR0cmlidXRlKCkpIHsK
LSAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBpZiAoIXRoaXNW
YWx1ZS5pbmhlcml0cyh2bSwgZG9tQXR0cmlidXRlLT5jbGFzc0luZm8pKSB7CiAgICAgICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgICAgICByZXR1
cm4gdGhyb3dET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ZG9tQXR0cmlidXRlLT5jbGFzc0luZm8sIHByb3BlcnR5TmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMjc5MzczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCopIGNvbnN0
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY3VzdG9tR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVl
IGN1c3RvbUdldHRlcihWTSYsIFByb3BlcnR5TmFtZSkgY29uc3Q7CiAKICAgICB1bmlvbiB7CiAg
ICAgICAgIEVuY29kZWRKU1ZhbHVlIHZhbHVlOwpAQCAtNDA1LDcgKzQwNSw3IEBAIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmdldFYKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmRlY29kZShtX2RhdGEudmFsdWUpOwogICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlR2V0
dGVyKQogICAgICAgICByZXR1cm4gZnVuY3Rpb25HZXR0ZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBy
ZXR1cm4gY3VzdG9tR2V0dGVyKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1
cm4gY3VzdG9tR2V0dGVyKGdldFZNKGdsb2JhbE9iamVjdCksIHByb3BlcnR5TmFtZSk7CiB9CiAK
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmdldFZhbHVlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTQxNSw3
ICs0MTUsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90OjpnZXRWCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLnZhbHVlKTsKICAgICBpZiAobV9wcm9w
ZXJ0eVR5cGUgPT0gVHlwZUdldHRlcikKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uR2V0dGVyKGds
b2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIGN1c3RvbUdldHRlcihnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBjdXN0b21HZXR0ZXIo
Z2V0Vk0oZ2xvYmFsT2JqZWN0KSwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRp
b24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9GdW5jVG9T
dHJpbmcpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9GdW5j
VmFsdWVPZik7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN5bWJvbFByb3Rv
dHlwZTo6c19pbmZvIAogCiAvKiBTb3VyY2UgZm9yIFN5bWJvbFByb3RvdHlwZS5sdXQuaAogQGJl
Z2luIHN5bWJvbFByb3RvdHlwZVRhYmxlCi0gIGRlc2NyaXB0aW9uICAgICAgIHN5bWJvbFByb3Rv
R2V0dGVyRGVzY3JpcHRpb24gICAgRG9udEVudW18QWNjZXNzb3IgMAorICBkZXNjcmlwdGlvbiAg
ICAgICBzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCiAgIHRvU3RyaW5nICAgICAgICAgIHN5bWJvbFByb3RvRnVuY1RvU3RyaW5n
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAogICB2YWx1ZU9mICAgICAgICAgICBzeW1ib2xQ
cm90b0Z1bmNWYWx1ZU9mICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKIEBlbmQKQEAgLTg3
LDEyICs4NywxMiBAQCBpbmxpbmUgU3ltYm9sKiB0cnlFeHRyYWN0U3ltYm9sKFZNJiB2bSwgCiAg
ICAgcmV0dXJuIGFzU3ltYm9sKGpzQ2FzdDxTeW1ib2xPYmplY3QqPih0aGlzT2JqZWN0KS0+aW50
ZXJuYWxWYWx1ZSgpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHN5bWJvbFByb3Rv
R2V0dGVyRGVzY3JpcHRpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoc3ltYm9sUHJvdG9HZXR0
ZXJEZXNjcmlwdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXN5bWJvbCkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgU3ltYm9sRGVzY3JpcHRpb25U
eXBlRXJyb3IpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5
MSw3ICsxNTkxLDkgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoY3VzdG9tRwog
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoY3VzdG9tR2V0QWNjZXNzb3JHbG9iYWxP
YmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoY3VzdG9tR2V0VmFsdWVH
bG9iYWxPYmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0
QWNjZXNzb3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0QWNj
ZXNzb3JHbG9iYWxPYmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3Vz
dG9tU2V0VmFsdWUpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0
VmFsdWVHbG9iYWxPYmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3Vz
dG9tRnVuY3Rpb25TZXR0ZXIpOwogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoY3VzdG9tR2V0
QWNjZXNzb3IsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKQEAgLTE2MzMsNiArMTYzNSwyMiBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoY3VzdG9tU2V0QWNjZXNzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0pTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihjdXN0b21TZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29w
ZTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgaWYgKCF2YWx1ZS5pc09iamVj
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QodmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgb2Jq
ZWN0LT5wdXQob2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJyZXN1bHQiKSwgZ2xvYmFsT2JqZWN0LCBzbG90KTsKKworICAgIHJldHVybiB0cnVlOworfQor
CiBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0VmFsdWUsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBzbG90VmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3Bl
IGFzc2VydFNjb3BlOwpAQCAtMTY1MSw2ICsxNjY5LDI0IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihjdXN0b21TZXRWYWx1ZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgc2xvdFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBh
c3NlcnRTY29wZTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBSRUxF
QVNFX0FTU0VSVChKU1ZhbHVlOjpkZWNvZGUoc2xvdFZhbHVlKS5pbmhlcml0czxKU1Rlc3RDdXN0
b21HZXR0ZXJTZXR0ZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkpOworCisgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIGlmICghdmFsdWUuaXNPYmpl
Y3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KHZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIG9i
amVjdC0+cHV0KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAicmVzdWx0IiksIGdsb2JhbE9iamVjdCwgc2xvdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3RvbUZ1bmN0aW9uU2V0dGVyLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFz
c2VydFNjb3BlOwpAQCAtMTY3OCw5ICsxNzE0LDEzIEBAIHZvaWQgSlNUZXN0Q3VzdG9tR2V0dGVy
U2V0dGVyOjpmaW5pc2hDcmUKICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUFjY2Vzc29yIiksCiAgICAgICAgIEN1c3RvbUdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3NvciwgY3VzdG9tU2V0QWNjZXNz
b3IpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yKSk7CiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjdXN0b21WYWx1ZUdsb2JhbE9iamVjdCIpLAotICAgICAgICBDdXN0b21HZXR0
ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0VmFsdWVHbG9iYWxPYmplY3QsIG51bGxwdHIp
LCAwKTsKKyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldFZh
bHVlR2xvYmFsT2JqZWN0LCBjdXN0b21TZXRWYWx1ZUdsb2JhbE9iamVjdCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWUpKTsKICAgICBwdXREaXJl
Y3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUFj
Y2Vzc29yR2xvYmFsT2JqZWN0IiksCi0gICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRl
KHZtLCBjdXN0b21HZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCwgbnVsbHB0ciksIFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7Cisg
ICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3Nvckds
b2JhbE9iamVjdCwgY3VzdG9tU2V0QWNjZXNzb3JHbG9iYWxPYmplY3QpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSk7CisgICAgcHV0RGly
ZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21W
YWx1ZU5vU2V0dGVyIiksCisgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBj
dXN0b21HZXRWYWx1ZSwgbnVsbHB0ciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tVmFsdWUpKTsKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUFjY2Vzc29yUmVhZE9ubHkiKSwKKyAg
ICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yLCBu
dWxscHRyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKIAogICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tRnVuY3Rpb24iKSwKICAgICAgICAgQ3VzdG9t
R2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yLCBjdXN0b21GdW5jdGlv
blNldHRlciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAy
NzkzNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1
ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4
cG9ydHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvR2V0dGVyRXhwb3J0cyk7CiB9CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG90eXBlLmx1dC5oIgpAQCAtNDYsNyArNDYsNyBAQCBjb25zdCBDbGFzc0luZm8gV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvCiAKIC8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlJbnN0YW5j
ZVByb3RvdHlwZS5sdXQuaAogIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5SW5zdGFu
Y2UKLSBleHBvcnRzIHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzIEFjY2Vzc29y
IDAKKyAgZXhwb3J0cyB3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9HZXR0ZXJFeHBvcnRzIFJlYWRP
bmx5fEN1c3RvbUFjY2Vzc29yCiAgQGVuZAogICovCiAKQEAgLTYyLDEyICs2MiwxMiBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5SW5zdGFuCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1
bmNFeHBvcnRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90
b0dldHRlckV4cG9ydHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IGdldEluc3RhbmNlKGds
b2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOyAKKyAgICBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIGluc3RhbmNlID0gZ2V0SW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgeyB9KTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGluc3RhbmNlLT5tb2R1bGVSZWNvcmQoKS0+ZXhwb3J0c09iamVjdCgpKSk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3cp
Owotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vcnlQcm90
b0Z1bmNCdWZmZXIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIod2ViQXNzZW1i
bHlNZW1vcnlQcm90b0dldHRlckJ1ZmZlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY1R5cGUpOwogfQogCkBAIC01Myw3ICs1Myw3
IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHkKIC8qIFNvdXJjZSBm
b3IgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBwcm90b3R5cGVUYWJs
ZVdlYkFzc2VtYmx5TWVtb3J5CiAgZ3JvdyAgIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3Jv
dyAgIEZ1bmN0aW9uIDEKLSBidWZmZXIgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIg
QWNjZXNzb3IgMAorIGJ1ZmZlciB3ZWJBc3NlbWJseU1lbW9yeVByb3RvR2V0dGVyQnVmZmVyIFJl
YWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAgdHlwZSAgIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5j
VHlwZSAgIEZ1bmN0aW9uIDAKIEBlbmQKICovCkBAIC04OCwxMiArODgsMTIgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIocmVzdWx0LnBhZ2VDb3VudCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlciwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUih3ZWJBc3NlbWJseU1lbW9yeVByb3RvR2V0dGVyQnVmZmVyLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkq
IG1lbW9yeSA9IGdldE1lbW9yeShnbG9iYWxPYmplY3QsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsgCisgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0gZ2V0TWVtb3J5KGdsb2Jh
bE9iamVjdCwgdm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsgCiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUobWVtb3J5LT5idWZmZXIoZ2xvYmFsT2JqZWN0KSkpOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgpOworc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIod2ViQXNzZW1ibHlUYWJsZVByb3RvR2V0dGVyTGVuZ3RoKTsKIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93KTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1
bmNHZXQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlUYWJs
ZVByb3RvRnVuY1NldCk7CkBAIC01Miw3ICs1Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3Nl
bWJseVRhYmxlUHJvdG90eXAKIAogLyogU291cmNlIGZvciBXZWJBc3NlbWJseVRhYmxlUHJvdG90
eXBlLmx1dC5oCiAgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlUYWJsZQotIGxlbmd0
aCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoIEFjY2Vzc29yIDAKKyBsZW5ndGggd2Vi
QXNzZW1ibHlUYWJsZVByb3RvR2V0dGVyTGVuZ3RoIFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAg
Z3JvdyAgIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93ICAgRnVuY3Rpb24gMQogIGdldCAg
ICB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0ICAgIEZ1bmN0aW9uIDEKICBzZXQgICAgd2Vi
QXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldCAgICBGdW5jdGlvbiAyCkBAIC03MiwxMiArNzIsMTIg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseVRhYmxlKgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJv
dG9GdW5jTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHdlYkFzc2VtYmx5VGFibGVQcm90
b0dldHRlckxlbmd0aCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZ2xvYmFsT2JqZWN0
LCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0
YWJsZSA9IGdldFRhYmxlKGdsb2JhbE9iamVjdCwgdm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGFibGUtPmxlbmd0aCgp
KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NSBAQAorMjAyMS0wNy0wMSAg
QWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10g
Q2FsbCBjdXN0b20gYWNjZXNzb3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFs
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI1OTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBmaXhlcyBjcm9zcy1yZWFsbSB5ZXQgc2FtZS1vcmlnaW4gV2ViSURMIGF0dHJp
YnV0ZXMgdG8gdGhyb3cgZXJyb3JzIGluIHJlYWxtIG9mCisgICAgICAgIHRoZWlyIGFjY2Vzc29y
LCB3aGlsZSBlbnN1cmluZyB0aGF0IGB3aW5kb3cubG9jYXRpb25gIGFuZCBgbG9jYXRpb24uaHJl
ZmAgc2V0dGVycyBkb24ndCBsZWFrCisgICAgICAgIGNyb3NzLW9yaWdpbiBPYmplY3QucHJvdG90
eXBlIHZpYSB0aHJvd24gZXJyb3IuCisKKyAgICAgICAgU2luY2UgTG9jYXRpb24gc2V0dGVycyBy
ZWxpZWQgb24gbGV4aWNhbCBnbG9iYWwgb2JqZWN0IHRvIHBhc3Mgb3V0Z29pbmcgYGRvY3VtZW50
LnJlZmVycmVyYCwKKyAgICAgICAgdGhleSB3ZXJlIHVwZGF0ZWQgdG8gdXNlIEluY3VtYmVudFdp
bmRvdyBhcyBwZXIgc3BlYyBbMV0uIGNhbGxlckdsb2JhbE9iamVjdCgpIHdhcyByZXdvcmtlZAor
ICAgICAgICB0byBza2lwIG5hdGl2ZSAvIGJ1aWx0LWluIGNhbGxlcnMgYW5kIHJlbHkgb24gVk1F
bnRyeVNjb3BlIHRvIGFjY29tb2RhdGUgdG9wLWxldmVsIDxzY3JpcHQ+CisgICAgICAgIGNvZGUg
bmF2aWdhdGluZyB2aWEgTG9jYXRpb24gc2V0dGVyLCBtYWtpbmcgdGhlIGhlbHBlciBtb3JlIHZl
cnNhdGlsZS4KKworICAgICAgICBnbG9iYWxPYmplY3RPZkNsb3Nlc3RDb2RlQmxvY2soKSBmaXhl
ZCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uIGluc3RhbmNlcyBhbmQgTG9jYXRpb24ncworICAgICAg
ICBhc3NpZ24oKSAvIHJlcGxhY2UoKSBtZXRob2RzIHRvIHBhc3MgY29ycmVjdCByZWZlcnJlci4K
KworICAgICAgICBBbHNvLCB0aGlzIGNoYW5nZSBmaXhlcyBzdGF0aWMgYXR0cmlidXRlcyBsaWtl
IGBQZXJmb3JtYW5jZU9ic2VydmVyLnN1cHBvcnRlZEVudHJ5VHlwZXNgCisgICAgICAgIHRvIHJl
dHVybiB3cmFwcGVycyBvZiB0aGVpciByZWFsbSBpbnN0ZWFkIG9mIGxleGljYWwuCisKKyAgICAg
ICAgWzFdIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2hpc3RvcnkuaHRt
bCNsb2NhdGlvbi1vYmplY3QtbmF2aWdhdGUgKHN0ZXAgMikKKworICAgICAgICBUZXN0czogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ds
b2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sCisgICAgICAg
ICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0
LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwKKyAgICAgICAgICAg
ICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4v
Y3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVmLWNy
b3NzLXJlYWxtLXNldC5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlwZXMtY3Jvc3Mt
cmVhbG0tYWNjZXNzLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxlckdsb2JhbE9iamVjdCk6IERlbGV0ZWQu
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5jdW1i
ZW50RE9NV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5l
cmF0ZU5hbWVkR2V0dGVyTGFtYmRhKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1Jl
ZmVyZW5jZXMpOgorICAgICAgICAoR2VuZXJhdGVDYWxsV2l0aCk6CisgICAgICAgIEVuc3VyZSBJ
bmN1bWJlbnRXaW5kb3cgY29tZXMgYmVmb3JlIEZpcnN0V2luZG93LgorCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBSZW1vdmUgYXR0cmlidXRlcyB0aGF0
IHJlbGllZCBvbiBDYWxsRnJhbWUgc2luY2UgY3VzdG9tIGdldHRlcnMgZG9uJ3QgaGF2ZSBpdC4K
KworICAgICAgICAqIHBhZ2UvTG9jYXRpb24uaWRsOgorICAgICAgICBSZW1vdmUgW0xlZ2FjeVVu
Zm9yZ2VhYmxlXSBmcm9tIGFuY2VzdG9yT3JpZ2lucyBiZWNhdXNlIGl0J3Mgc2V0IG9uIHRoZSBp
bnRlcmZhY2UuCisKIDIwMjEtMDYtMjkgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBOdWxscHRyIGNyYXNoIGluIEhUTUxTdGFja0l0ZW06OmNyZWF0ZSB2aWEgRG9jdW1l
bnRGcmFnbWVudDo6cGFyc2VIVE1MCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0Miw0OCArNTQyLDYgQEAgSlNDOjpKU09iamVjdCogSlNET01HbG9iYWxPYmplY3Q6Om1v
ZHVsZQogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QtPnZtKCks
IGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKIH0KIAotSlNE
T01HbG9iYWxPYmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgY2xhc3MgR2V0Q2Fs
bGVyR2xvYmFsT2JqZWN0RnVuY3RvciB7Ci0gICAgcHVibGljOgotICAgICAgICBHZXRDYWxsZXJH
bG9iYWxPYmplY3RGdW5jdG9yKCkgPSBkZWZhdWx0OwotCi0gICAgICAgIFN0YWNrVmlzaXRvcjo6
U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIW1faGFzU2tpcHBlZEZpcnN0RnJhbWUpIHsKLSAgICAgICAgICAg
ICAgICBtX2hhc1NraXBwZWRGaXJzdEZyYW1lID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKGF1dG8qIGNvZGVCbG9jayA9IHZpc2l0b3ItPmNvZGVCbG9jaygpKQotICAgICAgICAgICAg
ICAgIG1fZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVCh2aXNpdG9yLT5jYWxsZWUoKS5yYXdQ
dHIoKSk7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IENhbGxlZSBpcyBub3QgYW4gb2JqZWN0
IGlmIHRoZSBjYWxsZXIgaXMgV2ViIEFzc2VtYmx5LgotICAgICAgICAgICAgICAgIC8vIEZpZ3Vy
ZSBvdXQgd2hhdCB0byBkbyBoZXJlLiBXZSBjYW4gcHJvYmFibHkgZ2V0IHRoZSBnbG9iYWwgb2Jq
ZWN0Ci0gICAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgdG9wLW1vc3QgV2FzbSBJbnN0YW5jZS4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTcyMQotICAgICAgICAg
ICAgICAgIGlmICh2aXNpdG9yLT5jYWxsZWUoKS5pc0NlbGwoKSAmJiB2aXNpdG9yLT5jYWxsZWUo
KS5hc0NlbGwoKS0+aXNPYmplY3QoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9nbG9iYWxPYmpl
Y3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKSktPmdsb2Jh
bE9iamVjdCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRv
cjo6RG9uZTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdDsgfQotCi0gICAgcHJpdmF0ZToKLSAg
ICAgICAgbXV0YWJsZSBib29sIG1faGFzU2tpcHBlZEZpcnN0RnJhbWUgeyBmYWxzZSB9OwotICAg
ICAgICBtdXRhYmxlIEpTR2xvYmFsT2JqZWN0KiBtX2dsb2JhbE9iamVjdCB7IG51bGxwdHIgfTsK
LSAgICB9OwotCi0gICAgR2V0Q2FsbGVyR2xvYmFsT2JqZWN0RnVuY3RvciBpdGVyOwotICAgIGNh
bGxGcmFtZS5pdGVyYXRlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgaXRlcik7Ci0gICAgaWYg
KGl0ZXIuZ2xvYmFsT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oaXRlci5nbG9iYWxPYmplY3QoKSk7Ci0KLSAgICAvLyBJZiB3ZSBjYW5ub3QgZmlu
ZCBKU0dsb2JhbE9iamVjdCBpbiBjYWxsZXIgZnJhbWVzLCB3ZSBqdXN0IHJldHVybiB0aGUgY3Vy
cmVudCBsZXhpY2FsR2xvYmFsT2JqZWN0LgotICAgIHJldHVybiAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOwotfQotCiBKU0RPTUdsb2JhbE9iamVjdCog
dG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJ
KHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw4ICsxNDIsNiBAQCBwcml2YXRlOgog
ICAgIEpTQzo6V2Vha0dDTWFwPENyb3NzT3JpZ2luTWFwS2V5LCBKU0M6OkdldHRlclNldHRlcj4g
bV9jcm9zc09yaWdpbkdldHRlclNldHRlck1hcDsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIEpTRE9N
R2xvYmFsT2JqZWN0JiBjYWxsZXJHbG9iYWxPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Qzo6Q2FsbEZyYW1lJik7Ci0KIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBET01XcmFwcGVyV29ybGQmKTsKIAogdGVtcGxhdGU8
Y2xhc3MgSlNDbGFzcz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDkgKzI4
MiwyMiBAQCBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhGcmFtZSYgZnJhbWUsCiAgICAgcmV0
dXJuIGZyYW1lLnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCk7CiB9CiAKLURPTVdpbmRvdyYg
aW5jdW1iZW50RE9NV2luZG93KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUmIGNhbGxGcmFtZSkKK0RPTVdpbmRvdyYgaW5jdW1iZW50RE9NV2luZG93KEpTR2xv
YmFsT2JqZWN0JiBmYWxsYmFja0dsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIGFzSlNET01XaW5kb3coJmNhbGxlckdsb2JhbE9iamVjdChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUpKS0+d3JhcHBlZCgpOworICAgIFZNJiB2bSA9IGZhbGxiYWNr
R2xvYmFsT2JqZWN0LnZtKCk7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGNhbGxGcmFt
ZS5nbG9iYWxPYmplY3RPZkNsb3Nlc3RDb2RlQmxvY2sodm0pKQorICAgICAgICByZXR1cm4gYXNK
U0RPTVdpbmRvdyhnbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIGFzSlNET01X
aW5kb3coJmZhbGxiYWNrR2xvYmFsT2JqZWN0KS0+d3JhcHBlZCgpOworfQorCitET01XaW5kb3cm
IGluY3VtYmVudERPTVdpbmRvdyhKU0dsb2JhbE9iamVjdCYgZmFsbGJhY2tHbG9iYWxPYmplY3Qp
Cit7CisgICAgVk0mIHZtID0gZmFsbGJhY2tHbG9iYWxPYmplY3Qudm0oKTsKKyAgICBpZiAodm0u
dG9wQ2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSB2bS50b3BD
YWxsRnJhbWUtPmdsb2JhbE9iamVjdE9mQ2xvc2VzdENvZGVCbG9jayh2bSkpCisgICAgICAgICAg
ICByZXR1cm4gYXNKU0RPTVdpbmRvdyhnbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7CisgICAgfQor
ICAgIHJldHVybiBhc0pTRE9NV2luZG93KCZmYWxsYmFja0dsb2JhbE9iamVjdCktPndyYXBwZWQo
KTsKIH0KIAogRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3coSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuaAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNyBA
QCBpbmxpbmUgSlNET01XaW5kb3cqIHRvSlNET01XaW5kb3coRnJhbWUqCiAvLyBGSVhNRTogTWFr
ZSB0aGlzIHdvcmsgZm9yIGFuICJhdXRob3IgZnVuY3Rpb24gb3Igc2NyaXB0IHRoYXQgb3JpZ2lu
YWxseSBzY2hlZHVsZWQgdGhlIGN1cnJlbnRseS1ydW5uaW5nIGNhbGxiYWNrLiIKIC8vIFNlZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQxMj4uCiBET01XaW5k
b3cmIGluY3VtYmVudERPTVdpbmRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpDYWxsRnJh
bWUmKTsKK0RPTVdpbmRvdyYgaW5jdW1iZW50RE9NV2luZG93KEpTQzo6SlNHbG9iYWxPYmplY3Qm
KTsKIAogRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCYpOwog
RE9NV2luZG93JiBmaXJzdERPTVdpbmRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShy
ZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MywxMCArMjYzLDE3IEBAIGJvb2wgSlNE
T01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2wKIAogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKIAotICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0g
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVz
KCkubG9jYXRpb25QdWJsaWNOYW1lKCkpIHsKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOworICAg
IGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCksIGVycm9yTWVzc2FnZSkpIHsK
ICAgICAgICAgLy8gV2Ugb25seSBhbGxvdyBzZXR0aW5nICJsb2NhdGlvbiIgYXR0cmlidXRlIGNy
b3NzLW9yaWdpbi4KLSAgICAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgp
LCBUaHJvd1NlY3VyaXR5RXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmxvY2F0aW9uUHVibGljTmFtZSgpKSB7CisgICAgICAg
ICAgICBhdXRvKiBzZXR0ZXIgPSBzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJv
cGVydHlOYW1lKS0+cHJvcGVydHlQdXR0ZXIoKTsKKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKKyAgICAgICAgICAgIHNldHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNv
ZGUoc2xvdC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0aHJvd1Nl
Y3VyaXR5RXJyb3IoKmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSAmJiAhYWxsb3dzTGVnYWN5RXhwYW5kb0luZGV4ZWRQcm9wZXJ0aWVzKCkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSwxNyArMTExLDI2IEBAIGJvb2wgSlNM
b2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmQKIGJvb2wgSlNMb2NhdGlvbjo6cHV0KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJv
cGVydHlTbG90KQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIC8vIEFsd2F5cyBhbGxvdyBhc3Np
Z25pbmcgdG8gdGhlIHdob2xlIGxvY2F0aW9uLgogICAgIC8vIEhvd2V2ZXIsIGFsbG93aW5nIGFz
c2lnbmluZyBvZiBwaWVjZXMgbWlnaHQgaW5hZHZlcnRlbnRseSBkaXNjbG9zZSBwYXJ0cyBvZiB0
aGUgb3JpZ2luYWwgbG9jYXRpb24uCiAgICAgLy8gU28gZmFsbCB0aHJvdWdoIHRvIHRoZSBhY2Nl
c3MgY2hlY2sgZm9yIHRob3NlLgotICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuaHJlZlB1Ymxp
Y05hbWUoKSkgewotICAgICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCku
d2luZG93KCksIFRocm93U2VjdXJpdHlFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hv
dWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVj
dC0+d3JhcHBlZCgpLndpbmRvdygpLCBlcnJvck1lc3NhZ2UpKSB7CisgICAgICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+
YnVpbHRpbk5hbWVzKCkuaHJlZlB1YmxpY05hbWUoKSkgeworICAgICAgICAgICAgYXV0byogc2V0
dGVyID0gc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSktPnBy
b3BlcnR5UHV0dGVyKCk7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAg
ICBzZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHB1dFByb3BlcnR5
U2xvdC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0aHJvd1NlY3Vy
aXR5RXJyb3IoKmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJl
dHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lv
biAyNzkzNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtODUzLDcgKzg1Myw3IEBAIHN1YiBHZW5lcmF0ZU5h
bWVkR2V0dGVyTGFtYmRhCiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNs
YXNzTmFtZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbk5hbWUs
ICRJRExUeXBlKSA9IEBfOwogICAgIAotICAgIG15IEBhcmd1bWVudHMgPSBHZW5lcmF0ZUNhbGxX
aXRoVXNpbmdSZWZlcmVuY2VzKCRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJzdGQ6Om51bGxvcHQiLCAidGhpc09iamVj
dCIsICIgICAgICAgICIpOworICAgIG15IEBhcmd1bWVudHMgPSBHZW5lcmF0ZUNhbGxXaXRoVXNp
bmdSZWZlcmVuY2VzKCRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJzdGQ6Om51bGxvcHQiLCAidGhpc09iamVjdCIsICIi
LCAiICAgICAgICAiKTsKICAgICBwdXNoKEBhcmd1bWVudHMsICJwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1
dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3Rv
cjwke0lETFR5cGV9LCAke2NsYXNzTmFtZX0+KFtdICgke2NsYXNzTmFtZX0mIHRoaXNPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHtcbiIpOwpAQCAt
NTg4MSwxMCArNTg4MSw5IEBAIHN1YiBHZW5lcmF0ZUdldENhbGxEYXRhCiAKIHN1YiBHZW5lcmF0
ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzCiB7Ci0gICAgbXkgKCRjYWxsV2l0aCwgJG91dHB1dEFy
cmF5LCAkcmV0dXJuVmFsdWUsICR0aGlzUmVmZXJlbmNlLCAkaW5kZW50KSA9IEBfOworICAgIG15
ICgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAkdGhpc1JlZmVyZW5jZSwg
JGNhbGxGcmFtZVJlZmVyZW5jZSwgJGluZGVudCkgPSBAXzsKIAotICAgIG15ICRjYWxsRnJhbWVQ
b2ludGVyID0gImNhbGxGcmFtZSI7Ci0gICAgbXkgJGNhbGxGcmFtZVJlZmVyZW5jZSA9ICIqY2Fs
bEZyYW1lIjsKKyAgICBteSAkY2FsbEZyYW1lUG9pbnRlciA9ICRjYWxsRnJhbWVSZWZlcmVuY2Ug
JiYgIiYkY2FsbEZyYW1lUmVmZXJlbmNlIjsKICAgICBteSAkZ2xvYmFsT2JqZWN0ID0gImpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSI7CiAKICAgICByZXR1
cm4gR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVl
LCAkcmV0dXJuVmFsdWUsICRjYWxsRnJhbWVQb2ludGVyLCAkY2FsbEZyYW1lUmVmZXJlbmNlLCAk
Z2xvYmFsT2JqZWN0LCAkZ2xvYmFsT2JqZWN0LCAkdGhpc1JlZmVyZW5jZSwgJGluZGVudCk7CkBA
IC01OTY0LDE1ICs1OTYzLDE1IEBAIHN1YiBHZW5lcmF0ZUNhbGxXaXRoCiAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJKU0RPTVdpbmRvd0Jhc2UuaCIpOwogICAgICAgICBwdXNoKEBjYWxsV2l0
aEFyZ3MsICJhY3RpdmVET01XaW5kb3coKiRnbG9iYWxPYmplY3QpIik7CiAgICAgfQotICAgIGlm
ICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJG
aXJzdFdpbmRvdyIpKSB7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0
ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIkluY3VtYmVudFdpbmRvdyIpKSB7CiAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJET01XaW5kb3cuaCIpOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
SlNET01XaW5kb3dCYXNlLmgiKTsKLSAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiZmlyc3RE
T01XaW5kb3coKiRnbG9iYWxPYmplY3QpIik7CisgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywg
ImluY3VtYmVudERPTVdpbmRvdygqJGdsb2JhbE9iamVjdCIgLiAoJGNhbGxGcmFtZVJlZmVyZW5j
ZSA/ICIsICIgLiAkY2FsbEZyYW1lUmVmZXJlbmNlIDogIiIpIC4gIikiKTsKICAgICB9Ci0gICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwg
IkluY3VtYmVudFdpbmRvdyIpKSB7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0
dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIkZpcnN0V2luZG93IikpIHsKICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkRPTVdpbmRvdy5oIik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJKU0RPTVdpbmRvd0Jhc2UuaCIpOwotICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3MsICJpbmN1
bWJlbnRET01XaW5kb3coKiRnbG9iYWxPYmplY3QsICRjYWxsRnJhbWVSZWZlcmVuY2UpIik7Cisg
ICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgImZpcnN0RE9NV2luZG93KCokZ2xvYmFsT2JqZWN0
KSIpOwogICAgIH0KICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29u
dGFpbnMoJGNhbGxXaXRoLCAiUnVudGltZUZsYWdzIikpIHsKICAgICAgICAgcHVzaChAY2FsbFdp
dGhBcmdzLCAiJHtnbG9iYWxPYmplY3R9LT5ydW50aW1lRmxhZ3MoKSIpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNp
b24gMjc5MzczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsOSArMjAwLDcgQEAgZW51bSBUZXN0Q29uZmlk
ZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogCiAgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0g
YXR0cmlidXRlIGxvbmcgd2l0aEV4ZWNTdGF0ZUF0dHJpYnV0ZTsKICAgICBbQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0LCBTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJp
YnV0ZSBsb25nIHdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlOwotICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBhdHRyaWJ1dGUgVGVzdE9iaiB3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCZFeGVjU3RhdGVdIGF0dHJpYnV0ZSBUZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlOwotICAgIFtDYWxsV2l0aD0gIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgICYgIEV4ZWNTdGF0ZSAgXSBhdHRyaWJ1dGUgVGVzdE9iaiB3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGU7CisgICAg
W1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIERP
TVN0cmluZyB3aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGU7CiAKICAgICAvLyBPcHRpb25hbCBw
YXJhbWV0ZXJzLgogICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxBcmcob3B0aW9u
YWwgbG9uZyBvcHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzYxLDEyICsxNzYxLDggQEAgc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNUZXN0Twogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0
T2JqX3dpdGhFeGVjU3RhdGVBdHRyaWJ1dGUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNUZXN0T2JqX3dpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aXRoQ2FsbFdp
dGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOwot
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJp
YnV0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGUpOwotc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRF
eGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdE9ial93aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOworc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0
dHJpYnV0ZSk7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMSk7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMSk7CkBAIC0yMTI2
LDkgKzIxMjIsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAg
ICAgeyAib253ZWJraXRmb28iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9vbndlYmtpdGZvbyksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9vbndlYmtp
dGZvbykgfSB9LAogICAgIHsgIndpdGhFeGVjU3RhdGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoRXhl
Y1N0YXRlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhFeGVjU3RhdGVBdHRyaWJ1dGUpIH0gfSwK
ICAgICB7ICJ3aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3dp
dGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhDYWxs
V2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKSB9IH0sCi0gICAgeyAid2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZSkgfSB9LAotICAgIHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0
cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRy
aWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVB
dHRyaWJ1dGUpIH0gfSwKLSAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKSB9IH0sCisgICAg
eyAid2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfd2l0aFNldHRlckNhbGxXaXRo
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSkgfSB9LAog
I2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIHsgImNvbmRpdGlvbmFsQXR0cjEiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9j
b25kaXRpb25hbEF0dHIxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2NvbmRpdGlvbmFsQXR0cjEpIH0gfSwKICNlbHNl
CkBAIC00MjYyLDExNSArNDI1NiwzNSBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0T2JqX3dpCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNU
ZXN0T2JqX3dpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUp
OwogfQogCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RP
Ymo+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhy
b3dTY29wZSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgqY29udGV4
dCkpKSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRl
TmFtZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0
T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBh
dHRyaWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial93aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQot
ewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIiwg
IlRlc3RPYmoiKTsgfSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJ
S0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnZva2VGdW5jdG9y
UHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewotICAgICAgICByZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSgqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKLSAgICB9KTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0
dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
T2JqJiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJ
S0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSgqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCkpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2V0dGVyQ2FsbFdpdGhB
dHRyaWJ1dGUoKSkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial93
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RPYmpfd2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0
dHJpYnV0ZU5hbWUpKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0
PGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1
dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RP
Ympfd2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7
CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVB
dHRyaWJ1dGUiLCAiVGVzdE9iaiIpOyB9KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKLSAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlu
dm9rZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlKCpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCksICpjYWxsRnJhbWUsICpjb250ZXh0LCAq
bmF0aXZlVmFsdWUpOwotICAgIH0pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1KU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
RXhlY1N0YXRlQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQ
cm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
RXhlY1N0YXRlQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNw
YWNlc0F0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0T2JqJiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlm
IChVTkxJS0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKmpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFt
ZSwgKmNvbnRleHQpKSkpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2Jq
X3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKLXsKLSAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRy
aWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial93aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOyB9KTsK
KyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKLSAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxl
eGljYWxHbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKFVO
TElLRUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGludm9rZUZ1bmN0
b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgqanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCwg
Km5hdGl2ZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0V2l0aFNldHRlckNhbGxXaXRo
QXR0cmlidXRlKGluY3VtYmVudERPTVdpbmRvdygqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
JmxleGljYWxHbG9iYWxPYmplY3QpKSwgZmlyc3RET01XaW5kb3coKmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3Bl
cnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rl
c3RPYmpfd2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCiB7Ci0gICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpfd2l0
aFNldHRlckNhbGxXaXRoQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQogCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNpb24gMjc5Mzcz
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDIyICs0MywyMiBAQAogICAgIExlZ2FjeVVuZm9yZ2VhYmxlLAogICAgIEV4cG9zZWQ9V2lu
ZG93CiBdIGludGVyZmFjZSBMb2NhdGlvbiB7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdp
bmRvdyZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0cmluZ2lmaWVy
IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKKyAgICBbU2V0dGVyQ2FsbFdpdGg9SW5jdW1iZW50
V2luZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHlPblNldHRlcl0gc3RyaW5naWZp
ZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogCi0gICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRv
dyZGaXJzdFdpbmRvd10gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKLSAgICBbRG9O
b3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIHVuZGVm
aW5lZCByZXBsYWNlKFVTVlN0cmluZyB1cmwpOwotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3dd
IHVuZGVmaW5lZCByZWxvYWQoKTsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93JkZpcnN0
V2luZG93XSB1bmRlZmluZWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOworICAgIFtDYWxsV2l0aD1J
bmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eV0gdW5kZWZpbmVk
IHJlcGxhY2UoVVNWU3RyaW5nIHVybCk7CisgICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvd10g
dW5kZWZpbmVkIHJlbG9hZCgpOwogCiAgICAgLy8gVVJJIGRlY29tcG9zaXRpb24gYXR0cmlidXRl
cwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0
ZSBVU1ZTdHJpbmcgcHJvdG9jb2w7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZG
aXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBob3N0OwotICAgIFtTZXR0ZXJDYWxsV2l0
aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaG9zdG5hbWU7
Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRl
IFVTVlN0cmluZyBwb3J0OwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RX
aW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcGF0aG5hbWU7Ci0gICAgW1NldHRlckNhbGxXaXRo
PUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBzZWFyY2g7Ci0g
ICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVT
VlN0cmluZyBoYXNoOworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RX
aW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcHJvdG9jb2w7CisgICAgW1NldHRlckNhbGxXaXRo
PUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBob3N0Owor
ICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0
ZSBVU1ZTdHJpbmcgaG9zdG5hbWU7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRv
dyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBwb3J0OworICAgIFtTZXR0ZXJDYWxs
V2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcGF0
aG5hbWU7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10g
YXR0cmlidXRlIFVTVlN0cmluZyBzZWFyY2g7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVu
dFdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBoYXNoOwogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47CiAKLSAgICBbTGVnYWN5VW5mb3JnZWFi
bGUsIFNhbWVPYmplY3QsIENhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZ0xpc3QgYW5jZXN0b3JPcmlnaW5zOworICAgIFtTYW1lT2JqZWN0LCBDYWNoZWRBdHRyaWJ1
dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGFuY2VzdG9yT3JpZ2luczsKIH07
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNzkzNzMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wNy0wMSAgQWxleGV5IFNodmF5a2Eg
IDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gQ2FsbCBjdXN0b20gYWNj
ZXNzb3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFsIG9iamVjdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTk3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
T2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS5odG1sOgorICAgICAgICAq
IGZhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1
bW15LWZyYW1lLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRl
LWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWw6CisgICAg
ICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1l
bGVzcy1kb2MtY29udGV4dC0yLmh0bWw6CisgICAgICAgIFRoZXNlIHRlc3RzIHVzZWQgdG8gcGFz
cyBhcyBpcywgcHJvYmFibHksIGR1ZSB0byBjb21iaW5hdGlvbiBvZiBvbGQgKGluY29ycmVjdCkg
YmVoYXZpb3IgYW5kCisgICAgICAgIHNvbWUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBydW4t
d2Via2l0LXRlc3RzLiBUaGV5IGZhaWwgb24gTWluaUJyb3dzZXIgLyBDaHJvbWUgLyBGaXJlZm94
CisgICAgICAgIHVubGVzcyBtb2RpZmllZCBub3QgdG8gdXNlIGRhdGE6Ly8gcHJvdG9jb2wsIHdo
aWNoIGlzIG5vdCBzeXN0ZW0gdW5kZXIgdGVzdC4KKworICAgICAgICAqIGZhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1s
b2NhdGlvbi1hc3NpZ24tZXhwZWN0ZWQudHh0OgorICAgICAgICBSZXZlcnQgdGhlIGNoYW5nZXMg
bWFkZSBpbiByMTc0OTk2LiBMb2NhdGlvbjo6YXNzaWduKCkgbm93IHVzZXMgY29ycmVjdCAoaW5j
dW1iZW50KSBXaW5kb3cKKyAgICAgICAgdG8gc2V0IHJlZmVycmVyIGFuZCBwZXJmb3JtIHNlY3Vy
aXR5IGNoZWNrcywgYWxpZ25pbmcgV2ViS2l0IHdpdGggQ2hyb21lIC8gRmlyZWZveC4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxv
Y2F0aW9uLWdvcGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1nb3BkLmh0bWw6IEFk
ZGVkLgorCiAyMDIxLTA2LTI5ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgTnVsbHB0ciBjcmFzaCBpbiBIVE1MU3RhY2tJdGVtOjpjcmVhdGUgdmlhIERvY3VtZW50RnJh
Z21lbnQ6OnBhcnNlSFRNTApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVs
ZW1lbnQvb2JqZWN0LWFzLWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNzkzNzMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0
RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01
LDEwICs1LDEwIEBAIFBBU1Mgd2luZG93LmZyYW1lc1swXS5mcmFtZUVsZW1lbnQuY29udGUKIFBB
U1Mgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVsZW1lbnQubmFtZSBpcyAib2JqIgogUEFTUyB3aW5k
b3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250ZW50V2luZG93IGlzIHdpbmRvdy5mcmFtZXNb
MV0uZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudC5kZWZhdWx0VmlldwogUEFTUyB3aW5kb3cu
ZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250ZW50V2luZG93LmRvY3VtZW50IGlzIHdpbmRvdy5m
cmFtZXNbMV0uZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudAotTG9hZGluZyAnZGF0YTp0ZXh0
L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJhbWUnIGluIGlmcmFtZS4uLgotTG9hZGluZyAn
ZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBvYmplY3QnIGluIG9iamVjdC4uLgot
UEFTUyB3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLnRvU3RyaW5nKCkgaXMgImRhdGE6dGV4dC9o
dG1sLFVwZGF0ZWQgY29udGVudHMgb2YgaWZyYW1lIgotUEFTUyB3aW5kb3cuZnJhbWVzWzFdLmxv
Y2F0aW9uLnRvU3RyaW5nKCkgaXMgImRhdGE6dGV4dC9odG1sLFVwZGF0ZWQgY29udGVudHMgb2Yg
b2JqZWN0IgorTG9hZGluZyAncmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbCcgaW4gaWZyYW1l
Li4uCitMb2FkaW5nICdyZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1sJyBpbiBvYmplY3QuLi4K
K1BBU1Mgd2luZG93LmZyYW1lc1swXS5sb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCJyZXNvdXJjZXMv
ZHVtbXktZnJhbWUtMi5odG1sIikgaXMgdHJ1ZQorUEFTUyB3aW5kb3cuZnJhbWVzWzFdLmxvY2F0
aW9uLmhyZWYuZW5kc1dpdGgoInJlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwiKSBpcyB0cnVl
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50
L29iamVjdC1hcy1mcmFtZS5odG1sCShyZXZpc2lvbiAyNzkzNzMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNiw4ICs2LDggQEAKIAoganNUZXN0SXNBc3luYyA9IHRydWU7CiAKLXZhciB1cGRh
dGVkRnJhbWVVUkwgPSAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJhbWUi
OwotdmFyIHVwZGF0ZWRPYmplY3RVUkwgPSAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50
cyBvZiBvYmplY3QiOwordmFyIHVwZGF0ZWRGcmFtZVVSTCA9ICJyZXNvdXJjZXMvZHVtbXktZnJh
bWUtMi5odG1sIjsKK3ZhciB1cGRhdGVkT2JqZWN0VVJMID0gInJlc291cmNlcy9kdW1teS1mcmFt
ZS0xLmh0bWwiOwogCiBmdW5jdGlvbiBydW5UZXN0cygpCiB7CkBAIC0zNiw4ICszNiw4IEBAIGZ1
bmN0aW9uIGhhbmRsZUxvYWQoKQogICAgIGlmIChudW1Mb2FkcyA8IDIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHNob3VsZEJlKCJ3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLnRvU3RyaW5nKCki
LCAnIicgKyB1cGRhdGVkRnJhbWVVUkwgKyAnIicpOwotICAgIHNob3VsZEJlKCJ3aW5kb3cuZnJh
bWVzWzFdLmxvY2F0aW9uLnRvU3RyaW5nKCkiLCAnIicgKyB1cGRhdGVkT2JqZWN0VVJMICsgJyIn
KTsKKyAgICBzaG91bGRCZVRydWUoYHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24uaHJlZi5lbmRz
V2l0aCgiJHt1cGRhdGVkRnJhbWVVUkx9IilgKTsKKyAgICBzaG91bGRCZVRydWUoYHdpbmRvdy5m
cmFtZXNbMV0ubG9jYXRpb24uaHJlZi5lbmRzV2l0aCgiJHt1cGRhdGVkT2JqZWN0VVJMfSIpYCk7
CiAKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KQEAgLTQ2LDggKzQ2LDggQEAgZnVuY3Rpb24gaGFu
ZGxlTG9hZCgpCiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgogCi08aWZyYW1l
IG5hbWU9ImZyYW1lIiBzcmM9ImRhdGE6dGV4dC9odG1sLE9sZCBjb250ZW50cyBvZiBpZnJhbWUi
PjwvaWZyYW1lPgotPG9iamVjdCBuYW1lPSJvYmoiIHR5cGU9InRleHQvaHRtbCIgZGF0YT0iZGF0
YTp0ZXh0L2h0bWwsT2xkIGNvbnRlbnRzIG9mIG9iamVjdCI+PC9vYmplY3Q+Cis8aWZyYW1lIG5h
bWU9ImZyYW1lIiBzcmM9InJlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwiPjwvaWZyYW1lPgor
PG9iamVjdCBuYW1lPSJvYmoiIHR5cGU9InRleHQvaHRtbCIgZGF0YT0icmVzb3VyY2VzL2R1bW15
LWZyYW1lLTIuaHRtbCI+PC9vYmplY3Q+CiAKIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0x
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1l
bnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorPCFET0NUWVBFIGh0bWw+CitPbGQg
Y29udGVudHMgb2YgaWZyYW1lIC8gTmV3IGNvbnRlbnRzIG9mIG9iamVjdApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVu
dC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACis8IURPQ1RZUEUgaHRtbD4KK09sZCBj
b250ZW50cyBvZiBvYmplY3QgLyBOZXcgY29udGVudHMgb2YgaWZyYW1lCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNz
LWRvYy1jb250ZXh0LTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIu
aHRtbAkocmV2aXNpb24gMjc5MzczKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmli
dXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8aHRtbD4KIDxib2R5IG9ubG9hZD0idGVzdCgp
Ij4KLTxpZnJhbWUgc3JjPSdkYXRhOnRleHQvaHRtbCw8YSBpZD0iYSIgaHJlZj0iJTIzIiBvbmNs
aWNrPSJkb2N1bWVudC53cml0ZSh3aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4mYXBv
czsgOiAmYXBvczs8cD5QQVNTPC9wPiZhcG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4nPjwv
aWZyYW1lPgorPGlmcmFtZSBzcmNkb2M9JzxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9ImRv
Y3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZh
cG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+
CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVu
ZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVk
LWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAkocmV2aXNpb24gMjc5MzczKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9t
LWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiA8aHRtbD4KIDxib2R5IG9ubG9hZD0idGVzdCgpIj4KLTxpZnJhbWUgc3JjPSdkYXRhOnRl
eHQvaHRtbCw8YSBpZD0iYSIgaHJlZj0iJTIzIiBvbmNsaWNrPSJkb2N1bWVudC53cml0ZSh3aW5k
b3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4mYXBvczsgOiAmYXBvczs8cD5QQVNTPC9wPiZh
cG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4nPjwvaWZyYW1lPgorPGlmcmFtZSBzcmNkb2M9
JzxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0
b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsg
cmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc5MzczKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBh
cmVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw5IEBACi1UaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgd2l0aCB0aGUga2V5d29yZHMgYWxs
b3ctc2NyaXB0cyBhbmQgYWxsb3ctc2FtZS1vcmlnaW4gaXMgYWxsb3dlZCB0byBuYXZpZ2F0ZSBh
biBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0
dHJpYnV0ZS4KK0NPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBp
bml0aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFtZSB3aXRoIFVSTCAnc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLXNvdXJjZS5odG1sJy4gVGhlIGZyYW1lIGF0dGVtcHRpbmcgbmF2aWdhdGlvbiBp
cyBzYW5kYm94ZWQsIGFuZCBpcyB0aGVyZWZvcmUgZGlzYWxsb3dlZCBmcm9tIG5hdmlnYXRpbmcg
aXRzIGFuY2VzdG9ycy4KKworQ09OU09MRSBNRVNTQUdFOiBTZWN1cml0eUVycm9yOiBUaGUgb3Bl
cmF0aW9uIGlzIGluc2VjdXJlLgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQg
SUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBh
c3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS4KKworVGhpcyBpcyBkb25lIGJ5IGxvYWRp
bmcgdGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1lcywgYW5kIGEgc2luZ2xlIHNhbmRib3hlZCBvbmUu
IEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQgb25l
IHRvIG5vdCBiZSBvbmUgb2YgdGhlbS4KIAogVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9u
IHN1Y2Nlc3MuCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlzaW9u
IDI3OTM3MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1wYXJlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOSArMTMsOSBAQCBmdW5j
dGlvbiBjaGVja1Jlc3VsdHMoKQogewogICAgIHZhciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Rlc3RTdGF0dXMnKTsKIAotICAgIGlmIChzZWxmLm5hdmlnYXRlZC5sb2Nh
dGlvbi5ocmVmLmluZGV4T2YoJ3BhcmVudC5odG1sJykgIT0gLTEpCi0gICAgICAgIHRlc3RTdGF0
dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IHNhbmRib3hlZCBmcmFtZSBjb3VsZG5cJ3QgbmF2aWdhdGUn
OwotICAgIGVsc2UgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMSkKKyAgICBpZiAoc2VsZi5uYXZp
Z2F0ZWQubG9jYXRpb24uaHJlZi5pbmRleE9mKCdwYXJlbnQuaHRtbCcpID09IC0xKQorICAgICAg
ICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1lIG5hdmlnYXRl
ZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQogICAgICAgICB0ZXN0U3Rh
dHVzLmlubmVySFRNTCA9ICdQQVNTJzsKICAgICBlbHNlCiAgICAgICAgIHRlc3RTdGF0dXMuaW5u
ZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Blcmx5JzsKQEAgLTI4LDcg
KzI4LDcgQEAgZnVuY3Rpb24gY291bnRGcmFtZSgpCiB7CiAgICAgKytuYXZpZ2F0ZWRGcmFtZXM7
CiAKLSAgICBpZiAobmF2aWdhdGVkRnJhbWVzID09IDExKQorICAgIGlmIChuYXZpZ2F0ZWRGcmFt
ZXMgPT0gMTApCiAgICAgICAgIGNoZWNrUmVzdWx0cygpOwogfQogCkBAIC0zNywxMCArMzcsMTMg
QEAgZnVuY3Rpb24gY291bnRGcmFtZSgpCiAKIDxib2R5PgogCi0gICAgPHA+VGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIHdpdGggdGhlIGtleXdvcmRzCi0gICAgYWxs
b3ctc2NyaXB0cyBhbmQgYWxsb3ctc2FtZS1vcmlnaW4gaXMgYWxsb3dlZCB0byBuYXZpZ2F0ZSBh
biBhbmNlc3RvcgorICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElG
cmFtZSBjYW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IKICAgICBpbiB0aGUgZnJhbWUgdHJlZSBi
eSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS48L3A+CiAKKyAgICA8cD5UaGlzIGlz
IGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5nbGUK
KyAgICBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQsIGJ1
dCB0aGUgc2FuZGJveGVkCisgICAgb25lIHRvIDxiPm5vdDwvYj4gYmUgb25lIG9mIHRoZW0uPC9w
PgorICAgIAogICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24g
c3VjY2Vzcy48L3A+CiAKICAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3Np
Z24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDI3OTM3MykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBACi1kb2N1bWVudC5yZWZlcnJlciA9Citk
b2N1bWVudC5yZWZlcnJlciA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKIApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9j
YXRpb24tZ29wZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tZ29wZC1l
eHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tZ29wZC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACitkb2N1bWVudC5yZWZlcnJlciA9IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3It
bG9jYXRpb24tZ29wZC5odG1sCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWdvcGQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9j
b250ZXh0LWZvci1sb2NhdGlvbi1nb3BkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRp
b24tZ29wZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykgeworICAgIHZhciBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUobXNnKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5h
cHBlbmRDaGlsZChkaXYpOworfQorCitmdW5jdGlvbiBnbygpIHsKKyAgICB2YXIgc2V0TG9jYXRp
b24gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZyYW1lc1swXSwgImxvY2F0aW9u
Iikuc2V0OworICAgIHNldExvY2F0aW9uLmNhbGwoZnJhbWVzWzBdLmZyYW1lc1swXSwgInRhcmdl
dC1mb3ItbG9jYXRpb24uaHRtbCIpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVz
c2FnZSIsIGZ1bmN0aW9uKGUpIHsKKyAgICBsb2coZS5kYXRhKTsKKworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9LCBmYWxzZSk7
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
aWZyYW1lIHNyYz0icmVzb3VyY2VzL21pZGRsZS1mcmFtZS1mb3ItbG9jYXRpb24uaHRtbCI+Cis8
L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2
aXNpb24gMjc5MzczKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA3LTAxICBBbGV4ZXkgU2h2YXlrYSAg
PHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nl
c3NvcnMgLyB2YWx1ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhp
cy12YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1w
bGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFs
dWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jv
c3MtcmVhbG0uaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9jcmVhdGUtcmVhbG0uanM6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1cHBv
cnQvZHVtbXktaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93aW5kb3ctbG9jYXRp
b24tYW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3MtcmVhbG0tc2V0LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3Nz
LW9yaWdpbi1vYmplY3RzL3dpbmRvdy1sb2NhdGlvbi1hbmQtbG9jYXRpb24taHJlZi1jcm9zcy1y
ZWFsbS1zZXQuaHRtbDogQWRkZWQuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvY29tcGlsZS1ldmVudC1oYW5kbGVyLXNldHRp
bmdzLW9iamVjdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13
aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNm
b3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbDoKKyAgICAgICAgQWxsIHRoZXNlIGFy
ZSBjb25maXJtZWQgcHJvZ3Jlc3Npb25zLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlwZXMtY3Jvc3MtcmVhbG0tYWNj
ZXNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Bl
cmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlwZXMtY3Jvc3MtcmVhbG0tYWNjZXNz
Lmh0bWw6IEFkZGVkLgorCiAyMDIxLTA2LTI5ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
aWdhbGlhLmNvbT4KIAogICAgICAgICBDU1Mgc2Nyb2xsIHNuYXAgc2hvdWxkIGFsbG93IHNjcm9s
bGluZyB0byB0aGUgbWlkZGxlIG9mIHNuYXAgYXJlYXMgdGhhdCBvdmVyZmxvdyB0aGUgc25hcHBv
cnQKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvY29tcGlsZS1ldmVudC1oYW5kbGVyLXNldHRp
bmdzLW9iamVjdHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVu
dHMvY29tcGlsZS1ldmVudC1oYW5kbGVyLXNldHRpbmdzLW9iamVjdHMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNzkzNzMpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2NvbXBpbGUtZXZlbnQtaGFu
ZGxlci1zZXR0aW5ncy1vYmplY3RzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIAogUEFTUyBUaGUgRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBjcmVhdGVkIGlu
IHRoZSBSZWFsbSBvZiB0aGUgbm9kZSBkb2N1bWVudAogRkFJTCBUaGUgZW50cnkgc2V0dGluZ3Mg
b2JqZWN0IHdoaWxlIGV4ZWN1dGluZyB0aGUgY29tcGlsZWQgY2FsbGJhY2sgdmlhIFdlYiBJREwn
cyBpbnZva2UgbXVzdCBiZSB0aGF0IG9mIHRoZSBub2RlIGRvY3VtZW50IGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICIvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvcmVzb3VyY2VzL29w
ZW4td2luZG93Lmh0bWwiIGJ1dCBnb3QgIi9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50
cy9vcGVuLXdpbmRvdy5odG1sIgotRkFJTCBUaGUgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCB3
aGlsZSBleGVjdXRpbmcgdGhlIGNvbXBpbGVkIGNhbGxiYWNrIHZpYSBXZWIgSURMJ3MgaW52b2tl
IG11c3QgYmUgdGhhdCBvZiB0aGUgbm9kZSBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiaWZyYW1lIiBidXQgZ290ICJwYXJlbnQgZnJhbWUiCitQQVNTIFRoZSBpbmN1bWJlbnQgc2V0
dGluZ3Mgb2JqZWN0IHdoaWxlIGV4ZWN1dGluZyB0aGUgY29tcGlsZWQgY2FsbGJhY2sgdmlhIFdl
YiBJREwncyBpbnZva2UgbXVzdCBiZSB0aGF0IG9mIHRoZSBub2RlIGRvY3VtZW50CiAKSW5kZXg6
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBh
cGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2
YXNjcmlwdC1qb2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdp
dGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Byb21pc2Utam9iLWluY3VtYmVudC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDI3OTM3MykKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVs
LTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJvbWlzZS1qb2It
aW5jdW1iZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwxMyArMiwxMyBAQAog
CiBQQVNTIFNhbml0eSBjaGVjazogdGhpcyBhbGwgd29ya3MgYXMgZXhwZWN0ZWQgd2l0aCBubyBw
cm9taXNlcyBpbnZvbHZlZAogUEFTUyBGdWxmaWxsbWVudCBoYW5kbGVyIG9uIGZ1bGZpbGxlZCBw
cm9taXNlCi1GQUlMIEZ1bGZpbGxtZW50IGhhbmRsZXIgb24gZnVsZmlsbGVkIHByb21pc2UsIHVz
aW5nIGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGlu
Zy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2It
cXVldWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0
IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJv
Y2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVl
L3Jlc291cmNlcy9jdXJyZW50L2N1cnJlbnQuaHRtbCIKK0ZBSUwgRnVsZmlsbG1lbnQgaGFuZGxl
ciBvbiBmdWxmaWxsZWQgcHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBv
YmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlv
bi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5j
dW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRt
bC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0
aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50Lmh0bWwiCiBQ
QVNTIFJlamVjdGlvbiBoYW5kbGVyIG9uIHJlamVjdGVkIHByb21pc2UKLUZBSUwgUmVqZWN0aW9u
IGhhbmRsZXIgb24gcmVqZWN0ZWQgcHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0
aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhv
c3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRl
Z3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1q
b2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4
MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRp
b24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL2N1cnJlbnQvY3VycmVu
dC5odG1sIgorRkFJTCBSZWplY3Rpb24gaGFuZGxlciBvbiByZWplY3RlZCBwcm9taXNlLCB1c2lu
ZyBiYWNrdXAgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcv
cHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1
ZXVlL3Jlc291cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBn
b3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nl
c3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9w
cm9taXNlLWpvYi1pbmN1bWJlbnQuaHRtbCIKIFBBU1MgRnVsZmlsbG1lbnQgaGFuZGxlciBvbiBw
ZW5kaW5nLXRoZW4tZnVsZmlsbGVkIHByb21pc2UKLUZBSUwgRnVsZmlsbG1lbnQgaGFuZGxlciBv
biBwZW5kaW5nLXRoZW4tZnVsZmlsbGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQg
c2V0dGluZ3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vbG9j
YWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIv
aW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3Byb21p
c2Utam9iLWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9z
dDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVn
cmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9jdXJyZW50L2N1
cnJlbnQuaHRtbCIKK0ZBSUwgRnVsZmlsbG1lbnQgaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tZnVs
ZmlsbGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHN0
YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93
ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10
aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWluY3VtYmVudC1p
bmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBw
YXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWph
dmFzY3JpcHQtam9iLXF1ZXVlL3Byb21pc2Utam9iLWluY3VtYmVudC5odG1sIgogUEFTUyBSZWpl
Y3Rpb24gaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tcmVqZWN0ZWQgcHJvbWlzZQotRkFJTCBSZWpl
Y3Rpb24gaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tcmVqZWN0ZWQgcHJvbWlzZSwgdXNpbmcgYmFj
a3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nl
c3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9y
ZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJo
dHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5n
LW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3Vy
Y2VzL2N1cnJlbnQvY3VycmVudC5odG1sIgorRkFJTCBSZWplY3Rpb24gaGFuZGxlciBvbiBwZW5k
aW5nLXRoZW4tcmVqZWN0ZWQgcHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5n
cyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6
ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3Jh
dGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2It
aW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAv
aHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24t
d2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50Lmh0bWwi
CiBQQVNTIFRoZW5hYmxlIHJlc29sdXRpb24KLUZBSUwgVGhlbmFibGUgcmVzb2x1dGlvbiwgdXNp
bmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5n
L3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1x
dWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQg
Z290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9j
ZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUv
cmVzb3VyY2VzL2N1cnJlbnQvY3VycmVudC5odG1sIgorRkFJTCBUaGVuYWJsZSByZXNvbHV0aW9u
LCB1c2luZyBiYWNrdXAgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3Jp
cHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQt
am9iLXF1ZXVlL3Jlc291cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwi
IGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5n
L3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1x
dWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQuaHRtbCIKIApJbmRleDogTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LWNzcy1jcm9zcy1vcmln
aW4uaHR0cHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzkzNzMpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci9mZXRjaC1yZXF1ZXN0LWNzcy1jcm9zcy1vcmlnaW4uaHR0cHMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsNiBAQAogCiBQQVNTIHNldHVwIGdsb2JhbCBzdGF0ZQog
UEFTUyBNSU1FIGNoZWNraW5nIG9mIENTUyByZXNvdXJjZXMgZmV0Y2hlZCB2aWEgc2VydmljZSB3
b3JrZXIgd2hlbiBDb250ZW50LVR5cGUgaXMgbm90IHNldC4KLUZBSUwgU2FtZS1vcmlnaW4gcG9s
aWN5IGZvciBhY2Nlc3MgdG8gQ1NTIHJlc291cmNlcyBmZXRjaGVkIHZpYSBzZXJ2aWNlIHdvcmtl
ciBhc3NlcnRfdGhyb3dzX2RvbTogZnVuY3Rpb24gIigpID0+IHsKLSAgICBmLmNvbnRlbnREb2N1
bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5jc3NUZXh0OwotICB9IiB0aHJldyBhbiBl
eGNlcHRpb24gZnJvbSB0aGUgd3JvbmcgZ2xvYmFsCitGQUlMIFNhbWUtb3JpZ2luIHBvbGljeSBm
b3IgYWNjZXNzIHRvIENTUyByZXNvdXJjZXMgZmV0Y2hlZCB2aWEgc2VydmljZSB3b3JrZXIgcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiU2VjdXJp
dHlFcnJvcjogTm90IGFsbG93ZWQgdG8gYWNjZXNzIGNyb3NzLW9yaWdpbiBzdHlsZXNoZWV0Igog
UEFTUyBjbGVhbnVwIGdsb2JhbCBzdGF0ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJh
bnNmb3JtLXJlYWRhYmxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRy
YW5zZm9ybS1yZWFkYWJsZS5odG1sCShyZXZpc2lvbiAyNzkzNzMpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9z
ZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOSArOSwx
MCBAQAogICAgICAgICA8aWZyYW1lIHNyYz0iLiIgaWQ9ImZyYW1lIj48L2lmcmFtZT4KICAgICAg
ICAgPHNjcmlwdD4KIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IGZy
YW1lRE9NRXhjZXB0aW9uID0gZnJhbWUuY29udGVudFdpbmRvdy5ET01FeGNlcHRpb247CiAgICAg
Y29uc3QgdHJhbnNmb3JtID0gbmV3IGZyYW1lLmNvbnRlbnRXaW5kb3cuU0ZyYW1lVHJhbnNmb3Jt
OwogICAgIGZyYW1lLnJlbW92ZSgpOwotICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3Rh
dGVFcnJvciIsICgpID0+IHRyYW5zZm9ybS5yZWFkYWJsZSk7CisgICAgYXNzZXJ0X3Rocm93c19k
b20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnJhbWVET01FeGNlcHRpb24sICgpID0+IHRyYW5zZm9y
bS5yZWFkYWJsZSk7CiB9KTsKICAgICAgICA8L3NjcmlwdD4KICAgICA8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432711</attachid>
            <date>2021-07-01 11:26:42 -0700</date>
            <delta_ts>2021-07-02 07:46:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225997-20210701212640.patch</filename>
            <type>text/plain</type>
            <size>128756</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzk0NzIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA3LTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1
ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90
by1jaGFpbi1wdXQuanM6CisgICAgICAgICogc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2Jq
ZWN0LWluLWljLTIuanM6IEFkZGVkLgorCiAyMDIxLTA2LTMwICBTYWFtIEJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFR1cm4gb2ZmIGRhdGEgSUNzIGJ5IGRlZmF1bHQKSW5k
ZXg6IEpTVGVzdHMvc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXByb3RvLWNoYWluLXB1dC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90by1jaGFpbi1wdXQu
anMJKHJldmlzaW9uIDI3OTM3MykKKysrIEpTVGVzdHMvc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXBy
b3RvLWNoYWluLXB1dC5qcwkod29ya2luZyBjb3B5KQpAQCAtOTksOCArOTksOCBAQCBmdW5jdGlv
biBnZXRCYXNlcygpIHsKICgoKSA9PiB7CiAgICAgZm9yIChsZXQgYmFzZSBvZiBnZXRCYXNlcygp
KSB7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpCi0gICAgICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiB7IGJhc2UuY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPSB7fTsg
fSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4i
KTsKLSAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0b21BY2Nl
c3Nvckdsb2JhbE9iamVjdCIsIHt9KSk7CisgICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7
IGJhc2UuY3VzdG9tQWNjZXNzb3JSZWFkT25seSA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0
ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOworICAgICAgICBhc3NlcnQoIVJl
ZmxlY3Quc2V0KE9iamVjdChiYXNlKSwgImN1c3RvbUFjY2Vzc29yUmVhZE9ubHkiLCB7fSkpOwog
ICAgIH0KIH0pKCk7CiAKQEAgLTEwOCwyMSArMTA4LDIxIEBAIGZ1bmN0aW9uIGdldEJhc2VzKCkg
ewogKCgpID0+IHsKICAgICBmb3IgKGxldCBwcmltaXRpdmUgb2YgcHJpbWl0aXZlcykgewogICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQotICAgICAgICAgICAgc2hvdWxkVGhy
b3coKCkgPT4geyBwcmltaXRpdmUuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB7fTsgfSwgIlR5
cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAg
ICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgcHJpbWl0aXZlLmN1c3RvbVZhbHVlTm9TZXR0
ZXIgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBw
cm9wZXJ0eS4iKTsKICAgICB9CiAKICAgICBmb3IgKGxldCBvYmplY3Qgb2YgZ2V0T2JqZWN0cygp
KSB7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpCi0gICAgICAgICAgICBv
YmplY3QuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB7fTsKLSAgICAgICAgYXNzZXJ0KG9iamVj
dC5oYXNPd25Qcm9wZXJ0eSgiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiKSk7Ci0gICAgICAgIGFz
c2VydChSZWZsZWN0LnNldChvYmplY3QsICJjdXN0b21WYWx1ZUdsb2JhbE9iamVjdCIsIHt9KSk7
CisgICAgICAgICAgICBvYmplY3QuY3VzdG9tVmFsdWVOb1NldHRlciA9IHt9OworICAgICAgICBh
c3NlcnQob2JqZWN0Lmhhc093blByb3BlcnR5KCJjdXN0b21WYWx1ZU5vU2V0dGVyIikpOworICAg
ICAgICBhc3NlcnQoUmVmbGVjdC5zZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVOb1NldHRlciIsIHt9
KSk7CiAgICAgfQogCiAgICAgZm9yIChsZXQgb2JqZWN0IG9mIGdldE9iamVjdHMoKSkgewogICAg
ICAgICBPYmplY3QucHJldmVudEV4dGVuc2lvbnMob2JqZWN0KTsKICAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDA7ICsraSkgewotICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBv
YmplY3QuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1w
dGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKLSAgICAgICAgICAgIGFzc2Vy
dCghUmVmbGVjdC5zZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiLCB7fSkpOwor
ICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBvYmplY3QuY3VzdG9tVmFsdWVOb1NldHRl
ciA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHBy
b3BlcnR5LiIpOworICAgICAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChvYmplY3QsICJjdXN0
b21WYWx1ZU5vU2V0dGVyIiwge30pKTsKICAgICAgICAgfQogICAgIH0KIH0pKCk7CkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy9nZXR0ZXItc2V0dGVyLWdsb2JhbG9iamVjdC1pbi1pYy0yLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2JqZWN0LWluLWlj
LTIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvZ2V0dGVyLXNldHRlci1nbG9i
YWxvYmplY3QtaW4taWMtMi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACitmdW5j
dGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJC
YWQgYXNzZXJ0aW9uISIpOworfQorCitjb25zdCBjcmVhdGVDdXN0b20gPSBgCisgICAgdmFyIGN1
c3RvbSA9ICR2bS5jcmVhdGVDdXN0b21UZXN0R2V0dGVyU2V0dGVyKCk7CitgOworCisoZnVuY3Rp
b24gZGlyZWN0Q3VzdG9tQWNjZXNzb3JHZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJp
bmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVyLmN1c3RvbTsK
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KG90
aGVyQ3VzdG9tLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID09PSBvdGhlcik7CisgICAgfQor
fSkoKTsKKworKGZ1bmN0aW9uIGRpcmVjdEN1c3RvbVZhbHVlR2V0KCkgeworICAgIGNvbnN0IG90
aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b20gPSBv
dGhlci5jdXN0b207CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAg
ICAgIGFzc2VydChvdGhlckN1c3RvbS5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9PT0gb3RoZXIp
OworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBkaXJlY3RDdXN0b21BY2Nlc3NvclNldCgpIHsK
KyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90
aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7
IGkrKykgeworICAgICAgICBjb25zdCB2YWx1ZSA9IHt9OworICAgICAgICBvdGhlckN1c3RvbS5j
dXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCA9IHZhbHVlOworICAgICAgICBhc3NlcnQodmFsdWUu
cmVzdWx0ID09PSBvdGhlcik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIGRpcmVjdEN1c3Rv
bVZhbHVlU2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7
CisgICAgY29uc3Qgb3RoZXJDdXN0b20gPSBvdGhlci5jdXN0b207CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGNvbnN0IHZhbHVlID0ge307CisgICAgICAg
IG90aGVyQ3VzdG9tLmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID0gdmFsdWU7CisgICAgICAgIGFz
c2VydCh2YWx1ZS5yZXN1bHQgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24g
cHJvdG90eXBlQ2hhaW5DdXN0b21BY2Nlc3NvckdldCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1
blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tSGVpciA9IE9iamVj
dC5jcmVhdGUob3RoZXIuY3VzdG9tKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBp
KyspIHsKKyAgICAgICAgYXNzZXJ0KG90aGVyQ3VzdG9tSGVpci5jdXN0b21BY2Nlc3Nvckdsb2Jh
bE9iamVjdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBwcm90b3R5cGVD
aGFpbkN1c3RvbVZhbHVlR2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0
ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b21IZWlyID0gT2JqZWN0LmNyZWF0ZShvdGhl
ci5jdXN0b20pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAg
ICBhc3NlcnQob3RoZXJDdXN0b21IZWlyLmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID09PSBvdGhl
cik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIHByb3RvdHlwZUNoYWluQ3VzdG9tQWNjZXNz
b3JTZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAg
ICBjb25zdCBvdGhlckN1c3RvbUhlaXIgPSBPYmplY3QuY3JlYXRlKG90aGVyLmN1c3RvbSk7CisK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGNvbnN0IHZhbHVl
ID0ge307CisgICAgICAgIG90aGVyQ3VzdG9tSGVpci5jdXN0b21BY2Nlc3Nvckdsb2JhbE9iamVj
dCA9IHZhbHVlOworICAgICAgICBhc3NlcnQodmFsdWUucmVzdWx0ID09PSBvdGhlcik7CisgICAg
fQorfSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5MzczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU5IEBACisyMDIxLTA3LTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1ZXMgd2l0
aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBKdXN0IGxpa2UgSlMgYnVpbHQtaW5zLCBnZXR0ZXIgLyBz
ZXR0ZXIgZnVuY3Rpb25zIG9mIFdlYklETCBhdHRyaWJ1dGVzIGFyZSBjcmVhdGVkIGluIHJlYWxt
CisgICAgICAgIG9mIHRoZWlyIGhvbGRlciBpbnRlcmZhY2UgWzFdWzJdLCB3aGljaCBpcyB0aGVp
ciBfY3VycmVudF8gcmVhbG0gZm9yIHRocm93aW5nIGFuIGVycm9yIFszXS4KKworICAgICAgICBX
aXRoIHRoaXMgcGF0Y2gsIGN1c3RvbSBwcm9wZXJ0aWVzIGdldCBjb3JyZWN0IGdsb2JhbCBvYmpl
Y3QgaW5zdGVhZCBvZiBsZXhpY2FsLCBpbmNsdWRpbmcKKyAgICAgICAgd2hlbiBpbmxpbmUgY2Fj
aGVkLCBhbGlnbmluZyB0aGVtIHdpdGggZnVuY3Rpb25zIGFuZCByZWd1bGFyIGFjY2Vzc29ycy4K
KworICAgICAgICBUaGUgbGF0dGVyIGFsbG93ZWQgSlMgYnVpbHQtaW5zIGxpa2UgU3ltYm9sOjpk
ZXNjcmlwdGlvbiB0byBzd2l0Y2ggdG8gQ3VzdG9tQWNjZXNzb3IsIHdoaWNoCisgICAgICAgIGlz
IHNsaWdodGx5IG1vcmUgZWZmaWNpZW50IHRvIGNhbGwgZnJvbSBDKyssIGRvZXNuJ3QgbmVlZCBy
ZWlmaWNhdGlvbiBvbiBmaXJzdCBhY2Nlc3MsIGFuZAorICAgICAgICBoYXMgbmljZXIgc2lnbmF0
dXJlLgorCisgICAgICAgIEFsc28sIHJlbmFtZXMgV0FTTSBhY2Nlc3NvcnMgdG8gZHJvcCAiZnVu
YyIgYW5kIHJlbW92ZXMgdW51c2VkIGZ1bmN0aW9uIGxlbmd0aCBwYXJhbWV0ZXIuCisKKyAgICAg
ICAgWzFdOiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLWdl
dHRlciAoc3RlcCAyKQorICAgICAgICBbMl06IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJp
ZGwvI2Rmbi1hdHRyaWJ1dGUtc2V0dGVyIChzdGVwIDUpCisgICAgICAgIFszXTogaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZWNtYXNjcmlwdC10aHJvdworCisgICAgICAgICogYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbCk6CisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpnbG9iYWxPYmplY3RP
ZkNsb3Nlc3RDb2RlQmxvY2spOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVT
bG93KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHA6CisgICAgICAgIChKU0M6
OlByb3BlcnR5U2xvdDo6Y3VzdG9tR2V0dGVyIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmdldFZhbHVlIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5j
cHA6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorCiAyMDIx
LTA2LTI4ICBZaWppYSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYSBuZXcgcGF0dGVybiB0byBpbnN0cnVjdGlvbiBzZWxlY3RvciB0byB1c2UgQklDIHN1cHBv
cnRlZCBieSBBUk02NApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3Rh
YmxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJs
ZQkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNo
X3RhYmxlCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMSArOTQsNiBAQCB3aGlsZSAoPElOPikgewog
ICAgICAgICBpZiAoJGF0dCA9fiBtL0Z1bmN0aW9uLykgewogICAgICAgICAgICAgcHVzaChAdmFs
dWVzLCB7ICJ0eXBlIiA9PiAiUHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uIiwgImZ1bmN0aW9u
IiA9PiAkdmFsLCAicGFyYW1zIiA9PiAobGVuZ3RoKCRwYXJhbSkgPyAkcGFyYW0gOiAiIiksICJp
bnRyaW5zaWMiID0+IChsZW5ndGgoJGludHJpbnNpYykgPyAkaW50cmluc2ljIDogIk5vSW50cmlu
c2ljIikgfSk7CiAgICAgICAgICAgICAjcHJpbnRmIFNUREVSUiAiV0FSTklORzogTnVtYmVyIG9m
IGFyZ3VtZW50cyBtaXNzaW5nIGZvciAka2V5LyR2YWxcbiIgaWYgKGxlbmd0aCgkcGFyYW0pID09
IDApOwotICAgICAgICB9IGVsc2lmICgkYXR0ID1+IG0vQWNjZXNzb3IvKSB7Ci0gICAgICAgICAg
ICBteSAkZ2V0ID0gJHZhbDsKLSAgICAgICAgICAgIG15ICRwdXQgPSAibnVsbHB0ciI7Ci0gICAg
ICAgICAgICAkaGFzU2V0dGVyID0gInRydWUiOwotICAgICAgICAgICAgcHVzaChAdmFsdWVzLCB7
ICJ0eXBlIiA9PiAiUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIiwgImdldCIgPT4gJGdldCwg
InB1dCIgPT4gJHB1dCB9KTsKICAgICAgICAgfSBlbHNpZiAoJGF0dCA9fiBtL0NlbGxQcm9wZXJ0
eS8pIHsKICAgICAgICAgICAgIG15ICRwcm9wZXJ0eSA9ICR2YWw7CiAgICAgICAgICAgICBwdXNo
KEB2YWx1ZXMsIHsgInR5cGUiID0+ICJQcm9wZXJ0eUF0dHJpYnV0ZTo6Q2VsbFByb3BlcnR5Iiwg
InByb3BlcnR5IiA9PiAkcHJvcGVydHkgfSk7CkBAIC0zMTAsMTEgKzMwNSw2IEBAIHN1YiBvdXRw
dXQoKSB7CiAgICAgICAgICAgICAkZmlyc3RWYWx1ZSA9ICR2YWx1ZXNbJGldeyJmdW5jdGlvbiJ9
OwogICAgICAgICAgICAgJHNlY29uZFZhbHVlID0gJHZhbHVlc1skaV17InBhcmFtcyJ9OwogICAg
ICAgICAgICAgJGludHJpbnNpYyA9ICR2YWx1ZXNbJGldeyJpbnRyaW5zaWMifTsKLSAgICAgICAg
fSBlbHNpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vz
c29yIikgewotICAgICAgICAgICAgJGZpcnN0Q2FzdFN0ciA9ICJzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4iOwotICAgICAgICAgICAgJHNlY29uZENhc3RTdHIgPSAic3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+IjsKLSAgICAgICAgICAgICRmaXJzdFZhbHVlID0gJHZhbHVlc1sk
aV17ImdldCJ9OwotICAgICAgICAgICAgJHNlY29uZFZhbHVlID0gJHZhbHVlc1skaV17InB1dCJ9
OwogICAgICAgICB9IGVsc2lmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJQcm9wZXJ0eUF0dHJp
YnV0ZTo6UHJvcGVydHkiKSB7CiAgICAgICAgICAgICAkZmlyc3RDYXN0U3RyID0gInN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPiI7CiAgICAgICAgICAgICAkc2Vjb25kQ2Fz
dFN0ciA9ICJzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4iOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkocmV2
aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDE2LDcgKzE0MTYsNiBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqc3Rh
dGUuaml0OwogICAgIFZNJiB2bSA9IHN0YXRlLm1fdm07CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBqaXQuY29kZUJsb2NrKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHN0YXRlLm1fZ2xvYmFsT2JqZWN0OwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gc3RhdGUubV9l
Y21hTW9kZTsKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3RhdGUuc3R1Yklu
Zm87CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gc3RhdGUudmFsdWVSZWdzOwpAQCAtMTYx
OSw2ICsxNjE4LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQog
ICAgICAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gbG9hZGVkVmFsdWVHUFIpOwogICAgICAgICAg
ICAgQVNTRVJUKG1fdHlwZSAhPSBTZXR0ZXIgfHwgdmFsdWVSZWdzUGF5bG9hZEdQUiAhPSBsb2Fk
ZWRWYWx1ZUdQUik7CiAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBzdGF0ZS5tX2dsb2JhbE9iamVjdDsKKwogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgSlMgY2Fs
bCB1c2luZyBhIEpTIGNhbGwgaW5saW5lIGNhY2hlLiBBc3N1bWUgdGhhdDoKICAgICAgICAgICAg
IC8vCiAgICAgICAgICAgICAvLyAtIFNQIGlzIGFsaWduZWQgYW5kIHJlcHJlc2VudHMgdGhlIGV4
dGVudCBvZiB0aGUgY2FsbGluZyBjb21waWxlcidzIHN0YWNrIHVzYWdlLgpAQCAtMTc1NCw2ICsx
NzU1LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDdXN0b21WYWx1ZUdldHRlciB8fCBtX3R5cGUgPT0gQ3Vz
dG9tQWNjZXNzb3JHZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IG1fdHlw
ZSA9PSBDdXN0b21BY2Nlc3NvclNldHRlcik7CiAgICAgICAgICAgICBBU1NFUlQoIWRvZXNQcm9w
ZXJ0eVN0b3JhZ2VMb2Fkcyk7IC8vIE9yIHdlIG5lZWQgYW4gZXh0cmEgcmVnaXN0ZXIuIFdlIHJl
bHkgb24gcHJvcGVydHlPd25lckdQUiBiZWluZyBjb3JyZWN0IGhlcmUuCiAKKyAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBoYXNBbHRlcm5hdGVCYXNlKCkgPyBhbHRl
cm5hdGVCYXNlKCktPmdsb2JhbE9iamVjdCh2bSkgOiBzdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0
KCk7CisKICAgICAgICAgICAgIC8vIE5lZWQgdG8gbWFrZSByb29tIGZvciB0aGUgQyBjYWxsIHNv
IGFueSBvZiBvdXIgc3RhY2sgc3BpbGxhZ2UgaXNuJ3Qgb3ZlcndyaXR0ZW4uIEl0J3MKICAgICAg
ICAgICAgIC8vIGhhcmQgdG8gdHJhY2sgaWYgc29tZW9uZSBkaWQgc3BpbGxhZ2Ugb3Igbm90LCBz
byB3ZSBqdXN0IGFzc3VtZSB0aGF0IHdlIGFsd2F5cyBuZWVkCiAgICAgICAgICAgICAvLyB0byBt
YWtlIHNvbWUgc3BhY2UgaGVyZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1
ZGUgIkxMSW50UENSYW5nZXMuaCIKICNpbmNsdWRlICJWTUVudHJ5UmVjb3JkLmgiCisjaW5jbHVk
ZSAiVk1FbnRyeVNjb3BlLmgiCiAjaW5jbHVkZSAiV2FzbUNvbnRleHRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiV2FzbUluc3RhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
CkBAIC0yNDQsNiArMjQ1LDMwIEBAIFNvdXJjZU9yaWdpbiBDYWxsRnJhbWU6OmNhbGxlclNvdXJj
ZU9yaWcKICAgICByZXR1cm4gc291cmNlT3JpZ2luOwogfQogCitKU0dsb2JhbE9iamVjdCogQ2Fs
bEZyYW1lOjpnbG9iYWxPYmplY3RPZkNsb3Nlc3RDb2RlQmxvY2soVk0mIHZtKQoreworICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBudWxscHRyOworICAgIFN0YWNrVmlzaXRvcjo6
dmlzaXQodGhpcywgdm0sIFsmXShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIHsKKyAgICAgICAgaWYg
KHZpc2l0b3ItPmlzV2FzbUZyYW1lKCkpIHsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IHZp
c2l0b3ItPmNhbGxGcmFtZSgpLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgICAg
IHJldHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6RG9uZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoYXV0byogY29kZUJsb2NrID0gdmlzaXRvci0+Y29kZUJsb2NrKCkpIHsKKyAgICAgICAgICAg
IGlmIChjb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gQ29kZVR5cGU6OkZ1bmN0aW9uQ29kZSAmJiBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpKS0+aXNCdWlsdGluRnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tW
aXNpdG9yOjpTdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6
OlN0YXR1czo6RG9uZTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQodmlzaXRvci0+Y29kZVR5
cGUoKSA9PSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZTo6TmF0aXZlKTsKKyAgICAgICAg
cmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVzOjpDb250aW51ZTsKKyAgICB9KTsKKyAgICBpZiAo
Z2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0OworICAgIGlmICh2bS5l
bnRyeVNjb3BlKQorICAgICAgICByZXR1cm4gdm0uZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFN0cmluZyBDYWxsRnJhbWU6OmZyaWVuZGx5RnVu
Y3Rpb25OYW1lKCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9j
aygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuaAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDcgQEAgbmFtZXNw
YWNlIEpTQyAgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDYWxsRnJhbWUqIGNhbGxlckZy
YW1lKEVudHJ5RnJhbWUqJikgY29uc3Q7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU291
cmNlT3JpZ2luIGNhbGxlclNvdXJjZU9yaWdpbihWTSYpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0T2ZDbG9zZXN0Q29kZUJsb2NrKFZNJik7
CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBjYWxsZXJGcmFtZU9mZnNldCgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihDYWxsZXJGcmFtZUFuZFBDLCBjYWxsZXJGcmFtZSk7IH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBh
cmUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yUHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSk7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgY29uc3QgQ2xh
c3NJbmZvIEludGxDb2xsYXRvclByb3RvdHlwZTo6cwogCiAvKiBTb3VyY2UgZm9yIEludGxDb2xs
YXRvclByb3RvdHlwZS5sdXQuaAogQGJlZ2luIGNvbGxhdG9yUHJvdG90eXBlVGFibGUKLSAgY29t
cGFyZSAgICAgICAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlICAgICAgICBE
b250RW51bXxBY2Nlc3NvcgorICBjb21wYXJlICAgICAgICAgIEludGxDb2xsYXRvclByb3RvdHlw
ZUdldHRlckNvbXBhcmUgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAg
IHJlc29sdmVkT3B0aW9ucyAgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyAgRG9udEVudW18RnVuY3Rpb24gMAogQGVuZAogKi8KQEAgLTEwNSwxNCArMTA1LDE0IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsQ29sbGF0b3JGdW4KICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+Y29tcGFyZVN0cmluZ3MoZ2xv
YmFsT2JqZWN0LCB4Vmlld1dpdGhTdHJpbmcudmlldywgeVZpZXdXaXRoU3RyaW5nLnZpZXcpKSk7
CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0
ZXJDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxDb2xsYXRvclByb3RvdHlwZUdl
dHRlckNvbXBhcmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IC8vIDEwLjMuMyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIChFQ01BLTQwMiAyLjAp
CiAgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0b3Igb2JqZWN0LgotICAgIElu
dGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNE
eW5hbWljQ2FzdDxJbnRsQ29sbGF0b3IqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmICghY29sbGF0b3IpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJvdG90eXBl
LmNvbXBhcmUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgQ29sbGF0b3IiX3MpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOworc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2VUb1BhcnRzKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZUZ1bmNGb3JtYXRUb1BhcnRzKTsKQEAgLTUzLDcgKzUzLDcgQEAgY29uc3QgQ2xhc3NJbmZvIElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdAogCiAvKiBTb3VyY2UgZm9yIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5sdXQuaAogQGJlZ2luIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlVGFibGUKLSAg
Zm9ybWF0ICAgICAgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdCAgICAgICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgZm9ybWF0ICAgICAgICAgICAg
ICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCAgICAgICAgICAgICAg
RG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICAgZm9ybWF0UmFuZ2UgICAgICAgICAg
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMgogICBmb3JtYXRUb1BhcnRzICAgICAgICAgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CiAgIHJlc29sdmVkT3B0aW9ucyAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5j
UmVzb2x2ZWRPcHRpb25zICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKQEAgLTExMywxNCArMTEz
LDE0IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsRGF0ZVRpbWVGb3IKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3JtYXQtPmZvcm1hdChnbG9i
YWxPYmplY3QsIHZhbHVlKSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBkdGYgYmUg
dGhpcyBEYXRlVGltZUZvcm1hdCBvYmplY3QuCi0gICAgYXV0byogZHRmID0gSW50bERhdGVUaW1l
Rm9ybWF0Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBkdGYgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnVud3JhcEZv
ck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIC8vIDIuIFJldHVybklm
QWJydXB0KGR0ZikuCiAgICAgaWYgKFVOTElLRUxZKCFkdGYpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2Nh
bGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNiArMzQsMTYgQEAgbmFtZXNw
YWNlIEpTQyB7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJv
dG90eXBlRnVuY01heGltaXplKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKElu
dGxMb2NhbGVQcm90b3R5cGVGdW5jTWluaW1pemUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUZ1bmNUb1N0cmluZyk7Ci1zdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUpOwot
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckNhbGVuZGFyKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbik7Ci1zdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlKTsKLXN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJO
dW1lcmljKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0pOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlKTsKLXN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJTY3JpcHQpOwotc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJl
Z2lvbik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyQmFzZU5hbWUpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50
bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QpOworc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlv
bik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBl
R2V0dGVySG91ckN5Y2xlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0pOworc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1
YWdlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJTY3JpcHQpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbik7CiAKIH0KIApAQCAtNTgsMTYgKzU4LDE2IEBAIGNv
bnN0IENsYXNzSW5mbyBJbnRsTG9jYWxlUHJvdG90eXBlOjpzX2kKICAgbWF4aW1pemUgICAgICAg
ICBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01heGltaXplICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAwCiAgIG1pbmltaXplICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNaW5pbWl6
ZSAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAogICB0b1N0cmluZyAgICAgICAgIEludGxM
b2NhbGVQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAK
LSAgYmFzZU5hbWUgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUgICAg
ICAgICBEb250RW51bXxBY2Nlc3NvcgotICBjYWxlbmRhciAgICAgICAgIEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJDYWxlbmRhciAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIGNhc2VGaXJz
dCAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCAgICAgICAgRG9udEVu
dW18QWNjZXNzb3IKLSAgY29sbGF0aW9uICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
Q29sbGF0aW9uICAgICAgICBEb250RW51bXxBY2Nlc3NvcgotICBob3VyQ3ljbGUgICAgICAgIElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUgICAgICAgIERvbnRFbnVtfEFjY2Vzc29y
Ci0gIG51bWVyaWMgICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMgICAg
ICAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgbnVtYmVyaW5nU3lzdGVtICBJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtICBEb250RW51bXxBY2Nlc3NvcgotICBsYW5ndWFn
ZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSAgICAgICAgIERvbnRF
bnVtfEFjY2Vzc29yCi0gIHNjcmlwdCAgICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
clNjcmlwdCAgICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgcmVnaW9uICAgICAgICAgICBJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uICAgICAgICAgICBEb250RW51bXxBY2Nlc3Nv
cgorICBiYXNlTmFtZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZSAg
ICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGNhbGVuZGFyICAgICAg
ICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyICAgICAgICAgRG9udEVudW18UmVh
ZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgY2FzZUZpcnN0ICAgICAgICBJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyQ2FzZUZpcnN0ICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3Nv
cgorICBjb2xsYXRpb24gICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24g
ICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGhvdXJDeWNsZSAgICAg
ICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSAgICAgICAgRG9udEVudW18UmVh
ZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbnVtZXJpYyAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyTnVtZXJpYyAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3Nv
cgorICBudW1iZXJpbmdTeXN0ZW0gIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdT
eXN0ZW0gIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGxhbmd1YWdlICAgICAg
ICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlICAgICAgICAgRG9udEVudW18UmVh
ZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgc2NyaXB0ICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyU2NyaXB0ICAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3Nv
cgorICByZWdpb24gICAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24gICAg
ICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiBAZW5kCiAqLwogCkBAIC0x
NDIsMTIgKzE0MiwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3Rv
CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90
eXBlLmJhc2VOYW1lCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlw
ZUdldHRlckJhc2VOYW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJCYXNlTmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50
bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2Nh
bGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuYmFzZU5hbWUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMTU2LDEyICsx
NTYsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAv
LyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jYWxl
bmRhcgotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJD
YWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
Q2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1
dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5M
b2NhbGUucHJvdG90eXBlLmNhbGVuZGFyIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9i
amVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTE3MCwxMiArMTcwLDEyIEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FzZUZpcnN0Ci1K
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJz
dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
K0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZp
cnN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBs
b2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxl
LnByb3RvdHlwZS5jYXNlRmlyc3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMTg0LDEyICsxODQsMTIgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb24KLUpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2Fs
ZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJv
dG90eXBlLmNvbGxhdGlvbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5p
dGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0xOTgsMTIgKzE5OCwxMiBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZQotSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0g
anNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5
cGUuaG91ckN5Y2xlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTIxMiwxMiArMjEyLDEyIEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubnVtZXJpYwotSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byog
bG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmlj
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExv
Y2FsZSJfcyk7CiAKQEAgLTIyNSwxMiArMjI1LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1J
bnRsLkxvY2FsZS5wcm90b3R5cGUubnVtYmVyaW5nU3lzdGVtCi1KU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUg
PSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3Rv
dHlwZS5udW1iZXJpbmdTeXN0ZW0gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMjM5LDEyICsyMzksMTIgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5sYW5ndWFnZQotSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9
IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90
eXBlLmxhbmd1YWdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTI1MywxMiArMjUzLDEyIEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuc2NyaXB0Ci1KU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0
PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9j
YWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5zY3JpcHQgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxl
Il9zKTsKIApAQCAtMjY3LDEyICsyNjcsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKElu
dGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwu
TG9jYWxlLnByb3RvdHlwZS5yZWdpb24KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2Nh
bGVQcm90b3R5cGVHZXR0ZXJSZWdpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
ICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnJlZ2lvbiBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZUdldHRlckZvcm1hdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9w
dGlvbnMpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bE51bWJlckZvcm1h
dEZ1bmNGb3JtYXQpOwpAQCAtNDksNyArNDksNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwCiAKIC8qIFNvdXJjZSBmb3IgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5sdXQuaAogQGJlZ2luIG51bWJlckZvcm1hdFByb3RvdHlwZVRhYmxlCi0gIGZvcm1hdCAgICAg
ICAgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCAgICAgICAgIERvbnRF
bnVtfEFjY2Vzc29yCisgIGZvcm1hdCAgICAgICAgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZUdldHRlckZvcm1hdCAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAg
IGZvcm1hdFRvUGFydHMgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1Bh
cnRzICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgcmVzb2x2ZWRPcHRpb25zICBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAgRG9udEVudW18RnVuY3Rpb24gMAog
QGVuZApAQCAtMTA4LDE0ICsxMDgsMTQgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxO
dW1iZXJGb3JtYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3Jt
YXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3Jt
YXQucHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBuZiBiZSB0
aGlzIE51bWJlckZvcm1hdCBvYmplY3QuCi0gICAgYXV0byogbmYgPSBJbnRsTnVtYmVyRm9ybWF0
Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBhdXRvKiBuZiA9IEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0
aW9ucyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChVTkxJS0VMWSghbmYpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcykp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Nyw5ICs1Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICBzZXRGbG9hdDY0ICAgICAgICAgICAgZGF0
YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAg
IDIgIERhdGFWaWV3U2V0RmxvYXQ2NAogICBzZXRCaWdJbnQ2NCAgICAgICAgICAgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRCaWdJbnQ2NCAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKICAg
c2V0QmlnVWludDY0ICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0QmlnVWludDY0ICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIGJ1ZmZlciAgICAgICAgICAgICAgICBkYXRh
Vmlld1Byb3RvR2V0dGVyQnVmZmVyICAgICAgICAgICAgRG9udEVudW18QWNjZXNzb3IgICAgICAg
MAotICBieXRlTGVuZ3RoICAgICAgICAgICAgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgg
ICAgICAgIERvbnRFbnVtfEFjY2Vzc29yICAgICAgIDAKLSAgYnl0ZU9mZnNldCAgICAgICAgICAg
IGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0ICAgICAgICBEb250RW51bXxBY2Nlc3NvciAg
ICAgICAwCisgIGJ1ZmZlciAgICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVy
ICAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgYnl0ZUxlbmd0
aCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoICAgICAgICBEb250RW51
bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBieXRlT2Zmc2V0ICAgICAgICAgICAgZGF0YVZp
ZXdQcm90b0dldHRlckJ5dGVPZmZzZXQgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFj
Y2Vzc29yCiBAZW5kCiAqLwogCkBAIC04Myw5ICs4Myw5IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGRhdGFWaWUKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRh
dGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihkYXRhVmlld1Byb3RvRnVuY1NldEJpZ0ludDY0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9GdW5jU2V0QmlnVWludDY0KTsKLXN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIpOwotc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgp
Owotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ5
dGVPZmZzZXQpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoZGF0YVZpZXdQcm90
b0dldHRlckJ1ZmZlcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihkYXRhVmll
d1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
UihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCk7CiAKIH0KIApAQCAtMjIzLDI0ICsyMjMs
MjQgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZwogCiBJR05PUkVf
Q0xBTkdfV0FSTklOR1NfQkVHSU4oIm1pc3NpbmctcHJvdG90eXBlcyIpCiAKLUpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpT
RGF0YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNEYXRhVmlldyog
dmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3Rz
IHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodmlldy0+cG9zc2libHlTaGFyZWRKU0J1ZmZlcihn
bG9iYWxPYmplY3QpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1By
b3RvR2V0dGVyQnl0ZUxlbmd0aCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3Rv
R2V0dGVyQnl0ZUxlbmd0aCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWlj
Q2FzdDxKU0RhdGFWaWV3Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnl0ZUxlbmd0aCBleHBlY3RzIHx0aGlzfCB0byBi
ZSBhIERhdGFWaWV3IG9iamVjdCIpOwogICAgIGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCkBAIC0y
NDksMTIgKzI0OSwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dl
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwog
fQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZz
ZXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTRGF0YVZpZXcq
IHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF2aWV3KQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcu
cHJvdG90eXBlLmJ5dGVPZmZzZXQgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmpl
Y3QiKTsKICAgICBpZiAodmlldy0+aXNEZXRhY2hlZCgpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OTEsOSArNzkxLDYgQEAgYm9vbCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhKU0dsb2JhbE9iagog
ICAgICAgICAgICAgICAgIGhhc1Byb3BlcnR5ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGVzID0gZW50cnktPnZhbHVlLT5hdHRyaWJ1dGVzKCk7CiAKLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgd3JpdGFibGUgYWNjZXNzb3JzIGFyZSBpbnRyb2R1
Y2VkIHRvIHN0YXRpYyBoYXNoIHRhYmxlcy4KLSAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRl
cyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcikKLSAgICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHk7CiAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIGFmdGVyIHdlIHN0b3AgZGVmYXVsdGluZyB0byBDdXN0b21W
YWx1ZSBpbiBzdGF0aWMgaGFzaCB0YWJsZXMuCiAgICAgICAgICAgICAgICAgaWYgKCEoYXR0cmli
dXRlcyAmIChQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6QnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0YW50
KSkpCiAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbVZhbHVlOwpAQCAtODIyLDcgKzgxOSw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGlu
ZVNsb3coSlNHbG9iYWxPYmoKICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzQ3CiAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0
b21BY2Nlc3NvcihvYmosIGN1c3RvbVNldHRlcik7CiAgICAgICAgICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICAgICAgICAgIGN1c3RvbVNldHRlcihnbG9iYWxPYmplY3QsIEpTVmFs
dWU6OmVuY29kZShzbG90LnRoaXNWYWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICBjdXN0b21TZXR0ZXIob2JqLT5nbG9iYWxPYmpl
Y3Qodm0pLCBKU1ZhbHVlOjplbmNvZGUoc2xvdC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29k
ZSh2YWx1ZSksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21WYWx1ZSkgewpAQCAtODMxLDcgKzgyOCw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1
dElubGluZVNsb3coSlNHbG9iYWxPYmoKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYgd2UncmUgbm90IGFuIHVuY2FjaGVhYmxl
IGRpY3Rpb25hcnk6CiAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzNDcKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRD
dXN0b21WYWx1ZShvYmosIGN1c3RvbVNldHRlcik7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgY3VzdG9tU2V0dGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6
ZW5jb2RlKG9iaiksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFtZSkpOworICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGN1c3RvbVNldHRlcihv
YmotPmdsb2JhbE9iamVjdCh2bSksIEpTVmFsdWU6OmVuY29kZShvYmopLCBKU1ZhbHVlOjplbmNv
ZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgaWYgKCFpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgb2JqKSkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBBdm9pZCBQdXRNb2RlUHV0IGJlY2F1c2UgaXQgZmFpbHMgZm9yIG5vbi1leHRl
bnNpYmxlIHN0cnVjdHVyZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEx
ICszMywxMiBAQCBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6ZnVuY3Rpb25HZXR0ZXIoSlNHCiAgICAg
cmV0dXJuIG1fZGF0YS5nZXR0ZXIuZ2V0dGVyU2V0dGVyLT5jYWxsR2V0dGVyKGdsb2JhbE9iamVj
dCwgbV90aGlzVmFsdWUpOwogfQogCi1KU1ZhbHVlIFByb3BlcnR5U2xvdDo6Y3VzdG9tR2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
IGNvbnN0CitKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Y3VzdG9tR2V0dGVyKFZNJiB2bSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKKyAgICBBU1NFUlQobV9zbG90QmFzZSk7Cisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fc2xvdEJhc2UtPmdsb2JhbE9iamVj
dCh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBtX2F0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgPyBtX3RoaXNWYWx1ZSA6IEpTVmFsdWUoc2xvdEJhc2Uo
KSk7CiAgICAgaWYgKGF1dG8gZG9tQXR0cmlidXRlID0gdGhpcy0+ZG9tQXR0cmlidXRlKCkpIHsK
LSAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBpZiAoIXRoaXNW
YWx1ZS5pbmhlcml0cyh2bSwgZG9tQXR0cmlidXRlLT5jbGFzc0luZm8pKSB7CiAgICAgICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgICAgICByZXR1
cm4gdGhyb3dET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ZG9tQXR0cmlidXRlLT5jbGFzc0luZm8sIHByb3BlcnR5TmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMjc5MzczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCopIGNvbnN0
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY3VzdG9tR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVl
IGN1c3RvbUdldHRlcihWTSYsIFByb3BlcnR5TmFtZSkgY29uc3Q7CiAKICAgICB1bmlvbiB7CiAg
ICAgICAgIEVuY29kZWRKU1ZhbHVlIHZhbHVlOwpAQCAtNDA1LDcgKzQwNSw3IEBAIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmdldFYKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmRlY29kZShtX2RhdGEudmFsdWUpOwogICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlR2V0
dGVyKQogICAgICAgICByZXR1cm4gZnVuY3Rpb25HZXR0ZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBy
ZXR1cm4gY3VzdG9tR2V0dGVyKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1
cm4gY3VzdG9tR2V0dGVyKGdldFZNKGdsb2JhbE9iamVjdCksIHByb3BlcnR5TmFtZSk7CiB9CiAK
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmdldFZhbHVlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTQxNSw3
ICs0MTUsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90OjpnZXRWCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLnZhbHVlKTsKICAgICBpZiAobV9wcm9w
ZXJ0eVR5cGUgPT0gVHlwZUdldHRlcikKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uR2V0dGVyKGds
b2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIGN1c3RvbUdldHRlcihnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBjdXN0b21HZXR0ZXIo
Z2V0Vk0oZ2xvYmFsT2JqZWN0KSwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRp
b24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9GdW5jVG9T
dHJpbmcpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9GdW5j
VmFsdWVPZik7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN5bWJvbFByb3Rv
dHlwZTo6c19pbmZvIAogCiAvKiBTb3VyY2UgZm9yIFN5bWJvbFByb3RvdHlwZS5sdXQuaAogQGJl
Z2luIHN5bWJvbFByb3RvdHlwZVRhYmxlCi0gIGRlc2NyaXB0aW9uICAgICAgIHN5bWJvbFByb3Rv
R2V0dGVyRGVzY3JpcHRpb24gICAgRG9udEVudW18QWNjZXNzb3IgMAorICBkZXNjcmlwdGlvbiAg
ICAgICBzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCiAgIHRvU3RyaW5nICAgICAgICAgIHN5bWJvbFByb3RvRnVuY1RvU3RyaW5n
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAogICB2YWx1ZU9mICAgICAgICAgICBzeW1ib2xQ
cm90b0Z1bmNWYWx1ZU9mICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKIEBlbmQKQEAgLTg3
LDEyICs4NywxMiBAQCBpbmxpbmUgU3ltYm9sKiB0cnlFeHRyYWN0U3ltYm9sKFZNJiB2bSwgCiAg
ICAgcmV0dXJuIGFzU3ltYm9sKGpzQ2FzdDxTeW1ib2xPYmplY3QqPih0aGlzT2JqZWN0KS0+aW50
ZXJuYWxWYWx1ZSgpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHN5bWJvbFByb3Rv
R2V0dGVyRGVzY3JpcHRpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoc3ltYm9sUHJvdG9HZXR0
ZXJEZXNjcmlwdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXN5bWJvbCkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgU3ltYm9sRGVzY3JpcHRpb25U
eXBlRXJyb3IpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5
MSw3ICsxNTkxLDkgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoY3VzdG9tRwog
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoY3VzdG9tR2V0QWNjZXNzb3JHbG9iYWxP
YmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoY3VzdG9tR2V0VmFsdWVH
bG9iYWxPYmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0
QWNjZXNzb3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0QWNj
ZXNzb3JHbG9iYWxPYmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3Vz
dG9tU2V0VmFsdWUpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0
VmFsdWVHbG9iYWxPYmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoY3Vz
dG9tRnVuY3Rpb25TZXR0ZXIpOwogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoY3VzdG9tR2V0
QWNjZXNzb3IsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKQEAgLTE2MzMsNiArMTYzNSwyMiBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoY3VzdG9tU2V0QWNjZXNzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0pTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihjdXN0b21TZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29w
ZTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgaWYgKCF2YWx1ZS5pc09iamVj
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QodmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgb2Jq
ZWN0LT5wdXQob2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJyZXN1bHQiKSwgZ2xvYmFsT2JqZWN0LCBzbG90KTsKKworICAgIHJldHVybiB0cnVlOworfQor
CiBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0VmFsdWUsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBzbG90VmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3Bl
IGFzc2VydFNjb3BlOwpAQCAtMTY1MSw2ICsxNjY5LDI0IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihjdXN0b21TZXRWYWx1ZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgc2xvdFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBh
c3NlcnRTY29wZTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBSRUxF
QVNFX0FTU0VSVChKU1ZhbHVlOjpkZWNvZGUoc2xvdFZhbHVlKS5pbmhlcml0czxKU1Rlc3RDdXN0
b21HZXR0ZXJTZXR0ZXI+KGdsb2JhbE9iamVjdC0+dm0oKSkpOworCisgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIGlmICghdmFsdWUuaXNPYmpl
Y3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KHZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIG9i
amVjdC0+cHV0KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAicmVzdWx0IiksIGdsb2JhbE9iamVjdCwgc2xvdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3RvbUZ1bmN0aW9uU2V0dGVyLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFz
c2VydFNjb3BlOwpAQCAtMTY3OCw5ICsxNzE0LDEzIEBAIHZvaWQgSlNUZXN0Q3VzdG9tR2V0dGVy
U2V0dGVyOjpmaW5pc2hDcmUKICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUFjY2Vzc29yIiksCiAgICAgICAgIEN1c3RvbUdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3NvciwgY3VzdG9tU2V0QWNjZXNz
b3IpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yKSk7CiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjdXN0b21WYWx1ZUdsb2JhbE9iamVjdCIpLAotICAgICAgICBDdXN0b21HZXR0
ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0VmFsdWVHbG9iYWxPYmplY3QsIG51bGxwdHIp
LCAwKTsKKyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldFZh
bHVlR2xvYmFsT2JqZWN0LCBjdXN0b21TZXRWYWx1ZUdsb2JhbE9iamVjdCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWUpKTsKICAgICBwdXREaXJl
Y3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUFj
Y2Vzc29yR2xvYmFsT2JqZWN0IiksCi0gICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRl
KHZtLCBjdXN0b21HZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCwgbnVsbHB0ciksIFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7Cisg
ICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3Nvckds
b2JhbE9iamVjdCwgY3VzdG9tU2V0QWNjZXNzb3JHbG9iYWxPYmplY3QpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSk7CisgICAgcHV0RGly
ZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21W
YWx1ZU5vU2V0dGVyIiksCisgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBj
dXN0b21HZXRWYWx1ZSwgbnVsbHB0ciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tVmFsdWUpKTsKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUFjY2Vzc29yUmVhZE9ubHkiKSwKKyAg
ICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yLCBu
dWxscHRyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKIAogICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tRnVuY3Rpb24iKSwKICAgICAgICAgQ3VzdG9t
R2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yLCBjdXN0b21GdW5jdGlv
blNldHRlciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAy
NzkzNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1
ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4
cG9ydHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvR2V0dGVyRXhwb3J0cyk7CiB9CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG90eXBlLmx1dC5oIgpAQCAtNDYsNyArNDYsNyBAQCBjb25zdCBDbGFzc0luZm8gV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvCiAKIC8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlJbnN0YW5j
ZVByb3RvdHlwZS5sdXQuaAogIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5SW5zdGFu
Y2UKLSBleHBvcnRzIHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzIEFjY2Vzc29y
IDAKKyAgZXhwb3J0cyB3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9HZXR0ZXJFeHBvcnRzIFJlYWRP
bmx5fEN1c3RvbUFjY2Vzc29yCiAgQGVuZAogICovCiAKQEAgLTYyLDEyICs2MiwxMiBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5SW5zdGFuCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1
bmNFeHBvcnRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90
b0dldHRlckV4cG9ydHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IGdldEluc3RhbmNlKGds
b2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOyAKKyAgICBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIGluc3RhbmNlID0gZ2V0SW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgeyB9KTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGluc3RhbmNlLT5tb2R1bGVSZWNvcmQoKS0+ZXhwb3J0c09iamVjdCgpKSk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3cp
Owotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vcnlQcm90
b0Z1bmNCdWZmZXIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIod2ViQXNzZW1i
bHlNZW1vcnlQcm90b0dldHRlckJ1ZmZlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY1R5cGUpOwogfQogCkBAIC01Myw3ICs1Myw3
IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHkKIC8qIFNvdXJjZSBm
b3IgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBwcm90b3R5cGVUYWJs
ZVdlYkFzc2VtYmx5TWVtb3J5CiAgZ3JvdyAgIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3Jv
dyAgIEZ1bmN0aW9uIDEKLSBidWZmZXIgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIg
QWNjZXNzb3IgMAorIGJ1ZmZlciB3ZWJBc3NlbWJseU1lbW9yeVByb3RvR2V0dGVyQnVmZmVyIFJl
YWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAgdHlwZSAgIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5j
VHlwZSAgIEZ1bmN0aW9uIDAKIEBlbmQKICovCkBAIC04OCwxMiArODgsMTIgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIocmVzdWx0LnBhZ2VDb3VudCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlciwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUih3ZWJBc3NlbWJseU1lbW9yeVByb3RvR2V0dGVyQnVmZmVyLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkq
IG1lbW9yeSA9IGdldE1lbW9yeShnbG9iYWxPYmplY3QsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsgCisgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0gZ2V0TWVtb3J5KGdsb2Jh
bE9iamVjdCwgdm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsgCiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUobWVtb3J5LT5idWZmZXIoZ2xvYmFsT2JqZWN0KSkpOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgpOworc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIod2ViQXNzZW1ibHlUYWJsZVByb3RvR2V0dGVyTGVuZ3RoKTsKIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93KTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1
bmNHZXQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlUYWJs
ZVByb3RvRnVuY1NldCk7CkBAIC01Miw3ICs1Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3Nl
bWJseVRhYmxlUHJvdG90eXAKIAogLyogU291cmNlIGZvciBXZWJBc3NlbWJseVRhYmxlUHJvdG90
eXBlLmx1dC5oCiAgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlUYWJsZQotIGxlbmd0
aCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoIEFjY2Vzc29yIDAKKyBsZW5ndGggd2Vi
QXNzZW1ibHlUYWJsZVByb3RvR2V0dGVyTGVuZ3RoIFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAg
Z3JvdyAgIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93ICAgRnVuY3Rpb24gMQogIGdldCAg
ICB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0ICAgIEZ1bmN0aW9uIDEKICBzZXQgICAgd2Vi
QXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldCAgICBGdW5jdGlvbiAyCkBAIC03MiwxMiArNzIsMTIg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseVRhYmxlKgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJv
dG9GdW5jTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHdlYkFzc2VtYmx5VGFibGVQcm90
b0dldHRlckxlbmd0aCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZ2xvYmFsT2JqZWN0
LCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0
YWJsZSA9IGdldFRhYmxlKGdsb2JhbE9iamVjdCwgdm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGFibGUtPmxlbmd0aCgp
KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NSBAQAorMjAyMS0wNy0wMSAg
QWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10g
Q2FsbCBjdXN0b20gYWNjZXNzb3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFs
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI1OTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBmaXhlcyBjcm9zcy1yZWFsbSB5ZXQgc2FtZS1vcmlnaW4gV2ViSURMIGF0dHJp
YnV0ZXMgdG8gdGhyb3cgZXJyb3JzIGluIHJlYWxtIG9mCisgICAgICAgIHRoZWlyIGFjY2Vzc29y
LCB3aGlsZSBlbnN1cmluZyB0aGF0IGB3aW5kb3cubG9jYXRpb25gIGFuZCBgbG9jYXRpb24uaHJl
ZmAgc2V0dGVycyBkb24ndCBsZWFrCisgICAgICAgIGNyb3NzLW9yaWdpbiBPYmplY3QucHJvdG90
eXBlIHZpYSB0aHJvd24gZXJyb3IuCisKKyAgICAgICAgU2luY2UgTG9jYXRpb24gc2V0dGVycyBy
ZWxpZWQgb24gbGV4aWNhbCBnbG9iYWwgb2JqZWN0IHRvIHBhc3Mgb3V0Z29pbmcgYGRvY3VtZW50
LnJlZmVycmVyYCwKKyAgICAgICAgdGhleSB3ZXJlIHVwZGF0ZWQgdG8gdXNlIEluY3VtYmVudFdp
bmRvdyBhcyBwZXIgc3BlYyBbMV0uIGNhbGxlckdsb2JhbE9iamVjdCgpIHdhcyByZXdvcmtlZAor
ICAgICAgICB0byBza2lwIG5hdGl2ZSAvIGJ1aWx0LWluIGNhbGxlcnMgYW5kIHJlbHkgb24gVk1F
bnRyeVNjb3BlIHRvIGFjY29tb2RhdGUgdG9wLWxldmVsIDxzY3JpcHQ+CisgICAgICAgIGNvZGUg
bmF2aWdhdGluZyB2aWEgTG9jYXRpb24gc2V0dGVyLCBtYWtpbmcgdGhlIGhlbHBlciBtb3JlIHZl
cnNhdGlsZS4KKworICAgICAgICBnbG9iYWxPYmplY3RPZkNsb3Nlc3RDb2RlQmxvY2soKSBmaXhl
ZCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uIGluc3RhbmNlcyBhbmQgTG9jYXRpb24ncworICAgICAg
ICBhc3NpZ24oKSAvIHJlcGxhY2UoKSBtZXRob2RzIHRvIHBhc3MgY29ycmVjdCByZWZlcnJlci4K
KworICAgICAgICBBbHNvLCB0aGlzIGNoYW5nZSBmaXhlcyBzdGF0aWMgYXR0cmlidXRlcyBsaWtl
IGBQZXJmb3JtYW5jZU9ic2VydmVyLnN1cHBvcnRlZEVudHJ5VHlwZXNgCisgICAgICAgIHRvIHJl
dHVybiB3cmFwcGVycyBvZiB0aGVpciByZWFsbSBpbnN0ZWFkIG9mIGxleGljYWwuCisKKyAgICAg
ICAgWzFdIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2hpc3RvcnkuaHRt
bCNsb2NhdGlvbi1vYmplY3QtbmF2aWdhdGUgKHN0ZXAgMikKKworICAgICAgICBUZXN0czogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ds
b2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sCisgICAgICAg
ICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0
LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwKKyAgICAgICAgICAg
ICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4v
Y3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVmLWNy
b3NzLXJlYWxtLXNldC5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlwZXMtY3Jvc3Mt
cmVhbG0tYWNjZXNzLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxlckdsb2JhbE9iamVjdCk6IERlbGV0ZWQu
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5jdW1i
ZW50RE9NV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5l
cmF0ZU5hbWVkR2V0dGVyTGFtYmRhKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1Jl
ZmVyZW5jZXMpOgorICAgICAgICAoR2VuZXJhdGVDYWxsV2l0aCk6CisgICAgICAgIEVuc3VyZSBJ
bmN1bWJlbnRXaW5kb3cgY29tZXMgYmVmb3JlIEZpcnN0V2luZG93LgorCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBSZW1vdmUgYXR0cmlidXRlcyB0aGF0
IHJlbGllZCBvbiBDYWxsRnJhbWUgc2luY2UgY3VzdG9tIGdldHRlcnMgZG9uJ3QgaGF2ZSBpdC4K
KworICAgICAgICAqIHBhZ2UvTG9jYXRpb24uaWRsOgorICAgICAgICBSZW1vdmUgW0xlZ2FjeVVu
Zm9yZ2VhYmxlXSBmcm9tIGFuY2VzdG9yT3JpZ2lucyBiZWNhdXNlIGl0J3Mgc2V0IG9uIHRoZSBp
bnRlcmZhY2UuCisKIDIwMjEtMDYtMjkgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBOdWxscHRyIGNyYXNoIGluIEhUTUxTdGFja0l0ZW06OmNyZWF0ZSB2aWEgRG9jdW1l
bnRGcmFnbWVudDo6cGFyc2VIVE1MCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0Miw0OCArNTQyLDYgQEAgSlNDOjpKU09iamVjdCogSlNET01HbG9iYWxPYmplY3Q6Om1v
ZHVsZQogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QtPnZtKCks
IGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKIH0KIAotSlNE
T01HbG9iYWxPYmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgY2xhc3MgR2V0Q2Fs
bGVyR2xvYmFsT2JqZWN0RnVuY3RvciB7Ci0gICAgcHVibGljOgotICAgICAgICBHZXRDYWxsZXJH
bG9iYWxPYmplY3RGdW5jdG9yKCkgPSBkZWZhdWx0OwotCi0gICAgICAgIFN0YWNrVmlzaXRvcjo6
U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIW1faGFzU2tpcHBlZEZpcnN0RnJhbWUpIHsKLSAgICAgICAgICAg
ICAgICBtX2hhc1NraXBwZWRGaXJzdEZyYW1lID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKGF1dG8qIGNvZGVCbG9jayA9IHZpc2l0b3ItPmNvZGVCbG9jaygpKQotICAgICAgICAgICAg
ICAgIG1fZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVCh2aXNpdG9yLT5jYWxsZWUoKS5yYXdQ
dHIoKSk7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IENhbGxlZSBpcyBub3QgYW4gb2JqZWN0
IGlmIHRoZSBjYWxsZXIgaXMgV2ViIEFzc2VtYmx5LgotICAgICAgICAgICAgICAgIC8vIEZpZ3Vy
ZSBvdXQgd2hhdCB0byBkbyBoZXJlLiBXZSBjYW4gcHJvYmFibHkgZ2V0IHRoZSBnbG9iYWwgb2Jq
ZWN0Ci0gICAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgdG9wLW1vc3QgV2FzbSBJbnN0YW5jZS4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTcyMQotICAgICAgICAg
ICAgICAgIGlmICh2aXNpdG9yLT5jYWxsZWUoKS5pc0NlbGwoKSAmJiB2aXNpdG9yLT5jYWxsZWUo
KS5hc0NlbGwoKS0+aXNPYmplY3QoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9nbG9iYWxPYmpl
Y3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKSktPmdsb2Jh
bE9iamVjdCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRv
cjo6RG9uZTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdDsgfQotCi0gICAgcHJpdmF0ZToKLSAg
ICAgICAgbXV0YWJsZSBib29sIG1faGFzU2tpcHBlZEZpcnN0RnJhbWUgeyBmYWxzZSB9OwotICAg
ICAgICBtdXRhYmxlIEpTR2xvYmFsT2JqZWN0KiBtX2dsb2JhbE9iamVjdCB7IG51bGxwdHIgfTsK
LSAgICB9OwotCi0gICAgR2V0Q2FsbGVyR2xvYmFsT2JqZWN0RnVuY3RvciBpdGVyOwotICAgIGNh
bGxGcmFtZS5pdGVyYXRlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgaXRlcik7Ci0gICAgaWYg
KGl0ZXIuZ2xvYmFsT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oaXRlci5nbG9iYWxPYmplY3QoKSk7Ci0KLSAgICAvLyBJZiB3ZSBjYW5ub3QgZmlu
ZCBKU0dsb2JhbE9iamVjdCBpbiBjYWxsZXIgZnJhbWVzLCB3ZSBqdXN0IHJldHVybiB0aGUgY3Vy
cmVudCBsZXhpY2FsR2xvYmFsT2JqZWN0LgotICAgIHJldHVybiAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOwotfQotCiBKU0RPTUdsb2JhbE9iamVjdCog
dG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJ
KHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw4ICsxNDIsNiBAQCBwcml2YXRlOgog
ICAgIEpTQzo6V2Vha0dDTWFwPENyb3NzT3JpZ2luTWFwS2V5LCBKU0M6OkdldHRlclNldHRlcj4g
bV9jcm9zc09yaWdpbkdldHRlclNldHRlck1hcDsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIEpTRE9N
R2xvYmFsT2JqZWN0JiBjYWxsZXJHbG9iYWxPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Qzo6Q2FsbEZyYW1lJik7Ci0KIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBET01XcmFwcGVyV29ybGQmKTsKIAogdGVtcGxhdGU8
Y2xhc3MgSlNDbGFzcz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDkgKzI4
MiwyMiBAQCBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhGcmFtZSYgZnJhbWUsCiAgICAgcmV0
dXJuIGZyYW1lLnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCk7CiB9CiAKLURPTVdpbmRvdyYg
aW5jdW1iZW50RE9NV2luZG93KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUmIGNhbGxGcmFtZSkKK0RPTVdpbmRvdyYgaW5jdW1iZW50RE9NV2luZG93KEpTR2xv
YmFsT2JqZWN0JiBmYWxsYmFja0dsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIGFzSlNET01XaW5kb3coJmNhbGxlckdsb2JhbE9iamVjdChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUpKS0+d3JhcHBlZCgpOworICAgIFZNJiB2bSA9IGZhbGxiYWNr
R2xvYmFsT2JqZWN0LnZtKCk7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGNhbGxGcmFt
ZS5nbG9iYWxPYmplY3RPZkNsb3Nlc3RDb2RlQmxvY2sodm0pKQorICAgICAgICByZXR1cm4gYXNK
U0RPTVdpbmRvdyhnbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIGFzSlNET01X
aW5kb3coJmZhbGxiYWNrR2xvYmFsT2JqZWN0KS0+d3JhcHBlZCgpOworfQorCitET01XaW5kb3cm
IGluY3VtYmVudERPTVdpbmRvdyhKU0dsb2JhbE9iamVjdCYgZmFsbGJhY2tHbG9iYWxPYmplY3Qp
Cit7CisgICAgVk0mIHZtID0gZmFsbGJhY2tHbG9iYWxPYmplY3Qudm0oKTsKKyAgICBpZiAodm0u
dG9wQ2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSB2bS50b3BD
YWxsRnJhbWUtPmdsb2JhbE9iamVjdE9mQ2xvc2VzdENvZGVCbG9jayh2bSkpCisgICAgICAgICAg
ICByZXR1cm4gYXNKU0RPTVdpbmRvdyhnbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7CisgICAgfQor
ICAgIHJldHVybiBhc0pTRE9NV2luZG93KCZmYWxsYmFja0dsb2JhbE9iamVjdCktPndyYXBwZWQo
KTsKIH0KIAogRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3coSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuaAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNyBA
QCBpbmxpbmUgSlNET01XaW5kb3cqIHRvSlNET01XaW5kb3coRnJhbWUqCiAvLyBGSVhNRTogTWFr
ZSB0aGlzIHdvcmsgZm9yIGFuICJhdXRob3IgZnVuY3Rpb24gb3Igc2NyaXB0IHRoYXQgb3JpZ2lu
YWxseSBzY2hlZHVsZWQgdGhlIGN1cnJlbnRseS1ydW5uaW5nIGNhbGxiYWNrLiIKIC8vIFNlZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQxMj4uCiBET01XaW5k
b3cmIGluY3VtYmVudERPTVdpbmRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpDYWxsRnJh
bWUmKTsKK0RPTVdpbmRvdyYgaW5jdW1iZW50RE9NV2luZG93KEpTQzo6SlNHbG9iYWxPYmplY3Qm
KTsKIAogRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCYpOwog
RE9NV2luZG93JiBmaXJzdERPTVdpbmRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShy
ZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MywxMCArMjYzLDE3IEBAIGJvb2wgSlNE
T01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2wKIAogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKIAotICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0g
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVz
KCkubG9jYXRpb25QdWJsaWNOYW1lKCkpIHsKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOworICAg
IGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCksIGVycm9yTWVzc2FnZSkpIHsK
ICAgICAgICAgLy8gV2Ugb25seSBhbGxvdyBzZXR0aW5nICJsb2NhdGlvbiIgYXR0cmlidXRlIGNy
b3NzLW9yaWdpbi4KLSAgICAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgp
LCBUaHJvd1NlY3VyaXR5RXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmxvY2F0aW9uUHVibGljTmFtZSgpKSB7CisgICAgICAg
ICAgICBhdXRvKiBzZXR0ZXIgPSBzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJv
cGVydHlOYW1lKS0+cHJvcGVydHlQdXR0ZXIoKTsKKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKKyAgICAgICAgICAgIHNldHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNv
ZGUoc2xvdC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0aHJvd1Nl
Y3VyaXR5RXJyb3IoKmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSAmJiAhYWxsb3dzTGVnYWN5RXhwYW5kb0luZGV4ZWRQcm9wZXJ0aWVzKCkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSwxNyArMTExLDI2IEBAIGJvb2wgSlNM
b2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmQKIGJvb2wgSlNMb2NhdGlvbjo6cHV0KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJv
cGVydHlTbG90KQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIC8vIEFsd2F5cyBhbGxvdyBhc3Np
Z25pbmcgdG8gdGhlIHdob2xlIGxvY2F0aW9uLgogICAgIC8vIEhvd2V2ZXIsIGFsbG93aW5nIGFz
c2lnbmluZyBvZiBwaWVjZXMgbWlnaHQgaW5hZHZlcnRlbnRseSBkaXNjbG9zZSBwYXJ0cyBvZiB0
aGUgb3JpZ2luYWwgbG9jYXRpb24uCiAgICAgLy8gU28gZmFsbCB0aHJvdWdoIHRvIHRoZSBhY2Nl
c3MgY2hlY2sgZm9yIHRob3NlLgotICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuaHJlZlB1Ymxp
Y05hbWUoKSkgewotICAgICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCku
d2luZG93KCksIFRocm93U2VjdXJpdHlFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hv
dWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVj
dC0+d3JhcHBlZCgpLndpbmRvdygpLCBlcnJvck1lc3NhZ2UpKSB7CisgICAgICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+
YnVpbHRpbk5hbWVzKCkuaHJlZlB1YmxpY05hbWUoKSkgeworICAgICAgICAgICAgYXV0byogc2V0
dGVyID0gc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSktPnBy
b3BlcnR5UHV0dGVyKCk7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAg
ICBzZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHB1dFByb3BlcnR5
U2xvdC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0aHJvd1NlY3Vy
aXR5RXJyb3IoKmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJl
dHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lv
biAyNzkzNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtODUzLDcgKzg1Myw3IEBAIHN1YiBHZW5lcmF0ZU5h
bWVkR2V0dGVyTGFtYmRhCiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNs
YXNzTmFtZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbk5hbWUs
ICRJRExUeXBlKSA9IEBfOwogICAgIAotICAgIG15IEBhcmd1bWVudHMgPSBHZW5lcmF0ZUNhbGxX
aXRoVXNpbmdSZWZlcmVuY2VzKCRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJzdGQ6Om51bGxvcHQiLCAidGhpc09iamVj
dCIsICIgICAgICAgICIpOworICAgIG15IEBhcmd1bWVudHMgPSBHZW5lcmF0ZUNhbGxXaXRoVXNp
bmdSZWZlcmVuY2VzKCRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJzdGQ6Om51bGxvcHQiLCAidGhpc09iamVjdCIsICIi
LCAiICAgICAgICAiKTsKICAgICBwdXNoKEBhcmd1bWVudHMsICJwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1
dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3Rv
cjwke0lETFR5cGV9LCAke2NsYXNzTmFtZX0+KFtdICgke2NsYXNzTmFtZX0mIHRoaXNPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHtcbiIpOwpAQCAt
NTg4MSwxMCArNTg4MSw5IEBAIHN1YiBHZW5lcmF0ZUdldENhbGxEYXRhCiAKIHN1YiBHZW5lcmF0
ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzCiB7Ci0gICAgbXkgKCRjYWxsV2l0aCwgJG91dHB1dEFy
cmF5LCAkcmV0dXJuVmFsdWUsICR0aGlzUmVmZXJlbmNlLCAkaW5kZW50KSA9IEBfOworICAgIG15
ICgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAkdGhpc1JlZmVyZW5jZSwg
JGNhbGxGcmFtZVJlZmVyZW5jZSwgJGluZGVudCkgPSBAXzsKIAotICAgIG15ICRjYWxsRnJhbWVQ
b2ludGVyID0gImNhbGxGcmFtZSI7Ci0gICAgbXkgJGNhbGxGcmFtZVJlZmVyZW5jZSA9ICIqY2Fs
bEZyYW1lIjsKKyAgICBteSAkY2FsbEZyYW1lUG9pbnRlciA9ICRjYWxsRnJhbWVSZWZlcmVuY2Ug
JiYgIiYkY2FsbEZyYW1lUmVmZXJlbmNlIjsKICAgICBteSAkZ2xvYmFsT2JqZWN0ID0gImpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSI7CiAKICAgICByZXR1
cm4gR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVl
LCAkcmV0dXJuVmFsdWUsICRjYWxsRnJhbWVQb2ludGVyLCAkY2FsbEZyYW1lUmVmZXJlbmNlLCAk
Z2xvYmFsT2JqZWN0LCAkZ2xvYmFsT2JqZWN0LCAkdGhpc1JlZmVyZW5jZSwgJGluZGVudCk7CkBA
IC01OTY0LDE1ICs1OTYzLDE1IEBAIHN1YiBHZW5lcmF0ZUNhbGxXaXRoCiAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJKU0RPTVdpbmRvd0Jhc2UuaCIpOwogICAgICAgICBwdXNoKEBjYWxsV2l0
aEFyZ3MsICJhY3RpdmVET01XaW5kb3coKiRnbG9iYWxPYmplY3QpIik7CiAgICAgfQotICAgIGlm
ICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJG
aXJzdFdpbmRvdyIpKSB7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0
ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIkluY3VtYmVudFdpbmRvdyIpKSB7CiAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJET01XaW5kb3cuaCIpOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
SlNET01XaW5kb3dCYXNlLmgiKTsKLSAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiZmlyc3RE
T01XaW5kb3coKiRnbG9iYWxPYmplY3QpIik7CisgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywg
ImluY3VtYmVudERPTVdpbmRvdygqJGdsb2JhbE9iamVjdCIgLiAoJGNhbGxGcmFtZVJlZmVyZW5j
ZSA/ICIsICIgLiAkY2FsbEZyYW1lUmVmZXJlbmNlIDogIiIpIC4gIikiKTsKICAgICB9Ci0gICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwg
IkluY3VtYmVudFdpbmRvdyIpKSB7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0
dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIkZpcnN0V2luZG93IikpIHsKICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkRPTVdpbmRvdy5oIik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJKU0RPTVdpbmRvd0Jhc2UuaCIpOwotICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3MsICJpbmN1
bWJlbnRET01XaW5kb3coKiRnbG9iYWxPYmplY3QsICRjYWxsRnJhbWVSZWZlcmVuY2UpIik7Cisg
ICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgImZpcnN0RE9NV2luZG93KCokZ2xvYmFsT2JqZWN0
KSIpOwogICAgIH0KICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29u
dGFpbnMoJGNhbGxXaXRoLCAiUnVudGltZUZsYWdzIikpIHsKICAgICAgICAgcHVzaChAY2FsbFdp
dGhBcmdzLCAiJHtnbG9iYWxPYmplY3R9LT5ydW50aW1lRmxhZ3MoKSIpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNp
b24gMjc5MzczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsOSArMjAwLDcgQEAgZW51bSBUZXN0Q29uZmlk
ZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogCiAgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0g
YXR0cmlidXRlIGxvbmcgd2l0aEV4ZWNTdGF0ZUF0dHJpYnV0ZTsKICAgICBbQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0LCBTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJp
YnV0ZSBsb25nIHdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlOwotICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBhdHRyaWJ1dGUgVGVzdE9iaiB3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCZFeGVjU3RhdGVdIGF0dHJpYnV0ZSBUZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlOwotICAgIFtDYWxsV2l0aD0gIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgICYgIEV4ZWNTdGF0ZSAgXSBhdHRyaWJ1dGUgVGVzdE9iaiB3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGU7CisgICAg
W1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIERP
TVN0cmluZyB3aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGU7CiAKICAgICAvLyBPcHRpb25hbCBw
YXJhbWV0ZXJzLgogICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxBcmcob3B0aW9u
YWwgbG9uZyBvcHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzYxLDEyICsxNzYxLDggQEAgc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNUZXN0Twogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0
T2JqX3dpdGhFeGVjU3RhdGVBdHRyaWJ1dGUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNUZXN0T2JqX3dpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aXRoQ2FsbFdp
dGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOwot
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJp
YnV0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGUpOwotc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRF
eGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdE9ial93aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOworc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0
dHJpYnV0ZSk7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMSk7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMSk7CkBAIC0yMTI2
LDkgKzIxMjIsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAg
ICAgeyAib253ZWJraXRmb28iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9vbndlYmtpdGZvbyksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9vbndlYmtp
dGZvbykgfSB9LAogICAgIHsgIndpdGhFeGVjU3RhdGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoRXhl
Y1N0YXRlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhFeGVjU3RhdGVBdHRyaWJ1dGUpIH0gfSwK
ICAgICB7ICJ3aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3dp
dGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhDYWxs
V2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKSB9IH0sCi0gICAgeyAid2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZSkgfSB9LAotICAgIHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0
cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRy
aWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVB
dHRyaWJ1dGUpIH0gfSwKLSAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKSB9IH0sCisgICAg
eyAid2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfd2l0aFNldHRlckNhbGxXaXRo
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSkgfSB9LAog
I2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIHsgImNvbmRpdGlvbmFsQXR0cjEiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9j
b25kaXRpb25hbEF0dHIxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2NvbmRpdGlvbmFsQXR0cjEpIH0gfSwKICNlbHNl
CkBAIC00MjYyLDExNSArNDI1NiwzNSBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0T2JqX3dpCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNU
ZXN0T2JqX3dpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUp
OwogfQogCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RP
Ymo+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhy
b3dTY29wZSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgqY29udGV4
dCkpKSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRl
TmFtZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0
T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBh
dHRyaWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial93aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQot
ewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIiwg
IlRlc3RPYmoiKTsgfSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJ
S0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnZva2VGdW5jdG9y
UHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewotICAgICAgICByZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSgqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKLSAgICB9KTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0
dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
T2JqJiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJ
S0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSgqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCkpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2V0dGVyQ2FsbFdpdGhB
dHRyaWJ1dGUoKSkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial93
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RPYmpfd2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0
dHJpYnV0ZU5hbWUpKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0
PGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1
dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RP
Ympfd2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7
CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVB
dHRyaWJ1dGUiLCAiVGVzdE9iaiIpOyB9KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKLSAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlu
dm9rZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlKCpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCksICpjYWxsRnJhbWUsICpjb250ZXh0LCAq
bmF0aXZlVmFsdWUpOwotICAgIH0pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1KU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
RXhlY1N0YXRlQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQ
cm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
RXhlY1N0YXRlQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNw
YWNlc0F0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0T2JqJiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlm
IChVTkxJS0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKmpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFt
ZSwgKmNvbnRleHQpKSkpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2Jq
X3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKLXsKLSAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRy
aWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial93aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOyB9KTsK
KyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKLSAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxl
eGljYWxHbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKFVO
TElLRUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGludm9rZUZ1bmN0
b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgqanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCwg
Km5hdGl2ZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0V2l0aFNldHRlckNhbGxXaXRo
QXR0cmlidXRlKGluY3VtYmVudERPTVdpbmRvdygqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
JmxleGljYWxHbG9iYWxPYmplY3QpKSwgZmlyc3RET01XaW5kb3coKmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3Bl
cnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rl
c3RPYmpfd2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCiB7Ci0gICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpfd2l0
aFNldHRlckNhbGxXaXRoQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQogCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNpb24gMjc5Mzcz
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDIyICs0MywyMiBAQAogICAgIExlZ2FjeVVuZm9yZ2VhYmxlLAogICAgIEV4cG9zZWQ9V2lu
ZG93CiBdIGludGVyZmFjZSBMb2NhdGlvbiB7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdp
bmRvdyZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0cmluZ2lmaWVy
IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKKyAgICBbU2V0dGVyQ2FsbFdpdGg9SW5jdW1iZW50
V2luZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHlPblNldHRlcl0gc3RyaW5naWZp
ZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogCi0gICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRv
dyZGaXJzdFdpbmRvd10gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKLSAgICBbRG9O
b3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIHVuZGVm
aW5lZCByZXBsYWNlKFVTVlN0cmluZyB1cmwpOwotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3dd
IHVuZGVmaW5lZCByZWxvYWQoKTsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93JkZpcnN0
V2luZG93XSB1bmRlZmluZWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOworICAgIFtDYWxsV2l0aD1J
bmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eV0gdW5kZWZpbmVk
IHJlcGxhY2UoVVNWU3RyaW5nIHVybCk7CisgICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvd10g
dW5kZWZpbmVkIHJlbG9hZCgpOwogCiAgICAgLy8gVVJJIGRlY29tcG9zaXRpb24gYXR0cmlidXRl
cwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0
ZSBVU1ZTdHJpbmcgcHJvdG9jb2w7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZG
aXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBob3N0OwotICAgIFtTZXR0ZXJDYWxsV2l0
aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaG9zdG5hbWU7
Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRl
IFVTVlN0cmluZyBwb3J0OwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RX
aW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcGF0aG5hbWU7Ci0gICAgW1NldHRlckNhbGxXaXRo
PUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBzZWFyY2g7Ci0g
ICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVT
VlN0cmluZyBoYXNoOworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RX
aW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcHJvdG9jb2w7CisgICAgW1NldHRlckNhbGxXaXRo
PUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBob3N0Owor
ICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0
ZSBVU1ZTdHJpbmcgaG9zdG5hbWU7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRv
dyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBwb3J0OworICAgIFtTZXR0ZXJDYWxs
V2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcGF0
aG5hbWU7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10g
YXR0cmlidXRlIFVTVlN0cmluZyBzZWFyY2g7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVu
dFdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBoYXNoOwogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47CiAKLSAgICBbTGVnYWN5VW5mb3JnZWFi
bGUsIFNhbWVPYmplY3QsIENhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZ0xpc3QgYW5jZXN0b3JPcmlnaW5zOworICAgIFtTYW1lT2JqZWN0LCBDYWNoZWRBdHRyaWJ1
dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGFuY2VzdG9yT3JpZ2luczsKIH07
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNzkzNzMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wNy0wMSAgQWxleGV5IFNodmF5a2Eg
IDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gQ2FsbCBjdXN0b20gYWNj
ZXNzb3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFsIG9iamVjdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTk3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
T2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS5odG1sOgorICAgICAgICAq
IGZhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1
bW15LWZyYW1lLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRl
LWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWw6CisgICAg
ICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1l
bGVzcy1kb2MtY29udGV4dC0yLmh0bWw6CisgICAgICAgIFRoZXNlIHRlc3RzIHVzZWQgdG8gcGFz
cyBhcyBpcywgcHJvYmFibHksIGR1ZSB0byBjb21iaW5hdGlvbiBvZiBvbGQgKGluY29ycmVjdCkg
YmVoYXZpb3IgYW5kCisgICAgICAgIHNvbWUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBydW4t
d2Via2l0LXRlc3RzLiBUaGV5IGZhaWwgb24gTWluaUJyb3dzZXIgLyBDaHJvbWUgLyBGaXJlZm94
CisgICAgICAgIHVubGVzcyBtb2RpZmllZCBub3QgdG8gdXNlIGRhdGE6Ly8gcHJvdG9jb2wsIHdo
aWNoIGlzIG5vdCBzeXN0ZW0gdW5kZXIgdGVzdC4KKworICAgICAgICAqIGZhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1s
b2NhdGlvbi1hc3NpZ24tZXhwZWN0ZWQudHh0OgorICAgICAgICBSZXZlcnQgdGhlIGNoYW5nZXMg
bWFkZSBpbiByMTc0OTk2LiBMb2NhdGlvbjo6YXNzaWduKCkgbm93IHVzZXMgY29ycmVjdCAoaW5j
dW1iZW50KSBXaW5kb3cKKyAgICAgICAgdG8gc2V0IHJlZmVycmVyIGFuZCBwZXJmb3JtIHNlY3Vy
aXR5IGNoZWNrcywgYWxpZ25pbmcgV2ViS2l0IHdpdGggQ2hyb21lIC8gRmlyZWZveC4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxv
Y2F0aW9uLWdvcGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1nb3BkLmh0bWw6IEFk
ZGVkLgorCiAyMDIxLTA2LTI5ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgTnVsbHB0ciBjcmFzaCBpbiBIVE1MU3RhY2tJdGVtOjpjcmVhdGUgdmlhIERvY3VtZW50RnJh
Z21lbnQ6OnBhcnNlSFRNTApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVs
ZW1lbnQvb2JqZWN0LWFzLWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNzkzNzMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0
RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01
LDEwICs1LDEwIEBAIFBBU1Mgd2luZG93LmZyYW1lc1swXS5mcmFtZUVsZW1lbnQuY29udGUKIFBB
U1Mgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVsZW1lbnQubmFtZSBpcyAib2JqIgogUEFTUyB3aW5k
b3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250ZW50V2luZG93IGlzIHdpbmRvdy5mcmFtZXNb
MV0uZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudC5kZWZhdWx0VmlldwogUEFTUyB3aW5kb3cu
ZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250ZW50V2luZG93LmRvY3VtZW50IGlzIHdpbmRvdy5m
cmFtZXNbMV0uZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudAotTG9hZGluZyAnZGF0YTp0ZXh0
L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJhbWUnIGluIGlmcmFtZS4uLgotTG9hZGluZyAn
ZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBvYmplY3QnIGluIG9iamVjdC4uLgot
UEFTUyB3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLnRvU3RyaW5nKCkgaXMgImRhdGE6dGV4dC9o
dG1sLFVwZGF0ZWQgY29udGVudHMgb2YgaWZyYW1lIgotUEFTUyB3aW5kb3cuZnJhbWVzWzFdLmxv
Y2F0aW9uLnRvU3RyaW5nKCkgaXMgImRhdGE6dGV4dC9odG1sLFVwZGF0ZWQgY29udGVudHMgb2Yg
b2JqZWN0IgorTG9hZGluZyAncmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbCcgaW4gaWZyYW1l
Li4uCitMb2FkaW5nICdyZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1sJyBpbiBvYmplY3QuLi4K
K1BBU1Mgd2luZG93LmZyYW1lc1swXS5sb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCJyZXNvdXJjZXMv
ZHVtbXktZnJhbWUtMi5odG1sIikgaXMgdHJ1ZQorUEFTUyB3aW5kb3cuZnJhbWVzWzFdLmxvY2F0
aW9uLmhyZWYuZW5kc1dpdGgoInJlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwiKSBpcyB0cnVl
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50
L29iamVjdC1hcy1mcmFtZS5odG1sCShyZXZpc2lvbiAyNzkzNzMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNiw4ICs2LDggQEAKIAoganNUZXN0SXNBc3luYyA9IHRydWU7CiAKLXZhciB1cGRh
dGVkRnJhbWVVUkwgPSAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJhbWUi
OwotdmFyIHVwZGF0ZWRPYmplY3RVUkwgPSAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50
cyBvZiBvYmplY3QiOwordmFyIHVwZGF0ZWRGcmFtZVVSTCA9ICJyZXNvdXJjZXMvZHVtbXktZnJh
bWUtMi5odG1sIjsKK3ZhciB1cGRhdGVkT2JqZWN0VVJMID0gInJlc291cmNlcy9kdW1teS1mcmFt
ZS0xLmh0bWwiOwogCiBmdW5jdGlvbiBydW5UZXN0cygpCiB7CkBAIC0zNiw4ICszNiw4IEBAIGZ1
bmN0aW9uIGhhbmRsZUxvYWQoKQogICAgIGlmIChudW1Mb2FkcyA8IDIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHNob3VsZEJlKCJ3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLnRvU3RyaW5nKCki
LCAnIicgKyB1cGRhdGVkRnJhbWVVUkwgKyAnIicpOwotICAgIHNob3VsZEJlKCJ3aW5kb3cuZnJh
bWVzWzFdLmxvY2F0aW9uLnRvU3RyaW5nKCkiLCAnIicgKyB1cGRhdGVkT2JqZWN0VVJMICsgJyIn
KTsKKyAgICBzaG91bGRCZVRydWUoYHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24uaHJlZi5lbmRz
V2l0aCgiJHt1cGRhdGVkRnJhbWVVUkx9IilgKTsKKyAgICBzaG91bGRCZVRydWUoYHdpbmRvdy5m
cmFtZXNbMV0ubG9jYXRpb24uaHJlZi5lbmRzV2l0aCgiJHt1cGRhdGVkT2JqZWN0VVJMfSIpYCk7
CiAKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KQEAgLTQ2LDggKzQ2LDggQEAgZnVuY3Rpb24gaGFu
ZGxlTG9hZCgpCiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgogCi08aWZyYW1l
IG5hbWU9ImZyYW1lIiBzcmM9ImRhdGE6dGV4dC9odG1sLE9sZCBjb250ZW50cyBvZiBpZnJhbWUi
PjwvaWZyYW1lPgotPG9iamVjdCBuYW1lPSJvYmoiIHR5cGU9InRleHQvaHRtbCIgZGF0YT0iZGF0
YTp0ZXh0L2h0bWwsT2xkIGNvbnRlbnRzIG9mIG9iamVjdCI+PC9vYmplY3Q+Cis8aWZyYW1lIG5h
bWU9ImZyYW1lIiBzcmM9InJlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwiPjwvaWZyYW1lPgor
PG9iamVjdCBuYW1lPSJvYmoiIHR5cGU9InRleHQvaHRtbCIgZGF0YT0icmVzb3VyY2VzL2R1bW15
LWZyYW1lLTIuaHRtbCI+PC9vYmplY3Q+CiAKIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0x
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1l
bnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorPCFET0NUWVBFIGh0bWw+CitPbGQg
Y29udGVudHMgb2YgaWZyYW1lIC8gTmV3IGNvbnRlbnRzIG9mIG9iamVjdApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVu
dC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACis8IURPQ1RZUEUgaHRtbD4KK09sZCBj
b250ZW50cyBvZiBvYmplY3QgLyBOZXcgY29udGVudHMgb2YgaWZyYW1lCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNz
LWRvYy1jb250ZXh0LTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIu
aHRtbAkocmV2aXNpb24gMjc5MzczKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmli
dXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8aHRtbD4KIDxib2R5IG9ubG9hZD0idGVzdCgp
Ij4KLTxpZnJhbWUgc3JjPSdkYXRhOnRleHQvaHRtbCw8YSBpZD0iYSIgaHJlZj0iJTIzIiBvbmNs
aWNrPSJkb2N1bWVudC53cml0ZSh3aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4mYXBv
czsgOiAmYXBvczs8cD5QQVNTPC9wPiZhcG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4nPjwv
aWZyYW1lPgorPGlmcmFtZSBzcmNkb2M9JzxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9ImRv
Y3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZh
cG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+
CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVu
ZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVk
LWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAkocmV2aXNpb24gMjc5MzczKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9t
LWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiA8aHRtbD4KIDxib2R5IG9ubG9hZD0idGVzdCgpIj4KLTxpZnJhbWUgc3JjPSdkYXRhOnRl
eHQvaHRtbCw8YSBpZD0iYSIgaHJlZj0iJTIzIiBvbmNsaWNrPSJkb2N1bWVudC53cml0ZSh3aW5k
b3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4mYXBvczsgOiAmYXBvczs8cD5QQVNTPC9wPiZh
cG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4nPjwvaWZyYW1lPgorPGlmcmFtZSBzcmNkb2M9
JzxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0
b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsg
cmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc5MzczKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBh
cmVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw5IEBACi1UaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgd2l0aCB0aGUga2V5d29yZHMgYWxs
b3ctc2NyaXB0cyBhbmQgYWxsb3ctc2FtZS1vcmlnaW4gaXMgYWxsb3dlZCB0byBuYXZpZ2F0ZSBh
biBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0
dHJpYnV0ZS4KK0NPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBp
bml0aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFtZSB3aXRoIFVSTCAnc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLXNvdXJjZS5odG1sJy4gVGhlIGZyYW1lIGF0dGVtcHRpbmcgbmF2aWdhdGlvbiBp
cyBzYW5kYm94ZWQsIGFuZCBpcyB0aGVyZWZvcmUgZGlzYWxsb3dlZCBmcm9tIG5hdmlnYXRpbmcg
aXRzIGFuY2VzdG9ycy4KKworQ09OU09MRSBNRVNTQUdFOiBTZWN1cml0eUVycm9yOiBUaGUgb3Bl
cmF0aW9uIGlzIGluc2VjdXJlLgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQg
SUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBh
c3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS4KKworVGhpcyBpcyBkb25lIGJ5IGxvYWRp
bmcgdGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1lcywgYW5kIGEgc2luZ2xlIHNhbmRib3hlZCBvbmUu
IEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQgb25l
IHRvIG5vdCBiZSBvbmUgb2YgdGhlbS4KIAogVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9u
IHN1Y2Nlc3MuCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlzaW9u
IDI3OTM3MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1wYXJlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOSArMTMsOSBAQCBmdW5j
dGlvbiBjaGVja1Jlc3VsdHMoKQogewogICAgIHZhciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Rlc3RTdGF0dXMnKTsKIAotICAgIGlmIChzZWxmLm5hdmlnYXRlZC5sb2Nh
dGlvbi5ocmVmLmluZGV4T2YoJ3BhcmVudC5odG1sJykgIT0gLTEpCi0gICAgICAgIHRlc3RTdGF0
dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IHNhbmRib3hlZCBmcmFtZSBjb3VsZG5cJ3QgbmF2aWdhdGUn
OwotICAgIGVsc2UgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMSkKKyAgICBpZiAoc2VsZi5uYXZp
Z2F0ZWQubG9jYXRpb24uaHJlZi5pbmRleE9mKCdwYXJlbnQuaHRtbCcpID09IC0xKQorICAgICAg
ICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1lIG5hdmlnYXRl
ZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQogICAgICAgICB0ZXN0U3Rh
dHVzLmlubmVySFRNTCA9ICdQQVNTJzsKICAgICBlbHNlCiAgICAgICAgIHRlc3RTdGF0dXMuaW5u
ZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Blcmx5JzsKQEAgLTI4LDcg
KzI4LDcgQEAgZnVuY3Rpb24gY291bnRGcmFtZSgpCiB7CiAgICAgKytuYXZpZ2F0ZWRGcmFtZXM7
CiAKLSAgICBpZiAobmF2aWdhdGVkRnJhbWVzID09IDExKQorICAgIGlmIChuYXZpZ2F0ZWRGcmFt
ZXMgPT0gMTApCiAgICAgICAgIGNoZWNrUmVzdWx0cygpOwogfQogCkBAIC0zNywxMCArMzcsMTMg
QEAgZnVuY3Rpb24gY291bnRGcmFtZSgpCiAKIDxib2R5PgogCi0gICAgPHA+VGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIHdpdGggdGhlIGtleXdvcmRzCi0gICAgYWxs
b3ctc2NyaXB0cyBhbmQgYWxsb3ctc2FtZS1vcmlnaW4gaXMgYWxsb3dlZCB0byBuYXZpZ2F0ZSBh
biBhbmNlc3RvcgorICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElG
cmFtZSBjYW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IKICAgICBpbiB0aGUgZnJhbWUgdHJlZSBi
eSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS48L3A+CiAKKyAgICA8cD5UaGlzIGlz
IGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5nbGUK
KyAgICBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQsIGJ1
dCB0aGUgc2FuZGJveGVkCisgICAgb25lIHRvIDxiPm5vdDwvYj4gYmUgb25lIG9mIHRoZW0uPC9w
PgorICAgIAogICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24g
c3VjY2Vzcy48L3A+CiAKICAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3Np
Z24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDI3OTM3MykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBACi1kb2N1bWVudC5yZWZlcnJlciA9Citk
b2N1bWVudC5yZWZlcnJlciA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKIApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9j
YXRpb24tZ29wZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tZ29wZC1l
eHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tZ29wZC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACitkb2N1bWVudC5yZWZlcnJlciA9IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3It
bG9jYXRpb24tZ29wZC5odG1sCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWdvcGQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9j
b250ZXh0LWZvci1sb2NhdGlvbi1nb3BkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRp
b24tZ29wZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykgeworICAgIHZhciBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUobXNnKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5h
cHBlbmRDaGlsZChkaXYpOworfQorCitmdW5jdGlvbiBnbygpIHsKKyAgICB2YXIgc2V0TG9jYXRp
b24gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZyYW1lc1swXSwgImxvY2F0aW9u
Iikuc2V0OworICAgIHNldExvY2F0aW9uLmNhbGwoZnJhbWVzWzBdLmZyYW1lc1swXSwgInRhcmdl
dC1mb3ItbG9jYXRpb24uaHRtbCIpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVz
c2FnZSIsIGZ1bmN0aW9uKGUpIHsKKyAgICBsb2coZS5kYXRhKTsKKworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9LCBmYWxzZSk7
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
aWZyYW1lIHNyYz0icmVzb3VyY2VzL21pZGRsZS1mcmFtZS1mb3ItbG9jYXRpb24uaHRtbCI+Cis8
L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2
aXNpb24gMjc5MzczKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA3LTAxICBBbGV4ZXkgU2h2YXlrYSAg
PHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nl
c3NvcnMgLyB2YWx1ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhp
cy12YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1w
bGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFs
dWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jv
c3MtcmVhbG0uaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9jcmVhdGUtcmVhbG0uanM6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1cHBv
cnQvZHVtbXktaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93aW5kb3ctbG9jYXRp
b24tYW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3MtcmVhbG0tc2V0LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3Nz
LW9yaWdpbi1vYmplY3RzL3dpbmRvdy1sb2NhdGlvbi1hbmQtbG9jYXRpb24taHJlZi1jcm9zcy1y
ZWFsbS1zZXQuaHRtbDogQWRkZWQuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvY29tcGlsZS1ldmVudC1oYW5kbGVyLXNldHRp
bmdzLW9iamVjdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13
aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNm
b3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbDoKKyAgICAgICAgQWxsIHRoZXNlIGFy
ZSBjb25maXJtZWQgcHJvZ3Jlc3Npb25zLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlwZXMtY3Jvc3MtcmVhbG0tYWNj
ZXNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Bl
cmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlwZXMtY3Jvc3MtcmVhbG0tYWNjZXNz
Lmh0bWw6IEFkZGVkLgorCiAyMDIxLTA2LTI5ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
aWdhbGlhLmNvbT4KIAogICAgICAgICBDU1Mgc2Nyb2xsIHNuYXAgc2hvdWxkIGFsbG93IHNjcm9s
bGluZyB0byB0aGUgbWlkZGxlIG9mIHNuYXAgYXJlYXMgdGhhdCBvdmVyZmxvdyB0aGUgc25hcHBv
cnQKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2Vi
SURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUt
Y3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9i
YWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0CShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMt
dmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OCBAQAorCitQQVNTIENyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBnZXR0ZXIgdGhyb3dzIHdo
ZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgQ3Jvc3MtcmVhbG0gZ2xvYmFs
IG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVj
dAorUEFTUyBDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVu
IGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CitGQUlMIENyb3NzLXJlYWxtIGdsb2JhbCBv
YmplY3QncyBnZXR0ZXIgY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQgcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUaGUgV2lu
ZG93Lm5hbWUgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRvdyIK
K0ZBSUwgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNldHRlciBjYWxsZWQgb24gbnVsbCAv
IHVuZGVmaW5lZCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IFRoZSBXaW5kb3cubG9jYXRpb24gc2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRvdyIKK1BBU1MgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9i
amVjdCdzIG9wZXJhdGlvbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorCkluZGV4OiBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0
LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhp
cy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9n
bG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDk3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5Dcm9zcy1yZWFsbSBnZXR0ZXIgLyBzZXR0ZXIgLyBvcGVyYXRpb24g
ZG9lc24ndCB1c2UgbGV4aWNhbCBnbG9iYWwgb2JqZWN0IGlmIHx0aGlzfCB2YWx1ZSBpcyBpbmNv
bXBhdGlibGUgb2JqZWN0IC8gbnVsbCAvIHVuZGVmaW5lZDwvdGl0bGU+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUt
Z2V0dGVyIj4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1zZXR0ZXIiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tY3JlYXRlLW9wZXJhdGlvbi1mdW5j
dGlvbiI+CisKKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJzdXBwb3J0L2NyZWF0ZS1yZWFsbS5qcyI+PC9zY3JpcHQ+CisKKzxi
b2R5PgorPHNjcmlwdD4KK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhl
ciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG5vdFdpbmRvdyA9IE9iamVjdC5j
cmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG90aGVyKSk7CisKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKG90aGVyKS53aW5kb3c7
IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXIsICJoaXN0b3J5IikuZ2V0LmNhbGwobm90
V2luZG93KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+
IHsgUmVmbGVjdC5nZXQob3RoZXIsICJzY3JlZW4iLCBub3RXaW5kb3cpOyB9KTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkob3RoZXIsIHt9
KS5vbmNsaWNrOyB9KTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIHRo
cm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7CisKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOwor
ICAgIGNvbnN0IG5vdFdpbmRvdyA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9m
KG90aGVyKSk7CisKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4g
eyBPYmplY3QuY3JlYXRlKG90aGVyKS5uYW1lID0gImR1bW15IjsgfSk7CisgICAgYXNzZXJ0X3Ro
cm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihvdGhlciwgInN0YXR1cyIpLnNldC5jYWxsKG5vdFdpbmRvdywgb3RoZXIuc3RhdHVz
KTsgfSk7CisgICAgLy8gcGFyZW50IGlzIFtSZXBsYWNlYWJsZV0KKyAgICBhc3NlcnRfdGhyb3dz
X2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChvdGhlciwgInBhcmVudCIs
IHdpbmRvdywgbm90V2luZG93KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBl
RXJyb3IsICgpID0+IHsgbmV3IFByb3h5KG90aGVyLCB7fSkubG9jYXRpb24gPSBsb2NhdGlvbjsg
fSk7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBj
YWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2FpdCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBu
b3RXaW5kb3cgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvdGhlcikpOwor
CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNy
ZWF0ZShvdGhlcikuZm9jdXMoKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBl
RXJyb3IsICgpID0+IHsgb3RoZXIuY2xlYXJJbnRlcnZhbC5jYWxsKG5vdFdpbmRvdywgMCk7IH0p
OworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3Qu
YXBwbHkob3RoZXIuYmx1ciwgbm90V2luZG93LCBbXSk7IH0pOworICAgIGFzc2VydF90aHJvd3Nf
anMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IG5ldyBQcm94eShvdGhlciwge30pLnJlbW92ZUV2
ZW50TGlzdGVuZXIoImZvbyIsICgpID0+IHt9KTsgfSk7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xvYmFs
IG9iamVjdCdzIG9wZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9i
amVjdCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBh
d2FpdCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBvdGhlck5hbWVHZXR0ZXIgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90aGVyLCAibmFtZSIpLmdldDsKKworICAgIGFzc2Vy
dF9lcXVhbHMoUmVmbGVjdC5nZXQob3RoZXIsICJzZWxmIiwgbnVsbCksIG90aGVyKTsKKyAgICBh
c3NlcnRfZXF1YWxzKFJlZmxlY3QuZ2V0KG90aGVyLCAiZG9jdW1lbnQiLCB1bmRlZmluZWQpLCBv
dGhlci5kb2N1bWVudCk7CisgICAgYXNzZXJ0X2VxdWFscyhvdGhlck5hbWVHZXR0ZXIuY2FsbChu
dWxsKSwgImR1bW15Iik7CisgICAgLy8gQW4gZW5naW5lIG1pZ2h0IGhhdmUgZGlmZmVyZW50IGNv
ZGUgcGF0aCBmb3IgY2FsbGluZyBhIGZ1bmN0aW9uIGZyb20gb3V0ZXIgc2NvcGUgdG8gaW1wbGVt
ZW50IHN0ZXAgMS5iLmlpaSBvZiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWV2YWx1YXRl
Y2FsbAorICAgIGFzc2VydF9lcXVhbHMoKCgpID0+IG90aGVyTmFtZUdldHRlcigpKSgpLCAiZHVt
bXkiKTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIGNhbGxlZCBvbiBu
dWxsIC8gdW5kZWZpbmVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25z
dCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG90aGVyTG9jYXRpb25T
ZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90aGVyLCAibG9jYXRpb24i
KS5zZXQ7CisgICAgY29uc3Qgb3RoZXJIcmVmID0gb3RoZXIubG9jYXRpb24uaHJlZjsKKyAgICBj
b25zdCBuZXdTZWxmID0ge307CisKKyAgICAvLyBzZWxmIGlzIFtSZXBsYWNlYWJsZV0KKyAgICBh
c3NlcnRfdHJ1ZShSZWZsZWN0LnNldChvdGhlciwgInNlbGYiLCBuZXdTZWxmLCBudWxsKSk7Cisg
ICAgYXNzZXJ0X3RydWUoUmVmbGVjdC5zZXQob3RoZXIsICJuYW1lIiwgIm5ld05hbWUiLCB1bmRl
ZmluZWQpKTsKKworICAgIG90aGVyTG9jYXRpb25TZXR0ZXIuY2FsbChudWxsLCBgJHtvdGhlckhy
ZWZ9I2Zvb2ApOworICAgIGFzc2VydF9lcXVhbHMob3RoZXIubG9jYXRpb24uaGFzaCwgIiNmb28i
KTsKKyAgICAvLyBBbiBlbmdpbmUgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgY29kZSBwYXRoIGZvciBj
YWxsaW5nIGEgZnVuY3Rpb24gZnJvbSBvdXRlciBzY29wZSB0byBpbXBsZW1lbnQgc3RlcCAxLmIu
aWlpIG9mIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZXZhbHVhdGVjYWxsCisgICAgKCgp
ID0+IHsgb3RoZXJMb2NhdGlvblNldHRlcihgJHtvdGhlckhyZWZ9I2JhcmApOyB9KSgpOworICAg
IGFzc2VydF9lcXVhbHMob3RoZXIubG9jYXRpb24uaGFzaCwgIiNiYXIiKTsKKworICAgIC8vIENo
ZWNrIHRoZXNlIGFmdGVyIGNhbGxpbmcgImxvY2F0aW9uIiBzZXR0ZXIgbWFrZSBzdXJlIG5vIG5h
dmlnYXRpb24gaGFzIG9jY3VycmVkCisgICAgYXNzZXJ0X2VxdWFscyhvdGhlci5zZWxmLCBuZXdT
ZWxmKTsKKyAgICBhc3NlcnRfZXF1YWxzKG90aGVyLm5hbWUsICJuZXdOYW1lIik7Cit9LCAiQ3Jv
c3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNldHRlciBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5l
ZCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2Fp
dCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBvdGhlckZvY3VzID0gb3RoZXIuZm9jdXM7Cisg
ICAgY29uc3Qgb3RoZXJEaXNwYXRjaEV2ZW50ID0gb3RoZXIuZGlzcGF0Y2hFdmVudDsKKyAgICAK
KyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIGRvY3VtZW50LmJvZHkp
OworICAgIC8vIEFuIGVuZ2luZSBtaWdodCBoYXZlIGRpZmZlcmVudCBjb2RlIHBhdGggZm9yIGNh
bGxpbmcgYSBmdW5jdGlvbiBmcm9tIG91dGVyIHNjb3BlIHRvIGltcGxlbWVudCBzdGVwIDEuYi5p
aWkgb2YgaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1ldmFsdWF0ZWNhbGwKKyAgICAoKCkg
PT4geyBvdGhlckZvY3VzKCk7IH0pKCk7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hY3Rp
dmVFbGVtZW50LmNvbnRlbnRXaW5kb3csIG90aGVyKTsKKworICAgIGxldCBjYXVnaHRFdmVudDsK
KyAgICBvdGhlci5hZGRFdmVudExpc3RlbmVyLmNhbGwobnVsbCwgImZvbyIsIGV2ZW50ID0+IHsg
Y2F1Z2h0RXZlbnQgPSBldmVudDsgfSk7CisgICAgY29uc3QgZGlzcGF0Y2hlZEV2ZW50ID0gbmV3
IG90aGVyLkV2ZW50KCJmb28iKTsKKyAgICBhc3NlcnRfdHJ1ZShvdGhlckRpc3BhdGNoRXZlbnQo
ZGlzcGF0Y2hlZEV2ZW50KSk7CisgICAgYXNzZXJ0X2VxdWFscyhjYXVnaHRFdmVudCwgZGlzcGF0
Y2hlZEV2ZW50KTsKKworICAgIGNvbnN0IG1lc3NhZ2VQcm9taXNlID0gbmV3IEV2ZW50V2F0Y2hl
cih0LCBvdGhlciwgIm1lc3NhZ2UiKS53YWl0X2ZvcigibWVzc2FnZSIpOworICAgIG90aGVyLnBv
c3RNZXNzYWdlLmNhbGwobnVsbCwgImZvbyIpOworICAgIGFzc2VydF9lcXVhbHMoKGF3YWl0IG1l
c3NhZ2VQcm9taXNlKS5kYXRhLCAiZm9vIik7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVj
dCdzIG9wZXJhdGlvbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCIpOworPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9l
Y21hc2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3Nz
LXJlYWxtLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW52YWxp
ZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDUgQEAKKworUEFTUyBDcm9zcy1yZWFsbSBnZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVk
IG9uIGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgQ3Jvc3MtcmVhbG0gc2V0dGVyIHRocm93cyB3
aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CitQQVNTIENyb3NzLXJlYWxtIG9wZXJh
dGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorCkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2Ny
aXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwv
ZWNtYXNjcmlwdC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVh
bG0uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Dcm9zcy1yZWFsbSBnZXR0ZXIgLyBzZXR0
ZXIgLyBvcGVyYXRpb24gZG9lc24ndCB1c2UgbGV4aWNhbCBnbG9iYWwgb2JqZWN0IHRvIHRocm93
IGFuIGVycm9yIGZvciBpbmNvbXBhdGlibGUgfHRoaXN8IHZhbHVlPC90aXRsZT4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJp
YnV0ZS1nZXR0ZXIiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLXNldHRlciI+Cis8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1jcmVhdGUtb3BlcmF0aW9u
LWZ1bmN0aW9uIj4KKworPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InN1cHBvcnQvY3JlYXRlLXJlYWxtLmpzIj48L3NjcmlwdD4K
KworPGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0
IG90aGVyID0gYXdhaXQgY3JlYXRlUmVhbG0odCk7CisgICAgY29uc3Qgbm90RWxlbWVudCA9IE9i
amVjdC5jcmVhdGUob3RoZXIuSFRNTEVsZW1lbnQucHJvdG90eXBlKTsKKworICAgIGFzc2VydF90
aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5jcmVhdGUob3RoZXIuZG9j
dW1lbnQpLmhlYWQ7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAo
KSA9PiB7IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXIuSFRNTEVsZW1lbnQu
cHJvdG90eXBlLCAidGl0bGUiKS5nZXQuY2FsbChub3RFbGVtZW50KTsgfSk7CisgICAgYXNzZXJ0
X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5nZXQob3RoZXIuZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksICJoaWRkZW4iLCBub3RFbGVtZW50KTsgfSk7Cisg
ICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5KG90
aGVyLnRleHQsIHt9KS5ub2RlVHlwZTsgfSk7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2V0dGVyIHRocm93
cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7CisKK3Byb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOworICAg
IGNvbnN0IG5vdEVsZW1lbnQgPSBPYmplY3QuY3JlYXRlKG90aGVyLkhUTUxFbGVtZW50LnByb3Rv
dHlwZSk7CisgICAgY29uc3Qgbm90VGV4dCA9IE9iamVjdC5jcmVhdGUob3RoZXIuVGV4dC5wcm90
b3R5cGUpOworCisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsg
T2JqZWN0LmNyZWF0ZShvdGhlci5lbGVtZW50KS5pbm5lckhUTUwgPSAiIjsgfSk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihvdGhlci5IVE1MRWxlbWVudC5wcm90b3R5cGUsICJvbmNsaWNrIikuc2V0
LmNhbGwobm90RWxlbWVudCwgbnVsbCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIu
VHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3Quc2V0KG5ldyBvdGhlci5UZXh0KCJmb28iKSwgImRh
dGEiLCAiZm9vIiwgbm90VGV4dCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlw
ZUVycm9yLCAoKSA9PiB7IG5ldyBQcm94eShvdGhlci5kb2N1bWVudCwge30pLnRpdGxlID0gIiI7
IH0pOworfSwgIkNyb3NzLXJlYWxtIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21w
YXRpYmxlIG9iamVjdCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qg
b3RoZXIgPSBhd2FpdCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBub3REb2N1bWVudCA9IE9i
amVjdC5jcmVhdGUob3RoZXIuSFRNTERvY3VtZW50LnByb3RvdHlwZSk7CisgICAgY29uc3Qgbm90
VGV4dCA9IE9iamVjdC5jcmVhdGUob3RoZXIuVGV4dC5wcm90b3R5cGUpOworCisgICAgYXNzZXJ0
X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShvdGhlci5l
bGVtZW50KS5jbGljaygpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJv
ciwgKCkgPT4geyBvdGhlci5kb2N1bWVudC5xdWVyeVNlbGVjdG9yLmNhbGwobm90RG9jdW1lbnQs
ICIqIik7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7
IFJlZmxlY3QuYXBwbHkob3RoZXIudGV4dC5yZW1vdmUsIG5vdFRleHQsIFtdKTsgfSk7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5KG90aGVy
LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSwge30pLmFkZEV2ZW50TGlzdGVuZXIoImZvbyIs
ICgpID0+IHt9KTsgfSk7Cit9LCAiQ3Jvc3MtcmVhbG0gb3BlcmF0aW9uIHRocm93cyB3aGVuIGNh
bGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmlu
ZGluZy9zdXBwb3J0L2NyZWF0ZS1yZWFsbS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
c3VwcG9ydC9jcmVhdGUtcmVhbG0uanMJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1
cHBvcnQvY3JlYXRlLXJlYWxtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKyJ1
c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gY3JlYXRlUmVhbG0odCkgeworICAgIHJldHVybiBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIHQuYWRkX2NsZWFudXAoKCkgPT4geyBpZnJh
bWUucmVtb3ZlKCk7IH0pOworICAgICAgICBpZnJhbWUub25sb2FkID0gKCkgPT4geyByZXNvbHZl
KGlmcmFtZS5jb250ZW50V2luZG93KTsgfTsKKyAgICAgICAgaWZyYW1lLm5hbWUgPSAiZHVtbXki
OworICAgICAgICBpZnJhbWUuc3JjID0gInN1cHBvcnQvZHVtbXktaWZyYW1lLmh0bWwiOworICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChpZnJhbWUpOworICAgIH0pOworfQpJbmRleDogTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlw
dC1iaW5kaW5nL3N1cHBvcnQvZHVtbXktaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1i
aW5kaW5nL3N1cHBvcnQvZHVtbXktaWZyYW1lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1i
aW5kaW5nL3N1cHBvcnQvZHVtbXktaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxib2R5PmZv
bworPGJ1dHRvbiBpZD0iZWxlbWVudCI+PC9idXR0b24+Cis8c2NyaXB0PgorICAgIHdpbmRvdy50
ZXh0ID0gZG9jdW1lbnQuYm9keS5maXJzdENoaWxkOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2lu
L2Nyb3NzLW9yaWdpbi1vYmplY3RzL3dpbmRvdy1sb2NhdGlvbi1hbmQtbG9jYXRpb24taHJlZi1j
cm9zcy1yZWFsbS1zZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mt
b3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVmLWNyb3NzLXJl
YWxtLXNldC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmln
aW4tb2JqZWN0cy93aW5kb3ctbG9jYXRpb24tYW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3MtcmVhbG0t
c2V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACisKK1BBU1Mg
U2FtZS1vcmlnaW4gd2luZG93LmxvY2F0aW9uIGdldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhv
bGRlcidzIHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVlCitQQVNTIFNhbWUtb3JpZ2luIGxv
Y2F0aW9uLmhyZWYgZ2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24g
aW52YWxpZCB8dGhpc3wgdmFsdWUKK1BBU1MgQ3Jvc3Mtb3JpZ2luIGxvY2F0aW9uLmhyZWYgZ2V0
dGVyIHRocm93cyBTZWN1cml0eUVycm9yIGluIGxleGljYWwgcmVhbG0KK1BBU1MgU2FtZS1vcmln
aW4gd2luZG93LmxvY2F0aW9uIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJl
YWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVlCitQQVNTIFNhbWUtb3JpZ2luIGxvY2F0aW9uLmhy
ZWYgc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gaW52YWxpZCB8
dGhpc3wgdmFsdWUKK1BBU1MgQ3Jvc3Mtb3JpZ2luIHdpbmRvdy5sb2NhdGlvbiBzZXR0ZXIgdGhy
b3dzIFR5cGVFcnJvciBpbiBsZXhpY2FsIHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVlCitQ
QVNTIENyb3NzLW9yaWdpbiBsb2NhdGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGlu
IGxleGljYWwgcmVhbG0gb24gaW52YWxpZCB8dGhpc3wgdmFsdWUKK1BBU1MgU2FtZS1vcmlnaW4g
d2luZG93LmxvY2F0aW9uYCBzZXR0ZXIgdGhyb3dzIFR5cGVFcnJvciBpbiBob2xkZXIncyByZWFs
bSBvbiBub24tY29lcmNpYmxlIFVSTCBhcmd1bWVudAorUEFTUyBTYW1lLW9yaWdpbiBsb2NhdGlv
bi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9uIG5vbi1j
b2VyY2libGUgVVJMIGFyZ3VtZW50CitQQVNTIENyb3NzLW9yaWdpbiB3aW5kb3cubG9jYXRpb24g
c2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gbGV4aWNhbCByZWFsbSBvbiBub24tY29lcmNpYmxl
IFVSTCBhcmd1bWVudAorUEFTUyBDcm9zcy1vcmlnaW4gbG9jYXRpb24uaHJlZiBzZXR0ZXIgdGhy
b3dzIFR5cGVFcnJvciBpbiBsZXhpY2FsIHJlYWxtIG9uIG5vbi1jb2VyY2libGUgVVJMIGFyZ3Vt
ZW50CisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9u
LWFuZC1sb2NhdGlvbi1ocmVmLWNyb3NzLXJlYWxtLXNldC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9v
cmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1o
cmVmLWNyb3NzLXJlYWxtLXNldC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mt
b3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVmLWNyb3NzLXJl
YWxtLXNldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Dcm9zcy1yZWFsbSBbW1NldF1d
IHRvIHdpbmRvdy5sb2NhdGlvbiBhbmQgbG9jYXRpb24uaHJlZiB0aHJvd3MgYW4gZXJyb3Igb2Yg
Y29ycmVjdCByZWFsbTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyN3aW5kb3ciPgorPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNVbmZvcmdlYWJsZSI+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL2NvbW1vbi9nZXQtaG9zdC1pbmZvLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3Jp
cHQ+Citjb25zdCBVUkxfU0FNRV9PUklHSU4gPSBnZXRfaG9zdF9pbmZvKCkuT1JJR0lOQUxfSE9T
VDsKK2NvbnN0IFVSTF9DUk9TU19PUklHSU4gPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1PVEVf
T1JJR0lOOworY29uc3QgVVJMX1ZBTElEID0gIiNmb28iOworY29uc3QgVVJMX0lOVkFMSUQgPSAi
aHR0cDovLyMiOworCitjb25zdCB7IGdldDogbG9jYXRpb25HZXQsIHNldDogbG9jYXRpb25TZXQg
fSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAibG9jYXRpb24iKTsK
K2NvbnN0IHsgZ2V0OiBocmVmR2V0LCBzZXQ6IGhyZWZTZXQgfSA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IobG9jYXRpb24sICJocmVmIik7CisKKworcHJvbWlzZV90ZXN0KGFzeW5j
IHQgPT4geworICAgIGNvbnN0IHNhbWVPcmlnaW5XaW5kb3cgPSBhd2FpdCBtYWtlV2luZG93KHQs
IFVSTF9TQU1FX09SSUdJTik7CisgICAgYXNzZXJ0X3Rocm93c19qcyhzYW1lT3JpZ2luV2luZG93
LlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKHNhbWVPcmlnaW5XaW5kb3cpLmxvY2F0
aW9uOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5kb3cuVHlwZUVycm9y
LCAoKSA9PiB7IFJlZmxlY3QuZ2V0KHNhbWVPcmlnaW5XaW5kb3csICJsb2NhdGlvbiIsIHt9KTsg
fSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgbG9jYXRpb25HZXQu
Y2FsbCh7fSk7IH0pOworfSwgIlNhbWUtb3JpZ2luIHdpbmRvdy5sb2NhdGlvbiBnZXR0ZXIgdGhy
b3dzIFR5cGVFcnJvciBpbiBob2xkZXIncyByZWFsbSBvbiBpbnZhbGlkIHx0aGlzfCB2YWx1ZSIp
OworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgc2FtZU9yaWdpbldpbmRv
dyA9IGF3YWl0IG1ha2VXaW5kb3codCwgVVJMX1NBTUVfT1JJR0lOKTsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKHNhbWVPcmlnaW5XaW5kb3cuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5jcmVhdGUo
c2FtZU9yaWdpbldpbmRvdy5sb2NhdGlvbikuaHJlZjsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19q
cyhzYW1lT3JpZ2luV2luZG93LlR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LmdldChzYW1lT3Jp
Z2luV2luZG93LmxvY2F0aW9uLCAiaHJlZiIsIHt9KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsICgpID0+IHsgaHJlZkdldCgpOyB9KTsKK30sICJTYW1lLW9yaWdpbiBsb2Nh
dGlvbi5ocmVmIGdldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9uIGlu
dmFsaWQgfHRoaXN8IHZhbHVlIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBj
b25zdCBjcm9zc09yaWdpbldpbmRvdyA9IGF3YWl0IG1ha2VXaW5kb3codCwgVVJMX0NST1NTX09S
SUdJTik7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIlNFQ1VSSVRZX0VSUiIsICgpID0+IHsgY3Jv
c3NPcmlnaW5XaW5kb3cubG9jYXRpb24uaHJlZjsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20o
IlNFQ1VSSVRZX0VSUiIsICgpID0+IHsgaHJlZkdldC5jYWxsKGNyb3NzT3JpZ2luV2luZG93Lmxv
Y2F0aW9uKTsgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGNyb3NzT3JpZ2luV2luZG93LmxvY2F0aW9uLCAiaHJlZiIpLmdldCwgdW5kZWZpbmVk
KTsKK30sICJDcm9zcy1vcmlnaW4gbG9jYXRpb24uaHJlZiBnZXR0ZXIgdGhyb3dzIFNlY3VyaXR5
RXJyb3IgaW4gbGV4aWNhbCByZWFsbSIpOworCisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
KyAgICBjb25zdCBzYW1lT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfU0FN
RV9PUklHSU4pOworICAgIGFzc2VydF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRvdy5UeXBlRXJy
b3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShzYW1lT3JpZ2luV2luZG93KS5sb2NhdGlvbiA9IFVS
TF9WQUxJRDsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhzYW1lT3JpZ2luV2luZG93LlR5cGVF
cnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChzYW1lT3JpZ2luV2luZG93LCAibG9jYXRpb24iLCBV
UkxfVkFMSUQsIHt9KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IHsgbG9jYXRpb25TZXQuY2FsbCgoKSA9PiB7fSwgVVJMX1ZBTElEKTsgfSk7Cit9LCAiU2FtZS1v
cmlnaW4gd2luZG93LmxvY2F0aW9uIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidz
IHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVlIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgICBjb25zdCBzYW1lT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBV
UkxfU0FNRV9PUklHSU4pOworICAgIGFzc2VydF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRvdy5U
eXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShzYW1lT3JpZ2luV2luZG93LmxvY2F0aW9u
KS5ocmVmID0gVVJMX1ZBTElEOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5X
aW5kb3cuVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3Quc2V0KHNhbWVPcmlnaW5XaW5kb3cubG9j
YXRpb24sICJocmVmIiwgVVJMX1ZBTElELCB7fSk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiB7IGhyZWZTZXQuY2FsbCh1bmRlZmluZWQsIFVSTF9WQUxJRCk7IH0p
OworfSwgIlNhbWUtb3JpZ2luIGxvY2F0aW9uLmhyZWYgc2V0dGVyIHRocm93cyBUeXBlRXJyb3Ig
aW4gaG9sZGVyJ3MgcmVhbG0gb24gaW52YWxpZCB8dGhpc3wgdmFsdWUiKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGNyb3NzT3JpZ2luV2luZG93ID0gYXdhaXQgbWFr
ZVdpbmRvdyh0LCBVUkxfQ1JPU1NfT1JJR0lOKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKGNyb3NzT3JpZ2luV2luZG93KS5sb2NhdGlvbiA9
IFVSTF9WQUxJRDsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsg
UmVmbGVjdC5zZXQoY3Jvc3NPcmlnaW5XaW5kb3csICJsb2NhdGlvbiIsIFVSTF9WQUxJRCwge30p
OyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBsb2NhdGlvblNl
dC5jYWxsKFtdLCBVUkxfVkFMSUQpOyB9KTsKK30sICJDcm9zcy1vcmlnaW4gd2luZG93LmxvY2F0
aW9uIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGxleGljYWwgcmVhbG0gb24gaW52YWxpZCB8
dGhpc3wgdmFsdWUiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGNy
b3NzT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfQ1JPU1NfT1JJR0lOKTsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKGNy
b3NzT3JpZ2luV2luZG93LmxvY2F0aW9uKS5ocmVmID0gVVJMX1ZBTElEOyB9KTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChjcm9zc09yaWdpbldp
bmRvdy5sb2NhdGlvbiwgImhyZWYiLCBVUkxfVkFMSUQsIHt9KTsgfSk7CisgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgaHJlZlNldC5jYWxsKG51bGwsIFVSTF9WQUxJRCk7
IH0pOworfSwgIkNyb3NzLW9yaWdpbiBsb2NhdGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVy
cm9yIGluIGxleGljYWwgcmVhbG0gb24gaW52YWxpZCB8dGhpc3wgdmFsdWUiKTsKKworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgc2FtZU9yaWdpbldpbmRvdyA9IGF3YWl0
IG1ha2VXaW5kb3codCwgVVJMX1NBTUVfT1JJR0lOKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNh
bWVPcmlnaW5XaW5kb3cuVHlwZUVycm9yLCAoKSA9PiB7IHNhbWVPcmlnaW5XaW5kb3cubG9jYXRp
b24gPSBTeW1ib2woKTsgfSk7CisKKyAgICAvLyBUaGUgZXJyb3Igb3JpZ2luYXRlcyBpbiBzYW1l
T3JpZ2luV2luZG93LmxvY2F0aW9uLmhyZWYgc2V0dGVyLCBoZW5jZSBpdCdzIG5vdCBpbiByZWFs
bSBvZiBsb2NhdGlvblNldC4KKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5kb3cu
VHlwZUVycm9yLCAoKSA9PiB7IGxvY2F0aW9uU2V0LmNhbGwoc2FtZU9yaWdpbldpbmRvdywgU3lt
Ym9sKCkpOyB9KTsKK30sICJTYW1lLW9yaWdpbiB3aW5kb3cubG9jYXRpb25gIHNldHRlciB0aHJv
d3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9uIG5vbi1jb2VyY2libGUgVVJMIGFyZ3Vt
ZW50Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBzYW1lT3JpZ2lu
V2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfU0FNRV9PUklHSU4pOworICAgIGFzc2Vy
dF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRvdy5UeXBlRXJyb3IsICgpID0+IHsgc2FtZU9yaWdp
bldpbmRvdy5sb2NhdGlvbi5ocmVmID0gU3ltYm9sKCk7IH0pOworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiB7IGhyZWZTZXQuY2FsbChzYW1lT3JpZ2luV2luZG93LmxvY2F0
aW9uLCBTeW1ib2woKSk7IH0pOworfSwgIlNhbWUtb3JpZ2luIGxvY2F0aW9uLmhyZWYgc2V0dGVy
IHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gbm9uLWNvZXJjaWJsZSBVUkwg
YXJndW1lbnQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGNyb3Nz
T3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfQ1JPU1NfT1JJR0lOKTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBjcm9zc09yaWdpbldpbmRvdy5s
b2NhdGlvbiA9IFN5bWJvbCgpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4geyBsb2NhdGlvblNldC5jYWxsKGNyb3NzT3JpZ2luV2luZG93LCBTeW1ib2woKSk7IH0p
OworfSwgIkNyb3NzLW9yaWdpbiB3aW5kb3cubG9jYXRpb24gc2V0dGVyIHRocm93cyBUeXBlRXJy
b3IgaW4gbGV4aWNhbCByZWFsbSBvbiBub24tY29lcmNpYmxlIFVSTCBhcmd1bWVudCIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgY3Jvc3NPcmlnaW5XaW5kb3cgPSBh
d2FpdCBtYWtlV2luZG93KHQsIFVSTF9DUk9TU19PUklHSU4pOworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiB7IGNyb3NzT3JpZ2luV2luZG93LmxvY2F0aW9uLmhyZWYgPSBT
eW1ib2woKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgaHJl
ZlNldC5jYWxsKGNyb3NzT3JpZ2luV2luZG93LmxvY2F0aW9uLCBTeW1ib2woKSk7IH0pOworfSwg
IkNyb3NzLW9yaWdpbiBsb2NhdGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGxl
eGljYWwgcmVhbG0gb24gbm9uLWNvZXJjaWJsZSBVUkwgYXJndW1lbnQiKTsKKworZnVuY3Rpb24g
bWFrZVdpbmRvdyh0LCBzcmMpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7
CisgICAgICAgIGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIp
OworICAgICAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHsgaWZyYW1lLnJlbW92ZSgpOyB9KTsKKyAg
ICAgICAgaWZyYW1lLm9ubG9hZCA9ICgpID0+IHsgcmVzb2x2ZShpZnJhbWUuY29udGVudFdpbmRv
dyk7IH07CisgICAgICAgIGlmcmFtZS5zcmMgPSBzcmM7CisgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kKGlmcmFtZSk7CisgICAgfSk7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGlu
Zy9ldmVudHMvY29tcGlsZS1ldmVudC1oYW5kbGVyLXNldHRpbmdzLW9iamVjdHMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvY29tcGlsZS1ldmVudC1oYW5k
bGVyLXNldHRpbmdzLW9iamVjdHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzkzNzMpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBp
cy9zY3JpcHRpbmcvZXZlbnRzL2NvbXBpbGUtZXZlbnQtaGFuZGxlci1zZXR0aW5ncy1vYmplY3Rz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIAogUEFTUyBUaGUg
RnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBjcmVhdGVkIGluIHRoZSBSZWFsbSBvZiB0aGUgbm9k
ZSBkb2N1bWVudAogRkFJTCBUaGUgZW50cnkgc2V0dGluZ3Mgb2JqZWN0IHdoaWxlIGV4ZWN1dGlu
ZyB0aGUgY29tcGlsZWQgY2FsbGJhY2sgdmlhIFdlYiBJREwncyBpbnZva2UgbXVzdCBiZSB0aGF0
IG9mIHRoZSBub2RlIGRvY3VtZW50IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIvaHRtbC93ZWJh
cHBhcGlzL3NjcmlwdGluZy9ldmVudHMvcmVzb3VyY2VzL29wZW4td2luZG93Lmh0bWwiIGJ1dCBn
b3QgIi9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9vcGVuLXdpbmRvdy5odG1sIgot
RkFJTCBUaGUgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCB3aGlsZSBleGVjdXRpbmcgdGhlIGNv
bXBpbGVkIGNhbGxiYWNrIHZpYSBXZWIgSURMJ3MgaW52b2tlIG11c3QgYmUgdGhhdCBvZiB0aGUg
bm9kZSBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaWZyYW1lIiBidXQgZ290ICJw
YXJlbnQgZnJhbWUiCitQQVNTIFRoZSBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHdoaWxlIGV4
ZWN1dGluZyB0aGUgY29tcGlsZWQgY2FsbGJhY2sgdmlhIFdlYiBJREwncyBpbnZva2UgbXVzdCBi
ZSB0aGF0IG9mIHRoZSBub2RlIGRvY3VtZW50CiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNz
aW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJv
bWlzZS1qb2ItaW5jdW1iZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRp
bmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9i
LXF1ZXVlL3Byb21pc2Utam9iLWluY3VtYmVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3OTM3
MykKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93
ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10
aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMiwxMyArMiwxMyBAQAogCiBQQVNTIFNhbml0eSBjaGVjazog
dGhpcyBhbGwgd29ya3MgYXMgZXhwZWN0ZWQgd2l0aCBubyBwcm9taXNlcyBpbnZvbHZlZAogUEFT
UyBGdWxmaWxsbWVudCBoYW5kbGVyIG9uIGZ1bGZpbGxlZCBwcm9taXNlCi1GQUlMIEZ1bGZpbGxt
ZW50IGhhbmRsZXIgb24gZnVsZmlsbGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQg
c2V0dGluZ3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vbG9j
YWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIv
aW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3Byb21p
c2Utam9iLWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9z
dDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVn
cmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9jdXJyZW50L2N1
cnJlbnQuaHRtbCIKK0ZBSUwgRnVsZmlsbG1lbnQgaGFuZGxlciBvbiBmdWxmaWxsZWQgcHJvbWlz
ZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2Ny
aXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0
LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1s
IiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGlu
Zy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2It
cXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50Lmh0bWwiCiBQQVNTIFJlamVjdGlvbiBoYW5kbGVy
IG9uIHJlamVjdGVkIHByb21pc2UKLUZBSUwgUmVqZWN0aW9uIGhhbmRsZXIgb24gcmVqZWN0ZWQg
cHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFw
aXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZh
c2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVu
dC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3Nj
cmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlw
dC1qb2ItcXVldWUvcmVzb3VyY2VzL2N1cnJlbnQvY3VycmVudC5odG1sIgorRkFJTCBSZWplY3Rp
b24gaGFuZGxlciBvbiByZWplY3RlZCBwcm9taXNlLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50IHNl
dHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2Fs
aG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2lu
dGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9taXNl
LWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6
ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3Jh
dGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQu
aHRtbCIKIFBBU1MgRnVsZmlsbG1lbnQgaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tZnVsZmlsbGVk
IHByb21pc2UKLUZBSUwgRnVsZmlsbG1lbnQgaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tZnVsZmls
bGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHN0YWNr
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJh
cHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUt
amF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWluY3VtYmVudC1pbmN1
bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBp
cy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFz
Y3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9jdXJyZW50L2N1cnJlbnQuaHRtbCIKK0ZBSUwgRnVs
ZmlsbG1lbnQgaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tZnVsZmlsbGVkIHByb21pc2UsIHVzaW5n
IGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9w
cm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVl
dWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdv
dCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vz
c2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3By
b21pc2Utam9iLWluY3VtYmVudC5odG1sIgogUEFTUyBSZWplY3Rpb24gaGFuZGxlciBvbiBwZW5k
aW5nLXRoZW4tcmVqZWN0ZWQgcHJvbWlzZQotRkFJTCBSZWplY3Rpb24gaGFuZGxlciBvbiBwZW5k
aW5nLXRoZW4tcmVqZWN0ZWQgcHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5n
cyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6
ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3Jh
dGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2It
aW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAv
aHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24t
d2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL2N1cnJlbnQvY3VycmVudC5o
dG1sIgorRkFJTCBSZWplY3Rpb24gaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tcmVqZWN0ZWQgcHJv
bWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMv
c2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2Ny
aXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5o
dG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3Njcmlw
dGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1q
b2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50Lmh0bWwiCiBQQVNTIFRoZW5hYmxlIHJlc29s
dXRpb24KLUZBSUwgVGhlbmFibGUgcmVzb2x1dGlvbiwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBz
ZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9p
bnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlz
ZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0
Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdy
YXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL2N1cnJlbnQvY3Vy
cmVudC5odG1sIgorRkFJTCBUaGVuYWJsZSByZXNvbHV0aW9uLCB1c2luZyBiYWNrdXAgaW5jdW1i
ZW50IHNldHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDov
L2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2Rl
bC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9w
cm9taXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9p
bnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1
bWJlbnQuaHRtbCIKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9zdXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3NzLXJl
YWxtLWFjY2Vzcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9zdXBwb3J0ZWRF
bnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5j
ZS10aW1lbGluZS9zdXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgQ3Jvc3MtcmVhbG0g
YWNjZXNzIG9mIHN1cHBvcnRlZEVudHJ5VHlwZXMgcmV0dXJucyBBcnJheSBvZiBhbm90aGVyIHJl
YWxtCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
cGVyZm9ybWFuY2UtdGltZWxpbmUvc3VwcG9ydGVkRW50cnlUeXBlcy1jcm9zcy1yZWFsbS1hY2Nl
c3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlwZXMtY3Jvc3Mt
cmVhbG0tYWNjZXNzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9zdXBwb3J0ZWRFbnRy
eVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTggQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkNy
b3NzLXJlYWxtIGFjY2VzcyBvZiBzdXBwb3J0ZWRFbnRyeVR5cGVzIHJldHVybnMgQXJyYXkgb2Yg
YW5vdGhlciByZWFsbTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9wZXJmb3JtYW5jZS10aW1lbGluZS8jc3VwcG9ydGVkZW50cnl0eXBlcy1hdHRy
aWJ1dGUiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPGJvZHk+Cis8c2NyaXB0PgordGVzdCh0ID0+IHsKKyAgY29uc3QgaWZyYW1lID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgIHQuYWRkX2NsZWFudXAoKCkgPT4geyBpZnJh
bWUucmVtb3ZlKCk7IH0pOworICBpZnJhbWUub25sb2FkID0gdC5zdGVwX2Z1bmNfZG9uZSgoKSA9
PiB7CisgICAgY29uc3Qgb3RoZXJXaW5kb3cgPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKyAgICBh
c3NlcnRfdHJ1ZShvdGhlcldpbmRvdy5QZXJmb3JtYW5jZU9ic2VydmVyLnN1cHBvcnRlZEVudHJ5
VHlwZXMgaW5zdGFuY2VvZiBvdGhlcldpbmRvdy5BcnJheSk7CisgIH0pOworICBkb2N1bWVudC5i
b2R5LmFwcGVuZChpZnJhbWUpOworfSk7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL2ZldGNoLXJlcXVlc3QtY3NzLWNyb3NzLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3Jp
Z2luLmh0dHBzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc5MzczKQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDYgQEAKIAogUEFTUyBzZXR1cCBnbG9iYWwgc3RhdGUK
IFBBU1MgTUlNRSBjaGVja2luZyBvZiBDU1MgcmVzb3VyY2VzIGZldGNoZWQgdmlhIHNlcnZpY2Ug
d29ya2VyIHdoZW4gQ29udGVudC1UeXBlIGlzIG5vdCBzZXQuCi1GQUlMIFNhbWUtb3JpZ2luIHBv
bGljeSBmb3IgYWNjZXNzIHRvIENTUyByZXNvdXJjZXMgZmV0Y2hlZCB2aWEgc2VydmljZSB3b3Jr
ZXIgYXNzZXJ0X3Rocm93c19kb206IGZ1bmN0aW9uICIoKSA9PiB7Ci0gICAgZi5jb250ZW50RG9j
dW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uY3NzVGV4dDsKLSAgfSIgdGhyZXcgYW4g
ZXhjZXB0aW9uIGZyb20gdGhlIHdyb25nIGdsb2JhbAorRkFJTCBTYW1lLW9yaWdpbiBwb2xpY3kg
Zm9yIGFjY2VzcyB0byBDU1MgcmVzb3VyY2VzIGZldGNoZWQgdmlhIHNlcnZpY2Ugd29ya2VyIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlNlY3Vy
aXR5RXJyb3I6IE5vdCBhbGxvd2VkIHRvIGFjY2VzcyBjcm9zcy1vcmlnaW4gc3R5bGVzaGVldCIK
IFBBU1MgY2xlYW51cCBnbG9iYWwgc3RhdGUKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRy
YW5zZm9ybS1yZWFkYWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10
cmFuc2Zvcm0tcmVhZGFibGUuaHRtbAkocmV2aXNpb24gMjc5MzczKQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0v
c2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDkgKzks
MTAgQEAKICAgICAgICAgPGlmcmFtZSBzcmM9Ii4iIGlkPSJmcmFtZSI+PC9pZnJhbWU+CiAgICAg
ICAgIDxzY3JpcHQ+CiBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBm
cmFtZURPTUV4Y2VwdGlvbiA9IGZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9uOwogICAg
IGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBmcmFtZS5jb250ZW50V2luZG93LlNGcmFtZVRyYW5zZm9y
bTsKICAgICBmcmFtZS5yZW1vdmUoKTsKLSAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0
YXRlRXJyb3IiLCAoKSA9PiB0cmFuc2Zvcm0ucmVhZGFibGUpOworICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZyYW1lRE9NRXhjZXB0aW9uLCAoKSA9PiB0cmFuc2Zv
cm0ucmVhZGFibGUpOwogfSk7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432794</attachid>
            <date>2021-07-02 07:46:27 -0700</date>
            <delta_ts>2021-07-22 19:38:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225997-20210702174626.patch</filename>
            <type>text/plain</type>
            <size>128889</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzk0NzIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA3LTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1
ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90
by1jaGFpbi1wdXQuanM6CisgICAgICAgICogc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2Jq
ZWN0LWluLWljLTIuanM6IEFkZGVkLgorCiAyMDIxLTA2LTMwICBTYWFtIEJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFR1cm4gb2ZmIGRhdGEgSUNzIGJ5IGRlZmF1bHQKSW5k
ZXg6IEpTVGVzdHMvc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXByb3RvLWNoYWluLXB1dC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90by1jaGFpbi1wdXQu
anMJKHJldmlzaW9uIDI3OTM3MykKKysrIEpTVGVzdHMvc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXBy
b3RvLWNoYWluLXB1dC5qcwkod29ya2luZyBjb3B5KQpAQCAtOTksOCArOTksOCBAQCBmdW5jdGlv
biBnZXRCYXNlcygpIHsKICgoKSA9PiB7CiAgICAgZm9yIChsZXQgYmFzZSBvZiBnZXRCYXNlcygp
KSB7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpCi0gICAgICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiB7IGJhc2UuY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPSB7fTsg
fSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4i
KTsKLSAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0b21BY2Nl
c3Nvckdsb2JhbE9iamVjdCIsIHt9KSk7CisgICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7
IGJhc2UuY3VzdG9tQWNjZXNzb3JSZWFkT25seSA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0
ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOworICAgICAgICBhc3NlcnQoIVJl
ZmxlY3Quc2V0KE9iamVjdChiYXNlKSwgImN1c3RvbUFjY2Vzc29yUmVhZE9ubHkiLCB7fSkpOwog
ICAgIH0KIH0pKCk7CiAKQEAgLTEwOCwyMSArMTA4LDIxIEBAIGZ1bmN0aW9uIGdldEJhc2VzKCkg
ewogKCgpID0+IHsKICAgICBmb3IgKGxldCBwcmltaXRpdmUgb2YgcHJpbWl0aXZlcykgewogICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQotICAgICAgICAgICAgc2hvdWxkVGhy
b3coKCkgPT4geyBwcmltaXRpdmUuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB7fTsgfSwgIlR5
cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAg
ICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgcHJpbWl0aXZlLmN1c3RvbVZhbHVlTm9TZXR0
ZXIgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBw
cm9wZXJ0eS4iKTsKICAgICB9CiAKICAgICBmb3IgKGxldCBvYmplY3Qgb2YgZ2V0T2JqZWN0cygp
KSB7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpCi0gICAgICAgICAgICBv
YmplY3QuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB7fTsKLSAgICAgICAgYXNzZXJ0KG9iamVj
dC5oYXNPd25Qcm9wZXJ0eSgiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiKSk7Ci0gICAgICAgIGFz
c2VydChSZWZsZWN0LnNldChvYmplY3QsICJjdXN0b21WYWx1ZUdsb2JhbE9iamVjdCIsIHt9KSk7
CisgICAgICAgICAgICBvYmplY3QuY3VzdG9tVmFsdWVOb1NldHRlciA9IHt9OworICAgICAgICBh
c3NlcnQob2JqZWN0Lmhhc093blByb3BlcnR5KCJjdXN0b21WYWx1ZU5vU2V0dGVyIikpOworICAg
ICAgICBhc3NlcnQoUmVmbGVjdC5zZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVOb1NldHRlciIsIHt9
KSk7CiAgICAgfQogCiAgICAgZm9yIChsZXQgb2JqZWN0IG9mIGdldE9iamVjdHMoKSkgewogICAg
ICAgICBPYmplY3QucHJldmVudEV4dGVuc2lvbnMob2JqZWN0KTsKICAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDA7ICsraSkgewotICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBv
YmplY3QuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1w
dGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKLSAgICAgICAgICAgIGFzc2Vy
dCghUmVmbGVjdC5zZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiLCB7fSkpOwor
ICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBvYmplY3QuY3VzdG9tVmFsdWVOb1NldHRl
ciA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHBy
b3BlcnR5LiIpOworICAgICAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChvYmplY3QsICJjdXN0
b21WYWx1ZU5vU2V0dGVyIiwge30pKTsKICAgICAgICAgfQogICAgIH0KIH0pKCk7CkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy9nZXR0ZXItc2V0dGVyLWdsb2JhbG9iamVjdC1pbi1pYy0yLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2JqZWN0LWluLWlj
LTIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvZ2V0dGVyLXNldHRlci1nbG9i
YWxvYmplY3QtaW4taWMtMi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACitmdW5j
dGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJC
YWQgYXNzZXJ0aW9uISIpOworfQorCitjb25zdCBjcmVhdGVDdXN0b20gPSBgCisgICAgdmFyIGN1
c3RvbSA9ICR2bS5jcmVhdGVDdXN0b21UZXN0R2V0dGVyU2V0dGVyKCk7CitgOworCisoZnVuY3Rp
b24gZGlyZWN0Q3VzdG9tQWNjZXNzb3JHZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJp
bmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVyLmN1c3RvbTsK
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KG90
aGVyQ3VzdG9tLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID09PSBvdGhlcik7CisgICAgfQor
fSkoKTsKKworKGZ1bmN0aW9uIGRpcmVjdEN1c3RvbVZhbHVlR2V0KCkgeworICAgIGNvbnN0IG90
aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b20gPSBv
dGhlci5jdXN0b207CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAg
ICAgIGFzc2VydChvdGhlckN1c3RvbS5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9PT0gb3RoZXIp
OworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBkaXJlY3RDdXN0b21BY2Nlc3NvclNldCgpIHsK
KyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90
aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7
IGkrKykgeworICAgICAgICBjb25zdCB2YWx1ZSA9IHt9OworICAgICAgICBvdGhlckN1c3RvbS5j
dXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCA9IHZhbHVlOworICAgICAgICBhc3NlcnQodmFsdWUu
cmVzdWx0ID09PSBvdGhlcik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIGRpcmVjdEN1c3Rv
bVZhbHVlU2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7
CisgICAgY29uc3Qgb3RoZXJDdXN0b20gPSBvdGhlci5jdXN0b207CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGNvbnN0IHZhbHVlID0ge307CisgICAgICAg
IG90aGVyQ3VzdG9tLmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID0gdmFsdWU7CisgICAgICAgIGFz
c2VydCh2YWx1ZS5yZXN1bHQgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24g
cHJvdG90eXBlQ2hhaW5DdXN0b21BY2Nlc3NvckdldCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1
blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tSGVpciA9IE9iamVj
dC5jcmVhdGUob3RoZXIuY3VzdG9tKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBp
KyspIHsKKyAgICAgICAgYXNzZXJ0KG90aGVyQ3VzdG9tSGVpci5jdXN0b21BY2Nlc3Nvckdsb2Jh
bE9iamVjdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBwcm90b3R5cGVD
aGFpbkN1c3RvbVZhbHVlR2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0
ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b21IZWlyID0gT2JqZWN0LmNyZWF0ZShvdGhl
ci5jdXN0b20pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAg
ICBhc3NlcnQob3RoZXJDdXN0b21IZWlyLmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID09PSBvdGhl
cik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIHByb3RvdHlwZUNoYWluQ3VzdG9tQWNjZXNz
b3JTZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAg
ICBjb25zdCBvdGhlckN1c3RvbUhlaXIgPSBPYmplY3QuY3JlYXRlKG90aGVyLmN1c3RvbSk7CisK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGNvbnN0IHZhbHVl
ID0ge307CisgICAgICAgIG90aGVyQ3VzdG9tSGVpci5jdXN0b21BY2Nlc3Nvckdsb2JhbE9iamVj
dCA9IHZhbHVlOworICAgICAgICBhc3NlcnQodmFsdWUucmVzdWx0ID09PSBvdGhlcik7CisgICAg
fQorfSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5MzczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU5IEBACisyMDIxLTA3LTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1ZXMgd2l0
aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBKdXN0IGxpa2UgSlMgYnVpbHQtaW5zLCBnZXR0ZXIgLyBz
ZXR0ZXIgZnVuY3Rpb25zIG9mIFdlYklETCBhdHRyaWJ1dGVzIGFyZSBjcmVhdGVkIGluIHJlYWxt
CisgICAgICAgIG9mIHRoZWlyIGhvbGRlciBpbnRlcmZhY2UgWzFdWzJdLCB3aGljaCBpcyB0aGVp
ciBfY3VycmVudF8gcmVhbG0gZm9yIHRocm93aW5nIGFuIGVycm9yIFszXS4KKworICAgICAgICBX
aXRoIHRoaXMgcGF0Y2gsIGN1c3RvbSBwcm9wZXJ0aWVzIGdldCBjb3JyZWN0IGdsb2JhbCBvYmpl
Y3QgaW5zdGVhZCBvZiBsZXhpY2FsLCBpbmNsdWRpbmcKKyAgICAgICAgd2hlbiBpbmxpbmUgY2Fj
aGVkLCBhbGlnbmluZyB0aGVtIHdpdGggZnVuY3Rpb25zIGFuZCByZWd1bGFyIGFjY2Vzc29ycy4K
KworICAgICAgICBUaGUgbGF0dGVyIGFsbG93ZWQgSlMgYnVpbHQtaW5zIGxpa2UgU3ltYm9sOjpk
ZXNjcmlwdGlvbiB0byBzd2l0Y2ggdG8gQ3VzdG9tQWNjZXNzb3IsIHdoaWNoCisgICAgICAgIGlz
IHNsaWdodGx5IG1vcmUgZWZmaWNpZW50IHRvIGNhbGwgZnJvbSBDKyssIGRvZXNuJ3QgbmVlZCBy
ZWlmaWNhdGlvbiBvbiBmaXJzdCBhY2Nlc3MsIGFuZAorICAgICAgICBoYXMgbmljZXIgc2lnbmF0
dXJlLgorCisgICAgICAgIEFsc28sIHJlbmFtZXMgV0FTTSBhY2Nlc3NvcnMgdG8gZHJvcCAiZnVu
YyIgYW5kIHJlbW92ZXMgdW51c2VkIGZ1bmN0aW9uIGxlbmd0aCBwYXJhbWV0ZXIuCisKKyAgICAg
ICAgWzFdOiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLWdl
dHRlciAoc3RlcCAyKQorICAgICAgICBbMl06IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJp
ZGwvI2Rmbi1hdHRyaWJ1dGUtc2V0dGVyIChzdGVwIDUpCisgICAgICAgIFszXTogaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZWNtYXNjcmlwdC10aHJvdworCisgICAgICAgICogYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbCk6CisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpnbG9iYWxPYmplY3RP
ZkNsb3Nlc3RDb2RlQmxvY2spOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVT
bG93KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHA6CisgICAgICAgIChKU0M6
OlByb3BlcnR5U2xvdDo6Y3VzdG9tR2V0dGVyIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmdldFZhbHVlIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5j
cHA6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorCiAyMDIx
LTA2LTI4ICBZaWppYSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYSBuZXcgcGF0dGVybiB0byBpbnN0cnVjdGlvbiBzZWxlY3RvciB0byB1c2UgQklDIHN1cHBv
cnRlZCBieSBBUk02NApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3Rh
YmxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJs
ZQkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNo
X3RhYmxlCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMSArOTQsNiBAQCB3aGlsZSAoPElOPikgewog
ICAgICAgICBpZiAoJGF0dCA9fiBtL0Z1bmN0aW9uLykgewogICAgICAgICAgICAgcHVzaChAdmFs
dWVzLCB7ICJ0eXBlIiA9PiAiUHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uIiwgImZ1bmN0aW9u
IiA9PiAkdmFsLCAicGFyYW1zIiA9PiAobGVuZ3RoKCRwYXJhbSkgPyAkcGFyYW0gOiAiIiksICJp
bnRyaW5zaWMiID0+IChsZW5ndGgoJGludHJpbnNpYykgPyAkaW50cmluc2ljIDogIk5vSW50cmlu
c2ljIikgfSk7CiAgICAgICAgICAgICAjcHJpbnRmIFNUREVSUiAiV0FSTklORzogTnVtYmVyIG9m
IGFyZ3VtZW50cyBtaXNzaW5nIGZvciAka2V5LyR2YWxcbiIgaWYgKGxlbmd0aCgkcGFyYW0pID09
IDApOwotICAgICAgICB9IGVsc2lmICgkYXR0ID1+IG0vQWNjZXNzb3IvKSB7Ci0gICAgICAgICAg
ICBteSAkZ2V0ID0gJHZhbDsKLSAgICAgICAgICAgIG15ICRwdXQgPSAibnVsbHB0ciI7Ci0gICAg
ICAgICAgICAkaGFzU2V0dGVyID0gInRydWUiOwotICAgICAgICAgICAgcHVzaChAdmFsdWVzLCB7
ICJ0eXBlIiA9PiAiUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIiwgImdldCIgPT4gJGdldCwg
InB1dCIgPT4gJHB1dCB9KTsKICAgICAgICAgfSBlbHNpZiAoJGF0dCA9fiBtL0NlbGxQcm9wZXJ0
eS8pIHsKICAgICAgICAgICAgIG15ICRwcm9wZXJ0eSA9ICR2YWw7CiAgICAgICAgICAgICBwdXNo
KEB2YWx1ZXMsIHsgInR5cGUiID0+ICJQcm9wZXJ0eUF0dHJpYnV0ZTo6Q2VsbFByb3BlcnR5Iiwg
InByb3BlcnR5IiA9PiAkcHJvcGVydHkgfSk7CkBAIC0zMTAsMTEgKzMwNSw2IEBAIHN1YiBvdXRw
dXQoKSB7CiAgICAgICAgICAgICAkZmlyc3RWYWx1ZSA9ICR2YWx1ZXNbJGldeyJmdW5jdGlvbiJ9
OwogICAgICAgICAgICAgJHNlY29uZFZhbHVlID0gJHZhbHVlc1skaV17InBhcmFtcyJ9OwogICAg
ICAgICAgICAgJGludHJpbnNpYyA9ICR2YWx1ZXNbJGldeyJpbnRyaW5zaWMifTsKLSAgICAgICAg
fSBlbHNpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vz
c29yIikgewotICAgICAgICAgICAgJGZpcnN0Q2FzdFN0ciA9ICJzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4iOwotICAgICAgICAgICAgJHNlY29uZENhc3RTdHIgPSAic3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+IjsKLSAgICAgICAgICAgICRmaXJzdFZhbHVlID0gJHZhbHVlc1sk
aV17ImdldCJ9OwotICAgICAgICAgICAgJHNlY29uZFZhbHVlID0gJHZhbHVlc1skaV17InB1dCJ9
OwogICAgICAgICB9IGVsc2lmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJQcm9wZXJ0eUF0dHJp
YnV0ZTo6UHJvcGVydHkiKSB7CiAgICAgICAgICAgICAkZmlyc3RDYXN0U3RyID0gInN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPiI7CiAgICAgICAgICAgICAkc2Vjb25kQ2Fz
dFN0ciA9ICJzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4iOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkocmV2
aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDE2LDcgKzE0MTYsNiBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqc3Rh
dGUuaml0OwogICAgIFZNJiB2bSA9IHN0YXRlLm1fdm07CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBqaXQuY29kZUJsb2NrKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHN0YXRlLm1fZ2xvYmFsT2JqZWN0OwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gc3RhdGUubV9l
Y21hTW9kZTsKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3RhdGUuc3R1Yklu
Zm87CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gc3RhdGUudmFsdWVSZWdzOwpAQCAtMTYx
OSw2ICsxNjE4LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQog
ICAgICAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gbG9hZGVkVmFsdWVHUFIpOwogICAgICAgICAg
ICAgQVNTRVJUKG1fdHlwZSAhPSBTZXR0ZXIgfHwgdmFsdWVSZWdzUGF5bG9hZEdQUiAhPSBsb2Fk
ZWRWYWx1ZUdQUik7CiAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBzdGF0ZS5tX2dsb2JhbE9iamVjdDsKKwogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgSlMgY2Fs
bCB1c2luZyBhIEpTIGNhbGwgaW5saW5lIGNhY2hlLiBBc3N1bWUgdGhhdDoKICAgICAgICAgICAg
IC8vCiAgICAgICAgICAgICAvLyAtIFNQIGlzIGFsaWduZWQgYW5kIHJlcHJlc2VudHMgdGhlIGV4
dGVudCBvZiB0aGUgY2FsbGluZyBjb21waWxlcidzIHN0YWNrIHVzYWdlLgpAQCAtMTc1NCw2ICsx
NzU1LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDdXN0b21WYWx1ZUdldHRlciB8fCBtX3R5cGUgPT0gQ3Vz
dG9tQWNjZXNzb3JHZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IG1fdHlw
ZSA9PSBDdXN0b21BY2Nlc3NvclNldHRlcik7CiAgICAgICAgICAgICBBU1NFUlQoIWRvZXNQcm9w
ZXJ0eVN0b3JhZ2VMb2Fkcyk7IC8vIE9yIHdlIG5lZWQgYW4gZXh0cmEgcmVnaXN0ZXIuIFdlIHJl
bHkgb24gcHJvcGVydHlPd25lckdQUiBiZWluZyBjb3JyZWN0IGhlcmUuCiAKKyAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBoYXNBbHRlcm5hdGVCYXNlKCkgPyBhbHRl
cm5hdGVCYXNlKCktPmdsb2JhbE9iamVjdCh2bSkgOiBzdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0
KCk7CisKICAgICAgICAgICAgIC8vIE5lZWQgdG8gbWFrZSByb29tIGZvciB0aGUgQyBjYWxsIHNv
IGFueSBvZiBvdXIgc3RhY2sgc3BpbGxhZ2UgaXNuJ3Qgb3ZlcndyaXR0ZW4uIEl0J3MKICAgICAg
ICAgICAgIC8vIGhhcmQgdG8gdHJhY2sgaWYgc29tZW9uZSBkaWQgc3BpbGxhZ2Ugb3Igbm90LCBz
byB3ZSBqdXN0IGFzc3VtZSB0aGF0IHdlIGFsd2F5cyBuZWVkCiAgICAgICAgICAgICAvLyB0byBt
YWtlIHNvbWUgc3BhY2UgaGVyZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1
ZGUgIkxMSW50UENSYW5nZXMuaCIKICNpbmNsdWRlICJWTUVudHJ5UmVjb3JkLmgiCisjaW5jbHVk
ZSAiVk1FbnRyeVNjb3BlLmgiCiAjaW5jbHVkZSAiV2FzbUNvbnRleHRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiV2FzbUluc3RhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
CkBAIC0yNDQsNiArMjQ1LDMwIEBAIFNvdXJjZU9yaWdpbiBDYWxsRnJhbWU6OmNhbGxlclNvdXJj
ZU9yaWcKICAgICByZXR1cm4gc291cmNlT3JpZ2luOwogfQogCitKU0dsb2JhbE9iamVjdCogQ2Fs
bEZyYW1lOjpnbG9iYWxPYmplY3RPZkNsb3Nlc3RDb2RlQmxvY2soVk0mIHZtLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbnVsbHB0
cjsKKyAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgdm0sIFsmXShTdGFja1Zpc2l0
b3ImIHZpc2l0b3IpIHsKKyAgICAgICAgaWYgKHZpc2l0b3ItPmlzV2FzbUZyYW1lKCkpIHsKKyAg
ICAgICAgICAgIGdsb2JhbE9iamVjdCA9IHZpc2l0b3ItPmNhbGxGcmFtZSgpLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KHZtKTsKKyAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6
RG9uZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYXV0byogY29kZUJsb2NrID0gdmlzaXRvci0+
Y29kZUJsb2NrKCkpIHsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0g
Q29kZVR5cGU6OkZ1bmN0aW9uQ29kZSAmJiBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
Pihjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpKS0+aXNCdWlsdGluRnVuY3Rpb24oKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpTdGF0dXM6OkNvbnRpbnVlOworICAg
ICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAg
ICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6RG9uZTsKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlQodmlzaXRvci0+Y29kZVR5cGUoKSA9PSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpD
b2RlVHlwZTo6TmF0aXZlKTsKKyAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVzOjpD
b250aW51ZTsKKyAgICB9KTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0OworICAgIGlmICh2bS5lbnRyeVNjb3BlKQorICAgICAgICByZXR1cm4gdm0u
ZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFN0
cmluZyBDYWxsRnJhbWU6OmZyaWVuZGx5RnVuY3Rpb25OYW1lKCkKIHsKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMjc5MzczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjMsNiArMjYzLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBpbmxpbmUgdm9p
ZCBzZXRDb2RlQmxvY2soQ29kZUJsb2NrKik7CiAgICAgICAgIHZvaWQgc2V0UmV0dXJuUEModm9p
ZCogdmFsdWUpIHsgY2FsbGVyRnJhbWVBbmRQQygpLnJldHVyblBDID0gdmFsdWU7IH0KIAorICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dE9mQ2xvc2VzdENvZGVCbG9jayhWTSYsIENhbGxGcmFtZSopOwogICAgICAgICBTdHJpbmcgZnJp
ZW5kbHlGdW5jdGlvbk5hbWUoKTsKIAogICAgICAgICAvLyBDYWxsRnJhbWU6Oml0ZXJhdGUoKSBl
eHBlY3RzIGEgRnVuY3RvciB0aGF0IGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBtZXRob2Q6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29t
cGFyZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsQ29sbGF0b3JQcm90
b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKEludGxDb2xsYXRvckZ1bmNDb21wYXJlKTsKIApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBD
bGFzc0luZm8gSW50bENvbGxhdG9yUHJvdG90eXBlOjpzCiAKIC8qIFNvdXJjZSBmb3IgSW50bENv
bGxhdG9yUHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gY29sbGF0b3JQcm90b3R5cGVUYWJsZQotICBj
b21wYXJlICAgICAgICAgIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUgICAgICAg
IERvbnRFbnVtfEFjY2Vzc29yCisgIGNvbXBhcmUgICAgICAgICAgSW50bENvbGxhdG9yUHJvdG90
eXBlR2V0dGVyQ29tcGFyZSAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IK
ICAgcmVzb2x2ZWRPcHRpb25zICBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRp
b25zICBEb250RW51bXxGdW5jdGlvbiAwCiBAZW5kCiAqLwpAQCAtMTA1LDE0ICsxMDUsMTQgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxDb2xsYXRvckZ1bgogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5jb21wYXJlU3RyaW5ncyhn
bG9iYWxPYmplY3QsIHhWaWV3V2l0aFN0cmluZy52aWV3LCB5Vmlld1dpdGhTdHJpbmcudmlldykp
KTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxDb2xsYXRvclByb3RvdHlwZUdl
dHRlckNvbXBhcmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bENvbGxhdG9yUHJvdG90eXBl
R2V0dGVyQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgLy8gMTAuMy4zIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgKEVDTUEtNDAyIDIu
MCkKICAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhpcyBDb2xsYXRvciBvYmplY3QuCi0gICAg
SW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBq
c0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKCFjb2xsYXRvcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5
cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6
ZWQgYXMgYSBDb2xsYXRvciJfcykpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3Jt
YXQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZVRvUGFydHMpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY0Zvcm1hdFRvUGFydHMpOwpAQCAtNTMsNyArNTMsNyBAQCBjb25zdCBDbGFzc0luZm8g
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90CiAKIC8qIFNvdXJjZSBmb3IgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVUYWJsZQot
ICBmb3JtYXQgICAgICAgICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVy
Rm9ybWF0ICAgICAgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICBmb3JtYXQgICAgICAgICAg
ICAgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgICAg
ICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogICBmb3JtYXRSYW5nZSAgICAgICAg
ICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAyCiAgIGZvcm1hdFRvUGFydHMgICAgICAgICBJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKICAgcmVzb2x2ZWRPcHRpb25zICAgICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMgICAgICAgRG9udEVudW18RnVuY3Rpb24gMApAQCAtMTEzLDE0ICsx
MTMsMTQgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGltZUZvcgogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0KGds
b2JhbE9iamVjdCwgdmFsdWUpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMi4zLjMgSW50bC5EYXRlVGltZUZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IGR0ZiBi
ZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KLSAgICBhdXRvKiBkdGYgPSBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGR0ZiA9IEludGxEYXRlVGltZUZvcm1hdDo6dW53cmFw
Rm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgLy8gMi4gUmV0dXJu
SWZBYnJ1cHQoZHRmKS4KICAgICBpZiAoVU5MSUtFTFkoIWR0ZikpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAko
cmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExv
Y2FsZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2ICszNCwxNiBAQCBuYW1l
c3BhY2UgSlNDIHsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQ
cm90b3R5cGVGdW5jTWF4aW1pemUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
SW50bExvY2FsZVByb3RvdHlwZUZ1bmNNaW5pbWl6ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKLXN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZSk7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyQ2FsZW5kYXIpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2Fs
ZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uKTsKLXN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUpOwot
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ck51bWVyaWMpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UpOwotc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCk7Ci1z
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
UmVnaW9uKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJCYXNlTmFtZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0
aW9uKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJIb3VyQ3ljbGUpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50
bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFu
Z3VhZ2UpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3Rv
dHlwZUdldHRlclNjcmlwdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uKTsKIAogfQogCkBAIC01OCwxNiArNTgsMTYgQEAg
Y29uc3QgQ2xhc3NJbmZvIEludGxMb2NhbGVQcm90b3R5cGU6OnNfaQogICBtYXhpbWl6ZSAgICAg
ICAgIEludGxMb2NhbGVQcm90b3R5cGVGdW5jTWF4aW1pemUgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDAKICAgbWluaW1pemUgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01pbmlt
aXplICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCiAgIHRvU3RyaW5nICAgICAgICAgSW50
bExvY2FsZVByb3RvdHlwZUZ1bmNUb1N0cmluZyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MAotICBiYXNlTmFtZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZSAg
ICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIGNhbGVuZGFyICAgICAgICAgSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckNhbGVuZGFyICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgY2FzZUZp
cnN0ICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0ICAgICAgICBEb250
RW51bXxBY2Nlc3NvcgotICBjb2xsYXRpb24gICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0
ZXJDb2xsYXRpb24gICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIGhvdXJDeWNsZSAgICAgICAg
SW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSAgICAgICAgRG9udEVudW18QWNjZXNz
b3IKLSAgbnVtZXJpYyAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYyAg
ICAgICAgICBEb250RW51bXxBY2Nlc3NvcgotICBudW1iZXJpbmdTeXN0ZW0gIEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0gIERvbnRFbnVtfEFjY2Vzc29yCi0gIGxhbmd1
YWdlICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlICAgICAgICAgRG9u
dEVudW18QWNjZXNzb3IKLSAgc2NyaXB0ICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyU2NyaXB0ICAgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgotICByZWdpb24gICAgICAgICAg
IEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24gICAgICAgICAgIERvbnRFbnVtfEFjY2Vz
c29yCisgIGJhc2VOYW1lICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1l
ICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgY2FsZW5kYXIgICAg
ICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIgICAgICAgICBEb250RW51bXxS
ZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBjYXNlRmlyc3QgICAgICAgIEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJDYXNlRmlyc3QgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vz
c29yCisgIGNvbGxhdGlvbiAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlv
biAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgaG91ckN5Y2xlICAg
ICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlICAgICAgICBEb250RW51bXxS
ZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBudW1lcmljICAgICAgICAgIEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJOdW1lcmljICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vz
c29yCisgIG51bWJlcmluZ1N5c3RlbSAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmlu
Z1N5c3RlbSAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbGFuZ3VhZ2UgICAg
ICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UgICAgICAgICBEb250RW51bXxS
ZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBzY3JpcHQgICAgICAgICAgIEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJTY3JpcHQgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vz
c29yCisgIHJlZ2lvbiAgICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbiAg
ICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKIEBlbmQKICovCiAKQEAg
LTE0MiwxMiArMTQyLDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJv
dG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90
b3R5cGUuYmFzZU5hbWUKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyQmFzZU5hbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3Rv
dHlwZUdldHRlckJhc2VOYW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJ
bnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxv
Y2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5iYXNlTmFtZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0xNTYsMTIg
KzE1NiwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAK
IC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNh
bGVuZGFyCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckNhbGVuZGFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0
ZXJDYWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
YXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2Fs
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRs
LkxvY2FsZS5wcm90b3R5cGUuY2FsZW5kYXIgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4g
b2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMTcwLDEyICsxNzAsMTIg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRw
czovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QK
LUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZp
cnN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNl
Rmlyc3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8q
IGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2Nh
bGUucHJvdG90eXBlLmNhc2VGaXJzdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0xODQsMTIgKzE4NCwxMiBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNvbGxhdGlvbgotSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9j
YWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5w
cm90b3R5cGUuY29sbGF0aW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBp
bml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTE5OCwxMiArMTk4LDEyIEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5
LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuaG91ckN5Y2xlCi1KU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUg
PSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3Rv
dHlwZS5ob3VyQ3ljbGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMjEyLDEyICsyMTIsMTIgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMv
ZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmljCi1KU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1p
Y0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRv
KiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWVy
aWMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
TG9jYWxlIl9zKTsKIApAQCAtMjI1LDEyICsyMjUsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2Vj
LUludGwuTG9jYWxlLnByb3RvdHlwZS5udW1iZXJpbmdTeXN0ZW0KLUpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2Fs
ZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJv
dG90eXBlLm51bWJlcmluZ1N5c3RlbSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0yMzksMTIgKzIzOSwxMiBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1YWdlCi1KU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxl
ID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90
b3R5cGUubGFuZ3VhZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMjUzLDEyICsyNTMsMTIgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMv
ZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5zY3JpcHQKLUpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJTY3JpcHQsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nh
c3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBs
b2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnNjcmlwdCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2Nh
bGUiX3MpOwogCkBAIC0yNjcsMTIgKzI2NywxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
SW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50
bC5Mb2NhbGUucHJvdG90eXBlLnJlZ2lvbgotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1p
Y0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUucmVnaW9uIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1h
dCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlR2V0dGVyRm9ybWF0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyk7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9y
bWF0RnVuY0Zvcm1hdCk7CkBAIC00OSw3ICs0OSw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXAKIAogLyogU291cmNlIGZvciBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmx1dC5oCiBAYmVnaW4gbnVtYmVyRm9ybWF0UHJvdG90eXBlVGFibGUKLSAgZm9ybWF0ICAg
ICAgICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgRG9u
dEVudW18QWNjZXNzb3IKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IK
ICAgZm9ybWF0VG9QYXJ0cyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRv
UGFydHMgICAgRG9udEVudW18RnVuY3Rpb24gMQogICByZXNvbHZlZE9wdGlvbnMgIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICBEb250RW51bXxGdW5jdGlvbiAw
CiBAZW5kCkBAIC0xMDgsMTQgKzEwOCwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50
bE51bWJlckZvcm1hCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZv
cm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDExLjMuMyBJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IG5mIGJl
IHRoaXMgTnVtYmVyRm9ybWF0IG9iamVjdC4KLSAgICBhdXRvKiBuZiA9IEludGxOdW1iZXJGb3Jt
YXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGF1dG8qIG5mID0gSW50bE51bWJlckZvcm1hdDo6dW53cmFwRm9yT2xkRnVu
Y3Rpb25zKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKFVOTElLRUxZKCFuZikpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Il9z
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDkgKzU3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgIHNldEZsb2F0NjQgICAgICAgICAgICBk
YXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAg
ICAgMiAgRGF0YVZpZXdTZXRGbG9hdDY0CiAgIHNldEJpZ0ludDY0ICAgICAgICAgICBkYXRhVmll
d1Byb3RvRnVuY1NldEJpZ0ludDY0ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgog
ICBzZXRCaWdVaW50NjQgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRCaWdVaW50NjQgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgYnVmZmVyICAgICAgICAgICAgICAgIGRh
dGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIgICAgICAgICAgICBEb250RW51bXxBY2Nlc3NvciAgICAg
ICAwCi0gIGJ5dGVMZW5ndGggICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0
aCAgICAgICAgRG9udEVudW18QWNjZXNzb3IgICAgICAgMAotICBieXRlT2Zmc2V0ICAgICAgICAg
ICAgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQgICAgICAgIERvbnRFbnVtfEFjY2Vzc29y
ICAgICAgIDAKKyAgYnVmZmVyICAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZm
ZXIgICAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBieXRlTGVu
Z3RoICAgICAgICAgICAgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGggICAgICAgIERvbnRF
bnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGJ5dGVPZmZzZXQgICAgICAgICAgICBkYXRh
Vmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9t
QWNjZXNzb3IKIEBlbmQKICovCiAKQEAgLTgzLDkgKzgzLDkgQEAgc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oZGF0YVZpZQogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
ZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGRhdGFWaWV3UHJvdG9GdW5jU2V0QmlnSW50NjQpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0Z1bmNTZXRCaWdVaW50NjQpOwotc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlcik7Ci1zdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0
aCk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVy
Qnl0ZU9mZnNldCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1By
b3RvR2V0dGVyQnVmZmVyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGRhdGFW
aWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KTsKIAogfQogCkBAIC0yMjMsMjQgKzIy
MywyNCBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnCiAKIElHTk9S
RV9DTEFOR19XQVJOSU5HU19CRUdJTigibWlzc2luZy1wcm90b3R5cGVzIikKIAotSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8
SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3
KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVj
dHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh2aWV3LT5wb3NzaWJseVNoYXJlZEpTQnVmZmVy
KGdsb2JhbE9iamVjdCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3
UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3UHJv
dG9HZXR0ZXJCeXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFt
aWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmICghdmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5ieXRlTGVuZ3RoIGV4cGVjdHMgfHRoaXN8IHRv
IGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAgICAgaWYgKHZpZXctPmlzRGV0YWNoZWQoKSkKQEAg
LTI0OSwxMiArMjQ5LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3Rv
R2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7
CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9m
ZnNldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNl
dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmll
dyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXZpZXcpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRhVmll
dy5wcm90b3R5cGUuYnl0ZU9mZnNldCBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9i
amVjdCIpOwogICAgIGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5MSw5ICs3OTEsNiBAQCBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEpTR2xvYmFsT2Jq
CiAgICAgICAgICAgICAgICAgaGFzUHJvcGVydHkgPSB0cnVlOwogICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZXMgPSBlbnRyeS0+dmFsdWUtPmF0dHJpYnV0ZXMoKTsKIAotICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhZnRlciB3cml0YWJsZSBhY2Nlc3NvcnMgYXJlIGludHJv
ZHVjZWQgdG8gc3RhdGljIGhhc2ggdGFibGVzLgotICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1
dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKQotICAgICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGVzIHw9IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seTsKICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgd2Ugc3RvcCBkZWZhdWx0aW5nIHRvIEN1c3Rv
bVZhbHVlIGluIHN0YXRpYyBoYXNoIHRhYmxlcy4KICAgICAgICAgICAgICAgICBpZiAoIShhdHRy
aWJ1dGVzICYgKFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IFByb3BlcnR5QXR0
cmlidXRlOjpCdWlsdGluT3JGdW5jdGlvbk9yQWNjZXNzb3JPckxhenlQcm9wZXJ0eU9yQ29uc3Rh
bnQpKSkKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tVmFsdWU7CkBAIC04MjIsNyArODE5LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0SW5s
aW5lU2xvdyhKU0dsb2JhbE9iagogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzNDcKICAgICAgICAgICAgICAgICBzbG90LnNldEN1
c3RvbUFjY2Vzc29yKG9iaiwgY3VzdG9tU2V0dGVyKTsKICAgICAgICAgICAgICAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgY3VzdG9tU2V0dGVyKGdsb2JhbE9iamVjdCwgSlNW
YWx1ZTo6ZW5jb2RlKHNsb3QudGhpc1ZhbHVlKCkpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIGN1c3RvbVNldHRlcihvYmotPmdsb2JhbE9i
amVjdCh2bSksIEpTVmFsdWU6OmVuY29kZShzbG90LnRoaXNWYWx1ZSgpKSwgSlNWYWx1ZTo6ZW5j
b2RlKHZhbHVlKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbVZhbHVlKSB7CkBAIC04MzEsNyArODI4LDcgQEAgYm9vbCBKU09iamVjdDo6
cHV0SW5saW5lU2xvdyhKU0dsb2JhbE9iagogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIG9ubHkgYmUgY2FjaGluZyB0aGVzZSBpZiB3ZSdyZSBub3QgYW4gdW5jYWNoZWFi
bGUgZGljdGlvbmFyeToKICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTM0NwogICAgICAgICAgICAgICAgICAgICBzbG90LnNl
dEN1c3RvbVZhbHVlKG9iaiwgY3VzdG9tU2V0dGVyKTsKLSAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
OjplbmNvZGUob2JqKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgcHJvcGVydHlOYW1lKSk7Cisg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3VzdG9tU2V0dGVy
KG9iai0+Z2xvYmFsT2JqZWN0KHZtKSwgSlNWYWx1ZTo6ZW5jb2RlKG9iaiksIEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSksIHByb3BlcnR5TmFtZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBpZiAoIWlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCBvYmopKSB7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIEF2b2lkIFB1dE1vZGVQdXQgYmVjYXVzZSBpdCBmYWlscyBmb3Igbm9uLWV4
dGVuc2libGUgc3RydWN0dXJlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlTbG90LmNwcAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
MTEgKzMzLDEyIEBAIEpTVmFsdWUgUHJvcGVydHlTbG90OjpmdW5jdGlvbkdldHRlcihKU0cKICAg
ICByZXR1cm4gbV9kYXRhLmdldHRlci5nZXR0ZXJTZXR0ZXItPmNhbGxHZXR0ZXIoZ2xvYmFsT2Jq
ZWN0LCBtX3RoaXNWYWx1ZSk7CiB9CiAKLUpTVmFsdWUgUHJvcGVydHlTbG90OjpjdXN0b21HZXR0
ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkgY29uc3QKK0pTVmFsdWUgUHJvcGVydHlTbG90OjpjdXN0b21HZXR0ZXIoVk0mIHZtLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogeworICAgIEFTU0VSVChtX3Nsb3RCYXNlKTsK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9zbG90QmFzZS0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IG1fYXR0cmlidXRlcyAmIFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciA/IG1fdGhpc1ZhbHVlIDogSlNWYWx1ZShzbG90QmFz
ZSgpKTsKICAgICBpZiAoYXV0byBkb21BdHRyaWJ1dGUgPSB0aGlzLT5kb21BdHRyaWJ1dGUoKSkg
ewotICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIGlmICghdGhp
c1ZhbHVlLmluaGVyaXRzKHZtLCBkb21BdHRyaWJ1dGUtPmNsYXNzSW5mbykpIHsKICAgICAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgICAgIHJl
dHVybiB0aHJvd0RPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBkb21BdHRyaWJ1dGUtPmNsYXNzSW5mbywgcHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAyNzkzNzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzY3LDcgKzM2Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIGZ1bmN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjdXN0b21HZXR0ZXIoSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgY3VzdG9tR2V0dGVyKFZNJiwgUHJvcGVydHlOYW1lKSBjb25zdDsKIAogICAgIHVuaW9uIHsK
ICAgICAgICAgRW5jb2RlZEpTVmFsdWUgdmFsdWU7CkBAIC00MDUsNyArNDA1LDcgQEAgQUxXQVlT
X0lOTElORSBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Z2V0VgogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZGVjb2RlKG1fZGF0YS52YWx1ZSk7CiAgICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVH
ZXR0ZXIpCiAgICAgICAgIHJldHVybiBmdW5jdGlvbkdldHRlcihnbG9iYWxPYmplY3QpOwotICAg
IHJldHVybiBjdXN0b21HZXR0ZXIoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJl
dHVybiBjdXN0b21HZXR0ZXIoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSwgcHJvcGVydHlOYW1lKTsKIH0K
IAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Z2V0VmFsdWUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3QgcHJvcGVydHlOYW1lKSBjb25zdApAQCAtNDE1
LDcgKzQxNSw3IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmdldFYKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShtX2RhdGEudmFsdWUpOwogICAgIGlmIChtX3By
b3BlcnR5VHlwZSA9PSBUeXBlR2V0dGVyKQogICAgICAgICByZXR1cm4gZnVuY3Rpb25HZXR0ZXIo
Z2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gY3VzdG9tR2V0dGVyKGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGN1c3RvbUdldHRl
cihnZXRWTShnbG9iYWxPYmplY3QpLCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24pOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoc3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlw
dGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0Z1bmNU
b1N0cmluZyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0Z1
bmNWYWx1ZU9mKTsKIApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8gU3ltYm9sUHJv
dG90eXBlOjpzX2luZm8gCiAKIC8qIFNvdXJjZSBmb3IgU3ltYm9sUHJvdG90eXBlLmx1dC5oCiBA
YmVnaW4gc3ltYm9sUHJvdG90eXBlVGFibGUKLSAgZGVzY3JpcHRpb24gICAgICAgc3ltYm9sUHJv
dG9HZXR0ZXJEZXNjcmlwdGlvbiAgICBEb250RW51bXxBY2Nlc3NvciAwCisgIGRlc2NyaXB0aW9u
ICAgICAgIHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24gICAgRG9udEVudW18UmVhZE9ubHl8
Q3VzdG9tQWNjZXNzb3IKICAgdG9TdHJpbmcgICAgICAgICAgc3ltYm9sUHJvdG9GdW5jVG9TdHJp
bmcgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCiAgIHZhbHVlT2YgICAgICAgICAgIHN5bWJv
bFByb3RvRnVuY1ZhbHVlT2YgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAogQGVuZApAQCAt
ODcsMTIgKzg3LDEyIEBAIGlubGluZSBTeW1ib2wqIHRyeUV4dHJhY3RTeW1ib2woVk0mIHZtLCAK
ICAgICByZXR1cm4gYXNTeW1ib2woanNDYXN0PFN5bWJvbE9iamVjdCo+KHRoaXNPYmplY3QpLT5p
bnRlcm5hbFZhbHVlKCkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJv
dG9HZXR0ZXJEZXNjcmlwdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihzeW1ib2xQcm90b0dl
dHRlckRlc2NyaXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghc3ltYm9sKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTeW1ib2xEZXNjcmlwdGlv
blR5cGVFcnJvcik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTkxLDcgKzE1OTEsOSBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihjdXN0b21H
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXRBY2Nlc3Nvckdsb2Jh
bE9iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXRWYWx1
ZUdsb2JhbE9iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21T
ZXRBY2Nlc3Nvcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRB
Y2Nlc3Nvckdsb2JhbE9iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihj
dXN0b21TZXRWYWx1ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21T
ZXRWYWx1ZUdsb2JhbE9iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihj
dXN0b21GdW5jdGlvblNldHRlcik7CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihjdXN0b21H
ZXRBY2Nlc3NvciwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQpAQCAtMTYzMyw2ICsxNjM1LDIyIEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihjdXN0b21TZXRBY2Nlc3MKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKGN1c3RvbVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBpZiAoIXZhbHVlLmlzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdCh2YWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBv
YmplY3QtPnB1dChvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInJlc3VsdCIpLCBnbG9iYWxPYmplY3QsIHNsb3QpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRWYWx1ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHNsb3RWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIERvbGxhclZNQXNzZXJ0U2Nv
cGUgYXNzZXJ0U2NvcGU7CkBAIC0xNjUxLDYgKzE2NjksMjQgQEAgSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKGN1c3RvbVNldFZhbHVlLAogICAgIHJldHVybiB0cnVlOwogfQogCitKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0VmFsdWVHbG9iYWxPYmplY3QsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBzbG90VmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3Bl
IGFzc2VydFNjb3BlOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIFJF
TEVBU0VfQVNTRVJUKEpTVmFsdWU6OmRlY29kZShzbG90VmFsdWUpLmluaGVyaXRzPEpTVGVzdEN1
c3RvbUdldHRlclNldHRlcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSk7CisKKyAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgaWYgKCF2YWx1ZS5pc09i
amVjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QodmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAg
b2JqZWN0LT5wdXQob2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJyZXN1bHQiKSwgZ2xvYmFsT2JqZWN0LCBzbG90KTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCiBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tRnVuY3Rpb25TZXR0ZXIsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7CkBAIC0xNjc4LDkgKzE3MTQsMTMgQEAgdm9pZCBKU1Rlc3RDdXN0b21HZXR0
ZXJTZXR0ZXI6OmZpbmlzaENyZQogICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3IiKSwKICAgICAgICAgQ3VzdG9t
R2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yLCBjdXN0b21TZXRBY2Nl
c3NvciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IpKTsKICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0IiksCi0gICAgICAgIEN1c3RvbUdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRWYWx1ZUdsb2JhbE9iamVjdCwgbnVsbHB0
ciksIDApOworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0
VmFsdWVHbG9iYWxPYmplY3QsIGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0KSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSkpOwogICAgIHB1dERp
cmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9t
QWNjZXNzb3JHbG9iYWxPYmplY3QiKSwKLSAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVh
dGUodm0sIGN1c3RvbUdldEFjY2Vzc29yR2xvYmFsT2JqZWN0LCBudWxscHRyKSwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsK
KyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29y
R2xvYmFsT2JqZWN0LCBjdXN0b21TZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsKKyAgICBwdXRE
aXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3Rv
bVZhbHVlTm9TZXR0ZXIiKSwKKyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0s
IGN1c3RvbUdldFZhbHVlLCBudWxscHRyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21WYWx1ZSkpOworICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3JSZWFkT25seSIpLAor
ICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3Is
IG51bGxwdHIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpOwogCiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21GdW5jdGlvbiIpLAogICAgICAgICBDdXN0
b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3IsIGN1c3RvbUZ1bmN0
aW9uU2V0dGVyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAJKHJldmlzaW9u
IDI3OTM3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5j
bHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5j
RXhwb3J0cyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG9HZXR0ZXJFeHBvcnRzKTsKIH0KIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b3R5cGUubHV0LmgiCkBAIC00Niw3ICs0Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBX
ZWJBc3NlbWJseUluc3RhbmNlUHJvdG8KIAogLyogU291cmNlIGZvciBXZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG90eXBlLmx1dC5oCiAgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlJbnN0
YW5jZQotIGV4cG9ydHMgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMgQWNjZXNz
b3IgMAorICBleHBvcnRzIHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0dldHRlckV4cG9ydHMgUmVh
ZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICBAZW5kCiAgKi8KIApAQCAtNjIsMTIgKzYyLDEyIEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlJbnN0YW4KICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
RnVuY0V4cG9ydHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlJbnN0YW5jZVBy
b3RvR2V0dGVyRXhwb3J0cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gZ2V0SW5zdGFuY2Uo
Z2xvYmFsT2JqZWN0LCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7IAorICAgIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBnZXRJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUoaW5zdGFuY2UtPm1vZHVsZVJlY29yZCgpLT5leHBvcnRzT2JqZWN0KCkpKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3Jv
dyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVBy
b3RvRnVuY0J1ZmZlcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3Nl
bWJseU1lbW9yeVByb3RvR2V0dGVyQnVmZmVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jVHlwZSk7CiB9CiAKQEAgLTUzLDcgKzUz
LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eQogLyogU291cmNl
IGZvciBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaAogQGJlZ2luIHByb3RvdHlwZVRh
YmxlV2ViQXNzZW1ibHlNZW1vcnkKICBncm93ICAgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNH
cm93ICAgRnVuY3Rpb24gMQotIGJ1ZmZlciB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZl
ciBBY2Nlc3NvciAwCisgYnVmZmVyIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9HZXR0ZXJCdWZmZXIg
UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICB0eXBlICAgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1
bmNUeXBlICAgRnVuY3Rpb24gMAogQGVuZAogKi8KQEAgLTg4LDEyICs4OCwxMiBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihyZXN1bHQucGFnZUNvdW50KCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9HZXR0ZXJCdWZmZXIsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseU1lbW9y
eSogbWVtb3J5ID0gZ2V0TWVtb3J5KGdsb2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOyAKKyAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoZ2xv
YmFsT2JqZWN0LCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOyAKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShtZW1vcnktPmJ1ZmZlcihnbG9iYWxPYmplY3QpKSk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxl
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5MzczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04od2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJseVRhYmxlUHJvdG9HZXR0ZXJMZW5ndGgpOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3cp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlUYWJsZVByb3Rv
RnVuY0dldCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRh
YmxlUHJvdG9GdW5jU2V0KTsKQEAgLTUyLDcgKzUyLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFz
c2VtYmx5VGFibGVQcm90b3R5cAogCiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5VGFibGVQcm90
b3R5cGUubHV0LmgKICBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseVRhYmxlCi0gbGVu
Z3RoIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGggQWNjZXNzb3IgMAorIGxlbmd0aCB3
ZWJBc3NlbWJseVRhYmxlUHJvdG9HZXR0ZXJMZW5ndGggUmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IK
ICBncm93ICAgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3cgICBGdW5jdGlvbiAxCiAgZ2V0
ICAgIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQgICAgRnVuY3Rpb24gMQogIHNldCAgICB3
ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0ICAgIEZ1bmN0aW9uIDIKQEAgLTcyLDEyICs3Miwx
MiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5VGFibGUqCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQ
cm90b0Z1bmNMZW5ndGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlUYWJsZVBy
b3RvR2V0dGVyTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShnbG9iYWxPYmpl
Y3QsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1dlYkFzc2VtYmx5VGFibGUq
IHRhYmxlID0gZ2V0VGFibGUoZ2xvYmFsT2JqZWN0LCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0YWJsZS0+bGVuZ3Ro
KCkpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIxLTA3LTAx
ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlND
XSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9i
YWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGZpeGVzIGNyb3NzLXJlYWxtIHlldCBzYW1lLW9yaWdpbiBXZWJJREwgYXR0
cmlidXRlcyB0byB0aHJvdyBlcnJvcnMgaW4gcmVhbG0gb2YKKyAgICAgICAgdGhlaXIgYWNjZXNz
b3IsIHdoaWxlIGVuc3VyaW5nIHRoYXQgYHdpbmRvdy5sb2NhdGlvbmAgYW5kIGBsb2NhdGlvbi5o
cmVmYCBzZXR0ZXJzIGRvbid0IGxlYWsKKyAgICAgICAgY3Jvc3Mtb3JpZ2luIE9iamVjdC5wcm90
b3R5cGUgdmlhIHRocm93biBlcnJvci4KKworICAgICAgICBTaW5jZSBMb2NhdGlvbiBzZXR0ZXJz
IHJlbGllZCBvbiBsZXhpY2FsIGdsb2JhbCBvYmplY3QgdG8gcGFzcyBvdXRnb2luZyBgZG9jdW1l
bnQucmVmZXJyZXJgLAorICAgICAgICB0aGV5IHdlcmUgdXBkYXRlZCB0byB1c2UgSW5jdW1iZW50
V2luZG93IGFzIHBlciBzcGVjIFsxXS4gY2FsbGVyR2xvYmFsT2JqZWN0KCkgd2FzIHJld29ya2Vk
CisgICAgICAgIHRvIHNraXAgbmF0aXZlIC8gYnVpbHQtaW4gY2FsbGVycyBhbmQgcmVseSBvbiBW
TUVudHJ5U2NvcGUgdG8gYWNjb21vZGF0ZSB0b3AtbGV2ZWwgPHNjcmlwdD4KKyAgICAgICAgY29k
ZSBuYXZpZ2F0aW5nIHZpYSBMb2NhdGlvbiBzZXR0ZXIsIG1ha2luZyB0aGUgaGVscGVyIG1vcmUg
dmVyc2F0aWxlLgorCisgICAgICAgIGdsb2JhbE9iamVjdE9mQ2xvc2VzdENvZGVCbG9jaygpIGZp
eGVkIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24gaW5zdGFuY2VzIGFuZCBMb2NhdGlvbidzCisgICAg
ICAgIGFzc2lnbigpIC8gcmVwbGFjZSgpIG1ldGhvZHMgdG8gcGFzcyBjb3JyZWN0IHJlZmVycmVy
LgorCisgICAgICAgIEFsc28sIHRoaXMgY2hhbmdlIGZpeGVzIHN0YXRpYyBhdHRyaWJ1dGVzIGxp
a2UgYFBlcmZvcm1hbmNlT2JzZXJ2ZXIuc3VwcG9ydGVkRW50cnlUeXBlc2AKKyAgICAgICAgdG8g
cmV0dXJuIHdyYXBwZXJzIG9mIHRoZWlyIHJlYWxtIGluc3RlYWQgb2YgbGV4aWNhbC4KKworICAg
ICAgICBbMV0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaGlzdG9yeS5o
dG1sI2xvY2F0aW9uLW9iamVjdC1uYXZpZ2F0ZSAoc3RlcCAyKQorCisgICAgICAgIFRlc3RzOiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
Z2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwKKyAgICAg
ICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3Jp
cHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbAorICAgICAgICAg
ICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdp
bi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93aW5kb3ctbG9jYXRpb24tYW5kLWxvY2F0aW9uLWhyZWYt
Y3Jvc3MtcmVhbG0tc2V0Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvcGVyZm9ybWFuY2UtdGltZWxpbmUvc3VwcG9ydGVkRW50cnlUeXBlcy1jcm9z
cy1yZWFsbS1hY2Nlc3MuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbGVyR2xvYmFsT2JqZWN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbmN1
bWJlbnRET01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93OjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9j
YXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cHV0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdl
bmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEpOgorICAgICAgICAoR2VuZXJhdGVDYWxsV2l0aFVzaW5n
UmVmZXJlbmNlcyk6CisgICAgICAgIChHZW5lcmF0ZUNhbGxXaXRoKToKKyAgICAgICAgRW5zdXJl
IEluY3VtYmVudFdpbmRvdyBjb21lcyBiZWZvcmUgRmlyc3RXaW5kb3cuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAgIFJlbW92ZSBhdHRyaWJ1dGVzIHRo
YXQgcmVsaWVkIG9uIENhbGxGcmFtZSBzaW5jZSBjdXN0b20gZ2V0dGVycyBkb24ndCBoYXZlIGl0
LgorCisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6CisgICAgICAgIFJlbW92ZSBbTGVnYWN5
VW5mb3JnZWFibGVdIGZyb20gYW5jZXN0b3JPcmlnaW5zIGJlY2F1c2UgaXQncyBzZXQgb24gdGhl
IGludGVyZmFjZS4KKwogMjAyMS0wNi0yOSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIE51bGxwdHIgY3Jhc2ggaW4gSFRNTFN0YWNrSXRlbTo6Y3JlYXRlIHZpYSBEb2N1
bWVudEZyYWdtZW50OjpwYXJzZUhUTUwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQyLDQ4ICs1NDIsNiBAQCBKU0M6OkpTT2JqZWN0KiBKU0RPTUdsb2JhbE9iamVjdDo6
bW9kdWxlCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdC0+dm0o
KSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwogfQogCi1K
U0RPTUdsb2JhbE9iamVjdCYgY2FsbGVyR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICBjbGFzcyBHZXRD
YWxsZXJHbG9iYWxPYmplY3RGdW5jdG9yIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEdldENhbGxl
ckdsb2JhbE9iamVjdEZ1bmN0b3IoKSA9IGRlZmF1bHQ7Ci0KLSAgICAgICAgU3RhY2tWaXNpdG9y
OjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9oYXNTa2lwcGVkRmlyc3RGcmFtZSkgewotICAgICAgICAg
ICAgICAgIG1faGFzU2tpcHBlZEZpcnN0RnJhbWUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJl
dHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAoYXV0byogY29kZUJsb2NrID0gdmlzaXRvci0+Y29kZUJsb2NrKCkpCi0gICAgICAgICAg
ICAgICAgbV9nbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwotICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHZpc2l0b3ItPmNhbGxlZSgpLnJh
d1B0cigpKTsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ2FsbGVlIGlzIG5vdCBhbiBvYmpl
Y3QgaWYgdGhlIGNhbGxlciBpcyBXZWIgQXNzZW1ibHkuCi0gICAgICAgICAgICAgICAgLy8gRmln
dXJlIG91dCB3aGF0IHRvIGRvIGhlcmUuIFdlIGNhbiBwcm9iYWJseSBnZXQgdGhlIGdsb2JhbCBv
YmplY3QKLSAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSB0b3AtbW9zdCBXYXNtIEluc3RhbmNl
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NzIxCi0gICAgICAg
ICAgICAgICAgaWYgKHZpc2l0b3ItPmNhbGxlZSgpLmlzQ2VsbCgpICYmIHZpc2l0b3ItPmNhbGxl
ZSgpLmFzQ2VsbCgpLT5pc09iamVjdCgpKQotICAgICAgICAgICAgICAgICAgICBtX2dsb2JhbE9i
amVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgpKS0+Z2xv
YmFsT2JqZWN0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpEb25lOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICBtdXRhYmxlIGJvb2wgbV9oYXNTa2lwcGVkRmlyc3RGcmFtZSB7IGZhbHNlIH07Ci0g
ICAgICAgIG11dGFibGUgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0IHsgbnVsbHB0ciB9
OwotICAgIH07Ci0KLSAgICBHZXRDYWxsZXJHbG9iYWxPYmplY3RGdW5jdG9yIGl0ZXI7Ci0gICAg
Y2FsbEZyYW1lLml0ZXJhdGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBpdGVyKTsKLSAgICBp
ZiAoaXRlci5nbG9iYWxPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuICpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihpdGVyLmdsb2JhbE9iamVjdCgpKTsKLQotICAgIC8vIElmIHdlIGNhbm5vdCBm
aW5kIEpTR2xvYmFsT2JqZWN0IGluIGNhbGxlciBmcmFtZXMsIHdlIGp1c3QgcmV0dXJuIHRoZSBj
dXJyZW50IGxleGljYWxHbG9iYWxPYmplY3QuCi0gICAgcmV0dXJuICpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci19Ci0KIEpTRE9NR2xvYmFsT2JqZWN0
KiB0b0pTRE9NR2xvYmFsT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDggKzE0Miw2IEBAIHByaXZhdGU6
CiAgICAgSlNDOjpXZWFrR0NNYXA8Q3Jvc3NPcmlnaW5NYXBLZXksIEpTQzo6R2V0dGVyU2V0dGVy
PiBtX2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVyTWFwOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgSlNE
T01HbG9iYWxPYmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
SlNDOjpDYWxsRnJhbWUmKTsKLQogSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmpl
Y3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiB0ZW1wbGF0
ZTxjbGFzcyBKU0NsYXNzPgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsOSAr
MjgyLDE5IEBAIEpTRE9NV2luZG93KiB0b0pTRE9NV2luZG93KEZyYW1lJiBmcmFtZSwKICAgICBy
ZXR1cm4gZnJhbWUuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKTsKIH0KIAotRE9NV2luZG93
JiBpbmN1bWJlbnRET01XaW5kb3coSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSYgY2FsbEZyYW1lKQorRE9NV2luZG93JiBpbmN1bWJlbnRET01XaW5kb3coSlNH
bG9iYWxPYmplY3QmIGZhbGxiYWNrR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkK
IHsKLSAgICByZXR1cm4gYXNKU0RPTVdpbmRvdygmY2FsbGVyR2xvYmFsT2JqZWN0KGxleGljYWxH
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSkpLT53cmFwcGVkKCk7CisgICAgaWYgKGF1dG8qIGdsb2Jh
bE9iamVjdCA9IENhbGxGcmFtZTo6Z2xvYmFsT2JqZWN0T2ZDbG9zZXN0Q29kZUJsb2NrKGZhbGxi
YWNrR2xvYmFsT2JqZWN0LnZtKCksICZjYWxsRnJhbWUpKQorICAgICAgICByZXR1cm4gYXNKU0RP
TVdpbmRvdyhnbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIGFzSlNET01XaW5k
b3coJmZhbGxiYWNrR2xvYmFsT2JqZWN0KS0+d3JhcHBlZCgpOworfQorCitET01XaW5kb3cmIGlu
Y3VtYmVudERPTVdpbmRvdyhKU0dsb2JhbE9iamVjdCYgZmFsbGJhY2tHbG9iYWxPYmplY3QpCit7
CisgICAgVk0mIHZtID0gZmFsbGJhY2tHbG9iYWxPYmplY3Qudm0oKTsKKyAgICBpZiAoYXV0byog
Z2xvYmFsT2JqZWN0ID0gQ2FsbEZyYW1lOjpnbG9iYWxPYmplY3RPZkNsb3Nlc3RDb2RlQmxvY2so
dm0sIHZtLnRvcENhbGxGcmFtZSkpCisgICAgICAgIHJldHVybiBhc0pTRE9NV2luZG93KGdsb2Jh
bE9iamVjdCktPndyYXBwZWQoKTsKKyAgICByZXR1cm4gYXNKU0RPTVdpbmRvdygmZmFsbGJhY2tH
bG9iYWxPYmplY3QpLT53cmFwcGVkKCk7CiB9CiAKIERPTVdpbmRvdyYgYWN0aXZlRE9NV2luZG93
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgJKHJldmlzaW9uIDI3OTM3MykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjEsNiArMTIxLDcgQEAgaW5saW5lIEpTRE9NV2luZG93KiB0b0pTRE9NV2luZG93
KEZyYW1lKgogLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZvciBhbiAiYXV0aG9yIGZ1bmN0aW9u
IG9yIHNjcmlwdCB0aGF0IG9yaWdpbmFsbHkgc2NoZWR1bGVkIHRoZSBjdXJyZW50bHktcnVubmlu
ZyBjYWxsYmFjay4iCiAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjM0MTI+LgogRE9NV2luZG93JiBpbmN1bWJlbnRET01XaW5kb3coSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTQzo6Q2FsbEZyYW1lJik7CitET01XaW5kb3cmIGluY3VtYmVudERPTVdpbmRv
dyhKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAKIERPTVdpbmRvdyYgYWN0aXZlRE9NV2luZG93KEpT
Qzo6SlNHbG9iYWxPYmplY3QmKTsKIERPTVdpbmRvdyYgZmlyc3RET01XaW5kb3coSlNDOjpKU0ds
b2JhbE9iamVjdCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMs
MTAgKzI2MywxNyBAQCBib29sIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsCiAK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAKLSAg
ICBpZiAocHJvcGVydHlOYW1lICE9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmxvY2F0aW9uUHVibGljTmFtZSgpKSB7CisgICAgU3Ry
aW5nIGVycm9yTWVzc2FnZTsKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdygqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLCBlcnJvck1lc3NhZ2UpKSB7CiAgICAgICAgIC8vIFdlIG9ubHkgYWxsb3cgc2V0dGluZyAi
bG9jYXRpb24iIGF0dHJpYnV0ZSBjcm9zcy1vcmlnaW4uCi0gICAgICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNPYmplY3QtPndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVycm9yKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5sb2NhdGlvblB1
YmxpY05hbWUoKSkgeworICAgICAgICAgICAgYXV0byogc2V0dGVyID0gc19pbmZvLnN0YXRpY1By
b3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSktPnByb3BlcnR5UHV0dGVyKCk7CisgICAg
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBzZXR0ZXIobGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3QudGhpc1ZhbHVlKCkpLCBKU1ZhbHVlOjplbmNv
ZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgdGhyb3dTZWN1cml0eUVycm9yKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAg
IGlmIChwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkgJiYgIWFsbG93c0xlZ2FjeUV4cGFuZG9JbmRl
eGVkUHJvcGVydGllcygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2Nh
dGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNMb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEs
MTcgKzExMSwyNiBAQCBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdEJ5SW5kCiBi
b29sIEpTTG9jYXRpb246OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2Fs
R2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9jYXRpb24qPihjZWxsKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAg
ICAvLyBBbHdheXMgYWxsb3cgYXNzaWduaW5nIHRvIHRoZSB3aG9sZSBsb2NhdGlvbi4KICAgICAv
LyBIb3dldmVyLCBhbGxvd2luZyBhc3NpZ25pbmcgb2YgcGllY2VzIG1pZ2h0IGluYWR2ZXJ0ZW50
bHkgZGlzY2xvc2UgcGFydHMgb2YgdGhlIG9yaWdpbmFsIGxvY2F0aW9uLgogICAgIC8vIFNvIGZh
bGwgdGhyb3VnaCB0byB0aGUgYWNjZXNzIGNoZWNrIGZvciB0aG9zZS4KLSAgICBpZiAocHJvcGVy
dHlOYW1lICE9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1
aWx0aW5OYW1lcygpLmhyZWZQdWJsaWNOYW1lKCkpIHsKLSAgICAgICAgaWYgKCFCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLndpbmRvdygpLCBUaHJvd1NlY3VyaXR5RXJyb3IpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CisgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS53aW5kb3coKSwgZXJyb3JNZXNzYWdl
KSkgeworICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmhyZWZQdWJsaWNOYW1lKCkpIHsK
KyAgICAgICAgICAgIGF1dG8qIHNldHRlciA9IHNfaW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLT5l
bnRyeShwcm9wZXJ0eU5hbWUpLT5wcm9wZXJ0eVB1dHRlcigpOworICAgICAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOworICAgICAgICAgICAgc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFs
dWU6OmVuY29kZShwdXRQcm9wZXJ0eVNsb3QudGhpc1ZhbHVlKCkpLCBKU1ZhbHVlOjplbmNvZGUo
dmFsdWUpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgdGhyb3dTZWN1cml0eUVycm9yKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIHNj
b3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjc5MzczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTg1Myw3ICs4
NTMsNyBAQCBzdWIgR2VuZXJhdGVOYW1lZEdldHRlckxhbWJkYQogewogICAgIG15ICgkb3V0cHV0
QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRuYW1lZEdldHRlck9wZXJhdGlvbiwgJG5h
bWVkR2V0dGVyRnVuY3Rpb25OYW1lLCAkSURMVHlwZSkgPSBAXzsKICAgICAKLSAgICBteSBAYXJn
dW1lbnRzID0gR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkbmFtZWRHZXR0ZXJPcGVy
YXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwgJG91dHB1dEFycmF5LCAic3Rk
OjpudWxsb3B0IiwgInRoaXNPYmplY3QiLCAiICAgICAgICAiKTsKKyAgICBteSBAYXJndW1lbnRz
ID0gR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkbmFtZWRHZXR0ZXJPcGVyYXRpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwgJG91dHB1dEFycmF5LCAic3RkOjpudWxs
b3B0IiwgInRoaXNPYmplY3QiLCAiIiwgIiAgICAgICAgIik7CiAgICAgcHVzaChAYXJndW1lbnRz
LCAicHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkiKTsKIAogICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9w
ZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8JHtJRExUeXBlfSwgJHtjbGFzc05hbWV9PihbXSAoJHtj
bGFzc05hbWV9JiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNs
dHlwZShhdXRvKSB7XG4iKTsKQEAgLTU4ODEsMTAgKzU4ODEsOSBAQCBzdWIgR2VuZXJhdGVHZXRD
YWxsRGF0YQogCiBzdWIgR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcwogewotICAgIG15
ICgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAkdGhpc1JlZmVyZW5jZSwg
JGluZGVudCkgPSBAXzsKKyAgICBteSAoJGNhbGxXaXRoLCAkb3V0cHV0QXJyYXksICRyZXR1cm5W
YWx1ZSwgJHRoaXNSZWZlcmVuY2UsICRjYWxsRnJhbWVSZWZlcmVuY2UsICRpbmRlbnQpID0gQF87
CiAKLSAgICBteSAkY2FsbEZyYW1lUG9pbnRlciA9ICJjYWxsRnJhbWUiOwotICAgIG15ICRjYWxs
RnJhbWVSZWZlcmVuY2UgPSAiKmNhbGxGcmFtZSI7CisgICAgbXkgJGNhbGxGcmFtZVBvaW50ZXIg
PSAkY2FsbEZyYW1lUmVmZXJlbmNlICYmICImJGNhbGxGcmFtZVJlZmVyZW5jZSI7CiAgICAgbXkg
JGdsb2JhbE9iamVjdCA9ICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2Jh
bE9iamVjdCkiOwogCiAgICAgcmV0dXJuIEdlbmVyYXRlQ2FsbFdpdGgoJGNhbGxXaXRoLCAkb3V0
cHV0QXJyYXksICRyZXR1cm5WYWx1ZSwgJHJldHVyblZhbHVlLCAkY2FsbEZyYW1lUG9pbnRlciwg
JGNhbGxGcmFtZVJlZmVyZW5jZSwgJGdsb2JhbE9iamVjdCwgJGdsb2JhbE9iamVjdCwgJHRoaXNS
ZWZlcmVuY2UsICRpbmRlbnQpOwpAQCAtNTk2NCwxNSArNTk2MywxNSBAQCBzdWIgR2VuZXJhdGVD
YWxsV2l0aAogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01XaW5kb3dCYXNlLmgiKTsK
ICAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiYWN0aXZlRE9NV2luZG93KCokZ2xvYmFsT2Jq
ZWN0KSIpOwogICAgIH0KLSAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRl
Q29udGFpbnMoJGNhbGxXaXRoLCAiRmlyc3RXaW5kb3ciKSkgeworICAgIGlmICgkY29kZUdlbmVy
YXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJJbmN1bWJlbnRXaW5k
b3ciKSkgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRE9NV2luZG93LmgiKTsKICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NV2luZG93QmFzZS5oIik7Ci0gICAgICAgIHB1c2go
QGNhbGxXaXRoQXJncywgImZpcnN0RE9NV2luZG93KCokZ2xvYmFsT2JqZWN0KSIpOworICAgICAg
ICBwdXNoKEBjYWxsV2l0aEFyZ3MsICJpbmN1bWJlbnRET01XaW5kb3coKiRnbG9iYWxPYmplY3Qi
IC4gKCRjYWxsRnJhbWVSZWZlcmVuY2UgPyAiLCAiIC4gJGNhbGxGcmFtZVJlZmVyZW5jZSA6ICIi
KSAuICIpIik7CiAgICAgfQotICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1
dGVDb250YWlucygkY2FsbFdpdGgsICJJbmN1bWJlbnRXaW5kb3ciKSkgeworICAgIGlmICgkY29k
ZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJGaXJzdFdp
bmRvdyIpKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJET01XaW5kb3cuaCIpOwogICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01XaW5kb3dCYXNlLmgiKTsKLSAgICAgICAgcHVz
aChAY2FsbFdpdGhBcmdzLCAiaW5jdW1iZW50RE9NV2luZG93KCokZ2xvYmFsT2JqZWN0LCAkY2Fs
bEZyYW1lUmVmZXJlbmNlKSIpOworICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3MsICJmaXJzdERP
TVdpbmRvdygqJGdsb2JhbE9iamVjdCkiKTsKICAgICB9CiAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIlJ1bnRpbWVGbGFncyIpKSB7
CiAgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgIiR7Z2xvYmFsT2JqZWN0fS0+cnVudGltZUZs
YWdzKCkiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGwJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDkgKzIw
MCw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKIAogICAgIFtD
YWxsV2l0aD1HbG9iYWxPYmplY3RdIGF0dHJpYnV0ZSBsb25nIHdpdGhFeGVjU3RhdGVBdHRyaWJ1
dGU7CiAgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2lu
ZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgbG9uZyB3aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxs
V2l0aEF0dHJpYnV0ZTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gYXR0
cmlidXRlIFRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGU7Ci0gICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmRXhlY1N0YXRlXSBhdHRyaWJ1dGUgVGVz
dE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZTsKLSAg
ICBbQ2FsbFdpdGg9ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0ICAmICBFeGVjU3RhdGUgIF0gYXR0
cmlidXRlIFRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRo
U3BhY2VzQXR0cmlidXRlOworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmly
c3RXaW5kb3ddIGF0dHJpYnV0ZSBET01TdHJpbmcgd2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRl
OwogCiAgICAgLy8gT3B0aW9uYWwgcGFyYW1ldGVycy4KICAgICB1bmRlZmluZWQgICAgbWV0aG9k
V2l0aE9wdGlvbmFsQXJnKG9wdGlvbmFsIGxvbmcgb3B0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZp
c2lvbiAyNzkzNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2MSwxMiArMTc2MSw4IEBAIHN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE8KIHN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aXRoRXhlY1N0YXRlQXR0cmlidXRlKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial93aXRoQ2FsbFdpdGhBbmRTZXR0
ZXJDYWxsV2l0aEF0dHJpYnV0ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU1Rlc3RPYmpfd2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOwotc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSk7Ci1zdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGUpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRl
QXR0cmlidXRlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial93
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUp
Owotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfd2l0aFNldHRlckNhbGxXaXRo
QXR0cmlidXRlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9i
al93aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOwogI2lmIEVOQUJMRShDb25kaXRpb24xKQog
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX2NvbmRpdGlvbmFsQXR0
cjEpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX2NvbmRp
dGlvbmFsQXR0cjEpOwpAQCAtMjEyNiw5ICsyMTIyLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgIm9ud2Via2l0Zm9vIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfb253ZWJraXRm
b28pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RPYmpfb253ZWJraXRmb28pIH0gfSwKICAgICB7ICJ3aXRoRXhlY1N0YXRlQXR0
cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpfd2l0aEV4ZWNTdGF0ZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial93aXRoRXhl
Y1N0YXRlQXR0cmlidXRlKSB9IH0sCiAgICAgeyAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdp
dGhBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9ial93aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSkgfSB9
LAotICAgIHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpIH0gfSwKLSAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlKSB9IH0sCi0gICAgeyAid2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZSkgfSB9LAorICAgIHsgIndpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial93aXRoU2V0dGVyQ2Fs
bFdpdGhBdHRyaWJ1dGUpIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICB7ICJjb25k
aXRpb25hbEF0dHIxIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9jb25kaXRp
b25hbEF0dHIxKSB9IH0sCiAjZWxzZQpAQCAtNDI2MiwxMTUgKzQyNTYsMzUgQEAgSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aQogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial93aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0
aEF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0KQorc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ial93aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9i
amVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNvbnRl
eHQpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUoKmNvbnRleHQpKSkpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZSIsICJUZXN0T2JqIik7IH0pOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIGltcGwu
c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoKmNvbnRleHQsICpuYXRpdmVW
YWx1ZSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1
dGVOYW1lKSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRK
U1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVjdCkKLXsKLSAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQotICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETEludGVyZmFjZTxUZXN0T2Jq
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93
U2NvcGUsIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1
dGUoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNh
bGxGcmFtZSwgKmNvbnRleHQpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwud2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlKCkpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3Rh
dGVBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKIHsKLSAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ial93aXRoU2V0
dGVyQ2FsbFdpdGhBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQog
Ci1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZVNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUsIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsgfSk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgYXV0byogY29udGV4dCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5l
Y2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewotICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJp
YnV0ZSgqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCAq
Y2FsbEZyYW1lLCAqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKLSAgICB9KTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial93aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKLX0K
LQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVjdCkKLXsKLSAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQotICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETEludGVyZmFjZTxU
ZXN0T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUsIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlKCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEds
b2JhbE9iamVjdCksICpjYWxsRnJhbWUsICpjb250ZXh0KSkpKTsKLX0KLQotSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFt
ZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2Jq
X3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRo
U3BhY2VzQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRl
c3RPYmo+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgW10oSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0F0
dHJpYnV0ZVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlc3RPYmplY3Qi
LCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmli
dXRlIiwgIlRlc3RPYmoiKTsgfSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewotICAgICAgICByZXR1cm4gaW1w
bC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRy
aWJ1dGUoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
KmNhbGxGcmFtZSwgKmNvbnRleHQsICpuYXRpdmVWYWx1ZSk7CisgICAgICAgIHJldHVybiBpbXBs
LnNldFdpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShpbmN1bWJlbnRET01XaW5kb3coKmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSksIGZpcnN0RE9NV2lu
ZG93KCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkpLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCitKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0
ZU5hbWUpKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpT
VGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+
OjpzZXQ8c2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1l
KTsKIH0KIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlv
bi5pZGwJKHJldmlzaW9uIDI3OTM3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24u
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MywyMiArNDMsMjIgQEAKICAgICBMZWdhY3lVbmZvcmdl
YWJsZSwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgTG9jYXRpb24gewotICAgIFtT
ZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0
eU9uU2V0dGVyXSBzdHJpbmdpZmllciBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhyZWY7CisgICAgW1Nl
dHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3Vy
aXR5T25TZXR0ZXJdIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKIAotICAg
IFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIHVuZGVmaW5lZCBhc3NpZ24oVVNW
U3RyaW5nIHVybCk7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9QWN0aXZlV2lu
ZG93JkZpcnN0V2luZG93XSB1bmRlZmluZWQgcmVwbGFjZShVU1ZTdHJpbmcgdXJsKTsKLSAgICBb
Q2FsbFdpdGg9QWN0aXZlV2luZG93XSB1bmRlZmluZWQgcmVsb2FkKCk7CisgICAgW0NhbGxXaXRo
PUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJpbmcg
dXJsKTsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93JkZpcnN0V2luZG93LCBEb05vdENo
ZWNrU2VjdXJpdHldIHVuZGVmaW5lZCByZXBsYWNlKFVTVlN0cmluZyB1cmwpOworICAgIFtDYWxs
V2l0aD1JbmN1bWJlbnRXaW5kb3ddIHVuZGVmaW5lZCByZWxvYWQoKTsKIAogICAgIC8vIFVSSSBk
ZWNvbXBvc2l0aW9uIGF0dHJpYnV0ZXMKLSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93
JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHByb3RvY29sOwotICAgIFtTZXR0ZXJD
YWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaG9z
dDsKLSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1
dGUgVVNWU3RyaW5nIGhvc3RuYW1lOwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cm
Rmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcG9ydDsKLSAgICBbU2V0dGVyQ2FsbFdp
dGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHBhdGhuYW1l
OwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0
ZSBVU1ZTdHJpbmcgc2VhcmNoOwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmly
c3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaGFzaDsKKyAgICBbU2V0dGVyQ2FsbFdpdGg9
SW5jdW1iZW50V2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHByb3RvY29s
OworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJp
YnV0ZSBVU1ZTdHJpbmcgaG9zdDsKKyAgICBbU2V0dGVyQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93
JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhvc3RuYW1lOworICAgIFtTZXR0ZXJD
YWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcg
cG9ydDsKKyAgICBbU2V0dGVyQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93JkZpcnN0V2luZG93XSBh
dHRyaWJ1dGUgVVNWU3RyaW5nIHBhdGhuYW1lOworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJl
bnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc2VhcmNoOworICAgIFtT
ZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZT
dHJpbmcgaGFzaDsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgb3JpZ2luOwog
Ci0gICAgW0xlZ2FjeVVuZm9yZ2VhYmxlLCBTYW1lT2JqZWN0LCBDYWNoZWRBdHRyaWJ1dGVdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGFuY2VzdG9yT3JpZ2luczsKKyAgICBbU2Ft
ZU9iamVjdCwgQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTGlz
dCBhbmNlc3Rvck9yaWdpbnM7CiB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5MzczKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEt
MDctMDEgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAg
IFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRoIHRoZWlyIGhvbGRlcidz
IGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMt
ZnJhbWUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJj
ZXM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNl
cy9kdW1teS1mcmFtZS0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxPYmpl
Y3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9j
LWNvbnRleHQtMi5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5l
ci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sOgorICAgICAgICBU
aGVzZSB0ZXN0cyB1c2VkIHRvIHBhc3MgYXMgaXMsIHByb2JhYmx5LCBkdWUgdG8gY29tYmluYXRp
b24gb2Ygb2xkIChpbmNvcnJlY3QpIGJlaGF2aW9yIGFuZAorICAgICAgICBzb21lIGltcGxlbWVu
dGF0aW9uIGRldGFpbHMgb2YgcnVuLXdlYmtpdC10ZXN0cy4gVGhleSBmYWlsIG9uIE1pbmlCcm93
c2VyIC8gQ2hyb21lIC8gRmlyZWZveAorICAgICAgICB1bmxlc3MgbW9kaWZpZWQgbm90IHRvIHVz
ZSBkYXRhOi8vIHByb3RvY29sLCB3aGljaCBpcyBub3Qgc3lzdGVtIHVuZGVyIHRlc3QuCisKKyAg
ICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24tcGFyZW50Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgUmV2ZXJ0IHRoZSBjaGFuZ2VzIG1hZGUgaW4gcjE3NDk5Ni4gTG9jYXRpb246OmFzc2lnbigp
IG5vdyB1c2VzIGNvcnJlY3QgKGluY3VtYmVudCkgV2luZG93CisgICAgICAgIHRvIHNldCBvdXRn
b2luZyByZWZlcnJlciBhbmQgcGVyZm9ybSBzZWN1cml0eSBjaGVja3MsIGFsaWduaW5nIFdlYktp
dCB3aXRoIENocm9tZSAvIEZpcmVmb3guCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWdvcGQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWdvcGQuaHRtbDogQWRkZWQuCisKIDIwMjEtMDYt
MjkgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxscHRyIGNyYXNo
IGluIEhUTUxTdGFja0l0ZW06OmNyZWF0ZSB2aWEgRG9jdW1lbnRGcmFnbWVudDo6cGFyc2VIVE1M
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMt
ZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3
OTM3MykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1h
cy1mcmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsMTAgKzUsMTAgQEAgUEFT
UyB3aW5kb3cuZnJhbWVzWzBdLmZyYW1lRWxlbWVudC5jb250ZQogUEFTUyB3aW5kb3cuZnJhbWVz
WzFdLmZyYW1lRWxlbWVudC5uYW1lIGlzICJvYmoiCiBQQVNTIHdpbmRvdy5mcmFtZXNbMV0uZnJh
bWVFbGVtZW50LmNvbnRlbnRXaW5kb3cgaXMgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVsZW1lbnQu
Y29udGVudERvY3VtZW50LmRlZmF1bHRWaWV3CiBQQVNTIHdpbmRvdy5mcmFtZXNbMV0uZnJhbWVF
bGVtZW50LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQgaXMgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVs
ZW1lbnQuY29udGVudERvY3VtZW50Ci1Mb2FkaW5nICdkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNv
bnRlbnRzIG9mIGlmcmFtZScgaW4gaWZyYW1lLi4uCi1Mb2FkaW5nICdkYXRhOnRleHQvaHRtbCxV
cGRhdGVkIGNvbnRlbnRzIG9mIG9iamVjdCcgaW4gb2JqZWN0Li4uCi1QQVNTIHdpbmRvdy5mcmFt
ZXNbMF0ubG9jYXRpb24udG9TdHJpbmcoKSBpcyAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250
ZW50cyBvZiBpZnJhbWUiCi1QQVNTIHdpbmRvdy5mcmFtZXNbMV0ubG9jYXRpb24udG9TdHJpbmco
KSBpcyAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBvYmplY3QiCitMb2FkaW5n
ICdyZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sJyBpbiBpZnJhbWUuLi4KK0xvYWRpbmcgJ3Jl
c291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwnIGluIG9iamVjdC4uLgorUEFTUyB3aW5kb3cuZnJh
bWVzWzBdLmxvY2F0aW9uLmhyZWYuZW5kc1dpdGgoInJlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0
bWwiKSBpcyB0cnVlCitQQVNTIHdpbmRvdy5mcmFtZXNbMV0ubG9jYXRpb24uaHJlZi5lbmRzV2l0
aCgicmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbCIpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1l
Lmh0bWwJKHJldmlzaW9uIDI3OTM3MykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmpl
Y3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYs
OCBAQAogCiBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotdmFyIHVwZGF0ZWRGcmFtZVVSTCA9ICJk
YXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRzIG9mIGlmcmFtZSI7Ci12YXIgdXBkYXRlZE9i
amVjdFVSTCA9ICJkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRzIG9mIG9iamVjdCI7Cit2
YXIgdXBkYXRlZEZyYW1lVVJMID0gInJlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0bWwiOwordmFy
IHVwZGF0ZWRPYmplY3RVUkwgPSAicmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbCI7CiAKIGZ1
bmN0aW9uIHJ1blRlc3RzKCkKIHsKQEAgLTM2LDggKzM2LDggQEAgZnVuY3Rpb24gaGFuZGxlTG9h
ZCgpCiAgICAgaWYgKG51bUxvYWRzIDwgMikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2hvdWxk
QmUoIndpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24udG9TdHJpbmcoKSIsICciJyArIHVwZGF0ZWRG
cmFtZVVSTCArICciJyk7Ci0gICAgc2hvdWxkQmUoIndpbmRvdy5mcmFtZXNbMV0ubG9jYXRpb24u
dG9TdHJpbmcoKSIsICciJyArIHVwZGF0ZWRPYmplY3RVUkwgKyAnIicpOworICAgIHNob3VsZEJl
VHJ1ZShgd2luZG93LmZyYW1lc1swXS5sb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCIke3VwZGF0ZWRG
cmFtZVVSTH0iKWApOworICAgIHNob3VsZEJlVHJ1ZShgd2luZG93LmZyYW1lc1sxXS5sb2NhdGlv
bi5ocmVmLmVuZHNXaXRoKCIke3VwZGF0ZWRPYmplY3RVUkx9IilgKTsKIAogICAgIGZpbmlzaEpT
VGVzdCgpOwogfQpAQCAtNDYsOCArNDYsOCBAQCBmdW5jdGlvbiBoYW5kbGVMb2FkKCkKIDwvaGVh
ZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+CiAKLTxpZnJhbWUgbmFtZT0iZnJhbWUiIHNy
Yz0iZGF0YTp0ZXh0L2h0bWwsT2xkIGNvbnRlbnRzIG9mIGlmcmFtZSI+PC9pZnJhbWU+Ci08b2Jq
ZWN0IG5hbWU9Im9iaiIgdHlwZT0idGV4dC9odG1sIiBkYXRhPSJkYXRhOnRleHQvaHRtbCxPbGQg
Y29udGVudHMgb2Ygb2JqZWN0Ij48L29iamVjdD4KKzxpZnJhbWUgbmFtZT0iZnJhbWUiIHNyYz0i
cmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbCI+PC9pZnJhbWU+Cis8b2JqZWN0IG5hbWU9Im9i
aiIgdHlwZT0idGV4dC9odG1sIiBkYXRhPSJyZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sIj48
L29iamVjdD4KIAogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVt
bXktZnJhbWUtMS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyIEBACis8IURPQ1RZUEUgaHRtbD4KK09sZCBjb250ZW50cyBvZiBpZnJh
bWUgLyBOZXcgY29udGVudHMgb2Ygb2JqZWN0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1t
eS1mcmFtZS0yLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDIgQEAKKzwhRE9DVFlQRSBodG1sPgorT2xkIGNvbnRlbnRzIG9mIG9iamVj
dCAvIE5ldyBjb250ZW50cyBvZiBpZnJhbWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0
ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCShyZXZpc2lvbiAy
NzkzNzMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xv
bmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIDxodG1sPgogPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgotPGlmcmFtZSBzcmM9
J2RhdGE6dGV4dC9odG1sLDxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9ImRvY3VtZW50Lndy
aXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBB
U1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+Cis8aWZyYW1l
IHNyY2RvYz0nPGEgaWQ9ImEiIGhyZWY9IiUyMyIgb25jbGljaz0iZG9jdW1lbnQud3JpdGUod2lu
ZG93ICE9IHRvcCA/ICZhcG9zOzxwPkZBSUw8L3A+JmFwb3M7IDogJmFwb3M7PHA+UEFTUzwvcD4m
YXBvczspOyByZXR1cm4gZmFsc2UiPmxpbms8L2E+Jz48L2lmcmFtZT4KIDxzY3JpcHQ+CiBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJv
bS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3Mt
ZG9jLWNvbnRleHQtMi5odG1sCShyZXZpc2lvbiAyNzkzNzMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1j
b250ZXh0LTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxodG1sPgogPGJv
ZHkgb25sb2FkPSJ0ZXN0KCkiPgotPGlmcmFtZSBzcmM9J2RhdGE6dGV4dC9odG1sLDxhIGlkPSJh
IiBocmVmPSIlMjMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBv
czs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZh
bHNlIj5saW5rPC9hPic+PC9pZnJhbWU+Cis8aWZyYW1lIHNyY2RvYz0nPGEgaWQ9ImEiIGhyZWY9
IiUyMyIgb25jbGljaz0iZG9jdW1lbnQud3JpdGUod2luZG93ICE9IHRvcCA/ICZhcG9zOzxwPkZB
SUw8L3A+JmFwb3M7IDogJmFwb3M7PHA+UEFTUzwvcD4mYXBvczspOyByZXR1cm4gZmFsc2UiPmxp
bms8L2E+Jz48L2lmcmFtZT4KIDxzY3JpcHQ+CiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi1wYXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzkzNzMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDkgQEAKLVRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IGEgc2FuZGJveGVkIElGcmFtZSB3aXRoIHRoZSBrZXl3b3JkcyBhbGxvdy1zY3JpcHRzIGFuZCBh
bGxvdy1zYW1lLW9yaWdpbiBpcyBhbGxvd2VkIHRvIG5hdmlnYXRlIGFuIGFuY2VzdG9yIGluIHRo
ZSBmcmFtZSB0cmVlIGJ5IGFzc2lnbmluZyB0aGUgbG9jYXRpb24gYXR0cmlidXRlLgorQ09OU09M
RSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGluaXRpYXRlIG5hdmlnYXRp
b24gZm9yIGZyYW1lIHdpdGggVVJMICdzYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tc291cmNl
Lmh0bWwnLiBUaGUgZnJhbWUgYXR0ZW1wdGluZyBuYXZpZ2F0aW9uIGlzIHNhbmRib3hlZCwgYW5k
IGlzIHRoZXJlZm9yZSBkaXNhbGxvd2VkIGZyb20gbmF2aWdhdGluZyBpdHMgYW5jZXN0b3JzLgor
CitDT05TT0xFIE1FU1NBR0U6IFNlY3VyaXR5RXJyb3I6IFRoZSBvcGVyYXRpb24gaXMgaW5zZWN1
cmUuCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fubm90IG5h
dmlnYXRlIGFuIGFuY2VzdG9yIGluIHRoZSBmcmFtZSB0cmVlIGJ5IGFzc2lnbmluZyB0aGUgbG9j
YXRpb24gYXR0cmlidXRlLgorCitUaGlzIGlzIGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRi
b3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5nbGUgc2FuZGJveGVkIG9uZS4gRXhwZWN0IHRlbiBmcmFt
ZXMgdG8gYmUgbmF2aWdhdGVkLCBidXQgdGhlIHNhbmRib3hlZCBvbmUgdG8gbm90IGJlIG9uZSBv
ZiB0aGVtLgogCiBUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBh
cmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkocmV2aXNpb24gMjc5MzczKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw5ICsxMyw5IEBAIGZ1bmN0aW9uIGNoZWNrUmVzdWx0
cygpCiB7CiAgICAgdmFyIHRlc3RTdGF0dXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVz
dFN0YXR1cycpOwogCi0gICAgaWYgKHNlbGYubmF2aWdhdGVkLmxvY2F0aW9uLmhyZWYuaW5kZXhP
ZigncGFyZW50Lmh0bWwnKSAhPSAtMSkKLSAgICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAn
RkFJTDogc2FuZGJveGVkIGZyYW1lIGNvdWxkblwndCBuYXZpZ2F0ZSc7Ci0gICAgZWxzZSBpZiAo
bmF2aWdhdGVkRnJhbWVzID09IDExKQorICAgIGlmIChzZWxmLm5hdmlnYXRlZC5sb2NhdGlvbi5o
cmVmLmluZGV4T2YoJ3BhcmVudC5odG1sJykgPT0gLTEpCisgICAgICAgIHRlc3RTdGF0dXMuaW5u
ZXJIVE1MID0gJ0ZBSUw6IGRpc2FsbG93ZWQgZnJhbWUgbmF2aWdhdGVkJzsKKyAgICBlbHNlIGlm
IChuYXZpZ2F0ZWRGcmFtZXMgPT0gMTApCiAgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0g
J1BBU1MnOwogICAgIGVsc2UKICAgICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDog
ZnJhbWVzIG5vdCBuYXZpZ2F0ZWQgcHJvcGVybHknOwpAQCAtMjgsNyArMjgsNyBAQCBmdW5jdGlv
biBjb3VudEZyYW1lKCkKIHsKICAgICArK25hdmlnYXRlZEZyYW1lczsKIAotICAgIGlmIChuYXZp
Z2F0ZWRGcmFtZXMgPT0gMTEpCisgICAgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMCkKICAgICAg
ICAgY2hlY2tSZXN1bHRzKCk7CiB9CiAKQEAgLTM3LDEwICszNywxMyBAQCBmdW5jdGlvbiBjb3Vu
dEZyYW1lKCkKIAogPGJvZHk+CiAKLSAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNh
bmRib3hlZCBJRnJhbWUgd2l0aCB0aGUga2V5d29yZHMKLSAgICBhbGxvdy1zY3JpcHRzIGFuZCBh
bGxvdy1zYW1lLW9yaWdpbiBpcyBhbGxvd2VkIHRvIG5hdmlnYXRlIGFuIGFuY2VzdG9yCisgICAg
PHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBuYXZp
Z2F0ZSBhbiBhbmNlc3RvcgogICAgIGluIHRoZSBmcmFtZSB0cmVlIGJ5IGFzc2lnbmluZyB0aGUg
bG9jYXRpb24gYXR0cmlidXRlLjwvcD4KIAorICAgIDxwPlRoaXMgaXMgZG9uZSBieSBsb2FkaW5n
IHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZQorICAgIHNhbmRib3hlZCBv
bmUuIEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQK
KyAgICBvbmUgdG8gPGI+bm90PC9iPiBiZSBvbmUgb2YgdGhlbS48L3A+CisgICAgCiAgICAgPHA+
VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KIAog
ICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi5odG1sIj48L2lmcmFtZT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
Mjc5MzczKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRp
b24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSwyICsxLDIgQEAKLWRvY3VtZW50LnJlZmVycmVyID0KK2RvY3VtZW50LnJlZmVycmVy
ID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0
LWZvci1sb2NhdGlvbi1hc3NpZ24uaHRtbAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWdvcGQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhyZWYtZ29wZC1leHBlY3Rl
ZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1nb3BkLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIgQEAKK2RvY3VtZW50LnJlZmVycmVyID0gaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1s
b2NhdGlvbi1ocmVmLWdvcGQuaHRtbAorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWdvcGQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWdvcGQuaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250
ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWdvcGQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICB2
YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZGl2LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZGl2KTsKK30KKworZnVuY3Rpb24gZ28oKSB7
CisgICAgY29uc3QgeyBzZXQgfSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZnJh
bWVzWzBdLmxvY2F0aW9uLCAiaHJlZiIpOworICAgIGNvbnN0IHNldEJvdW5kUHJveHkgPSBuZXcg
UHJveHkoc2V0LmJpbmQoZnJhbWVzWzBdLmZyYW1lc1swXS5sb2NhdGlvbiksIHt9KTsKKyAgICBz
ZXRCb3VuZFByb3h5KCJ0YXJnZXQtZm9yLWxvY2F0aW9uLmh0bWwiKTsKK30KKword2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihlKSB7CisgICAgbG9nKGUuZGF0YSk7
CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworfSwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9taWRkbGUtZnJhbWUtZm9y
LWxvY2F0aW9uLmh0bWwiPgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3OTM3MykKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAyMS0wNy0w
MSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pT
Q10gQ2FsbCBjdXN0b20gYWNjZXNzb3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xv
YmFsIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1OTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwt
b2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGlu
Zy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbDogQWRk
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRp
bmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW52
YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1cHBvcnQvY3JlYXRlLXJl
YWxtLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFz
Y3JpcHQtYmluZGluZy9zdXBwb3J0L2R1bW15LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVmLWNyb3NzLXJlYWxtLXNldC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jy
b3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93aW5kb3ctbG9jYXRpb24tYW5kLWxv
Y2F0aW9uLWhyZWYtY3Jvc3MtcmVhbG0tc2V0Lmh0bWw6IEFkZGVkLgorCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2NvbXBpbGUt
ZXZlbnQtaGFuZGxlci1zZXR0aW5ncy1vYmplY3RzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1v
ZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJvbWlzZS1q
b2ItaW5jdW1iZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QtY3NzLWNyb3NzLW9y
aWdpbi5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxlLmh0bWw6Cisg
ICAgICAgIEFsbCB0aGVzZSBhcmUgY29uZmlybWVkIHByb2dyZXNzaW9ucy4KKworICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9zdXBwb3J0ZWRFbnRyeVR5
cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9zdXBwb3J0ZWRFbnRyeVR5cGVz
LWNyb3NzLXJlYWxtLWFjY2Vzcy5odG1sOiBBZGRlZC4KKwogMjAyMS0wNi0yOSAgTWFydGluIFJv
Ymluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgQ1NTIHNjcm9sbCBzbmFw
IHNob3VsZCBhbGxvdyBzY3JvbGxpbmcgdG8gdGhlIG1pZGRsZSBvZiBzbmFwIGFyZWFzIHRoYXQg
b3ZlcmZsb3cgdGhlIHNuYXBwb3J0CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1p
bXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21h
c2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJl
YWxtLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9i
amVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKKworUEFTUyBDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0
J3MgZ2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CitQQVNT
IENyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBzZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9u
IGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIG9w
ZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorRkFJTCBD
cm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZp
bmVkIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
IlR5cGVFcnJvcjogVGhlIFdpbmRvdy5uYW1lIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGlu
c3RhbmNlcyBvZiBXaW5kb3ciCitGQUlMIENyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBzZXR0
ZXIgY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVq
ZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUaGUgV2luZG93LmxvY2F0aW9u
IHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXaW5kb3ciCitQQVNTIENy
b3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gY2FsbGVkIG9uIG51bGwgLyB1bmRl
ZmluZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12
YWx1ZS1jcm9zcy1yZWFsbS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwt
b2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9l
Y21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3Nz
LXJlYWxtLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q3Jvc3MtcmVhbG0gZ2V0dGVyIC8g
c2V0dGVyIC8gb3BlcmF0aW9uIGRvZXNuJ3QgdXNlIGxleGljYWwgZ2xvYmFsIG9iamVjdCBpZiB8
dGhpc3wgdmFsdWUgaXMgaW5jb21wYXRpYmxlIG9iamVjdCAvIG51bGwgLyB1bmRlZmluZWQ8L3Rp
dGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2Vi
aWRsLyNkZm4tYXR0cmlidXRlLWdldHRlciI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtc2V0dGVyIj4KKzxsaW5r
IHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWNy
ZWF0ZS1vcGVyYXRpb24tZnVuY3Rpb24iPgorCis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic3VwcG9ydC9jcmVhdGUtcmVhbG0u
anMiPjwvc2NyaXB0PgorCis8Ym9keT4KKzxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2FpdCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBu
b3RXaW5kb3cgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvdGhlcikpOwor
CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNy
ZWF0ZShvdGhlcikud2luZG93OyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVF
cnJvciwgKCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90aGVyLCAiaGlz
dG9yeSIpLmdldC5jYWxsKG5vdFdpbmRvdyk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3Ro
ZXIuVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3QuZ2V0KG90aGVyLCAic2NyZWVuIiwgbm90V2lu
ZG93KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsg
bmV3IFByb3h5KG90aGVyLCB7fSkub25jbGljazsgfSk7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xvYmFs
IG9iamVjdCdzIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVj
dCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2Fp
dCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBub3RXaW5kb3cgPSBPYmplY3QuY3JlYXRlKE9i
amVjdC5nZXRQcm90b3R5cGVPZihvdGhlcikpOworCisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhl
ci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShvdGhlcikubmFtZSA9ICJkdW1teSI7
IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXIsICJzdGF0dXMiKS5zZXQuY2FsbChub3RX
aW5kb3csIG90aGVyLnN0YXR1cyk7IH0pOworICAgIC8vIHBhcmVudCBpcyBbUmVwbGFjZWFibGVd
CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5z
ZXQob3RoZXIsICJwYXJlbnQiLCB3aW5kb3csIG5vdFdpbmRvdyk7IH0pOworICAgIGFzc2VydF90
aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IG5ldyBQcm94eShvdGhlciwge30pLmxv
Y2F0aW9uID0gbG9jYXRpb247IH0pOworfSwgIkNyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBz
ZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QiKTsKKworcHJv
bWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IG90aGVyID0gYXdhaXQgY3JlYXRlUmVh
bG0odCk7CisgICAgY29uc3Qgbm90V2luZG93ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJv
dG90eXBlT2Yob3RoZXIpKTsKKworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9y
LCAoKSA9PiB7IE9iamVjdC5jcmVhdGUob3RoZXIpLmZvY3VzKCk7IH0pOworICAgIGFzc2VydF90
aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IG90aGVyLmNsZWFySW50ZXJ2YWwuY2Fs
bChub3RXaW5kb3csIDApOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJv
ciwgKCkgPT4geyBSZWZsZWN0LmFwcGx5KG90aGVyLmJsdXIsIG5vdFdpbmRvdywgW10pOyB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHko
b3RoZXIsIHt9KS5yZW1vdmVFdmVudExpc3RlbmVyKCJmb28iLCAoKSA9PiB7fSk7IH0pOworfSwg
IkNyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVk
IG9uIGluY29tcGF0aWJsZSBvYmplY3QiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIGNvbnN0IG90aGVyID0gYXdhaXQgY3JlYXRlUmVhbG0odCk7CisgICAgY29uc3Qgb3RoZXJO
YW1lR2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvdGhlciwgIm5hbWUi
KS5nZXQ7CisKKyAgICBhc3NlcnRfZXF1YWxzKFJlZmxlY3QuZ2V0KG90aGVyLCAic2VsZiIsIG51
bGwpLCBvdGhlcik7CisgICAgYXNzZXJ0X2VxdWFscyhSZWZsZWN0LmdldChvdGhlciwgImRvY3Vt
ZW50IiwgdW5kZWZpbmVkKSwgb3RoZXIuZG9jdW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMob3Ro
ZXJOYW1lR2V0dGVyLmNhbGwobnVsbCksICJkdW1teSIpOworICAgIC8vIEFuIGVuZ2luZSBtaWdo
dCBoYXZlIGRpZmZlcmVudCBjb2RlIHBhdGggZm9yIGNhbGxpbmcgYSBmdW5jdGlvbiBmcm9tIG91
dGVyIHNjb3BlIHRvIGltcGxlbWVudCBzdGVwIDEuYi5paWkgb2YgaHR0cHM6Ly90YzM5LmVzL2Vj
bWEyNjIvI3NlYy1ldmFsdWF0ZWNhbGwKKyAgICBhc3NlcnRfZXF1YWxzKCgoKSA9PiBvdGhlck5h
bWVHZXR0ZXIoKSkoKSwgImR1bW15Iik7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdz
IGdldHRlciBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCIpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2FpdCBjcmVhdGVSZWFsbSh0KTsKKyAgICBj
b25zdCBvdGhlckxvY2F0aW9uU2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvdGhlciwgImxvY2F0aW9uIikuc2V0OworICAgIGNvbnN0IG90aGVySHJlZiA9IG90aGVyLmxv
Y2F0aW9uLmhyZWY7CisgICAgY29uc3QgbmV3U2VsZiA9IHt9OworCisgICAgLy8gc2VsZiBpcyBb
UmVwbGFjZWFibGVdCisgICAgYXNzZXJ0X3RydWUoUmVmbGVjdC5zZXQob3RoZXIsICJzZWxmIiwg
bmV3U2VsZiwgbnVsbCkpOworICAgIGFzc2VydF90cnVlKFJlZmxlY3Quc2V0KG90aGVyLCAibmFt
ZSIsICJuZXdOYW1lIiwgdW5kZWZpbmVkKSk7CisKKyAgICBvdGhlckxvY2F0aW9uU2V0dGVyLmNh
bGwobnVsbCwgYCR7b3RoZXJIcmVmfSNmb29gKTsKKyAgICBhc3NlcnRfZXF1YWxzKG90aGVyLmxv
Y2F0aW9uLmhhc2gsICIjZm9vIik7CisgICAgLy8gQW4gZW5naW5lIG1pZ2h0IGhhdmUgZGlmZmVy
ZW50IGNvZGUgcGF0aCBmb3IgY2FsbGluZyBhIGZ1bmN0aW9uIGZyb20gb3V0ZXIgc2NvcGUgdG8g
aW1wbGVtZW50IHN0ZXAgMS5iLmlpaSBvZiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWV2
YWx1YXRlY2FsbAorICAgICgoKSA9PiB7IG90aGVyTG9jYXRpb25TZXR0ZXIoYCR7b3RoZXJIcmVm
fSNiYXJgKTsgfSkoKTsKKyAgICBhc3NlcnRfZXF1YWxzKG90aGVyLmxvY2F0aW9uLmhhc2gsICIj
YmFyIik7CisKKyAgICAvLyBDaGVjayB0aGVzZSBhZnRlciBjYWxsaW5nICJsb2NhdGlvbiIgc2V0
dGVyIG1ha2Ugc3VyZSBubyBuYXZpZ2F0aW9uIGhhcyBvY2N1cnJlZAorICAgIGFzc2VydF9lcXVh
bHMob3RoZXIuc2VsZiwgbmV3U2VsZik7CisgICAgYXNzZXJ0X2VxdWFscyhvdGhlci5uYW1lLCAi
bmV3TmFtZSIpOworfSwgIkNyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBzZXR0ZXIgY2FsbGVk
IG9uIG51bGwgLyB1bmRlZmluZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAg
IGNvbnN0IG90aGVyID0gYXdhaXQgY3JlYXRlUmVhbG0odCk7CisgICAgY29uc3Qgb3RoZXJGb2N1
cyA9IG90aGVyLmZvY3VzOworICAgIGNvbnN0IG90aGVyRGlzcGF0Y2hFdmVudCA9IG90aGVyLmRp
c3BhdGNoRXZlbnQ7CisgICAgCisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hY3RpdmVFbGVt
ZW50LCBkb2N1bWVudC5ib2R5KTsKKyAgICAvLyBBbiBlbmdpbmUgbWlnaHQgaGF2ZSBkaWZmZXJl
bnQgY29kZSBwYXRoIGZvciBjYWxsaW5nIGEgZnVuY3Rpb24gZnJvbSBvdXRlciBzY29wZSB0byBp
bXBsZW1lbnQgc3RlcCAxLmIuaWlpIG9mIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZXZh
bHVhdGVjYWxsCisgICAgKCgpID0+IHsgb3RoZXJGb2N1cygpOyB9KSgpOworICAgIGFzc2VydF9l
cXVhbHMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5jb250ZW50V2luZG93LCBvdGhlcik7CisKKyAg
ICBsZXQgY2F1Z2h0RXZlbnQ7CisgICAgb3RoZXIuYWRkRXZlbnRMaXN0ZW5lci5jYWxsKG51bGws
ICJmb28iLCBldmVudCA9PiB7IGNhdWdodEV2ZW50ID0gZXZlbnQ7IH0pOworICAgIGNvbnN0IGRp
c3BhdGNoZWRFdmVudCA9IG5ldyBvdGhlci5FdmVudCgiZm9vIik7CisgICAgYXNzZXJ0X3RydWUo
b3RoZXJEaXNwYXRjaEV2ZW50KGRpc3BhdGNoZWRFdmVudCkpOworICAgIGFzc2VydF9lcXVhbHMo
Y2F1Z2h0RXZlbnQsIGRpc3BhdGNoZWRFdmVudCk7CisKKyAgICBjb25zdCBtZXNzYWdlUHJvbWlz
ZSA9IG5ldyBFdmVudFdhdGNoZXIodCwgb3RoZXIsICJtZXNzYWdlIikud2FpdF9mb3IoIm1lc3Nh
Z2UiKTsKKyAgICBvdGhlci5wb3N0TWVzc2FnZS5jYWxsKG51bGwsICJmb28iKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKChhd2FpdCBtZXNzYWdlUHJvbWlzZSkuZGF0YSwgImZvbyIpOworfSwgIkNyb3Nz
LXJlYWxtIGdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmlu
ZWQiKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1j
cm9zcy1yZWFsbS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludmFs
aWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNj
cmlwdC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgQ3Jvc3MtcmVhbG0gZ2V0dGVy
IHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CitQQVNTIENyb3NzLXJl
YWxtIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorUEFT
UyBDcm9zcy1yZWFsbSBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJs
ZSBvYmplY3QKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1y
ZWFsbS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUt
Y3Jvc3MtcmVhbG0uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW52YWxpZC10
aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q3Jvc3Mt
cmVhbG0gZ2V0dGVyIC8gc2V0dGVyIC8gb3BlcmF0aW9uIGRvZXNuJ3QgdXNlIGxleGljYWwgZ2xv
YmFsIG9iamVjdCB0byB0aHJvdyBhbiBlcnJvciBmb3IgaW5jb21wYXRpYmxlIHx0aGlzfCB2YWx1
ZTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtZ2V0dGVyIj4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0i
aHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1zZXR0ZXIiPgor
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNk
Zm4tY3JlYXRlLW9wZXJhdGlvbi1mdW5jdGlvbiI+CisKKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzdXBwb3J0L2NyZWF0ZS1y
ZWFsbS5qcyI+PC9zY3JpcHQ+CisKKzxib2R5PgorPHNjcmlwdD4KK3Byb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNv
bnN0IG5vdEVsZW1lbnQgPSBPYmplY3QuY3JlYXRlKG90aGVyLkhUTUxFbGVtZW50LnByb3RvdHlw
ZSk7CisKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmpl
Y3QuY3JlYXRlKG90aGVyLmRvY3VtZW50KS5oZWFkOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KG90aGVyLkhUTUxFbGVtZW50LnByb3RvdHlwZSwgInRpdGxlIikuZ2V0LmNhbGwobm90RWxlbWVu
dCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IFJl
ZmxlY3QuZ2V0KG90aGVyLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLCAiaGlkZGVuIiwg
bm90RWxlbWVudCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAo
KSA9PiB7IG5ldyBQcm94eShvdGhlci50ZXh0LCB7fSkubm9kZVR5cGU7IH0pOworfSwgIkNyb3Nz
LXJlYWxtIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCIp
OworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2FpdCBj
cmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBub3RFbGVtZW50ID0gT2JqZWN0LmNyZWF0ZShvdGhl
ci5IVE1MRWxlbWVudC5wcm90b3R5cGUpOworICAgIGNvbnN0IG5vdFRleHQgPSBPYmplY3QuY3Jl
YXRlKG90aGVyLlRleHQucHJvdG90eXBlKTsKKworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIu
VHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5jcmVhdGUob3RoZXIuZWxlbWVudCkuaW5uZXJIVE1M
ID0gIiI7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXIuSFRNTEVsZW1lbnQucHJvdG90
eXBlLCAib25jbGljayIpLnNldC5jYWxsKG5vdEVsZW1lbnQsIG51bGwpOyB9KTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChuZXcgb3Ro
ZXIuVGV4dCgiZm9vIiksICJkYXRhIiwgImZvbyIsIG5vdFRleHQpOyB9KTsKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkob3RoZXIuZG9jdW1l
bnQsIHt9KS50aXRsZSA9ICIiOyB9KTsKK30sICJDcm9zcy1yZWFsbSBzZXR0ZXIgdGhyb3dzIHdo
ZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
IHQgPT4geworICAgIGNvbnN0IG90aGVyID0gYXdhaXQgY3JlYXRlUmVhbG0odCk7CisgICAgY29u
c3Qgbm90RG9jdW1lbnQgPSBPYmplY3QuY3JlYXRlKG90aGVyLkhUTUxEb2N1bWVudC5wcm90b3R5
cGUpOworICAgIGNvbnN0IG5vdFRleHQgPSBPYmplY3QuY3JlYXRlKG90aGVyLlRleHQucHJvdG90
eXBlKTsKKworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IE9i
amVjdC5jcmVhdGUob3RoZXIuZWxlbWVudCkuY2xpY2soKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgb3RoZXIuZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ci5jYWxsKG5vdERvY3VtZW50LCAiKiIpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVy
LlR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LmFwcGx5KG90aGVyLnRleHQucmVtb3ZlLCBub3RU
ZXh0LCBbXSk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9
PiB7IG5ldyBQcm94eShvdGhlci5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksIHt9KS5hZGRF
dmVudExpc3RlbmVyKCJmb28iLCAoKSA9PiB7fSk7IH0pOworfSwgIkNyb3NzLXJlYWxtIG9wZXJh
dGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCIpOworPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dl
YklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9jcmVhdGUtcmVhbG0uanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwv
ZWNtYXNjcmlwdC1iaW5kaW5nL3N1cHBvcnQvY3JlYXRlLXJlYWxtLmpzCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2Vj
bWFzY3JpcHQtYmluZGluZy9zdXBwb3J0L2NyZWF0ZS1yZWFsbS5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEyIEBACisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIGNyZWF0ZVJlYWxtKHQp
IHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGNvbnN0IGlm
cmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICB0LmFkZF9j
bGVhbnVwKCgpID0+IHsgaWZyYW1lLnJlbW92ZSgpOyB9KTsKKyAgICAgICAgaWZyYW1lLm9ubG9h
ZCA9ICgpID0+IHsgcmVzb2x2ZShpZnJhbWUuY29udGVudFdpbmRvdyk7IH07CisgICAgICAgIGlm
cmFtZS5uYW1lID0gImR1bW15IjsKKyAgICAgICAgaWZyYW1lLnNyYyA9ICJzdXBwb3J0L2R1bW15
LWlmcmFtZS5odG1sIjsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoaWZyYW1lKTsKKyAg
ICB9KTsKK30KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9zdXBwb3J0L2R1bW15LWlmcmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
V2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9zdXBwb3J0L2R1bW15LWlmcmFtZS5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
V2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9zdXBwb3J0L2R1bW15LWlmcmFtZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8Ym9keT5mb28KKzxidXR0b24gaWQ9ImVsZW1lbnQiPjwvYnV0dG9uPgorPHNj
cmlwdD4KKyAgICB3aW5kb3cudGV4dCA9IGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZDsKKzwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93aW5kb3ctbG9jYXRpb24t
YW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3MtcmVhbG0tc2V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL3dpbmRvdy1sb2NhdGlvbi1hbmQtbG9j
YXRpb24taHJlZi1jcm9zcy1yZWFsbS1zZXQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlv
bi1ocmVmLWNyb3NzLXJlYWxtLXNldC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMyBAQAorCitQQVNTIFNhbWUtb3JpZ2luIHdpbmRvdy5sb2NhdGlvbiBnZXR0ZXIgdGhy
b3dzIFR5cGVFcnJvciBpbiBob2xkZXIncyByZWFsbSBvbiBpbnZhbGlkIHx0aGlzfCB2YWx1ZQor
UEFTUyBTYW1lLW9yaWdpbiBsb2NhdGlvbi5ocmVmIGdldHRlciB0aHJvd3MgVHlwZUVycm9yIGlu
IGhvbGRlcidzIHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVlCitQQVNTIENyb3NzLW9yaWdp
biBsb2NhdGlvbi5ocmVmIGdldHRlciB0aHJvd3MgU2VjdXJpdHlFcnJvciBpbiBsZXhpY2FsIHJl
YWxtCitQQVNTIFNhbWUtb3JpZ2luIHdpbmRvdy5sb2NhdGlvbiBzZXR0ZXIgdGhyb3dzIFR5cGVF
cnJvciBpbiBob2xkZXIncyByZWFsbSBvbiBpbnZhbGlkIHx0aGlzfCB2YWx1ZQorUEFTUyBTYW1l
LW9yaWdpbiBsb2NhdGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidz
IHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVlCitQQVNTIENyb3NzLW9yaWdpbiB3aW5kb3cu
bG9jYXRpb24gc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gbGV4aWNhbCByZWFsbSBvbiBpbnZh
bGlkIHx0aGlzfCB2YWx1ZQorUEFTUyBDcm9zcy1vcmlnaW4gbG9jYXRpb24uaHJlZiBzZXR0ZXIg
dGhyb3dzIFR5cGVFcnJvciBpbiBsZXhpY2FsIHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVl
CitQQVNTIFNhbWUtb3JpZ2luIHdpbmRvdy5sb2NhdGlvbmAgc2V0dGVyIHRocm93cyBUeXBlRXJy
b3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gbm9uLWNvZXJjaWJsZSBVUkwgYXJndW1lbnQKK1BBU1Mg
U2FtZS1vcmlnaW4gbG9jYXRpb24uaHJlZiBzZXR0ZXIgdGhyb3dzIFR5cGVFcnJvciBpbiBob2xk
ZXIncyByZWFsbSBvbiBub24tY29lcmNpYmxlIFVSTCBhcmd1bWVudAorUEFTUyBDcm9zcy1vcmln
aW4gd2luZG93LmxvY2F0aW9uIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGxleGljYWwgcmVh
bG0gb24gbm9uLWNvZXJjaWJsZSBVUkwgYXJndW1lbnQKK1BBU1MgQ3Jvc3Mtb3JpZ2luIGxvY2F0
aW9uLmhyZWYgc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gbGV4aWNhbCByZWFsbSBvbiBub24t
Y29lcmNpYmxlIFVSTCBhcmd1bWVudAorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzL3dpbmRvdy1sb2NhdGlvbi1hbmQtbG9jYXRpb24taHJlZi1jcm9zcy1yZWFsbS1zZXQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL3dpbmRvdy1sb2Nh
dGlvbi1hbmQtbG9jYXRpb24taHJlZi1jcm9zcy1yZWFsbS1zZXQuaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL3dpbmRvdy1sb2NhdGlvbi1hbmQtbG9j
YXRpb24taHJlZi1jcm9zcy1yZWFsbS1zZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
Q3Jvc3MtcmVhbG0gW1tTZXRdXSB0byB3aW5kb3cubG9jYXRpb24gYW5kIGxvY2F0aW9uLmhyZWYg
dGhyb3dzIGFuIGVycm9yIG9mIGNvcnJlY3QgcmVhbG08L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS8jd2luZG93Ij4K
KzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8j
VW5mb3JnZWFibGUiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9jb21tb24vZ2V0LWhvc3QtaW5mby5zdWIuanMiPjwvc2Ny
aXB0PgorPGJvZHk+Cis8c2NyaXB0PgorY29uc3QgVVJMX1NBTUVfT1JJR0lOID0gZ2V0X2hvc3Rf
aW5mbygpLk9SSUdJTkFMX0hPU1Q7Citjb25zdCBVUkxfQ1JPU1NfT1JJR0lOID0gZ2V0X2hvc3Rf
aW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTjsKK2NvbnN0IFVSTF9WQUxJRCA9ICIjZm9vIjsKK2Nv
bnN0IFVSTF9JTlZBTElEID0gImh0dHA6Ly8jIjsKKworY29uc3QgeyBnZXQ6IGxvY2F0aW9uR2V0
LCBzZXQ6IGxvY2F0aW9uU2V0IH0gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdp
bmRvdywgImxvY2F0aW9uIik7Citjb25zdCB7IGdldDogaHJlZkdldCwgc2V0OiBocmVmU2V0IH0g
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGxvY2F0aW9uLCAiaHJlZiIpOworCisK
K3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBzYW1lT3JpZ2luV2luZG93ID0g
YXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfU0FNRV9PUklHSU4pOworICAgIGFzc2VydF90aHJvd3Nf
anMoc2FtZU9yaWdpbldpbmRvdy5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShzYW1l
T3JpZ2luV2luZG93KS5sb2NhdGlvbjsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhzYW1lT3Jp
Z2luV2luZG93LlR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LmdldChzYW1lT3JpZ2luV2luZG93
LCAibG9jYXRpb24iLCB7fSk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAo
KSA9PiB7IGxvY2F0aW9uR2V0LmNhbGwoe30pOyB9KTsKK30sICJTYW1lLW9yaWdpbiB3aW5kb3cu
bG9jYXRpb24gZ2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gaW52
YWxpZCB8dGhpc3wgdmFsdWUiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNv
bnN0IHNhbWVPcmlnaW5XaW5kb3cgPSBhd2FpdCBtYWtlV2luZG93KHQsIFVSTF9TQU1FX09SSUdJ
Tik7CisgICAgYXNzZXJ0X3Rocm93c19qcyhzYW1lT3JpZ2luV2luZG93LlR5cGVFcnJvciwgKCkg
PT4geyBPYmplY3QuY3JlYXRlKHNhbWVPcmlnaW5XaW5kb3cubG9jYXRpb24pLmhyZWY7IH0pOwor
ICAgIGFzc2VydF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRvdy5UeXBlRXJyb3IsICgpID0+IHsg
UmVmbGVjdC5nZXQoc2FtZU9yaWdpbldpbmRvdy5sb2NhdGlvbiwgImhyZWYiLCB7fSk7IH0pOwor
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGhyZWZHZXQoKTsgfSk7Cit9
LCAiU2FtZS1vcmlnaW4gbG9jYXRpb24uaHJlZiBnZXR0ZXIgdGhyb3dzIFR5cGVFcnJvciBpbiBo
b2xkZXIncyByZWFsbSBvbiBpbnZhbGlkIHx0aGlzfCB2YWx1ZSIpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgICAgY29uc3QgY3Jvc3NPcmlnaW5XaW5kb3cgPSBhd2FpdCBtYWtlV2lu
ZG93KHQsIFVSTF9DUk9TU19PUklHSU4pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJTRUNVUklU
WV9FUlIiLCAoKSA9PiB7IGNyb3NzT3JpZ2luV2luZG93LmxvY2F0aW9uLmhyZWY7IH0pOworICAg
IGFzc2VydF90aHJvd3NfZG9tKCJTRUNVUklUWV9FUlIiLCAoKSA9PiB7IGhyZWZHZXQuY2FsbChj
cm9zc09yaWdpbldpbmRvdy5sb2NhdGlvbik7IH0pOworICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjcm9zc09yaWdpbldpbmRvdy5sb2NhdGlvbiwgImhy
ZWYiKS5nZXQsIHVuZGVmaW5lZCk7Cit9LCAiQ3Jvc3Mtb3JpZ2luIGxvY2F0aW9uLmhyZWYgZ2V0
dGVyIHRocm93cyBTZWN1cml0eUVycm9yIGluIGxleGljYWwgcmVhbG0iKTsKKworCitwcm9taXNl
X3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgc2FtZU9yaWdpbldpbmRvdyA9IGF3YWl0IG1h
a2VXaW5kb3codCwgVVJMX1NBTUVfT1JJR0lOKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVP
cmlnaW5XaW5kb3cuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5jcmVhdGUoc2FtZU9yaWdpbldp
bmRvdykubG9jYXRpb24gPSBVUkxfVkFMSUQ7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoc2Ft
ZU9yaWdpbldpbmRvdy5UeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5zZXQoc2FtZU9yaWdpbldp
bmRvdywgImxvY2F0aW9uIiwgVVJMX1ZBTElELCB7fSk7IH0pOworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiB7IGxvY2F0aW9uU2V0LmNhbGwoKCkgPT4ge30sIFVSTF9WQUxJ
RCk7IH0pOworfSwgIlNhbWUtb3JpZ2luIHdpbmRvdy5sb2NhdGlvbiBzZXR0ZXIgdGhyb3dzIFR5
cGVFcnJvciBpbiBob2xkZXIncyByZWFsbSBvbiBpbnZhbGlkIHx0aGlzfCB2YWx1ZSIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgc2FtZU9yaWdpbldpbmRvdyA9IGF3
YWl0IG1ha2VXaW5kb3codCwgVVJMX1NBTUVfT1JJR0lOKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KHNhbWVPcmlnaW5XaW5kb3cuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5jcmVhdGUoc2FtZU9y
aWdpbldpbmRvdy5sb2NhdGlvbikuaHJlZiA9IFVSTF9WQUxJRDsgfSk7CisgICAgYXNzZXJ0X3Ro
cm93c19qcyhzYW1lT3JpZ2luV2luZG93LlR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChz
YW1lT3JpZ2luV2luZG93LmxvY2F0aW9uLCAiaHJlZiIsIFVSTF9WQUxJRCwge30pOyB9KTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBocmVmU2V0LmNhbGwodW5kZWZp
bmVkLCBVUkxfVkFMSUQpOyB9KTsKK30sICJTYW1lLW9yaWdpbiBsb2NhdGlvbi5ocmVmIHNldHRl
ciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZh
bHVlIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBjcm9zc09yaWdp
bldpbmRvdyA9IGF3YWl0IG1ha2VXaW5kb3codCwgVVJMX0NST1NTX09SSUdJTik7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShjcm9zc09yaWdp
bldpbmRvdykubG9jYXRpb24gPSBVUkxfVkFMSUQ7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3Quc2V0KGNyb3NzT3JpZ2luV2luZG93LCAibG9jYXRp
b24iLCBVUkxfVkFMSUQsIHt9KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
ICgpID0+IHsgbG9jYXRpb25TZXQuY2FsbChbXSwgVVJMX1ZBTElEKTsgfSk7Cit9LCAiQ3Jvc3Mt
b3JpZ2luIHdpbmRvdy5sb2NhdGlvbiBzZXR0ZXIgdGhyb3dzIFR5cGVFcnJvciBpbiBsZXhpY2Fs
IHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVlIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgICBjb25zdCBjcm9zc09yaWdpbldpbmRvdyA9IGF3YWl0IG1ha2VXaW5kb3codCwg
VVJMX0NST1NTX09SSUdJTik7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IHsgT2JqZWN0LmNyZWF0ZShjcm9zc09yaWdpbldpbmRvdy5sb2NhdGlvbikuaHJlZiA9IFVSTF9W
QUxJRDsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgUmVmbGVj
dC5zZXQoY3Jvc3NPcmlnaW5XaW5kb3cubG9jYXRpb24sICJocmVmIiwgVVJMX1ZBTElELCB7fSk7
IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGhyZWZTZXQuY2Fs
bChudWxsLCBVUkxfVkFMSUQpOyB9KTsKK30sICJDcm9zcy1vcmlnaW4gbG9jYXRpb24uaHJlZiBz
ZXR0ZXIgdGhyb3dzIFR5cGVFcnJvciBpbiBsZXhpY2FsIHJlYWxtIG9uIGludmFsaWQgfHRoaXN8
IHZhbHVlIik7CisKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHNhbWVP
cmlnaW5XaW5kb3cgPSBhd2FpdCBtYWtlV2luZG93KHQsIFVSTF9TQU1FX09SSUdJTik7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhzYW1lT3JpZ2luV2luZG93LlR5cGVFcnJvciwgKCkgPT4geyBzYW1l
T3JpZ2luV2luZG93LmxvY2F0aW9uID0gU3ltYm9sKCk7IH0pOworCisgICAgLy8gVGhlIGVycm9y
IG9yaWdpbmF0ZXMgaW4gc2FtZU9yaWdpbldpbmRvdy5sb2NhdGlvbi5ocmVmIHNldHRlciwgaGVu
Y2UgaXQncyBub3QgaW4gcmVhbG0gb2YgbG9jYXRpb25TZXQuCisgICAgYXNzZXJ0X3Rocm93c19q
cyhzYW1lT3JpZ2luV2luZG93LlR5cGVFcnJvciwgKCkgPT4geyBsb2NhdGlvblNldC5jYWxsKHNh
bWVPcmlnaW5XaW5kb3csIFN5bWJvbCgpKTsgfSk7Cit9LCAiU2FtZS1vcmlnaW4gd2luZG93Lmxv
Y2F0aW9uYCBzZXR0ZXIgdGhyb3dzIFR5cGVFcnJvciBpbiBob2xkZXIncyByZWFsbSBvbiBub24t
Y29lcmNpYmxlIFVSTCBhcmd1bWVudCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7Cisg
ICAgY29uc3Qgc2FtZU9yaWdpbldpbmRvdyA9IGF3YWl0IG1ha2VXaW5kb3codCwgVVJMX1NBTUVf
T1JJR0lOKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5kb3cuVHlwZUVycm9y
LCAoKSA9PiB7IHNhbWVPcmlnaW5XaW5kb3cubG9jYXRpb24uaHJlZiA9IFN5bWJvbCgpOyB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBocmVmU2V0LmNhbGwoc2Ft
ZU9yaWdpbldpbmRvdy5sb2NhdGlvbiwgU3ltYm9sKCkpOyB9KTsKK30sICJTYW1lLW9yaWdpbiBs
b2NhdGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9u
IG5vbi1jb2VyY2libGUgVVJMIGFyZ3VtZW50Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+
IHsKKyAgICBjb25zdCBjcm9zc09yaWdpbldpbmRvdyA9IGF3YWl0IG1ha2VXaW5kb3codCwgVVJM
X0NST1NTX09SSUdJTik7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsg
Y3Jvc3NPcmlnaW5XaW5kb3cubG9jYXRpb24gPSBTeW1ib2woKTsgfSk7CisgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgbG9jYXRpb25TZXQuY2FsbChjcm9zc09yaWdpbldp
bmRvdywgU3ltYm9sKCkpOyB9KTsKK30sICJDcm9zcy1vcmlnaW4gd2luZG93LmxvY2F0aW9uIHNl
dHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGxleGljYWwgcmVhbG0gb24gbm9uLWNvZXJjaWJsZSBV
UkwgYXJndW1lbnQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGNy
b3NzT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfQ1JPU1NfT1JJR0lOKTsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBjcm9zc09yaWdpbldpbmRv
dy5sb2NhdGlvbi5ocmVmID0gU3ltYm9sKCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCAoKSA9PiB7IGhyZWZTZXQuY2FsbChjcm9zc09yaWdpbldpbmRvdy5sb2NhdGlvbiwg
U3ltYm9sKCkpOyB9KTsKK30sICJDcm9zcy1vcmlnaW4gbG9jYXRpb24uaHJlZiBzZXR0ZXIgdGhy
b3dzIFR5cGVFcnJvciBpbiBsZXhpY2FsIHJlYWxtIG9uIG5vbi1jb2VyY2libGUgVVJMIGFyZ3Vt
ZW50Iik7CisKK2Z1bmN0aW9uIG1ha2VXaW5kb3codCwgc3JjKSB7CisgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgdC5hZGRfY2xlYW51cCgoKSA9PiB7IGlmcmFt
ZS5yZW1vdmUoKTsgfSk7CisgICAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7IHJlc29sdmUo
aWZyYW1lLmNvbnRlbnRXaW5kb3cpOyB9OworICAgICAgICBpZnJhbWUuc3JjID0gc3JjOworICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChpZnJhbWUpOworICAgIH0pOworfQorPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2NvbXBpbGUtZXZlbnQtaGFuZGxlci1zZXR0aW5n
cy1vYmplY3RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRz
L2NvbXBpbGUtZXZlbnQtaGFuZGxlci1zZXR0aW5ncy1vYmplY3RzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMjc5MzczKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9jb21waWxlLWV2ZW50LWhhbmRs
ZXItc2V0dGluZ3Mtb2JqZWN0cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAKIFBBU1MgVGhlIEZ1bmN0aW9uIGluc3RhbmNlIG11c3QgYmUgY3JlYXRlZCBpbiB0
aGUgUmVhbG0gb2YgdGhlIG5vZGUgZG9jdW1lbnQKIEZBSUwgVGhlIGVudHJ5IHNldHRpbmdzIG9i
amVjdCB3aGlsZSBleGVjdXRpbmcgdGhlIGNvbXBpbGVkIGNhbGxiYWNrIHZpYSBXZWIgSURMJ3Mg
aW52b2tlIG11c3QgYmUgdGhhdCBvZiB0aGUgbm9kZSBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL3Jlc291cmNlcy9vcGVu
LXdpbmRvdy5odG1sIiBidXQgZ290ICIvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMv
b3Blbi13aW5kb3cuaHRtbCIKLUZBSUwgVGhlIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgd2hp
bGUgZXhlY3V0aW5nIHRoZSBjb21waWxlZCBjYWxsYmFjayB2aWEgV2ViIElETCdzIGludm9rZSBt
dXN0IGJlIHRoYXQgb2YgdGhlIG5vZGUgZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
ImlmcmFtZSIgYnV0IGdvdCAicGFyZW50IGZyYW1lIgorUEFTUyBUaGUgaW5jdW1iZW50IHNldHRp
bmdzIG9iamVjdCB3aGlsZSBleGVjdXRpbmcgdGhlIGNvbXBpbGVkIGNhbGxiYWNrIHZpYSBXZWIg
SURMJ3MgaW52b2tlIG11c3QgYmUgdGhhdCBvZiB0aGUgbm9kZSBkb2N1bWVudAogCkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBp
cy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFz
Y3JpcHQtam9iLXF1ZXVlL3Byb21pc2Utam9iLWluY3VtYmVudC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRo
LXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNzkzNzMpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0y
L2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Byb21pc2Utam9iLWlu
Y3VtYmVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMTMgKzIsMTMgQEAKIAog
UEFTUyBTYW5pdHkgY2hlY2s6IHRoaXMgYWxsIHdvcmtzIGFzIGV4cGVjdGVkIHdpdGggbm8gcHJv
bWlzZXMgaW52b2x2ZWQKIFBBU1MgRnVsZmlsbG1lbnQgaGFuZGxlciBvbiBmdWxmaWxsZWQgcHJv
bWlzZQotRkFJTCBGdWxmaWxsbWVudCBoYW5kbGVyIG9uIGZ1bGZpbGxlZCBwcm9taXNlLCB1c2lu
ZyBiYWNrdXAgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcv
cHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1
ZXVlL3Jlc291cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBn
b3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nl
c3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9y
ZXNvdXJjZXMvY3VycmVudC9jdXJyZW50Lmh0bWwiCitGQUlMIEZ1bGZpbGxtZW50IGhhbmRsZXIg
b24gZnVsZmlsbGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2Jq
ZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4MDAv
aHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24t
d2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWluY3Vt
YmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgt
dGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Byb21pc2Utam9iLWluY3VtYmVudC5odG1sIgogUEFT
UyBSZWplY3Rpb24gaGFuZGxlciBvbiByZWplY3RlZCBwcm9taXNlCi1GQUlMIFJlamVjdGlvbiBo
YW5kbGVyIG9uIHJlamVjdGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQgc2V0dGlu
Z3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vbG9jYWxob3N0
Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdy
YXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3Byb21pc2Utam9i
LWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAw
L2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9u
LXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9jdXJyZW50L2N1cnJlbnQu
aHRtbCIKK0ZBSUwgUmVqZWN0aW9uIGhhbmRsZXIgb24gcmVqZWN0ZWQgcHJvbWlzZSwgdXNpbmcg
YmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3By
b2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1
ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290
ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNz
aW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJv
bWlzZS1qb2ItaW5jdW1iZW50Lmh0bWwiCiBQQVNTIEZ1bGZpbGxtZW50IGhhbmRsZXIgb24gcGVu
ZGluZy10aGVuLWZ1bGZpbGxlZCBwcm9taXNlCi1GQUlMIEZ1bGZpbGxtZW50IGhhbmRsZXIgb24g
cGVuZGluZy10aGVuLWZ1bGZpbGxlZCBwcm9taXNlLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50IHNl
dHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2Fs
aG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2lu
dGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9taXNl
LWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6
ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3Jh
dGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvY3VycmVudC9jdXJy
ZW50Lmh0bWwiCitGQUlMIEZ1bGZpbGxtZW50IGhhbmRsZXIgb24gcGVuZGluZy10aGVuLWZ1bGZp
bGxlZCBwcm9taXNlLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCBzdGFj
ayBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2Vi
YXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhl
LWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJlbnQtaW5j
dW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFw
aXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZh
c2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQuaHRtbCIKIFBBU1MgUmVqZWN0
aW9uIGhhbmRsZXIgb24gcGVuZGluZy10aGVuLXJlamVjdGVkIHByb21pc2UKLUZBSUwgUmVqZWN0
aW9uIGhhbmRsZXIgb24gcGVuZGluZy10aGVuLXJlamVjdGVkIHByb21pc2UsIHVzaW5nIGJhY2t1
cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNz
aW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVz
b3VyY2VzL3Byb21pc2Utam9iLWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0
cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1t
b2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNl
cy9jdXJyZW50L2N1cnJlbnQuaHRtbCIKK0ZBSUwgUmVqZWN0aW9uIGhhbmRsZXIgb24gcGVuZGlu
Zy10aGVuLXJlamVjdGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mg
b2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4
MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRp
b24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWlu
Y3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0
bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdp
dGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Byb21pc2Utam9iLWluY3VtYmVudC5odG1sIgog
UEFTUyBUaGVuYWJsZSByZXNvbHV0aW9uCi1GQUlMIFRoZW5hYmxlIHJlc29sdXRpb24sIHVzaW5n
IGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9w
cm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVl
dWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdv
dCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vz
c2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jl
c291cmNlcy9jdXJyZW50L2N1cnJlbnQuaHRtbCIKK0ZBSUwgVGhlbmFibGUgcmVzb2x1dGlvbiwg
dXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0
aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpv
Yi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBi
dXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9w
cm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVl
dWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50Lmh0bWwiCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGVyZm9ybWFuY2UtdGltZWxpbmUvc3VwcG9ydGVk
RW50cnlUeXBlcy1jcm9zcy1yZWFsbS1hY2Nlc3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGVyZm9ybWFuY2Ut
dGltZWxpbmUvc3VwcG9ydGVkRW50cnlUeXBlcy1jcm9zcy1yZWFsbS1hY2Nlc3MtZXhwZWN0ZWQu
dHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvcGVyZm9ybWFuY2UtdGltZWxpbmUvc3VwcG9ydGVkRW50cnlUeXBlcy1jcm9zcy1y
ZWFsbS1hY2Nlc3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAor
CitQQVNTIENyb3NzLXJlYWxtIGFjY2VzcyBvZiBzdXBwb3J0ZWRFbnRyeVR5cGVzIHJldHVybnMg
QXJyYXkgb2YgYW5vdGhlciByZWFsbQorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlw
ZXMtY3Jvc3MtcmVhbG0tYWNjZXNzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9zdXBwb3J0
ZWRFbnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGVyZm9ybWFuY2UtdGlt
ZWxpbmUvc3VwcG9ydGVkRW50cnlUeXBlcy1jcm9zcy1yZWFsbS1hY2Nlc3MuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5Dcm9zcy1yZWFsbSBhY2Nlc3Mgb2Ygc3VwcG9ydGVkRW50cnlUeXBl
cyByZXR1cm5zIEFycmF5IG9mIGFub3RoZXIgcmVhbG08L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vcGVyZm9ybWFuY2UtdGltZWxpbmUvI3N1cHBv
cnRlZGVudHJ5dHlwZXMtYXR0cmlidXRlIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxib2R5PgorPHNjcmlwdD4KK3Rlc3QodCA9PiB7CisgIGNv
bnN0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICB0LmFkZF9j
bGVhbnVwKCgpID0+IHsgaWZyYW1lLnJlbW92ZSgpOyB9KTsKKyAgaWZyYW1lLm9ubG9hZCA9IHQu
c3RlcF9mdW5jX2RvbmUoKCkgPT4geworICAgIGNvbnN0IG90aGVyV2luZG93ID0gaWZyYW1lLmNv
bnRlbnRXaW5kb3c7CisgICAgYXNzZXJ0X3RydWUob3RoZXJXaW5kb3cuUGVyZm9ybWFuY2VPYnNl
cnZlci5zdXBwb3J0ZWRFbnRyeVR5cGVzIGluc3RhbmNlb2Ygb3RoZXJXaW5kb3cuQXJyYXkpOwor
ICB9KTsKKyAgZG9jdW1lbnQuYm9keS5hcHBlbmQoaWZyYW1lKTsKK30pOworPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LWNzcy1jcm9zcy1vcmlnaW4uaHR0
cHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJl
cXVlc3QtY3NzLWNyb3NzLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3OTM3
MykKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QtY3NzLWNyb3NzLW9yaWdpbi5o
dHRwcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw2IEBACiAKIFBBU1Mg
c2V0dXAgZ2xvYmFsIHN0YXRlCiBQQVNTIE1JTUUgY2hlY2tpbmcgb2YgQ1NTIHJlc291cmNlcyBm
ZXRjaGVkIHZpYSBzZXJ2aWNlIHdvcmtlciB3aGVuIENvbnRlbnQtVHlwZSBpcyBub3Qgc2V0Lgot
RkFJTCBTYW1lLW9yaWdpbiBwb2xpY3kgZm9yIGFjY2VzcyB0byBDU1MgcmVzb3VyY2VzIGZldGNo
ZWQgdmlhIHNlcnZpY2Ugd29ya2VyIGFzc2VydF90aHJvd3NfZG9tOiBmdW5jdGlvbiAiKCkgPT4g
ewotICAgIGYuY29udGVudERvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLmNzc1Rl
eHQ7Ci0gIH0iIHRocmV3IGFuIGV4Y2VwdGlvbiBmcm9tIHRoZSB3cm9uZyBnbG9iYWwKK0ZBSUwg
U2FtZS1vcmlnaW4gcG9saWN5IGZvciBhY2Nlc3MgdG8gQ1NTIHJlc291cmNlcyBmZXRjaGVkIHZp
YSBzZXJ2aWNlIHdvcmtlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogb2JqZWN0ICJTZWN1cml0eUVycm9yOiBOb3QgYWxsb3dlZCB0byBhY2Nlc3MgY3Jvc3Mt
b3JpZ2luIHN0eWxlc2hlZXQiCiBQQVNTIGNsZWFudXAgZ2xvYmFsIHN0YXRlCiAKSW5kZXg6IExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQt
dHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVk
LXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxlLmh0bWwJKHJldmlzaW9uIDI3OTM3
MykKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
LWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtOSw5ICs5LDEwIEBACiAgICAgICAgIDxpZnJhbWUgc3JjPSIuIiBpZD0iZnJh
bWUiPjwvaWZyYW1lPgogICAgICAgICA8c2NyaXB0PgogcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0
KSA9PiB7CisgICAgY29uc3QgZnJhbWVET01FeGNlcHRpb24gPSBmcmFtZS5jb250ZW50V2luZG93
LkRPTUV4Y2VwdGlvbjsKICAgICBjb25zdCB0cmFuc2Zvcm0gPSBuZXcgZnJhbWUuY29udGVudFdp
bmRvdy5TRnJhbWVUcmFuc2Zvcm07CiAgICAgZnJhbWUucmVtb3ZlKCk7Ci0gICAgYXNzZXJ0X3Ro
cm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gdHJhbnNmb3JtLnJlYWRhYmxlKTsK
KyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmcmFtZURPTUV4Y2Vw
dGlvbiwgKCkgPT4gdHJhbnNmb3JtLnJlYWRhYmxlKTsKIH0pOwogICAgICAgIDwvc2NyaXB0Pgog
ICAgIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434056</attachid>
            <date>2021-07-22 19:39:04 -0700</date>
            <delta_ts>2021-07-23 10:58:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-225997-20210723053902.patch</filename>
            <type>text/plain</type>
            <size>104853</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODAyMTEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA3LTIyICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1
ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgICogc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXByb3Rv
LWNoYWluLXB1dC5qczoKKyAgICAgICAgKiBzdHJlc3MvZ2V0dGVyLXNldHRlci1nbG9iYWxvYmpl
Y3QtaW4taWMtMi5qczogQWRkZWQuCisKIDIwMjEtMDctMjIgIFNhYW0gQmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWlyU3RhY2tTbG90J3MgdWludDE2X3QgYnl0ZSBzaXpl
IGlzIHRvbyBzbWFsbApJbmRleDogSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8t
Y2hhaW4tcHV0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2N1c3RvbS1nZXQtc2V0
LXByb3RvLWNoYWluLXB1dC5qcwkocmV2aXNpb24gMjgwMjExKQorKysgSlNUZXN0cy9zdHJlc3Mv
Y3VzdG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC05OSw4
ICs5OSw4IEBAIGZ1bmN0aW9uIGdldEJhc2VzKCkgewogKCgpID0+IHsKICAgICBmb3IgKGxldCBi
YXNlIG9mIGdldEJhc2VzKCkpIHsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsr
aSkKLSAgICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgYmFzZS5jdXN0b21BY2Nlc3Nvckds
b2JhbE9iamVjdCA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJl
YWRvbmx5IHByb3BlcnR5LiIpOwotICAgICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0KE9iamVjdChi
YXNlKSwgImN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0Iiwge30pKTsKKyAgICAgICAgICAgIHNo
b3VsZFRocm93KCgpID0+IHsgYmFzZS5jdXN0b21BY2Nlc3NvclJlYWRPbmx5ID0ge307IH0sICJU
eXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7Cisg
ICAgICAgIGFzc2VydCghUmVmbGVjdC5zZXQoT2JqZWN0KGJhc2UpLCAiY3VzdG9tQWNjZXNzb3JS
ZWFkT25seSIsIHt9KSk7CiAgICAgfQogfSkoKTsKIApAQCAtMTA4LDIxICsxMDgsMjEgQEAgZnVu
Y3Rpb24gZ2V0QmFzZXMoKSB7CiAoKCkgPT4gewogICAgIGZvciAobGV0IHByaW1pdGl2ZSBvZiBw
cmltaXRpdmVzKSB7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpCi0gICAg
ICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IHByaW1pdGl2ZS5jdXN0b21WYWx1ZUdsb2JhbE9i
amVjdCA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5
IHByb3BlcnR5LiIpOworICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBwcmltaXRpdmUu
Y3VzdG9tVmFsdWVOb1NldHRlciA9IHt9OyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNz
aWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOwogICAgIH0KIAogICAgIGZvciAobGV0IG9iamVj
dCBvZiBnZXRPYmplY3RzKCkpIHsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsr
aSkKLSAgICAgICAgICAgIG9iamVjdC5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9IHt9OwotICAg
ICAgICBhc3NlcnQob2JqZWN0Lmhhc093blByb3BlcnR5KCJjdXN0b21WYWx1ZUdsb2JhbE9iamVj
dCIpKTsKLSAgICAgICAgYXNzZXJ0KFJlZmxlY3Quc2V0KG9iamVjdCwgImN1c3RvbVZhbHVlR2xv
YmFsT2JqZWN0Iiwge30pKTsKKyAgICAgICAgICAgIG9iamVjdC5jdXN0b21WYWx1ZU5vU2V0dGVy
ID0ge307CisgICAgICAgIGFzc2VydChvYmplY3QuaGFzT3duUHJvcGVydHkoImN1c3RvbVZhbHVl
Tm9TZXR0ZXIiKSk7CisgICAgICAgIGFzc2VydChSZWZsZWN0LnNldChvYmplY3QsICJjdXN0b21W
YWx1ZU5vU2V0dGVyIiwge30pKTsKICAgICB9CiAKICAgICBmb3IgKGxldCBvYmplY3Qgb2YgZ2V0
T2JqZWN0cygpKSB7CiAgICAgICAgIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QpOwog
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7Ci0gICAgICAgICAgICBzaG91
bGRUaHJvdygoKSA9PiB7IG9iamVjdC5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9IHt9OyB9LCAi
VHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOwot
ICAgICAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChvYmplY3QsICJjdXN0b21WYWx1ZUdsb2Jh
bE9iamVjdCIsIHt9KSk7CisgICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG9iamVjdC5j
dXN0b21WYWx1ZU5vU2V0dGVyID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3Np
Z24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7CisgICAgICAgICAgICBhc3NlcnQoIVJlZmxlY3Qu
c2V0KG9iamVjdCwgImN1c3RvbVZhbHVlTm9TZXR0ZXIiLCB7fSkpOwogICAgICAgICB9CiAgICAg
fQogfSkoKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2JqZWN0
LWluLWljLTIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZ2V0dGVyLXNldHRlci1n
bG9iYWxvYmplY3QtaW4taWMtMi5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9n
ZXR0ZXItc2V0dGVyLWdsb2JhbG9iamVjdC1pbi1pYy0yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzcgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7Cit9CisKK2NvbnN0IGNyZWF0ZUN1c3Rv
bSA9IGAKKyAgICB2YXIgY3VzdG9tID0gJHZtLmNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIo
KTsKK2A7CisKKyhmdW5jdGlvbiBkaXJlY3RDdXN0b21BY2Nlc3NvckdldCgpIHsKKyAgICBjb25z
dCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9t
ID0gb3RoZXIuY3VzdG9tOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgewor
ICAgICAgICBhc3NlcnQob3RoZXJDdXN0b20uY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPT09
IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gZGlyZWN0Q3VzdG9tVmFsdWVHZXQo
KSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25z
dCBvdGhlckN1c3RvbSA9IG90aGVyLmN1c3RvbTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MWU1OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KG90aGVyQ3VzdG9tLmN1c3RvbVZhbHVlR2xvYmFs
T2JqZWN0ID09PSBvdGhlcik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIGRpcmVjdEN1c3Rv
bUFjY2Vzc29yU2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3Rv
bSk7CisgICAgY29uc3Qgb3RoZXJDdXN0b20gPSBvdGhlci5jdXN0b207CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGNvbnN0IHZhbHVlID0ge307CisgICAg
ICAgIG90aGVyQ3VzdG9tLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID0gdmFsdWU7CisgICAg
ICAgIGFzc2VydCh2YWx1ZS5yZXN1bHQgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVu
Y3Rpb24gZGlyZWN0Q3VzdG9tVmFsdWVTZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJp
bmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVyLmN1c3RvbTsK
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgY29uc3QgdmFs
dWUgPSB7fTsKKyAgICAgICAgb3RoZXJDdXN0b20uY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB2
YWx1ZTsKKyAgICAgICAgYXNzZXJ0KHZhbHVlLnJlc3VsdCA9PT0gb3RoZXIpOworICAgIH0KK30p
KCk7CisKKyhmdW5jdGlvbiBwcm90b3R5cGVDaGFpbkN1c3RvbUFjY2Vzc29yR2V0KCkgeworICAg
IGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJD
dXN0b21IZWlyID0gT2JqZWN0LmNyZWF0ZShvdGhlci5jdXN0b20pOworCisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBhc3NlcnQob3RoZXJDdXN0b21IZWlyLmN1
c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID09PSBvdGhlcik7CisgICAgfQorfSkoKTsKKworKGZ1
bmN0aW9uIHByb3RvdHlwZUNoYWluQ3VzdG9tVmFsdWVHZXQoKSB7CisgICAgY29uc3Qgb3RoZXIg
PSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbUhlaXIgPSBP
YmplY3QuY3JlYXRlKG90aGVyLmN1c3RvbSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFl
NTsgaSsrKSB7CisgICAgICAgIGFzc2VydChvdGhlckN1c3RvbUhlaXIuY3VzdG9tVmFsdWVHbG9i
YWxPYmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gcHJvdG90eXBl
Q2hhaW5DdXN0b21BY2Nlc3NvclNldCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhj
cmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tSGVpciA9IE9iamVjdC5jcmVhdGUo
b3RoZXIuY3VzdG9tKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAg
ICAgICAgY29uc3QgdmFsdWUgPSB7fTsKKyAgICAgICAgb3RoZXJDdXN0b21IZWlyLmN1c3RvbUFj
Y2Vzc29yR2xvYmFsT2JqZWN0ID0gdmFsdWU7CisgICAgICAgIGFzc2VydCh2YWx1ZS5yZXN1bHQg
PT09IG90aGVyKTsKKyAgICB9Cit9KSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMDctMjIgIEFsZXhleSBTaHZheWthICA8
c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vz
c29ycyAvIHZhbHVlcyB3aXRoIHRoZWlyIGhvbGRlcidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk5NworCisgICAgICAg
IFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSnVzdCBsaWtlIEpTIGJ1aWx0
LWlucywgZ2V0dGVyIC8gc2V0dGVyIGZ1bmN0aW9ucyBvZiBXZWJJREwgYXR0cmlidXRlcyBhcmUg
Y3JlYXRlZCBpbiByZWFsbQorICAgICAgICBvZiB0aGVpciBob2xkZXIgaW50ZXJmYWNlIFsxXVsy
XSwgd2hpY2ggaXMgdGhlaXIgX2N1cnJlbnRfIHJlYWxtIGZvciB0aHJvd2luZyBhbiBlcnJvciBb
M10uCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCBjdXN0b20gcHJvcGVydGllcyBnZXQgY29y
cmVjdCBnbG9iYWwgb2JqZWN0IGluc3RlYWQgb2YgbGV4aWNhbCwgaW5jbHVkaW5nCisgICAgICAg
IHdoZW4gaW5saW5lIGNhY2hlZCwgYWxpZ25pbmcgdGhlbSB3aXRoIGZ1bmN0aW9ucyBhbmQgcmVn
dWxhciBhY2Nlc3NvcnMuCisKKyAgICAgICAgVGhlIGxhdHRlciBhbGxvd2VkIHN3aXRjaGluZyBK
UyBidWlsdC1pbnMgdG8gQ3VzdG9tQWNjZXNzb3IgKGUuZy4gU3ltYm9sI2Rlc2NyaXB0aW9uKSwK
KyAgICAgICAgd2hpY2ggaXMgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQgdG8gY2FsbCBmcm9tIEMr
KywgZG9lc24ndCBuZWVkIHJlaWZpY2F0aW9uIG9uIGZpcnN0IGFjY2VzcywKKyAgICAgICAgYW5k
IGhhcyBuaWNlciBzaWduYXR1cmUuCisKKyAgICAgICAgQWxzbywgcmVuYW1lcyBXQVNNIGFjY2Vz
c29ycyB0byBkcm9wICJmdW5jIiBhbmQgcmVtb3ZlcyB1bnVzZWQgZnVuY3Rpb24gbGVuZ3RoIHBh
cmFtZXRlci4KKworICAgICAgICBbMV06IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwv
I2Rmbi1hdHRyaWJ1dGUtZ2V0dGVyIChzdGVwIDIpCisgICAgICAgIFsyXTogaHR0cHM6Ly9oZXlj
YW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1zZXR0ZXIgKHN0ZXAgNSkKKyAgICAg
ICAgWzNdOiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlY21hc2NyaXB0LXRocm93
CisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBjcmVhdGVfaGFzaF90YWJsZToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnJh
bWU6Omdsb2JhbE9iamVjdE9mQ2xvc2VzdENvZGVCbG9jayk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGVQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dElubGluZVNsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90LmNw
cDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjdXN0b21HZXR0ZXIgY29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xv
dDo6Z2V0VmFsdWUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiB0
b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIp
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOiBEZWxldGVkLgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlUYWJsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUik6CisKIDIwMjEtMDctMjIgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgQWlyU3RhY2tTbG90J3MgdWludDE2X3QgYnl0ZSBzaXplIGlzIHRvbyBzbWFs
bApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQkocmV2aXNpb24g
MjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NCwxMSArOTQsNiBAQCB3aGlsZSAoPElOPikgewogICAgICAgICBpZiAo
JGF0dCA9fiBtL0Z1bmN0aW9uLykgewogICAgICAgICAgICAgcHVzaChAdmFsdWVzLCB7ICJ0eXBl
IiA9PiAiUHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uIiwgImZ1bmN0aW9uIiA9PiAkdmFsLCAi
cGFyYW1zIiA9PiAobGVuZ3RoKCRwYXJhbSkgPyAkcGFyYW0gOiAiIiksICJpbnRyaW5zaWMiID0+
IChsZW5ndGgoJGludHJpbnNpYykgPyAkaW50cmluc2ljIDogIk5vSW50cmluc2ljIikgfSk7CiAg
ICAgICAgICAgICAjcHJpbnRmIFNUREVSUiAiV0FSTklORzogTnVtYmVyIG9mIGFyZ3VtZW50cyBt
aXNzaW5nIGZvciAka2V5LyR2YWxcbiIgaWYgKGxlbmd0aCgkcGFyYW0pID09IDApOwotICAgICAg
ICB9IGVsc2lmICgkYXR0ID1+IG0vQWNjZXNzb3IvKSB7Ci0gICAgICAgICAgICBteSAkZ2V0ID0g
JHZhbDsKLSAgICAgICAgICAgIG15ICRwdXQgPSAibnVsbHB0ciI7Ci0gICAgICAgICAgICAkaGFz
U2V0dGVyID0gInRydWUiOwotICAgICAgICAgICAgcHVzaChAdmFsdWVzLCB7ICJ0eXBlIiA9PiAi
UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIiwgImdldCIgPT4gJGdldCwgInB1dCIgPT4gJHB1
dCB9KTsKICAgICAgICAgfSBlbHNpZiAoJGF0dCA9fiBtL0NlbGxQcm9wZXJ0eS8pIHsKICAgICAg
ICAgICAgIG15ICRwcm9wZXJ0eSA9ICR2YWw7CiAgICAgICAgICAgICBwdXNoKEB2YWx1ZXMsIHsg
InR5cGUiID0+ICJQcm9wZXJ0eUF0dHJpYnV0ZTo6Q2VsbFByb3BlcnR5IiwgInByb3BlcnR5IiA9
PiAkcHJvcGVydHkgfSk7CkBAIC0zMTAsMTEgKzMwNSw2IEBAIHN1YiBvdXRwdXQoKSB7CiAgICAg
ICAgICAgICAkZmlyc3RWYWx1ZSA9ICR2YWx1ZXNbJGldeyJmdW5jdGlvbiJ9OwogICAgICAgICAg
ICAgJHNlY29uZFZhbHVlID0gJHZhbHVlc1skaV17InBhcmFtcyJ9OwogICAgICAgICAgICAgJGlu
dHJpbnNpYyA9ICR2YWx1ZXNbJGldeyJpbnRyaW5zaWMifTsKLSAgICAgICAgfSBlbHNpZiAoJHZh
bHVlc1skaV17InR5cGUifSBlcSAiUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIikgewotICAg
ICAgICAgICAgJGZpcnN0Q2FzdFN0ciA9ICJzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4i
OwotICAgICAgICAgICAgJHNlY29uZENhc3RTdHIgPSAic3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+IjsKLSAgICAgICAgICAgICRmaXJzdFZhbHVlID0gJHZhbHVlc1skaV17ImdldCJ9Owot
ICAgICAgICAgICAgJHNlY29uZFZhbHVlID0gJHZhbHVlc1skaV17InB1dCJ9OwogICAgICAgICB9
IGVsc2lmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVy
dHkiKSB7CiAgICAgICAgICAgICAkZmlyc3RDYXN0U3RyID0gInN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPiI7CiAgICAgICAgICAgICAkc2Vjb25kQ2FzdFN0ciA9ICJzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4iOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkocmV2aXNpb24gMjgwMjEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDEwLDcgKzE0MTAsNiBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbChBY2Nlc3NHZW5lCiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqc3RhdGUuaml0OwogICAg
IFZNJiB2bSA9IHN0YXRlLm1fdm07CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQuY29k
ZUJsb2NrKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLm1fZ2xv
YmFsT2JqZWN0OwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gc3RhdGUubV9lY21hTW9kZTsKICAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3RhdGUuc3R1YkluZm87CiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gc3RhdGUudmFsdWVSZWdzOwpAQCAtMTYxMyw2ICsxNjEyLDgg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAgICAg
QVNTRVJUKGJhc2VHUFIgIT0gbG9hZGVkVmFsdWVHUFIpOwogICAgICAgICAgICAgQVNTRVJUKG1f
dHlwZSAhPSBTZXR0ZXIgfHwgdmFsdWVSZWdzUGF5bG9hZEdQUiAhPSBsb2FkZWRWYWx1ZUdQUik7
CiAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS5tX2ds
b2JhbE9iamVjdDsKKwogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgSlMgY2FsbCB1c2luZyBhIEpT
IGNhbGwgaW5saW5lIGNhY2hlLiBBc3N1bWUgdGhhdDoKICAgICAgICAgICAgIC8vCiAgICAgICAg
ICAgICAvLyAtIFNQIGlzIGFsaWduZWQgYW5kIHJlcHJlc2VudHMgdGhlIGV4dGVudCBvZiB0aGUg
Y2FsbGluZyBjb21waWxlcidzIHN0YWNrIHVzYWdlLgpAQCAtMTc0OCw2ICsxNzQ5LDggQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBDdXN0b21WYWx1ZUdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tQWNjZXNzb3JH
ZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0b21B
Y2Nlc3NvclNldHRlcik7CiAgICAgICAgICAgICBBU1NFUlQoIWRvZXNQcm9wZXJ0eVN0b3JhZ2VM
b2Fkcyk7IC8vIE9yIHdlIG5lZWQgYW4gZXh0cmEgcmVnaXN0ZXIuIFdlIHJlbHkgb24gcHJvcGVy
dHlPd25lckdQUiBiZWluZyBjb3JyZWN0IGhlcmUuCiAKKyAgICAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBoYXNBbHRlcm5hdGVCYXNlKCkgPyBhbHRlcm5hdGVCYXNlKCkt
Pmdsb2JhbE9iamVjdCh2bSkgOiBzdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCk7CisKICAgICAg
ICAgICAgIC8vIE5lZWQgdG8gbWFrZSByb29tIGZvciB0aGUgQyBjYWxsIHNvIGFueSBvZiBvdXIg
c3RhY2sgc3BpbGxhZ2UgaXNuJ3Qgb3ZlcndyaXR0ZW4uIEl0J3MKICAgICAgICAgICAgIC8vIGhh
cmQgdG8gdHJhY2sgaWYgc29tZW9uZSBkaWQgc3BpbGxhZ2Ugb3Igbm90LCBzbyB3ZSBqdXN0IGFz
c3VtZSB0aGF0IHdlIGFsd2F5cyBuZWVkCiAgICAgICAgICAgICAvLyB0byBtYWtlIHNvbWUgc3Bh
Y2UgaGVyZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9D
YWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkxMSW50UENS
YW5nZXMuaCIKICNpbmNsdWRlICJWTUVudHJ5UmVjb3JkLmgiCisjaW5jbHVkZSAiVk1FbnRyeVNj
b3BlLmgiCiAjaW5jbHVkZSAiV2FzbUNvbnRleHRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2FzbUlu
c3RhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBAIC0yNDQsNiAr
MjQ1LDMwIEBAIFNvdXJjZU9yaWdpbiBDYWxsRnJhbWU6OmNhbGxlclNvdXJjZU9yaWcKICAgICBy
ZXR1cm4gc291cmNlT3JpZ2luOwogfQogCitKU0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjpnbG9i
YWxPYmplY3RPZkNsb3Nlc3RDb2RlQmxvY2soVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbnVsbHB0cjsKKyAgICBTdGFj
a1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgdm0sIFsmXShTdGFja1Zpc2l0b3ImIHZpc2l0b3Ip
IHsKKyAgICAgICAgaWYgKHZpc2l0b3ItPmlzV2FzbUZyYW1lKCkpIHsKKyAgICAgICAgICAgIGds
b2JhbE9iamVjdCA9IHZpc2l0b3ItPmNhbGxGcmFtZSgpLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZt
KTsKKyAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6RG9uZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoYXV0byogY29kZUJsb2NrID0gdmlzaXRvci0+Y29kZUJsb2NrKCkp
IHsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gQ29kZVR5cGU6OkZ1
bmN0aW9uQ29kZSAmJiBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpKS0+aXNCdWlsdGluRnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gU3RhY2tWaXNpdG9yOjpTdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgZ2xv
YmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIHJldHVy
biBTdGFja1Zpc2l0b3I6OlN0YXR1czo6RG9uZTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQo
dmlzaXRvci0+Y29kZVR5cGUoKSA9PSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZTo6TmF0
aXZlKTsKKyAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVzOjpDb250aW51ZTsKKyAg
ICB9KTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
OworICAgIGlmICh2bS5lbnRyeVNjb3BlKQorICAgICAgICByZXR1cm4gdm0uZW50cnlTY29wZS0+
Z2xvYmFsT2JqZWN0KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFN0cmluZyBDYWxsRnJh
bWU6OmZyaWVuZGx5RnVuY3Rpb25OYW1lKCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IHRoaXMtPmNvZGVCbG9jaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNiAr
MjYzLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBpbmxpbmUgdm9pZCBzZXRDb2RlQmxv
Y2soQ29kZUJsb2NrKik7CiAgICAgICAgIHZvaWQgc2V0UmV0dXJuUEModm9pZCogdmFsdWUpIHsg
Y2FsbGVyRnJhbWVBbmRQQygpLnJldHVyblBDID0gdmFsdWU7IH0KIAorICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdE9mQ2xvc2VzdENv
ZGVCbG9jayhWTSYsIENhbGxGcmFtZSopOwogICAgICAgICBTdHJpbmcgZnJpZW5kbHlGdW5jdGlv
bk5hbWUoKTsKIAogICAgICAgICAvLyBDYWxsRnJhbWU6Oml0ZXJhdGUoKSBleHBlY3RzIGEgRnVu
Y3RvciB0aGF0IGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBtZXRob2Q6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZSk7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxDb2xs
YXRvckZ1bmNDb21wYXJlKTsKIApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50
bENvbGxhdG9yUHJvdG90eXBlOjpzCiAKIC8qIFNvdXJjZSBmb3IgSW50bENvbGxhdG9yUHJvdG90
eXBlLmx1dC5oCiBAYmVnaW4gY29sbGF0b3JQcm90b3R5cGVUYWJsZQotICBjb21wYXJlICAgICAg
ICAgIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUgICAgICAgIERvbnRFbnVtfEFj
Y2Vzc29yCisgIGNvbXBhcmUgICAgICAgICAgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29t
cGFyZSAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICAgcmVzb2x2ZWRP
cHRpb25zICBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICBEb250RW51
bXxGdW5jdGlvbiAwCiBAZW5kCiAqLwpAQCAtMTA1LDE0ICsxMDUsMTQgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKEludGxDb2xsYXRvckZ1bgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5jb21wYXJlU3RyaW5ncyhnbG9iYWxPYmplY3Qs
IHhWaWV3V2l0aFN0cmluZy52aWV3LCB5Vmlld1dpdGhTdHJpbmcudmlldykpKTsKIH0KIAotSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFy
ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTAuMy4z
IEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAx
LiBMZXQgY29sbGF0b3IgYmUgdGhpcyBDb2xsYXRvciBvYmplY3QuCi0gICAgSW50bENvbGxhdG9y
KiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0
PEludGxDb2xsYXRvcio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KCFjb2xsYXRvcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xs
YXRvciJfcykpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4
MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVu
Y0Zvcm1hdFJhbmdlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZVRvUGFydHMpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1h
dFRvUGFydHMpOwpAQCAtNTMsNyArNTMsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90CiAKIC8qIFNvdXJjZSBmb3IgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
Lmx1dC5oCiBAYmVnaW4gZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVUYWJsZQotICBmb3JtYXQgICAg
ICAgICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0ICAgICAg
ICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICBmb3JtYXQgICAgICAgICAgICAgICAgSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgICAgICBEb250RW51bXxS
ZWFkT25seXxDdXN0b21BY2Nlc3NvcgogICBmb3JtYXRSYW5nZSAgICAgICAgICAgSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAyCiAgIGZvcm1hdFRvUGFydHMgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGVGdW5jRm9ybWF0VG9QYXJ0cyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgcmVzb2x2
ZWRPcHRpb25zICAgICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9w
dGlvbnMgICAgICAgRG9udEVudW18RnVuY3Rpb24gMApAQCAtMTEzLDE0ICsxMTMsMTQgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxEYXRlVGltZUZvcgogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwg
dmFsdWUpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICAvLyAxMi4zLjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGlzIERhdGVU
aW1lRm9ybWF0IG9iamVjdC4KLSAgICBhdXRvKiBkdGYgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnVu
d3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGF1dG8qIGR0ZiA9IEludGxEYXRlVGltZUZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rp
b25zKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgLy8gMi4gUmV0dXJuSWZBYnJ1cHQoZHRm
KS4KICAgICBpZiAoVU5MSUtFTFkoIWR0ZikpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjgw
MjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2ICszNCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVGdW5j
TWF4aW1pemUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVBy
b3RvdHlwZUZ1bmNNaW5pbWl6ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJ
bnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZSk7Ci1zdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIp
Owotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckNhc2VGaXJzdCk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUpOwotc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMpOwot
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ck51bWJlcmluZ1N5c3RlbSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCk7Ci1zdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJC
YXNlTmFtZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyQ2FsZW5kYXIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
SW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3Vy
Q3ljbGUpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3Rv
dHlwZUdldHRlck51bWVyaWMpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50
bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UpOworc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlclNj
cmlwdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyUmVnaW9uKTsKIAogfQogCkBAIC01OCwxNiArNTgsMTYgQEAgY29uc3QgQ2xhc3NJ
bmZvIEludGxMb2NhbGVQcm90b3R5cGU6OnNfaQogICBtYXhpbWl6ZSAgICAgICAgIEludGxMb2Nh
bGVQcm90b3R5cGVGdW5jTWF4aW1pemUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAg
bWluaW1pemUgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01pbmltaXplICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAwCiAgIHRvU3RyaW5nICAgICAgICAgSW50bExvY2FsZVByb3Rv
dHlwZUZ1bmNUb1N0cmluZyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAotICBiYXNlTmFt
ZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZSAgICAgICAgIERvbnRF
bnVtfEFjY2Vzc29yCi0gIGNhbGVuZGFyICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckNhbGVuZGFyICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgY2FzZUZpcnN0ICAgICAgICBJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0ICAgICAgICBEb250RW51bXxBY2Nlc3Nv
cgotICBjb2xsYXRpb24gICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24g
ICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIGhvdXJDeWNsZSAgICAgICAgSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckhvdXJDeWNsZSAgICAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgbnVtZXJp
YyAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYyAgICAgICAgICBEb250
RW51bXxBY2Nlc3NvcgotICBudW1iZXJpbmdTeXN0ZW0gIEludGxMb2NhbGVQcm90b3R5cGVHZXR0
ZXJOdW1iZXJpbmdTeXN0ZW0gIERvbnRFbnVtfEFjY2Vzc29yCi0gIGxhbmd1YWdlICAgICAgICAg
SW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlICAgICAgICAgRG9udEVudW18QWNjZXNz
b3IKLSAgc2NyaXB0ICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0ICAg
ICAgICAgICBEb250RW51bXxBY2Nlc3NvcgotICByZWdpb24gICAgICAgICAgIEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJSZWdpb24gICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIGJhc2VO
YW1lICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lICAgICAgICAgRG9u
dEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgY2FsZW5kYXIgICAgICAgICBJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgorICBjYXNlRmlyc3QgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJD
YXNlRmlyc3QgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGNvbGxh
dGlvbiAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbiAgICAgICAgRG9u
dEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgaG91ckN5Y2xlICAgICAgICBJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgorICBudW1lcmljICAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJO
dW1lcmljICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG51bWJl
cmluZ1N5c3RlbSAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSAgRG9u
dEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbGFuZ3VhZ2UgICAgICAgICBJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgorICBzY3JpcHQgICAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJT
Y3JpcHQgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIHJlZ2lv
biAgICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbiAgICAgICAgICAgRG9u
dEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKIEBlbmQKICovCiAKQEAgLTE0MiwxMiArMTQy
LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuYmFzZU5h
bWUKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFz
ZU5hbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJh
c2VOYW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRv
KiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9j
YWxlLnByb3RvdHlwZS5iYXNlTmFtZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0xNTYsMTIgKzE1NiwxMiBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFyCi1KU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxl
ID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90
b3R5cGUuY2FsZW5kYXIgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMTcwLDEyICsxNzAsMTIgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMv
ZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QKLUpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0LCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpz
RHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBl
LmNhc2VGaXJzdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6
ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0xODQsMTIgKzE4NCwxMiBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNvbGxhdGlvbgotSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24sIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5h
bWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1
dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY29s
bGF0aW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIExvY2FsZSJfcyk7CiAKQEAgLTE5OCwxMiArMTk4LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIv
I3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuaG91ckN5Y2xlCi1KU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byog
bG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5ob3VyQ3lj
bGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
TG9jYWxlIl9zKTsKIApAQCAtMjEyLDEyICsyMTIsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2Vj
LUludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmljCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
SW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
SW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExv
Y2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBq
c0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWVyaWMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsK
IApAQCAtMjI1LDEyICsyMjUsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2Nh
bGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxl
LnByb3RvdHlwZS5udW1iZXJpbmdTeXN0ZW0KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0sIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1p
Y0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRv
KiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJl
cmluZ1N5c3RlbSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6
ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0yMzksMTIgKzIzOSwxMiBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1YWdlCi1KU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWlj
Q2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8q
IGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubGFuZ3Vh
Z2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
TG9jYWxlIl9zKTsKIApAQCAtMjUzLDEyICsyNTMsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2Vj
LUludGwuTG9jYWxlLnByb3RvdHlwZS5zY3JpcHQKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJTY3JpcHQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2Fs
ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5
bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnNjcmlwdCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBA
IC0yNjcsMTIgKzI2NywxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVBy
b3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJv
dG90eXBlLnJlZ2lvbgotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJSZWdpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlw
ZUdldHRlclJlZ2lvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExv
Y2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJ
bnRsLkxvY2FsZS5wcm90b3R5cGUucmVnaW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFu
IG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVy
Rm9ybWF0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1h
dCk7CkBAIC00OSw3ICs0OSw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXAKIAogLyogU291cmNlIGZvciBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oCiBA
YmVnaW4gbnVtYmVyRm9ybWF0UHJvdG90eXBlVGFibGUKLSAgZm9ybWF0ICAgICAgICAgICBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgRG9udEVudW18QWNjZXNz
b3IKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9y
bWF0ICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICAgZm9ybWF0VG9Q
YXJ0cyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMgICAgRG9u
dEVudW18RnVuY3Rpb24gMQogICByZXNvbHZlZE9wdGlvbnMgIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICBEb250RW51bXxGdW5jdGlvbiAwCiBAZW5kCkBAIC0x
MDgsMTQgKzEwOCwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bE51bWJlckZvcm1h
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxP
YmplY3QsIHZhbHVlKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5
cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IG5mIGJlIHRoaXMgTnVtYmVy
Rm9ybWF0IG9iamVjdC4KLSAgICBhdXRvKiBuZiA9IEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZv
ck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IGF1dG8qIG5mID0gSW50bE51bWJlckZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKFVOTElLRUxZKCFuZikpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Il9zKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDkgKzU3LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgIHNldEZsb2F0NjQgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
RnVuY1NldEZsb2F0NjQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZp
ZXdTZXRGbG9hdDY0CiAgIHNldEJpZ0ludDY0ICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1Nl
dEJpZ0ludDY0ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgogICBzZXRCaWdVaW50
NjQgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRCaWdVaW50NjQgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uICAgICAgIDIKLSAgYnVmZmVyICAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9H
ZXR0ZXJCdWZmZXIgICAgICAgICAgICBEb250RW51bXxBY2Nlc3NvciAgICAgICAwCi0gIGJ5dGVM
ZW5ndGggICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCAgICAgICAgRG9u
dEVudW18QWNjZXNzb3IgICAgICAgMAotICBieXRlT2Zmc2V0ICAgICAgICAgICAgZGF0YVZpZXdQ
cm90b0dldHRlckJ5dGVPZmZzZXQgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yICAgICAgIDAKKyAg
YnVmZmVyICAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIgICAgICAgICAg
ICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBieXRlTGVuZ3RoICAgICAgICAg
ICAgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGggICAgICAgIERvbnRFbnVtfFJlYWRPbmx5
fEN1c3RvbUFjY2Vzc29yCisgIGJ5dGVPZmZzZXQgICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0
dGVyQnl0ZU9mZnNldCAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKIEBl
bmQKICovCiAKQEAgLTgzLDkgKzgzLDkgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oZGF0YVZpZQogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90
b0Z1bmNTZXRGbG9hdDY0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFW
aWV3UHJvdG9GdW5jU2V0QmlnSW50NjQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oZGF0YVZpZXdQcm90b0Z1bmNTZXRCaWdVaW50NjQpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlcik7Ci1zdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCk7Ci1zdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnVm
ZmVyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0
ZXJCeXRlTGVuZ3RoKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3
UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KTsKIAogfQogCkBAIC0yMjMsMjQgKzIyMywyNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnCiAKIElHTk9SRV9DTEFOR19XQVJO
SU5HU19CRUdJTigibWlzc2luZy1wcm90b3R5cGVzIikKIAotSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoZGF0
YVZpZXdQcm90b0dldHRlckJ1ZmZlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNE
eW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRv
IGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh2aWV3LT5wb3NzaWJseVNoYXJlZEpTQnVmZmVyKGdsb2JhbE9iamVj
dCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9HZXR0ZXJC
eXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRl
TGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0Rh
dGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0
YVZpZXcqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghdmlldykK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkRh
dGFWaWV3LnByb3RvdHlwZS5ieXRlTGVuZ3RoIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZp
ZXcgb2JqZWN0Iik7CiAgICAgaWYgKHZpZXctPmlzRGV0YWNoZWQoKSkKQEAgLTI0OSwxMiArMjQ5
LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2UKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiB9CiAKLUpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmlldyogdmlldyA9IGpz
RHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUu
Ynl0ZU9mZnNldCBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogICAg
IGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5MCw5ICs3OTAs
NiBAQCBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEpTR2xvYmFsT2JqCiAgICAgICAgICAg
ICAgICAgaGFzUHJvcGVydHkgPSB0cnVlOwogICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSBl
bnRyeS0+dmFsdWUtPmF0dHJpYnV0ZXMoKTsKIAotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBhZnRlciB3cml0YWJsZSBhY2Nlc3NvcnMgYXJlIGludHJvZHVjZWQgdG8gc3Rh
dGljIGhhc2ggdGFibGVzLgotICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVy
dHlBdHRyaWJ1dGU6OkFjY2Vzc29yKQotICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgYWZ0ZXIgd2Ugc3RvcCBkZWZhdWx0aW5nIHRvIEN1c3RvbVZhbHVlIGluIHN0
YXRpYyBoYXNoIHRhYmxlcy4KICAgICAgICAgICAgICAgICBpZiAoIShhdHRyaWJ1dGVzICYgKFBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpCdWls
dGluT3JGdW5jdGlvbk9yQWNjZXNzb3JPckxhenlQcm9wZXJ0eU9yQ29uc3RhbnQpKSkKICAgICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFs
dWU7CkBAIC04MjEsNyArODE4LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhKU0ds
b2JhbE9iagogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTUzNDcKICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbUFjY2Vzc29y
KG9iaiwgY3VzdG9tU2V0dGVyKTsKICAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgICAgICAgICAgY3VzdG9tU2V0dGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2Rl
KHNsb3QudGhpc1ZhbHVlKCkpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICAgICAgICAgIGN1c3RvbVNldHRlcihvYmotPmdsb2JhbE9iamVjdCh2bSksIEpT
VmFsdWU6OmVuY29kZShzbG90LnRoaXNWYWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwg
cHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bVZhbHVlKSB7CkBAIC04MzAsNyArODI3LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0SW5saW5lU2xv
dyhKU0dsb2JhbE9iagogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG9u
bHkgYmUgY2FjaGluZyB0aGVzZSBpZiB3ZSdyZSBub3QgYW4gdW5jYWNoZWFibGUgZGljdGlvbmFy
eToKICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNTM0NwogICAgICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbVZhbHVl
KG9iaiwgY3VzdG9tU2V0dGVyKTsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBjdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUob2Jq
KSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3VzdG9tU2V0dGVyKG9iai0+Z2xvYmFs
T2JqZWN0KHZtKSwgSlNWYWx1ZTo6ZW5jb2RlKG9iaiksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSks
IHByb3BlcnR5TmFtZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
IWlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCBvYmopKSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IEF2b2lkIFB1dE1vZGVQdXQgYmVjYXVzZSBpdCBmYWlscyBmb3Igbm9uLWV4dGVuc2libGUgc3Ry
dWN0dXJlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlTbG90LmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlTbG90LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDEyIEBA
IEpTVmFsdWUgUHJvcGVydHlTbG90OjpmdW5jdGlvbkdldHRlcihKU0cKICAgICByZXR1cm4gbV9k
YXRhLmdldHRlci5nZXR0ZXJTZXR0ZXItPmNhbGxHZXR0ZXIoZ2xvYmFsT2JqZWN0LCBtX3RoaXNW
YWx1ZSk7CiB9CiAKLUpTVmFsdWUgUHJvcGVydHlTbG90OjpjdXN0b21HZXR0ZXIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKK0pT
VmFsdWUgUHJvcGVydHlTbG90OjpjdXN0b21HZXR0ZXIoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSBjb25zdAogeworICAgIEFTU0VSVChtX3Nsb3RCYXNlKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9zbG90QmFzZS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IG1fYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciA/IG1fdGhpc1ZhbHVlIDogSlNWYWx1ZShzbG90QmFzZSgpKTsKICAgICBp
ZiAoYXV0byBkb21BdHRyaWJ1dGUgPSB0aGlzLT5kb21BdHRyaWJ1dGUoKSkgewotICAgICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKHZtLCBkb21BdHRyaWJ1dGUtPmNsYXNzSW5mbykpIHsKICAgICAgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgICAgIHJldHVybiB0aHJvd0RP
TUF0dHJpYnV0ZUdldHRlclR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBkb21BdHRyaWJ1
dGUtPmNsYXNzSW5mbywgcHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzY3LDcgKzM2Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIGZ1bmN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjdXN0b21HZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY3VzdG9tR2V0
dGVyKFZNJiwgUHJvcGVydHlOYW1lKSBjb25zdDsKIAogICAgIHVuaW9uIHsKICAgICAgICAgRW5j
b2RlZEpTVmFsdWUgdmFsdWU7CkBAIC00MDUsNyArNDA1LDcgQEAgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIFByb3BlcnR5U2xvdDo6Z2V0VgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1f
ZGF0YS52YWx1ZSk7CiAgICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVHZXR0ZXIpCiAgICAg
ICAgIHJldHVybiBmdW5jdGlvbkdldHRlcihnbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBjdXN0
b21HZXR0ZXIoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBjdXN0b21H
ZXR0ZXIoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSwgcHJvcGVydHlOYW1lKTsKIH0KIAogQUxXQVlTX0lO
TElORSBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Z2V0VmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgdWludDY0X3QgcHJvcGVydHlOYW1lKSBjb25zdApAQCAtNDE1LDcgKzQxNSw3IEBA
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmdldFYKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZShtX2RhdGEudmFsdWUpOwogICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9
PSBUeXBlR2V0dGVyKQogICAgICAgICByZXR1cm4gZnVuY3Rpb25HZXR0ZXIoZ2xvYmFsT2JqZWN0
KTsKLSAgICByZXR1cm4gY3VzdG9tR2V0dGVyKGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bSh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGN1c3RvbUdldHRlcihnZXRWTShnbG9i
YWxPYmplY3QpLCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24pOworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoc3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbik7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyk7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKTsK
IApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8gU3ltYm9sUHJvdG90eXBlOjpzX2lu
Zm8gCiAKIC8qIFNvdXJjZSBmb3IgU3ltYm9sUHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gc3ltYm9s
UHJvdG90eXBlVGFibGUKLSAgZGVzY3JpcHRpb24gICAgICAgc3ltYm9sUHJvdG9HZXR0ZXJEZXNj
cmlwdGlvbiAgICBEb250RW51bXxBY2Nlc3NvciAwCisgIGRlc2NyaXB0aW9uICAgICAgIHN5bWJv
bFByb3RvR2V0dGVyRGVzY3JpcHRpb24gICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNz
b3IKICAgdG9TdHJpbmcgICAgICAgICAgc3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAwCiAgIHZhbHVlT2YgICAgICAgICAgIHN5bWJvbFByb3RvRnVuY1Zh
bHVlT2YgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAogQGVuZApAQCAtODcsMTIgKzg3LDEy
IEBAIGlubGluZSBTeW1ib2wqIHRyeUV4dHJhY3RTeW1ib2woVk0mIHZtLCAKICAgICByZXR1cm4g
YXNTeW1ib2woanNDYXN0PFN5bWJvbE9iamVjdCo+KHRoaXNPYmplY3QpLT5pbnRlcm5hbFZhbHVl
KCkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9HZXR0ZXJEZXNj
cmlwdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTeW1ib2wq
IHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmICghc3ltYm9sKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTeW1ib2xEZXNjcmlwdGlvblR5cGVFcnJvcik7
CiAgICAgc2NvcGUucmVsZWFzZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0pTRG9sbGFyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAzLDcgKzE2MDMs
OSBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HCiBzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCk7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXRWYWx1ZUdsb2JhbE9iamVj
dCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRBY2Nlc3Nvcik7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRBY2Nlc3Nvckdsb2Jh
bE9iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRWYWx1
ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRWYWx1ZUdsb2Jh
bE9iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihjdXN0b21GdW5jdGlv
blNldHRlcik7CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXRBY2Nlc3Nvciwg
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQpAQCAtMTY0NSw2ICsxNjQ3LDIyIEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjdXN0b21T
ZXRBY2Nlc3MKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KGN1c3RvbVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1
ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBvYmplY3QtPnB1dChv
YmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3VsdCIp
LCBnbG9iYWxPYmplY3QsIHNsb3QpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIEpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHNsb3RWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7CkBAIC0xNjYzLDYgKzE2ODEsMjQgQEAgSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3Rv
bVNldFZhbHVlLAogICAgIHJldHVybiB0cnVlOwogfQogCitKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoY3VzdG9tU2V0VmFsdWVHbG9iYWxPYmplY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBzbG90VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIFJFTEVBU0VfQVNTRVJU
KEpTVmFsdWU6OmRlY29kZShzbG90VmFsdWUpLmluaGVyaXRzPEpTVGVzdEN1c3RvbUdldHRlclNl
dHRlcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSk7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFs
dWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgb2JqZWN0LT5wdXQo
b2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN1bHQi
KSwgZ2xvYmFsT2JqZWN0LCBzbG90KTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tRnVuY3Rpb25TZXR0ZXIsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7
CkBAIC0xNjkwLDkgKzE3MjYsMTMgQEAgdm9pZCBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmZp
bmlzaENyZQogICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3IiKSwKICAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVy
OjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yLCBjdXN0b21TZXRBY2Nlc3NvciksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsKICAg
ICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0IiksCi0gICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCBjdXN0b21HZXRWYWx1ZUdsb2JhbE9iamVjdCwgbnVsbHB0ciksIDApOworICAg
ICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0VmFsdWVHbG9iYWxP
YmplY3QsIGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSkpOwogICAgIHB1dERpcmVjdEN1c3RvbUFj
Y2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3JHbG9i
YWxPYmplY3QiKSwKLSAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3Rv
bUdldEFjY2Vzc29yR2xvYmFsT2JqZWN0LCBudWxscHRyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKKyAgICAgICAgQ3Vz
dG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yR2xvYmFsT2JqZWN0
LCBjdXN0b21TZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsKKyAgICBwdXREaXJlY3RDdXN0b21B
Y2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbVZhbHVlTm9TZXR0
ZXIiKSwKKyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldFZh
bHVlLCBudWxscHRyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21WYWx1ZSkpOworICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3JSZWFkT25seSIpLAorICAgICAgICBDdXN0
b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3IsIG51bGxwdHIpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOwogCiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJjdXN0b21GdW5jdGlvbiIpLAogICAgICAgICBDdXN0b21HZXR0ZXJTZXR0
ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3IsIGN1c3RvbUZ1bmN0aW9uU2V0dGVyKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcikp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5j
ZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4MDIxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhwb3J0cyk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9H
ZXR0ZXJFeHBvcnRzKTsKIH0KIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5
cGUubHV0LmgiCkBAIC00Niw3ICs0Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG8KIAogLyogU291cmNlIGZvciBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
Lmx1dC5oCiAgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlJbnN0YW5jZQotIGV4cG9y
dHMgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMgQWNjZXNzb3IgMAorICBleHBv
cnRzIHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0dldHRlckV4cG9ydHMgUmVhZE9ubHl8Q3VzdG9t
QWNjZXNzb3IKICBAZW5kCiAgKi8KIApAQCAtNjIsMTIgKzYyLDEyIEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTV2ViQXNzZW1ibHlJbnN0YW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvR2V0dGVyRXhw
b3J0cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gZ2V0SW5zdGFuY2UoZ2xvYmFsT2JqZWN0
LCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7IAorICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSogaW5zdGFuY2UgPSBnZXRJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZtLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUoaW5z
dGFuY2UtPm1vZHVsZVJlY29yZCgpLT5leHBvcnRzT2JqZWN0KCkpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3Jvdyk7Ci1zdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZl
cik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJseU1lbW9yeVBy
b3RvR2V0dGVyQnVmZmVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFz
c2VtYmx5TWVtb3J5UHJvdG9GdW5jVHlwZSk7CiB9CiAKQEAgLTUzLDcgKzUzLDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eQogLyogU291cmNlIGZvciBXZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaAogQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1i
bHlNZW1vcnkKICBncm93ICAgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93ICAgRnVuY3Rp
b24gMQotIGJ1ZmZlciB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlciBBY2Nlc3NvciAw
CisgYnVmZmVyIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9HZXR0ZXJCdWZmZXIgUmVhZE9ubHl8Q3Vz
dG9tQWNjZXNzb3IKICB0eXBlICAgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNUeXBlICAgRnVu
Y3Rpb24gMAogQGVuZAogKi8KQEAgLTg4LDEyICs4OCwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04od2ViQXNzZW1ibHlNZW1vCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihyZXN1bHQucGFnZUNvdW50KCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdl
YkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHdl
YkFzc2VtYmx5TWVtb3J5UHJvdG9HZXR0ZXJCdWZmZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0g
Z2V0TWVtb3J5KGdsb2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOyAKKyAg
ICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoZ2xvYmFsT2JqZWN0LCB2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOyAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZShtZW1vcnktPmJ1ZmZlcihnbG9iYWxPYmplY3QpKSk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0Mgewotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1i
bHlUYWJsZVByb3RvRnVuY0xlbmd0aCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uih3ZWJBc3NlbWJseVRhYmxlUHJvdG9HZXR0ZXJMZW5ndGgpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3cpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldCk7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5j
U2V0KTsKQEAgLTUyLDcgKzUyLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5VGFibGVQ
cm90b3R5cAogCiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUubHV0LmgK
ICBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseVRhYmxlCi0gbGVuZ3RoIHdlYkFzc2Vt
Ymx5VGFibGVQcm90b0Z1bmNMZW5ndGggQWNjZXNzb3IgMAorIGxlbmd0aCB3ZWJBc3NlbWJseVRh
YmxlUHJvdG9HZXR0ZXJMZW5ndGggUmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICBncm93ICAgd2Vi
QXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3cgICBGdW5jdGlvbiAxCiAgZ2V0ICAgIHdlYkFzc2Vt
Ymx5VGFibGVQcm90b0Z1bmNHZXQgICAgRnVuY3Rpb24gMQogIHNldCAgICB3ZWJBc3NlbWJseVRh
YmxlUHJvdG9GdW5jU2V0ICAgIEZ1bmN0aW9uIDIKQEAgLTcyLDEyICs3MiwxMiBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5VGFibGUqCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5n
dGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlUYWJsZVByb3RvR2V0dGVyTGVu
Z3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
V2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShnbG9iYWxPYmplY3QsIHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0
VGFibGUoZ2xvYmFsT2JqZWN0LCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0YWJsZS0+bGVuZ3RoKCkpKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIxLTA3LTIyICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3Rv
bSBhY2Nlc3NvcnMgLyB2YWx1ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Zml4ZXMgY3Jvc3MtcmVhbG0geWV0IHNhbWUtb3JpZ2luIFdlYklETCBhdHRyaWJ1dGVzIHRvIHRo
cm93IGVycm9ycyBpbiByZWFsbSBvZgorICAgICAgICB0aGVpciBhY2Nlc3Nvciwgd2hpbGUgZW5z
dXJpbmcgdGhhdCBgd2luZG93LmxvY2F0aW9uYCBhbmQgYGxvY2F0aW9uLmhyZWZgIHNldHRlcnMg
ZG9uJ3QgbGVhaworICAgICAgICBjcm9zcy1vcmlnaW4gT2JqZWN0LnByb3RvdHlwZSB2aWEgdGhy
b3duIGVycm9yLgorCisgICAgICAgIFNpbmNlIExvY2F0aW9uIHNldHRlcnMgcmVsaWVkIG9uIGxl
eGljYWwgZ2xvYmFsIG9iamVjdCB0byBwYXNzIG91dGdvaW5nIGBkb2N1bWVudC5yZWZlcnJlcmAs
CisgICAgICAgIHRoZXkgd2VyZSB1cGRhdGVkIHRvIHVzZSBJbmN1bWJlbnRXaW5kb3cgYXMgcGVy
IHNwZWMgWzFdLiBjYWxsZXJHbG9iYWxPYmplY3QoKSB3YXMgcmV3b3JrZWQKKyAgICAgICAgdG8g
c2tpcCBuYXRpdmUgLyBidWlsdC1pbiBjYWxsZXJzIGFuZCByZWx5IG9uIFZNRW50cnlTY29wZSB0
byBhY2NvbW9kYXRlIHRvcC1sZXZlbCA8c2NyaXB0PgorICAgICAgICBjb2RlIG5hdmlnYXRpbmcg
dmlhIExvY2F0aW9uIHNldHRlciwgbWFraW5nIHRoZSBoZWxwZXIgbW9yZSB2ZXJzYXRpbGUuCisK
KyAgICAgICAgZ2xvYmFsT2JqZWN0T2ZDbG9zZXN0Q29kZUJsb2NrKCkgZml4ZWQgSlNDdXN0b21T
ZXR0ZXJGdW5jdGlvbiBpbnN0YW5jZXMgYW5kIExvY2F0aW9uJ3MKKyAgICAgICAgYXNzaWduKCkg
LyByZXBsYWNlKCkgbWV0aG9kcyB0byBwYXNzIGNvcnJlY3QgcmVmZXJyZXIuCisKKyAgICAgICAg
QWxzbywgdGhpcyBjaGFuZ2UgZml4ZXMgc3RhdGljIGF0dHJpYnV0ZXMgbGlrZSBgUGVyZm9ybWFu
Y2VPYnNlcnZlci5zdXBwb3J0ZWRFbnRyeVR5cGVzYAorICAgICAgICB0byByZXR1cm4gd3JhcHBl
cnMgb2YgdGhlaXIgcmVhbG0gaW5zdGVhZCBvZiBsZXhpY2FsLgorCisgICAgICAgIFsxXSBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9oaXN0b3J5Lmh0bWwjbG9jYXRpb24t
b2JqZWN0LW5hdmlnYXRlIChzdGVwIDIpCisKKyAgICAgICAgVGVzdHM6IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0
LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbAorICAgICAgICAgICAgICAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2lu
dmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdp
bi1vYmplY3RzL3dpbmRvdy1sb2NhdGlvbi1hbmQtbG9jYXRpb24taHJlZi1jcm9zcy1yZWFsbS1z
ZXQuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9w
ZXJmb3JtYW5jZS10aW1lbGluZS9zdXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vz
cy5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjYWxsZXJHbG9iYWxPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluY3VtYmVudERPTVdpbmRv
dyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3c6OnB1dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXQpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVOYW1lZEdl
dHRlckxhbWJkYSk6CisgICAgICAgIChHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzKToK
KyAgICAgICAgKEdlbmVyYXRlQ2FsbFdpdGgpOgorICAgICAgICBFbnN1cmUgSW5jdW1iZW50V2lu
ZG93IGNvbWVzIGJlZm9yZSBGaXJzdFdpbmRvdy4KKworICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T2JqLmlkbDoKKyAgICAgICAgUmVtb3ZlIGF0dHJpYnV0ZXMgdGhhdCByZWxpZWQgb24g
Q2FsbEZyYW1lIHNpbmNlIGN1c3RvbSBnZXR0ZXJzIGRvbid0IGhhdmUgaXQuCisKKyAgICAgICAg
KiBwYWdlL0xvY2F0aW9uLmlkbDoKKyAgICAgICAgUmVtb3ZlIFtMZWdhY3lVbmZvcmdlYWJsZV0g
ZnJvbSBhbmNlc3Rvck9yaWdpbnMgYmVjYXVzZSBpdCdzIHNldCBvbiB0aGUgaW50ZXJmYWNlLgor
CiAyMDIxLTA3LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
VGhlIG5ldHdvcmsgcHJvY2VzcyBmYWlscyB0byB0YWtlIGEgbG9ja2VkIGZpbGUgYXNzZXJ0aW9u
IHdoZW4gZXhlY3V0aW5nIGEgU1FMaXRlU3RhdGVtZW50IG91dHNpZGUgYSB0cmFuc2FjdGlvbgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDAsNDggKzU0MCw2IEBAIEpT
Qzo6SlNPYmplY3QqIEpTRE9NR2xvYmFsT2JqZWN0Ojptb2R1bGUKICAgICByZXR1cm4gY29uc3Ry
dWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QtPm51bGxQcm90
b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CiB9CiAKLUpTRE9NR2xvYmFsT2JqZWN0JiBjYWxsZXJH
bG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSYgY2FsbEZyYW1lKQotewotICAgIGNsYXNzIEdldENhbGxlckdsb2JhbE9iamVjdEZ1bmN0b3Ig
ewotICAgIHB1YmxpYzoKLSAgICAgICAgR2V0Q2FsbGVyR2xvYmFsT2JqZWN0RnVuY3RvcigpID0g
ZGVmYXVsdDsKLQotICAgICAgICBTdGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNr
VmlzaXRvciYgdmlzaXRvcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2hh
c1NraXBwZWRGaXJzdEZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgbV9oYXNTa2lwcGVkRmlyc3RG
cmFtZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGlu
dWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChhdXRvKiBjb2RlQmxvY2sgPSB2
aXNpdG9yLT5jb2RlQmxvY2soKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbE9iamVjdCA9IGNv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQodmlzaXRvci0+Y2FsbGVlKCkucmF3UHRyKCkpOwotICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBDYWxsZWUgaXMgbm90IGFuIG9iamVjdCBpZiB0aGUgY2FsbGVyIGlzIFdlYiBB
c3NlbWJseS4KLSAgICAgICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gaGVyZS4g
V2UgY2FuIHByb2JhYmx5IGdldCB0aGUgZ2xvYmFsIG9iamVjdAotICAgICAgICAgICAgICAgIC8v
IGZyb20gdGhlIHRvcC1tb3N0IFdhc20gSW5zdGFuY2UuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjU3MjEKLSAgICAgICAgICAgICAgICBpZiAodmlzaXRvci0+Y2Fs
bGVlKCkuaXNDZWxsKCkgJiYgdmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCktPmlzT2JqZWN0KCkp
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4o
dmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCkpLT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7Ci0gICAgICAgIH0KLQot
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxPYmplY3Q7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIG11dGFibGUgYm9vbCBtX2hh
c1NraXBwZWRGaXJzdEZyYW1lIHsgZmFsc2UgfTsKLSAgICAgICAgbXV0YWJsZSBKU0dsb2JhbE9i
amVjdCogbV9nbG9iYWxPYmplY3QgeyBudWxscHRyIH07Ci0gICAgfTsKLQotICAgIEdldENhbGxl
ckdsb2JhbE9iamVjdEZ1bmN0b3IgaXRlcjsKLSAgICBjYWxsRnJhbWUuaXRlcmF0ZShsZXhpY2Fs
R2xvYmFsT2JqZWN0LnZtKCksIGl0ZXIpOwotICAgIGlmIChpdGVyLmdsb2JhbE9iamVjdCgpKQot
ICAgICAgICByZXR1cm4gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGl0ZXIuZ2xvYmFsT2Jq
ZWN0KCkpOwotCi0gICAgLy8gSWYgd2UgY2Fubm90IGZpbmQgSlNHbG9iYWxPYmplY3QgaW4gY2Fs
bGVyIGZyYW1lcywgd2UganVzdCByZXR1cm4gdGhlIGN1cnJlbnQgbGV4aWNhbEdsb2JhbE9iamVj
dC4KLSAgICByZXR1cm4gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLX0KLQogSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsK
ICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyODAyMTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDIsOCArMTQyLDYgQEAgcHJpdmF0ZToKICAgICBKU0M6OldlYWtHQ01hcDxDcm9z
c09yaWdpbk1hcEtleSwgSlNDOjpHZXR0ZXJTZXR0ZXI+IG1fY3Jvc3NPcmlnaW5HZXR0ZXJTZXR0
ZXJNYXA7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBKU0RPTUdsb2JhbE9iamVjdCYgY2FsbGVyR2xv
YmFsT2JqZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkNhbGxGcmFtZSYpOwotCiBKU0RP
TUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgRE9NV3JhcHBlcldvcmxkJik7CiAKIHRlbXBsYXRlPGNsYXNzIEpTQ2xhc3M+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlz
aW9uIDI4MDIxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw5ICsyODIsMTkgQEAgSlNET01XaW5kb3cqIHRv
SlNET01XaW5kb3coRnJhbWUmIGZyYW1lLAogICAgIHJldHVybiBmcmFtZS5zY3JpcHQoKS5nbG9i
YWxPYmplY3Qod29ybGQpOwogfQogCi1ET01XaW5kb3cmIGluY3VtYmVudERPTVdpbmRvdyhKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCitE
T01XaW5kb3cmIGluY3VtYmVudERPTVdpbmRvdyhKU0dsb2JhbE9iamVjdCYgZmFsbGJhY2tHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQogewotICAgIHJldHVybiBhc0pTRE9NV2lu
ZG93KCZjYWxsZXJHbG9iYWxPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSkt
PndyYXBwZWQoKTsKKyAgICBpZiAoYXV0byogZ2xvYmFsT2JqZWN0ID0gQ2FsbEZyYW1lOjpnbG9i
YWxPYmplY3RPZkNsb3Nlc3RDb2RlQmxvY2soZmFsbGJhY2tHbG9iYWxPYmplY3Qudm0oKSwgJmNh
bGxGcmFtZSkpCisgICAgICAgIHJldHVybiBhc0pTRE9NV2luZG93KGdsb2JhbE9iamVjdCktPndy
YXBwZWQoKTsKKyAgICByZXR1cm4gYXNKU0RPTVdpbmRvdygmZmFsbGJhY2tHbG9iYWxPYmplY3Qp
LT53cmFwcGVkKCk7Cit9CisKK0RPTVdpbmRvdyYgaW5jdW1iZW50RE9NV2luZG93KEpTR2xvYmFs
T2JqZWN0JiBmYWxsYmFja0dsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBmYWxsYmFja0ds
b2JhbE9iamVjdC52bSgpOworICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBDYWxsRnJhbWU6
Omdsb2JhbE9iamVjdE9mQ2xvc2VzdENvZGVCbG9jayh2bSwgdm0udG9wQ2FsbEZyYW1lKSkKKyAg
ICAgICAgcmV0dXJuIGFzSlNET01XaW5kb3coZ2xvYmFsT2JqZWN0KS0+d3JhcHBlZCgpOworICAg
IHJldHVybiBhc0pTRE9NV2luZG93KCZmYWxsYmFja0dsb2JhbE9iamVjdCktPndyYXBwZWQoKTsK
IH0KIAogRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3coSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNyBAQCBp
bmxpbmUgSlNET01XaW5kb3cqIHRvSlNET01XaW5kb3coRnJhbWUqCiAvLyBGSVhNRTogTWFrZSB0
aGlzIHdvcmsgZm9yIGFuICJhdXRob3IgZnVuY3Rpb24gb3Igc2NyaXB0IHRoYXQgb3JpZ2luYWxs
eSBzY2hlZHVsZWQgdGhlIGN1cnJlbnRseS1ydW5uaW5nIGNhbGxiYWNrLiIKIC8vIFNlZSA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQxMj4uCiBET01XaW5kb3cm
IGluY3VtYmVudERPTVdpbmRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpDYWxsRnJhbWUm
KTsKK0RPTVdpbmRvdyYgaW5jdW1iZW50RE9NV2luZG93KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsK
IAogRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCYpOwogRE9N
V2luZG93JiBmaXJzdERPTVdpbmRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZp
c2lvbiAyODAyMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MywxMCArMjYzLDE3IEBAIGJvb2wgSlNET01X
aW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2wKIAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKIAotICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCku
bG9jYXRpb25QdWJsaWNOYW1lKCkpIHsKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOworICAgIGlm
ICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCksIGVycm9yTWVzc2FnZSkpIHsKICAg
ICAgICAgLy8gV2Ugb25seSBhbGxvdyBzZXR0aW5nICJsb2NhdGlvbiIgYXR0cmlidXRlIGNyb3Nz
LW9yaWdpbi4KLSAgICAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLCBU
aHJvd1NlY3VyaXR5RXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBp
ZiAocHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSktPmJ1aWx0aW5OYW1lcygpLmxvY2F0aW9uUHVibGljTmFtZSgpKSB7CisgICAgICAgICAg
ICBhdXRvKiBzZXR0ZXIgPSBzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVy
dHlOYW1lKS0+cHJvcGVydHlQdXR0ZXIoKTsKKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
KyAgICAgICAgICAgIHNldHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUo
c2xvdC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0aHJvd1NlY3Vy
aXR5RXJyb3IoKmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSAmJiAhYWxsb3dzTGVnYWN5RXhwYW5kb0luZGV4ZWRQcm9wZXJ0aWVzKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2
aXNpb24gMjgwMjExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSwxNyArMTExLDI2IEBAIGJvb2wgSlNMb2Nh
dGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmQKIGJvb2wgSlNMb2NhdGlvbjo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVy
dHlTbG90KQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIC8vIEFsd2F5cyBhbGxvdyBhc3NpZ25p
bmcgdG8gdGhlIHdob2xlIGxvY2F0aW9uLgogICAgIC8vIEhvd2V2ZXIsIGFsbG93aW5nIGFzc2ln
bmluZyBvZiBwaWVjZXMgbWlnaHQgaW5hZHZlcnRlbnRseSBkaXNjbG9zZSBwYXJ0cyBvZiB0aGUg
b3JpZ2luYWwgbG9jYXRpb24uCiAgICAgLy8gU28gZmFsbCB0aHJvdWdoIHRvIHRoZSBhY2Nlc3Mg
Y2hlY2sgZm9yIHRob3NlLgotICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuaHJlZlB1YmxpY05h
bWUoKSkgewotICAgICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkud2lu
ZG93KCksIFRocm93U2VjdXJpdHlFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+
d3JhcHBlZCgpLndpbmRvdygpLCBlcnJvck1lc3NhZ2UpKSB7CisgICAgICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVp
bHRpbk5hbWVzKCkuaHJlZlB1YmxpY05hbWUoKSkgeworICAgICAgICAgICAgYXV0byogc2V0dGVy
ID0gc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSktPnByb3Bl
cnR5UHV0dGVyKCk7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBz
ZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHB1dFByb3BlcnR5U2xv
dC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0aHJvd1NlY3VyaXR5
RXJyb3IoKmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVy
biBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAy
ODAyMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkod29ya2luZyBjb3B5KQpAQCAtODUzLDcgKzg1Myw3IEBAIHN1YiBHZW5lcmF0ZU5hbWVk
R2V0dGVyTGFtYmRhCiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbk5hbWUsICRJ
RExUeXBlKSA9IEBfOwogICAgIAotICAgIG15IEBhcmd1bWVudHMgPSBHZW5lcmF0ZUNhbGxXaXRo
VXNpbmdSZWZlcmVuY2VzKCRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJzdGQ6Om51bGxvcHQiLCAidGhpc09iamVjdCIs
ICIgICAgICAgICIpOworICAgIG15IEBhcmd1bWVudHMgPSBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdS
ZWZlcmVuY2VzKCRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2Fs
bFdpdGh9LCAkb3V0cHV0QXJyYXksICJzdGQ6Om51bGxvcHQiLCAidGhpc09iamVjdCIsICIiLCAi
ICAgICAgICAiKTsKICAgICBwdXNoKEBhcmd1bWVudHMsICJwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8g
Z2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3Rvcjwk
e0lETFR5cGV9LCAke2NsYXNzTmFtZX0+KFtdICgke2NsYXNzTmFtZX0mIHRoaXNPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHtcbiIpOwpAQCAtNTg4
OCwxMCArNTg4OCw5IEBAIHN1YiBHZW5lcmF0ZUdldENhbGxEYXRhCiAKIHN1YiBHZW5lcmF0ZUNh
bGxXaXRoVXNpbmdSZWZlcmVuY2VzCiB7Ci0gICAgbXkgKCRjYWxsV2l0aCwgJG91dHB1dEFycmF5
LCAkcmV0dXJuVmFsdWUsICR0aGlzUmVmZXJlbmNlLCAkaW5kZW50KSA9IEBfOworICAgIG15ICgk
Y2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAkdGhpc1JlZmVyZW5jZSwgJGNh
bGxGcmFtZVJlZmVyZW5jZSwgJGluZGVudCkgPSBAXzsKIAotICAgIG15ICRjYWxsRnJhbWVQb2lu
dGVyID0gImNhbGxGcmFtZSI7Ci0gICAgbXkgJGNhbGxGcmFtZVJlZmVyZW5jZSA9ICIqY2FsbEZy
YW1lIjsKKyAgICBteSAkY2FsbEZyYW1lUG9pbnRlciA9ICRjYWxsRnJhbWVSZWZlcmVuY2UgJiYg
IiYkY2FsbEZyYW1lUmVmZXJlbmNlIjsKICAgICBteSAkZ2xvYmFsT2JqZWN0ID0gImpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSI7CiAKICAgICByZXR1cm4g
R2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAk
cmV0dXJuVmFsdWUsICRjYWxsRnJhbWVQb2ludGVyLCAkY2FsbEZyYW1lUmVmZXJlbmNlLCAkZ2xv
YmFsT2JqZWN0LCAkZ2xvYmFsT2JqZWN0LCAkdGhpc1JlZmVyZW5jZSwgJGluZGVudCk7CkBAIC01
OTcxLDE1ICs1OTcwLDE1IEBAIHN1YiBHZW5lcmF0ZUNhbGxXaXRoCiAgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJKU0RPTVdpbmRvd0Jhc2UuaCIpOwogICAgICAgICBwdXNoKEBjYWxsV2l0aEFy
Z3MsICJhY3RpdmVET01XaW5kb3coKiRnbG9iYWxPYmplY3QpIik7CiAgICAgfQotICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJGaXJz
dFdpbmRvdyIpKSB7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNv
bnRhaW5zKCRjYWxsV2l0aCwgIkluY3VtYmVudFdpbmRvdyIpKSB7CiAgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJET01XaW5kb3cuaCIpOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNE
T01XaW5kb3dCYXNlLmgiKTsKLSAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiZmlyc3RET01X
aW5kb3coKiRnbG9iYWxPYmplY3QpIik7CisgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgImlu
Y3VtYmVudERPTVdpbmRvdygqJGdsb2JhbE9iamVjdCIgLiAoJGNhbGxGcmFtZVJlZmVyZW5jZSA/
ICIsICIgLiAkY2FsbEZyYW1lUmVmZXJlbmNlIDogIiIpIC4gIikiKTsKICAgICB9Ci0gICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIklu
Y3VtYmVudFdpbmRvdyIpKSB7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJp
YnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIkZpcnN0V2luZG93IikpIHsKICAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIkRPTVdpbmRvdy5oIik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJK
U0RPTVdpbmRvd0Jhc2UuaCIpOwotICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3MsICJpbmN1bWJl
bnRET01XaW5kb3coKiRnbG9iYWxPYmplY3QsICRjYWxsRnJhbWVSZWZlcmVuY2UpIik7CisgICAg
ICAgIHB1c2goQGNhbGxXaXRoQXJncywgImZpcnN0RE9NV2luZG93KCokZ2xvYmFsT2JqZWN0KSIp
OwogICAgIH0KICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFp
bnMoJGNhbGxXaXRoLCAiUnVudGltZUZsYWdzIikpIHsKICAgICAgICAgcHVzaChAY2FsbFdpdGhB
cmdzLCAiJHtnbG9iYWxPYmplY3R9LT5ydW50aW1lRmxhZ3MoKSIpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24g
MjgwMjExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsOSArMjAwLDcgQEAgZW51bSBUZXN0Q29uZmlkZW5j
ZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogCiAgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gYXR0
cmlidXRlIGxvbmcgd2l0aEV4ZWNTdGF0ZUF0dHJpYnV0ZTsKICAgICBbQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0LCBTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0
ZSBsb25nIHdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlOwotICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBhdHRyaWJ1dGUgVGVzdE9iaiB3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCZFeGVjU3RhdGVdIGF0dHJpYnV0ZSBUZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlOwotICAgIFtDYWxsV2l0aD0gIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgICYgIEV4ZWNTdGF0ZSAgXSBhdHRyaWJ1dGUgVGVzdE9iaiB3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGU7CisgICAgW1Nl
dHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIERPTVN0
cmluZyB3aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGU7CiAKICAgICAvLyBPcHRpb25hbCBwYXJh
bWV0ZXJzLgogICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxBcmcob3B0aW9uYWwg
bG9uZyBvcHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzY1LDEyICsxNzY1LDggQEAgc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0Twogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2Jq
X3dpdGhFeGVjU3RhdGVBdHRyaWJ1dGUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0T2JqX3dpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aXRoQ2FsbFdpdGhB
bmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOwotc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0
ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGUpOwotc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVj
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdE9ial93aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJp
YnV0ZSk7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMSk7CkBAIC0yMTMwLDkg
KzIxMjYsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAg
eyAib253ZWJraXRmb28iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9vbndlYmtpdGZvbyksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9vbndlYmtpdGZv
bykgfSB9LAogICAgIHsgIndpdGhFeGVjU3RhdGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoRXhlY1N0
YXRlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhFeGVjU3RhdGVBdHRyaWJ1dGUpIH0gfSwKICAg
ICB7ICJ3aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3dpdGhD
YWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhDYWxsV2l0
aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKSB9IH0sCi0gICAgeyAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSkg
fSB9LAotICAgIHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmli
dXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1
dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRy
aWJ1dGUpIH0gfSwKLSAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKSB9IH0sCisgICAgeyAi
d2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfd2l0aFNldHRlckNhbGxXaXRoQXR0
cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSkgfSB9LAogI2lm
IEVOQUJMRShDb25kaXRpb24xKQogICAgIHsgImNvbmRpdGlvbmFsQXR0cjEiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9jb25k
aXRpb25hbEF0dHIxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2NvbmRpdGlvbmFsQXR0cjEpIH0gfSwKICNlbHNlCkBA
IC00MjcwLDExNSArNDI2NCwzNSBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0
T2JqX3dpCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0
T2JqX3dpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwog
fQogCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2Jq
X3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dT
Y29wZSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgqY29udGV4dCkp
KSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFt
ZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2Jq
X3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRy
aWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial93aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQotewot
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIiwgIlRl
c3RPYmoiKTsgfSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJS0VM
WSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnZva2VGdW5jdG9yUHJv
cGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewotICAgICAgICByZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZSgqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKLSAgICB9KTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJp
YnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2Jq
JiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJS0VM
WSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSgqanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2V0dGVyQ2FsbFdpdGhBdHRy
aWJ1dGUoKSkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial93aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RP
Ympfd2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJp
YnV0ZU5hbWUpKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpz
VGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGVT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpf
d2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
SW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgW10oSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRy
aWJ1dGUiLCAiVGVzdE9iaiIpOyB9KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKLSAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAg
aWYgKFVOTElLRUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGludm9r
ZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlKCpqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCksICpjYWxsRnJhbWUsICpjb250ZXh0LCAqbmF0
aXZlVmFsdWUpOwotICAgIH0pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1KU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhl
Y1N0YXRlQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQcm9w
ZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhl
Y1N0YXRlQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0T2JqJiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChV
TkxJS0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFtZSwg
KmNvbnRleHQpKSkpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3dp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKLXsKLSAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1
dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial93aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOyB9KTsKKyAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKLSAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGlj
YWxHbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKFVOTElL
RUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGludm9rZUZ1bmN0b3JQ
cm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCwgKm5h
dGl2ZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0V2l0aFNldHRlckNhbGxXaXRoQXR0
cmlidXRlKGluY3VtYmVudERPTVdpbmRvdygqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxl
eGljYWxHbG9iYWxPYmplY3QpKSwgZmlyc3RET01XaW5kb3coKmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
ICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5
TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RP
Ympfd2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCiB7Ci0gICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpfd2l0aFNl
dHRlckNhbGxXaXRoQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQogCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNpb24gMjgwMjExKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDIyICs0MywyMiBAQAogICAgIExlZ2FjeVVuZm9yZ2VhYmxlLAogICAgIEV4cG9zZWQ9V2luZG93
CiBdIGludGVyZmFjZSBMb2NhdGlvbiB7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRv
dyZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0cmluZ2lmaWVyIGF0
dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKKyAgICBbU2V0dGVyQ2FsbFdpdGg9SW5jdW1iZW50V2lu
ZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHlPblNldHRlcl0gc3RyaW5naWZpZXIg
YXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogCi0gICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZG
aXJzdFdpbmRvd10gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKLSAgICBbRG9Ob3RD
aGVja1NlY3VyaXR5LCBDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIHVuZGVmaW5l
ZCByZXBsYWNlKFVTVlN0cmluZyB1cmwpOwotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3ddIHVu
ZGVmaW5lZCByZWxvYWQoKTsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93JkZpcnN0V2lu
ZG93XSB1bmRlZmluZWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOworICAgIFtDYWxsV2l0aD1JbmN1
bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eV0gdW5kZWZpbmVkIHJl
cGxhY2UoVVNWU3RyaW5nIHVybCk7CisgICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvd10gdW5k
ZWZpbmVkIHJlbG9hZCgpOwogCiAgICAgLy8gVVJJIGRlY29tcG9zaXRpb24gYXR0cmlidXRlcwot
ICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBV
U1ZTdHJpbmcgcHJvdG9jb2w7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJz
dFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBob3N0OwotICAgIFtTZXR0ZXJDYWxsV2l0aD1B
Y3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaG9zdG5hbWU7Ci0g
ICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVT
VlN0cmluZyBwb3J0OwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5k
b3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcGF0aG5hbWU7Ci0gICAgW1NldHRlckNhbGxXaXRoPUFj
dGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBzZWFyY2g7Ci0gICAg
W1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0
cmluZyBoYXNoOworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5k
b3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcHJvdG9jb2w7CisgICAgW1NldHRlckNhbGxXaXRoPUlu
Y3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBob3N0OworICAg
IFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBV
U1ZTdHJpbmcgaG9zdG5hbWU7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZG
aXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBwb3J0OworICAgIFtTZXR0ZXJDYWxsV2l0
aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcGF0aG5h
bWU7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gYXR0
cmlidXRlIFVTVlN0cmluZyBzZWFyY2g7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdp
bmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBoYXNoOwogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47CiAKLSAgICBbTGVnYWN5VW5mb3JnZWFibGUs
IFNhbWVPYmplY3QsIENhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
Z0xpc3QgYW5jZXN0b3JPcmlnaW5zOworICAgIFtTYW1lT2JqZWN0LCBDYWNoZWRBdHRyaWJ1dGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGFuY2VzdG9yT3JpZ2luczsKIH07Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODAyMTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wNy0yMiAgQWxleGV5IFNodmF5a2EgIDxz
aHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gQ2FsbCBjdXN0b20gYWNjZXNz
b3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFsIG9iamVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTk3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxPYmpl
Y3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9k
b20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLmh0bWw6CisgICAgICAgICogZmFz
dC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXkt
ZnJhbWUtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlz
dGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNz
LWRvYy1jb250ZXh0LTIuaHRtbDoKKyAgICAgICAgVGhlc2UgdGVzdHMgdXNlZCB0byBwYXNzIGFz
IGlzLCBwcm9iYWJseSwgZHVlIHRvIGNvbWJpbmF0aW9uIG9mIG9sZCAoaW5jb3JyZWN0KSBiZWhh
dmlvciBhbmQKKyAgICAgICAgc29tZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHJ1bi13ZWJr
aXQtdGVzdHMuIFRoZXkgZmFpbCBvbiBNaW5pQnJvd3NlciAvIENocm9tZSAvIEZpcmVmb3gKKyAg
ICAgICAgdW5sZXNzIG1vZGlmaWVkIG5vdCB0byB1c2UgZGF0YTovLyBwcm90b2NvbCwgd2hpY2gg
aXMgbm90IHN5c3RlbSB1bmRlciB0ZXN0LgorCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0
aW9uLWFzc2lnbi1leHBlY3RlZC50eHQ6CisgICAgICAgIFJldmVydCB0aGUgY2hhbmdlcyBtYWRl
IGluIHIxNzQ5OTYuIExvY2F0aW9uOjphc3NpZ24oKSBub3cgdXNlcyBjb3JyZWN0IChpbmN1bWJl
bnQpIFdpbmRvdworICAgICAgICB0byBzZXQgb3V0Z29pbmcgcmVmZXJyZXIgYW5kIHBlcmZvcm0g
c2VjdXJpdHkgY2hlY2tzLCBhbGlnbmluZyBXZWJLaXQgd2l0aCBDaHJvbWUgLyBGaXJlZm94Lgor
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1m
b3ItbG9jYXRpb24taHJlZi1nb3BkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJl
Zi1nb3BkLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA3LTIyICBSb2JlcnQgSmVubmVyICA8SmVubmVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBCYXRjaCBhZGQgdGVzdCBleHBlY3RhdGlvbnMgZm9yIE1v
bnRlcmV5IG9uIE9wZW4gU291cmNlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2Jq
ZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDI4MDIxMSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxP
YmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTUsMTAgKzUsMTAgQEAgUEFTUyB3aW5kb3cuZnJhbWVzWzBdLmZyYW1lRWxlbWVudC5jb250
ZQogUEFTUyB3aW5kb3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5uYW1lIGlzICJvYmoiCiBQQVNT
IHdpbmRvdy5mcmFtZXNbMV0uZnJhbWVFbGVtZW50LmNvbnRlbnRXaW5kb3cgaXMgd2luZG93LmZy
YW1lc1sxXS5mcmFtZUVsZW1lbnQuY29udGVudERvY3VtZW50LmRlZmF1bHRWaWV3CiBQQVNTIHdp
bmRvdy5mcmFtZXNbMV0uZnJhbWVFbGVtZW50LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQgaXMgd2lu
ZG93LmZyYW1lc1sxXS5mcmFtZUVsZW1lbnQuY29udGVudERvY3VtZW50Ci1Mb2FkaW5nICdkYXRh
OnRleHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRzIG9mIGlmcmFtZScgaW4gaWZyYW1lLi4uCi1Mb2Fk
aW5nICdkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRzIG9mIG9iamVjdCcgaW4gb2JqZWN0
Li4uCi1QQVNTIHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24udG9TdHJpbmcoKSBpcyAiZGF0YTp0
ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJhbWUiCi1QQVNTIHdpbmRvdy5mcmFtZXNb
MV0ubG9jYXRpb24udG9TdHJpbmcoKSBpcyAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50
cyBvZiBvYmplY3QiCitMb2FkaW5nICdyZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sJyBpbiBp
ZnJhbWUuLi4KK0xvYWRpbmcgJ3Jlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwnIGluIG9iamVj
dC4uLgorUEFTUyB3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLmhyZWYuZW5kc1dpdGgoInJlc291
cmNlcy9kdW1teS1mcmFtZS0yLmh0bWwiKSBpcyB0cnVlCitQQVNTIHdpbmRvdy5mcmFtZXNbMV0u
bG9jYXRpb24uaHJlZi5lbmRzV2l0aCgicmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbCIpIGlz
IHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZy
YW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVs
ZW1lbnQvb2JqZWN0LWFzLWZyYW1lLmh0bWwJKHJldmlzaW9uIDI4MDIxMSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFtZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogCiBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotdmFy
IHVwZGF0ZWRGcmFtZVVSTCA9ICJkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNvbnRlbnRzIG9mIGlm
cmFtZSI7Ci12YXIgdXBkYXRlZE9iamVjdFVSTCA9ICJkYXRhOnRleHQvaHRtbCxVcGRhdGVkIGNv
bnRlbnRzIG9mIG9iamVjdCI7Cit2YXIgdXBkYXRlZEZyYW1lVVJMID0gInJlc291cmNlcy9kdW1t
eS1mcmFtZS0yLmh0bWwiOwordmFyIHVwZGF0ZWRPYmplY3RVUkwgPSAicmVzb3VyY2VzL2R1bW15
LWZyYW1lLTEuaHRtbCI7CiAKIGZ1bmN0aW9uIHJ1blRlc3RzKCkKIHsKQEAgLTM2LDggKzM2LDgg
QEAgZnVuY3Rpb24gaGFuZGxlTG9hZCgpCiAgICAgaWYgKG51bUxvYWRzIDwgMikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgc2hvdWxkQmUoIndpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24udG9TdHJp
bmcoKSIsICciJyArIHVwZGF0ZWRGcmFtZVVSTCArICciJyk7Ci0gICAgc2hvdWxkQmUoIndpbmRv
dy5mcmFtZXNbMV0ubG9jYXRpb24udG9TdHJpbmcoKSIsICciJyArIHVwZGF0ZWRPYmplY3RVUkwg
KyAnIicpOworICAgIHNob3VsZEJlVHJ1ZShgd2luZG93LmZyYW1lc1swXS5sb2NhdGlvbi5ocmVm
LmVuZHNXaXRoKCIke3VwZGF0ZWRGcmFtZVVSTH0iKWApOworICAgIHNob3VsZEJlVHJ1ZShgd2lu
ZG93LmZyYW1lc1sxXS5sb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCIke3VwZGF0ZWRPYmplY3RVUkx9
IilgKTsKIAogICAgIGZpbmlzaEpTVGVzdCgpOwogfQpAQCAtNDYsOCArNDYsOCBAQCBmdW5jdGlv
biBoYW5kbGVMb2FkKCkKIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+CiAKLTxp
ZnJhbWUgbmFtZT0iZnJhbWUiIHNyYz0iZGF0YTp0ZXh0L2h0bWwsT2xkIGNvbnRlbnRzIG9mIGlm
cmFtZSI+PC9pZnJhbWU+Ci08b2JqZWN0IG5hbWU9Im9iaiIgdHlwZT0idGV4dC9odG1sIiBkYXRh
PSJkYXRhOnRleHQvaHRtbCxPbGQgY29udGVudHMgb2Ygb2JqZWN0Ij48L29iamVjdD4KKzxpZnJh
bWUgbmFtZT0iZnJhbWUiIHNyYz0icmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbCI+PC9pZnJh
bWU+Cis8b2JqZWN0IG5hbWU9Im9iaiIgdHlwZT0idGV4dC9odG1sIiBkYXRhPSJyZXNvdXJjZXMv
ZHVtbXktZnJhbWUtMi5odG1sIj48L29iamVjdD4KIAogPC9ib2R5PgogPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZy
YW1lLTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0
RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFt
ZS0xLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACis8IURPQ1RZUEUgaHRtbD4K
K09sZCBjb250ZW50cyBvZiBpZnJhbWUgLyBOZXcgY29udGVudHMgb2Ygb2JqZWN0CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJh
bWUtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RF
bGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0yLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1l
LTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIgQEAKKzwhRE9DVFlQRSBodG1sPgor
T2xkIGNvbnRlbnRzIG9mIG9iamVjdCAvIE5ldyBjb250ZW50cyBvZiBpZnJhbWUKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFt
ZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRl
eHQtMi5odG1sCShyZXZpc2lvbiAyODAyMTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9h
dHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxodG1sPgogPGJvZHkgb25sb2FkPSJ0
ZXN0KCkiPgotPGlmcmFtZSBzcmM9J2RhdGE6dGV4dC9odG1sLDxhIGlkPSJhIiBocmVmPSIlMjMi
IG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBvczs8cD5GQUlMPC9w
PiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9h
Pic+PC9pZnJhbWU+Cis8aWZyYW1lIHNyY2RvYz0nPGEgaWQ9ImEiIGhyZWY9IiUyMyIgb25jbGlj
az0iZG9jdW1lbnQud3JpdGUod2luZG93ICE9IHRvcCA/ICZhcG9zOzxwPkZBSUw8L3A+JmFwb3M7
IDogJmFwb3M7PHA+UEFTUzwvcD4mYXBvczspOyByZXR1cm4gZmFsc2UiPmxpbms8L2E+Jz48L2lm
cmFtZT4KIDxzY3JpcHQ+CiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1s
aXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1leHRy
YWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCShyZXZpc2lvbiAyODAyMTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVk
LWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIDxodG1sPgogPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgotPGlmcmFtZSBzcmM9J2Rh
dGE6dGV4dC9odG1sLDxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRl
KHdpbmRvdyAhPSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8
L3A+JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+Cis8aWZyYW1lIHNy
Y2RvYz0nPGEgaWQ9ImEiIGhyZWY9IiUyMyIgb25jbGljaz0iZG9jdW1lbnQud3JpdGUod2luZG93
ICE9IHRvcCA/ICZhcG9zOzxwPkZBSUw8L3A+JmFwb3M7IDogJmFwb3M7PHA+UEFTUzwvcD4mYXBv
czspOyByZXR1cm4gZmFsc2UiPmxpbms8L2E+Jz48L2lmcmFtZT4KIDxzY3JpcHQ+CiBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyODAy
MTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tcGFyZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDkgQEAKLVRo
aXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSB3aXRoIHRoZSBrZXl3b3Jk
cyBhbGxvdy1zY3JpcHRzIGFuZCBhbGxvdy1zYW1lLW9yaWdpbiBpcyBhbGxvd2VkIHRvIG5hdmln
YXRlIGFuIGFuY2VzdG9yIGluIHRoZSBmcmFtZSB0cmVlIGJ5IGFzc2lnbmluZyB0aGUgbG9jYXRp
b24gYXR0cmlidXRlLgorQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0
IHRvIGluaXRpYXRlIG5hdmlnYXRpb24gZm9yIGZyYW1lIHdpdGggVVJMICdzYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tc291cmNlLmh0bWwnLiBUaGUgZnJhbWUgYXR0ZW1wdGluZyBuYXZpZ2F0
aW9uIGlzIHNhbmRib3hlZCwgYW5kIGlzIHRoZXJlZm9yZSBkaXNhbGxvd2VkIGZyb20gbmF2aWdh
dGluZyBpdHMgYW5jZXN0b3JzLgorCitDT05TT0xFIE1FU1NBR0U6IFNlY3VyaXR5RXJyb3I6IFRo
ZSBvcGVyYXRpb24gaXMgaW5zZWN1cmUuCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRi
b3hlZCBJRnJhbWUgY2Fubm90IG5hdmlnYXRlIGFuIGFuY2VzdG9yIGluIHRoZSBmcmFtZSB0cmVl
IGJ5IGFzc2lnbmluZyB0aGUgbG9jYXRpb24gYXR0cmlidXRlLgorCitUaGlzIGlzIGRvbmUgYnkg
bG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5nbGUgc2FuZGJveGVk
IG9uZS4gRXhwZWN0IHRlbiBmcmFtZXMgdG8gYmUgbmF2aWdhdGVkLCBidXQgdGhlIHNhbmRib3hl
ZCBvbmUgdG8gbm90IGJlIG9uZSBvZiB0aGVtLgogCiBUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFT
UyIgb24gc3VjY2Vzcy4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkocmV2
aXNpb24gMjgwMjExKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw5ICsxMyw5IEBA
IGZ1bmN0aW9uIGNoZWNrUmVzdWx0cygpCiB7CiAgICAgdmFyIHRlc3RTdGF0dXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGVzdFN0YXR1cycpOwogCi0gICAgaWYgKHNlbGYubmF2aWdhdGVk
LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigncGFyZW50Lmh0bWwnKSAhPSAtMSkKLSAgICAgICAgdGVz
dFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDogc2FuZGJveGVkIGZyYW1lIGNvdWxkblwndCBuYXZp
Z2F0ZSc7Ci0gICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDExKQorICAgIGlmIChzZWxm
Lm5hdmlnYXRlZC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ3BhcmVudC5odG1sJykgPT0gLTEpCisg
ICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IGRpc2FsbG93ZWQgZnJhbWUgbmF2
aWdhdGVkJzsKKyAgICBlbHNlIGlmIChuYXZpZ2F0ZWRGcmFtZXMgPT0gMTApCiAgICAgICAgIHRl
c3RTdGF0dXMuaW5uZXJIVE1MID0gJ1BBU1MnOwogICAgIGVsc2UKICAgICAgICAgdGVzdFN0YXR1
cy5pbm5lckhUTUwgPSAnRkFJTDogZnJhbWVzIG5vdCBuYXZpZ2F0ZWQgcHJvcGVybHknOwpAQCAt
MjgsNyArMjgsNyBAQCBmdW5jdGlvbiBjb3VudEZyYW1lKCkKIHsKICAgICArK25hdmlnYXRlZEZy
YW1lczsKIAotICAgIGlmIChuYXZpZ2F0ZWRGcmFtZXMgPT0gMTEpCisgICAgaWYgKG5hdmlnYXRl
ZEZyYW1lcyA9PSAxMCkKICAgICAgICAgY2hlY2tSZXN1bHRzKCk7CiB9CiAKQEAgLTM3LDEwICsz
NywxMyBAQCBmdW5jdGlvbiBjb3VudEZyYW1lKCkKIAogPGJvZHk+CiAKLSAgICA8cD5UaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgd2l0aCB0aGUga2V5d29yZHMKLSAg
ICBhbGxvdy1zY3JpcHRzIGFuZCBhbGxvdy1zYW1lLW9yaWdpbiBpcyBhbGxvd2VkIHRvIG5hdmln
YXRlIGFuIGFuY2VzdG9yCisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94
ZWQgSUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvcgogICAgIGluIHRoZSBmcmFtZSB0
cmVlIGJ5IGFzc2lnbmluZyB0aGUgbG9jYXRpb24gYXR0cmlidXRlLjwvcD4KIAorICAgIDxwPlRo
aXMgaXMgZG9uZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNp
bmdsZQorICAgIHNhbmRib3hlZCBvbmUuIEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRl
ZCwgYnV0IHRoZSBzYW5kYm94ZWQKKyAgICBvbmUgdG8gPGI+bm90PC9iPiBiZSBvbmUgb2YgdGhl
bS48L3A+CisgICAgCiAgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90
OyBvbiBzdWNjZXNzLjwvcD4KIAogICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9u
LWFzc2lnbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjgwMjExKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyICsxLDIgQEAKLWRvY3VtZW50LnJlZmVycmVy
ID0KK2RvY3VtZW50LnJlZmVycmVyID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2Zy
YW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24uaHRtbAogCkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MDIxMSkKKysrIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBA
QAorMjAyMS0wNy0yMiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisK
KyAgICAgICAgW0pTQ10gQ2FsbCBjdXN0b20gYWNjZXNzb3JzIC8gdmFsdWVzIHdpdGggdGhlaXIg
aG9sZGVyJ3MgZ2xvYmFsIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI1OTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVr
aS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5k
aW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNj
cmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFs
bS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFz
Y3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQt
YmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9y
dC9jcmVhdGUtcmVhbG0uanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9X
ZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1cHBvcnQvZHVtbXktaWZyYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9z
cy1vcmlnaW4tb2JqZWN0cy93aW5kb3ctbG9jYXRpb24tYW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3Mt
cmVhbG0tc2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL3dpbmRvdy1sb2Nh
dGlvbi1hbmQtbG9jYXRpb24taHJlZi1jcm9zcy1yZWFsbS1zZXQuaHRtbDogQWRkZWQuCisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVu
dHMvY29tcGlsZS1ldmVudC1oYW5kbGVyLXNldHRpbmdzLW9iamVjdHMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3By
b2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1
ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1j
c3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFi
bGUuaHRtbDoKKyAgICAgICAgQWxsIHRoZXNlIGFyZSBjb25maXJtZWQgcHJvZ3Jlc3Npb25zLgor
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBv
cnRlZEVudHJ5VHlwZXMtY3Jvc3MtcmVhbG0tYWNjZXNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRl
ZEVudHJ5VHlwZXMtY3Jvc3MtcmVhbG0tYWNjZXNzLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA3LTIy
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
WEhSLnNlbmQoRG9jdW1lbnQpIHNob3VsZCByZXBsYWNlIG1pc21hdGNoZWQgc3Vycm9nYXRlcyB3
aXRoIHJlcGxhY2VtZW50IGNoYXJhY3RlciBiZWZvcmUgc2VuZGluZwpJbmRleDogTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0
aW5nL2V2ZW50cy9jb21waWxlLWV2ZW50LWhhbmRsZXItc2V0dGluZ3Mtb2JqZWN0cy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9jb21waWxlLWV2ZW50LWhh
bmRsZXItc2V0dGluZ3Mtb2JqZWN0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI4MDIxMSkKKysr
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBh
cGlzL3NjcmlwdGluZy9ldmVudHMvY29tcGlsZS1ldmVudC1oYW5kbGVyLXNldHRpbmdzLW9iamVj
dHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogCiBQQVNTIFRo
ZSBGdW5jdGlvbiBpbnN0YW5jZSBtdXN0IGJlIGNyZWF0ZWQgaW4gdGhlIFJlYWxtIG9mIHRoZSBu
b2RlIGRvY3VtZW50CiBGQUlMIFRoZSBlbnRyeSBzZXR0aW5ncyBvYmplY3Qgd2hpbGUgZXhlY3V0
aW5nIHRoZSBjb21waWxlZCBjYWxsYmFjayB2aWEgV2ViIElETCdzIGludm9rZSBtdXN0IGJlIHRo
YXQgb2YgdGhlIG5vZGUgZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIi9odG1sL3dl
YmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9yZXNvdXJjZXMvb3Blbi13aW5kb3cuaHRtbCIgYnV0
IGdvdCAiL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL29wZW4td2luZG93Lmh0bWwi
Ci1GQUlMIFRoZSBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHdoaWxlIGV4ZWN1dGluZyB0aGUg
Y29tcGlsZWQgY2FsbGJhY2sgdmlhIFdlYiBJREwncyBpbnZva2UgbXVzdCBiZSB0aGF0IG9mIHRo
ZSBub2RlIGRvY3VtZW50IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJpZnJhbWUiIGJ1dCBnb3Qg
InBhcmVudCBmcmFtZSIKK1BBU1MgVGhlIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgd2hpbGUg
ZXhlY3V0aW5nIHRoZSBjb21waWxlZCBjYWxsYmFjayB2aWEgV2ViIElETCdzIGludm9rZSBtdXN0
IGJlIHRoYXQgb2YgdGhlIG5vZGUgZG9jdW1lbnQKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nl
c3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9w
cm9taXNlLWpvYi1pbmN1bWJlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3Njcmlw
dGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1q
b2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjgw
MjExKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRo
LXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDEzICsyLDEzIEBACiAKIFBBU1MgU2FuaXR5IGNoZWNr
OiB0aGlzIGFsbCB3b3JrcyBhcyBleHBlY3RlZCB3aXRoIG5vIHByb21pc2VzIGludm9sdmVkCiBQ
QVNTIEZ1bGZpbGxtZW50IGhhbmRsZXIgb24gZnVsZmlsbGVkIHByb21pc2UKLUZBSUwgRnVsZmls
bG1lbnQgaGFuZGxlciBvbiBmdWxmaWxsZWQgcHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVu
dCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwt
Mi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJv
bWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxo
b3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50
ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL2N1cnJlbnQv
Y3VycmVudC5odG1sIgorRkFJTCBGdWxmaWxsbWVudCBoYW5kbGVyIG9uIGZ1bGZpbGxlZCBwcm9t
aXNlLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9z
Y3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3Jp
cHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0
bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0
aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpv
Yi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQuaHRtbCIKIFBBU1MgUmVqZWN0aW9uIGhhbmRs
ZXIgb24gcmVqZWN0ZWQgcHJvbWlzZQotRkFJTCBSZWplY3Rpb24gaGFuZGxlciBvbiByZWplY3Rl
ZCBwcm9taXNlLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCBzdGFjayBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBw
YXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWph
dmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1i
ZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMv
c2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2Ny
aXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvY3VycmVudC9jdXJyZW50Lmh0bWwiCitGQUlMIFJlamVj
dGlvbiBoYW5kbGVyIG9uIHJlamVjdGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQg
c2V0dGluZ3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vbG9j
YWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIv
aW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3Byb21p
c2Utam9iLWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9z
dDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVn
cmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Byb21pc2Utam9iLWluY3VtYmVu
dC5odG1sIgogUEFTUyBGdWxmaWxsbWVudCBoYW5kbGVyIG9uIHBlbmRpbmctdGhlbi1mdWxmaWxs
ZWQgcHJvbWlzZQotRkFJTCBGdWxmaWxsbWVudCBoYW5kbGVyIG9uIHBlbmRpbmctdGhlbi1mdWxm
aWxsZWQgcHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3Rh
Y2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dl
YmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRo
ZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWlu
Y3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBh
cGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2
YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL2N1cnJlbnQvY3VycmVudC5odG1sIgorRkFJTCBG
dWxmaWxsbWVudCBoYW5kbGVyIG9uIHBlbmRpbmctdGhlbi1mdWxmaWxsZWQgcHJvbWlzZSwgdXNp
bmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5n
L3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1x
dWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQg
Z290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9j
ZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUv
cHJvbWlzZS1qb2ItaW5jdW1iZW50Lmh0bWwiCiBQQVNTIFJlamVjdGlvbiBoYW5kbGVyIG9uIHBl
bmRpbmctdGhlbi1yZWplY3RlZCBwcm9taXNlCi1GQUlMIFJlamVjdGlvbiBoYW5kbGVyIG9uIHBl
bmRpbmctdGhlbi1yZWplY3RlZCBwcm9taXNlLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50IHNldHRp
bmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9z
dDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVn
cmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9taXNlLWpv
Yi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlv
bi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvY3VycmVudC9jdXJyZW50
Lmh0bWwiCitGQUlMIFJlamVjdGlvbiBoYW5kbGVyIG9uIHBlbmRpbmctdGhlbi1yZWplY3RlZCBw
cm9taXNlLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCBzdGFjayBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBp
cy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFz
Y3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50
Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2Ny
aXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0
LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQuaHRtbCIKIFBBU1MgVGhlbmFibGUgcmVz
b2x1dGlvbgotRkFJTCBUaGVuYWJsZSByZXNvbHV0aW9uLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50
IHNldHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xv
Y2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0y
L2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9t
aXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhv
c3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRl
Z3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvY3VycmVudC9j
dXJyZW50Lmh0bWwiCitGQUlMIFRoZW5hYmxlIHJlc29sdXRpb24sIHVzaW5nIGJhY2t1cCBpbmN1
bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRw
Oi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1v
ZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2Vz
L3Byb21pc2Utam9iLWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xv
Y2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0y
L2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Byb21pc2Utam9iLWlu
Y3VtYmVudC5odG1sIgogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LWNz
cy1jcm9zcy1vcmlnaW4uaHR0cHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL2ZldGNoLXJlcXVlc3QtY3NzLWNyb3NzLW9yaWdpbi5odHRwcy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDI4MDIxMSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3Qt
Y3NzLWNyb3NzLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
OCArMSw2IEBACiAKIFBBU1Mgc2V0dXAgZ2xvYmFsIHN0YXRlCiBQQVNTIE1JTUUgY2hlY2tpbmcg
b2YgQ1NTIHJlc291cmNlcyBmZXRjaGVkIHZpYSBzZXJ2aWNlIHdvcmtlciB3aGVuIENvbnRlbnQt
VHlwZSBpcyBub3Qgc2V0LgotRkFJTCBTYW1lLW9yaWdpbiBwb2xpY3kgZm9yIGFjY2VzcyB0byBD
U1MgcmVzb3VyY2VzIGZldGNoZWQgdmlhIHNlcnZpY2Ugd29ya2VyIGFzc2VydF90aHJvd3NfZG9t
OiBmdW5jdGlvbiAiKCkgPT4gewotICAgIGYuY29udGVudERvY3VtZW50LnN0eWxlU2hlZXRzWzBd
LmNzc1J1bGVzWzBdLmNzc1RleHQ7Ci0gIH0iIHRocmV3IGFuIGV4Y2VwdGlvbiBmcm9tIHRoZSB3
cm9uZyBnbG9iYWwKK0ZBSUwgU2FtZS1vcmlnaW4gcG9saWN5IGZvciBhY2Nlc3MgdG8gQ1NTIHJl
c291cmNlcyBmZXRjaGVkIHZpYSBzZXJ2aWNlIHdvcmtlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJTZWN1cml0eUVycm9yOiBOb3QgYWxsb3dl
ZCB0byBhY2Nlc3MgY3Jvc3Mtb3JpZ2luIHN0eWxlc2hlZXQiCiBQQVNTIGNsZWFudXAgZ2xvYmFs
IHN0YXRlCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxlLmh0
bWwJKHJldmlzaW9uIDI4MDIxMSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVh
ZGFibGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw5ICs5LDEwIEBACiAgICAgICAgIDxpZnJh
bWUgc3JjPSIuIiBpZD0iZnJhbWUiPjwvaWZyYW1lPgogICAgICAgICA8c2NyaXB0PgogcHJvbWlz
ZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgZnJhbWVET01FeGNlcHRpb24gPSBm
cmFtZS5jb250ZW50V2luZG93LkRPTUV4Y2VwdGlvbjsKICAgICBjb25zdCB0cmFuc2Zvcm0gPSBu
ZXcgZnJhbWUuY29udGVudFdpbmRvdy5TRnJhbWVUcmFuc2Zvcm07CiAgICAgZnJhbWUucmVtb3Zl
KCk7Ci0gICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gdHJh
bnNmb3JtLnJlYWRhYmxlKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJy
b3IiLCBmcmFtZURPTUV4Y2VwdGlvbiwgKCkgPT4gdHJhbnNmb3JtLnJlYWRhYmxlKTsKIH0pOwog
ICAgICAgIDwvc2NyaXB0PgogICAgIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434099</attachid>
            <date>2021-07-23 10:58:48 -0700</date>
            <delta_ts>2021-07-23 12:23:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-225997-20210723205846.patch</filename>
            <type>text/plain</type>
            <size>128915</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODAyNDcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA3LTIzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1
ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgICogc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXByb3Rv
LWNoYWluLXB1dC5qczoKKyAgICAgICAgKiBzdHJlc3MvZ2V0dGVyLXNldHRlci1nbG9iYWxvYmpl
Y3QtaW4taWMtMi5qczogQWRkZWQuCisKIDIwMjEtMDctMjIgIFNhYW0gQmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgSlNUZXN0cy9zdHJlc3MvdGVzdC1vdXQtb2YtbWVtb3J5
IHNob3VsZG4ndCBhc3N1bWUgdGhhdCB3ZSBhbHdheXMgT09NCkluZGV4OiBKU1Rlc3RzL3N0cmVz
cy9jdXN0b20tZ2V0LXNldC1wcm90by1jaGFpbi1wdXQuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzCShyZXZpc2lvbiAyODAy
NDcpCisrKyBKU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90by1jaGFpbi1wdXQuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTk5LDggKzk5LDggQEAgZnVuY3Rpb24gZ2V0QmFzZXMoKSB7CiAo
KCkgPT4gewogICAgIGZvciAobGV0IGJhc2Ugb2YgZ2V0QmFzZXMoKSkgewogICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQotICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4g
eyBiYXNlLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID0ge307IH0sICJUeXBlRXJyb3I6IEF0
dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7Ci0gICAgICAgIGFzc2Vy
dCghUmVmbGVjdC5zZXQoT2JqZWN0KGJhc2UpLCAiY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3Qi
LCB7fSkpOworICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBiYXNlLmN1c3RvbUFjY2Vz
c29yUmVhZE9ubHkgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byBy
ZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChPYmplY3Qo
YmFzZSksICJjdXN0b21BY2Nlc3NvclJlYWRPbmx5Iiwge30pKTsKICAgICB9CiB9KSgpOwogCkBA
IC0xMDgsMjEgKzEwOCwyMSBAQCBmdW5jdGlvbiBnZXRCYXNlcygpIHsKICgoKSA9PiB7CiAgICAg
Zm9yIChsZXQgcHJpbWl0aXZlIG9mIHByaW1pdGl2ZXMpIHsKICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDA7ICsraSkKLSAgICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgcHJpbWl0
aXZlLmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRl
ZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7CisgICAgICAgICAgICBzaG91bGRU
aHJvdygoKSA9PiB7IHByaW1pdGl2ZS5jdXN0b21WYWx1ZU5vU2V0dGVyID0ge307IH0sICJUeXBl
RXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7CiAgICAg
fQogCiAgICAgZm9yIChsZXQgb2JqZWN0IG9mIGdldE9iamVjdHMoKSkgewogICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQotICAgICAgICAgICAgb2JqZWN0LmN1c3RvbVZhbHVl
R2xvYmFsT2JqZWN0ID0ge307Ci0gICAgICAgIGFzc2VydChvYmplY3QuaGFzT3duUHJvcGVydHko
ImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0IikpOwotICAgICAgICBhc3NlcnQoUmVmbGVjdC5zZXQo
b2JqZWN0LCAiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiLCB7fSkpOworICAgICAgICAgICAgb2Jq
ZWN0LmN1c3RvbVZhbHVlTm9TZXR0ZXIgPSB7fTsKKyAgICAgICAgYXNzZXJ0KG9iamVjdC5oYXNP
d25Qcm9wZXJ0eSgiY3VzdG9tVmFsdWVOb1NldHRlciIpKTsKKyAgICAgICAgYXNzZXJ0KFJlZmxl
Y3Quc2V0KG9iamVjdCwgImN1c3RvbVZhbHVlTm9TZXR0ZXIiLCB7fSkpOwogICAgIH0KIAogICAg
IGZvciAobGV0IG9iamVjdCBvZiBnZXRPYmplY3RzKCkpIHsKICAgICAgICAgT2JqZWN0LnByZXZl
bnRFeHRlbnNpb25zKG9iamVjdCk7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyAr
K2kpIHsKLSAgICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgb2JqZWN0LmN1c3RvbVZhbHVl
R2xvYmFsT2JqZWN0ID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8g
cmVhZG9ubHkgcHJvcGVydHkuIik7Ci0gICAgICAgICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0KG9i
amVjdCwgImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0Iiwge30pKTsKKyAgICAgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsgb2JqZWN0LmN1c3RvbVZhbHVlTm9TZXR0ZXIgPSB7fTsgfSwgIlR5cGVF
cnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAgICAg
ICAgICAgIGFzc2VydCghUmVmbGVjdC5zZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVOb1NldHRlciIs
IHt9KSk7CiAgICAgICAgIH0KICAgICB9CiB9KSgpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvZ2V0
dGVyLXNldHRlci1nbG9iYWxvYmplY3QtaW4taWMtMi5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3Rz
L3N0cmVzcy9nZXR0ZXItc2V0dGVyLWdsb2JhbG9iamVjdC1pbi1pYy0yLmpzCShub25leGlzdGVu
dCkKKysrIEpTVGVzdHMvc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2JqZWN0LWluLWljLTIu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsK
KyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsK
K30KKworY29uc3QgY3JlYXRlQ3VzdG9tID0gYAorICAgIHZhciBjdXN0b20gPSAkdm0uY3JlYXRl
Q3VzdG9tVGVzdEdldHRlclNldHRlcigpOworYDsKKworKGZ1bmN0aW9uIGRpcmVjdEN1c3RvbUFj
Y2Vzc29yR2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7
CisgICAgY29uc3Qgb3RoZXJDdXN0b20gPSBvdGhlci5jdXN0b207CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGFzc2VydChvdGhlckN1c3RvbS5jdXN0b21B
Y2Nlc3Nvckdsb2JhbE9iamVjdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlv
biBkaXJlY3RDdXN0b21WYWx1ZUdldCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhj
cmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBhc3NlcnQob3RoZXJD
dXN0b20uY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOwor
CisoZnVuY3Rpb24gZGlyZWN0Q3VzdG9tQWNjZXNzb3JTZXQoKSB7CisgICAgY29uc3Qgb3RoZXIg
PSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVy
LmN1c3RvbTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAg
Y29uc3QgdmFsdWUgPSB7fTsKKyAgICAgICAgb3RoZXJDdXN0b20uY3VzdG9tQWNjZXNzb3JHbG9i
YWxPYmplY3QgPSB2YWx1ZTsKKyAgICAgICAgYXNzZXJ0KHZhbHVlLnJlc3VsdCA9PT0gb3RoZXIp
OworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBkaXJlY3RDdXN0b21WYWx1ZVNldCgpIHsKKyAg
ICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVy
Q3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkr
KykgeworICAgICAgICBjb25zdCB2YWx1ZSA9IHt9OworICAgICAgICBvdGhlckN1c3RvbS5jdXN0
b21WYWx1ZUdsb2JhbE9iamVjdCA9IHZhbHVlOworICAgICAgICBhc3NlcnQodmFsdWUucmVzdWx0
ID09PSBvdGhlcik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIHByb3RvdHlwZUNoYWluQ3Vz
dG9tQWNjZXNzb3JHZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3Vz
dG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbUhlaXIgPSBPYmplY3QuY3JlYXRlKG90aGVyLmN1
c3RvbSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGFz
c2VydChvdGhlckN1c3RvbUhlaXIuY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPT09IG90aGVy
KTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gcHJvdG90eXBlQ2hhaW5DdXN0b21WYWx1ZUdl
dCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNv
bnN0IG90aGVyQ3VzdG9tSGVpciA9IE9iamVjdC5jcmVhdGUob3RoZXIuY3VzdG9tKTsKKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KG90aGVyQ3Vz
dG9tSGVpci5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7
CisKKyhmdW5jdGlvbiBwcm90b3R5cGVDaGFpbkN1c3RvbUFjY2Vzc29yU2V0KCkgeworICAgIGNv
bnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0
b21IZWlyID0gT2JqZWN0LmNyZWF0ZShvdGhlci5jdXN0b20pOworCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBjb25zdCB2YWx1ZSA9IHt9OworICAgICAgICBv
dGhlckN1c3RvbUhlaXIuY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPSB2YWx1ZTsKKyAgICAg
ICAgYXNzZXJ0KHZhbHVlLnJlc3VsdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MDI0NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1OSBAQAorMjAyMS0w
Ny0yMyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAg
W0pTQ10gQ2FsbCBjdXN0b20gYWNjZXNzb3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3Mg
Z2xvYmFsIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI1OTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICBKdXN0IGxpa2UgSlMgYnVpbHQtaW5zLCBnZXR0ZXIgLyBzZXR0ZXIgZnVuY3Rpb25zIG9m
IFdlYklETCBhdHRyaWJ1dGVzIGFyZSBjcmVhdGVkIGluIHJlYWxtCisgICAgICAgIG9mIHRoZWly
IGhvbGRlciBpbnRlcmZhY2UgWzFdWzJdLCB3aGljaCBpcyB0aGVpciBfY3VycmVudF8gcmVhbG0g
Zm9yIHRocm93aW5nIGFuIGVycm9yIFszXS4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIGN1
c3RvbSBwcm9wZXJ0aWVzIGdldCBjb3JyZWN0IGdsb2JhbCBvYmplY3QgaW5zdGVhZCBvZiBsZXhp
Y2FsLCBpbmNsdWRpbmcKKyAgICAgICAgd2hlbiBpbmxpbmUgY2FjaGVkLCBhbGlnbmluZyB0aGVt
IHdpdGggZnVuY3Rpb25zIGFuZCByZWd1bGFyIGFjY2Vzc29ycy4KKworICAgICAgICBUaGUgbGF0
dGVyIGFsbG93ZWQgc3dpdGNoaW5nIEpTIGJ1aWx0LWlucyB0byBDdXN0b21BY2Nlc3NvciAoZS5n
LiBTeW1ib2wjZGVzY3JpcHRpb24pLAorICAgICAgICB3aGljaCBpcyBzbGlnaHRseSBtb3JlIGVm
ZmljaWVudCB0byBjYWxsIGZyb20gQysrLCBkb2Vzbid0IG5lZWQgcmVpZmljYXRpb24gb24gZmly
c3QgYWNjZXNzLAorICAgICAgICBhbmQgaGFzIG5pY2VyIHNpZ25hdHVyZS4KKworICAgICAgICBB
bHNvLCByZW5hbWVzIFdBU00gYWNjZXNzb3JzIHRvIGRyb3AgImZ1bmMiIGFuZCByZW1vdmVzIHVu
dXNlZCBmdW5jdGlvbiBsZW5ndGggcGFyYW1ldGVyLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIgKHN0ZXAgMikKKyAg
ICAgICAgWzJdOiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRl
LXNldHRlciAoc3RlcCA1KQorICAgICAgICBbM106IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI2VjbWFzY3JpcHQtdGhyb3cKKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAq
IGNyZWF0ZV9oYXNoX3RhYmxlOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Z2xvYmFsT2JqZWN0T2ZDbG9zZXN0Q29kZUJsb2Nr
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKiBydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToK
KyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lU2xvdyk6CisgICAgICAgICog
cnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmN1
c3RvbUdldHRlciBjb25zdCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpnZXRWYWx1ZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9TeW1ib2xQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKwogMjAyMS0wNy0yMiAgU2FhbSBCYXJh
dGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBaXJTdGFja1Nsb3QncyB1aW50MTZf
dCBieXRlIHNpemUgaXMgdG9vIHNtYWxsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY3Jl
YXRlX2hhc2hfdGFibGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0
ZV9oYXNoX3RhYmxlCShyZXZpc2lvbiAyODAyNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y3JlYXRlX2hhc2hfdGFibGUJKHdvcmtpbmcgY29weSkKQEAgLTk0LDExICs5NCw2IEBAIHdoaWxl
ICg8SU4+KSB7CiAgICAgICAgIGlmICgkYXR0ID1+IG0vRnVuY3Rpb24vKSB7CiAgICAgICAgICAg
ICBwdXNoKEB2YWx1ZXMsIHsgInR5cGUiID0+ICJQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24i
LCAiZnVuY3Rpb24iID0+ICR2YWwsICJwYXJhbXMiID0+IChsZW5ndGgoJHBhcmFtKSA/ICRwYXJh
bSA6ICIiKSwgImludHJpbnNpYyIgPT4gKGxlbmd0aCgkaW50cmluc2ljKSA/ICRpbnRyaW5zaWMg
OiAiTm9JbnRyaW5zaWMiKSB9KTsKICAgICAgICAgICAgICNwcmludGYgU1RERVJSICJXQVJOSU5H
OiBOdW1iZXIgb2YgYXJndW1lbnRzIG1pc3NpbmcgZm9yICRrZXkvJHZhbFxuIiBpZiAobGVuZ3Ro
KCRwYXJhbSkgPT0gMCk7Ci0gICAgICAgIH0gZWxzaWYgKCRhdHQgPX4gbS9BY2Nlc3Nvci8pIHsK
LSAgICAgICAgICAgIG15ICRnZXQgPSAkdmFsOwotICAgICAgICAgICAgbXkgJHB1dCA9ICJudWxs
cHRyIjsKLSAgICAgICAgICAgICRoYXNTZXR0ZXIgPSAidHJ1ZSI7Ci0gICAgICAgICAgICBwdXNo
KEB2YWx1ZXMsIHsgInR5cGUiID0+ICJQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IiLCAiZ2V0
IiA9PiAkZ2V0LCAicHV0IiA9PiAkcHV0IH0pOwogICAgICAgICB9IGVsc2lmICgkYXR0ID1+IG0v
Q2VsbFByb3BlcnR5LykgewogICAgICAgICAgICAgbXkgJHByb3BlcnR5ID0gJHZhbDsKICAgICAg
ICAgICAgIHB1c2goQHZhbHVlcywgeyAidHlwZSIgPT4gIlByb3BlcnR5QXR0cmlidXRlOjpDZWxs
UHJvcGVydHkiLCAicHJvcGVydHkiID0+ICRwcm9wZXJ0eSB9KTsKQEAgLTMxMCwxMSArMzA1LDYg
QEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAgICAgICRmaXJzdFZhbHVlID0gJHZhbHVlc1skaV17
ImZ1bmN0aW9uIn07CiAgICAgICAgICAgICAkc2Vjb25kVmFsdWUgPSAkdmFsdWVzWyRpXXsicGFy
YW1zIn07CiAgICAgICAgICAgICAkaW50cmluc2ljID0gJHZhbHVlc1skaV17ImludHJpbnNpYyJ9
OwotICAgICAgICB9IGVsc2lmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJQcm9wZXJ0eUF0dHJp
YnV0ZTo6QWNjZXNzb3IiKSB7Ci0gICAgICAgICAgICAkZmlyc3RDYXN0U3RyID0gInN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPiI7Ci0gICAgICAgICAgICAkc2Vjb25kQ2FzdFN0ciA9ICJz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4iOwotICAgICAgICAgICAgJGZpcnN0VmFsdWUg
PSAkdmFsdWVzWyRpXXsiZ2V0In07Ci0gICAgICAgICAgICAkc2Vjb25kVmFsdWUgPSAkdmFsdWVz
WyRpXXsicHV0In07CiAgICAgICAgIH0gZWxzaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIlBy
b3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eSIpIHsKICAgICAgICAgICAgICRmaXJzdENhc3RTdHIg
PSAic3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+IjsKICAgICAgICAgICAg
ICRzZWNvbmRDYXN0U3RyID0gInN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPiI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCShyZXZpc2lvbiAyODAyNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MTAsNyArMTQxMCw2IEBAIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICBDQ2FsbEhlbHBlcnMm
IGppdCA9ICpzdGF0ZS5qaXQ7CiAgICAgVk0mIHZtID0gc3RhdGUubV92bTsKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGppdC5jb2RlQmxvY2soKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gc3RhdGUubV9nbG9iYWxPYmplY3Q7CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUg
PSBzdGF0ZS5tX2VjbWFNb2RlOwogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpz
dGF0ZS5zdHViSW5mbzsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSBzdGF0ZS52YWx1ZVJl
Z3M7CkBAIC0xNjEzLDYgKzE2MTIsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lCiAgICAgICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSBsb2FkZWRWYWx1ZUdQUik7
CiAgICAgICAgICAgICBBU1NFUlQobV90eXBlICE9IFNldHRlciB8fCB2YWx1ZVJlZ3NQYXlsb2Fk
R1BSICE9IGxvYWRlZFZhbHVlR1BSKTsKIAorICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHN0YXRlLm1fZ2xvYmFsT2JqZWN0OworCiAgICAgICAgICAgICAvLyBDcmVh
dGUgYSBKUyBjYWxsIHVzaW5nIGEgSlMgY2FsbCBpbmxpbmUgY2FjaGUuIEFzc3VtZSB0aGF0Ogog
ICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIC0gU1AgaXMgYWxpZ25lZCBhbmQgcmVwcmVz
ZW50cyB0aGUgZXh0ZW50IG9mIHRoZSBjYWxsaW5nIGNvbXBpbGVyJ3Mgc3RhY2sgdXNhZ2UuCkBA
IC0xNzQ4LDYgKzE3NDksOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NH
ZW5lCiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1f
dHlwZSA9PSBDdXN0b21BY2Nlc3NvckdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0
ZXIgfHwgbV90eXBlID09IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKICAgICAgICAgICAgIEFTU0VS
VCghZG9lc1Byb3BlcnR5U3RvcmFnZUxvYWRzKTsgLy8gT3Igd2UgbmVlZCBhbiBleHRyYSByZWdp
c3Rlci4gV2UgcmVseSBvbiBwcm9wZXJ0eU93bmVyR1BSIGJlaW5nIGNvcnJlY3QgaGVyZS4KIAor
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGhhc0FsdGVybmF0ZUJh
c2UoKSA/IGFsdGVybmF0ZUJhc2UoKS0+Z2xvYmFsT2JqZWN0KHZtKSA6IHN0cnVjdHVyZSgpLT5n
bG9iYWxPYmplY3QoKTsKKwogICAgICAgICAgICAgLy8gTmVlZCB0byBtYWtlIHJvb20gZm9yIHRo
ZSBDIGNhbGwgc28gYW55IG9mIG91ciBzdGFjayBzcGlsbGFnZSBpc24ndCBvdmVyd3JpdHRlbi4g
SXQncwogICAgICAgICAgICAgLy8gaGFyZCB0byB0cmFjayBpZiBzb21lb25lIGRpZCBzcGlsbGFn
ZSBvciBub3QsIHNvIHdlIGp1c3QgYXNzdW1lIHRoYXQgd2UgYWx3YXlzIG5lZWQKICAgICAgICAg
ICAgIC8vIHRvIG1ha2Ugc29tZSBzcGFjZSBoZXJlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDI4MDI0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNl
LmgiCiAjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgogI2luY2x1ZGUgIlZNRW50cnlSZWNvcmQu
aCIKKyNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKICNpbmNsdWRlICJXYXNtQ29udGV4dElubGlu
ZXMuaCIKICNpbmNsdWRlICJXYXNtSW5zdGFuY2UuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KQEAgLTI0NCw2ICsyNDUsMzAgQEAgU291cmNlT3JpZ2luIENhbGxGcmFtZTo6
Y2FsbGVyU291cmNlT3JpZwogICAgIHJldHVybiBzb3VyY2VPcmlnaW47CiB9CiAKK0pTR2xvYmFs
T2JqZWN0KiBDYWxsRnJhbWU6Omdsb2JhbE9iamVjdE9mQ2xvc2VzdENvZGVCbG9jayhWTSYgdm0s
IENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBudWxscHRyOworICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoY2FsbEZyYW1lLCB2bSwgWyZd
KFN0YWNrVmlzaXRvciYgdmlzaXRvcikgeworICAgICAgICBpZiAodmlzaXRvci0+aXNXYXNtRnJh
bWUoKSkgeworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gdmlzaXRvci0+Y2FsbEZyYW1lKCkt
PmxleGljYWxHbG9iYWxPYmplY3Qodm0pOworICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRv
cjo6U3RhdHVzOjpEb25lOworICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiBjb2RlQmxvY2sg
PSB2aXNpdG9yLT5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+Y29k
ZVR5cGUoKSA9PSBDb2RlVHlwZTo6RnVuY3Rpb25Db2RlICYmIHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpLT5pc0J1aWx0aW5GdW5j
dGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6Q29u
dGludWU7CisgICAgICAgICAgICBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpOworICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVzOjpEb25lOworICAg
ICAgICB9CisgICAgICAgIEFTU0VSVCh2aXNpdG9yLT5jb2RlVHlwZSgpID09IFN0YWNrVmlzaXRv
cjo6RnJhbWU6OkNvZGVUeXBlOjpOYXRpdmUpOworICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpTdGF0dXM6OkNvbnRpbnVlOworICAgIH0pOworICAgIGlmIChnbG9iYWxPYmplY3QpCisgICAg
ICAgIHJldHVybiBnbG9iYWxPYmplY3Q7CisgICAgaWYgKHZtLmVudHJ5U2NvcGUpCisgICAgICAg
IHJldHVybiB2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwogU3RyaW5nIENhbGxGcmFtZTo6ZnJpZW5kbHlGdW5jdGlvbk5hbWUoKQogewogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyODAy
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2Myw2ICsyNjMsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAg
IGlubGluZSB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqKTsKICAgICAgICAgdm9pZCBzZXRS
ZXR1cm5QQyh2b2lkKiB2YWx1ZSkgeyBjYWxsZXJGcmFtZUFuZFBDKCkucmV0dXJuUEMgPSB2YWx1
ZTsgfQogCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0T2ZDbG9zZXN0Q29kZUJsb2NrKFZNJiwgQ2FsbEZyYW1lKik7CiAgICAgICAg
IFN0cmluZyBmcmllbmRseUZ1bmN0aW9uTmFtZSgpOwogCiAgICAgICAgIC8vIENhbGxGcmFtZTo6
aXRlcmF0ZSgpIGV4cGVjdHMgYSBGdW5jdG9yIHRoYXQgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5n
IG1ldGhvZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
clByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjgwMjQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFy
ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsQ29sbGF0b3JQcm90b3R5
cGVHZXR0ZXJDb21wYXJlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxD
b2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOwogCkBAIC00Nyw3ICs0Nyw3
IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OnMKIAogLyogU291cmNl
IGZvciBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBjb2xsYXRvclByb3RvdHlw
ZVRhYmxlCi0gIGNvbXBhcmUgICAgICAgICAgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29t
cGFyZSAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgY29tcGFyZSAgICAgICAgICBJbnRsQ29s
bGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgogICByZXNvbHZlZE9wdGlvbnMgIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNS
ZXNvbHZlZE9wdGlvbnMgIERvbnRFbnVtfEZ1bmN0aW9uIDAKIEBlbmQKICovCkBAIC0xMDUsMTQg
KzEwNSwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yRnVuCiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNvbXBh
cmVTdHJpbmdzKGdsb2JhbE9iamVjdCwgeFZpZXdXaXRoU3RyaW5nLnZpZXcsIHlWaWV3V2l0aFN0
cmluZy52aWV3KSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9y
UHJvdG90eXBlR2V0dGVyQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsQ29sbGF0
b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICAvLyAxMC4zLjMgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSAo
RUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0aGlzIENvbGxhdG9yIG9i
amVjdC4KLSAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29s
bGF0b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSW50bENvbGxhdG9yKiBj
b2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWNvbGxhdG9yKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkNvbGxh
dG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIl9zKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjgwMjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZUdldHRlckZvcm1hdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdl
VG9QYXJ0cyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyk7CkBAIC01Myw3ICs1Myw3IEBAIGNvbnN0
IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3QKIAogLyogU291cmNlIGZvciBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBkYXRlVGltZUZvcm1hdFByb3Rv
dHlwZVRhYmxlCi0gIGZvcm1hdCAgICAgICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGVHZXR0ZXJGb3JtYXQgICAgICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIGZvcm1h
dCAgICAgICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQg
ICAgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAgIGZvcm1hdFJh
bmdlICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2Ug
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgZm9ybWF0VG9QYXJ0cyAgICAgICAgIElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQogICByZXNvbHZlZE9wdGlvbnMgICAgICAgSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCkBA
IC0xMTMsMTQgKzExMywxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1l
Rm9yCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0
LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEyLjMuMyBJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAx
LiBMZXQgZHRmIGJlIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0LgotICAgIGF1dG8qIGR0ZiA9
IEludGxEYXRlVGltZUZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogZHRmID0gSW50bERhdGVUaW1lRm9y
bWF0Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAv
LyAyLiBSZXR1cm5JZkFicnVwdChkdGYpLgogICAgIGlmIChVTkxJS0VMWSghZHRmKSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyODAyNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTYgKzM0
LDE2IEBAIG5hbWVzcGFjZSBKU0Mgewogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
SW50bExvY2FsZVByb3RvdHlwZUZ1bmNNYXhpbWl6ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01pbmltaXplKTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVGdW5jVG9TdHJpbmcpOwot
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckJhc2VOYW1lKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJDYWxlbmRhcik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0KTsKLXN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24pOwotc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhv
dXJDeWNsZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyTnVtZXJpYyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtKTsKLXN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSk7Ci1z
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
U2NyaXB0KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJSZWdpb24pOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50
bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhcik7CitzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJDb2xsYXRpb24pOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYyk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lz
dGVtKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJMYW5ndWFnZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24pOwogCiB9CiAKQEAgLTU4LDE2
ICs1OCwxNiBAQCBjb25zdCBDbGFzc0luZm8gSW50bExvY2FsZVByb3RvdHlwZTo6c19pCiAgIG1h
eGltaXplICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNYXhpbWl6ZSAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMAogICBtaW5pbWl6ZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5
cGVGdW5jTWluaW1pemUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAgdG9TdHJpbmcg
ICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3RyaW5nICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAwCi0gIGJhc2VOYW1lICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckJhc2VOYW1lICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgY2FsZW5kYXIgICAgICAgICBJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIgICAgICAgICBEb250RW51bXxBY2Nlc3Nv
cgotICBjYXNlRmlyc3QgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3Qg
ICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIGNvbGxhdGlvbiAgICAgICAgSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckNvbGxhdGlvbiAgICAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgaG91ckN5
Y2xlICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlICAgICAgICBEb250
RW51bXxBY2Nlc3NvcgotICBudW1lcmljICAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0
ZXJOdW1lcmljICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIG51bWJlcmluZ1N5c3RlbSAg
SW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSAgRG9udEVudW18QWNjZXNz
b3IKLSAgbGFuZ3VhZ2UgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2Ug
ICAgICAgICBEb250RW51bXxBY2Nlc3NvcgotICBzY3JpcHQgICAgICAgICAgIEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJTY3JpcHQgICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIHJlZ2lv
biAgICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbiAgICAgICAgICAgRG9u
dEVudW18QWNjZXNzb3IKKyAgYmFzZU5hbWUgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyQmFzZU5hbWUgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBj
YWxlbmRhciAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciAgICAgICAg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGNhc2VGaXJzdCAgICAgICAgSW50
bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCAgICAgICAgRG9udEVudW18UmVhZE9ubHl8
Q3VzdG9tQWNjZXNzb3IKKyAgY29sbGF0aW9uICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyQ29sbGF0aW9uICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBo
b3VyQ3ljbGUgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUgICAgICAg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG51bWVyaWMgICAgICAgICAgSW50
bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8
Q3VzdG9tQWNjZXNzb3IKKyAgbnVtYmVyaW5nU3lzdGVtICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyTnVtYmVyaW5nU3lzdGVtICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBs
YW5ndWFnZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSAgICAgICAg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIHNjcmlwdCAgICAgICAgICAgSW50
bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8
Q3VzdG9tQWNjZXNzb3IKKyAgcmVnaW9uICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyUmVnaW9uICAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogQGVu
ZAogKi8KIApAQCAtMTQyLDEyICsxNDIsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKElu
dGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwu
TG9jYWxlLnByb3RvdHlwZS5iYXNlTmFtZQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2Fs
ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5
bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmJhc2VOYW1lIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAK
QEAgLTE1NiwxMiArMTU2LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxl
UHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5w
cm90b3R5cGUuY2FsZW5kYXIKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2Fz
dDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
IWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0xNzAs
MTIgKzE3MCwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBl
LmNhc2VGaXJzdAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJDYXNlRmlyc3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlw
ZUdldHRlckNhc2VGaXJzdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50
bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2Nh
bGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FzZUZpcnN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTE4NCwxMiAr
MTg0LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAog
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuY29s
bGF0aW9uCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckNvbGxhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyQ29sbGF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9j
YWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb24gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMTk4LDEyICsxOTgs
MTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5ob3VyQ3lj
bGUKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91
ckN5Y2xlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJI
b3VyQ3ljbGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1
dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5M
b2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0yMTIsMTIgKzIxMiwxMiBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWVyaWMKLUpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYywg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYywg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxl
ID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90
b3R5cGUubnVtZXJpYyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0yMjUsMTIgKzIyNSwxMiBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbQotSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0
ZW0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJl
cmluZ1N5c3RlbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
YXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2Fs
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRs
LkxvY2FsZS5wcm90b3R5cGUubnVtYmVyaW5nU3lzdGVtIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTIzOSwxMiAr
MjM5LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAog
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubGFu
Z3VhZ2UKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
TGFuZ3VhZ2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckxhbmd1YWdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBh
dXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxl
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
TG9jYWxlLnByb3RvdHlwZS5sYW5ndWFnZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0yNTMsMTIgKzI1MywxMiBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLnNjcmlwdAotSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJTY3JpcHQsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0g
anNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5
cGUuc2NyaXB0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXpl
ZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTI2NywxMiArMjY3LDEyIEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUucmVnaW9uCi1KU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PElu
dGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxl
ID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5yZWdpb24gY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9z
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4MDI0NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1z
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKElu
dGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0KTsKQEAgLTQ5LDcgKzQ5LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cAogCiAvKiBTb3VyY2UgZm9yIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBudW1iZXJGb3JtYXRQcm90b3R5cGVUYWJsZQot
ICBmb3JtYXQgICAgICAgICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQg
ICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICBmb3JtYXQgICAgICAgICAgIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgogICBmb3JtYXRUb1BhcnRzICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jRm9ybWF0VG9QYXJ0cyAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgIHJlc29sdmVkT3B0aW9u
cyAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERvbnRFbnVt
fEZ1bmN0aW9uIDAKIEBlbmQKQEAgLTEwOCwxNCArMTA4LDE0IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihJbnRsTnVtYmVyRm9ybWEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJl
ckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKIH0KIAotSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTEuMy4zIElu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAx
LiBMZXQgbmYgYmUgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0LgotICAgIGF1dG8qIG5mID0gSW50
bE51bWJlckZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbmYgPSBJbnRsTnVtYmVyRm9ybWF0Ojp1bndy
YXBGb3JPbGRGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoVU5MSUtF
TFkoIW5mKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1i
ZXJGb3JtYXQiX3MpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODAyNDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgc2V0RmxvYXQ2NCAg
ICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NCAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldEZsb2F0NjQKICAgc2V0QmlnSW50NjQgICAgICAg
ICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0QmlnSW50NjQgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAgICAgICAyCiAgIHNldEJpZ1VpbnQ2NCAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEJp
Z1VpbnQ2NCAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBidWZmZXIgICAgICAg
ICAgICAgICAgZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlciAgICAgICAgICAgIERvbnRFbnVtfEFj
Y2Vzc29yICAgICAgIDAKLSAgYnl0ZUxlbmd0aCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0
ZXJCeXRlTGVuZ3RoICAgICAgICBEb250RW51bXxBY2Nlc3NvciAgICAgICAwCi0gIGJ5dGVPZmZz
ZXQgICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCAgICAgICAgRG9udEVu
dW18QWNjZXNzb3IgICAgICAgMAorICBidWZmZXIgICAgICAgICAgICAgICAgZGF0YVZpZXdQcm90
b0dldHRlckJ1ZmZlciAgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29y
CisgIGJ5dGVMZW5ndGggICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCAg
ICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgYnl0ZU9mZnNldCAgICAg
ICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0ICAgICAgICBEb250RW51bXxSZWFk
T25seXxDdXN0b21BY2Nlc3NvcgogQGVuZAogKi8KIApAQCAtODMsOSArODMsOSBAQCBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmllCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0Z1bmNTZXRCaWdJbnQ2NCk7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvRnVuY1NldEJpZ1VpbnQ2NCk7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnVm
ZmVyKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9HZXR0
ZXJCeXRlTGVuZ3RoKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3
UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQpOwogCiB9CiAKQEAg
LTIyMywyNCArMjIzLDI0IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3Qq
IGcKIAogSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0JFR0lOKCJtaXNzaW5nLXByb3RvdHlwZXMiKQog
Ci1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlciwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNE
eW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5i
dWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHZpZXctPnBvc3NpYmx5U2hh
cmVkSlNCdWZmZXIoZ2xvYmFsT2JqZWN0KSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0
YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNEYXRhVmlldyogdmll
dyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ5dGVMZW5ndGggZXhwZWN0
cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKICAgICBpZiAodmlldy0+aXNEZXRh
Y2hlZCgpKQpAQCAtMjQ5LDEyICsyNDksMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRh
dGFWaWV3UHJvdG9HZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlldy0+
bGVuZ3RoKCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9H
ZXR0ZXJCeXRlT2Zmc2V0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0
ZXJCeXRlT2Zmc2V0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0
PEpTRGF0YVZpZXcqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICgh
dmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5ieXRlT2Zmc2V0IGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEg
RGF0YVZpZXcgb2JqZWN0Iik7CiAgICAgaWYgKHZpZXctPmlzRGV0YWNoZWQoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDI4MDI0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzkwLDkgKzc5MCw2IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3co
SlNHbG9iYWxPYmoKICAgICAgICAgICAgICAgICBoYXNQcm9wZXJ0eSA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlcyA9IGVudHJ5LT52YWx1ZS0+YXR0cmlidXRlcygpOwogCi0gICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFmdGVyIHdyaXRhYmxlIGFjY2Vzc29y
cyBhcmUgaW50cm9kdWNlZCB0byBzdGF0aWMgaGFzaCB0YWJsZXMuCi0gICAgICAgICAgICAgICAg
aWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpCi0gICAgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5OwogICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhZnRlciB3ZSBzdG9wIGRlZmF1bHRp
bmcgdG8gQ3VzdG9tVmFsdWUgaW4gc3RhdGljIGhhc2ggdGFibGVzLgogICAgICAgICAgICAgICAg
IGlmICghKGF0dHJpYnV0ZXMgJiAoUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3Bl
cnR5T3JDb25zdGFudCkpKQogICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9IFByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZTsKQEAgLTgyMSw3ICs4MTgsNyBAQCBib29sIEpTT2Jq
ZWN0OjpwdXRJbmxpbmVTbG93KEpTR2xvYmFsT2JqCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTM0NwogICAgICAgICAgICAgICAg
IHNsb3Quc2V0Q3VzdG9tQWNjZXNzb3Iob2JqLCBjdXN0b21TZXR0ZXIpOwogICAgICAgICAgICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBjdXN0b21TZXR0ZXIoZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUoc2xvdC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29k
ZSh2YWx1ZSksIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgY3VzdG9tU2V0dGVyKG9i
ai0+Z2xvYmFsT2JqZWN0KHZtKSwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3QudGhpc1ZhbHVlKCkpLCBK
U1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWUpIHsKQEAgLTgzMCw3ICs4MjcsNyBAQCBib29s
IEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEpTR2xvYmFsT2JqCiAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgb25seSBiZSBjYWNoaW5nIHRoZXNlIGlmIHdlJ3JlIG5vdCBh
biB1bmNhY2hlYWJsZSBkaWN0aW9uYXJ5OgogICAgICAgICAgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzQ3CiAgICAgICAgICAgICAgICAg
ICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUob2JqLCBjdXN0b21TZXR0ZXIpOwotICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGN1c3RvbVNldHRlcihnbG9iYWxPYmpl
Y3QsIEpTVmFsdWU6OmVuY29kZShvYmopLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0
eU5hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBj
dXN0b21TZXR0ZXIob2JqLT5nbG9iYWxPYmplY3Qodm0pLCBKU1ZhbHVlOjplbmNvZGUob2JqKSwg
SlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmICghaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIG9iaikpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gQXZvaWQgUHV0TW9kZVB1dCBiZWNhdXNlIGl0IGZhaWxz
IGZvciBub24tZXh0ZW5zaWJsZSBzdHJ1Y3R1cmVzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCShyZXZpc2lvbiAyODAyNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxMSArMzMsMTIgQEAgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmZ1bmN0aW9uR2V0
dGVyKEpTRwogICAgIHJldHVybiBtX2RhdGEuZ2V0dGVyLmdldHRlclNldHRlci0+Y2FsbEdldHRl
cihnbG9iYWxPYmplY3QsIG1fdGhpc1ZhbHVlKTsKIH0KIAotSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6
OmN1c3RvbUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKSBjb25zdAorSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmN1c3RvbUdldHRlcihW
TSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1f
c2xvdEJhc2UpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX3Nsb3RCYXNl
LT5nbG9iYWxPYmplY3Qodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gbV9hdHRyaWJ1dGVz
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yID8gbV90aGlzVmFsdWUgOiBKU1Zh
bHVlKHNsb3RCYXNlKCkpOwogICAgIGlmIChhdXRvIGRvbUF0dHJpYnV0ZSA9IHRoaXMtPmRvbUF0
dHJpYnV0ZSgpKSB7Ci0gICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAg
ICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHModm0sIGRvbUF0dHJpYnV0ZS0+Y2xhc3NJbmZvKSkg
ewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
ICAgICAgICAgcmV0dXJuIHRocm93RE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGRvbUF0dHJpYnV0ZS0+Y2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHJldmlz
aW9uIDI4MDI0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGN1c3RvbUdldHRl
cihKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYWx1ZSBjdXN0b21HZXR0ZXIoVk0mLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAg
ICAgdW5pb24gewogICAgICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZTsKQEAgLTQwNSw3ICs0MDUs
NyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90OjpnZXRWCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLnZhbHVlKTsKICAgICBpZiAobV9wcm9wZXJ0eVR5
cGUgPT0gVHlwZUdldHRlcikKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uR2V0dGVyKGdsb2JhbE9i
amVjdCk7Ci0gICAgcmV0dXJuIGN1c3RvbUdldHRlcihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgcmV0dXJuIGN1c3RvbUdldHRlcihnZXRWTShnbG9iYWxPYmplY3QpLCBwcm9wZXJ0
eU5hbWUpOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90OjpnZXRWYWx1
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUpIGNv
bnN0CkBAIC00MTUsNyArNDE1LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIFByb3BlcnR5U2xv
dDo6Z2V0VgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS52YWx1ZSk7CiAg
ICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVHZXR0ZXIpCiAgICAgICAgIHJldHVybiBmdW5j
dGlvbkdldHRlcihnbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBjdXN0b21HZXR0ZXIoZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4g
Y3VzdG9tR2V0dGVyKGdldFZNKGdsb2JhbE9iamVjdCksIElkZW50aWZpZXI6OmZyb20odm0sIHBy
b3BlcnR5TmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjgwMjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9HZXR0ZXJEZXNj
cmlwdGlvbik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihzeW1ib2xQcm90b0dl
dHRlckRlc2NyaXB0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHN5bWJv
bFByb3RvRnVuY1RvU3RyaW5nKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHN5
bWJvbFByb3RvRnVuY1ZhbHVlT2YpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIGNvbnN0IENsYXNzSW5m
byBTeW1ib2xQcm90b3R5cGU6OnNfaW5mbyAKIAogLyogU291cmNlIGZvciBTeW1ib2xQcm90b3R5
cGUubHV0LmgKIEBiZWdpbiBzeW1ib2xQcm90b3R5cGVUYWJsZQotICBkZXNjcmlwdGlvbiAgICAg
ICBzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uICAgIERvbnRFbnVtfEFjY2Vzc29yIDAKKyAg
ZGVzY3JpcHRpb24gICAgICAgc3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbiAgICBEb250RW51
bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogICB0b1N0cmluZyAgICAgICAgICBzeW1ib2xQcm90
b0Z1bmNUb1N0cmluZyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAgdmFsdWVPZiAgICAg
ICAgICAgc3ltYm9sUHJvdG9GdW5jVmFsdWVPZiAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAw
CiBAZW5kCkBAIC04NywxMiArODcsMTIgQEAgaW5saW5lIFN5bWJvbCogdHJ5RXh0cmFjdFN5bWJv
bChWTSYgdm0sIAogICAgIHJldHVybiBhc1N5bWJvbChqc0Nhc3Q8U3ltYm9sT2JqZWN0Kj4odGhp
c09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHN5
bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3lt
Ym9sKHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFzeW1ib2wpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN5bWJv
bERlc2NyaXB0aW9uVHlwZUVycm9yKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyODAyNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MDMsNyArMTYwMyw5IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGN1c3RvbUcKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGN1c3RvbUdldEFj
Y2Vzc29yR2xvYmFsT2JqZWN0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGN1
c3RvbUdldFZhbHVlR2xvYmFsT2JqZWN0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKGN1c3RvbVNldEFjY2Vzc29yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KGN1c3RvbVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKGN1c3RvbVNldFZhbHVlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKGN1c3RvbUZ1bmN0aW9uU2V0dGVyKTsKIAogSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGN1c3RvbUdldEFjY2Vzc29yLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCkBAIC0xNjQ1LDYgKzE2NDcsMjIgQEAgSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldEFjY2VzcwogICAgIHJldHVybiB0cnVlOwogfQogCitK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0QWNjZXNzb3JHbG9iYWxPYmplY3QsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIERvbGxhclZNQXNzZXJ0U2Nv
cGUgYXNzZXJ0U2NvcGU7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIGlmICgh
dmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmpl
Y3QpOworICAgIG9iamVjdC0+cHV0KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicmVzdWx0IiksIGdsb2JhbE9iamVjdCwgc2xvdCk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldFZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgc2xvdFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgRG9sbGFy
Vk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAgLTE2NjMsNiArMTY4MSwyNCBAQCBKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0VmFsdWUsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRWYWx1ZUdsb2JhbE9iamVjdCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHNsb3RWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworCisgICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1ZTo6ZGVjb2RlKHNsb3RWYWx1ZSkuaW5oZXJp
dHM8SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyPihnbG9iYWxPYmplY3QtPnZtKCkpKTsKKworICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBpZiAo
IXZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2Jq
ZWN0KTsKKyAgICBvYmplY3QtPnB1dChvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInJlc3VsdCIpLCBnbG9iYWxPYmplY3QsIHNsb3QpOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjdXN0b21GdW5jdGlvblNl
dHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAgLTE2OTAsOSArMTcyNiwxMyBAQCB2b2lkIEpTVGVz
dEN1c3RvbUdldHRlclNldHRlcjo6ZmluaXNoQ3JlCiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21BY2Nlc3NvciIpLAogICAg
ICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3IsIGN1
c3RvbVNldEFjY2Vzc29yKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvcikpOwogICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiKSwKLSAgICAg
ICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldFZhbHVlR2xvYmFsT2Jq
ZWN0LCBudWxscHRyKSwgMCk7CisgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCBjdXN0b21HZXRWYWx1ZUdsb2JhbE9iamVjdCwgY3VzdG9tU2V0VmFsdWVHbG9iYWxPYmplY3Qp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlKSk7
CiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJjdXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCIpLAotICAgICAgICBDdXN0b21HZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3JHbG9iYWxPYmplY3QsIG51bGxwdHIp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IpOworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9t
R2V0QWNjZXNzb3JHbG9iYWxPYmplY3QsIGN1c3RvbVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0KSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcikp
OworICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY3VzdG9tVmFsdWVOb1NldHRlciIpLAorICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6
OmNyZWF0ZSh2bSwgY3VzdG9tR2V0VmFsdWUsIG51bGxwdHIpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlKSk7CisgICAgcHV0RGlyZWN0Q3VzdG9t
QWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21BY2Nlc3NvclJl
YWRPbmx5IiksCisgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21H
ZXRBY2Nlc3NvciwgbnVsbHB0ciksIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAKICAgICBwdXREaXJlY3RDdXN0b21BY2Nl
c3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUZ1bmN0aW9uIiksCiAg
ICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3Nvciwg
Y3VzdG9tRnVuY3Rpb25TZXR0ZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjgwMjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAKICNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b0Z1bmNFeHBvcnRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHdl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b0dldHRlckV4cG9ydHMpOwogfQogCiAjaW5jbHVkZSAiV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5sdXQuaCIKQEAgLTQ2LDcgKzQ2LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90bwogCiAvKiBTb3VyY2UgZm9yIFdlYkFz
c2VtYmx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmgKICBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJB
c3NlbWJseUluc3RhbmNlCi0gZXhwb3J0cyB3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhw
b3J0cyBBY2Nlc3NvciAwCisgIGV4cG9ydHMgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvR2V0dGVy
RXhwb3J0cyBSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogIEBlbmQKICAqLwogCkBAIC02MiwxMiAr
NjIsMTIgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseUluc3RhbgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG9GdW5jRXhwb3J0cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJs
eUluc3RhbmNlUHJvdG9HZXR0ZXJFeHBvcnRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBn
ZXRJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsgCisg
ICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IGdldEluc3RhbmNlKGdsb2JhbE9i
amVjdCwgdm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZS0+bW9kdWxlUmVjb3JkKCktPmV4cG9ydHNPYmpl
Y3QoKSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNZW1vcnlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjgwMjQ3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBK
U0Mgewogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vcnlQ
cm90b0Z1bmNHcm93KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9HZXR0ZXJCdWZmZXIpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNUeXBlKTsKIH0KIApA
QCAtNTMsNyArNTMsNyBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5
CiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oCiBAYmVnaW4g
cHJvdG90eXBlVGFibGVXZWJBc3NlbWJseU1lbW9yeQogIGdyb3cgICB3ZWJBc3NlbWJseU1lbW9y
eVByb3RvRnVuY0dyb3cgICBGdW5jdGlvbiAxCi0gYnVmZmVyIHdlYkFzc2VtYmx5TWVtb3J5UHJv
dG9GdW5jQnVmZmVyIEFjY2Vzc29yIDAKKyBidWZmZXIgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0dl
dHRlckJ1ZmZlciBSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogIHR5cGUgICB3ZWJBc3NlbWJseU1l
bW9yeVByb3RvRnVuY1R5cGUgICBGdW5jdGlvbiAwCiBAZW5kCiAqLwpAQCAtODgsMTIgKzg4LDEy
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW8KICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdC5wYWdlQ291bnQoKSkpOwogfQogCi1KU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlNZW1vcnlQcm90b0dldHRlckJ1ZmZlciwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFz
c2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoZ2xvYmFsT2JqZWN0LCB2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7IAorICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdl
dE1lbW9yeShnbG9iYWxPYmplY3QsIHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7IAog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG1lbW9yeS0+YnVmZmVyKGdsb2Jh
bE9iamVjdCkpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODAy
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHdlYkFzc2VtYmx5VGFibGVQcm90b0dldHRlckxlbmd0
aCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJv
dG9GdW5jR3Jvdyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJs
eVRhYmxlUHJvdG9GdW5jR2V0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdl
YkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQpOwpAQCAtNTIsNyArNTIsNyBAQCBjb25zdCBDbGFz
c0luZm8gV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwCiAKIC8qIFNvdXJjZSBmb3IgV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZS5sdXQuaAogIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5
VGFibGUKLSBsZW5ndGggd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCBBY2Nlc3NvciAw
CisgbGVuZ3RoIHdlYkFzc2VtYmx5VGFibGVQcm90b0dldHRlckxlbmd0aCBSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgogIGdyb3cgICB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdyAgIEZ1bmN0
aW9uIDEKICBnZXQgICAgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldCAgICBGdW5jdGlvbiAx
CiAgc2V0ICAgIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQgICAgRnVuY3Rpb24gMgpAQCAt
NzIsMTIgKzcyLDEyIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlUYWJsZSoK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNz
ZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3Nl
bWJseVRhYmxlUHJvdG9HZXR0ZXJMZW5ndGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxl
KGdsb2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTV2ViQXNz
ZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShnbG9iYWxPYmplY3QsIHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRh
YmxlLT5sZW5ndGgoKSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgwMjQ3KQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAK
KzIwMjEtMDctMjMgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisg
ICAgICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRoIHRoZWlyIGhv
bGRlcidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2ku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyBjcm9zcy1yZWFsbSB5ZXQgc2FtZS1vcmlnaW4g
V2ViSURMIGF0dHJpYnV0ZXMgdG8gdGhyb3cgZXJyb3JzIGluIHJlYWxtIG9mCisgICAgICAgIHRo
ZWlyIGFjY2Vzc29yLCB3aGlsZSBlbnN1cmluZyB0aGF0IGB3aW5kb3cubG9jYXRpb25gIGFuZCBg
bG9jYXRpb24uaHJlZmAgc2V0dGVycyBkb24ndCBsZWFrCisgICAgICAgIGNyb3NzLW9yaWdpbiBP
YmplY3QucHJvdG90eXBlIHZpYSB0aHJvd24gZXJyb3IuCisKKyAgICAgICAgU2luY2UgTG9jYXRp
b24gc2V0dGVycyByZWxpZWQgb24gbGV4aWNhbCBnbG9iYWwgb2JqZWN0IHRvIHBhc3Mgb3V0Z29p
bmcgYGRvY3VtZW50LnJlZmVycmVyYCwKKyAgICAgICAgdGhleSB3ZXJlIHVwZGF0ZWQgdG8gdXNl
IEluY3VtYmVudFdpbmRvdyBhcyBwZXIgc3BlYyBbMV0uIGNhbGxlckdsb2JhbE9iamVjdCgpIHdh
cyByZXdvcmtlZAorICAgICAgICB0byBza2lwIG5hdGl2ZSAvIGJ1aWx0LWluIGNhbGxlcnMgYW5k
IHJlbHkgb24gVk1FbnRyeVNjb3BlIHRvIGFjY29tb2RhdGUgdG9wLWxldmVsIDxzY3JpcHQ+Cisg
ICAgICAgIGNvZGUgbmF2aWdhdGluZyB2aWEgTG9jYXRpb24gc2V0dGVyLCBtYWtpbmcgdGhlIGhl
bHBlciBtb3JlIHZlcnNhdGlsZS4KKworICAgICAgICBnbG9iYWxPYmplY3RPZkNsb3Nlc3RDb2Rl
QmxvY2soKSBmaXhlZCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uIGluc3RhbmNlcyBhbmQgTG9jYXRp
b24ncworICAgICAgICBhc3NpZ24oKSAvIHJlcGxhY2UoKSBtZXRob2RzIHRvIHBhc3MgY29ycmVj
dCByZWZlcnJlci4KKworICAgICAgICBBbHNvLCB0aGlzIGNoYW5nZSBmaXhlcyBzdGF0aWMgYXR0
cmlidXRlcyBsaWtlIGBQZXJmb3JtYW5jZU9ic2VydmVyLnN1cHBvcnRlZEVudHJ5VHlwZXNgCisg
ICAgICAgIHRvIHJldHVybiB3cmFwcGVycyBvZiB0aGVpciByZWFsbSBpbnN0ZWFkIG9mIGxleGlj
YWwuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L2hpc3RvcnkuaHRtbCNsb2NhdGlvbi1vYmplY3QtbmF2aWdhdGUgKHN0ZXAgMikKKworICAgICAg
ICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlw
dC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5o
dG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwK
KyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93
c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2Nh
dGlvbi1ocmVmLWNyb3NzLXJlYWxtLXNldC5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5
VHlwZXMtY3Jvc3MtcmVhbG0tYWNjZXNzLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxlckdsb2JhbE9iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aW5jdW1iZW50RE9NV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246
OnB1dCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChHZW5lcmF0ZU5hbWVkR2V0dGVyTGFtYmRhKToKKyAgICAgICAgKEdlbmVyYXRlQ2Fs
bFdpdGhVc2luZ1JlZmVyZW5jZXMpOgorICAgICAgICAoR2VuZXJhdGVDYWxsV2l0aCk6CisgICAg
ICAgIEVuc3VyZSBJbmN1bWJlbnRXaW5kb3cgY29tZXMgYmVmb3JlIEZpcnN0V2luZG93LgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBSZW1vdmUgYXR0
cmlidXRlcyB0aGF0IHJlbGllZCBvbiBDYWxsRnJhbWUgc2luY2UgY3VzdG9tIGdldHRlcnMgZG9u
J3QgaGF2ZSBpdC4KKworICAgICAgICAqIHBhZ2UvTG9jYXRpb24uaWRsOgorICAgICAgICBSZW1v
dmUgW0xlZ2FjeVVuZm9yZ2VhYmxlXSBmcm9tIGFuY2VzdG9yT3JpZ2lucyBiZWNhdXNlIGl0J3Mg
c2V0IG9uIHRoZSBpbnRlcmZhY2UuCisKIDIwMjEtMDctMjMgIEFkaXR5YSBLZWVydGhpICA8YWtl
ZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gUmVwYWludGluZyBhcnRpZmFjdHMg
d2hlbiBtb3ZpbmcgaW5wdXQgdHlwZT1yYW5nZSBzbGlkZXIgdGh1bWIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9u
IDI4MDI0NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQwLDQ4ICs1NDAsNiBAQCBKU0M6OkpTT2JqZWN0KiBK
U0RPTUdsb2JhbE9iamVjdDo6bW9kdWxlCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3Ry
dWN0dXJlKCkpOwogfQogCi1KU0RPTUdsb2JhbE9iamVjdCYgY2FsbGVyR2xvYmFsT2JqZWN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkK
LXsKLSAgICBjbGFzcyBHZXRDYWxsZXJHbG9iYWxPYmplY3RGdW5jdG9yIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIEdldENhbGxlckdsb2JhbE9iamVjdEZ1bmN0b3IoKSA9IGRlZmF1bHQ7Ci0KLSAg
ICAgICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0
b3IpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9oYXNTa2lwcGVkRmlyc3RG
cmFtZSkgewotICAgICAgICAgICAgICAgIG1faGFzU2tpcHBlZEZpcnN0RnJhbWUgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAoYXV0byogY29kZUJsb2NrID0gdmlzaXRvci0+Y29kZUJs
b2NrKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHZp
c2l0b3ItPmNhbGxlZSgpLnJhd1B0cigpKTsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ2Fs
bGVlIGlzIG5vdCBhbiBvYmplY3QgaWYgdGhlIGNhbGxlciBpcyBXZWIgQXNzZW1ibHkuCi0gICAg
ICAgICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHRvIGRvIGhlcmUuIFdlIGNhbiBwcm9iYWJs
eSBnZXQgdGhlIGdsb2JhbCBvYmplY3QKLSAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSB0b3At
bW9zdCBXYXNtIEluc3RhbmNlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY1NzIxCi0gICAgICAgICAgICAgICAgaWYgKHZpc2l0b3ItPmNhbGxlZSgpLmlzQ2VsbCgp
ICYmIHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgpLT5pc09iamVjdCgpKQotICAgICAgICAgICAg
ICAgICAgICBtX2dsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHZpc2l0b3ItPmNhbGxl
ZSgpLmFzQ2VsbCgpKS0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBtdXRhYmxlIGJvb2wgbV9oYXNTa2lwcGVkRmlyc3RG
cmFtZSB7IGZhbHNlIH07Ci0gICAgICAgIG11dGFibGUgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFs
T2JqZWN0IHsgbnVsbHB0ciB9OwotICAgIH07Ci0KLSAgICBHZXRDYWxsZXJHbG9iYWxPYmplY3RG
dW5jdG9yIGl0ZXI7Ci0gICAgY2FsbEZyYW1lLml0ZXJhdGUobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLCBpdGVyKTsKLSAgICBpZiAoaXRlci5nbG9iYWxPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihpdGVyLmdsb2JhbE9iamVjdCgpKTsKLQotICAg
IC8vIElmIHdlIGNhbm5vdCBmaW5kIEpTR2xvYmFsT2JqZWN0IGluIGNhbGxlciBmcmFtZXMsIHdl
IGp1c3QgcmV0dXJuIHRoZSBjdXJyZW50IGxleGljYWxHbG9iYWxPYmplY3QuCi0gICAgcmV0dXJu
ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci19Ci0K
IEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgaWYgKGlzPERv
Y3VtZW50Pihjb250ZXh0KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjgwMjQ3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDgg
KzE0Miw2IEBAIHByaXZhdGU6CiAgICAgSlNDOjpXZWFrR0NNYXA8Q3Jvc3NPcmlnaW5NYXBLZXks
IEpTQzo6R2V0dGVyU2V0dGVyPiBtX2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVyTWFwOwogfTsKIAot
V0VCQ09SRV9FWFBPUlQgSlNET01HbG9iYWxPYmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpDYWxsRnJhbWUmKTsKLQogSlNET01HbG9iYWxPYmplY3Qq
IHRvSlNET01HbG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIERPTVdyYXBwZXJX
b3JsZCYpOwogCiB0ZW1wbGF0ZTxjbGFzcyBKU0NsYXNzPgpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAyODAyNDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODIsOSArMjgyLDE5IEBAIEpTRE9NV2luZG93KiB0b0pTRE9NV2luZG93KEZy
YW1lJiBmcmFtZSwKICAgICByZXR1cm4gZnJhbWUuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxk
KTsKIH0KIAotRE9NV2luZG93JiBpbmN1bWJlbnRET01XaW5kb3coSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQorRE9NV2luZG93JiBpbmN1
bWJlbnRET01XaW5kb3coSlNHbG9iYWxPYmplY3QmIGZhbGxiYWNrR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUmIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXNKU0RPTVdpbmRvdygmY2FsbGVyR2xv
YmFsT2JqZWN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSkpLT53cmFwcGVkKCk7Cisg
ICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IENhbGxGcmFtZTo6Z2xvYmFsT2JqZWN0T2ZDbG9z
ZXN0Q29kZUJsb2NrKGZhbGxiYWNrR2xvYmFsT2JqZWN0LnZtKCksICZjYWxsRnJhbWUpKQorICAg
ICAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhnbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7CisgICAg
cmV0dXJuIGFzSlNET01XaW5kb3coJmZhbGxiYWNrR2xvYmFsT2JqZWN0KS0+d3JhcHBlZCgpOwor
fQorCitET01XaW5kb3cmIGluY3VtYmVudERPTVdpbmRvdyhKU0dsb2JhbE9iamVjdCYgZmFsbGJh
Y2tHbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZmFsbGJhY2tHbG9iYWxPYmplY3Qudm0o
KTsKKyAgICBpZiAoYXV0byogZ2xvYmFsT2JqZWN0ID0gQ2FsbEZyYW1lOjpnbG9iYWxPYmplY3RP
ZkNsb3Nlc3RDb2RlQmxvY2sodm0sIHZtLnRvcENhbGxGcmFtZSkpCisgICAgICAgIHJldHVybiBh
c0pTRE9NV2luZG93KGdsb2JhbE9iamVjdCktPndyYXBwZWQoKTsKKyAgICByZXR1cm4gYXNKU0RP
TVdpbmRvdygmZmFsbGJhY2tHbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7CiB9CiAKIERPTVdpbmRv
dyYgYWN0aXZlRE9NV2luZG93KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgJKHJl
dmlzaW9uIDI4MDI0NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDcgQEAgaW5saW5lIEpTRE9NV2lu
ZG93KiB0b0pTRE9NV2luZG93KEZyYW1lKgogLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZvciBh
biAiYXV0aG9yIGZ1bmN0aW9uIG9yIHNjcmlwdCB0aGF0IG9yaWdpbmFsbHkgc2NoZWR1bGVkIHRo
ZSBjdXJyZW50bHktcnVubmluZyBjYWxsYmFjay4iCiAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MTI+LgogRE9NV2luZG93JiBpbmN1bWJlbnRET01X
aW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6Q2FsbEZyYW1lJik7CitET01XaW5kb3cm
IGluY3VtYmVudERPTVdpbmRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAKIERPTVdpbmRvdyYg
YWN0aXZlRE9NV2luZG93KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKIERPTVdpbmRvdyYgZmlyc3RE
T01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMjgwMjQ3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjMsMTAgKzI2MywxNyBAQCBib29sIEpTRE9NV2luZG93OjpwdXQoSlND
ZWxsKiBjZWxsLCBKU0dsCiAKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2lu
ZG93Kj4oY2VsbCk7CiAKLSAgICBpZiAocHJvcGVydHlOYW1lICE9IHN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmxvY2F0aW9uUHVibGlj
TmFtZSgpKSB7CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKKyAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLCBlcnJvck1lc3NhZ2UpKSB7CiAgICAgICAgIC8vIFdlIG9u
bHkgYWxsb3cgc2V0dGluZyAibG9jYXRpb24iIGF0dHJpYnV0ZSBjcm9zcy1vcmlnaW4uCi0gICAg
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVy
cm9yKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKS5sb2NhdGlvblB1YmxpY05hbWUoKSkgeworICAgICAgICAgICAgYXV0byogc2V0dGVy
ID0gc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSktPnByb3Bl
cnR5UHV0dGVyKCk7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBz
ZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3QudGhpc1ZhbHVl
KCkpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgdGhyb3dTZWN1cml0eUVycm9yKCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAogICAgIGlmIChwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkgJiYgIWFsbG93
c0xlZ2FjeUV4cGFuZG9JbmRleGVkUHJvcGVydGllcygpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDI4MDI0NykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsMTcgKzExMSwyNiBAQCBib29sIEpTTG9jYXRpb246OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kCiBib29sIEpTTG9jYXRpb246OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKIHsKICAg
ICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
TG9jYXRpb24qPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CiAKICAgICAvLyBBbHdheXMgYWxsb3cgYXNzaWduaW5nIHRvIHRoZSB3aG9s
ZSBsb2NhdGlvbi4KICAgICAvLyBIb3dldmVyLCBhbGxvd2luZyBhc3NpZ25pbmcgb2YgcGllY2Vz
IG1pZ2h0IGluYWR2ZXJ0ZW50bHkgZGlzY2xvc2UgcGFydHMgb2YgdGhlIG9yaWdpbmFsIGxvY2F0
aW9uLgogICAgIC8vIFNvIGZhbGwgdGhyb3VnaCB0byB0aGUgYWNjZXNzIGNoZWNrIGZvciB0aG9z
ZS4KLSAgICBpZiAocHJvcGVydHlOYW1lICE9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmhyZWZQdWJsaWNOYW1lKCkpIHsKLSAgICAg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3cobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLndpbmRvdygpLCBUaHJvd1Nl
Y3VyaXR5RXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmluZyBlcnJv
ck1lc3NhZ2U7CisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS53aW5k
b3coKSwgZXJyb3JNZXNzYWdlKSkgeworICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmhy
ZWZQdWJsaWNOYW1lKCkpIHsKKyAgICAgICAgICAgIGF1dG8qIHNldHRlciA9IHNfaW5mby5zdGF0
aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpLT5wcm9wZXJ0eVB1dHRlcigpOwor
ICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICAgICAgc2V0dGVyKGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZShwdXRQcm9wZXJ0eVNsb3QudGhpc1ZhbHVlKCkp
LCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgdGhyb3dTZWN1cml0eUVycm9yKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAorICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gSlNPYmplY3Q6OnB1
dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBw
dXRQcm9wZXJ0eVNsb3QpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjgwMjQ3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcg
Y29weSkKQEAgLTg1Myw3ICs4NTMsNyBAQCBzdWIgR2VuZXJhdGVOYW1lZEdldHRlckxhbWJkYQog
ewogICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRuYW1lZEdl
dHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyRnVuY3Rpb25OYW1lLCAkSURMVHlwZSkgPSBAXzsK
ICAgICAKLSAgICBteSBAYXJndW1lbnRzID0gR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNl
cygkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwg
JG91dHB1dEFycmF5LCAic3RkOjpudWxsb3B0IiwgInRoaXNPYmplY3QiLCAiICAgICAgICAiKTsK
KyAgICBteSBAYXJndW1lbnRzID0gR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkbmFt
ZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwgJG91dHB1
dEFycmF5LCAic3RkOjpudWxsb3B0IiwgInRoaXNPYmplY3QiLCAiIiwgIiAgICAgICAgIik7CiAg
ICAgcHVzaChAYXJndW1lbnRzLCAicHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFt
ZSkiKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIGdldHRlckZ1bmN0b3Ig
PSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8JHtJRExUeXBlfSwgJHtj
bGFzc05hbWV9PihbXSAoJHtjbGFzc05hbWV9JiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7XG4iKTsKQEAgLTU4ODgsMTAgKzU4ODgsOSBA
QCBzdWIgR2VuZXJhdGVHZXRDYWxsRGF0YQogCiBzdWIgR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVm
ZXJlbmNlcwogewotICAgIG15ICgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVl
LCAkdGhpc1JlZmVyZW5jZSwgJGluZGVudCkgPSBAXzsKKyAgICBteSAoJGNhbGxXaXRoLCAkb3V0
cHV0QXJyYXksICRyZXR1cm5WYWx1ZSwgJHRoaXNSZWZlcmVuY2UsICRjYWxsRnJhbWVSZWZlcmVu
Y2UsICRpbmRlbnQpID0gQF87CiAKLSAgICBteSAkY2FsbEZyYW1lUG9pbnRlciA9ICJjYWxsRnJh
bWUiOwotICAgIG15ICRjYWxsRnJhbWVSZWZlcmVuY2UgPSAiKmNhbGxGcmFtZSI7CisgICAgbXkg
JGNhbGxGcmFtZVBvaW50ZXIgPSAkY2FsbEZyYW1lUmVmZXJlbmNlICYmICImJGNhbGxGcmFtZVJl
ZmVyZW5jZSI7CiAgICAgbXkgJGdsb2JhbE9iamVjdCA9ICJqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkiOwogCiAgICAgcmV0dXJuIEdlbmVyYXRlQ2FsbFdp
dGgoJGNhbGxXaXRoLCAkb3V0cHV0QXJyYXksICRyZXR1cm5WYWx1ZSwgJHJldHVyblZhbHVlLCAk
Y2FsbEZyYW1lUG9pbnRlciwgJGNhbGxGcmFtZVJlZmVyZW5jZSwgJGdsb2JhbE9iamVjdCwgJGds
b2JhbE9iamVjdCwgJHRoaXNSZWZlcmVuY2UsICRpbmRlbnQpOwpAQCAtNTk3MSwxNSArNTk3MCwx
NSBAQCBzdWIgR2VuZXJhdGVDYWxsV2l0aAogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNE
T01XaW5kb3dCYXNlLmgiKTsKICAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiYWN0aXZlRE9N
V2luZG93KCokZ2xvYmFsT2JqZWN0KSIpOwogICAgIH0KLSAgICBpZiAoJGNvZGVHZW5lcmF0b3It
PkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGNhbGxXaXRoLCAiRmlyc3RXaW5kb3ciKSkgewor
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdp
dGgsICJJbmN1bWJlbnRXaW5kb3ciKSkgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRE9N
V2luZG93LmgiKTsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NV2luZG93QmFzZS5o
Iik7Ci0gICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgImZpcnN0RE9NV2luZG93KCokZ2xvYmFs
T2JqZWN0KSIpOworICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3MsICJpbmN1bWJlbnRET01XaW5k
b3coKiRnbG9iYWxPYmplY3QiIC4gKCRjYWxsRnJhbWVSZWZlcmVuY2UgPyAiLCAiIC4gJGNhbGxG
cmFtZVJlZmVyZW5jZSA6ICIiKSAuICIpIik7CiAgICAgfQotICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJJbmN1bWJlbnRXaW5kb3ci
KSkgeworICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygk
Y2FsbFdpdGgsICJGaXJzdFdpbmRvdyIpKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJE
T01XaW5kb3cuaCIpOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01XaW5kb3dCYXNl
LmgiKTsKLSAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiaW5jdW1iZW50RE9NV2luZG93KCok
Z2xvYmFsT2JqZWN0LCAkY2FsbEZyYW1lUmVmZXJlbmNlKSIpOworICAgICAgICBwdXNoKEBjYWxs
V2l0aEFyZ3MsICJmaXJzdERPTVdpbmRvdygqJGdsb2JhbE9iamVjdCkiKTsKICAgICB9CiAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwg
IlJ1bnRpbWVGbGFncyIpKSB7CiAgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgIiR7Z2xvYmFs
T2JqZWN0fS0+cnVudGltZUZsYWdzKCkiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHJldmlzaW9uIDI4MDI0NykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjAwLDkgKzIwMCw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJr
aW5kYS1sb3cKIAogICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIGF0dHJpYnV0ZSBsb25nIHdp
dGhFeGVjU3RhdGVBdHRyaWJ1dGU7CiAgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgU2V0dGVy
Q2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgbG9uZyB3aXRoQ2Fs
bFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gYXR0cmlidXRlIFRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGU7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmRXhlY1N0
YXRlXSBhdHRyaWJ1dGUgVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNT
dGF0ZUF0dHJpYnV0ZTsKLSAgICBbQ2FsbFdpdGg9ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0ICAm
ICBFeGVjU3RhdGUgIF0gYXR0cmlidXRlIFRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlOworICAgIFtTZXR0ZXJDYWxsV2l0aD1J
bmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBET01TdHJpbmcgd2l0aFNldHRl
ckNhbGxXaXRoQXR0cmlidXRlOwogCiAgICAgLy8gT3B0aW9uYWwgcGFyYW1ldGVycy4KICAgICB1
bmRlZmluZWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQXJnKG9wdGlvbmFsIGxvbmcgb3B0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyODAyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2NSwx
MiArMTc2NSw4IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE8KIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aXRoRXhlY1N0YXRl
QXR0cmlidXRlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial93
aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSk7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdp
dGhBdHRyaWJ1dGUpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T2Jq
X3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKTsKLXN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGUpOwotc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGUpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpf
d2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTVGVzdE9ial93aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOwogI2lmIEVO
QUJMRShDb25kaXRpb24xKQogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
T2JqX2NvbmRpdGlvbmFsQXR0cjEpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNUZXN0T2JqX2NvbmRpdGlvbmFsQXR0cjEpOwpAQCAtMjEzMCw5ICsyMTI2LDcgQEAgc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgIm9ud2Via2l0Zm9v
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpfb253ZWJraXRmb28pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfb253ZWJraXRmb28pIH0gfSwKICAgICB7
ICJ3aXRoRXhlY1N0YXRlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfd2l0aEV4ZWNTdGF0ZUF0dHJpYnV0ZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdE9ial93aXRoRXhlY1N0YXRlQXR0cmlidXRlKSB9IH0sCiAgICAgeyAid2l0aENhbGxX
aXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoQ2FsbFdpdGhBbmRTZXR0
ZXJDYWxsV2l0aEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial93aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxs
V2l0aEF0dHJpYnV0ZSkgfSB9LAotICAgIHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpIH0gfSwKLSAgICB7ICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3dp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2Jq
X3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlKSB9IH0sCi0g
ICAgeyAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRo
U3BhY2VzQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
RXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSkgfSB9LAorICAgIHsgIndpdGhTZXR0ZXJDYWxs
V2l0aEF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dE9ial93aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkKICAgICB7ICJjb25kaXRpb25hbEF0dHIxIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdE9ial9jb25kaXRpb25hbEF0dHIxKSB9IH0sCiAjZWxzZQpAQCAtNDI3MCwxMTUgKzQy
NjQsMzUgQEAgSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aQogICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial93aXRoQ2FsbFdp
dGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0
aGlzT2JqZWN0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ial93aXRoU2V0dGVyQ2Fs
bFdpdGhBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdE9iaiYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PigmbGV4aWNhbEdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIWNvbnRleHQpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoKmNvbnRleHQpKSkpOwotfQotCi1KU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ial93aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVz
dE9iaj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0
cmlidXRlVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVzdE9iamVjdCIs
ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIsICJUZXN0T2JqIik7IH0pOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGF1dG8qIGNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0
aW9uSWZOZWNlc3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKLSAg
ICAgICAgcmV0dXJuIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUo
KmNvbnRleHQsICpuYXRpdmVWYWx1ZSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFBy
b3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgYXR0cmlidXRlTmFtZSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpf
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGVHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVjdCkK
LXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQot
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xv
YmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRFeGVjU3RhdGVBdHRyaWJ1dGUoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFtZSwgKmNvbnRleHQpKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwud2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlKCkpKSk7CiB9
CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmli
dXRlTmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3dpdGhTZXR0ZXJD
YWxsV2l0aEF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKIHsK
LSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpfd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGF0dHJpYnV0ZU5hbWUpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0
PGpzVGVzdE9ial93aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0
dHJpYnV0ZU5hbWUpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX3dpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxs
V2l0aEF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0
T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRy
aWJ1dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlIiwgIlRlc3RP
YmoiKTsgfSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0g
ICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xv
YmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJS0VMWSgh
Y29udGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnZva2VGdW5jdG9yUHJvcGFn
YXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewotICAgICAgICByZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSgqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKLSAg
ICB9KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJp
YnV0ZU5hbWUpKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNl
dEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBh
dHRyaWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ial93aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9i
amVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNvbnRl
eHQpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCpqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCksICpjYWxsRnJhbWUsICpjb250ZXh0KSkpKTsK
LX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUgYXR0cmlidXRlTmFtZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RP
Ymo+OjpnZXQ8anNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRl
V2l0aFNwYWNlc0F0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
Ci17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3Rh
dGVXaXRoU3BhY2VzQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsgfSk7CisgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgYXV0byog
Y29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNl
cHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewot
ICAgICAgICByZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFtZSwgKmNvbnRleHQsICpuYXRpdmVWYWx1ZSk7Cisg
ICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShpbmN1bWJl
bnRET01XaW5kb3coKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSksIGZpcnN0RE9NV2luZG93KCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNh
bEdsb2JhbE9iamVjdCkpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRl
TmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJD
YWxsV2l0aEF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJv
cGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4
ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0
dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHJldmlzaW9uIDI4MDI0NykKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvTG9jYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MywyMiArNDMsMjIgQEAK
ICAgICBMZWdhY3lVbmZvcmdlYWJsZSwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2Ug
TG9jYXRpb24gewotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3cs
IERvTm90Q2hlY2tTZWN1cml0eU9uU2V0dGVyXSBzdHJpbmdpZmllciBhdHRyaWJ1dGUgVVNWU3Ry
aW5nIGhyZWY7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRv
dywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZT
dHJpbmcgaHJlZjsKIAotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIHVu
ZGVmaW5lZCBhc3NpZ24oVVNWU3RyaW5nIHVybCk7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwg
Q2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSB1bmRlZmluZWQgcmVwbGFjZShVU1ZT
dHJpbmcgdXJsKTsKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93XSB1bmRlZmluZWQgcmVsb2Fk
KCk7CisgICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gdW5kZWZpbmVk
IGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93JkZp
cnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHldIHVuZGVmaW5lZCByZXBsYWNlKFVTVlN0cmlu
ZyB1cmwpOworICAgIFtDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3ddIHVuZGVmaW5lZCByZWxvYWQo
KTsKIAogICAgIC8vIFVSSSBkZWNvbXBvc2l0aW9uIGF0dHJpYnV0ZXMKLSAgICBbU2V0dGVyQ2Fs
bFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHByb3Rv
Y29sOwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJp
YnV0ZSBVU1ZTdHJpbmcgaG9zdDsKLSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZp
cnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhvc3RuYW1lOwotICAgIFtTZXR0ZXJDYWxs
V2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcG9ydDsK
LSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUg
VVNWU3RyaW5nIHBhdGhuYW1lOwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmly
c3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc2VhcmNoOwotICAgIFtTZXR0ZXJDYWxsV2l0
aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaGFzaDsKKyAg
ICBbU2V0dGVyQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUg
VVNWU3RyaW5nIHByb3RvY29sOworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cm
Rmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaG9zdDsKKyAgICBbU2V0dGVyQ2FsbFdp
dGg9SW5jdW1iZW50V2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhvc3Ru
YW1lOworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0
dHJpYnV0ZSBVU1ZTdHJpbmcgcG9ydDsKKyAgICBbU2V0dGVyQ2FsbFdpdGg9SW5jdW1iZW50V2lu
ZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHBhdGhuYW1lOworICAgIFtTZXR0
ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJp
bmcgc2VhcmNoOworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5k
b3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaGFzaDsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBV
U1ZTdHJpbmcgb3JpZ2luOwogCi0gICAgW0xlZ2FjeVVuZm9yZ2VhYmxlLCBTYW1lT2JqZWN0LCBD
YWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGFuY2VzdG9y
T3JpZ2luczsKKyAgICBbU2FtZU9iamVjdCwgQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nTGlzdCBhbmNlc3Rvck9yaWdpbnM7CiB9OwpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjgwMjQ3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMjEtMDctMjMgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21h
aWwuY29tPgorCisgICAgICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3
aXRoIHRoZWlyIGhvbGRlcidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1
c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmpl
Y3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxPYmplY3RF
bGVtZW50L29iamVjdC1hcy1mcmFtZS5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxPYmpl
Y3RFbGVtZW50L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTE9iamVj
dEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1m
cm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMv
YXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0y
Lmh0bWw6CisgICAgICAgIFRoZXNlIHRlc3RzIHVzZWQgdG8gcGFzcyBhcyBpcywgcHJvYmFibHks
IGR1ZSB0byBjb21iaW5hdGlvbiBvZiBvbGQgKGluY29ycmVjdCkgYmVoYXZpb3IgYW5kCisgICAg
ICAgIHNvbWUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBydW4td2Via2l0LXRlc3RzLiBUaGV5
IGZhaWwgb24gTWluaUJyb3dzZXIgLyBDaHJvbWUgLyBGaXJlZm94CisgICAgICAgIHVubGVzcyBt
b2RpZmllZCBub3QgdG8gdXNlIGRhdGE6Ly8gcHJvdG9jb2wsIHdoaWNoIGlzIG5vdCBzeXN0ZW0g
dW5kZXIgdGVzdC4KKworICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24tZXhw
ZWN0ZWQudHh0OgorICAgICAgICBSZXZlcnQgdGhlIGNoYW5nZXMgbWFkZSBpbiByMTc0OTk2LiBM
b2NhdGlvbjo6YXNzaWduKCkgbm93IHVzZXMgY29ycmVjdCAoaW5jdW1iZW50KSBXaW5kb3cKKyAg
ICAgICAgdG8gc2V0IG91dGdvaW5nIHJlZmVycmVyIGFuZCBwZXJmb3JtIHNlY3VyaXR5IGNoZWNr
cywgYWxpZ25pbmcgV2ViS2l0IHdpdGggQ2hyb21lIC8gRmlyZWZveC4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhy
ZWYtZ29wZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhyZWYtZ29wZC5odG1sOiBB
ZGRlZC4KKwogMjAyMS0wNy0yMyAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgog
CiAgICAgICAgIE1pZ3JhdGUgaU9TIDE1IGV4cGVjdGF0aW9ucyB0byBPcGVuU291cmNlIGFuZCBi
dW1wIHZlcnNpb24gbnVtYmVycwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVj
dEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyODAyNDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2Jq
ZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC01LDEwICs1LDEwIEBAIFBBU1Mgd2luZG93LmZyYW1lc1swXS5mcmFtZUVsZW1lbnQuY29udGUK
IFBBU1Mgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVsZW1lbnQubmFtZSBpcyAib2JqIgogUEFTUyB3
aW5kb3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250ZW50V2luZG93IGlzIHdpbmRvdy5mcmFt
ZXNbMV0uZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudC5kZWZhdWx0VmlldwogUEFTUyB3aW5k
b3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250ZW50V2luZG93LmRvY3VtZW50IGlzIHdpbmRv
dy5mcmFtZXNbMV0uZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudAotTG9hZGluZyAnZGF0YTp0
ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJhbWUnIGluIGlmcmFtZS4uLgotTG9hZGlu
ZyAnZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBvYmplY3QnIGluIG9iamVjdC4u
LgotUEFTUyB3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLnRvU3RyaW5nKCkgaXMgImRhdGE6dGV4
dC9odG1sLFVwZGF0ZWQgY29udGVudHMgb2YgaWZyYW1lIgotUEFTUyB3aW5kb3cuZnJhbWVzWzFd
LmxvY2F0aW9uLnRvU3RyaW5nKCkgaXMgImRhdGE6dGV4dC9odG1sLFVwZGF0ZWQgY29udGVudHMg
b2Ygb2JqZWN0IgorTG9hZGluZyAncmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbCcgaW4gaWZy
YW1lLi4uCitMb2FkaW5nICdyZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1sJyBpbiBvYmplY3Qu
Li4KK1BBU1Mgd2luZG93LmZyYW1lc1swXS5sb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCJyZXNvdXJj
ZXMvZHVtbXktZnJhbWUtMi5odG1sIikgaXMgdHJ1ZQorUEFTUyB3aW5kb3cuZnJhbWVzWzFdLmxv
Y2F0aW9uLmhyZWYuZW5kc1dpdGgoInJlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwiKSBpcyB0
cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFt
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVt
ZW50L29iamVjdC1hcy1mcmFtZS5odG1sCShyZXZpc2lvbiAyODAyNDcpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKIAoganNUZXN0SXNBc3luYyA9IHRydWU7CiAKLXZhciB1
cGRhdGVkRnJhbWVVUkwgPSAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJh
bWUiOwotdmFyIHVwZGF0ZWRPYmplY3RVUkwgPSAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250
ZW50cyBvZiBvYmplY3QiOwordmFyIHVwZGF0ZWRGcmFtZVVSTCA9ICJyZXNvdXJjZXMvZHVtbXkt
ZnJhbWUtMi5odG1sIjsKK3ZhciB1cGRhdGVkT2JqZWN0VVJMID0gInJlc291cmNlcy9kdW1teS1m
cmFtZS0xLmh0bWwiOwogCiBmdW5jdGlvbiBydW5UZXN0cygpCiB7CkBAIC0zNiw4ICszNiw4IEBA
IGZ1bmN0aW9uIGhhbmRsZUxvYWQoKQogICAgIGlmIChudW1Mb2FkcyA8IDIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHNob3VsZEJlKCJ3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLnRvU3RyaW5n
KCkiLCAnIicgKyB1cGRhdGVkRnJhbWVVUkwgKyAnIicpOwotICAgIHNob3VsZEJlKCJ3aW5kb3cu
ZnJhbWVzWzFdLmxvY2F0aW9uLnRvU3RyaW5nKCkiLCAnIicgKyB1cGRhdGVkT2JqZWN0VVJMICsg
JyInKTsKKyAgICBzaG91bGRCZVRydWUoYHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24uaHJlZi5l
bmRzV2l0aCgiJHt1cGRhdGVkRnJhbWVVUkx9IilgKTsKKyAgICBzaG91bGRCZVRydWUoYHdpbmRv
dy5mcmFtZXNbMV0ubG9jYXRpb24uaHJlZi5lbmRzV2l0aCgiJHt1cGRhdGVkT2JqZWN0VVJMfSIp
YCk7CiAKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KQEAgLTQ2LDggKzQ2LDggQEAgZnVuY3Rpb24g
aGFuZGxlTG9hZCgpCiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgogCi08aWZy
YW1lIG5hbWU9ImZyYW1lIiBzcmM9ImRhdGE6dGV4dC9odG1sLE9sZCBjb250ZW50cyBvZiBpZnJh
bWUiPjwvaWZyYW1lPgotPG9iamVjdCBuYW1lPSJvYmoiIHR5cGU9InRleHQvaHRtbCIgZGF0YT0i
ZGF0YTp0ZXh0L2h0bWwsT2xkIGNvbnRlbnRzIG9mIG9iamVjdCI+PC9vYmplY3Q+Cis8aWZyYW1l
IG5hbWU9ImZyYW1lIiBzcmM9InJlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwiPjwvaWZyYW1l
PgorPG9iamVjdCBuYW1lPSJvYmoiIHR5cGU9InRleHQvaHRtbCIgZGF0YT0icmVzb3VyY2VzL2R1
bW15LWZyYW1lLTIuaHRtbCI+PC9vYmplY3Q+CiAKIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFt
ZS0xLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVs
ZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUt
MS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorPCFET0NUWVBFIGh0bWw+CitP
bGQgY29udGVudHMgb2YgaWZyYW1lIC8gTmV3IGNvbnRlbnRzIG9mIG9iamVjdApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1l
LTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxl
bWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0y
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACis8IURPQ1RZUEUgaHRtbD4KK09s
ZCBjb250ZW50cyBvZiBvYmplY3QgLyBOZXcgY29udGVudHMgb2YgaWZyYW1lCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVs
ZXNzLWRvYy1jb250ZXh0LTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0
LTIuaHRtbAkocmV2aXNpb24gMjgwMjQ3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0
cmlidXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8aHRtbD4KIDxib2R5IG9ubG9hZD0idGVz
dCgpIj4KLTxpZnJhbWUgc3JjPSdkYXRhOnRleHQvaHRtbCw8YSBpZD0iYSIgaHJlZj0iJTIzIiBv
bmNsaWNrPSJkb2N1bWVudC53cml0ZSh3aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4m
YXBvczsgOiAmYXBvczs8cD5QQVNTPC9wPiZhcG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4n
PjwvaWZyYW1lPgorPGlmcmFtZSBzcmNkb2M9JzxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9
ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6
ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJh
bWU+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlz
dGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFj
dGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAkocmV2aXNpb24gMjgwMjQ3KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1m
cm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiA8aHRtbD4KIDxib2R5IG9ubG9hZD0idGVzdCgpIj4KLTxpZnJhbWUgc3JjPSdkYXRh
OnRleHQvaHRtbCw8YSBpZD0iYSIgaHJlZj0iJTIzIiBvbmNsaWNrPSJkb2N1bWVudC53cml0ZSh3
aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4mYXBvczsgOiAmYXBvczs8cD5QQVNTPC9w
PiZhcG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4nPjwvaWZyYW1lPgorPGlmcmFtZSBzcmNk
b2M9JzxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAh
PSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7
KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+CiA8c2NyaXB0PgogaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjgwMjQ3
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
LXBhcmVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw5IEBACi1UaGlz
IHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgd2l0aCB0aGUga2V5d29yZHMg
YWxsb3ctc2NyaXB0cyBhbmQgYWxsb3ctc2FtZS1vcmlnaW4gaXMgYWxsb3dlZCB0byBuYXZpZ2F0
ZSBhbiBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9u
IGF0dHJpYnV0ZS4KK0NPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0
byBpbml0aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFtZSB3aXRoIFVSTCAnc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sJy4gVGhlIGZyYW1lIGF0dGVtcHRpbmcgbmF2aWdhdGlv
biBpcyBzYW5kYm94ZWQsIGFuZCBpcyB0aGVyZWZvcmUgZGlzYWxsb3dlZCBmcm9tIG5hdmlnYXRp
bmcgaXRzIGFuY2VzdG9ycy4KKworQ09OU09MRSBNRVNTQUdFOiBTZWN1cml0eUVycm9yOiBUaGUg
b3BlcmF0aW9uIGlzIGluc2VjdXJlLgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94
ZWQgSUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBi
eSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS4KKworVGhpcyBpcyBkb25lIGJ5IGxv
YWRpbmcgdGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1lcywgYW5kIGEgc2luZ2xlIHNhbmRib3hlZCBv
bmUuIEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQg
b25lIHRvIG5vdCBiZSBvbmUgb2YgdGhlbS4KIAogVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1Mi
IG9uIHN1Y2Nlc3MuCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlz
aW9uIDI4MDI0NykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
bmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOSArMTMsOSBAQCBm
dW5jdGlvbiBjaGVja1Jlc3VsdHMoKQogewogICAgIHZhciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Rlc3RTdGF0dXMnKTsKIAotICAgIGlmIChzZWxmLm5hdmlnYXRlZC5s
b2NhdGlvbi5ocmVmLmluZGV4T2YoJ3BhcmVudC5odG1sJykgIT0gLTEpCi0gICAgICAgIHRlc3RT
dGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IHNhbmRib3hlZCBmcmFtZSBjb3VsZG5cJ3QgbmF2aWdh
dGUnOwotICAgIGVsc2UgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMSkKKyAgICBpZiAoc2VsZi5u
YXZpZ2F0ZWQubG9jYXRpb24uaHJlZi5pbmRleE9mKCdwYXJlbnQuaHRtbCcpID09IC0xKQorICAg
ICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1lIG5hdmln
YXRlZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQogICAgICAgICB0ZXN0
U3RhdHVzLmlubmVySFRNTCA9ICdQQVNTJzsKICAgICBlbHNlCiAgICAgICAgIHRlc3RTdGF0dXMu
aW5uZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Blcmx5JzsKQEAgLTI4
LDcgKzI4LDcgQEAgZnVuY3Rpb24gY291bnRGcmFtZSgpCiB7CiAgICAgKytuYXZpZ2F0ZWRGcmFt
ZXM7CiAKLSAgICBpZiAobmF2aWdhdGVkRnJhbWVzID09IDExKQorICAgIGlmIChuYXZpZ2F0ZWRG
cmFtZXMgPT0gMTApCiAgICAgICAgIGNoZWNrUmVzdWx0cygpOwogfQogCkBAIC0zNywxMCArMzcs
MTMgQEAgZnVuY3Rpb24gY291bnRGcmFtZSgpCiAKIDxib2R5PgogCi0gICAgPHA+VGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIHdpdGggdGhlIGtleXdvcmRzCi0gICAg
YWxsb3ctc2NyaXB0cyBhbmQgYWxsb3ctc2FtZS1vcmlnaW4gaXMgYWxsb3dlZCB0byBuYXZpZ2F0
ZSBhbiBhbmNlc3RvcgorICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVk
IElGcmFtZSBjYW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IKICAgICBpbiB0aGUgZnJhbWUgdHJl
ZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS48L3A+CiAKKyAgICA8cD5UaGlz
IGlzIGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5n
bGUKKyAgICBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQs
IGJ1dCB0aGUgc2FuZGJveGVkCisgICAgb25lIHRvIDxiPm5vdDwvYj4gYmUgb25lIG9mIHRoZW0u
PC9wPgorICAgIAogICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsg
b24gc3VjY2Vzcy48L3A+CiAKICAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1h
c3NpZ24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDI4MDI0NykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBACi1kb2N1bWVudC5yZWZlcnJlciA9
Citkb2N1bWVudC5yZWZlcnJlciA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFt
ZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKIApJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3It
bG9jYXRpb24taHJlZi1nb3BkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlv
bi1ocmVmLWdvcGQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhy
ZWYtZ29wZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACitkb2N1
bWVudC5yZWZlcnJlciA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1nb3BkLmh0bWwKKwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9j
YXRpb24taHJlZi1nb3BkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1nb3Bk
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1nb3BkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlv
biBsb2cobXNnKSB7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRpdik7Cit9
CisKK2Z1bmN0aW9uIGdvKCkgeworICAgIGNvbnN0IHsgc2V0IH0gPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGZyYW1lc1swXS5sb2NhdGlvbiwgImhyZWYiKTsKKyAgICBjb25zdCBz
ZXRCb3VuZFByb3h5ID0gbmV3IFByb3h5KHNldC5iaW5kKGZyYW1lc1swXS5mcmFtZXNbMF0ubG9j
YXRpb24pLCB7fSk7CisgICAgc2V0Qm91bmRQcm94eSgidGFyZ2V0LWZvci1sb2NhdGlvbi5odG1s
Iik7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZSkg
eworICAgIGxvZyhlLmRhdGEpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxpZnJhbWUgc3JjPSJyZXNvdXJj
ZXMvbWlkZGxlLWZyYW1lLWZvci1sb2NhdGlvbi5odG1sIj4KKzwvYm9keT4KKzwvaHRtbD4KKwpJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODAyNDcpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjggQEAKKzIwMjEtMDctMjMgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgorCisgICAgICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRo
IHRoZWlyIGhvbGRlcidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3Vr
ZSBTdXp1a2kuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3Jp
cHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURM
L2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jv
c3MtcmVhbG0uaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21h
c2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5n
L3N1cHBvcnQvY3JlYXRlLXJlYWxtLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9zdXBwb3J0L2R1bW15LWlmcmFtZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmln
aW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVm
LWNyb3NzLXJlYWxtLXNldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93aW5k
b3ctbG9jYXRpb24tYW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3MtcmVhbG0tc2V0Lmh0bWw6IEFkZGVk
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRp
bmcvZXZlbnRzL2NvbXBpbGUtZXZlbnQtaGFuZGxlci1zZXR0aW5ncy1vYmplY3RzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3Njcmlw
dGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1q
b2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJl
cXVlc3QtY3NzLWNyb3NzLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3Jt
LXJlYWRhYmxlLmh0bWw6CisgICAgICAgIEFsbCB0aGVzZSBhcmUgY29uZmlybWVkIHByb2dyZXNz
aW9ucy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGlu
ZS9zdXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9z
dXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy5odG1sOiBBZGRlZC4KKwogMjAy
MS0wNy0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFhIUi5zZW5kKERvY3VtZW50KSBzaG91bGQgcmVwbGFjZSBtaXNtYXRjaGVkIHN1cnJv
Z2F0ZXMgd2l0aCByZXBsYWNlbWVudCBjaGFyYWN0ZXIgYmVmb3JlIHNlbmRpbmcKSW5kZXg6IExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3Jp
cHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWlt
cGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2Vj
bWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3Mt
cmVhbG0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorCitQQVNT
IENyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBnZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9u
IGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNl
dHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorUEFTUyBDcm9z
cy1yZWFsbSBnbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBvbiBp
bmNvbXBhdGlibGUgb2JqZWN0CitGQUlMIENyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBnZXR0
ZXIgY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVq
ZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUaGUgV2luZG93Lm5hbWUgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRvdyIKK0ZBSUwgQ3Jvc3Mt
cmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNldHRlciBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCBw
cm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBl
RXJyb3I6IFRoZSBXaW5kb3cubG9jYXRpb24gc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5z
dGFuY2VzIG9mIFdpbmRvdyIKK1BBU1MgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIG9wZXJh
dGlvbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xv
YmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwv
ZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9z
cy1yZWFsbS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0
LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDk3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5Dcm9zcy1yZWFsbSBnZXR0ZXIgLyBzZXR0ZXIgLyBvcGVyYXRpb24gZG9lc24ndCB1c2Ug
bGV4aWNhbCBnbG9iYWwgb2JqZWN0IGlmIHx0aGlzfCB2YWx1ZSBpcyBpbmNvbXBhdGlibGUgb2Jq
ZWN0IC8gbnVsbCAvIHVuZGVmaW5lZDwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtZ2V0dGVyIj4KKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZu
LWF0dHJpYnV0ZS1zZXR0ZXIiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNkZm4tY3JlYXRlLW9wZXJhdGlvbi1mdW5jdGlvbiI+CisKKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJzdXBwb3J0L2NyZWF0ZS1yZWFsbS5qcyI+PC9zY3JpcHQ+CisKKzxib2R5PgorPHNjcmlw
dD4KK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNy
ZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG5vdFdpbmRvdyA9IE9iamVjdC5jcmVhdGUoT2JqZWN0
LmdldFByb3RvdHlwZU9mKG90aGVyKSk7CisKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5
cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKG90aGVyKS53aW5kb3c7IH0pOworICAgIGFz
c2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Iob3RoZXIsICJoaXN0b3J5IikuZ2V0LmNhbGwobm90V2luZG93KTsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5n
ZXQob3RoZXIsICJzY3JlZW4iLCBub3RXaW5kb3cpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkob3RoZXIsIHt9KS5vbmNsaWNrOyB9
KTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIHRocm93cyB3aGVuIGNh
bGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+
IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG5v
dFdpbmRvdyA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG90aGVyKSk7CisK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3Jl
YXRlKG90aGVyKS5uYW1lID0gImR1bW15IjsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhl
ci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvdGhl
ciwgInN0YXR1cyIpLnNldC5jYWxsKG5vdFdpbmRvdywgb3RoZXIuc3RhdHVzKTsgfSk7CisgICAg
Ly8gcGFyZW50IGlzIFtSZXBsYWNlYWJsZV0KKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5
cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChvdGhlciwgInBhcmVudCIsIHdpbmRvdywgbm90
V2luZG93KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+
IHsgbmV3IFByb3h5KG90aGVyLCB7fSkubG9jYXRpb24gPSBsb2NhdGlvbjsgfSk7Cit9LCAiQ3Jv
c3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5j
b21wYXRpYmxlIG9iamVjdCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29u
c3Qgb3RoZXIgPSBhd2FpdCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBub3RXaW5kb3cgPSBP
YmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvdGhlcikpOworCisgICAgYXNzZXJ0
X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShvdGhlciku
Zm9jdXMoKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+
IHsgb3RoZXIuY2xlYXJJbnRlcnZhbC5jYWxsKG5vdFdpbmRvdywgMCk7IH0pOworICAgIGFzc2Vy
dF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3QuYXBwbHkob3RoZXIu
Ymx1ciwgbm90V2luZG93LCBbXSk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlw
ZUVycm9yLCAoKSA9PiB7IG5ldyBQcm94eShvdGhlciwge30pLnJlbW92ZUV2ZW50TGlzdGVuZXIo
ImZvbyIsICgpID0+IHt9KTsgfSk7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIG9w
ZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2FpdCBjcmVhdGVS
ZWFsbSh0KTsKKyAgICBjb25zdCBvdGhlck5hbWVHZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG90aGVyLCAibmFtZSIpLmdldDsKKworICAgIGFzc2VydF9lcXVhbHMoUmVm
bGVjdC5nZXQob3RoZXIsICJzZWxmIiwgbnVsbCksIG90aGVyKTsKKyAgICBhc3NlcnRfZXF1YWxz
KFJlZmxlY3QuZ2V0KG90aGVyLCAiZG9jdW1lbnQiLCB1bmRlZmluZWQpLCBvdGhlci5kb2N1bWVu
dCk7CisgICAgYXNzZXJ0X2VxdWFscyhvdGhlck5hbWVHZXR0ZXIuY2FsbChudWxsKSwgImR1bW15
Iik7CisgICAgLy8gQW4gZW5naW5lIG1pZ2h0IGhhdmUgZGlmZmVyZW50IGNvZGUgcGF0aCBmb3Ig
Y2FsbGluZyBhIGZ1bmN0aW9uIGZyb20gb3V0ZXIgc2NvcGUgdG8gaW1wbGVtZW50IHN0ZXAgMS5i
LmlpaSBvZiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWV2YWx1YXRlY2FsbAorICAgIGFz
c2VydF9lcXVhbHMoKCgpID0+IG90aGVyTmFtZUdldHRlcigpKSgpLCAiZHVtbXkiKTsKK30sICJD
cm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZp
bmVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3
YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG90aGVyTG9jYXRpb25TZXR0ZXIgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90aGVyLCAibG9jYXRpb24iKS5zZXQ7CisgICAg
Y29uc3Qgb3RoZXJIcmVmID0gb3RoZXIubG9jYXRpb24uaHJlZjsKKyAgICBjb25zdCBuZXdTZWxm
ID0ge307CisKKyAgICAvLyBzZWxmIGlzIFtSZXBsYWNlYWJsZV0KKyAgICBhc3NlcnRfdHJ1ZShS
ZWZsZWN0LnNldChvdGhlciwgInNlbGYiLCBuZXdTZWxmLCBudWxsKSk7CisgICAgYXNzZXJ0X3Ry
dWUoUmVmbGVjdC5zZXQob3RoZXIsICJuYW1lIiwgIm5ld05hbWUiLCB1bmRlZmluZWQpKTsKKwor
ICAgIG90aGVyTG9jYXRpb25TZXR0ZXIuY2FsbChudWxsLCBgJHtvdGhlckhyZWZ9I2Zvb2ApOwor
ICAgIGFzc2VydF9lcXVhbHMob3RoZXIubG9jYXRpb24uaGFzaCwgIiNmb28iKTsKKyAgICAvLyBB
biBlbmdpbmUgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgY29kZSBwYXRoIGZvciBjYWxsaW5nIGEgZnVu
Y3Rpb24gZnJvbSBvdXRlciBzY29wZSB0byBpbXBsZW1lbnQgc3RlcCAxLmIuaWlpIG9mIGh0dHBz
Oi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZXZhbHVhdGVjYWxsCisgICAgKCgpID0+IHsgb3RoZXJM
b2NhdGlvblNldHRlcihgJHtvdGhlckhyZWZ9I2JhcmApOyB9KSgpOworICAgIGFzc2VydF9lcXVh
bHMob3RoZXIubG9jYXRpb24uaGFzaCwgIiNiYXIiKTsKKworICAgIC8vIENoZWNrIHRoZXNlIGFm
dGVyIGNhbGxpbmcgImxvY2F0aW9uIiBzZXR0ZXIgbWFrZSBzdXJlIG5vIG5hdmlnYXRpb24gaGFz
IG9jY3VycmVkCisgICAgYXNzZXJ0X2VxdWFscyhvdGhlci5zZWxmLCBuZXdTZWxmKTsKKyAgICBh
c3NlcnRfZXF1YWxzKG90aGVyLm5hbWUsICJuZXdOYW1lIik7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xv
YmFsIG9iamVjdCdzIHNldHRlciBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCIpOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2FpdCBjcmVhdGVSZWFs
bSh0KTsKKyAgICBjb25zdCBvdGhlckZvY3VzID0gb3RoZXIuZm9jdXM7CisgICAgY29uc3Qgb3Ro
ZXJEaXNwYXRjaEV2ZW50ID0gb3RoZXIuZGlzcGF0Y2hFdmVudDsKKyAgICAKKyAgICBhc3NlcnRf
ZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIGRvY3VtZW50LmJvZHkpOworICAgIC8vIEFu
IGVuZ2luZSBtaWdodCBoYXZlIGRpZmZlcmVudCBjb2RlIHBhdGggZm9yIGNhbGxpbmcgYSBmdW5j
dGlvbiBmcm9tIG91dGVyIHNjb3BlIHRvIGltcGxlbWVudCBzdGVwIDEuYi5paWkgb2YgaHR0cHM6
Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1ldmFsdWF0ZWNhbGwKKyAgICAoKCkgPT4geyBvdGhlckZv
Y3VzKCk7IH0pKCk7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hY3RpdmVFbGVtZW50LmNv
bnRlbnRXaW5kb3csIG90aGVyKTsKKworICAgIGxldCBjYXVnaHRFdmVudDsKKyAgICBvdGhlci5h
ZGRFdmVudExpc3RlbmVyLmNhbGwobnVsbCwgImZvbyIsIGV2ZW50ID0+IHsgY2F1Z2h0RXZlbnQg
PSBldmVudDsgfSk7CisgICAgY29uc3QgZGlzcGF0Y2hlZEV2ZW50ID0gbmV3IG90aGVyLkV2ZW50
KCJmb28iKTsKKyAgICBhc3NlcnRfdHJ1ZShvdGhlckRpc3BhdGNoRXZlbnQoZGlzcGF0Y2hlZEV2
ZW50KSk7CisgICAgYXNzZXJ0X2VxdWFscyhjYXVnaHRFdmVudCwgZGlzcGF0Y2hlZEV2ZW50KTsK
KworICAgIGNvbnN0IG1lc3NhZ2VQcm9taXNlID0gbmV3IEV2ZW50V2F0Y2hlcih0LCBvdGhlciwg
Im1lc3NhZ2UiKS53YWl0X2ZvcigibWVzc2FnZSIpOworICAgIG90aGVyLnBvc3RNZXNzYWdlLmNh
bGwobnVsbCwgImZvbyIpOworICAgIGFzc2VydF9lcXVhbHMoKGF3YWl0IG1lc3NhZ2VQcm9taXNl
KS5kYXRhLCAiZm9vIik7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIG9wZXJhdGlv
biBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCIpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJp
bmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVj
dGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVl
LWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAK
KworUEFTUyBDcm9zcy1yZWFsbSBnZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0
aWJsZSBvYmplY3QKK1BBU1MgQ3Jvc3MtcmVhbG0gc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBv
biBpbmNvbXBhdGlibGUgb2JqZWN0CitQQVNTIENyb3NzLXJlYWxtIG9wZXJhdGlvbiB0aHJvd3Mg
d2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorCkluZGV4OiBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
aW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1i
aW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2Vj
bWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5Dcm9zcy1yZWFsbSBnZXR0ZXIgLyBzZXR0ZXIgLyBvcGVyYXRp
b24gZG9lc24ndCB1c2UgbGV4aWNhbCBnbG9iYWwgb2JqZWN0IHRvIHRocm93IGFuIGVycm9yIGZv
ciBpbmNvbXBhdGlibGUgfHRoaXN8IHZhbHVlPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIi
PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRs
LyNkZm4tYXR0cmlidXRlLXNldHRlciI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8v
aGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1jcmVhdGUtb3BlcmF0aW9uLWZ1bmN0aW9uIj4K
KworPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InN1cHBvcnQvY3JlYXRlLXJlYWxtLmpzIj48L3NjcmlwdD4KKworPGJvZHk+Cis8
c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IG90aGVyID0gYXdh
aXQgY3JlYXRlUmVhbG0odCk7CisgICAgY29uc3Qgbm90RWxlbWVudCA9IE9iamVjdC5jcmVhdGUo
b3RoZXIuSFRNTEVsZW1lbnQucHJvdG90eXBlKTsKKworICAgIGFzc2VydF90aHJvd3NfanMob3Ro
ZXIuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5jcmVhdGUob3RoZXIuZG9jdW1lbnQpLmhlYWQ7
IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXIuSFRNTEVsZW1lbnQucHJvdG90eXBlLCAi
dGl0bGUiKS5nZXQuY2FsbChub3RFbGVtZW50KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhv
dGhlci5UeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5nZXQob3RoZXIuZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2IiksICJoaWRkZW4iLCBub3RFbGVtZW50KTsgfSk7CisgICAgYXNzZXJ0X3Ro
cm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5KG90aGVyLnRleHQsIHt9
KS5ub2RlVHlwZTsgfSk7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2V0dGVyIHRocm93cyB3aGVuIGNhbGxl
ZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
KyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG5vdEVs
ZW1lbnQgPSBPYmplY3QuY3JlYXRlKG90aGVyLkhUTUxFbGVtZW50LnByb3RvdHlwZSk7CisgICAg
Y29uc3Qgbm90VGV4dCA9IE9iamVjdC5jcmVhdGUob3RoZXIuVGV4dC5wcm90b3R5cGUpOworCisg
ICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0
ZShvdGhlci5lbGVtZW50KS5pbm5lckhUTUwgPSAiIjsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19q
cyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvdGhlci5IVE1MRWxlbWVudC5wcm90b3R5cGUsICJvbmNsaWNrIikuc2V0LmNhbGwobm90RWxl
bWVudCwgbnVsbCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAo
KSA9PiB7IFJlZmxlY3Quc2V0KG5ldyBvdGhlci5UZXh0KCJmb28iKSwgImRhdGEiLCAiZm9vIiwg
bm90VGV4dCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9
PiB7IG5ldyBQcm94eShvdGhlci5kb2N1bWVudCwge30pLnRpdGxlID0gIiI7IH0pOworfSwgIkNy
b3NzLXJlYWxtIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVj
dCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2Fp
dCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBub3REb2N1bWVudCA9IE9iamVjdC5jcmVhdGUo
b3RoZXIuSFRNTERvY3VtZW50LnByb3RvdHlwZSk7CisgICAgY29uc3Qgbm90VGV4dCA9IE9iamVj
dC5jcmVhdGUob3RoZXIuVGV4dC5wcm90b3R5cGUpOworCisgICAgYXNzZXJ0X3Rocm93c19qcyhv
dGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShvdGhlci5lbGVtZW50KS5jbGlj
aygpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBv
dGhlci5kb2N1bWVudC5xdWVyeVNlbGVjdG9yLmNhbGwobm90RG9jdW1lbnQsICIqIik7IH0pOwor
ICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3QuYXBw
bHkob3RoZXIudGV4dC5yZW1vdmUsIG5vdFRleHQsIFtdKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5KG90aGVyLmRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImEiKSwge30pLmFkZEV2ZW50TGlzdGVuZXIoImZvbyIsICgpID0+IHt9KTsg
fSk7Cit9LCAiQ3Jvc3MtcmVhbG0gb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNv
bXBhdGlibGUgb2JqZWN0Iik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9zdXBwb3J0
L2NyZWF0ZS1yZWFsbS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9jcmVh
dGUtcmVhbG0uanMJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1cHBvcnQvY3JlYXRl
LXJlYWxtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKyJ1c2Ugc3RyaWN0IjsK
KworZnVuY3Rpb24gY3JlYXRlUmVhbG0odCkgeworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHsKKyAgICAgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aWZyYW1lIik7CisgICAgICAgIHQuYWRkX2NsZWFudXAoKCkgPT4geyBpZnJhbWUucmVtb3ZlKCk7
IH0pOworICAgICAgICBpZnJhbWUub25sb2FkID0gKCkgPT4geyByZXNvbHZlKGlmcmFtZS5jb250
ZW50V2luZG93KTsgfTsKKyAgICAgICAgaWZyYW1lLm5hbWUgPSAiZHVtbXkiOworICAgICAgICBp
ZnJhbWUuc3JjID0gInN1cHBvcnQvZHVtbXktaWZyYW1lLmh0bWwiOworICAgICAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZChpZnJhbWUpOworICAgIH0pOworfQpJbmRleDogTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1
cHBvcnQvZHVtbXktaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1cHBv
cnQvZHVtbXktaWZyYW1lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1cHBv
cnQvZHVtbXktaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxib2R5PmZvbworPGJ1dHRvbiBp
ZD0iZWxlbWVudCI+PC9idXR0b24+Cis8c2NyaXB0PgorICAgIHdpbmRvdy50ZXh0ID0gZG9jdW1l
bnQuYm9keS5maXJzdENoaWxkOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdp
bi1vYmplY3RzL3dpbmRvdy1sb2NhdGlvbi1hbmQtbG9jYXRpb24taHJlZi1jcm9zcy1yZWFsbS1z
ZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVj
dHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVmLWNyb3NzLXJlYWxtLXNldC1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93
aW5kb3ctbG9jYXRpb24tYW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3MtcmVhbG0tc2V0LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACisKK1BBU1MgU2FtZS1vcmlnaW4g
d2luZG93LmxvY2F0aW9uIGdldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxt
IG9uIGludmFsaWQgfHRoaXN8IHZhbHVlCitQQVNTIFNhbWUtb3JpZ2luIGxvY2F0aW9uLmhyZWYg
Z2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gaW52YWxpZCB8dGhp
c3wgdmFsdWUKK1BBU1MgQ3Jvc3Mtb3JpZ2luIGxvY2F0aW9uLmhyZWYgZ2V0dGVyIHRocm93cyBT
ZWN1cml0eUVycm9yIGluIGxleGljYWwgcmVhbG0KK1BBU1MgU2FtZS1vcmlnaW4gd2luZG93Lmxv
Y2F0aW9uIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9uIGludmFs
aWQgfHRoaXN8IHZhbHVlCitQQVNTIFNhbWUtb3JpZ2luIGxvY2F0aW9uLmhyZWYgc2V0dGVyIHRo
cm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gaW52YWxpZCB8dGhpc3wgdmFsdWUK
K1BBU1MgQ3Jvc3Mtb3JpZ2luIHdpbmRvdy5sb2NhdGlvbiBzZXR0ZXIgdGhyb3dzIFR5cGVFcnJv
ciBpbiBsZXhpY2FsIHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVlCitQQVNTIENyb3NzLW9y
aWdpbiBsb2NhdGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGxleGljYWwgcmVh
bG0gb24gaW52YWxpZCB8dGhpc3wgdmFsdWUKK1BBU1MgU2FtZS1vcmlnaW4gd2luZG93LmxvY2F0
aW9uYCBzZXR0ZXIgdGhyb3dzIFR5cGVFcnJvciBpbiBob2xkZXIncyByZWFsbSBvbiBub24tY29l
cmNpYmxlIFVSTCBhcmd1bWVudAorUEFTUyBTYW1lLW9yaWdpbiBsb2NhdGlvbi5ocmVmIHNldHRl
ciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9uIG5vbi1jb2VyY2libGUgVVJM
IGFyZ3VtZW50CitQQVNTIENyb3NzLW9yaWdpbiB3aW5kb3cubG9jYXRpb24gc2V0dGVyIHRocm93
cyBUeXBlRXJyb3IgaW4gbGV4aWNhbCByZWFsbSBvbiBub24tY29lcmNpYmxlIFVSTCBhcmd1bWVu
dAorUEFTUyBDcm9zcy1vcmlnaW4gbG9jYXRpb24uaHJlZiBzZXR0ZXIgdGhyb3dzIFR5cGVFcnJv
ciBpbiBsZXhpY2FsIHJlYWxtIG9uIG5vbi1jb2VyY2libGUgVVJMIGFyZ3VtZW50CisKSW5kZXg6
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlv
bi1ocmVmLWNyb3NzLXJlYWxtLXNldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mt
b3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVmLWNyb3NzLXJl
YWxtLXNldC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVj
dHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVmLWNyb3NzLXJlYWxtLXNldC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Dcm9zcy1yZWFsbSBbW1NldF1dIHRvIHdpbmRvdy5s
b2NhdGlvbiBhbmQgbG9jYXRpb24uaHJlZiB0aHJvd3MgYW4gZXJyb3Igb2YgY29ycmVjdCByZWFs
bTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlLyN3aW5kb3ciPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczov
L2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNVbmZvcmdlYWJsZSI+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2NvbW1vbi9n
ZXQtaG9zdC1pbmZvLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citjb25zdCBV
UkxfU0FNRV9PUklHSU4gPSBnZXRfaG9zdF9pbmZvKCkuT1JJR0lOQUxfSE9TVDsKK2NvbnN0IFVS
TF9DUk9TU19PUklHSU4gPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1PVEVfT1JJR0lOOworY29u
c3QgVVJMX1ZBTElEID0gIiNmb28iOworY29uc3QgVVJMX0lOVkFMSUQgPSAiaHR0cDovLyMiOwor
Citjb25zdCB7IGdldDogbG9jYXRpb25HZXQsIHNldDogbG9jYXRpb25TZXQgfSA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAibG9jYXRpb24iKTsKK2NvbnN0IHsgZ2V0
OiBocmVmR2V0LCBzZXQ6IGhyZWZTZXQgfSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IobG9jYXRpb24sICJocmVmIik7CisKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAg
IGNvbnN0IHNhbWVPcmlnaW5XaW5kb3cgPSBhd2FpdCBtYWtlV2luZG93KHQsIFVSTF9TQU1FX09S
SUdJTik7CisgICAgYXNzZXJ0X3Rocm93c19qcyhzYW1lT3JpZ2luV2luZG93LlR5cGVFcnJvciwg
KCkgPT4geyBPYmplY3QuY3JlYXRlKHNhbWVPcmlnaW5XaW5kb3cpLmxvY2F0aW9uOyB9KTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5kb3cuVHlwZUVycm9yLCAoKSA9PiB7IFJl
ZmxlY3QuZ2V0KHNhbWVPcmlnaW5XaW5kb3csICJsb2NhdGlvbiIsIHt9KTsgfSk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgbG9jYXRpb25HZXQuY2FsbCh7fSk7IH0p
OworfSwgIlNhbWUtb3JpZ2luIHdpbmRvdy5sb2NhdGlvbiBnZXR0ZXIgdGhyb3dzIFR5cGVFcnJv
ciBpbiBob2xkZXIncyByZWFsbSBvbiBpbnZhbGlkIHx0aGlzfCB2YWx1ZSIpOworCitwcm9taXNl
X3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgc2FtZU9yaWdpbldpbmRvdyA9IGF3YWl0IG1h
a2VXaW5kb3codCwgVVJMX1NBTUVfT1JJR0lOKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVP
cmlnaW5XaW5kb3cuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5jcmVhdGUoc2FtZU9yaWdpbldp
bmRvdy5sb2NhdGlvbikuaHJlZjsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhzYW1lT3JpZ2lu
V2luZG93LlR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LmdldChzYW1lT3JpZ2luV2luZG93Lmxv
Y2F0aW9uLCAiaHJlZiIsIHt9KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
ICgpID0+IHsgaHJlZkdldCgpOyB9KTsKK30sICJTYW1lLW9yaWdpbiBsb2NhdGlvbi5ocmVmIGdl
dHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9uIGludmFsaWQgfHRoaXN8
IHZhbHVlIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBjcm9zc09y
aWdpbldpbmRvdyA9IGF3YWl0IG1ha2VXaW5kb3codCwgVVJMX0NST1NTX09SSUdJTik7CisgICAg
YXNzZXJ0X3Rocm93c19kb20oIlNFQ1VSSVRZX0VSUiIsICgpID0+IHsgY3Jvc3NPcmlnaW5XaW5k
b3cubG9jYXRpb24uaHJlZjsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIlNFQ1VSSVRZX0VS
UiIsICgpID0+IHsgaHJlZkdldC5jYWxsKGNyb3NzT3JpZ2luV2luZG93LmxvY2F0aW9uKTsgfSk7
CisgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNyb3Nz
T3JpZ2luV2luZG93LmxvY2F0aW9uLCAiaHJlZiIpLmdldCwgdW5kZWZpbmVkKTsKK30sICJDcm9z
cy1vcmlnaW4gbG9jYXRpb24uaHJlZiBnZXR0ZXIgdGhyb3dzIFNlY3VyaXR5RXJyb3IgaW4gbGV4
aWNhbCByZWFsbSIpOworCisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBz
YW1lT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfU0FNRV9PUklHSU4pOwor
ICAgIGFzc2VydF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRvdy5UeXBlRXJyb3IsICgpID0+IHsg
T2JqZWN0LmNyZWF0ZShzYW1lT3JpZ2luV2luZG93KS5sb2NhdGlvbiA9IFVSTF9WQUxJRDsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhzYW1lT3JpZ2luV2luZG93LlR5cGVFcnJvciwgKCkgPT4g
eyBSZWZsZWN0LnNldChzYW1lT3JpZ2luV2luZG93LCAibG9jYXRpb24iLCBVUkxfVkFMSUQsIHt9
KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgbG9jYXRpb25T
ZXQuY2FsbCgoKSA9PiB7fSwgVVJMX1ZBTElEKTsgfSk7Cit9LCAiU2FtZS1vcmlnaW4gd2luZG93
LmxvY2F0aW9uIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9uIGlu
dmFsaWQgfHRoaXN8IHZhbHVlIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBj
b25zdCBzYW1lT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfU0FNRV9PUklH
SU4pOworICAgIGFzc2VydF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRvdy5UeXBlRXJyb3IsICgp
ID0+IHsgT2JqZWN0LmNyZWF0ZShzYW1lT3JpZ2luV2luZG93LmxvY2F0aW9uKS5ocmVmID0gVVJM
X1ZBTElEOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5kb3cuVHlwZUVy
cm9yLCAoKSA9PiB7IFJlZmxlY3Quc2V0KHNhbWVPcmlnaW5XaW5kb3cubG9jYXRpb24sICJocmVm
IiwgVVJMX1ZBTElELCB7fSk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAo
KSA9PiB7IGhyZWZTZXQuY2FsbCh1bmRlZmluZWQsIFVSTF9WQUxJRCk7IH0pOworfSwgIlNhbWUt
b3JpZ2luIGxvY2F0aW9uLmhyZWYgc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3Mg
cmVhbG0gb24gaW52YWxpZCB8dGhpc3wgdmFsdWUiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQg
PT4geworICAgIGNvbnN0IGNyb3NzT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBV
UkxfQ1JPU1NfT1JJR0lOKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4g
eyBPYmplY3QuY3JlYXRlKGNyb3NzT3JpZ2luV2luZG93KS5sb2NhdGlvbiA9IFVSTF9WQUxJRDsg
fSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5zZXQo
Y3Jvc3NPcmlnaW5XaW5kb3csICJsb2NhdGlvbiIsIFVSTF9WQUxJRCwge30pOyB9KTsKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBsb2NhdGlvblNldC5jYWxsKFtdLCBV
UkxfVkFMSUQpOyB9KTsKK30sICJDcm9zcy1vcmlnaW4gd2luZG93LmxvY2F0aW9uIHNldHRlciB0
aHJvd3MgVHlwZUVycm9yIGluIGxleGljYWwgcmVhbG0gb24gaW52YWxpZCB8dGhpc3wgdmFsdWUi
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGNyb3NzT3JpZ2luV2lu
ZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfQ1JPU1NfT1JJR0lOKTsKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKGNyb3NzT3JpZ2luV2lu
ZG93LmxvY2F0aW9uKS5ocmVmID0gVVJMX1ZBTElEOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChjcm9zc09yaWdpbldpbmRvdy5sb2NhdGlv
biwgImhyZWYiLCBVUkxfVkFMSUQsIHt9KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IHsgaHJlZlNldC5jYWxsKG51bGwsIFVSTF9WQUxJRCk7IH0pOworfSwgIkNy
b3NzLW9yaWdpbiBsb2NhdGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGxleGlj
YWwgcmVhbG0gb24gaW52YWxpZCB8dGhpc3wgdmFsdWUiKTsKKworCitwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgICAgY29uc3Qgc2FtZU9yaWdpbldpbmRvdyA9IGF3YWl0IG1ha2VXaW5kb3co
dCwgVVJMX1NBTUVfT1JJR0lOKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5k
b3cuVHlwZUVycm9yLCAoKSA9PiB7IHNhbWVPcmlnaW5XaW5kb3cubG9jYXRpb24gPSBTeW1ib2wo
KTsgfSk7CisKKyAgICAvLyBUaGUgZXJyb3Igb3JpZ2luYXRlcyBpbiBzYW1lT3JpZ2luV2luZG93
LmxvY2F0aW9uLmhyZWYgc2V0dGVyLCBoZW5jZSBpdCdzIG5vdCBpbiByZWFsbSBvZiBsb2NhdGlv
blNldC4KKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5kb3cuVHlwZUVycm9yLCAo
KSA9PiB7IGxvY2F0aW9uU2V0LmNhbGwoc2FtZU9yaWdpbldpbmRvdywgU3ltYm9sKCkpOyB9KTsK
K30sICJTYW1lLW9yaWdpbiB3aW5kb3cubG9jYXRpb25gIHNldHRlciB0aHJvd3MgVHlwZUVycm9y
IGluIGhvbGRlcidzIHJlYWxtIG9uIG5vbi1jb2VyY2libGUgVVJMIGFyZ3VtZW50Iik7CisKK3By
b21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBzYW1lT3JpZ2luV2luZG93ID0gYXdh
aXQgbWFrZVdpbmRvdyh0LCBVUkxfU0FNRV9PUklHSU4pOworICAgIGFzc2VydF90aHJvd3NfanMo
c2FtZU9yaWdpbldpbmRvdy5UeXBlRXJyb3IsICgpID0+IHsgc2FtZU9yaWdpbldpbmRvdy5sb2Nh
dGlvbi5ocmVmID0gU3ltYm9sKCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCAoKSA9PiB7IGhyZWZTZXQuY2FsbChzYW1lT3JpZ2luV2luZG93LmxvY2F0aW9uLCBTeW1ib2wo
KSk7IH0pOworfSwgIlNhbWUtb3JpZ2luIGxvY2F0aW9uLmhyZWYgc2V0dGVyIHRocm93cyBUeXBl
RXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gbm9uLWNvZXJjaWJsZSBVUkwgYXJndW1lbnQiKTsK
KworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGNyb3NzT3JpZ2luV2luZG93
ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfQ1JPU1NfT1JJR0lOKTsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBjcm9zc09yaWdpbldpbmRvdy5sb2NhdGlvbiA9IFN5
bWJvbCgpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBsb2Nh
dGlvblNldC5jYWxsKGNyb3NzT3JpZ2luV2luZG93LCBTeW1ib2woKSk7IH0pOworfSwgIkNyb3Nz
LW9yaWdpbiB3aW5kb3cubG9jYXRpb24gc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gbGV4aWNh
bCByZWFsbSBvbiBub24tY29lcmNpYmxlIFVSTCBhcmd1bWVudCIpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgICAgY29uc3QgY3Jvc3NPcmlnaW5XaW5kb3cgPSBhd2FpdCBtYWtlV2lu
ZG93KHQsIFVSTF9DUk9TU19PUklHSU4pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCAoKSA9PiB7IGNyb3NzT3JpZ2luV2luZG93LmxvY2F0aW9uLmhyZWYgPSBTeW1ib2woKTsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgaHJlZlNldC5jYWxsKGNy
b3NzT3JpZ2luV2luZG93LmxvY2F0aW9uLCBTeW1ib2woKSk7IH0pOworfSwgIkNyb3NzLW9yaWdp
biBsb2NhdGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGxleGljYWwgcmVhbG0g
b24gbm9uLWNvZXJjaWJsZSBVUkwgYXJndW1lbnQiKTsKKworZnVuY3Rpb24gbWFrZVdpbmRvdyh0
LCBzcmMpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGNv
bnN0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IHsgaWZyYW1lLnJlbW92ZSgpOyB9KTsKKyAgICAgICAgaWZyYW1l
Lm9ubG9hZCA9ICgpID0+IHsgcmVzb2x2ZShpZnJhbWUuY29udGVudFdpbmRvdyk7IH07CisgICAg
ICAgIGlmcmFtZS5zcmMgPSBzcmM7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGlmcmFt
ZSk7CisgICAgfSk7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvY29t
cGlsZS1ldmVudC1oYW5kbGVyLXNldHRpbmdzLW9iamVjdHMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93
ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvY29tcGlsZS1ldmVudC1oYW5kbGVyLXNldHRpbmdz
LW9iamVjdHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyODAyNDcpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcv
ZXZlbnRzL2NvbXBpbGUtZXZlbnQtaGFuZGxlci1zZXR0aW5ncy1vYmplY3RzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIAogUEFTUyBUaGUgRnVuY3Rpb24gaW5z
dGFuY2UgbXVzdCBiZSBjcmVhdGVkIGluIHRoZSBSZWFsbSBvZiB0aGUgbm9kZSBkb2N1bWVudAog
RkFJTCBUaGUgZW50cnkgc2V0dGluZ3Mgb2JqZWN0IHdoaWxlIGV4ZWN1dGluZyB0aGUgY29tcGls
ZWQgY2FsbGJhY2sgdmlhIFdlYiBJREwncyBpbnZva2UgbXVzdCBiZSB0aGF0IG9mIHRoZSBub2Rl
IGRvY3VtZW50IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIvaHRtbC93ZWJhcHBhcGlzL3Njcmlw
dGluZy9ldmVudHMvcmVzb3VyY2VzL29wZW4td2luZG93Lmh0bWwiIGJ1dCBnb3QgIi9odG1sL3dl
YmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9vcGVuLXdpbmRvdy5odG1sIgotRkFJTCBUaGUgaW5j
dW1iZW50IHNldHRpbmdzIG9iamVjdCB3aGlsZSBleGVjdXRpbmcgdGhlIGNvbXBpbGVkIGNhbGxi
YWNrIHZpYSBXZWIgSURMJ3MgaW52b2tlIG11c3QgYmUgdGhhdCBvZiB0aGUgbm9kZSBkb2N1bWVu
dCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaWZyYW1lIiBidXQgZ290ICJwYXJlbnQgZnJhbWUi
CitQQVNTIFRoZSBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHdoaWxlIGV4ZWN1dGluZyB0aGUg
Y29tcGlsZWQgY2FsbGJhY2sgdmlhIFdlYiBJREwncyBpbnZva2UgbXVzdCBiZSB0aGF0IG9mIHRo
ZSBub2RlIGRvY3VtZW50CiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIv
aW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJvbWlzZS1qb2ItaW5j
dW1iZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2lu
Zy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Byb21p
c2Utam9iLWluY3VtYmVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI4MDI0NykKKysrIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3Nj
cmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlw
dC1qb2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMiwxMyArMiwxMyBAQAogCiBQQVNTIFNhbml0eSBjaGVjazogdGhpcyBhbGwgd29y
a3MgYXMgZXhwZWN0ZWQgd2l0aCBubyBwcm9taXNlcyBpbnZvbHZlZAogUEFTUyBGdWxmaWxsbWVu
dCBoYW5kbGVyIG9uIGZ1bGZpbGxlZCBwcm9taXNlCi1GQUlMIEZ1bGZpbGxtZW50IGhhbmRsZXIg
b24gZnVsZmlsbGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2Jq
ZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4MDAv
aHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24t
d2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWluY3Vt
YmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgt
dGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9jdXJyZW50L2N1cnJlbnQuaHRtbCIK
K0ZBSUwgRnVsZmlsbG1lbnQgaGFuZGxlciBvbiBmdWxmaWxsZWQgcHJvbWlzZSwgdXNpbmcgYmFj
a3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nl
c3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9y
ZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJo
dHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5n
LW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJvbWlz
ZS1qb2ItaW5jdW1iZW50Lmh0bWwiCiBQQVNTIFJlamVjdGlvbiBoYW5kbGVyIG9uIHJlamVjdGVk
IHByb21pc2UKLUZBSUwgUmVqZWN0aW9uIGhhbmRsZXIgb24gcmVqZWN0ZWQgcHJvbWlzZSwgdXNp
bmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5n
L3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1x
dWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQg
Z290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9j
ZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUv
cmVzb3VyY2VzL2N1cnJlbnQvY3VycmVudC5odG1sIgorRkFJTCBSZWplY3Rpb24gaGFuZGxlciBv
biByZWplY3RlZCBwcm9taXNlLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50IHNldHRpbmdzIG9iamVj
dCBzdGFjayBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0
bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdp
dGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJl
bnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dl
YmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRo
ZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQuaHRtbCIKIFBBU1Mg
RnVsZmlsbG1lbnQgaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tZnVsZmlsbGVkIHByb21pc2UKLUZB
SUwgRnVsZmlsbG1lbnQgaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tZnVsZmlsbGVkIHByb21pc2Us
IHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3Njcmlw
dGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1q
b2ItcXVldWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIg
YnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcv
cHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1
ZXVlL3Jlc291cmNlcy9jdXJyZW50L2N1cnJlbnQuaHRtbCIKK0ZBSUwgRnVsZmlsbG1lbnQgaGFu
ZGxlciBvbiBwZW5kaW5nLXRoZW4tZnVsZmlsbGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1
bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRw
Oi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1v
ZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2Vz
L3Byb21pc2Utam9iLWluY3VtYmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xv
Y2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0y
L2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Byb21pc2Utam9iLWlu
Y3VtYmVudC5odG1sIgogUEFTUyBSZWplY3Rpb24gaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tcmVq
ZWN0ZWQgcHJvbWlzZQotRkFJTCBSZWplY3Rpb24gaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tcmVq
ZWN0ZWQgcHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3Rh
Y2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dl
YmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRo
ZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWlu
Y3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBh
cGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2
YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL2N1cnJlbnQvY3VycmVudC5odG1sIgorRkFJTCBS
ZWplY3Rpb24gaGFuZGxlciBvbiBwZW5kaW5nLXRoZW4tcmVqZWN0ZWQgcHJvbWlzZSwgdXNpbmcg
YmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3By
b2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1
ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290
ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNz
aW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJv
bWlzZS1qb2ItaW5jdW1iZW50Lmh0bWwiCiBQQVNTIFRoZW5hYmxlIHJlc29sdXRpb24KLUZBSUwg
VGhlbmFibGUgcmVzb2x1dGlvbiwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmpl
Y3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9o
dG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13
aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1i
ZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93
ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10
aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL2N1cnJlbnQvY3VycmVudC5odG1sIgor
RkFJTCBUaGVuYWJsZSByZXNvbHV0aW9uLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50IHNldHRpbmdz
IG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4
ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0
aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9taXNlLWpvYi1p
bmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9o
dG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13
aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQuaHRtbCIK
IApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wZXJm
b3JtYW5jZS10aW1lbGluZS9zdXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9zdXBwb3J0ZWRFbnRyeVR5cGVzLWNy
b3NzLXJlYWxtLWFjY2Vzcy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9z
dXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgQ3Jvc3MtcmVhbG0gYWNjZXNzIG9mIHN1
cHBvcnRlZEVudHJ5VHlwZXMgcmV0dXJucyBBcnJheSBvZiBhbm90aGVyIHJlYWxtCisKSW5kZXg6
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGVyZm9ybWFuY2Ut
dGltZWxpbmUvc3VwcG9ydGVkRW50cnlUeXBlcy1jcm9zcy1yZWFsbS1hY2Nlc3MuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Bl
cmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlwZXMtY3Jvc3MtcmVhbG0tYWNjZXNz
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9zdXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3Nz
LXJlYWxtLWFjY2Vzcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9D
VFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkNyb3NzLXJlYWxtIGFj
Y2VzcyBvZiBzdXBwb3J0ZWRFbnRyeVR5cGVzIHJldHVybnMgQXJyYXkgb2YgYW5vdGhlciByZWFs
bTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby9w
ZXJmb3JtYW5jZS10aW1lbGluZS8jc3VwcG9ydGVkZW50cnl0eXBlcy1hdHRyaWJ1dGUiPgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGJvZHk+Cis8
c2NyaXB0PgordGVzdCh0ID0+IHsKKyAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaWZyYW1lIik7CisgIHQuYWRkX2NsZWFudXAoKCkgPT4geyBpZnJhbWUucmVtb3ZlKCk7
IH0pOworICBpZnJhbWUub25sb2FkID0gdC5zdGVwX2Z1bmNfZG9uZSgoKSA9PiB7CisgICAgY29u
c3Qgb3RoZXJXaW5kb3cgPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKyAgICBhc3NlcnRfdHJ1ZShv
dGhlcldpbmRvdy5QZXJmb3JtYW5jZU9ic2VydmVyLnN1cHBvcnRlZEVudHJ5VHlwZXMgaW5zdGFu
Y2VvZiBvdGhlcldpbmRvdy5BcnJheSk7CisgIH0pOworICBkb2N1bWVudC5ib2R5LmFwcGVuZChp
ZnJhbWUpOworfSk7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJl
cXVlc3QtY3NzLWNyb3NzLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjgwMjQ3KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gt
cmVxdWVzdC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw4ICsxLDYgQEAKIAogUEFTUyBzZXR1cCBnbG9iYWwgc3RhdGUKIFBBU1MgTUlNRSBj
aGVja2luZyBvZiBDU1MgcmVzb3VyY2VzIGZldGNoZWQgdmlhIHNlcnZpY2Ugd29ya2VyIHdoZW4g
Q29udGVudC1UeXBlIGlzIG5vdCBzZXQuCi1GQUlMIFNhbWUtb3JpZ2luIHBvbGljeSBmb3IgYWNj
ZXNzIHRvIENTUyByZXNvdXJjZXMgZmV0Y2hlZCB2aWEgc2VydmljZSB3b3JrZXIgYXNzZXJ0X3Ro
cm93c19kb206IGZ1bmN0aW9uICIoKSA9PiB7Ci0gICAgZi5jb250ZW50RG9jdW1lbnQuc3R5bGVT
aGVldHNbMF0uY3NzUnVsZXNbMF0uY3NzVGV4dDsKLSAgfSIgdGhyZXcgYW4gZXhjZXB0aW9uIGZy
b20gdGhlIHdyb25nIGdsb2JhbAorRkFJTCBTYW1lLW9yaWdpbiBwb2xpY3kgZm9yIGFjY2VzcyB0
byBDU1MgcmVzb3VyY2VzIGZldGNoZWQgdmlhIHNlcnZpY2Ugd29ya2VyIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlNlY3VyaXR5RXJyb3I6IE5v
dCBhbGxvd2VkIHRvIGFjY2VzcyBjcm9zcy1vcmlnaW4gc3R5bGVzaGVldCIKIFBBU1MgY2xlYW51
cCBnbG9iYWwgc3RhdGUKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1yZWFk
YWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVh
ZGFibGUuaHRtbAkocmV2aXNpb24gMjgwMjQ3KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5z
Zm9ybS1yZWFkYWJsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDkgKzksMTAgQEAKICAgICAg
ICAgPGlmcmFtZSBzcmM9Ii4iIGlkPSJmcmFtZSI+PC9pZnJhbWU+CiAgICAgICAgIDxzY3JpcHQ+
CiBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBmcmFtZURPTUV4Y2Vw
dGlvbiA9IGZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9uOwogICAgIGNvbnN0IHRyYW5z
Zm9ybSA9IG5ldyBmcmFtZS5jb250ZW50V2luZG93LlNGcmFtZVRyYW5zZm9ybTsKICAgICBmcmFt
ZS5yZW1vdmUoKTsKLSAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAo
KSA9PiB0cmFuc2Zvcm0ucmVhZGFibGUpOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlk
U3RhdGVFcnJvciIsIGZyYW1lRE9NRXhjZXB0aW9uLCAoKSA9PiB0cmFuc2Zvcm0ucmVhZGFibGUp
OwogfSk7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9ib2R5Pgo=
</data>
<flag name="review"
          id="456506"
          type_id="1"
          status="+"
          setter="ashvayka"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434110</attachid>
            <date>2021-07-23 12:23:54 -0700</date>
            <delta_ts>2021-07-23 13:13:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-225997-20210723205846.patch</filename>
            <type>text/plain</type>
            <size>128911</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODAyNDcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA3LTIzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsIGN1c3RvbSBhY2Nlc3NvcnMgLyB2YWx1
ZXMgd2l0aCB0aGVpciBob2xkZXIncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgICogc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXByb3Rv
LWNoYWluLXB1dC5qczoKKyAgICAgICAgKiBzdHJlc3MvZ2V0dGVyLXNldHRlci1nbG9iYWxvYmpl
Y3QtaW4taWMtMi5qczogQWRkZWQuCisKIDIwMjEtMDctMjIgIFNhYW0gQmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgSlNUZXN0cy9zdHJlc3MvdGVzdC1vdXQtb2YtbWVtb3J5
IHNob3VsZG4ndCBhc3N1bWUgdGhhdCB3ZSBhbHdheXMgT09NCkluZGV4OiBKU1Rlc3RzL3N0cmVz
cy9jdXN0b20tZ2V0LXNldC1wcm90by1jaGFpbi1wdXQuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzCShyZXZpc2lvbiAyODAy
NDcpCisrKyBKU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90by1jaGFpbi1wdXQuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTk5LDggKzk5LDggQEAgZnVuY3Rpb24gZ2V0QmFzZXMoKSB7CiAo
KCkgPT4gewogICAgIGZvciAobGV0IGJhc2Ugb2YgZ2V0QmFzZXMoKSkgewogICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQotICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4g
eyBiYXNlLmN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0ID0ge307IH0sICJUeXBlRXJyb3I6IEF0
dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7Ci0gICAgICAgIGFzc2Vy
dCghUmVmbGVjdC5zZXQoT2JqZWN0KGJhc2UpLCAiY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3Qi
LCB7fSkpOworICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBiYXNlLmN1c3RvbUFjY2Vz
c29yUmVhZE9ubHkgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byBy
ZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChPYmplY3Qo
YmFzZSksICJjdXN0b21BY2Nlc3NvclJlYWRPbmx5Iiwge30pKTsKICAgICB9CiB9KSgpOwogCkBA
IC0xMDgsMjEgKzEwOCwyMSBAQCBmdW5jdGlvbiBnZXRCYXNlcygpIHsKICgoKSA9PiB7CiAgICAg
Zm9yIChsZXQgcHJpbWl0aXZlIG9mIHByaW1pdGl2ZXMpIHsKICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDA7ICsraSkKLSAgICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgcHJpbWl0
aXZlLmN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0ID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRl
ZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7CisgICAgICAgICAgICBzaG91bGRU
aHJvdygoKSA9PiB7IHByaW1pdGl2ZS5jdXN0b21WYWx1ZU5vU2V0dGVyID0ge307IH0sICJUeXBl
RXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7CiAgICAg
fQogCiAgICAgZm9yIChsZXQgb2JqZWN0IG9mIGdldE9iamVjdHMoKSkgewogICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQotICAgICAgICAgICAgb2JqZWN0LmN1c3RvbVZhbHVl
R2xvYmFsT2JqZWN0ID0ge307Ci0gICAgICAgIGFzc2VydChvYmplY3QuaGFzT3duUHJvcGVydHko
ImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0IikpOwotICAgICAgICBhc3NlcnQoUmVmbGVjdC5zZXQo
b2JqZWN0LCAiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiLCB7fSkpOworICAgICAgICAgICAgb2Jq
ZWN0LmN1c3RvbVZhbHVlTm9TZXR0ZXIgPSB7fTsKKyAgICAgICAgYXNzZXJ0KG9iamVjdC5oYXNP
d25Qcm9wZXJ0eSgiY3VzdG9tVmFsdWVOb1NldHRlciIpKTsKKyAgICAgICAgYXNzZXJ0KFJlZmxl
Y3Quc2V0KG9iamVjdCwgImN1c3RvbVZhbHVlTm9TZXR0ZXIiLCB7fSkpOwogICAgIH0KIAogICAg
IGZvciAobGV0IG9iamVjdCBvZiBnZXRPYmplY3RzKCkpIHsKICAgICAgICAgT2JqZWN0LnByZXZl
bnRFeHRlbnNpb25zKG9iamVjdCk7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyAr
K2kpIHsKLSAgICAgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgb2JqZWN0LmN1c3RvbVZhbHVl
R2xvYmFsT2JqZWN0ID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8g
cmVhZG9ubHkgcHJvcGVydHkuIik7Ci0gICAgICAgICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0KG9i
amVjdCwgImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0Iiwge30pKTsKKyAgICAgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsgb2JqZWN0LmN1c3RvbVZhbHVlTm9TZXR0ZXIgPSB7fTsgfSwgIlR5cGVF
cnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAgICAg
ICAgICAgIGFzc2VydCghUmVmbGVjdC5zZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVOb1NldHRlciIs
IHt9KSk7CiAgICAgICAgIH0KICAgICB9CiB9KSgpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvZ2V0
dGVyLXNldHRlci1nbG9iYWxvYmplY3QtaW4taWMtMi5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3Rz
L3N0cmVzcy9nZXR0ZXItc2V0dGVyLWdsb2JhbG9iamVjdC1pbi1pYy0yLmpzCShub25leGlzdGVu
dCkKKysrIEpTVGVzdHMvc3RyZXNzL2dldHRlci1zZXR0ZXItZ2xvYmFsb2JqZWN0LWluLWljLTIu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsK
KyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsK
K30KKworY29uc3QgY3JlYXRlQ3VzdG9tID0gYAorICAgIHZhciBjdXN0b20gPSAkdm0uY3JlYXRl
Q3VzdG9tVGVzdEdldHRlclNldHRlcigpOworYDsKKworKGZ1bmN0aW9uIGRpcmVjdEN1c3RvbUFj
Y2Vzc29yR2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7
CisgICAgY29uc3Qgb3RoZXJDdXN0b20gPSBvdGhlci5jdXN0b207CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGFzc2VydChvdGhlckN1c3RvbS5jdXN0b21B
Y2Nlc3Nvckdsb2JhbE9iamVjdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlv
biBkaXJlY3RDdXN0b21WYWx1ZUdldCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhj
cmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVyQ3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBhc3NlcnQob3RoZXJD
dXN0b20uY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPT09IG90aGVyKTsKKyAgICB9Cit9KSgpOwor
CisoZnVuY3Rpb24gZGlyZWN0Q3VzdG9tQWNjZXNzb3JTZXQoKSB7CisgICAgY29uc3Qgb3RoZXIg
PSBydW5TdHJpbmcoY3JlYXRlQ3VzdG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbSA9IG90aGVy
LmN1c3RvbTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAg
Y29uc3QgdmFsdWUgPSB7fTsKKyAgICAgICAgb3RoZXJDdXN0b20uY3VzdG9tQWNjZXNzb3JHbG9i
YWxPYmplY3QgPSB2YWx1ZTsKKyAgICAgICAgYXNzZXJ0KHZhbHVlLnJlc3VsdCA9PT0gb3RoZXIp
OworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBkaXJlY3RDdXN0b21WYWx1ZVNldCgpIHsKKyAg
ICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNvbnN0IG90aGVy
Q3VzdG9tID0gb3RoZXIuY3VzdG9tOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkr
KykgeworICAgICAgICBjb25zdCB2YWx1ZSA9IHt9OworICAgICAgICBvdGhlckN1c3RvbS5jdXN0
b21WYWx1ZUdsb2JhbE9iamVjdCA9IHZhbHVlOworICAgICAgICBhc3NlcnQodmFsdWUucmVzdWx0
ID09PSBvdGhlcik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIHByb3RvdHlwZUNoYWluQ3Vz
dG9tQWNjZXNzb3JHZXQoKSB7CisgICAgY29uc3Qgb3RoZXIgPSBydW5TdHJpbmcoY3JlYXRlQ3Vz
dG9tKTsKKyAgICBjb25zdCBvdGhlckN1c3RvbUhlaXIgPSBPYmplY3QuY3JlYXRlKG90aGVyLmN1
c3RvbSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGFz
c2VydChvdGhlckN1c3RvbUhlaXIuY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPT09IG90aGVy
KTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gcHJvdG90eXBlQ2hhaW5DdXN0b21WYWx1ZUdl
dCgpIHsKKyAgICBjb25zdCBvdGhlciA9IHJ1blN0cmluZyhjcmVhdGVDdXN0b20pOworICAgIGNv
bnN0IG90aGVyQ3VzdG9tSGVpciA9IE9iamVjdC5jcmVhdGUob3RoZXIuY3VzdG9tKTsKKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMWU1OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KG90aGVyQ3Vz
dG9tSGVpci5jdXN0b21WYWx1ZUdsb2JhbE9iamVjdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7
CisKKyhmdW5jdGlvbiBwcm90b3R5cGVDaGFpbkN1c3RvbUFjY2Vzc29yU2V0KCkgeworICAgIGNv
bnN0IG90aGVyID0gcnVuU3RyaW5nKGNyZWF0ZUN1c3RvbSk7CisgICAgY29uc3Qgb3RoZXJDdXN0
b21IZWlyID0gT2JqZWN0LmNyZWF0ZShvdGhlci5jdXN0b20pOworCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBjb25zdCB2YWx1ZSA9IHt9OworICAgICAgICBv
dGhlckN1c3RvbUhlaXIuY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPSB2YWx1ZTsKKyAgICAg
ICAgYXNzZXJ0KHZhbHVlLnJlc3VsdCA9PT0gb3RoZXIpOworICAgIH0KK30pKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MDI0NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1OSBAQAorMjAyMS0w
Ny0yMyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAg
W0pTQ10gQ2FsbCBjdXN0b20gYWNjZXNzb3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3Mg
Z2xvYmFsIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI1OTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICBKdXN0IGxpa2UgSlMgYnVpbHQtaW5zLCBnZXR0ZXIgLyBzZXR0ZXIgZnVuY3Rpb25zIG9m
IFdlYklETCBhdHRyaWJ1dGVzIGFyZSBjcmVhdGVkIGluIHJlYWxtCisgICAgICAgIG9mIHRoZWly
IGhvbGRlciBpbnRlcmZhY2UgWzFdWzJdLCB3aGljaCBpcyB0aGVpciBfY3VycmVudF8gcmVhbG0g
Zm9yIHRocm93aW5nIGFuIGVycm9yIFszXS4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIGN1
c3RvbSBwcm9wZXJ0aWVzIGdldCBjb3JyZWN0IGdsb2JhbCBvYmplY3QgaW5zdGVhZCBvZiBsZXhp
Y2FsLCBpbmNsdWRpbmcKKyAgICAgICAgd2hlbiBpbmxpbmUgY2FjaGVkLCBhbGlnbmluZyB0aGVt
IHdpdGggZnVuY3Rpb25zIGFuZCByZWd1bGFyIGFjY2Vzc29ycy4KKworICAgICAgICBUaGUgbGF0
dGVyIGFsbG93ZWQgc3dpdGNoaW5nIEpTIGJ1aWx0LWlucyB0byBDdXN0b21BY2Nlc3NvciAoZS5n
LiBTeW1ib2wjZGVzY3JpcHRpb24pLAorICAgICAgICB3aGljaCBpcyBzbGlnaHRseSBtb3JlIGVm
ZmljaWVudCB0byBjYWxsIGZyb20gQysrLCBkb2Vzbid0IG5lZWQgcmVpZmljYXRpb24gb24gZmly
c3QgYWNjZXNzLAorICAgICAgICBhbmQgaGFzIG5pY2VyIHNpZ25hdHVyZS4KKworICAgICAgICBB
bHNvLCByZW5hbWVzIFdBU00gYWNjZXNzb3JzIHRvIGRyb3AgImZ1bmMiIGFuZCByZW1vdmVzIHVu
dXNlZCBmdW5jdGlvbiBsZW5ndGggcGFyYW1ldGVyLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIgKHN0ZXAgMikKKyAg
ICAgICAgWzJdOiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRl
LXNldHRlciAoc3RlcCA1KQorICAgICAgICBbM106IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI2VjbWFzY3JpcHQtdGhyb3cKKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAq
IGNyZWF0ZV9oYXNoX3RhYmxlOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Z2xvYmFsT2JqZWN0T2ZDbG9zZXN0Q29kZUJsb2Nr
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKiBydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToK
KyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lU2xvdyk6CisgICAgICAgICog
cnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmN1
c3RvbUdldHRlciBjb25zdCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpnZXRWYWx1ZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9TeW1ib2xQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKwogMjAyMS0wNy0yMiAgU2FhbSBCYXJh
dGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBaXJTdGFja1Nsb3QncyB1aW50MTZf
dCBieXRlIHNpemUgaXMgdG9vIHNtYWxsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY3Jl
YXRlX2hhc2hfdGFibGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0
ZV9oYXNoX3RhYmxlCShyZXZpc2lvbiAyODAyNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y3JlYXRlX2hhc2hfdGFibGUJKHdvcmtpbmcgY29weSkKQEAgLTk0LDExICs5NCw2IEBAIHdoaWxl
ICg8SU4+KSB7CiAgICAgICAgIGlmICgkYXR0ID1+IG0vRnVuY3Rpb24vKSB7CiAgICAgICAgICAg
ICBwdXNoKEB2YWx1ZXMsIHsgInR5cGUiID0+ICJQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24i
LCAiZnVuY3Rpb24iID0+ICR2YWwsICJwYXJhbXMiID0+IChsZW5ndGgoJHBhcmFtKSA/ICRwYXJh
bSA6ICIiKSwgImludHJpbnNpYyIgPT4gKGxlbmd0aCgkaW50cmluc2ljKSA/ICRpbnRyaW5zaWMg
OiAiTm9JbnRyaW5zaWMiKSB9KTsKICAgICAgICAgICAgICNwcmludGYgU1RERVJSICJXQVJOSU5H
OiBOdW1iZXIgb2YgYXJndW1lbnRzIG1pc3NpbmcgZm9yICRrZXkvJHZhbFxuIiBpZiAobGVuZ3Ro
KCRwYXJhbSkgPT0gMCk7Ci0gICAgICAgIH0gZWxzaWYgKCRhdHQgPX4gbS9BY2Nlc3Nvci8pIHsK
LSAgICAgICAgICAgIG15ICRnZXQgPSAkdmFsOwotICAgICAgICAgICAgbXkgJHB1dCA9ICJudWxs
cHRyIjsKLSAgICAgICAgICAgICRoYXNTZXR0ZXIgPSAidHJ1ZSI7Ci0gICAgICAgICAgICBwdXNo
KEB2YWx1ZXMsIHsgInR5cGUiID0+ICJQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IiLCAiZ2V0
IiA9PiAkZ2V0LCAicHV0IiA9PiAkcHV0IH0pOwogICAgICAgICB9IGVsc2lmICgkYXR0ID1+IG0v
Q2VsbFByb3BlcnR5LykgewogICAgICAgICAgICAgbXkgJHByb3BlcnR5ID0gJHZhbDsKICAgICAg
ICAgICAgIHB1c2goQHZhbHVlcywgeyAidHlwZSIgPT4gIlByb3BlcnR5QXR0cmlidXRlOjpDZWxs
UHJvcGVydHkiLCAicHJvcGVydHkiID0+ICRwcm9wZXJ0eSB9KTsKQEAgLTMxMCwxMSArMzA1LDYg
QEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAgICAgICRmaXJzdFZhbHVlID0gJHZhbHVlc1skaV17
ImZ1bmN0aW9uIn07CiAgICAgICAgICAgICAkc2Vjb25kVmFsdWUgPSAkdmFsdWVzWyRpXXsicGFy
YW1zIn07CiAgICAgICAgICAgICAkaW50cmluc2ljID0gJHZhbHVlc1skaV17ImludHJpbnNpYyJ9
OwotICAgICAgICB9IGVsc2lmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJQcm9wZXJ0eUF0dHJp
YnV0ZTo6QWNjZXNzb3IiKSB7Ci0gICAgICAgICAgICAkZmlyc3RDYXN0U3RyID0gInN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPiI7Ci0gICAgICAgICAgICAkc2Vjb25kQ2FzdFN0ciA9ICJz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4iOwotICAgICAgICAgICAgJGZpcnN0VmFsdWUg
PSAkdmFsdWVzWyRpXXsiZ2V0In07Ci0gICAgICAgICAgICAkc2Vjb25kVmFsdWUgPSAkdmFsdWVz
WyRpXXsicHV0In07CiAgICAgICAgIH0gZWxzaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIlBy
b3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eSIpIHsKICAgICAgICAgICAgICRmaXJzdENhc3RTdHIg
PSAic3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+IjsKICAgICAgICAgICAg
ICRzZWNvbmRDYXN0U3RyID0gInN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPiI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCShyZXZpc2lvbiAyODAyNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MTAsNyArMTQxMCw2IEBAIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICBDQ2FsbEhlbHBlcnMm
IGppdCA9ICpzdGF0ZS5qaXQ7CiAgICAgVk0mIHZtID0gc3RhdGUubV92bTsKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGppdC5jb2RlQmxvY2soKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gc3RhdGUubV9nbG9iYWxPYmplY3Q7CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUg
PSBzdGF0ZS5tX2VjbWFNb2RlOwogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpz
dGF0ZS5zdHViSW5mbzsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSBzdGF0ZS52YWx1ZVJl
Z3M7CkBAIC0xNjEzLDYgKzE2MTIsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lCiAgICAgICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSBsb2FkZWRWYWx1ZUdQUik7
CiAgICAgICAgICAgICBBU1NFUlQobV90eXBlICE9IFNldHRlciB8fCB2YWx1ZVJlZ3NQYXlsb2Fk
R1BSICE9IGxvYWRlZFZhbHVlR1BSKTsKIAorICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHN0YXRlLm1fZ2xvYmFsT2JqZWN0OworCiAgICAgICAgICAgICAvLyBDcmVh
dGUgYSBKUyBjYWxsIHVzaW5nIGEgSlMgY2FsbCBpbmxpbmUgY2FjaGUuIEFzc3VtZSB0aGF0Ogog
ICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIC0gU1AgaXMgYWxpZ25lZCBhbmQgcmVwcmVz
ZW50cyB0aGUgZXh0ZW50IG9mIHRoZSBjYWxsaW5nIGNvbXBpbGVyJ3Mgc3RhY2sgdXNhZ2UuCkBA
IC0xNzQ4LDYgKzE3NDksOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NH
ZW5lCiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1f
dHlwZSA9PSBDdXN0b21BY2Nlc3NvckdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0
ZXIgfHwgbV90eXBlID09IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKICAgICAgICAgICAgIEFTU0VS
VCghZG9lc1Byb3BlcnR5U3RvcmFnZUxvYWRzKTsgLy8gT3Igd2UgbmVlZCBhbiBleHRyYSByZWdp
c3Rlci4gV2UgcmVseSBvbiBwcm9wZXJ0eU93bmVyR1BSIGJlaW5nIGNvcnJlY3QgaGVyZS4KIAor
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGhhc0FsdGVybmF0ZUJh
c2UoKSA/IGFsdGVybmF0ZUJhc2UoKS0+Z2xvYmFsT2JqZWN0KHZtKSA6IHN0cnVjdHVyZSgpLT5n
bG9iYWxPYmplY3QoKTsKKwogICAgICAgICAgICAgLy8gTmVlZCB0byBtYWtlIHJvb20gZm9yIHRo
ZSBDIGNhbGwgc28gYW55IG9mIG91ciBzdGFjayBzcGlsbGFnZSBpc24ndCBvdmVyd3JpdHRlbi4g
SXQncwogICAgICAgICAgICAgLy8gaGFyZCB0byB0cmFjayBpZiBzb21lb25lIGRpZCBzcGlsbGFn
ZSBvciBub3QsIHNvIHdlIGp1c3QgYXNzdW1lIHRoYXQgd2UgYWx3YXlzIG5lZWQKICAgICAgICAg
ICAgIC8vIHRvIG1ha2Ugc29tZSBzcGFjZSBoZXJlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDI4MDI0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNl
LmgiCiAjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgogI2luY2x1ZGUgIlZNRW50cnlSZWNvcmQu
aCIKKyNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKICNpbmNsdWRlICJXYXNtQ29udGV4dElubGlu
ZXMuaCIKICNpbmNsdWRlICJXYXNtSW5zdGFuY2UuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KQEAgLTI0NCw2ICsyNDUsMzAgQEAgU291cmNlT3JpZ2luIENhbGxGcmFtZTo6
Y2FsbGVyU291cmNlT3JpZwogICAgIHJldHVybiBzb3VyY2VPcmlnaW47CiB9CiAKK0pTR2xvYmFs
T2JqZWN0KiBDYWxsRnJhbWU6Omdsb2JhbE9iamVjdE9mQ2xvc2VzdENvZGVCbG9jayhWTSYgdm0s
IENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBudWxscHRyOworICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoY2FsbEZyYW1lLCB2bSwgWyZd
KFN0YWNrVmlzaXRvciYgdmlzaXRvcikgeworICAgICAgICBpZiAodmlzaXRvci0+aXNXYXNtRnJh
bWUoKSkgeworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gdmlzaXRvci0+Y2FsbEZyYW1lKCkt
PmxleGljYWxHbG9iYWxPYmplY3Qodm0pOworICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRv
cjo6U3RhdHVzOjpEb25lOworICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiBjb2RlQmxvY2sg
PSB2aXNpdG9yLT5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+Y29k
ZVR5cGUoKSA9PSBDb2RlVHlwZTo6RnVuY3Rpb25Db2RlICYmIHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpLT5pc0J1aWx0aW5GdW5j
dGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6Q29u
dGludWU7CisgICAgICAgICAgICBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpOworICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVzOjpEb25lOworICAg
ICAgICB9CisgICAgICAgIEFTU0VSVCh2aXNpdG9yLT5jb2RlVHlwZSgpID09IFN0YWNrVmlzaXRv
cjo6RnJhbWU6OkNvZGVUeXBlOjpOYXRpdmUpOworICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpTdGF0dXM6OkNvbnRpbnVlOworICAgIH0pOworICAgIGlmIChnbG9iYWxPYmplY3QpCisgICAg
ICAgIHJldHVybiBnbG9iYWxPYmplY3Q7CisgICAgaWYgKHZtLmVudHJ5U2NvcGUpCisgICAgICAg
IHJldHVybiB2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwogU3RyaW5nIENhbGxGcmFtZTo6ZnJpZW5kbHlGdW5jdGlvbk5hbWUoKQogewogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyODAy
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2Myw2ICsyNjMsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAg
IGlubGluZSB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqKTsKICAgICAgICAgdm9pZCBzZXRS
ZXR1cm5QQyh2b2lkKiB2YWx1ZSkgeyBjYWxsZXJGcmFtZUFuZFBDKCkucmV0dXJuUEMgPSB2YWx1
ZTsgfQogCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0T2ZDbG9zZXN0Q29kZUJsb2NrKFZNJiwgQ2FsbEZyYW1lKik7CiAgICAgICAg
IFN0cmluZyBmcmllbmRseUZ1bmN0aW9uTmFtZSgpOwogCiAgICAgICAgIC8vIENhbGxGcmFtZTo6
aXRlcmF0ZSgpIGV4cGVjdHMgYSBGdW5jdG9yIHRoYXQgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5n
IG1ldGhvZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
clByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjgwMjQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFy
ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsQ29sbGF0b3JQcm90b3R5
cGVHZXR0ZXJDb21wYXJlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxD
b2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOwogCkBAIC00Nyw3ICs0Nyw3
IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OnMKIAogLyogU291cmNl
IGZvciBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBjb2xsYXRvclByb3RvdHlw
ZVRhYmxlCi0gIGNvbXBhcmUgICAgICAgICAgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29t
cGFyZSAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgY29tcGFyZSAgICAgICAgICBJbnRsQ29s
bGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgogICByZXNvbHZlZE9wdGlvbnMgIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNS
ZXNvbHZlZE9wdGlvbnMgIERvbnRFbnVtfEZ1bmN0aW9uIDAKIEBlbmQKICovCkBAIC0xMDUsMTQg
KzEwNSwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9yRnVuCiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNvbXBh
cmVTdHJpbmdzKGdsb2JhbE9iamVjdCwgeFZpZXdXaXRoU3RyaW5nLnZpZXcsIHlWaWV3V2l0aFN0
cmluZy52aWV3KSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bENvbGxhdG9y
UHJvdG90eXBlR2V0dGVyQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsQ29sbGF0
b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICAvLyAxMC4zLjMgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSAo
RUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0aGlzIENvbGxhdG9yIG9i
amVjdC4KLSAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29s
bGF0b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSW50bENvbGxhdG9yKiBj
b2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWNvbGxhdG9yKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkNvbGxh
dG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIl9zKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjgwMjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZUdldHRlckZvcm1hdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdl
VG9QYXJ0cyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyk7CkBAIC01Myw3ICs1Myw3IEBAIGNvbnN0
IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3QKIAogLyogU291cmNlIGZvciBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBkYXRlVGltZUZvcm1hdFByb3Rv
dHlwZVRhYmxlCi0gIGZvcm1hdCAgICAgICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGVHZXR0ZXJGb3JtYXQgICAgICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIGZvcm1h
dCAgICAgICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQg
ICAgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAgIGZvcm1hdFJh
bmdlICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2Ug
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgZm9ybWF0VG9QYXJ0cyAgICAgICAgIElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQogICByZXNvbHZlZE9wdGlvbnMgICAgICAgSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCkBA
IC0xMTMsMTQgKzExMywxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bERhdGVUaW1l
Rm9yCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0
LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEyLjMuMyBJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAx
LiBMZXQgZHRmIGJlIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0LgotICAgIGF1dG8qIGR0ZiA9
IEludGxEYXRlVGltZUZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogZHRmID0gSW50bERhdGVUaW1lRm9y
bWF0Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAv
LyAyLiBSZXR1cm5JZkFicnVwdChkdGYpLgogICAgIGlmIChVTkxJS0VMWSghZHRmKSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyODAyNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTYgKzM0
LDE2IEBAIG5hbWVzcGFjZSBKU0Mgewogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
SW50bExvY2FsZVByb3RvdHlwZUZ1bmNNYXhpbWl6ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01pbmltaXplKTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVGdW5jVG9TdHJpbmcpOwot
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckJhc2VOYW1lKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJDYWxlbmRhcik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0KTsKLXN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24pOwotc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhv
dXJDeWNsZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyTnVtZXJpYyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtKTsKLXN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSk7Ci1z
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
U2NyaXB0KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJSZWdpb24pOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50
bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhcik7CitzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJDb2xsYXRpb24pOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYyk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lz
dGVtKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJMYW5ndWFnZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24pOwogCiB9CiAKQEAgLTU4LDE2
ICs1OCwxNiBAQCBjb25zdCBDbGFzc0luZm8gSW50bExvY2FsZVByb3RvdHlwZTo6c19pCiAgIG1h
eGltaXplICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNYXhpbWl6ZSAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMAogICBtaW5pbWl6ZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5
cGVGdW5jTWluaW1pemUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAgdG9TdHJpbmcg
ICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3RyaW5nICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAwCi0gIGJhc2VOYW1lICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckJhc2VOYW1lICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgY2FsZW5kYXIgICAgICAgICBJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIgICAgICAgICBEb250RW51bXxBY2Nlc3Nv
cgotICBjYXNlRmlyc3QgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3Qg
ICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIGNvbGxhdGlvbiAgICAgICAgSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckNvbGxhdGlvbiAgICAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgaG91ckN5
Y2xlICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlICAgICAgICBEb250
RW51bXxBY2Nlc3NvcgotICBudW1lcmljICAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0
ZXJOdW1lcmljICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIG51bWJlcmluZ1N5c3RlbSAg
SW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSAgRG9udEVudW18QWNjZXNz
b3IKLSAgbGFuZ3VhZ2UgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2Ug
ICAgICAgICBEb250RW51bXxBY2Nlc3NvcgotICBzY3JpcHQgICAgICAgICAgIEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJTY3JpcHQgICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIHJlZ2lv
biAgICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbiAgICAgICAgICAgRG9u
dEVudW18QWNjZXNzb3IKKyAgYmFzZU5hbWUgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyQmFzZU5hbWUgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBj
YWxlbmRhciAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciAgICAgICAg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGNhc2VGaXJzdCAgICAgICAgSW50
bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCAgICAgICAgRG9udEVudW18UmVhZE9ubHl8
Q3VzdG9tQWNjZXNzb3IKKyAgY29sbGF0aW9uICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyQ29sbGF0aW9uICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBo
b3VyQ3ljbGUgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUgICAgICAg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG51bWVyaWMgICAgICAgICAgSW50
bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8
Q3VzdG9tQWNjZXNzb3IKKyAgbnVtYmVyaW5nU3lzdGVtICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyTnVtYmVyaW5nU3lzdGVtICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBs
YW5ndWFnZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSAgICAgICAg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIHNjcmlwdCAgICAgICAgICAgSW50
bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8
Q3VzdG9tQWNjZXNzb3IKKyAgcmVnaW9uICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyUmVnaW9uICAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogQGVu
ZAogKi8KIApAQCAtMTQyLDEyICsxNDIsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKElu
dGxMb2NhbGVQcm90bwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwu
TG9jYWxlLnByb3RvdHlwZS5iYXNlTmFtZQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2Fs
ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5
bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmJhc2VOYW1lIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAK
QEAgLTE1NiwxMiArMTU2LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxl
UHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5w
cm90b3R5cGUuY2FsZW5kYXIKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2Fz
dDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
IWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0xNzAs
MTIgKzE3MCwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBl
LmNhc2VGaXJzdAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJDYXNlRmlyc3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlw
ZUdldHRlckNhc2VGaXJzdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50
bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2Nh
bGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FzZUZpcnN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTE4NCwxMiAr
MTg0LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAog
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuY29s
bGF0aW9uCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckNvbGxhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyQ29sbGF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9j
YWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb24gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIApAQCAtMTk4LDEyICsxOTgs
MTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90bwogfQogCiAvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5ob3VyQ3lj
bGUKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91
ckN5Y2xlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJI
b3VyQ3ljbGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1
dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5M
b2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0yMTIsMTIgKzIxMiwxMiBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWVyaWMKLUpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYywg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYywg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxl
ID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90
b3R5cGUubnVtZXJpYyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0yMjUsMTIgKzIyNSwxMiBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbQotSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0
ZW0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJl
cmluZ1N5c3RlbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
YXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2Fs
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRs
LkxvY2FsZS5wcm90b3R5cGUubnVtYmVyaW5nU3lzdGVtIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTIzOSwxMiAr
MjM5LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAog
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubGFu
Z3VhZ2UKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
TGFuZ3VhZ2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckxhbmd1YWdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBh
dXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxl
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
TG9jYWxlLnByb3RvdHlwZS5sYW5ndWFnZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCkBAIC0yNTMsMTIgKzI1MywxMiBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvCiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLnNjcmlwdAotSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJTY3JpcHQsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9jYWxlID0g
anNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5
cGUuc2NyaXB0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXpl
ZCBhcyBhIExvY2FsZSJfcyk7CiAKQEAgLTI2NywxMiArMjY3LDEyIEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG8KIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUucmVnaW9uCi1KU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PElu
dGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9jYWxl
ID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5yZWdpb24gY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9z
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI4MDI0NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1z
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKElu
dGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0KTsKQEAgLTQ5LDcgKzQ5LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cAogCiAvKiBTb3VyY2UgZm9yIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBudW1iZXJGb3JtYXRQcm90b3R5cGVUYWJsZQot
ICBmb3JtYXQgICAgICAgICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQg
ICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICBmb3JtYXQgICAgICAgICAgIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgogICBmb3JtYXRUb1BhcnRzICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jRm9ybWF0VG9QYXJ0cyAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgIHJlc29sdmVkT3B0aW9u
cyAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERvbnRFbnVt
fEZ1bmN0aW9uIDAKIEBlbmQKQEAgLTEwOCwxNCArMTA4LDE0IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihJbnRsTnVtYmVyRm9ybWEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJl
ckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKIH0KIAotSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTEuMy4zIElu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAx
LiBMZXQgbmYgYmUgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0LgotICAgIGF1dG8qIG5mID0gSW50
bE51bWJlckZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbmYgPSBJbnRsTnVtYmVyRm9ybWF0Ojp1bndy
YXBGb3JPbGRGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoVU5MSUtF
TFkoIW5mKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1i
ZXJGb3JtYXQiX3MpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODAyNDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgc2V0RmxvYXQ2NCAg
ICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NCAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldEZsb2F0NjQKICAgc2V0QmlnSW50NjQgICAgICAg
ICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0QmlnSW50NjQgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAgICAgICAyCiAgIHNldEJpZ1VpbnQ2NCAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEJp
Z1VpbnQ2NCAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBidWZmZXIgICAgICAg
ICAgICAgICAgZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlciAgICAgICAgICAgIERvbnRFbnVtfEFj
Y2Vzc29yICAgICAgIDAKLSAgYnl0ZUxlbmd0aCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0
ZXJCeXRlTGVuZ3RoICAgICAgICBEb250RW51bXxBY2Nlc3NvciAgICAgICAwCi0gIGJ5dGVPZmZz
ZXQgICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCAgICAgICAgRG9udEVu
dW18QWNjZXNzb3IgICAgICAgMAorICBidWZmZXIgICAgICAgICAgICAgICAgZGF0YVZpZXdQcm90
b0dldHRlckJ1ZmZlciAgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29y
CisgIGJ5dGVMZW5ndGggICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCAg
ICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgYnl0ZU9mZnNldCAgICAg
ICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0ICAgICAgICBEb250RW51bXxSZWFk
T25seXxDdXN0b21BY2Nlc3NvcgogQGVuZAogKi8KIApAQCAtODMsOSArODMsOSBAQCBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmllCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0Z1bmNTZXRCaWdJbnQ2NCk7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvRnVuY1NldEJpZ1VpbnQ2NCk7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkYXRhVmlld1Byb3RvR2V0dGVyQnVm
ZmVyKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9HZXR0
ZXJCeXRlTGVuZ3RoKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3
UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQpOwogCiB9CiAKQEAg
LTIyMywyNCArMjIzLDI0IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3Qq
IGcKIAogSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0JFR0lOKCJtaXNzaW5nLXByb3RvdHlwZXMiKQog
Ci1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlciwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNE
eW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5i
dWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHZpZXctPnBvc3NpYmx5U2hh
cmVkSlNCdWZmZXIoZ2xvYmFsT2JqZWN0KSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0
YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNEYXRhVmlldyogdmll
dyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ5dGVMZW5ndGggZXhwZWN0
cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKICAgICBpZiAodmlldy0+aXNEZXRh
Y2hlZCgpKQpAQCAtMjQ5LDEyICsyNDksMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRh
dGFWaWV3UHJvdG9HZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlldy0+
bGVuZ3RoKCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGFWaWV3UHJvdG9H
ZXR0ZXJCeXRlT2Zmc2V0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0
ZXJCeXRlT2Zmc2V0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0
PEpTRGF0YVZpZXcqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICgh
dmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5ieXRlT2Zmc2V0IGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEg
RGF0YVZpZXcgb2JqZWN0Iik7CiAgICAgaWYgKHZpZXctPmlzRGV0YWNoZWQoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDI4MDI0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzkwLDkgKzc5MCw2IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3co
SlNHbG9iYWxPYmoKICAgICAgICAgICAgICAgICBoYXNQcm9wZXJ0eSA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlcyA9IGVudHJ5LT52YWx1ZS0+YXR0cmlidXRlcygpOwogCi0gICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFmdGVyIHdyaXRhYmxlIGFjY2Vzc29y
cyBhcmUgaW50cm9kdWNlZCB0byBzdGF0aWMgaGFzaCB0YWJsZXMuCi0gICAgICAgICAgICAgICAg
aWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpCi0gICAgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5OwogICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhZnRlciB3ZSBzdG9wIGRlZmF1bHRp
bmcgdG8gQ3VzdG9tVmFsdWUgaW4gc3RhdGljIGhhc2ggdGFibGVzLgogICAgICAgICAgICAgICAg
IGlmICghKGF0dHJpYnV0ZXMgJiAoUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3Bl
cnR5T3JDb25zdGFudCkpKQogICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9IFByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZTsKQEAgLTgyMSw3ICs4MTgsNyBAQCBib29sIEpTT2Jq
ZWN0OjpwdXRJbmxpbmVTbG93KEpTR2xvYmFsT2JqCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTM0NwogICAgICAgICAgICAgICAg
IHNsb3Quc2V0Q3VzdG9tQWNjZXNzb3Iob2JqLCBjdXN0b21TZXR0ZXIpOwogICAgICAgICAgICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBjdXN0b21TZXR0ZXIoZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUoc2xvdC50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29k
ZSh2YWx1ZSksIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgY3VzdG9tU2V0dGVyKG9i
ai0+Z2xvYmFsT2JqZWN0KHZtKSwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3QudGhpc1ZhbHVlKCkpLCBK
U1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWUpIHsKQEAgLTgzMCw3ICs4MjcsNyBAQCBib29s
IEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEpTR2xvYmFsT2JqCiAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgb25seSBiZSBjYWNoaW5nIHRoZXNlIGlmIHdlJ3JlIG5vdCBh
biB1bmNhY2hlYWJsZSBkaWN0aW9uYXJ5OgogICAgICAgICAgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzQ3CiAgICAgICAgICAgICAgICAg
ICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUob2JqLCBjdXN0b21TZXR0ZXIpOwotICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGN1c3RvbVNldHRlcihnbG9iYWxPYmpl
Y3QsIEpTVmFsdWU6OmVuY29kZShvYmopLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0
eU5hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBj
dXN0b21TZXR0ZXIob2JqLT5nbG9iYWxPYmplY3Qodm0pLCBKU1ZhbHVlOjplbmNvZGUob2JqKSwg
SlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmICghaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIG9iaikpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gQXZvaWQgUHV0TW9kZVB1dCBiZWNhdXNlIGl0IGZhaWxz
IGZvciBub24tZXh0ZW5zaWJsZSBzdHJ1Y3R1cmVzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCShyZXZpc2lvbiAyODAyNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxMSArMzMsMTIgQEAgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmZ1bmN0aW9uR2V0
dGVyKEpTRwogICAgIHJldHVybiBtX2RhdGEuZ2V0dGVyLmdldHRlclNldHRlci0+Y2FsbEdldHRl
cihnbG9iYWxPYmplY3QsIG1fdGhpc1ZhbHVlKTsKIH0KIAotSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6
OmN1c3RvbUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKSBjb25zdAorSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmN1c3RvbUdldHRlcihW
TSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1f
c2xvdEJhc2UpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX3Nsb3RCYXNl
LT5nbG9iYWxPYmplY3Qodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gbV9hdHRyaWJ1dGVz
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yID8gbV90aGlzVmFsdWUgOiBKU1Zh
bHVlKHNsb3RCYXNlKCkpOwogICAgIGlmIChhdXRvIGRvbUF0dHJpYnV0ZSA9IHRoaXMtPmRvbUF0
dHJpYnV0ZSgpKSB7Ci0gICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAg
ICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHModm0sIGRvbUF0dHJpYnV0ZS0+Y2xhc3NJbmZvKSkg
ewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
ICAgICAgICAgcmV0dXJuIHRocm93RE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGRvbUF0dHJpYnV0ZS0+Y2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHJldmlz
aW9uIDI4MDI0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGN1c3RvbUdldHRl
cihKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYWx1ZSBjdXN0b21HZXR0ZXIoVk0mLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAg
ICAgdW5pb24gewogICAgICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZTsKQEAgLTQwNSw3ICs0MDUs
NyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90OjpnZXRWCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLnZhbHVlKTsKICAgICBpZiAobV9wcm9wZXJ0eVR5
cGUgPT0gVHlwZUdldHRlcikKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uR2V0dGVyKGdsb2JhbE9i
amVjdCk7Ci0gICAgcmV0dXJuIGN1c3RvbUdldHRlcihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgcmV0dXJuIGN1c3RvbUdldHRlcihnZXRWTShnbG9iYWxPYmplY3QpLCBwcm9wZXJ0
eU5hbWUpOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90OjpnZXRWYWx1
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUpIGNv
bnN0CkBAIC00MTUsNyArNDE1LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIFByb3BlcnR5U2xv
dDo6Z2V0VgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS52YWx1ZSk7CiAg
ICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVHZXR0ZXIpCiAgICAgICAgIHJldHVybiBmdW5j
dGlvbkdldHRlcihnbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBjdXN0b21HZXR0ZXIoZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4g
Y3VzdG9tR2V0dGVyKGdldFZNKGdsb2JhbE9iamVjdCksIElkZW50aWZpZXI6OmZyb20odm0sIHBy
b3BlcnR5TmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjgwMjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9HZXR0ZXJEZXNj
cmlwdGlvbik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihzeW1ib2xQcm90b0dl
dHRlckRlc2NyaXB0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHN5bWJv
bFByb3RvRnVuY1RvU3RyaW5nKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHN5
bWJvbFByb3RvRnVuY1ZhbHVlT2YpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIGNvbnN0IENsYXNzSW5m
byBTeW1ib2xQcm90b3R5cGU6OnNfaW5mbyAKIAogLyogU291cmNlIGZvciBTeW1ib2xQcm90b3R5
cGUubHV0LmgKIEBiZWdpbiBzeW1ib2xQcm90b3R5cGVUYWJsZQotICBkZXNjcmlwdGlvbiAgICAg
ICBzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uICAgIERvbnRFbnVtfEFjY2Vzc29yIDAKKyAg
ZGVzY3JpcHRpb24gICAgICAgc3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbiAgICBEb250RW51
bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogICB0b1N0cmluZyAgICAgICAgICBzeW1ib2xQcm90
b0Z1bmNUb1N0cmluZyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAgdmFsdWVPZiAgICAg
ICAgICAgc3ltYm9sUHJvdG9GdW5jVmFsdWVPZiAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAw
CiBAZW5kCkBAIC04NywxMiArODcsMTIgQEAgaW5saW5lIFN5bWJvbCogdHJ5RXh0cmFjdFN5bWJv
bChWTSYgdm0sIAogICAgIHJldHVybiBhc1N5bWJvbChqc0Nhc3Q8U3ltYm9sT2JqZWN0Kj4odGhp
c09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHN5
bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3lt
Ym9sKHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFzeW1ib2wpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN5bWJv
bERlc2NyaXB0aW9uVHlwZUVycm9yKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyODAyNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MDMsNyArMTYwMyw5IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGN1c3RvbUcKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGN1c3RvbUdldEFj
Y2Vzc29yR2xvYmFsT2JqZWN0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGN1
c3RvbUdldFZhbHVlR2xvYmFsT2JqZWN0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKGN1c3RvbVNldEFjY2Vzc29yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KGN1c3RvbVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKGN1c3RvbVNldFZhbHVlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKGN1c3RvbUZ1bmN0aW9uU2V0dGVyKTsKIAogSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGN1c3RvbUdldEFjY2Vzc29yLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCkBAIC0xNjQ1LDYgKzE2NDcsMjIgQEAgSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldEFjY2VzcwogICAgIHJldHVybiB0cnVlOwogfQogCitK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0QWNjZXNzb3JHbG9iYWxPYmplY3QsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIERvbGxhclZNQXNzZXJ0U2Nv
cGUgYXNzZXJ0U2NvcGU7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIGlmICgh
dmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmpl
Y3QpOworICAgIG9iamVjdC0+cHV0KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicmVzdWx0IiksIGdsb2JhbE9iamVjdCwgc2xvdCk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldFZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgc2xvdFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgRG9sbGFy
Vk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAgLTE2NjMsNiArMTY4MSwyNCBAQCBKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0VmFsdWUsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjdXN0b21TZXRWYWx1ZUdsb2JhbE9iamVjdCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHNsb3RWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworCisgICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1ZTo6ZGVjb2RlKHNsb3RWYWx1ZSkuaW5oZXJp
dHM8SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyPihnbG9iYWxPYmplY3QtPnZtKCkpKTsKKworICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBpZiAo
IXZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2Jq
ZWN0KTsKKyAgICBvYmplY3QtPnB1dChvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInJlc3VsdCIpLCBnbG9iYWxPYmplY3QsIHNsb3QpOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjdXN0b21GdW5jdGlvblNl
dHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAgLTE2OTAsOSArMTcyNiwxMyBAQCB2b2lkIEpTVGVz
dEN1c3RvbUdldHRlclNldHRlcjo6ZmluaXNoQ3JlCiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21BY2Nlc3NvciIpLAogICAg
ICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3IsIGN1
c3RvbVNldEFjY2Vzc29yKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvcikpOwogICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiKSwKLSAgICAg
ICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldFZhbHVlR2xvYmFsT2Jq
ZWN0LCBudWxscHRyKSwgMCk7CisgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCBjdXN0b21HZXRWYWx1ZUdsb2JhbE9iamVjdCwgY3VzdG9tU2V0VmFsdWVHbG9iYWxPYmplY3Qp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlKSk7
CiAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJjdXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCIpLAotICAgICAgICBDdXN0b21HZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3JHbG9iYWxPYmplY3QsIG51bGxwdHIp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IpOworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9t
R2V0QWNjZXNzb3JHbG9iYWxPYmplY3QsIGN1c3RvbVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0KSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcikp
OworICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY3VzdG9tVmFsdWVOb1NldHRlciIpLAorICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6
OmNyZWF0ZSh2bSwgY3VzdG9tR2V0VmFsdWUsIG51bGxwdHIpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlKSk7CisgICAgcHV0RGlyZWN0Q3VzdG9t
QWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21BY2Nlc3NvclJl
YWRPbmx5IiksCisgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21H
ZXRBY2Nlc3NvciwgbnVsbHB0ciksIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAKICAgICBwdXREaXJlY3RDdXN0b21BY2Nl
c3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUZ1bmN0aW9uIiksCiAg
ICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3Nvciwg
Y3VzdG9tRnVuY3Rpb25TZXR0ZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjgwMjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAKICNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b0Z1bmNFeHBvcnRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHdl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b0dldHRlckV4cG9ydHMpOwogfQogCiAjaW5jbHVkZSAiV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5sdXQuaCIKQEAgLTQ2LDcgKzQ2LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90bwogCiAvKiBTb3VyY2UgZm9yIFdlYkFz
c2VtYmx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmgKICBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJB
c3NlbWJseUluc3RhbmNlCi0gZXhwb3J0cyB3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhw
b3J0cyBBY2Nlc3NvciAwCisgIGV4cG9ydHMgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvR2V0dGVy
RXhwb3J0cyBSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogIEBlbmQKICAqLwogCkBAIC02MiwxMiAr
NjIsMTIgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseUluc3RhbgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG9GdW5jRXhwb3J0cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3NlbWJs
eUluc3RhbmNlUHJvdG9HZXR0ZXJFeHBvcnRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBn
ZXRJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsgCisg
ICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IGdldEluc3RhbmNlKGdsb2JhbE9i
amVjdCwgdm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZS0+bW9kdWxlUmVjb3JkKCktPmV4cG9ydHNPYmpl
Y3QoKSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNZW1vcnlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjgwMjQ3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBK
U0Mgewogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vcnlQ
cm90b0Z1bmNHcm93KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9HZXR0ZXJCdWZmZXIpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNUeXBlKTsKIH0KIApA
QCAtNTMsNyArNTMsNyBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5
CiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oCiBAYmVnaW4g
cHJvdG90eXBlVGFibGVXZWJBc3NlbWJseU1lbW9yeQogIGdyb3cgICB3ZWJBc3NlbWJseU1lbW9y
eVByb3RvRnVuY0dyb3cgICBGdW5jdGlvbiAxCi0gYnVmZmVyIHdlYkFzc2VtYmx5TWVtb3J5UHJv
dG9GdW5jQnVmZmVyIEFjY2Vzc29yIDAKKyBidWZmZXIgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0dl
dHRlckJ1ZmZlciBSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogIHR5cGUgICB3ZWJBc3NlbWJseU1l
bW9yeVByb3RvRnVuY1R5cGUgICBGdW5jdGlvbiAwCiBAZW5kCiAqLwpAQCAtODgsMTIgKzg4LDEy
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1lbW8KICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdC5wYWdlQ291bnQoKSkpOwogfQogCi1KU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIod2ViQXNzZW1ibHlNZW1vcnlQcm90b0dldHRlckJ1ZmZlciwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFz
c2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoZ2xvYmFsT2JqZWN0LCB2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7IAorICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdl
dE1lbW9yeShnbG9iYWxPYmplY3QsIHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7IAog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG1lbW9yeS0+YnVmZmVyKGdsb2Jh
bE9iamVjdCkpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyODAy
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHdlYkFzc2VtYmx5VGFibGVQcm90b0dldHRlckxlbmd0
aCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJv
dG9GdW5jR3Jvdyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJs
eVRhYmxlUHJvdG9GdW5jR2V0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHdl
YkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQpOwpAQCAtNTIsNyArNTIsNyBAQCBjb25zdCBDbGFz
c0luZm8gV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwCiAKIC8qIFNvdXJjZSBmb3IgV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZS5sdXQuaAogIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5
VGFibGUKLSBsZW5ndGggd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCBBY2Nlc3NvciAw
CisgbGVuZ3RoIHdlYkFzc2VtYmx5VGFibGVQcm90b0dldHRlckxlbmd0aCBSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgogIGdyb3cgICB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdyAgIEZ1bmN0
aW9uIDEKICBnZXQgICAgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldCAgICBGdW5jdGlvbiAx
CiAgc2V0ICAgIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQgICAgRnVuY3Rpb24gMgpAQCAt
NzIsMTIgKzcyLDEyIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlUYWJsZSoK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNz
ZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih3ZWJBc3Nl
bWJseVRhYmxlUHJvdG9HZXR0ZXJMZW5ndGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxl
KGdsb2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTV2ViQXNz
ZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShnbG9iYWxPYmplY3QsIHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRh
YmxlLT5sZW5ndGgoKSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgwMjQ3KQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAK
KzIwMjEtMDctMjMgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisg
ICAgICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRoIHRoZWlyIGhv
bGRlcidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2ku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyBjcm9zcy1yZWFsbSB5ZXQgc2FtZS1vcmlnaW4g
V2ViSURMIGF0dHJpYnV0ZXMgdG8gdGhyb3cgZXJyb3JzIGluIHJlYWxtIG9mCisgICAgICAgIHRo
ZWlyIGFjY2Vzc29yLCB3aGlsZSBlbnN1cmluZyB0aGF0IGB3aW5kb3cubG9jYXRpb25gIGFuZCBg
bG9jYXRpb24uaHJlZmAgc2V0dGVycyBkb24ndCBsZWFrCisgICAgICAgIGNyb3NzLW9yaWdpbiBP
YmplY3QucHJvdG90eXBlIHZpYSB0aHJvd24gZXJyb3IuCisKKyAgICAgICAgU2luY2UgTG9jYXRp
b24gc2V0dGVycyByZWxpZWQgb24gbGV4aWNhbCBnbG9iYWwgb2JqZWN0IHRvIHBhc3Mgb3V0Z29p
bmcgYGRvY3VtZW50LnJlZmVycmVyYCwKKyAgICAgICAgdGhleSB3ZXJlIHVwZGF0ZWQgdG8gdXNl
IEluY3VtYmVudFdpbmRvdyBhcyBwZXIgc3BlYyBbMV0uIGNhbGxlckdsb2JhbE9iamVjdCgpIHdh
cyByZXdvcmtlZAorICAgICAgICB0byBza2lwIG5hdGl2ZSAvIGJ1aWx0LWluIGNhbGxlcnMgYW5k
IHJlbHkgb24gVk1FbnRyeVNjb3BlIHRvIGFjY29tb2RhdGUgdG9wLWxldmVsIDxzY3JpcHQ+Cisg
ICAgICAgIGNvZGUgbmF2aWdhdGluZyB2aWEgTG9jYXRpb24gc2V0dGVyLCBtYWtpbmcgdGhlIGhl
bHBlciBtb3JlIHZlcnNhdGlsZS4KKworICAgICAgICBnbG9iYWxPYmplY3RPZkNsb3Nlc3RDb2Rl
QmxvY2soKSBmaXhlZCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uIGluc3RhbmNlcyBhbmQgTG9jYXRp
b24ncworICAgICAgICBhc3NpZ24oKSAvIHJlcGxhY2UoKSBtZXRob2RzIHRvIHBhc3MgY29ycmVj
dCByZWZlcnJlci4KKworICAgICAgICBBbHNvLCB0aGlzIGNoYW5nZSBmaXhlcyBzdGF0aWMgYXR0
cmlidXRlcyBsaWtlIGBQZXJmb3JtYW5jZU9ic2VydmVyLnN1cHBvcnRlZEVudHJ5VHlwZXNgCisg
ICAgICAgIHRvIHJldHVybiB3cmFwcGVycyBvZiB0aGVpciByZWFsbSBpbnN0ZWFkIG9mIGxleGlj
YWwuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L2hpc3RvcnkuaHRtbCNsb2NhdGlvbi1vYmplY3QtbmF2aWdhdGUgKHN0ZXAgMikKKworICAgICAg
ICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlw
dC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5o
dG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwK
KyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93
c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2Nh
dGlvbi1ocmVmLWNyb3NzLXJlYWxtLXNldC5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5
VHlwZXMtY3Jvc3MtcmVhbG0tYWNjZXNzLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxlckdsb2JhbE9iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aW5jdW1iZW50RE9NV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246
OnB1dCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChHZW5lcmF0ZU5hbWVkR2V0dGVyTGFtYmRhKToKKyAgICAgICAgKEdlbmVyYXRlQ2Fs
bFdpdGhVc2luZ1JlZmVyZW5jZXMpOgorICAgICAgICAoR2VuZXJhdGVDYWxsV2l0aCk6CisgICAg
ICAgIEVuc3VyZSBJbmN1bWJlbnRXaW5kb3cgY29tZXMgYmVmb3JlIEZpcnN0V2luZG93LgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBSZW1vdmUgYXR0
cmlidXRlcyB0aGF0IHJlbGllZCBvbiBDYWxsRnJhbWUgc2luY2UgY3VzdG9tIGdldHRlcnMgZG9u
J3QgaGF2ZSBpdC4KKworICAgICAgICAqIHBhZ2UvTG9jYXRpb24uaWRsOgorICAgICAgICBSZW1v
dmUgW0xlZ2FjeVVuZm9yZ2VhYmxlXSBmcm9tIGFuY2VzdG9yT3JpZ2lucyBiZWNhdXNlIGl0J3Mg
c2V0IG9uIHRoZSBpbnRlcmZhY2UuCisKIDIwMjEtMDctMjMgIEFkaXR5YSBLZWVydGhpICA8YWtl
ZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gUmVwYWludGluZyBhcnRpZmFjdHMg
d2hlbiBtb3ZpbmcgaW5wdXQgdHlwZT1yYW5nZSBzbGlkZXIgdGh1bWIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9u
IDI4MDI0NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQwLDQ4ICs1NDAsNiBAQCBKU0M6OkpTT2JqZWN0KiBK
U0RPTUdsb2JhbE9iamVjdDo6bW9kdWxlCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3Ry
dWN0dXJlKCkpOwogfQogCi1KU0RPTUdsb2JhbE9iamVjdCYgY2FsbGVyR2xvYmFsT2JqZWN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkK
LXsKLSAgICBjbGFzcyBHZXRDYWxsZXJHbG9iYWxPYmplY3RGdW5jdG9yIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIEdldENhbGxlckdsb2JhbE9iamVjdEZ1bmN0b3IoKSA9IGRlZmF1bHQ7Ci0KLSAg
ICAgICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0
b3IpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9oYXNTa2lwcGVkRmlyc3RG
cmFtZSkgewotICAgICAgICAgICAgICAgIG1faGFzU2tpcHBlZEZpcnN0RnJhbWUgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAoYXV0byogY29kZUJsb2NrID0gdmlzaXRvci0+Y29kZUJs
b2NrKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHZp
c2l0b3ItPmNhbGxlZSgpLnJhd1B0cigpKTsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ2Fs
bGVlIGlzIG5vdCBhbiBvYmplY3QgaWYgdGhlIGNhbGxlciBpcyBXZWIgQXNzZW1ibHkuCi0gICAg
ICAgICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHRvIGRvIGhlcmUuIFdlIGNhbiBwcm9iYWJs
eSBnZXQgdGhlIGdsb2JhbCBvYmplY3QKLSAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSB0b3At
bW9zdCBXYXNtIEluc3RhbmNlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY1NzIxCi0gICAgICAgICAgICAgICAgaWYgKHZpc2l0b3ItPmNhbGxlZSgpLmlzQ2VsbCgp
ICYmIHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgpLT5pc09iamVjdCgpKQotICAgICAgICAgICAg
ICAgICAgICBtX2dsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHZpc2l0b3ItPmNhbGxl
ZSgpLmFzQ2VsbCgpKS0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBtdXRhYmxlIGJvb2wgbV9oYXNTa2lwcGVkRmlyc3RG
cmFtZSB7IGZhbHNlIH07Ci0gICAgICAgIG11dGFibGUgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFs
T2JqZWN0IHsgbnVsbHB0ciB9OwotICAgIH07Ci0KLSAgICBHZXRDYWxsZXJHbG9iYWxPYmplY3RG
dW5jdG9yIGl0ZXI7Ci0gICAgY2FsbEZyYW1lLml0ZXJhdGUobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLCBpdGVyKTsKLSAgICBpZiAoaXRlci5nbG9iYWxPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihpdGVyLmdsb2JhbE9iamVjdCgpKTsKLQotICAg
IC8vIElmIHdlIGNhbm5vdCBmaW5kIEpTR2xvYmFsT2JqZWN0IGluIGNhbGxlciBmcmFtZXMsIHdl
IGp1c3QgcmV0dXJuIHRoZSBjdXJyZW50IGxleGljYWxHbG9iYWxPYmplY3QuCi0gICAgcmV0dXJu
ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci19Ci0K
IEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgaWYgKGlzPERv
Y3VtZW50Pihjb250ZXh0KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjgwMjQ3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDgg
KzE0Miw2IEBAIHByaXZhdGU6CiAgICAgSlNDOjpXZWFrR0NNYXA8Q3Jvc3NPcmlnaW5NYXBLZXks
IEpTQzo6R2V0dGVyU2V0dGVyPiBtX2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVyTWFwOwogfTsKIAot
V0VCQ09SRV9FWFBPUlQgSlNET01HbG9iYWxPYmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpDYWxsRnJhbWUmKTsKLQogSlNET01HbG9iYWxPYmplY3Qq
IHRvSlNET01HbG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIERPTVdyYXBwZXJX
b3JsZCYpOwogCiB0ZW1wbGF0ZTxjbGFzcyBKU0NsYXNzPgpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAyODAyNDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODIsOSArMjgyLDE5IEBAIEpTRE9NV2luZG93KiB0b0pTRE9NV2luZG93KEZy
YW1lJiBmcmFtZSwKICAgICByZXR1cm4gZnJhbWUuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxk
KTsKIH0KIAotRE9NV2luZG93JiBpbmN1bWJlbnRET01XaW5kb3coSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQorRE9NV2luZG93JiBpbmN1
bWJlbnRET01XaW5kb3coSlNHbG9iYWxPYmplY3QmIGZhbGxiYWNrR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUmIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXNKU0RPTVdpbmRvdygmY2FsbGVyR2xv
YmFsT2JqZWN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSkpLT53cmFwcGVkKCk7Cisg
ICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IENhbGxGcmFtZTo6Z2xvYmFsT2JqZWN0T2ZDbG9z
ZXN0Q29kZUJsb2NrKGZhbGxiYWNrR2xvYmFsT2JqZWN0LnZtKCksICZjYWxsRnJhbWUpKQorICAg
ICAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhnbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7CisgICAg
cmV0dXJuIGFzSlNET01XaW5kb3coJmZhbGxiYWNrR2xvYmFsT2JqZWN0KS0+d3JhcHBlZCgpOwor
fQorCitET01XaW5kb3cmIGluY3VtYmVudERPTVdpbmRvdyhKU0dsb2JhbE9iamVjdCYgZmFsbGJh
Y2tHbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZmFsbGJhY2tHbG9iYWxPYmplY3Qudm0o
KTsKKyAgICBpZiAoYXV0byogZ2xvYmFsT2JqZWN0ID0gQ2FsbEZyYW1lOjpnbG9iYWxPYmplY3RP
ZkNsb3Nlc3RDb2RlQmxvY2sodm0sIHZtLnRvcENhbGxGcmFtZSkpCisgICAgICAgIHJldHVybiBh
c0pTRE9NV2luZG93KGdsb2JhbE9iamVjdCktPndyYXBwZWQoKTsKKyAgICByZXR1cm4gYXNKU0RP
TVdpbmRvdygmZmFsbGJhY2tHbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7CiB9CiAKIERPTVdpbmRv
dyYgYWN0aXZlRE9NV2luZG93KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgJKHJl
dmlzaW9uIDI4MDI0NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDcgQEAgaW5saW5lIEpTRE9NV2lu
ZG93KiB0b0pTRE9NV2luZG93KEZyYW1lKgogLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZvciBh
biAiYXV0aG9yIGZ1bmN0aW9uIG9yIHNjcmlwdCB0aGF0IG9yaWdpbmFsbHkgc2NoZWR1bGVkIHRo
ZSBjdXJyZW50bHktcnVubmluZyBjYWxsYmFjay4iCiAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MTI+LgogRE9NV2luZG93JiBpbmN1bWJlbnRET01X
aW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6Q2FsbEZyYW1lJik7CitET01XaW5kb3cm
IGluY3VtYmVudERPTVdpbmRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAKIERPTVdpbmRvdyYg
YWN0aXZlRE9NV2luZG93KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKIERPTVdpbmRvdyYgZmlyc3RE
T01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMjgwMjQ3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjMsMTAgKzI2MywxNyBAQCBib29sIEpTRE9NV2luZG93OjpwdXQoSlND
ZWxsKiBjZWxsLCBKU0dsCiAKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2lu
ZG93Kj4oY2VsbCk7CiAKLSAgICBpZiAocHJvcGVydHlOYW1lICE9IHN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmxvY2F0aW9uUHVibGlj
TmFtZSgpKSB7CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKKyAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLCBlcnJvck1lc3NhZ2UpKSB7CiAgICAgICAgIC8vIFdlIG9u
bHkgYWxsb3cgc2V0dGluZyAibG9jYXRpb24iIGF0dHJpYnV0ZSBjcm9zcy1vcmlnaW4uCi0gICAg
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVy
cm9yKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKS5sb2NhdGlvblB1YmxpY05hbWUoKSkgeworICAgICAgICAgICAgYXV0byogc2V0dGVy
ID0gc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSktPnByb3Bl
cnR5UHV0dGVyKCk7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBz
ZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3QudGhpc1ZhbHVl
KCkpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgdGhyb3dTZWN1cml0eUVycm9yKCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAogICAgIGlmIChwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkgJiYgIWFsbG93
c0xlZ2FjeUV4cGFuZG9JbmRleGVkUHJvcGVydGllcygpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDI4MDI0NykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsMTcgKzExMSwyNiBAQCBib29sIEpTTG9jYXRpb246OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kCiBib29sIEpTTG9jYXRpb246OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKIHsKICAg
ICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
TG9jYXRpb24qPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CiAKICAgICAvLyBBbHdheXMgYWxsb3cgYXNzaWduaW5nIHRvIHRoZSB3aG9s
ZSBsb2NhdGlvbi4KICAgICAvLyBIb3dldmVyLCBhbGxvd2luZyBhc3NpZ25pbmcgb2YgcGllY2Vz
IG1pZ2h0IGluYWR2ZXJ0ZW50bHkgZGlzY2xvc2UgcGFydHMgb2YgdGhlIG9yaWdpbmFsIGxvY2F0
aW9uLgogICAgIC8vIFNvIGZhbGwgdGhyb3VnaCB0byB0aGUgYWNjZXNzIGNoZWNrIGZvciB0aG9z
ZS4KLSAgICBpZiAocHJvcGVydHlOYW1lICE9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmhyZWZQdWJsaWNOYW1lKCkpIHsKLSAgICAg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3cobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLndpbmRvdygpLCBUaHJvd1Nl
Y3VyaXR5RXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmluZyBlcnJv
ck1lc3NhZ2U7CisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS53aW5k
b3coKSwgZXJyb3JNZXNzYWdlKSkgeworICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmhy
ZWZQdWJsaWNOYW1lKCkpIHsKKyAgICAgICAgICAgIGF1dG8qIHNldHRlciA9IHNfaW5mby5zdGF0
aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpLT5wcm9wZXJ0eVB1dHRlcigpOwor
ICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICAgICAgc2V0dGVyKGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZShwdXRQcm9wZXJ0eVNsb3QudGhpc1ZhbHVlKCkp
LCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgdGhyb3dTZWN1cml0eUVycm9yKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAorICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gSlNPYmplY3Q6OnB1
dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBw
dXRQcm9wZXJ0eVNsb3QpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjgwMjQ3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcg
Y29weSkKQEAgLTg1Myw3ICs4NTMsNyBAQCBzdWIgR2VuZXJhdGVOYW1lZEdldHRlckxhbWJkYQog
ewogICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRuYW1lZEdl
dHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyRnVuY3Rpb25OYW1lLCAkSURMVHlwZSkgPSBAXzsK
ICAgICAKLSAgICBteSBAYXJndW1lbnRzID0gR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNl
cygkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwg
JG91dHB1dEFycmF5LCAic3RkOjpudWxsb3B0IiwgInRoaXNPYmplY3QiLCAiICAgICAgICAiKTsK
KyAgICBteSBAYXJndW1lbnRzID0gR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkbmFt
ZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwgJG91dHB1
dEFycmF5LCAic3RkOjpudWxsb3B0IiwgInRoaXNPYmplY3QiLCAiIiwgIiAgICAgICAgIik7CiAg
ICAgcHVzaChAYXJndW1lbnRzLCAicHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFt
ZSkiKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIGdldHRlckZ1bmN0b3Ig
PSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8JHtJRExUeXBlfSwgJHtj
bGFzc05hbWV9PihbXSAoJHtjbGFzc05hbWV9JiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7XG4iKTsKQEAgLTU4ODgsMTAgKzU4ODgsOSBA
QCBzdWIgR2VuZXJhdGVHZXRDYWxsRGF0YQogCiBzdWIgR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVm
ZXJlbmNlcwogewotICAgIG15ICgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVl
LCAkdGhpc1JlZmVyZW5jZSwgJGluZGVudCkgPSBAXzsKKyAgICBteSAoJGNhbGxXaXRoLCAkb3V0
cHV0QXJyYXksICRyZXR1cm5WYWx1ZSwgJHRoaXNSZWZlcmVuY2UsICRjYWxsRnJhbWVSZWZlcmVu
Y2UsICRpbmRlbnQpID0gQF87CiAKLSAgICBteSAkY2FsbEZyYW1lUG9pbnRlciA9ICJjYWxsRnJh
bWUiOwotICAgIG15ICRjYWxsRnJhbWVSZWZlcmVuY2UgPSAiKmNhbGxGcmFtZSI7CisgICAgbXkg
JGNhbGxGcmFtZVBvaW50ZXIgPSAkY2FsbEZyYW1lUmVmZXJlbmNlICYmICImJGNhbGxGcmFtZVJl
ZmVyZW5jZSI7CiAgICAgbXkgJGdsb2JhbE9iamVjdCA9ICJqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkiOwogCiAgICAgcmV0dXJuIEdlbmVyYXRlQ2FsbFdp
dGgoJGNhbGxXaXRoLCAkb3V0cHV0QXJyYXksICRyZXR1cm5WYWx1ZSwgJHJldHVyblZhbHVlLCAk
Y2FsbEZyYW1lUG9pbnRlciwgJGNhbGxGcmFtZVJlZmVyZW5jZSwgJGdsb2JhbE9iamVjdCwgJGds
b2JhbE9iamVjdCwgJHRoaXNSZWZlcmVuY2UsICRpbmRlbnQpOwpAQCAtNTk3MSwxNSArNTk3MCwx
NSBAQCBzdWIgR2VuZXJhdGVDYWxsV2l0aAogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNE
T01XaW5kb3dCYXNlLmgiKTsKICAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiYWN0aXZlRE9N
V2luZG93KCokZ2xvYmFsT2JqZWN0KSIpOwogICAgIH0KLSAgICBpZiAoJGNvZGVHZW5lcmF0b3It
PkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGNhbGxXaXRoLCAiRmlyc3RXaW5kb3ciKSkgewor
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdp
dGgsICJJbmN1bWJlbnRXaW5kb3ciKSkgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRE9N
V2luZG93LmgiKTsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NV2luZG93QmFzZS5o
Iik7Ci0gICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgImZpcnN0RE9NV2luZG93KCokZ2xvYmFs
T2JqZWN0KSIpOworICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3MsICJpbmN1bWJlbnRET01XaW5k
b3coKiRnbG9iYWxPYmplY3QiIC4gKCRjYWxsRnJhbWVSZWZlcmVuY2UgPyAiLCAiIC4gJGNhbGxG
cmFtZVJlZmVyZW5jZSA6ICIiKSAuICIpIik7CiAgICAgfQotICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJJbmN1bWJlbnRXaW5kb3ci
KSkgeworICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygk
Y2FsbFdpdGgsICJGaXJzdFdpbmRvdyIpKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJE
T01XaW5kb3cuaCIpOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01XaW5kb3dCYXNl
LmgiKTsKLSAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiaW5jdW1iZW50RE9NV2luZG93KCok
Z2xvYmFsT2JqZWN0LCAkY2FsbEZyYW1lUmVmZXJlbmNlKSIpOworICAgICAgICBwdXNoKEBjYWxs
V2l0aEFyZ3MsICJmaXJzdERPTVdpbmRvdygqJGdsb2JhbE9iamVjdCkiKTsKICAgICB9CiAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwg
IlJ1bnRpbWVGbGFncyIpKSB7CiAgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgIiR7Z2xvYmFs
T2JqZWN0fS0+cnVudGltZUZsYWdzKCkiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHJldmlzaW9uIDI4MDI0NykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjAwLDkgKzIwMCw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJr
aW5kYS1sb3cKIAogICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIGF0dHJpYnV0ZSBsb25nIHdp
dGhFeGVjU3RhdGVBdHRyaWJ1dGU7CiAgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgU2V0dGVy
Q2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgbG9uZyB3aXRoQ2Fs
bFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gYXR0cmlidXRlIFRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGU7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmRXhlY1N0
YXRlXSBhdHRyaWJ1dGUgVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNT
dGF0ZUF0dHJpYnV0ZTsKLSAgICBbQ2FsbFdpdGg9ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0ICAm
ICBFeGVjU3RhdGUgIF0gYXR0cmlidXRlIFRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlOworICAgIFtTZXR0ZXJDYWxsV2l0aD1J
bmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBET01TdHJpbmcgd2l0aFNldHRl
ckNhbGxXaXRoQXR0cmlidXRlOwogCiAgICAgLy8gT3B0aW9uYWwgcGFyYW1ldGVycy4KICAgICB1
bmRlZmluZWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQXJnKG9wdGlvbmFsIGxvbmcgb3B0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyODAyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2NSwx
MiArMTc2NSw4IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE8KIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aXRoRXhlY1N0YXRl
QXR0cmlidXRlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial93
aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSk7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdp
dGhBdHRyaWJ1dGUpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T2Jq
X3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKTsKLXN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGUpOwotc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGUpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpf
d2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTVGVzdE9ial93aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOwogI2lmIEVO
QUJMRShDb25kaXRpb24xKQogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
T2JqX2NvbmRpdGlvbmFsQXR0cjEpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNUZXN0T2JqX2NvbmRpdGlvbmFsQXR0cjEpOwpAQCAtMjEzMCw5ICsyMTI2LDcgQEAgc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgIm9ud2Via2l0Zm9v
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpfb253ZWJraXRmb28pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfb253ZWJraXRmb28pIH0gfSwKICAgICB7
ICJ3aXRoRXhlY1N0YXRlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfd2l0aEV4ZWNTdGF0ZUF0dHJpYnV0ZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdE9ial93aXRoRXhlY1N0YXRlQXR0cmlidXRlKSB9IH0sCiAgICAgeyAid2l0aENhbGxX
aXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoQ2FsbFdpdGhBbmRTZXR0
ZXJDYWxsV2l0aEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial93aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxs
V2l0aEF0dHJpYnV0ZSkgfSB9LAotICAgIHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpIH0gfSwKLSAgICB7ICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3dp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2Jq
X3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlKSB9IH0sCi0g
ICAgeyAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRo
U3BhY2VzQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
RXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSkgfSB9LAorICAgIHsgIndpdGhTZXR0ZXJDYWxs
V2l0aEF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dE9ial93aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkKICAgICB7ICJjb25kaXRpb25hbEF0dHIxIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdE9ial9jb25kaXRpb25hbEF0dHIxKSB9IH0sCiAjZWxzZQpAQCAtNDI3MCwxMTUgKzQy
NjQsMzUgQEAgSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial93aQogICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial93aXRoQ2FsbFdp
dGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0
aGlzT2JqZWN0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ial93aXRoU2V0dGVyQ2Fs
bFdpdGhBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdE9iaiYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PigmbGV4aWNhbEdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIWNvbnRleHQpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoKmNvbnRleHQpKSkpOwotfQotCi1KU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ial93aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVz
dE9iaj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0
cmlidXRlVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVzdE9iamVjdCIs
ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIsICJUZXN0T2JqIik7IH0pOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGF1dG8qIGNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0
aW9uSWZOZWNlc3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKLSAg
ICAgICAgcmV0dXJuIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUo
KmNvbnRleHQsICpuYXRpdmVWYWx1ZSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFBy
b3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgYXR0cmlidXRlTmFtZSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpf
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGVHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVjdCkK
LXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQot
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xv
YmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRFeGVjU3RhdGVBdHRyaWJ1dGUoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFtZSwgKmNvbnRleHQpKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwud2l0aFNldHRlckNhbGxXaXRoQXR0cmlidXRlKCkpKSk7CiB9
CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmli
dXRlTmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3dpdGhTZXR0ZXJD
YWxsV2l0aEF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKIHsK
LSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpfd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGF0dHJpYnV0ZU5hbWUpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0
PGpzVGVzdE9ial93aXRoU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0
dHJpYnV0ZU5hbWUpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX3dpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxs
V2l0aEF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0
T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRy
aWJ1dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQXR0cmlidXRlIiwgIlRlc3RP
YmoiKTsgfSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0g
ICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xv
YmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJS0VMWSgh
Y29udGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnZva2VGdW5jdG9yUHJvcGFn
YXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewotICAgICAgICByZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSgqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKLSAg
ICB9KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJp
YnV0ZU5hbWUpKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNl
dEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBh
dHRyaWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ial93aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9i
amVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNvbnRl
eHQpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCpqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCksICpjYWxsRnJhbWUsICpjb250ZXh0KSkpKTsK
LX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUgYXR0cmlidXRlTmFtZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RP
Ymo+OjpnZXQ8anNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRl
V2l0aFNwYWNlc0F0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
Ci17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3Rh
dGVXaXRoU3BhY2VzQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsgfSk7CisgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgYXV0byog
Y29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNl
cHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewot
ICAgICAgICByZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFtZSwgKmNvbnRleHQsICpuYXRpdmVWYWx1ZSk7Cisg
ICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShpbmN1bWJl
bnRET01XaW5kb3coKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSksIGZpcnN0RE9NV2luZG93KCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNh
bEdsb2JhbE9iamVjdCkpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRl
TmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJD
YWxsV2l0aEF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJv
cGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4
ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqX3dpdGhTZXR0ZXJDYWxsV2l0aEF0
dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHJldmlzaW9uIDI4MDI0NykKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvTG9jYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MywyMiArNDMsMjIgQEAK
ICAgICBMZWdhY3lVbmZvcmdlYWJsZSwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2Ug
TG9jYXRpb24gewotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3cs
IERvTm90Q2hlY2tTZWN1cml0eU9uU2V0dGVyXSBzdHJpbmdpZmllciBhdHRyaWJ1dGUgVVNWU3Ry
aW5nIGhyZWY7CisgICAgW1NldHRlckNhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRv
dywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZT
dHJpbmcgaHJlZjsKIAotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIHVu
ZGVmaW5lZCBhc3NpZ24oVVNWU3RyaW5nIHVybCk7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwg
Q2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSB1bmRlZmluZWQgcmVwbGFjZShVU1ZT
dHJpbmcgdXJsKTsKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93XSB1bmRlZmluZWQgcmVsb2Fk
KCk7CisgICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJzdFdpbmRvd10gdW5kZWZpbmVk
IGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93JkZp
cnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHldIHVuZGVmaW5lZCByZXBsYWNlKFVTVlN0cmlu
ZyB1cmwpOworICAgIFtDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3ddIHVuZGVmaW5lZCByZWxvYWQo
KTsKIAogICAgIC8vIFVSSSBkZWNvbXBvc2l0aW9uIGF0dHJpYnV0ZXMKLSAgICBbU2V0dGVyQ2Fs
bFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHByb3Rv
Y29sOwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJp
YnV0ZSBVU1ZTdHJpbmcgaG9zdDsKLSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZp
cnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhvc3RuYW1lOwotICAgIFtTZXR0ZXJDYWxs
V2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcG9ydDsK
LSAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUg
VVNWU3RyaW5nIHBhdGhuYW1lOwotICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmly
c3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc2VhcmNoOwotICAgIFtTZXR0ZXJDYWxsV2l0
aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaGFzaDsKKyAg
ICBbU2V0dGVyQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUg
VVNWU3RyaW5nIHByb3RvY29sOworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cm
Rmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaG9zdDsKKyAgICBbU2V0dGVyQ2FsbFdp
dGg9SW5jdW1iZW50V2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhvc3Ru
YW1lOworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0
dHJpYnV0ZSBVU1ZTdHJpbmcgcG9ydDsKKyAgICBbU2V0dGVyQ2FsbFdpdGg9SW5jdW1iZW50V2lu
ZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHBhdGhuYW1lOworICAgIFtTZXR0
ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJp
bmcgc2VhcmNoOworICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5k
b3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaGFzaDsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBV
U1ZTdHJpbmcgb3JpZ2luOwogCi0gICAgW0xlZ2FjeVVuZm9yZ2VhYmxlLCBTYW1lT2JqZWN0LCBD
YWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGFuY2VzdG9y
T3JpZ2luczsKKyAgICBbU2FtZU9iamVjdCwgQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nTGlzdCBhbmNlc3Rvck9yaWdpbnM7CiB9OwpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjgwMjQ3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMjEtMDctMjMgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21h
aWwuY29tPgorCisgICAgICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3
aXRoIHRoZWlyIGhvbGRlcidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1
c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmpl
Y3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxPYmplY3RF
bGVtZW50L29iamVjdC1hcy1mcmFtZS5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxPYmpl
Y3RFbGVtZW50L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTE9iamVj
dEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1m
cm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMv
YXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0y
Lmh0bWw6CisgICAgICAgIFRoZXNlIHRlc3RzIHVzZWQgdG8gcGFzcyBhcyBpcywgcHJvYmFibHks
IGR1ZSB0byBjb21iaW5hdGlvbiBvZiBvbGQgKGluY29ycmVjdCkgYmVoYXZpb3IgYW5kCisgICAg
ICAgIHNvbWUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBydW4td2Via2l0LXRlc3RzLiBUaGV5
IGZhaWwgb24gTWluaUJyb3dzZXIgLyBDaHJvbWUgLyBGaXJlZm94CisgICAgICAgIHVubGVzcyBt
b2RpZmllZCBub3QgdG8gdXNlIGRhdGE6Ly8gcHJvdG9jb2wsIHdoaWNoIGlzIG5vdCBzeXN0ZW0g
dW5kZXIgdGVzdC4KKworICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24tZXhw
ZWN0ZWQudHh0OgorICAgICAgICBSZXZlcnQgdGhlIGNoYW5nZXMgbWFkZSBpbiByMTc0OTk2LiBM
b2NhdGlvbjo6YXNzaWduKCkgbm93IHVzZXMgY29ycmVjdCAoaW5jdW1iZW50KSBXaW5kb3cKKyAg
ICAgICAgdG8gc2V0IG91dGdvaW5nIHJlZmVycmVyIGFuZCBwZXJmb3JtIHNlY3VyaXR5IGNoZWNr
cywgYWxpZ25pbmcgV2ViS2l0IHdpdGggQ2hyb21lIC8gRmlyZWZveC4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhy
ZWYtZ29wZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhyZWYtZ29wZC5odG1sOiBB
ZGRlZC4KKwogMjAyMS0wNy0yMyAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgog
CiAgICAgICAgIE1pZ3JhdGUgaU9TIDE1IGV4cGVjdGF0aW9ucyB0byBPcGVuU291cmNlIGFuZCBi
dW1wIHZlcnNpb24gbnVtYmVycwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVj
dEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyODAyNDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2Jq
ZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC01LDEwICs1LDEwIEBAIFBBU1Mgd2luZG93LmZyYW1lc1swXS5mcmFtZUVsZW1lbnQuY29udGUK
IFBBU1Mgd2luZG93LmZyYW1lc1sxXS5mcmFtZUVsZW1lbnQubmFtZSBpcyAib2JqIgogUEFTUyB3
aW5kb3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250ZW50V2luZG93IGlzIHdpbmRvdy5mcmFt
ZXNbMV0uZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudC5kZWZhdWx0VmlldwogUEFTUyB3aW5k
b3cuZnJhbWVzWzFdLmZyYW1lRWxlbWVudC5jb250ZW50V2luZG93LmRvY3VtZW50IGlzIHdpbmRv
dy5mcmFtZXNbMV0uZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudAotTG9hZGluZyAnZGF0YTp0
ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJhbWUnIGluIGlmcmFtZS4uLgotTG9hZGlu
ZyAnZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBvYmplY3QnIGluIG9iamVjdC4u
LgotUEFTUyB3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLnRvU3RyaW5nKCkgaXMgImRhdGE6dGV4
dC9odG1sLFVwZGF0ZWQgY29udGVudHMgb2YgaWZyYW1lIgotUEFTUyB3aW5kb3cuZnJhbWVzWzFd
LmxvY2F0aW9uLnRvU3RyaW5nKCkgaXMgImRhdGE6dGV4dC9odG1sLFVwZGF0ZWQgY29udGVudHMg
b2Ygb2JqZWN0IgorTG9hZGluZyAncmVzb3VyY2VzL2R1bW15LWZyYW1lLTIuaHRtbCcgaW4gaWZy
YW1lLi4uCitMb2FkaW5nICdyZXNvdXJjZXMvZHVtbXktZnJhbWUtMS5odG1sJyBpbiBvYmplY3Qu
Li4KK1BBU1Mgd2luZG93LmZyYW1lc1swXS5sb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCJyZXNvdXJj
ZXMvZHVtbXktZnJhbWUtMi5odG1sIikgaXMgdHJ1ZQorUEFTUyB3aW5kb3cuZnJhbWVzWzFdLmxv
Y2F0aW9uLmhyZWYuZW5kc1dpdGgoInJlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwiKSBpcyB0
cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L29iamVjdC1hcy1mcmFt
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVt
ZW50L29iamVjdC1hcy1mcmFtZS5odG1sCShyZXZpc2lvbiAyODAyNDcpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKIAoganNUZXN0SXNBc3luYyA9IHRydWU7CiAKLXZhciB1
cGRhdGVkRnJhbWVVUkwgPSAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250ZW50cyBvZiBpZnJh
bWUiOwotdmFyIHVwZGF0ZWRPYmplY3RVUkwgPSAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBjb250
ZW50cyBvZiBvYmplY3QiOwordmFyIHVwZGF0ZWRGcmFtZVVSTCA9ICJyZXNvdXJjZXMvZHVtbXkt
ZnJhbWUtMi5odG1sIjsKK3ZhciB1cGRhdGVkT2JqZWN0VVJMID0gInJlc291cmNlcy9kdW1teS1m
cmFtZS0xLmh0bWwiOwogCiBmdW5jdGlvbiBydW5UZXN0cygpCiB7CkBAIC0zNiw4ICszNiw4IEBA
IGZ1bmN0aW9uIGhhbmRsZUxvYWQoKQogICAgIGlmIChudW1Mb2FkcyA8IDIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHNob3VsZEJlKCJ3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLnRvU3RyaW5n
KCkiLCAnIicgKyB1cGRhdGVkRnJhbWVVUkwgKyAnIicpOwotICAgIHNob3VsZEJlKCJ3aW5kb3cu
ZnJhbWVzWzFdLmxvY2F0aW9uLnRvU3RyaW5nKCkiLCAnIicgKyB1cGRhdGVkT2JqZWN0VVJMICsg
JyInKTsKKyAgICBzaG91bGRCZVRydWUoYHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24uaHJlZi5l
bmRzV2l0aCgiJHt1cGRhdGVkRnJhbWVVUkx9IilgKTsKKyAgICBzaG91bGRCZVRydWUoYHdpbmRv
dy5mcmFtZXNbMV0ubG9jYXRpb24uaHJlZi5lbmRzV2l0aCgiJHt1cGRhdGVkT2JqZWN0VVJMfSIp
YCk7CiAKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KQEAgLTQ2LDggKzQ2LDggQEAgZnVuY3Rpb24g
aGFuZGxlTG9hZCgpCiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgogCi08aWZy
YW1lIG5hbWU9ImZyYW1lIiBzcmM9ImRhdGE6dGV4dC9odG1sLE9sZCBjb250ZW50cyBvZiBpZnJh
bWUiPjwvaWZyYW1lPgotPG9iamVjdCBuYW1lPSJvYmoiIHR5cGU9InRleHQvaHRtbCIgZGF0YT0i
ZGF0YTp0ZXh0L2h0bWwsT2xkIGNvbnRlbnRzIG9mIG9iamVjdCI+PC9vYmplY3Q+Cis8aWZyYW1l
IG5hbWU9ImZyYW1lIiBzcmM9InJlc291cmNlcy9kdW1teS1mcmFtZS0xLmh0bWwiPjwvaWZyYW1l
PgorPG9iamVjdCBuYW1lPSJvYmoiIHR5cGU9InRleHQvaHRtbCIgZGF0YT0icmVzb3VyY2VzL2R1
bW15LWZyYW1lLTIuaHRtbCI+PC9vYmplY3Q+CiAKIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFt
ZS0xLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVs
ZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1lLTEuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUt
MS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorPCFET0NUWVBFIGh0bWw+CitP
bGQgY29udGVudHMgb2YgaWZyYW1lIC8gTmV3IGNvbnRlbnRzIG9mIG9iamVjdApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvcmVzb3VyY2VzL2R1bW15LWZyYW1l
LTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxl
bWVudC9yZXNvdXJjZXMvZHVtbXktZnJhbWUtMi5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L3Jlc291cmNlcy9kdW1teS1mcmFtZS0y
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACis8IURPQ1RZUEUgaHRtbD4KK09s
ZCBjb250ZW50cyBvZiBvYmplY3QgLyBOZXcgY29udGVudHMgb2YgaWZyYW1lCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVs
ZXNzLWRvYy1jb250ZXh0LTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0
LTIuaHRtbAkocmV2aXNpb24gMjgwMjQ3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0
cmlidXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8aHRtbD4KIDxib2R5IG9ubG9hZD0idGVz
dCgpIj4KLTxpZnJhbWUgc3JjPSdkYXRhOnRleHQvaHRtbCw8YSBpZD0iYSIgaHJlZj0iJTIzIiBv
bmNsaWNrPSJkb2N1bWVudC53cml0ZSh3aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4m
YXBvczsgOiAmYXBvczs8cD5QQVNTPC9wPiZhcG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4n
PjwvaWZyYW1lPgorPGlmcmFtZSBzcmNkb2M9JzxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9
ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6
ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJh
bWU+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlz
dGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFj
dGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAkocmV2aXNpb24gMjgwMjQ3KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1m
cm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiA8aHRtbD4KIDxib2R5IG9ubG9hZD0idGVzdCgpIj4KLTxpZnJhbWUgc3JjPSdkYXRh
OnRleHQvaHRtbCw8YSBpZD0iYSIgaHJlZj0iJTIzIiBvbmNsaWNrPSJkb2N1bWVudC53cml0ZSh3
aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4mYXBvczsgOiAmYXBvczs8cD5QQVNTPC9w
PiZhcG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4nPjwvaWZyYW1lPgorPGlmcmFtZSBzcmNk
b2M9JzxhIGlkPSJhIiBocmVmPSIlMjMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAh
PSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7
KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+CiA8c2NyaXB0PgogaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjgwMjQ3
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
LXBhcmVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw5IEBACi1UaGlz
IHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgd2l0aCB0aGUga2V5d29yZHMg
YWxsb3ctc2NyaXB0cyBhbmQgYWxsb3ctc2FtZS1vcmlnaW4gaXMgYWxsb3dlZCB0byBuYXZpZ2F0
ZSBhbiBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9u
IGF0dHJpYnV0ZS4KK0NPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0
byBpbml0aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFtZSB3aXRoIFVSTCAnc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sJy4gVGhlIGZyYW1lIGF0dGVtcHRpbmcgbmF2aWdhdGlv
biBpcyBzYW5kYm94ZWQsIGFuZCBpcyB0aGVyZWZvcmUgZGlzYWxsb3dlZCBmcm9tIG5hdmlnYXRp
bmcgaXRzIGFuY2VzdG9ycy4KKworQ09OU09MRSBNRVNTQUdFOiBTZWN1cml0eUVycm9yOiBUaGUg
b3BlcmF0aW9uIGlzIGluc2VjdXJlLgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94
ZWQgSUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBi
eSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS4KKworVGhpcyBpcyBkb25lIGJ5IGxv
YWRpbmcgdGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1lcywgYW5kIGEgc2luZ2xlIHNhbmRib3hlZCBv
bmUuIEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQg
b25lIHRvIG5vdCBiZSBvbmUgb2YgdGhlbS4KIAogVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1Mi
IG9uIHN1Y2Nlc3MuCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlz
aW9uIDI4MDI0NykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
bmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOSArMTMsOSBAQCBm
dW5jdGlvbiBjaGVja1Jlc3VsdHMoKQogewogICAgIHZhciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Rlc3RTdGF0dXMnKTsKIAotICAgIGlmIChzZWxmLm5hdmlnYXRlZC5s
b2NhdGlvbi5ocmVmLmluZGV4T2YoJ3BhcmVudC5odG1sJykgIT0gLTEpCi0gICAgICAgIHRlc3RT
dGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IHNhbmRib3hlZCBmcmFtZSBjb3VsZG5cJ3QgbmF2aWdh
dGUnOwotICAgIGVsc2UgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMSkKKyAgICBpZiAoc2VsZi5u
YXZpZ2F0ZWQubG9jYXRpb24uaHJlZi5pbmRleE9mKCdwYXJlbnQuaHRtbCcpID09IC0xKQorICAg
ICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1lIG5hdmln
YXRlZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQogICAgICAgICB0ZXN0
U3RhdHVzLmlubmVySFRNTCA9ICdQQVNTJzsKICAgICBlbHNlCiAgICAgICAgIHRlc3RTdGF0dXMu
aW5uZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Blcmx5JzsKQEAgLTI4
LDcgKzI4LDcgQEAgZnVuY3Rpb24gY291bnRGcmFtZSgpCiB7CiAgICAgKytuYXZpZ2F0ZWRGcmFt
ZXM7CiAKLSAgICBpZiAobmF2aWdhdGVkRnJhbWVzID09IDExKQorICAgIGlmIChuYXZpZ2F0ZWRG
cmFtZXMgPT0gMTApCiAgICAgICAgIGNoZWNrUmVzdWx0cygpOwogfQogCkBAIC0zNywxMCArMzcs
MTMgQEAgZnVuY3Rpb24gY291bnRGcmFtZSgpCiAKIDxib2R5PgogCi0gICAgPHA+VGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIHdpdGggdGhlIGtleXdvcmRzCi0gICAg
YWxsb3ctc2NyaXB0cyBhbmQgYWxsb3ctc2FtZS1vcmlnaW4gaXMgYWxsb3dlZCB0byBuYXZpZ2F0
ZSBhbiBhbmNlc3RvcgorICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVk
IElGcmFtZSBjYW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IKICAgICBpbiB0aGUgZnJhbWUgdHJl
ZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS48L3A+CiAKKyAgICA8cD5UaGlz
IGlzIGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5n
bGUKKyAgICBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQs
IGJ1dCB0aGUgc2FuZGJveGVkCisgICAgb25lIHRvIDxiPm5vdDwvYj4gYmUgb25lIG9mIHRoZW0u
PC9wPgorICAgIAogICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsg
b24gc3VjY2Vzcy48L3A+CiAKICAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1h
c3NpZ24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDI4MDI0NykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBACi1kb2N1bWVudC5yZWZlcnJlciA9
Citkb2N1bWVudC5yZWZlcnJlciA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFt
ZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKIApJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3It
bG9jYXRpb24taHJlZi1nb3BkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlv
bi1ocmVmLWdvcGQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhy
ZWYtZ29wZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACitkb2N1
bWVudC5yZWZlcnJlciA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1nb3BkLmh0bWwKKwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9j
YXRpb24taHJlZi1nb3BkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1nb3Bk
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1nb3BkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlv
biBsb2cobXNnKSB7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRpdik7Cit9
CisKK2Z1bmN0aW9uIGdvKCkgeworICAgIGNvbnN0IHsgc2V0IH0gPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGZyYW1lc1swXS5sb2NhdGlvbiwgImhyZWYiKTsKKyAgICBjb25zdCBz
ZXRCb3VuZFByb3h5ID0gbmV3IFByb3h5KHNldC5iaW5kKGZyYW1lc1swXS5mcmFtZXNbMF0ubG9j
YXRpb24pLCB7fSk7CisgICAgc2V0Qm91bmRQcm94eSgidGFyZ2V0LWZvci1sb2NhdGlvbi5odG1s
Iik7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZSkg
eworICAgIGxvZyhlLmRhdGEpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxpZnJhbWUgc3JjPSJyZXNvdXJj
ZXMvbWlkZGxlLWZyYW1lLWZvci1sb2NhdGlvbi5odG1sIj4KKzwvYm9keT4KKzwvaHRtbD4KKwpJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODAyNDcpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjggQEAKKzIwMjEtMDctMjMgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgorCisgICAgICAgIFtKU0NdIENhbGwgY3VzdG9tIGFjY2Vzc29ycyAvIHZhbHVlcyB3aXRo
IHRoZWlyIGhvbGRlcidzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk5NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3Vr
ZSBTdXp1a2kuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3Jp
cHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURM
L2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jv
c3MtcmVhbG0uaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21h
c2NyaXB0LWJpbmRpbmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5n
L3N1cHBvcnQvY3JlYXRlLXJlYWxtLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9zdXBwb3J0L2R1bW15LWlmcmFtZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmln
aW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVm
LWNyb3NzLXJlYWxtLXNldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93aW5k
b3ctbG9jYXRpb24tYW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3MtcmVhbG0tc2V0Lmh0bWw6IEFkZGVk
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRp
bmcvZXZlbnRzL2NvbXBpbGUtZXZlbnQtaGFuZGxlci1zZXR0aW5ncy1vYmplY3RzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3Njcmlw
dGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1q
b2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJl
cXVlc3QtY3NzLWNyb3NzLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3Jt
LXJlYWRhYmxlLmh0bWw6CisgICAgICAgIEFsbCB0aGVzZSBhcmUgY29uZmlybWVkIHByb2dyZXNz
aW9ucy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGlu
ZS9zdXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1lbGluZS9z
dXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy5odG1sOiBBZGRlZC4KKwogMjAy
MS0wNy0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFhIUi5zZW5kKERvY3VtZW50KSBzaG91bGQgcmVwbGFjZSBtaXNtYXRjaGVkIHN1cnJv
Z2F0ZXMgd2l0aCByZXBsYWNlbWVudCBjaGFyYWN0ZXIgYmVmb3JlIHNlbmRpbmcKSW5kZXg6IExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3Jp
cHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWlt
cGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2Vj
bWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3Mt
cmVhbG0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorCitQQVNT
IENyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBnZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9u
IGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNl
dHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorUEFTUyBDcm9z
cy1yZWFsbSBnbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBvbiBp
bmNvbXBhdGlibGUgb2JqZWN0CitGQUlMIENyb3NzLXJlYWxtIGdsb2JhbCBvYmplY3QncyBnZXR0
ZXIgY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVq
ZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUaGUgV2luZG93Lm5hbWUgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRvdyIKK0ZBSUwgQ3Jvc3Mt
cmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNldHRlciBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCBw
cm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBl
RXJyb3I6IFRoZSBXaW5kb3cubG9jYXRpb24gc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5z
dGFuY2VzIG9mIFdpbmRvdyIKK1BBU1MgQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIG9wZXJh
dGlvbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xv
YmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwv
ZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS1jcm9z
cy1yZWFsbS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0
LWltcGxpY2l0LXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDk3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5Dcm9zcy1yZWFsbSBnZXR0ZXIgLyBzZXR0ZXIgLyBvcGVyYXRpb24gZG9lc24ndCB1c2Ug
bGV4aWNhbCBnbG9iYWwgb2JqZWN0IGlmIHx0aGlzfCB2YWx1ZSBpcyBpbmNvbXBhdGlibGUgb2Jq
ZWN0IC8gbnVsbCAvIHVuZGVmaW5lZDwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtZ2V0dGVyIj4KKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZu
LWF0dHJpYnV0ZS1zZXR0ZXIiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNkZm4tY3JlYXRlLW9wZXJhdGlvbi1mdW5jdGlvbiI+CisKKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJzdXBwb3J0L2NyZWF0ZS1yZWFsbS5qcyI+PC9zY3JpcHQ+CisKKzxib2R5PgorPHNjcmlw
dD4KK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNy
ZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG5vdFdpbmRvdyA9IE9iamVjdC5jcmVhdGUoT2JqZWN0
LmdldFByb3RvdHlwZU9mKG90aGVyKSk7CisKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5
cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKG90aGVyKS53aW5kb3c7IH0pOworICAgIGFz
c2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Iob3RoZXIsICJoaXN0b3J5IikuZ2V0LmNhbGwobm90V2luZG93KTsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5n
ZXQob3RoZXIsICJzY3JlZW4iLCBub3RXaW5kb3cpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkob3RoZXIsIHt9KS5vbmNsaWNrOyB9
KTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIHRocm93cyB3aGVuIGNh
bGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+
IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG5v
dFdpbmRvdyA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG90aGVyKSk7CisK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3Jl
YXRlKG90aGVyKS5uYW1lID0gImR1bW15IjsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhl
ci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvdGhl
ciwgInN0YXR1cyIpLnNldC5jYWxsKG5vdFdpbmRvdywgb3RoZXIuc3RhdHVzKTsgfSk7CisgICAg
Ly8gcGFyZW50IGlzIFtSZXBsYWNlYWJsZV0KKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5
cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChvdGhlciwgInBhcmVudCIsIHdpbmRvdywgbm90
V2luZG93KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+
IHsgbmV3IFByb3h5KG90aGVyLCB7fSkubG9jYXRpb24gPSBsb2NhdGlvbjsgfSk7Cit9LCAiQ3Jv
c3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5j
b21wYXRpYmxlIG9iamVjdCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29u
c3Qgb3RoZXIgPSBhd2FpdCBjcmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBub3RXaW5kb3cgPSBP
YmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvdGhlcikpOworCisgICAgYXNzZXJ0
X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShvdGhlciku
Zm9jdXMoKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+
IHsgb3RoZXIuY2xlYXJJbnRlcnZhbC5jYWxsKG5vdFdpbmRvdywgMCk7IH0pOworICAgIGFzc2Vy
dF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3QuYXBwbHkob3RoZXIu
Ymx1ciwgbm90V2luZG93LCBbXSk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlw
ZUVycm9yLCAoKSA9PiB7IG5ldyBQcm94eShvdGhlciwge30pLnJlbW92ZUV2ZW50TGlzdGVuZXIo
ImZvbyIsICgpID0+IHt9KTsgfSk7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xvYmFsIG9iamVjdCdzIG9w
ZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2FpdCBjcmVhdGVS
ZWFsbSh0KTsKKyAgICBjb25zdCBvdGhlck5hbWVHZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG90aGVyLCAibmFtZSIpLmdldDsKKworICAgIGFzc2VydF9lcXVhbHMoUmVm
bGVjdC5nZXQob3RoZXIsICJzZWxmIiwgbnVsbCksIG90aGVyKTsKKyAgICBhc3NlcnRfZXF1YWxz
KFJlZmxlY3QuZ2V0KG90aGVyLCAiZG9jdW1lbnQiLCB1bmRlZmluZWQpLCBvdGhlci5kb2N1bWVu
dCk7CisgICAgYXNzZXJ0X2VxdWFscyhvdGhlck5hbWVHZXR0ZXIuY2FsbChudWxsKSwgImR1bW15
Iik7CisgICAgLy8gQW4gZW5naW5lIG1pZ2h0IGhhdmUgZGlmZmVyZW50IGNvZGUgcGF0aCBmb3Ig
Y2FsbGluZyBhIGZ1bmN0aW9uIGZyb20gb3V0ZXIgc2NvcGUgdG8gaW1wbGVtZW50IHN0ZXAgMS5i
LmlpaSBvZiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWV2YWx1YXRlY2FsbAorICAgIGFz
c2VydF9lcXVhbHMoKCgpID0+IG90aGVyTmFtZUdldHRlcigpKSgpLCAiZHVtbXkiKTsKK30sICJD
cm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZp
bmVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3
YWl0IGNyZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG90aGVyTG9jYXRpb25TZXR0ZXIgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90aGVyLCAibG9jYXRpb24iKS5zZXQ7CisgICAg
Y29uc3Qgb3RoZXJIcmVmID0gb3RoZXIubG9jYXRpb24uaHJlZjsKKyAgICBjb25zdCBuZXdTZWxm
ID0ge307CisKKyAgICAvLyBzZWxmIGlzIFtSZXBsYWNlYWJsZV0KKyAgICBhc3NlcnRfdHJ1ZShS
ZWZsZWN0LnNldChvdGhlciwgInNlbGYiLCBuZXdTZWxmLCBudWxsKSk7CisgICAgYXNzZXJ0X3Ry
dWUoUmVmbGVjdC5zZXQob3RoZXIsICJuYW1lIiwgIm5ld05hbWUiLCB1bmRlZmluZWQpKTsKKwor
ICAgIG90aGVyTG9jYXRpb25TZXR0ZXIuY2FsbChudWxsLCBgJHtvdGhlckhyZWZ9I2Zvb2ApOwor
ICAgIGFzc2VydF9lcXVhbHMob3RoZXIubG9jYXRpb24uaGFzaCwgIiNmb28iKTsKKyAgICAvLyBB
biBlbmdpbmUgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgY29kZSBwYXRoIGZvciBjYWxsaW5nIGEgZnVu
Y3Rpb24gZnJvbSBvdXRlciBzY29wZSB0byBpbXBsZW1lbnQgc3RlcCAxLmIuaWlpIG9mIGh0dHBz
Oi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZXZhbHVhdGVjYWxsCisgICAgKCgpID0+IHsgb3RoZXJM
b2NhdGlvblNldHRlcihgJHtvdGhlckhyZWZ9I2JhcmApOyB9KSgpOworICAgIGFzc2VydF9lcXVh
bHMob3RoZXIubG9jYXRpb24uaGFzaCwgIiNiYXIiKTsKKworICAgIC8vIENoZWNrIHRoZXNlIGFm
dGVyIGNhbGxpbmcgImxvY2F0aW9uIiBzZXR0ZXIgbWFrZSBzdXJlIG5vIG5hdmlnYXRpb24gaGFz
IG9jY3VycmVkCisgICAgYXNzZXJ0X2VxdWFscyhvdGhlci5zZWxmLCBuZXdTZWxmKTsKKyAgICBh
c3NlcnRfZXF1YWxzKG90aGVyLm5hbWUsICJuZXdOYW1lIik7Cit9LCAiQ3Jvc3MtcmVhbG0gZ2xv
YmFsIG9iamVjdCdzIHNldHRlciBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCIpOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2FpdCBjcmVhdGVSZWFs
bSh0KTsKKyAgICBjb25zdCBvdGhlckZvY3VzID0gb3RoZXIuZm9jdXM7CisgICAgY29uc3Qgb3Ro
ZXJEaXNwYXRjaEV2ZW50ID0gb3RoZXIuZGlzcGF0Y2hFdmVudDsKKworICAgIGFzc2VydF9lcXVh
bHMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgZG9jdW1lbnQuYm9keSk7CisgICAgLy8gQW4gZW5n
aW5lIG1pZ2h0IGhhdmUgZGlmZmVyZW50IGNvZGUgcGF0aCBmb3IgY2FsbGluZyBhIGZ1bmN0aW9u
IGZyb20gb3V0ZXIgc2NvcGUgdG8gaW1wbGVtZW50IHN0ZXAgMS5iLmlpaSBvZiBodHRwczovL3Rj
MzkuZXMvZWNtYTI2Mi8jc2VjLWV2YWx1YXRlY2FsbAorICAgICgoKSA9PiB7IG90aGVyRm9jdXMo
KTsgfSkoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuY29udGVu
dFdpbmRvdywgb3RoZXIpOworCisgICAgbGV0IGNhdWdodEV2ZW50OworICAgIG90aGVyLmFkZEV2
ZW50TGlzdGVuZXIuY2FsbChudWxsLCAiZm9vIiwgZXZlbnQgPT4geyBjYXVnaHRFdmVudCA9IGV2
ZW50OyB9KTsKKyAgICBjb25zdCBkaXNwYXRjaGVkRXZlbnQgPSBuZXcgb3RoZXIuRXZlbnQoImZv
byIpOworICAgIGFzc2VydF90cnVlKG90aGVyRGlzcGF0Y2hFdmVudChkaXNwYXRjaGVkRXZlbnQp
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGNhdWdodEV2ZW50LCBkaXNwYXRjaGVkRXZlbnQpOworCisg
ICAgY29uc3QgbWVzc2FnZVByb21pc2UgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIG90aGVyLCAibWVz
c2FnZSIpLndhaXRfZm9yKCJtZXNzYWdlIik7CisgICAgb3RoZXIucG9zdE1lc3NhZ2UuY2FsbChu
dWxsLCAiZm9vIik7CisgICAgYXNzZXJ0X2VxdWFscygoYXdhaXQgbWVzc2FnZVByb21pc2UpLmRh
dGEsICJmb28iKTsKK30sICJDcm9zcy1yZWFsbSBnbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIGNh
bGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGlu
Zy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2Vj
bWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQu
dHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZhbGlkLXRoaXMtdmFsdWUtY3Jv
c3MtcmVhbG0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorCitQ
QVNTIENyb3NzLXJlYWxtIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxl
IG9iamVjdAorUEFTUyBDcm9zcy1yZWFsbSBzZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGlu
Y29tcGF0aWJsZSBvYmplY3QKK1BBU1MgQ3Jvc3MtcmVhbG0gb3BlcmF0aW9uIHRocm93cyB3aGVu
IGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnZh
bGlkLXRoaXMtdmFsdWUtY3Jvc3MtcmVhbG0uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRp
bmcvaW52YWxpZC10aGlzLXZhbHVlLWNyb3NzLXJlYWxtLmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNj
cmlwdC1iaW5kaW5nL2ludmFsaWQtdGhpcy12YWx1ZS1jcm9zcy1yZWFsbS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPkNyb3NzLXJlYWxtIGdldHRlciAvIHNldHRlciAvIG9wZXJhdGlvbiBk
b2Vzbid0IHVzZSBsZXhpY2FsIGdsb2JhbCBvYmplY3QgdG8gdGhyb3cgYW4gZXJyb3IgZm9yIGlu
Y29tcGF0aWJsZSB8dGhpc3wgdmFsdWU8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLWdldHRlciI+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rm
bi1hdHRyaWJ1dGUtc2V0dGVyIj4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9oZXlj
YW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWNyZWF0ZS1vcGVyYXRpb24tZnVuY3Rpb24iPgorCis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0ic3VwcG9ydC9jcmVhdGUtcmVhbG0uanMiPjwvc2NyaXB0PgorCis8Ym9keT4KKzxzY3Jp
cHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qgb3RoZXIgPSBhd2FpdCBj
cmVhdGVSZWFsbSh0KTsKKyAgICBjb25zdCBub3RFbGVtZW50ID0gT2JqZWN0LmNyZWF0ZShvdGhl
ci5IVE1MRWxlbWVudC5wcm90b3R5cGUpOworCisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5U
eXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShvdGhlci5kb2N1bWVudCkuaGVhZDsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvdGhlci5IVE1MRWxlbWVudC5wcm90b3R5cGUsICJ0aXRs
ZSIpLmdldC5jYWxsKG5vdEVsZW1lbnQpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVy
LlR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LmdldChvdGhlci5kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKSwgImhpZGRlbiIsIG5vdEVsZW1lbnQpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkob3RoZXIudGV4dCwge30pLm5v
ZGVUeXBlOyB9KTsKK30sICJDcm9zcy1yZWFsbSBnZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9u
IGluY29tcGF0aWJsZSBvYmplY3QiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAg
IGNvbnN0IG90aGVyID0gYXdhaXQgY3JlYXRlUmVhbG0odCk7CisgICAgY29uc3Qgbm90RWxlbWVu
dCA9IE9iamVjdC5jcmVhdGUob3RoZXIuSFRNTEVsZW1lbnQucHJvdG90eXBlKTsKKyAgICBjb25z
dCBub3RUZXh0ID0gT2JqZWN0LmNyZWF0ZShvdGhlci5UZXh0LnByb3RvdHlwZSk7CisKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKG90
aGVyLmVsZW1lbnQpLmlubmVySFRNTCA9ICIiOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90
aGVyLlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90
aGVyLkhUTUxFbGVtZW50LnByb3RvdHlwZSwgIm9uY2xpY2siKS5zZXQuY2FsbChub3RFbGVtZW50
LCBudWxsKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+
IHsgUmVmbGVjdC5zZXQobmV3IG90aGVyLlRleHQoImZvbyIpLCAiZGF0YSIsICJmb28iLCBub3RU
ZXh0KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsg
bmV3IFByb3h5KG90aGVyLmRvY3VtZW50LCB7fSkudGl0bGUgPSAiIjsgfSk7Cit9LCAiQ3Jvc3Mt
cmVhbG0gc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7
CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBvdGhlciA9IGF3YWl0IGNy
ZWF0ZVJlYWxtKHQpOworICAgIGNvbnN0IG5vdERvY3VtZW50ID0gT2JqZWN0LmNyZWF0ZShvdGhl
ci5IVE1MRG9jdW1lbnQucHJvdG90eXBlKTsKKyAgICBjb25zdCBub3RUZXh0ID0gT2JqZWN0LmNy
ZWF0ZShvdGhlci5UZXh0LnByb3RvdHlwZSk7CisKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG90aGVy
LlR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKG90aGVyLmVsZW1lbnQpLmNsaWNrKCk7
IH0pOworICAgIGFzc2VydF90aHJvd3NfanMob3RoZXIuVHlwZUVycm9yLCAoKSA9PiB7IG90aGVy
LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IuY2FsbChub3REb2N1bWVudCwgIioiKTsgfSk7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhvdGhlci5UeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5hcHBseShv
dGhlci50ZXh0LnJlbW92ZSwgbm90VGV4dCwgW10pOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KG90aGVyLlR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkob3RoZXIuZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiYSIpLCB7fSkuYWRkRXZlbnRMaXN0ZW5lcigiZm9vIiwgKCkgPT4ge30pOyB9KTsK
K30sICJDcm9zcy1yZWFsbSBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0
aWJsZSBvYmplY3QiKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3N1cHBvcnQvY3Jl
YXRlLXJlYWxtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9zdXBwb3J0L2NyZWF0ZS1y
ZWFsbS5qcwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9jcmVhdGUtcmVh
bG0uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorInVzZSBzdHJpY3QiOworCitm
dW5jdGlvbiBjcmVhdGVSZWFsbSh0KSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUg
PT4geworICAgICAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJh
bWUiKTsKKyAgICAgICAgdC5hZGRfY2xlYW51cCgoKSA9PiB7IGlmcmFtZS5yZW1vdmUoKTsgfSk7
CisgICAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7IHJlc29sdmUoaWZyYW1lLmNvbnRlbnRX
aW5kb3cpOyB9OworICAgICAgICBpZnJhbWUubmFtZSA9ICJkdW1teSI7CisgICAgICAgIGlmcmFt
ZS5zcmMgPSAic3VwcG9ydC9kdW1teS1pZnJhbWUuaHRtbCI7CisgICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kKGlmcmFtZSk7CisgICAgfSk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9y
dC9kdW1teS1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9k
dW1teS1pZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvc3VwcG9ydC9k
dW1teS1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGJvZHk+Zm9vCis8YnV0dG9uIGlkPSJl
bGVtZW50Ij48L2J1dHRvbj4KKzxzY3JpcHQ+CisgICAgd2luZG93LnRleHQgPSBkb2N1bWVudC5i
b2R5LmZpcnN0Q2hpbGQ7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMvd2luZG93LWxvY2F0aW9uLWFuZC1sb2NhdGlvbi1ocmVmLWNyb3NzLXJlYWxtLXNldC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93
aW5kb3ctbG9jYXRpb24tYW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3MtcmVhbG0tc2V0LWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL3dpbmRv
dy1sb2NhdGlvbi1hbmQtbG9jYXRpb24taHJlZi1jcm9zcy1yZWFsbS1zZXQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKworUEFTUyBTYW1lLW9yaWdpbiB3aW5k
b3cubG9jYXRpb24gZ2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24g
aW52YWxpZCB8dGhpc3wgdmFsdWUKK1BBU1MgU2FtZS1vcmlnaW4gbG9jYXRpb24uaHJlZiBnZXR0
ZXIgdGhyb3dzIFR5cGVFcnJvciBpbiBob2xkZXIncyByZWFsbSBvbiBpbnZhbGlkIHx0aGlzfCB2
YWx1ZQorUEFTUyBDcm9zcy1vcmlnaW4gbG9jYXRpb24uaHJlZiBnZXR0ZXIgdGhyb3dzIFNlY3Vy
aXR5RXJyb3IgaW4gbGV4aWNhbCByZWFsbQorUEFTUyBTYW1lLW9yaWdpbiB3aW5kb3cubG9jYXRp
b24gc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gaW52YWxpZCB8
dGhpc3wgdmFsdWUKK1BBU1MgU2FtZS1vcmlnaW4gbG9jYXRpb24uaHJlZiBzZXR0ZXIgdGhyb3dz
IFR5cGVFcnJvciBpbiBob2xkZXIncyByZWFsbSBvbiBpbnZhbGlkIHx0aGlzfCB2YWx1ZQorUEFT
UyBDcm9zcy1vcmlnaW4gd2luZG93LmxvY2F0aW9uIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGlu
IGxleGljYWwgcmVhbG0gb24gaW52YWxpZCB8dGhpc3wgdmFsdWUKK1BBU1MgQ3Jvc3Mtb3JpZ2lu
IGxvY2F0aW9uLmhyZWYgc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gbGV4aWNhbCByZWFsbSBv
biBpbnZhbGlkIHx0aGlzfCB2YWx1ZQorUEFTUyBTYW1lLW9yaWdpbiB3aW5kb3cubG9jYXRpb25g
IHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGluIGhvbGRlcidzIHJlYWxtIG9uIG5vbi1jb2VyY2li
bGUgVVJMIGFyZ3VtZW50CitQQVNTIFNhbWUtb3JpZ2luIGxvY2F0aW9uLmhyZWYgc2V0dGVyIHRo
cm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gbm9uLWNvZXJjaWJsZSBVUkwgYXJn
dW1lbnQKK1BBU1MgQ3Jvc3Mtb3JpZ2luIHdpbmRvdy5sb2NhdGlvbiBzZXR0ZXIgdGhyb3dzIFR5
cGVFcnJvciBpbiBsZXhpY2FsIHJlYWxtIG9uIG5vbi1jb2VyY2libGUgVVJMIGFyZ3VtZW50CitQ
QVNTIENyb3NzLW9yaWdpbiBsb2NhdGlvbi5ocmVmIHNldHRlciB0aHJvd3MgVHlwZUVycm9yIGlu
IGxleGljYWwgcmVhbG0gb24gbm9uLWNvZXJjaWJsZSBVUkwgYXJndW1lbnQKKwpJbmRleDogTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29y
aWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93aW5kb3ctbG9jYXRpb24tYW5kLWxvY2F0aW9uLWhy
ZWYtY3Jvc3MtcmVhbG0tc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmln
aW4tb2JqZWN0cy93aW5kb3ctbG9jYXRpb24tYW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3MtcmVhbG0t
c2V0Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93
aW5kb3ctbG9jYXRpb24tYW5kLWxvY2F0aW9uLWhyZWYtY3Jvc3MtcmVhbG0tc2V0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPkNyb3NzLXJlYWxtIFtbU2V0XV0gdG8gd2luZG93LmxvY2F0
aW9uIGFuZCBsb2NhdGlvbi5ocmVmIHRocm93cyBhbiBlcnJvciBvZiBjb3JyZWN0IHJlYWxtPC90
aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvI3dpbmRvdyI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1VuZm9yZ2VhYmxlIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1o
b3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKzxib2R5PgorPHNjcmlwdD4KK2NvbnN0IFVSTF9T
QU1FX09SSUdJTiA9IGdldF9ob3N0X2luZm8oKS5PUklHSU5BTF9IT1NUOworY29uc3QgVVJMX0NS
T1NTX09SSUdJTiA9IGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU47Citjb25zdCBV
UkxfVkFMSUQgPSAiI2ZvbyI7Citjb25zdCBVUkxfSU5WQUxJRCA9ICJodHRwOi8vIyI7CisKK2Nv
bnN0IHsgZ2V0OiBsb2NhdGlvbkdldCwgc2V0OiBsb2NhdGlvblNldCB9ID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICJsb2NhdGlvbiIpOworY29uc3QgeyBnZXQ6IGhy
ZWZHZXQsIHNldDogaHJlZlNldCB9ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihs
b2NhdGlvbiwgImhyZWYiKTsKKworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29u
c3Qgc2FtZU9yaWdpbldpbmRvdyA9IGF3YWl0IG1ha2VXaW5kb3codCwgVVJMX1NBTUVfT1JJR0lO
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5kb3cuVHlwZUVycm9yLCAoKSA9
PiB7IE9iamVjdC5jcmVhdGUoc2FtZU9yaWdpbldpbmRvdykubG9jYXRpb247IH0pOworICAgIGFz
c2VydF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRvdy5UeXBlRXJyb3IsICgpID0+IHsgUmVmbGVj
dC5nZXQoc2FtZU9yaWdpbldpbmRvdywgImxvY2F0aW9uIiwge30pOyB9KTsKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBsb2NhdGlvbkdldC5jYWxsKHt9KTsgfSk7Cit9
LCAiU2FtZS1vcmlnaW4gd2luZG93LmxvY2F0aW9uIGdldHRlciB0aHJvd3MgVHlwZUVycm9yIGlu
IGhvbGRlcidzIHJlYWxtIG9uIGludmFsaWQgfHRoaXN8IHZhbHVlIik7CisKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBzYW1lT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdp
bmRvdyh0LCBVUkxfU0FNRV9PUklHSU4pOworICAgIGFzc2VydF90aHJvd3NfanMoc2FtZU9yaWdp
bldpbmRvdy5UeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShzYW1lT3JpZ2luV2luZG93
LmxvY2F0aW9uKS5ocmVmOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5k
b3cuVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3QuZ2V0KHNhbWVPcmlnaW5XaW5kb3cubG9jYXRp
b24sICJocmVmIiwge30pOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkg
PT4geyBocmVmR2V0KCk7IH0pOworfSwgIlNhbWUtb3JpZ2luIGxvY2F0aW9uLmhyZWYgZ2V0dGVy
IHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gaW52YWxpZCB8dGhpc3wgdmFs
dWUiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGNyb3NzT3JpZ2lu
V2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBVUkxfQ1JPU1NfT1JJR0lOKTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2RvbSgiU0VDVVJJVFlfRVJSIiwgKCkgPT4geyBjcm9zc09yaWdpbldpbmRvdy5s
b2NhdGlvbi5ocmVmOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiU0VDVVJJVFlfRVJSIiwg
KCkgPT4geyBocmVmR2V0LmNhbGwoY3Jvc3NPcmlnaW5XaW5kb3cubG9jYXRpb24pOyB9KTsKKyAg
ICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY3Jvc3NPcmln
aW5XaW5kb3cubG9jYXRpb24sICJocmVmIikuZ2V0LCB1bmRlZmluZWQpOworfSwgIkNyb3NzLW9y
aWdpbiBsb2NhdGlvbi5ocmVmIGdldHRlciB0aHJvd3MgU2VjdXJpdHlFcnJvciBpbiBsZXhpY2Fs
IHJlYWxtIik7CisKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHNhbWVP
cmlnaW5XaW5kb3cgPSBhd2FpdCBtYWtlV2luZG93KHQsIFVSTF9TQU1FX09SSUdJTik7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhzYW1lT3JpZ2luV2luZG93LlR5cGVFcnJvciwgKCkgPT4geyBPYmpl
Y3QuY3JlYXRlKHNhbWVPcmlnaW5XaW5kb3cpLmxvY2F0aW9uID0gVVJMX1ZBTElEOyB9KTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKHNhbWVPcmlnaW5XaW5kb3cuVHlwZUVycm9yLCAoKSA9PiB7IFJl
ZmxlY3Quc2V0KHNhbWVPcmlnaW5XaW5kb3csICJsb2NhdGlvbiIsIFVSTF9WQUxJRCwge30pOyB9
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBsb2NhdGlvblNldC5j
YWxsKCgpID0+IHt9LCBVUkxfVkFMSUQpOyB9KTsKK30sICJTYW1lLW9yaWdpbiB3aW5kb3cubG9j
YXRpb24gc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gaG9sZGVyJ3MgcmVhbG0gb24gaW52YWxp
ZCB8dGhpc3wgdmFsdWUiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0
IHNhbWVPcmlnaW5XaW5kb3cgPSBhd2FpdCBtYWtlV2luZG93KHQsIFVSTF9TQU1FX09SSUdJTik7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhzYW1lT3JpZ2luV2luZG93LlR5cGVFcnJvciwgKCkgPT4g
eyBPYmplY3QuY3JlYXRlKHNhbWVPcmlnaW5XaW5kb3cubG9jYXRpb24pLmhyZWYgPSBVUkxfVkFM
SUQ7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRvdy5UeXBlRXJyb3Is
ICgpID0+IHsgUmVmbGVjdC5zZXQoc2FtZU9yaWdpbldpbmRvdy5sb2NhdGlvbiwgImhyZWYiLCBV
UkxfVkFMSUQsIHt9KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IHsgaHJlZlNldC5jYWxsKHVuZGVmaW5lZCwgVVJMX1ZBTElEKTsgfSk7Cit9LCAiU2FtZS1vcmln
aW4gbG9jYXRpb24uaHJlZiBzZXR0ZXIgdGhyb3dzIFR5cGVFcnJvciBpbiBob2xkZXIncyByZWFs
bSBvbiBpbnZhbGlkIHx0aGlzfCB2YWx1ZSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CisgICAgY29uc3QgY3Jvc3NPcmlnaW5XaW5kb3cgPSBhd2FpdCBtYWtlV2luZG93KHQsIFVSTF9D
Uk9TU19PUklHSU4pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IE9i
amVjdC5jcmVhdGUoY3Jvc3NPcmlnaW5XaW5kb3cpLmxvY2F0aW9uID0gVVJMX1ZBTElEOyB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChjcm9z
c09yaWdpbldpbmRvdywgImxvY2F0aW9uIiwgVVJMX1ZBTElELCB7fSk7IH0pOworICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGxvY2F0aW9uU2V0LmNhbGwoW10sIFVSTF9W
QUxJRCk7IH0pOworfSwgIkNyb3NzLW9yaWdpbiB3aW5kb3cubG9jYXRpb24gc2V0dGVyIHRocm93
cyBUeXBlRXJyb3IgaW4gbGV4aWNhbCByZWFsbSBvbiBpbnZhbGlkIHx0aGlzfCB2YWx1ZSIpOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgY3Jvc3NPcmlnaW5XaW5kb3cg
PSBhd2FpdCBtYWtlV2luZG93KHQsIFVSTF9DUk9TU19PUklHSU4pOworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5jcmVhdGUoY3Jvc3NPcmlnaW5XaW5kb3cu
bG9jYXRpb24pLmhyZWYgPSBVUkxfVkFMSUQ7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCAoKSA9PiB7IFJlZmxlY3Quc2V0KGNyb3NzT3JpZ2luV2luZG93LmxvY2F0aW9uLCAi
aHJlZiIsIFVSTF9WQUxJRCwge30pOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4geyBocmVmU2V0LmNhbGwobnVsbCwgVVJMX1ZBTElEKTsgfSk7Cit9LCAiQ3Jvc3Mt
b3JpZ2luIGxvY2F0aW9uLmhyZWYgc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gbGV4aWNhbCBy
ZWFsbSBvbiBpbnZhbGlkIHx0aGlzfCB2YWx1ZSIpOworCisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgICBjb25zdCBzYW1lT3JpZ2luV2luZG93ID0gYXdhaXQgbWFrZVdpbmRvdyh0LCBV
UkxfU0FNRV9PUklHSU4pOworICAgIGFzc2VydF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRvdy5U
eXBlRXJyb3IsICgpID0+IHsgc2FtZU9yaWdpbldpbmRvdy5sb2NhdGlvbiA9IFN5bWJvbCgpOyB9
KTsKKworICAgIC8vIFRoZSBlcnJvciBvcmlnaW5hdGVzIGluIHNhbWVPcmlnaW5XaW5kb3cubG9j
YXRpb24uaHJlZiBzZXR0ZXIsIGhlbmNlIGl0J3Mgbm90IGluIHJlYWxtIG9mIGxvY2F0aW9uU2V0
LgorICAgIGFzc2VydF90aHJvd3NfanMoc2FtZU9yaWdpbldpbmRvdy5UeXBlRXJyb3IsICgpID0+
IHsgbG9jYXRpb25TZXQuY2FsbChzYW1lT3JpZ2luV2luZG93LCBTeW1ib2woKSk7IH0pOworfSwg
IlNhbWUtb3JpZ2luIHdpbmRvdy5sb2NhdGlvbmAgc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4g
aG9sZGVyJ3MgcmVhbG0gb24gbm9uLWNvZXJjaWJsZSBVUkwgYXJndW1lbnQiKTsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHNhbWVPcmlnaW5XaW5kb3cgPSBhd2FpdCBt
YWtlV2luZG93KHQsIFVSTF9TQU1FX09SSUdJTik7CisgICAgYXNzZXJ0X3Rocm93c19qcyhzYW1l
T3JpZ2luV2luZG93LlR5cGVFcnJvciwgKCkgPT4geyBzYW1lT3JpZ2luV2luZG93LmxvY2F0aW9u
LmhyZWYgPSBTeW1ib2woKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IHsgaHJlZlNldC5jYWxsKHNhbWVPcmlnaW5XaW5kb3cubG9jYXRpb24sIFN5bWJvbCgpKTsg
fSk7Cit9LCAiU2FtZS1vcmlnaW4gbG9jYXRpb24uaHJlZiBzZXR0ZXIgdGhyb3dzIFR5cGVFcnJv
ciBpbiBob2xkZXIncyByZWFsbSBvbiBub24tY29lcmNpYmxlIFVSTCBhcmd1bWVudCIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgY3Jvc3NPcmlnaW5XaW5kb3cgPSBh
d2FpdCBtYWtlV2luZG93KHQsIFVSTF9DUk9TU19PUklHSU4pOworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiB7IGNyb3NzT3JpZ2luV2luZG93LmxvY2F0aW9uID0gU3ltYm9s
KCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGxvY2F0aW9u
U2V0LmNhbGwoY3Jvc3NPcmlnaW5XaW5kb3csIFN5bWJvbCgpKTsgfSk7Cit9LCAiQ3Jvc3Mtb3Jp
Z2luIHdpbmRvdy5sb2NhdGlvbiBzZXR0ZXIgdGhyb3dzIFR5cGVFcnJvciBpbiBsZXhpY2FsIHJl
YWxtIG9uIG5vbi1jb2VyY2libGUgVVJMIGFyZ3VtZW50Iik7CisKK3Byb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgICBjb25zdCBjcm9zc09yaWdpbldpbmRvdyA9IGF3YWl0IG1ha2VXaW5kb3co
dCwgVVJMX0NST1NTX09SSUdJTik7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IHsgY3Jvc3NPcmlnaW5XaW5kb3cubG9jYXRpb24uaHJlZiA9IFN5bWJvbCgpOyB9KTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBocmVmU2V0LmNhbGwoY3Jvc3NP
cmlnaW5XaW5kb3cubG9jYXRpb24sIFN5bWJvbCgpKTsgfSk7Cit9LCAiQ3Jvc3Mtb3JpZ2luIGxv
Y2F0aW9uLmhyZWYgc2V0dGVyIHRocm93cyBUeXBlRXJyb3IgaW4gbGV4aWNhbCByZWFsbSBvbiBu
b24tY29lcmNpYmxlIFVSTCBhcmd1bWVudCIpOworCitmdW5jdGlvbiBtYWtlV2luZG93KHQsIHNy
YykgeworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgY29uc3Qg
aWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIHQuYWRk
X2NsZWFudXAoKCkgPT4geyBpZnJhbWUucmVtb3ZlKCk7IH0pOworICAgICAgICBpZnJhbWUub25s
b2FkID0gKCkgPT4geyByZXNvbHZlKGlmcmFtZS5jb250ZW50V2luZG93KTsgfTsKKyAgICAgICAg
aWZyYW1lLnNyYyA9IHNyYzsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoaWZyYW1lKTsK
KyAgICB9KTsKK30KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9jb21waWxl
LWV2ZW50LWhhbmRsZXItc2V0dGluZ3Mtb2JqZWN0cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFw
cGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9jb21waWxlLWV2ZW50LWhhbmRsZXItc2V0dGluZ3Mtb2Jq
ZWN0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI4MDI0NykKKysrIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVu
dHMvY29tcGlsZS1ldmVudC1oYW5kbGVyLXNldHRpbmdzLW9iamVjdHMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogCiBQQVNTIFRoZSBGdW5jdGlvbiBpbnN0YW5j
ZSBtdXN0IGJlIGNyZWF0ZWQgaW4gdGhlIFJlYWxtIG9mIHRoZSBub2RlIGRvY3VtZW50CiBGQUlM
IFRoZSBlbnRyeSBzZXR0aW5ncyBvYmplY3Qgd2hpbGUgZXhlY3V0aW5nIHRoZSBjb21waWxlZCBj
YWxsYmFjayB2aWEgV2ViIElETCdzIGludm9rZSBtdXN0IGJlIHRoYXQgb2YgdGhlIG5vZGUgZG9j
dW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIi9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5n
L2V2ZW50cy9yZXNvdXJjZXMvb3Blbi13aW5kb3cuaHRtbCIgYnV0IGdvdCAiL2h0bWwvd2ViYXBw
YXBpcy9zY3JpcHRpbmcvZXZlbnRzL29wZW4td2luZG93Lmh0bWwiCi1GQUlMIFRoZSBpbmN1bWJl
bnQgc2V0dGluZ3Mgb2JqZWN0IHdoaWxlIGV4ZWN1dGluZyB0aGUgY29tcGlsZWQgY2FsbGJhY2sg
dmlhIFdlYiBJREwncyBpbnZva2UgbXVzdCBiZSB0aGF0IG9mIHRoZSBub2RlIGRvY3VtZW50IGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkICJpZnJhbWUiIGJ1dCBnb3QgInBhcmVudCBmcmFtZSIKK1BB
U1MgVGhlIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgd2hpbGUgZXhlY3V0aW5nIHRoZSBjb21w
aWxlZCBjYWxsYmFjayB2aWEgV2ViIElETCdzIGludm9rZSBtdXN0IGJlIHRoYXQgb2YgdGhlIG5v
ZGUgZG9jdW1lbnQKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRl
Z3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJl
bnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1v
ZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJvbWlzZS1q
b2ItaW5jdW1iZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjgwMjQ3KQorKysgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0
aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpv
Yi1xdWV1ZS9wcm9taXNlLWpvYi1pbmN1bWJlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0yLDEzICsyLDEzIEBACiAKIFBBU1MgU2FuaXR5IGNoZWNrOiB0aGlzIGFsbCB3b3JrcyBh
cyBleHBlY3RlZCB3aXRoIG5vIHByb21pc2VzIGludm9sdmVkCiBQQVNTIEZ1bGZpbGxtZW50IGhh
bmRsZXIgb24gZnVsZmlsbGVkIHByb21pc2UKLUZBSUwgRnVsZmlsbG1lbnQgaGFuZGxlciBvbiBm
dWxmaWxsZWQgcHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qg
c3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1s
L3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRo
LXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50
LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJh
cHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUt
amF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL2N1cnJlbnQvY3VycmVudC5odG1sIgorRkFJ
TCBGdWxmaWxsbWVudCBoYW5kbGVyIG9uIGZ1bGZpbGxlZCBwcm9taXNlLCB1c2luZyBiYWNrdXAg
aW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAi
aHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2lu
Zy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291
cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6
Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9k
ZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNlLWpv
Yi1pbmN1bWJlbnQuaHRtbCIKIFBBU1MgUmVqZWN0aW9uIGhhbmRsZXIgb24gcmVqZWN0ZWQgcHJv
bWlzZQotRkFJTCBSZWplY3Rpb24gaGFuZGxlciBvbiByZWplY3RlZCBwcm9taXNlLCB1c2luZyBi
YWNrdXAgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJv
Y2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVl
L3Jlc291cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3Qg
Imh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3Np
bmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNv
dXJjZXMvY3VycmVudC9jdXJyZW50Lmh0bWwiCitGQUlMIFJlamVjdGlvbiBoYW5kbGVyIG9uIHJl
amVjdGVkIHByb21pc2UsIHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2JqZWN0IHN0
YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93
ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10
aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWluY3VtYmVudC1p
bmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBw
YXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWph
dmFzY3JpcHQtam9iLXF1ZXVlL3Byb21pc2Utam9iLWluY3VtYmVudC5odG1sIgogUEFTUyBGdWxm
aWxsbWVudCBoYW5kbGVyIG9uIHBlbmRpbmctdGhlbi1mdWxmaWxsZWQgcHJvbWlzZQotRkFJTCBG
dWxmaWxsbWVudCBoYW5kbGVyIG9uIHBlbmRpbmctdGhlbi1mdWxmaWxsZWQgcHJvbWlzZSwgdXNp
bmcgYmFja3VwIGluY3VtYmVudCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5n
L3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1x
dWV1ZS9yZXNvdXJjZXMvcHJvbWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQg
Z290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9j
ZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUv
cmVzb3VyY2VzL2N1cnJlbnQvY3VycmVudC5odG1sIgorRkFJTCBGdWxmaWxsbWVudCBoYW5kbGVy
IG9uIHBlbmRpbmctdGhlbi1mdWxmaWxsZWQgcHJvbWlzZSwgdXNpbmcgYmFja3VwIGluY3VtYmVu
dCBzZXR0aW5ncyBvYmplY3Qgc3RhY2sgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwt
Mi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvcHJv
bWlzZS1qb2ItaW5jdW1iZW50LWluY3VtYmVudC5odG1sIiBidXQgZ290ICJodHRwOi8vbG9jYWxo
b3N0Ojg4MDAvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50
ZWdyYXRpb24td2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcHJvbWlzZS1qb2ItaW5jdW1i
ZW50Lmh0bWwiCiBQQVNTIFJlamVjdGlvbiBoYW5kbGVyIG9uIHBlbmRpbmctdGhlbi1yZWplY3Rl
ZCBwcm9taXNlCi1GQUlMIFJlamVjdGlvbiBoYW5kbGVyIG9uIHBlbmRpbmctdGhlbi1yZWplY3Rl
ZCBwcm9taXNlLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCBzdGFjayBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBw
YXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWph
dmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1i
ZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMv
c2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2Ny
aXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvY3VycmVudC9jdXJyZW50Lmh0bWwiCitGQUlMIFJlamVj
dGlvbiBoYW5kbGVyIG9uIHBlbmRpbmctdGhlbi1yZWplY3RlZCBwcm9taXNlLCB1c2luZyBiYWNr
dXAgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCBzdGFjayBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vz
c2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgtdGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jl
c291cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJlbnQtaW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0
dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3Npbmct
bW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWpvYi1xdWV1ZS9wcm9taXNl
LWpvYi1pbmN1bWJlbnQuaHRtbCIKIFBBU1MgVGhlbmFibGUgcmVzb2x1dGlvbgotRkFJTCBUaGVu
YWJsZSByZXNvbHV0aW9uLCB1c2luZyBiYWNrdXAgaW5jdW1iZW50IHNldHRpbmdzIG9iamVjdCBz
dGFjayBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgt
dGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Jlc291cmNlcy9wcm9taXNlLWpvYi1pbmN1bWJlbnQt
aW5jdW1iZW50Lmh0bWwiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9odG1sL3dlYmFw
cGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRlZ3JhdGlvbi13aXRoLXRoZS1q
YXZhc2NyaXB0LWpvYi1xdWV1ZS9yZXNvdXJjZXMvY3VycmVudC9jdXJyZW50Lmh0bWwiCitGQUlM
IFRoZW5hYmxlIHJlc29sdXRpb24sIHVzaW5nIGJhY2t1cCBpbmN1bWJlbnQgc2V0dGluZ3Mgb2Jq
ZWN0IHN0YWNrIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vbG9jYWxob3N0Ojg4MDAv
aHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24t
d2l0aC10aGUtamF2YXNjcmlwdC1qb2ItcXVldWUvcmVzb3VyY2VzL3Byb21pc2Utam9iLWluY3Vt
YmVudC1pbmN1bWJlbnQuaHRtbCIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgt
dGhlLWphdmFzY3JpcHQtam9iLXF1ZXVlL3Byb21pc2Utam9iLWluY3VtYmVudC5odG1sIgogCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BlcmZvcm1h
bmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlwZXMtY3Jvc3MtcmVhbG0tYWNjZXNzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlwZXMtY3Jvc3Mt
cmVhbG0tYWNjZXNzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBv
cnRlZEVudHJ5VHlwZXMtY3Jvc3MtcmVhbG0tYWNjZXNzLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDMgQEAKKworUEFTUyBDcm9zcy1yZWFsbSBhY2Nlc3Mgb2Ygc3VwcG9y
dGVkRW50cnlUeXBlcyByZXR1cm5zIEFycmF5IG9mIGFub3RoZXIgcmVhbG0KKwpJbmRleDogTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wZXJmb3JtYW5jZS10aW1l
bGluZS9zdXBwb3J0ZWRFbnRyeVR5cGVzLWNyb3NzLXJlYWxtLWFjY2Vzcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGVyZm9y
bWFuY2UtdGltZWxpbmUvc3VwcG9ydGVkRW50cnlUeXBlcy1jcm9zcy1yZWFsbS1hY2Nlc3MuaHRt
bAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lL3N1cHBvcnRlZEVudHJ5VHlwZXMtY3Jvc3MtcmVh
bG0tYWNjZXNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q3Jvc3MtcmVhbG0gYWNjZXNz
IG9mIHN1cHBvcnRlZEVudHJ5VHlwZXMgcmV0dXJucyBBcnJheSBvZiBhbm90aGVyIHJlYWxtPC90
aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BlcmZv
cm1hbmNlLXRpbWVsaW5lLyNzdXBwb3J0ZWRlbnRyeXR5cGVzLWF0dHJpYnV0ZSI+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3Jp
cHQ+Cit0ZXN0KHQgPT4geworICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpZnJhbWUiKTsKKyAgdC5hZGRfY2xlYW51cCgoKSA9PiB7IGlmcmFtZS5yZW1vdmUoKTsgfSk7
CisgIGlmcmFtZS5vbmxvYWQgPSB0LnN0ZXBfZnVuY19kb25lKCgpID0+IHsKKyAgICBjb25zdCBv
dGhlcldpbmRvdyA9IGlmcmFtZS5jb250ZW50V2luZG93OworICAgIGFzc2VydF90cnVlKG90aGVy
V2luZG93LlBlcmZvcm1hbmNlT2JzZXJ2ZXIuc3VwcG9ydGVkRW50cnlUeXBlcyBpbnN0YW5jZW9m
IG90aGVyV2luZG93LkFycmF5KTsKKyAgfSk7CisgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGlmcmFt
ZSk7Cit9KTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVz
dC1jc3MtY3Jvc3Mtb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LWNzcy1jcm9zcy1vcmlnaW4uaHR0cHMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyODAyNDcpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1
ZXN0LWNzcy1jcm9zcy1vcmlnaW4uaHR0cHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDggKzEsNiBAQAogCiBQQVNTIHNldHVwIGdsb2JhbCBzdGF0ZQogUEFTUyBNSU1FIGNoZWNr
aW5nIG9mIENTUyByZXNvdXJjZXMgZmV0Y2hlZCB2aWEgc2VydmljZSB3b3JrZXIgd2hlbiBDb250
ZW50LVR5cGUgaXMgbm90IHNldC4KLUZBSUwgU2FtZS1vcmlnaW4gcG9saWN5IGZvciBhY2Nlc3Mg
dG8gQ1NTIHJlc291cmNlcyBmZXRjaGVkIHZpYSBzZXJ2aWNlIHdvcmtlciBhc3NlcnRfdGhyb3dz
X2RvbTogZnVuY3Rpb24gIigpID0+IHsKLSAgICBmLmNvbnRlbnREb2N1bWVudC5zdHlsZVNoZWV0
c1swXS5jc3NSdWxlc1swXS5jc3NUZXh0OwotICB9IiB0aHJldyBhbiBleGNlcHRpb24gZnJvbSB0
aGUgd3JvbmcgZ2xvYmFsCitGQUlMIFNhbWUtb3JpZ2luIHBvbGljeSBmb3IgYWNjZXNzIHRvIENT
UyByZXNvdXJjZXMgZmV0Y2hlZCB2aWEgc2VydmljZSB3b3JrZXIgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiU2VjdXJpdHlFcnJvcjogTm90IGFs
bG93ZWQgdG8gYWNjZXNzIGNyb3NzLW9yaWdpbiBzdHlsZXNoZWV0IgogUEFTUyBjbGVhbnVwIGds
b2JhbCBzdGF0ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJs
ZS5odG1sCShyZXZpc2lvbiAyODAyNDcpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3Jt
LXJlYWRhYmxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOSArOSwxMCBAQAogICAgICAgICA8
aWZyYW1lIHNyYz0iLiIgaWQ9ImZyYW1lIj48L2lmcmFtZT4KICAgICAgICAgPHNjcmlwdD4KIHBy
b21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IGZyYW1lRE9NRXhjZXB0aW9u
ID0gZnJhbWUuY29udGVudFdpbmRvdy5ET01FeGNlcHRpb247CiAgICAgY29uc3QgdHJhbnNmb3Jt
ID0gbmV3IGZyYW1lLmNvbnRlbnRXaW5kb3cuU0ZyYW1lVHJhbnNmb3JtOwogICAgIGZyYW1lLnJl
bW92ZSgpOwotICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+
IHRyYW5zZm9ybS5yZWFkYWJsZSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0
ZUVycm9yIiwgZnJhbWVET01FeGNlcHRpb24sICgpID0+IHRyYW5zZm9ybS5yZWFkYWJsZSk7CiB9
KTsKICAgICAgICA8L3NjcmlwdD4KICAgICA8L2JvZHk+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>