<?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>202891</bug_id>
          
          <creation_ts>2019-10-12 21:43:26 -0700</creation_ts>
          <short_desc>Pass CORS-enabled schemes through WebProcess instead of having them NetworkProcess-global</short_desc>
          <delta_ts>2019-10-24 12:42:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1579476</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-12 21:43:26 -0700</bug_when>
    <thetext>Pass CORS-enabled schemes through WebProcess instead of having them NetworkProcess-global</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579477</commentid>
    <comment_count>1</comment_count>
      <attachid>380842</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-12 21:49:23 -0700</bug_when>
    <thetext>Created attachment 380842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579729</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-14 11:51:36 -0700</bug_when>
    <thetext>Service Worker API tests are failing, is it related?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579795</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-14 13:59:20 -0700</bug_when>
    <thetext>I verified the three API test failures do not reproduce on my Mac after applying the patch.  They must&apos;ve been failing because of something else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579850</commentid>
    <comment_count>4</comment_count>
      <attachid>380925</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-14 15:29:39 -0700</bug_when>
    <thetext>Created attachment 380925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579862</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-14 15:43:18 -0700</bug_when>
    <thetext>(I re-uploaded the same patch to run through EWS again)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579899</commentid>
    <comment_count>6</comment_count>
      <attachid>380935</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-14 16:40:10 -0700</bug_when>
    <thetext>Created attachment 380935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579982</commentid>
    <comment_count>7</comment_count>
      <attachid>380935</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-14 21:24:35 -0700</bug_when>
    <thetext>Comment on attachment 380935
Patch

I&apos;m quite confused.  I don&apos;t see how this patch can break those two tests in that way on EWS and I can&apos;t reproduce it locally.  Youenn, any ideas?  Only the &quot;blob&quot; scheme hits my changed code, and that&apos;s not registered or default CORS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580029</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-15 01:46:35 -0700</bug_when>
    <thetext>It is indeed strange that iOS is ok but not MacOS.
I do not see either why this patch is failing these tests.

Looking at the error message, both tests do two page loads.
The first one to register a service worker.
The second one gets intercepted by the service worker.
It seems that the second one is not intercepted by the service worker.

We have some optimisations in ServiceWorkerProvider::mayHaveServiceWorkerRegisteredForOrigin to not go to the network process. This is based on WebProcessPool checking for the sql file, which is potentially racy. Plan is to fix that by doing registration matching in network process and remove the need for ServiceWorkerProvider::mayHaveServiceWorkerRegisteredForOrigin.
You could try to upload a patch with ServiceWorkerProvider::mayHaveServiceWorkerRegisteredForOrigin always returning true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580036</commentid>
    <comment_count>9</comment_count>
      <attachid>380935</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-15 01:55:20 -0700</bug_when>
    <thetext>Comment on attachment 380935
Patch

LGTM other than the failing API test.

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

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:533
&gt; +    for (auto&amp;&amp; scheme : WTFMove(schemes))

No specific reason for WTFMove() here, or is it for documentation purposes?

&gt; Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp:52
&gt; +NetworkLoadChecker::NetworkLoadChecker(NetworkProcess&amp; networkProcess, NetworkSchemeRegistry* schemeRegistry, FetchOptions&amp;&amp; options, PAL::SessionID sessionID, WebPageProxyIdentifier webPageProxyID, HTTPHeaderMap&amp;&amp; originalRequestHeaders, URL&amp;&amp; url, RefPtr&lt;SecurityOrigin&gt;&amp;&amp; sourceOrigin, RefPtr&lt;SecurityOrigin&gt;&amp;&amp; topOrigin, PreflightPolicy preflightPolicy, String&amp;&amp; referrer, bool isHTTPSUpgradeEnabled, bool shouldCaptureExtraNetworkLoadMetrics, LoadType requestLoadType)

RefPtr&lt;NetworkSchemeRegistry&gt;&amp;&amp; with WTFMove
and I guess Ref&lt;NetworkProces&gt;&gt;&amp;&amp; as well

&gt; Source/WebKit/WebProcess/WebProcess.cpp:1182
&gt; +        m_networkProcessConnection-&gt;connection().send(Messages::NetworkConnectionToWebProcess::RegisterURLSchemesAsCORSEnabled(WebCore::LegacySchemeRegistry::allURLSchemesRegisteredAsCORSEnabled()), 0);

We probably do not have tests for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580110</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-15 08:51:11 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #8)
&gt; You could try to upload a patch with
&gt; ServiceWorkerProvider::mayHaveServiceWorkerRegisteredForOrigin always
&gt; returning true.

That makes the API test ServiceWorkers.SWProcessConnectionCreation always fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580116</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-15 09:10:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/r251138
I&apos;ll watch the bots to see if the ServiceWorkers API test actually start failing from this unrelated change and roll out if they do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580151</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-15 10:20:06 -0700</bug_when>
    <thetext>Rolled out in https://trac.webkit.org/changeset/251146/webkit because the bots did see the same failure that EWS did.  Still can&apos;t reproduce.

Youenn, could you fix the race condition and I&apos;ll retry this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580708</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-16 14:59:08 -0700</bug_when>
    <thetext>Removing race condition in https://bugs.webkit.org/show_bug.cgi?id=203055</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582487</commentid>
    <comment_count>14</comment_count>
      <attachid>381582</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-22 12:34:10 -0700</bug_when>
    <thetext>Created attachment 381582
retry all ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583395</commentid>
    <comment_count>15</comment_count>
      <attachid>381819</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-24 09:38:46 -0700</bug_when>
    <thetext>Created attachment 381819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583434</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-24 11:37:29 -0700</bug_when>
    <thetext>ServiceWorker API tests pass.  The one timeout on EWS is WebAuthenticationPanel.PanelHidSuccess2 which is quite flaky &lt;https://results.webkit.org/?suite=api-tests&amp;test=TestWebKitAPI.WebAuthenticationPanel.PanelHidSuccess2&gt; and I reported that to the author.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583437</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-24 11:50:39 -0700</bug_when>
    <thetext>http://trac.webkit.org/r251547</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583464</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-24 12:42:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/56590108&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380842</attachid>
            <date>2019-10-12 21:49:23 -0700</date>
            <delta_ts>2019-10-14 15:29:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202891-20191012214922.patch</filename>
            <type>text/plain</type>
            <size>37875</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEwLTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFzcyBDT1JT
LWVuYWJsZWQgc2NoZW1lcyB0aHJvdWdoIFdlYlByb2Nlc3MgaW5zdGVhZCBvZiBoYXZpbmcgdGhl
bSBOZXR3b3JrUHJvY2Vzcy1nbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXND
T1JTRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjphbGxVUkxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5Lmg6CisKIDIwMTktMTAtMDcg
IFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBBZGQgY29u
c3QgdmVyc2lvbiBvZiBMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAko
cmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1l
UmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTGVnYWN5U2NoZW1lUmVnaXN0cnkuaCIKIAorI2luY2x1ZGUg
IlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5j
bHVkZSA8d3RmL0xvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC00MjEs
NiArNDIyLDcgQEAgYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6YWxsb3dzRGF0YWJhcwogCiB2
b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQo
Y29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CisgICAgQVNTRVJUKCFpc0luTmV0d29ya1Byb2Nlc3Mo
KSk7CiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogICAgIENPUlNF
bmFibGVkU2NoZW1lcygpLmFkZChzY2hlbWUpOwpAQCAtNDI4LDkgKzQzMCwxNiBAQCB2b2lkIExl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjCiAKIGJvb2wgTGVnYWN5U2NoZW1lUmVn
aXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmIHNj
aGVtZSkKIHsKKyAgICBBU1NFUlQoIWlzSW5OZXR3b3JrUHJvY2VzcygpKTsKICAgICByZXR1cm4g
IXNjaGVtZS5pc051bGwoKSAmJiBDT1JTRW5hYmxlZFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUp
OwogfQogCitWZWN0b3I8U3RyaW5nPiBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6YWxsVVJMU2NoZW1l
c1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkKCkKK3sKKyAgICBBU1NFUlQoIWlzSW5OZXR3b3JrUHJv
Y2VzcygpKTsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKENPUlNFbmFibGVkU2NoZW1lcygpKTsK
K30KKwogdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFz
c2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBp
ZiAoc2NoZW1lLmlzTnVsbCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5
U2NoZW1lUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZWdhY3lTY2hlbWVSZWdpc3RyeS5oCShyZXZpc2lvbiAyNTA3NzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2
ICs4MSw3IEBAIHB1YmxpYzoKICAgICAvLyBBbGxvdyBub24tSFRUUCBzY2hlbWVzIHRvIGJlIHJl
Z2lzdGVyZWQgdG8gYWxsb3cgQ09SUyByZXF1ZXN0cy4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJiBzY2hl
bWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZFRyZWF0VVJMU2NoZW1l
QXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFZlY3RvcjxTdHJpbmc+IGFsbFVSTFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxl
ZCgpOwogCiAgICAgLy8gQWxsb3cgcmVzb3VyY2VzIGZyb20gc29tZSBzY2hlbWVzIHRvIGxvYWQg
b24gYSBwYWdlLCByZWdhcmRsZXNzIG9mIGl0cwogICAgIC8vIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5LgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTA1NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTggQEAKKzIwMTktMTAtMTIgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBQYXNzIENP
UlMtZW5hYmxlZCBzY2hlbWVzIHRocm91Z2ggV2ViUHJvY2VzcyBpbnN0ZWFkIG9mIGhhdmluZyB0
aGVtIE5ldHdvcmtQcm9jZXNzLWdsb2JhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiAgTm93IHRoZSBMZWdhY3lT
Y2hlbWVSZWdpc3RyeSBpcyBub3QgdXNlZCBhcyBtdWNoIGluIHRoZSBOZXR3b3JrUHJvY2Vzcywg
YSBzdGVwIHRvd2FyZHMgbm8gdXNlIGF0IGFsbC4KKyAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5
IGlzIGN1cnJlbnRseSBvbmx5IGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBnbGliIEFQSSB3ZWJraXRf
c2VjdXJpdHlfbWFuYWdlcl9yZWdpc3Rlcl91cmlfc2NoZW1lX2FzX2NvcnNfZW5hYmxlZAorICAg
ICAgICBidXQgaXQgaGFzIGJlZW4gcmVxdWVzdGVkIGluIGJ1ZyAyMDExODAgYW5kIGJ1ZyAxOTkw
NjQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2FkUGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZXNBc0NPUlNFbmFi
bGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c2NoZW1lUmVnaXN0cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tl
cjo6TmV0d29ya0xvYWRDaGVja2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVj
a2VyOjpkb2VzTm90TmVlZENPUlNDaGVjayBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTY2hlbWVSZWdpc3RyeTo6cmVnaXN0
ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NjaGVt
ZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTY2hlbWVSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1NjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OlBpbmdM
b2FkKToKKyAgICAgICAgVXNlIG51bGxwdHIsIGluZGljYXRpbmcgdGhhdCB0aGUgUGluZ0xvYWQg
Y29uc3RydWN0b3IgdGhhdCBpcyB1c2VkIGluIGFkIGNsaWNrIGF0dHJpYnV0aW9uIHNob3VsZCBu
b3QgY2hlY2sgdGhlIGN1c3RvbSBzY2hlbWUgcmVnaXN0cnkuCisgICAgICAgIFRoaXMgaXMgT2sg
YmVjYXVzZSBhZCBjbGljayBhdHRyaWJ1dGlvbiBpcyBvbmx5IHVzZWQgZm9yIEhUVFAgZmFtaWx5
IHNjaGVtZXMuCisgICAgICAgIChXZWJLaXQ6Om1fYmxvYkZpbGVzKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQpOgorICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NP
UlNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVnaXN0ZXJV
UkxTY2hlbWVBc0NPUlNFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAxOS0xMC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIEJhY2svRm9yd2FyZCBjYWNoZSBkb2VzIG5vdCB3b3JrIGFmdGVy
IGRvaW5nIGEgZmF2b3JpdGUgbmF2aWdhdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAy
NTA3NzYpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw2ICszNyw3IEBAIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHIKIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZE1hcC5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKK05ldHdvcmtQcm9jZXNzL05ldHdvcmtTY2hlbWVSZWdpc3RyeS5j
cHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyNTA3NzYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAog
I2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJO
ZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdlcy5oIgpAQCAtODksNiArOTAsNyBAQCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0NvCiAgICAgLCBtX21kbnNSZWdp
c3RlcigqdGhpcykKICNlbmRpZgogICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcih3ZWJQcm9j
ZXNzSWRlbnRpZmllcikKKyAgICAsIG1fc2NoZW1lUmVnaXN0cnkoTmV0d29ya1NjaGVtZVJlZ2lz
dHJ5OjpjcmVhdGUoKSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKQEAgLTQzNyw3ICs0MzksNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojpsb2FkCiAgICAgfTsKIAogICAgIC8vIFBpbmdMb2FkIG1hbmFnZXMgaXRzIG93biBsaWZldGlt
ZSwgZGVsZXRpbmcgaXRzZWxmIHdoZW4gaXRzIHB1cnBvc2UgaGFzIGJlZW4gZnVsZmlsbGVkLgot
ICAgIG5ldyBQaW5nTG9hZCgqdGhpcywgbmV0d29ya1Byb2Nlc3MoKSwgV1RGTW92ZShsb2FkUGFy
YW1ldGVycyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBuZXcgUGluZ0xvYWQo
KnRoaXMsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldE9uTGluZVN0
YXRlKGJvb2wgaXNPbkxpbmUpCkBAIC01MjYsNiArNTI4LDEyIEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnYKICAgICBsb2FkZXItPmNvbnZlcnRUb0Rvd25sb2FkKGRv
d25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KIAordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVzQXNDT1JTRW5hYmxlZChWZWN0b3I8U3Ry
aW5nPiYmIHNjaGVtZXMpCit7CisgICAgZm9yIChhdXRvJiYgc2NoZW1lIDogV1RGTW92ZShzY2hl
bWVzKSkKKyAgICAgICAgbV9zY2hlbWVSZWdpc3RyeS0+cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNF
bmFibGVkKFdURk1vdmUoc2NoZW1lKSk7Cit9CisKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0
b3JhZ2VTZXNzaW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAy
NTA3NzYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgZW51bSBjbGFz
cyBJbmNsdWRlU2VjdXJlQ29va2llcyA6IGJvb2w7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitj
bGFzcyBOZXR3b3JrU2NoZW1lUmVnaXN0cnk7CiBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIGNsYXNz
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwpAQCAtMTU1LDYg
KzE1Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0
aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZp
dHkpPiYmKTsKIAorICAgIE5ldHdvcmtTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkoKSB7
IHJldHVybiBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7
CiAKQEAgLTE4NCw2ICsxODcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnREb3dubG9hZChE
b3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZE5hbWUgPSB7IH0pOwogICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRU
b0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CiAKKyAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQo
VmVjdG9yPFN0cmluZz4mJiBzY2hlbWVzKTsKKwogICAgIHZvaWQgY29va2llc0ZvckRPTShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNj
ZXNzZWQpPiYmKTsKICAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMzM2LDYgKzM0MSw3IEBAIHByaXZhdGU6CiAKICAg
ICBIYXNoU2V0PFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj4gbV9wcm9jZXNzRW50YW5n
bGVkUG9ydHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZCgpPj4gbV9tZXNz
YWdlQmF0Y2hEZWxpdmVyeUNvbXBsZXRpb25IYW5kbGVyczsKKyAgICBSZWY8TmV0d29ya1NjaGVt
ZVJlZ2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTkxLDQgKzkx
LDUgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogICAgIFBvc3RN
ZXNzYWdlVG9SZW1vdGUoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1l
c3NhZ2UsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcmVtb3RlKQogICAg
IENoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXIgcG9ydCkgLT4gKGJvb2wgaGFzQWN0aXZpdHkpIEFzeW5jCiAgICAgRGlkRGVsaXZl
ck1lc3NhZ2VQb3J0TWVzc2FnZXModWludDY0X3QgbWVzc2FnZUJhdGNoSWRlbnRpZmllcikKKyAg
ICBSZWdpc3RlclVSTFNjaGVtZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJpbmc+IHNjaGVtZXMp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDaGVja2VyLmNwcAkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAi
TmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50UnVsZUxp
c3RSZXN1bHRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgpAQCAtNDgsNyAr
NDksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lT3JpZ2luKGNvbnN0IFVSCiAgICAgcmV0
dXJuIHVybC5wcm90b2NvbElzRGF0YSgpIHx8IHVybC5wcm90b2NvbElzQmxvYigpIHx8ICFvcmln
aW4gfHwgb3JpZ2luLT5jYW5SZXF1ZXN0KHVybCk7CiB9CiAKLU5ldHdvcmtMb2FkQ2hlY2tlcjo6
TmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgRmV0Y2hP
cHRpb25zJiYgb3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0
SGVhZGVycywgVVJMJiYgdXJsLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2lu
LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kgcHJl
ZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJs
ZWQsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBMb2FkVHlwZSBy
ZXF1ZXN0TG9hZFR5cGUpCitOZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTY2hlbWVSZWdpc3RyeSogc2No
ZW1lUmVnaXN0cnksIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgSFRUUEhlYWRlck1h
cCYmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiYmIHNvdXJjZU9yaWdpbiwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwg
UHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wg
aXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQogICAgIDogbV9vcHRpb25zKFdURk1v
dmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX25ldHdv
cmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpAQCAtNjIsNiArNjMsNyBAQCBOZXR3b3JrTG9hZENo
ZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihOCiAgICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcyhzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MpCiAg
ICAgLCBtX2lzSFRUUFNVcGdyYWRlRW5hYmxlZChpc0hUVFBTVXBncmFkZUVuYWJsZWQpCiAgICAg
LCBtX3JlcXVlc3RMb2FkVHlwZShyZXF1ZXN0TG9hZFR5cGUpCisgICAgLCBtX3NjaGVtZVJlZ2lz
dHJ5KHNjaGVtZVJlZ2lzdHJ5KQogewogICAgIG1faXNTYW1lT3JpZ2luUmVxdWVzdCA9IGlzU2Ft
ZU9yaWdpbihtX3VybCwgbV9vcmlnaW4uZ2V0KCkpOwogICAgIHN3aXRjaCAob3B0aW9ucy5jcmVk
ZW50aWFscykgewpAQCAtNDM2LDcgKzQzOCw3IEBAIGJvb2wgTmV0d29ya0xvYWRDaGVja2VyOjpk
b2VzTm90TmVlZENPUlMKICAgICBpZiAobV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpN
b2RlOjpOb0NvcnMgfHwgbV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZp
Z2F0ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoIUxlZ2FjeVNjaGVtZVJlZ2lz
dHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQodXJsLnByb3RvY29sKCkudG9T
dHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICBpZiAobV9zY2hlbWVSZWdpc3RyeSAmJiAhbV9z
Y2hlbWVSZWdpc3RyeS0+c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybC5wcm90
b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbV9pc1NhbWVPcmln
aW5SZXF1ZXN0OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5oCShyZXZpc2lvbiAyNTA3NzYpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwx
MyArNTAsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcjsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3MgTmV0d29ya1NjaGVtZVJl
Z2lzdHJ5OwogCiBjbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8TmV0d29ya0xvYWRDaGVja2VyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZW51bSBjbGFzcyBMb2FkVHlwZSA6IGJvb2wgeyBNYWluRnJhbWUsIE90aGVy
IH07CiAKLSAgICBOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdl
YkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4mJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgV2Vi
Q29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBn
cmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1l
dHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gTG9hZFR5cGU6Ok90aGVy
KTsKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2NoZW1l
UmVnaXN0cnkqLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiYmIHRvcE9yaWdpbiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZl
cnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUgcmVxdWVzdExvYWRU
eXBlID0gTG9hZFR5cGU6Ok90aGVyKTsKICAgICB+TmV0d29ya0xvYWRDaGVja2VyKCk7CiAKICAg
ICBzdHJ1Y3QgUmVkaXJlY3Rpb25UcmlwbGV0IHsKQEAgLTE1NSw2ICsxNTYsNyBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkSW5mb3JtYXRpb24gbV9sb2FkSW5mb3JtYXRpb247
CiAKICAgICBMb2FkVHlwZSBtX3JlcXVlc3RMb2FkVHlwZTsKKyAgICBSZWZQdHI8TmV0d29ya1Nj
aGVtZVJlZ2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OwogfTsKIAogfQpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI1
MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsOSArMzUwLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aW5pdGlhbGl6ZU5ldHdvcmtQcgogICAgIGZvciAoYXV0byYgc2NoZW1lIDogcGFyYW1ldGVycy51
cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3MpCiAgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1l
QXNOb0FjY2VzcyhzY2hlbWUpOwogCi0gICAgZm9yIChhdXRvJiBzY2hlbWUgOiBwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCkKLSAgICAgICAgcmVnaXN0ZXJVUkxT
Y2hlbWVBc0NPUlNFbmFibGVkKHNjaGVtZSk7Ci0KICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0
KQogICAgICAgICByZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Qo
c2NoZW1lKTsKICAgICAKQEAgLTIyMTgsMTEgKzIyMTUsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpyZWdpc3RlclVSTFNjaGVtZUFzCiAgICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVy
VVJMU2NoZW1lQXNOb0FjY2VzcyhzY2hlbWUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpIGNvbnN0
Ci17Ci0gICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5h
YmxlZChzY2hlbWUpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVt
ZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29uc3QgU3RyaW5nJiBzY2hlbWUpIGNvbnN0
CiB7CiAgICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlm
Q2FuUmVxdWVzdChzY2hlbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTA3NzYp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDYgQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIFJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdD
b250ZW50U2VjdXJpdHlQb2xpY3koU3RyaW5nIHNjaGVtZSkKICAgICBSZWdpc3RlclVSTFNjaGVt
ZUFzTG9jYWwoU3RyaW5nIHNjaGVtZSkKICAgICBSZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3Mo
U3RyaW5nIHNjaGVtZSkKLSAgICBSZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoU3RyaW5n
IHNjaGVtZSkKICAgICBSZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVl
c3QoU3RyaW5nIHNjaGVtZSkKIAogICAgIFNldENhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUpOwpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Miw3ICs3Miw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmUKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNCeXBhc3NpbmdD
b250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJl
ZEFzTG9jYWw7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3M7
Ci0gICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQ7CiAgICAg
ZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVl
c3Q7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xNTksOCArMTU4LDYgQEAgYm9v
bCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXJsU2NoZW1lc1JlZ2lzdGVyZWRB
c05vQWNjZXNzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51cmxTY2hlbWVzUmVn
aXN0ZXJlZEFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1MDc3
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNiBAQCBzdHJ1Y3QgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgCiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2No
ZW1lc1JlZ2lzdGVyZWRBc0xvY2FsOwogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdp
c3RlcmVkQXNOb0FjY2VzczsKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJl
ZEFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Q7Ci0gICAgVmVjdG9yPFN0cmluZz4gdXJsU2No
ZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyAr
MTExLDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogCiAgICAg
aWYgKHN5bmNocm9ub3VzUmVwbHkgfHwgcGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNw
b25zZUFjY2VzcyB8fCBwYXJhbWV0ZXJzLm9wdGlvbnMua2VlcEFsaXZlKSB7CiAgICAgICAgIE5l
dHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gaXNNYWluRnJhbWVM
b2FkKCkgPyBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlOjpNYWluRnJhbWUgOiBOZXR3b3Jr
TG9hZENoZWNrZXI6OkxvYWRUeXBlOjpPdGhlcjsKLSAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNr
ZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJv
Y2VzcygpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBzZXNzaW9uSUQo
KSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0
ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3Qu
dXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVy
cy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBvcmln
aW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRl
RW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVlc3RM
b2FkVHlwZSk7CisgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyID0gbWFrZVVuaXF1ZTxOZXR3
b3JrTG9hZENoZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgJmNvbm5lY3Rpb24u
c2NoZW1lUmVnaXN0cnkoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnMgfSwg
c2Vzc2lvbklEKCksIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgSFRUUEhlYWRlck1hcCB7
IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1ldGVy
cy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBt
X3BhcmFtZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBv
bGljeSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIG1fcGFyYW1ldGVycy5pc0hU
VFBTVXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygp
LCByZXF1ZXN0TG9hZFR5cGUpOwogICAgICAgICBpZiAobV9wYXJhbWV0ZXJzLmNzcFJlc3BvbnNl
SGVhZGVycykKICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDU1BSZXNwb25z
ZUhlYWRlcnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgbV9wYXJhbWV0
ZXJzLmNzcFJlc3BvbnNlSGVhZGVycy52YWx1ZSgpIH0pOwogI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTY2hl
bWVSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2NoZW1lUmVnaXN0cnkuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtTY2hlbWVSZWdpc3RyeS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dm9pZCBOZXR3b3JrU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxl
ZChTdHJpbmcmJiBzY2hlbWUpCit7CisgICAgbV9jb3JzRW5hYmxlZFNjaGVtZXMuYWRkKFdURk1v
dmUoc2NoZW1lKSk7Cit9CisKK2Jvb2wgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVh
dFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoU3RyaW5nVmlldyBzY2hlbWUpCit7CisgICAgcmV0dXJu
IG1fY29yc0VuYWJsZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2NoZW1lUmVnaXN0cnkuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTY2hlbWVSZWdp
c3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3Jr
U2NoZW1lUmVnaXN0cnkgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrU2NoZW1lUmVnaXN0cnk+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtTY2hlbWVSZWdpc3RyeT4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU2NoZW1lUmVnaXN0cnkpOyB9CisKKyAg
ICAvLyBBbGxvdyBub24tSFRUUCBzY2hlbWVzIHRvIGJlIHJlZ2lzdGVyZWQgdG8gYWxsb3cgQ09S
UyByZXF1ZXN0cy4KKyAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChTdHJp
bmcmJiBzY2hlbWUpOworICAgIGJvb2wgc2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVk
KFN0cmluZ1ZpZXcgc2NoZW1lKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBVUkxTY2hlbWVzID0g
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47CisgICAgVVJMU2NoZW1l
cyBtX2NvcnNFbmFibGVkU2NoZW1lczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJldmlzaW9uIDI1
MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSwxNyArNDUsMTcgQEAgUGluZ0xvYWQ6OlBpbmdMb2FkKE5ldHdvcmtQ
cm9jZXNzJiBuZXR3bwogICAgICwgbV9wYXJhbWV0ZXJzKFdURk1vdmUocGFyYW1ldGVycykpCiAg
ICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAg
ICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZQaW5nTG9hZDo6dGltZW91dFRpbWVyRmlyZWQpCi0g
ICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tl
cj4obmV0d29ya1Byb2Nlc3MsIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zfSwg
bV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShtX3BhcmFt
ZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0
LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRl
cnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwgbV9w
YXJhbWV0ZXJzLnJlcXVlc3QuaHR0cFJlZmVycmVyKCkpKQorICAgICwgbV9uZXR3b3JrTG9hZENo
ZWNrZXIobWFrZVVuaXF1ZVJlZjxOZXR3b3JrTG9hZENoZWNrZXI+KG5ldHdvcmtQcm9jZXNzLCBu
dWxscHRyLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9uc30sIG1fc2Vzc2lvbklE
LCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIFdURk1vdmUobV9wYXJhbWV0ZXJzLm9yaWdp
bmFsUmVxdWVzdEhlYWRlcnMpLCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBt
X3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdp
bi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG1fcGFyYW1ldGVycy5y
ZXF1ZXN0Lmh0dHBSZWZlcnJlcigpKSkKIHsKICAgICBpbml0aWFsaXplKG5ldHdvcmtQcm9jZXNz
KTsKIH0KIAotUGluZ0xvYWQ6OlBpbmdMb2FkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBjb25uZWN0aW9uLCBOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorUGluZ0xvYWQ6OlBpbmdMb2FkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aW9uLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJvciYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fc2Vzc2lvbklE
KGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJh
bWV0ZXJzKSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlBpbmdMb2FkOjp0aW1lb3V0VGlt
ZXJGaXJlZCkKLSAgICAsIG1fbmV0d29ya0xvYWRDaGVja2VyKG1ha2VVbmlxdWVSZWY8TmV0d29y
a0xvYWRDaGVja2VyPihuZXR3b3JrUHJvY2VzcywgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJz
Lm9wdGlvbnN9LCBtX3Nlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBXVEZN
b3ZlKG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJMIHsgbV9wYXJhbWV0
ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCks
IG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0
UG9saWN5LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRwUmVmZXJyZXIoKSkpCisgICAgLCBtX25l
dHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVj
dGlvbi5uZXR3b3JrUHJvY2VzcygpLCAmY29ubmVjdGlvbi5zY2hlbWVSZWdpc3RyeSgpLCBGZXRj
aE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9uc30sIG1fc2Vzc2lvbklELCBtX3BhcmFtZXRl
cnMud2ViUGFnZVByb3h5SUQsIFdURk1vdmUobV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhl
YWRlcnMpLCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMu
c291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi5jb3B5UmVmKCks
IG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG1fcGFyYW1ldGVycy5yZXF1ZXN0Lmh0dHBS
ZWZlcnJlcigpKSkKICAgICAsIG1fYmxvYkZpbGVzKGNvbm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZl
cmVuY2VzKG1fcGFyYW1ldGVycykpCiB7CiAgICAgZm9yIChhdXRvJiBmaWxlIDogbV9ibG9iRmls
ZXMpIHsKQEAgLTYzLDcgKzYzLDcgQEAgUGluZ0xvYWQ6OlBpbmdMb2FkKE5ldHdvcmtDb25uZWN0
aW9uVG9XZQogICAgICAgICAgICAgZmlsZS0+cHJlcGFyZUZvckZpbGVBY2Nlc3MoKTsKICAgICB9
CiAKLSAgICBpbml0aWFsaXplKG5ldHdvcmtQcm9jZXNzKTsKKyAgICBpbml0aWFsaXplKGNvbm5l
Y3Rpb24ubmV0d29ya1Byb2Nlc3MoKSk7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6OmluaXRpYWxpemUo
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaAkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMSArMzgsMTIg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czsKIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlcjsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xh
c3MgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5OwogCiBjbGFzcyBQaW5nTG9hZCBmaW5hbCA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxQaW5nTG9hZD4sIHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBQaW5nTG9hZChOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklE
LCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik+JiYpOwotICAgIFBpbmdMb2FkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik+JiYpOworICAgIFBpbmdMb2FkKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmKTsKIAogcHJpdmF0ZToKICAgICB+UGluZ0xv
YWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJ
KHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIxLDcgKzUyMSw2IEBAIE5ldHdvcmtQcm9jZXNz
UHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdp
c3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBjb3B5VG9WZWN0b3IobV9z
Y2hlbWVzVG9SZWdpc3RlckFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KTsKICAgICBw
YXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2NhbCA9IGNvcHlUb1ZlY3RvcihtX3Nj
aGVtZXNUb1JlZ2lzdGVyQXNMb2NhbCk7CiAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0
ZXJlZEFzTm9BY2Nlc3MgPSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzTm9BY2Nl
c3MpOwotICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkID0g
Y29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkKTsKICAgICBwYXJh
bWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCA9
IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVx
dWVzdCk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTE0OTksNyArMTQ5OCw2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXMKIHsKICAgICBtX3Nj
aGVtZXNUb1JlZ2lzdGVyQXNDT1JTRW5hYmxlZC5hZGQodXJsU2NoZW1lKTsKICAgICBzZW5kVG9B
bGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JT
RW5hYmxlZCh1cmxTY2hlbWUpKTsKLSAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCh1cmxTY2hl
bWUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJHbG9iYWxVUkxTY2hlbWVB
c0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM1OTQsNiArMzU5NCw3IEBACiAJCTU4Nzc0
M0E0MjFDMzBBRDgwMEFFOTA4NCAvKiBIVFRQU1VwZ3JhZGVMaXN0LmRiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IEhUVFBTVXBn
cmFkZUxpc3QuZGI7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0hUVFBTVXBncmFkZUxp
c3QuZGI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTU4RTk3N0RDMjFD
NDk5RkUwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4RTk3N0REMjFDNDlBMDAwMDVEOTJB
NiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1QzBBMTBDMTIzNTI0MUEzMDA1M0UyQ0EgLyogTmV0d29ya1NjaGVtZVJl
Z2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtT
Y2hlbWVSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMEIxNzc0
MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtTb2NrZXRTdHJl
YW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3
b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJNUMwQjE3NzUxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2Nr
ZXRTdHJlYW1NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3
b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
TmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTVDMEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
V2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTM2NzEsNiArMzY3Miw3IEBACiAJCTVDOUVGMkU3
MjFGMDU4RjkwMDNCREM1NiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0EyNkQ3RjIxN0FCQkI2MDBGOTdB
MzUgLyogV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0EyNkQ4MDIxN0FCQkI2MDBGOTdBMzUgLyogV0tTYWZlQnJvd3NpbmdX
YXJuaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2FmZUJyb3dzaW5n
V2FybmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0EyRjc0NzIzNTBFMTU0
MDBCRTUxOTQgLyogTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtTY2hlbWVSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1Q0E0NkU3QTIxRjFBMjM5MDBDRTg2QjQgLyogQVBJSFRUUENvb2tpZVN0b3Jl
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBUElIVFRQ
Q29va2llU3RvcmVDb2NvYS5tbTsgcGF0aCA9IFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJSFRUUENv
b2tpZVN0b3JlQ29jb2EubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNUNBOTg1
NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJyb3dzaW5nV2FybmluZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Q0E5ODU0QjIxMEJFQjczMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5n
V2FybmluZ0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
U2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjc5NSw2ICs2Nzk3LDggQEAKIAkJCQk1MTI0MEVCRTIyMEI2OTQ3MDA1Q0ZDNjMgLyogTmV0
d29ya1Jlc291cmNlTG9hZE1hcC5oICovLAogCQkJCTVDMTQyNkU1MUMyM0Y4MDUwMEQ0MTE4MyAv
KiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJNUMxNDI2RTYxQzIz
RjgwNTAwRDQxMTgzIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggKi8sCisJCQkJ
NUMwQTEwQzEyMzUyNDFBMzAwNTNFMkNBIC8qIE5ldHdvcmtTY2hlbWVSZWdpc3RyeS5jcHAgKi8s
CisJCQkJNUNBMkY3NDcyMzUwRTE1NDAwQkU1MTk0IC8qIE5ldHdvcmtTY2hlbWVSZWdpc3RyeS5o
ICovLAogCQkJCTUzMjE1OTUyMURCQUU2RkMwMDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbi5jcHAg
Ki8sCiAJCQkJNUMyMENCOUUxQkIwREQxODAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uLmggKi8s
CiAJCQkJNUM4OURGNTYyMUFGNjFGRjAwNDY0NUU4IC8qIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAJKHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcwLDcgKzM3MCw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVB
c0Rpc3BsYXlJc29sYXRlZChzY2hlbWUpOwogCiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBwYXJh
bWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCkKLSAgICAgICAgcmVnaXN0
ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHNjaGVtZSk7CisgICAgICAgIExlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoc2NoZW1lKTsKIAogICAgIGZv
ciAoYXV0byYgc2NoZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQWx3YXlz
UmV2YWxpZGF0ZWQpCiAgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRl
ZChzY2hlbWUpOwpAQCAtNTY1LDkgKzU2NSwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVy
VVJMU2NoZW1lQXNEaXNwCiAgICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNEaXNwbGF5SXNvbGF0ZWQodXJsU2NoZW1lKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpy
ZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpIGNv
bnN0Cit2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25z
dCBTdHJpbmcmIHVybFNjaGVtZSkKIHsKICAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0
ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybFNjaGVtZSk7CisgICAgZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlclVSTFNjaGVtZXNBc0NPUlNFbmFibGVkKHsgdXJs
U2NoZW1lIH0pLCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFz
QWx3YXlzUmV2YWxpZGF0ZWQoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpIGNvbnN0CkBAIC0xMTc4
LDYgKzExNzksNyBAQCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24mIFdlYlByb2Nlc3M6OmVuCiAj
aWYgSEFWRShBVURJVF9UT0tFTikKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24t
PnNldE5ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbihXVEZNb3ZlKGNvbm5lY3Rpb25JbmZvLmF1ZGl0
VG9rZW4pKTsKICNlbmRpZgorICAgICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZWdpc3RlclVSTFNjaGVtZXNBc0NPUlNFbmFibGVkKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lz
dHJ5OjphbGxVUkxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQoKSksIDApOwogICAgIH0K
ICAgICAKICAgICByZXR1cm4gKm1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNTA3NzYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYs
NyArMzI2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbChj
b25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vz
cyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNw
bGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCByZWdpc3RlclVSTFNj
aGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgdm9pZCByZWdpc3Rl
clVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZWdpc3Rl
clVSTFNjaGVtZUFzQWx3YXlzUmV2YWxpZGF0ZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAg
dm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcmKSBj
b25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVx
dWVzdChjb25zdCBTdHJpbmcmKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380925</attachid>
            <date>2019-10-14 15:29:39 -0700</date>
            <delta_ts>2019-10-14 16:40:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202891-20191014152939.patch</filename>
            <type>text/plain</type>
            <size>37832</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTA4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEwLTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFzcyBDT1JT
LWVuYWJsZWQgc2NoZW1lcyB0aHJvdWdoIFdlYlByb2Nlc3MgaW5zdGVhZCBvZiBoYXZpbmcgdGhl
bSBOZXR3b3JrUHJvY2Vzcy1nbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXND
T1JTRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjphbGxVUkxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5Lmg6CisKIDIwMTktMTAtMTQg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
RUdSRVNTSU9OOiBbaU9TIDEzP10gVGVzdFdlYktpdEFQSS5TaGFyZWRCdWZmZXJUZXN0LnRyeUNy
ZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cyBpcyBmYWlsaW5nCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAy
NTEwODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5oIgogCisjaW5jbHVkZSAiUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYv
TG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTQyMSw2ICs0MjIsNyBA
QCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjphbGxvd3NEYXRhYmFzCiAKIHZvaWQgTGVnYWN5
U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJp
bmcmIHNjaGVtZSkKIHsKKyAgICBBU1NFUlQoIWlzSW5OZXR3b3JrUHJvY2VzcygpKTsKICAgICBp
ZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAgICAgQ09SU0VuYWJsZWRTY2hl
bWVzKCkuYWRkKHNjaGVtZSk7CkBAIC00MjgsOSArNDMwLDE2IEBAIHZvaWQgTGVnYWN5U2NoZW1l
UmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2MKIAogYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewor
ICAgIEFTU0VSVCghaXNJbk5ldHdvcmtQcm9jZXNzKCkpOwogICAgIHJldHVybiAhc2NoZW1lLmlz
TnVsbCgpICYmIENPUlNFbmFibGVkU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKK1Zl
Y3RvcjxTdHJpbmc+IExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjphbGxVUkxTY2hlbWVzUmVnaXN0ZXJl
ZEFzQ09SU0VuYWJsZWQoKQoreworICAgIEFTU0VSVCghaXNJbk5ldHdvcmtQcm9jZXNzKCkpOwor
ICAgIHJldHVybiBjb3B5VG9WZWN0b3IoQ09SU0VuYWJsZWRTY2hlbWVzKCkpOworfQorCiB2b2lk
IExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVu
dFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChzY2hlbWUu
aXNOdWxsKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdp
c3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVt
ZVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDI1MTA4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAg
cHVibGljOgogICAgIC8vIEFsbG93IG5vbi1IVFRQIHNjaGVtZXMgdG8gYmUgcmVnaXN0ZXJlZCB0
byBhbGxvdyBDT1JTIHJlcXVlc3RzLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFi
bGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVj
dG9yPFN0cmluZz4gYWxsVVJMU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkKCk7CiAKICAg
ICAvLyBBbGxvdyByZXNvdXJjZXMgZnJvbSBzb21lIHNjaGVtZXMgdG8gbG9hZCBvbiBhIHBhZ2Us
IHJlZ2FyZGxlc3Mgb2YgaXRzCiAgICAgLy8gQ29udGVudCBTZWN1cml0eSBQb2xpY3kuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw1OCBAQAorMjAxOS0xMC0xNCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFBhc3MgQ09SUy1lbmFibGVk
IHNjaGVtZXMgdGhyb3VnaCBXZWJQcm9jZXNzIGluc3RlYWQgb2YgaGF2aW5nIHRoZW0gTmV0d29y
a1Byb2Nlc3MtZ2xvYmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDI4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBOb3cgdGhlIExlZ2FjeVNjaGVtZVJlZ2lz
dHJ5IGlzIG5vdCB1c2VkIGFzIG11Y2ggaW4gdGhlIE5ldHdvcmtQcm9jZXNzLCBhIHN0ZXAgdG93
YXJkcyBubyB1c2UgYXQgYWxsLgorICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgY3VycmVu
dGx5IG9ubHkgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGdsaWIgQVBJIHdlYmtpdF9zZWN1cml0eV9t
YW5hZ2VyX3JlZ2lzdGVyX3VyaV9zY2hlbWVfYXNfY29yc19lbmFibGVkCisgICAgICAgIGJ1dCBp
dCBoYXMgYmVlbiByZXF1ZXN0ZWQgaW4gYnVnIDIwMTE4MCBhbmQgYnVnIDE5OTA2NC4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmxvYWRQaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlbWVSZWdp
c3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpOZXR3b3Jr
TG9hZENoZWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OmRvZXNO
b3ROZWVkQ09SU0NoZWNrIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1By
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hl
bWVBc0NPUlNFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Om1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2NoZW1lUmVnaXN0cnkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVt
ZUFzQ09SU0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2NoZW1lUmVnaXN0cnk6
OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JTRW5hYmxlZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6UGluZ0xvYWQpOgorICAg
ICAgICBVc2UgbnVsbHB0ciwgaW5kaWNhdGluZyB0aGF0IHRoZSBQaW5nTG9hZCBjb25zdHJ1Y3Rv
ciB0aGF0IGlzIHVzZWQgaW4gYWQgY2xpY2sgYXR0cmlidXRpb24gc2hvdWxkIG5vdCBjaGVjayB0
aGUgY3VzdG9tIHNjaGVtZSByZWdpc3RyeS4KKyAgICAgICAgVGhpcyBpcyBPayBiZWNhdXNlIGFk
IGNsaWNrIGF0dHJpYnV0aW9uIGlzIG9ubHkgdXNlZCBmb3IgSFRUUCBmYW1pbHkgc2NoZW1lcy4K
KyAgICAgICAgKFdlYktpdDo6bV9ibG9iRmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVu
c3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJl
Z2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFz
Q09SU0VuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorCiAyMDE5LTEwLTE0ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbbWFjT1NdIFNhbmRib3ggZXh0ZW5zaW9ucyBzaG91bGQgYmUgY3JlYXRl
ZCB3aXRoIGF1ZGl0IHRva2Vucywgbm90IFBJRHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24g
MjUxMDg4KQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQCBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyCiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRNYXAuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2NoZW1lUmVnaXN0cnku
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldENoYW5uZWwuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2
aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKQEAgLTkzLDYgKzk0LDcgQEAg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDbwogICAgICwgbV9tZG5zUmVn
aXN0ZXIoKnRoaXMpCiAjZW5kaWYKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJv
Y2Vzc0lkZW50aWZpZXIpCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KE5ldHdvcmtTY2hlbWVSZWdp
c3RyeTo6Y3JlYXRlKCkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCkBAIC00MzcsNyArNDM5LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6bG9hZAogICAgIH07CiAKICAgICAvLyBQaW5nTG9hZCBtYW5hZ2VzIGl0cyBvd24gbGlmZXRp
bWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4K
LSAgICBuZXcgUGluZ0xvYWQoKnRoaXMsIG5ldHdvcmtQcm9jZXNzKCksIFdURk1vdmUobG9hZFBh
cmFtZXRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbmV3IFBpbmdMb2Fk
KCp0aGlzLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRPbkxpbmVT
dGF0ZShib29sIGlzT25MaW5lKQpAQCAtNTI2LDYgKzUyOCwxMiBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252CiAgICAgbG9hZGVyLT5jb252ZXJ0VG9Eb3dubG9hZChk
b3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQoVmVjdG9yPFN0
cmluZz4mJiBzY2hlbWVzKQoreworICAgIGZvciAoYXV0byYmIHNjaGVtZSA6IFdURk1vdmUoc2No
ZW1lcykpCisgICAgICAgIG1fc2NoZW1lUmVnaXN0cnktPnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JT
RW5hYmxlZChXVEZNb3ZlKHNjaGVtZSkpOworfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBz
dG9yYWdlU2Vzc2lvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24g
MjUxMDg4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIGVudW0gY2xh
c3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
Y2xhc3MgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5OwogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBjbGFz
cyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKQEAgLTE1OSw2
ICsxNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9M
b25nZXJOZWVkZWQoKTsKICNlbmRpZgogCisgICAgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5JiBzY2hl
bWVSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCk7IH0KKwogcHJpdmF0
ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKTsKIApAQCAtMTg4LDYgKzE5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dGFydERvd25sb2FkKERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7CiAgICAgdm9pZCBjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAorICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVz
QXNDT1JTRW5hYmxlZChWZWN0b3I8U3RyaW5nPiYmIHNjaGVtZXMpOworCiAgICAgdm9pZCBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwogICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY29va2llc0VuYWJs
ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0zNDEsNiArMzQ2LDcgQEAg
cHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyPiBt
X3Byb2Nlc3NFbnRhbmdsZWRQb3J0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2
b2lkKCk+PiBtX21lc3NhZ2VCYXRjaERlbGl2ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOworICAgIFJl
ZjxOZXR3b3JrU2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1lUmVnaXN0cnk7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtOTIsNCArOTIsNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzCiAgICAgUG9zdE1lc3NhZ2VUb1JlbW90ZShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMgbWVzc2FnZSwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciByZW1vdGUpCiAgICAgQ2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KSAtPiAoYm9vbCBoYXNBY3Rpdml0eSkgQXN5bmMK
ICAgICBEaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRfdCBtZXNzYWdlQmF0Y2hJ
ZGVudGlmaWVyKQorICAgIFJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQoVmVjdG9yPFN0
cmluZz4gc2NoZW1lcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCShyZXZpc2lvbiAyNTEwODgpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3Mu
aCIKKyNpbmNsdWRlICJOZXR3b3JrU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Lmg+CkBAIC00OCw3ICs0OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVPcmlnaW4oY29u
c3QgVVIKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3RvY29sSXNC
bG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsKIH0KIAotTmV0d29y
a0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIEhUVFBIZWFkZXJNYXAmJiBv
cmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBVUkwmJiB1cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4m
JiBzb3VyY2VPcmlnaW4sIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIFByZWZs
aWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRU
UFNVcGdyYWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MsIExvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKK05ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29y
a0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1NjaGVt
ZVJlZ2lzdHJ5KiBzY2hlbWVSZWdpc3RyeSwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlE
LCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgVVJMJiYgdXJsLCBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
JiYgdG9wT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiBy
ZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUpCiAgICAgOiBt
X29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
ICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCkBAIC02Miw2ICs2Myw3IEBA
IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKE4KICAgICAsIG1fc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcykKICAgICAsIG1faXNIVFRQU1VwZ3JhZGVFbmFibGVkKGlzSFRUUFNVcGdyYWRl
RW5hYmxlZCkKICAgICAsIG1fcmVxdWVzdExvYWRUeXBlKHJlcXVlc3RMb2FkVHlwZSkKKyAgICAs
IG1fc2NoZW1lUmVnaXN0cnkoc2NoZW1lUmVnaXN0cnkpCiB7CiAgICAgbV9pc1NhbWVPcmlnaW5S
ZXF1ZXN0ID0gaXNTYW1lT3JpZ2luKG1fdXJsLCBtX29yaWdpbi5nZXQoKSk7CiAgICAgc3dpdGNo
IChvcHRpb25zLmNyZWRlbnRpYWxzKSB7CkBAIC00MzYsNyArNDM4LDcgQEAgYm9vbCBOZXR3b3Jr
TG9hZENoZWNrZXI6OmRvZXNOb3ROZWVkQ09SUwogICAgIGlmIChtX29wdGlvbnMubW9kZSA9PSBG
ZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycyB8fCBtX29wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlv
bnM6Ok1vZGU6Ok5hdmlnYXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghTGVn
YWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JTRW5hYmxlZCh1cmwu
cHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQorICAgIGlmIChtX3NjaGVtZVJl
Z2lzdHJ5ICYmICFtX3NjaGVtZVJlZ2lzdHJ5LT5zaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0Vu
YWJsZWQodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVy
biBtX2lzU2FtZU9yaWdpblJlcXVlc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgJKHJldmlzaW9uIDI1MTA4OCkKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDEzICs1MCwxNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOwogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBO
ZXR3b3JrU2NoZW1lUmVnaXN0cnk7CiAKIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1h
aW5GcmFtZSwgT3RoZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2Vz
cyYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYg
dG9wT3JpZ2luLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBi
b29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRy
YU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBM
b2FkVHlwZTo6T3RoZXIpOworICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYs
IE5ldHdvcmtTY2hlbWVSZWdpc3RyeSosIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNl
c3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYm
LCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ks
IFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBi
b29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBMb2FkVHlw
ZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOwogICAgIH5OZXR3b3JrTG9hZENo
ZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRyaXBsZXQgewpAQCAtMTU1LDYgKzE1
Niw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRJbmZvcm1hdGlvbiBtX2xv
YWRJbmZvcm1hdGlvbjsKIAogICAgIExvYWRUeXBlIG1fcmVxdWVzdExvYWRUeXBlOworICAgIFJl
ZlB0cjxOZXR3b3JrU2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1lUmVnaXN0cnk7CiB9OwogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MCw5ICszNTAsNiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1ByCiAgICAgZm9yIChhdXRvJiBzY2hlbWUg
OiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNOb0FjY2VzcykKICAgICAgICAgcmVn
aXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKHNjaGVtZSk7CiAKLSAgICBmb3IgKGF1dG8mIHNjaGVt
ZSA6IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkKQotICAgICAg
ICByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoc2NoZW1lKTsKLQogICAgIGZvciAoYXV0
byYgc2NoZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FuRGlzcGxheU9u
bHlJZkNhblJlcXVlc3QpCiAgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25s
eUlmQ2FuUmVxdWVzdChzY2hlbWUpOwogICAgIApAQCAtMjIyMSwxMSArMjIxOCw2IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXMKICAgICBMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKHNjaGVtZSk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcm
IHNjaGVtZSkgY29uc3QKLXsKLSAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxT
Y2hlbWVBc0NPUlNFbmFibGVkKHNjaGVtZSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
Z2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJpbmcm
IHNjaGVtZSkgY29uc3QKIHsKICAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJBc0Nh
bkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KHNjaGVtZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDI1MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNiBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAgICAgUmVnaXN0ZXJVUkxTY2hl
bWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShTdHJpbmcgc2NoZW1lKQogICAgIFJl
Z2lzdGVyVVJMU2NoZW1lQXNMb2NhbChTdHJpbmcgc2NoZW1lKQogICAgIFJlZ2lzdGVyVVJMU2No
ZW1lQXNOb0FjY2VzcyhTdHJpbmcgc2NoZW1lKQotICAgIFJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JT
RW5hYmxlZChTdHJpbmcgc2NoZW1lKQogICAgIFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdChTdHJpbmcgc2NoZW1lKQogCiAgICAgU2V0Q2FjaGVTdG9yYWdlUGFy
YW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnksIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjUxMDg4KQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVy
ZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBlbmNvZGVyIDw8IHVybFNj
aGVtZXNSZWdpc3RlcmVkQXNMb2NhbDsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3Rl
cmVkQXNOb0FjY2VzczsKLSAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JT
RW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTE1OSw4
ICsxNTgsNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51cmxTY2hl
bWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVk
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAko
cmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw2
IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyAKICAgICBWZWN0b3I8
U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWw7CiAgICAgVmVjdG9yPFN0cmluZz4g
dXJsU2NoZW1lc1JlZ2lzdGVyZWRBc05vQWNjZXNzOwogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNj
aGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDsKLSAgICBWZWN0b3I8
U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQ7CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTEwODgpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw3ICsxMTEsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNv
dXJjZUxvCiAKICAgICBpZiAoc3luY2hyb25vdXNSZXBseSB8fCBwYXJhbWV0ZXJzLnNob3VsZFJl
c3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzIHx8IHBhcmFtZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUp
IHsKICAgICAgICAgTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUg
PSBpc01haW5GcmFtZUxvYWQoKSA/IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok1haW5G
cmFtZSA6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok90aGVyOwotICAgICAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25z
IH0sIHNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIEhUVFBIZWFkZXJN
YXAgeyBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFt
ZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYo
KSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGln
aHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMu
aXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKKyAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBt
YWtlVW5pcXVlPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
LCAmY29ubmVjdGlvbi5zY2hlbWVSZWdpc3RyeSgpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRl
cnMub3B0aW9ucyB9LCBzZXNzaW9uSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBI
VFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJM
IHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdp
bi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRl
cnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgbV9w
YXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CiAgICAgICAgIGlmIChtX3BhcmFtZXRl
cnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAgICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIt
PnNldENTUFJlc3BvbnNlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMgeyBtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkgfSk7CiAjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTY2hlbWVSZWdpc3RyeS5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2NoZW1lUmVnaXN0cnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit2b2lkIE5ldHdvcmtTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hl
bWVBc0NPUlNFbmFibGVkKFN0cmluZyYmIHNjaGVtZSkKK3sKKyAgICBtX2NvcnNFbmFibGVkU2No
ZW1lcy5hZGQoV1RGTW92ZShzY2hlbWUpKTsKK30KKworYm9vbCBOZXR3b3JrU2NoZW1lUmVnaXN0
cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JTRW5hYmxlZChTdHJpbmdWaWV3IHNjaGVtZSkK
K3sKKyAgICByZXR1cm4gbV9jb3JzRW5hYmxlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lLnRvU3Ry
aW5nV2l0aG91dENvcHlpbmcoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2NoZW1lUmVnaXN0cnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTY2hlbWVSZWdp
c3RyeS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NjaGVtZVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIE5ldHdvcmtTY2hlbWVSZWdpc3RyeSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtT
Y2hlbWVSZWdpc3RyeT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TmV0d29ya1NjaGVtZVJl
Z2lzdHJ5PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTY2hlbWVSZWdp
c3RyeSk7IH0KKworICAgIC8vIEFsbG93IG5vbi1IVFRQIHNjaGVtZXMgdG8gYmUgcmVnaXN0ZXJl
ZCB0byBhbGxvdyBDT1JTIHJlcXVlc3RzLgorICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NP
UlNFbmFibGVkKFN0cmluZyYmIHNjaGVtZSk7CisgICAgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVt
ZUFzQ09SU0VuYWJsZWQoU3RyaW5nVmlldyBzY2hlbWUpOworCitwcml2YXRlOgorICAgIHVzaW5n
IFVSTFNjaGVtZXMgPSBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsK
KyAgICBVUkxTY2hlbWVzIG1fY29yc0VuYWJsZWRTY2hlbWVzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNw
cAkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE3ICs0NSwxNyBAQCBQaW5nTG9hZDo6UGlu
Z0xvYWQoTmV0d29ya1Byb2Nlc3MmIG5ldHdvCiAgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92ZShw
YXJhbWV0ZXJzKSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlBpbmdMb2FkOjp0aW1lb3V0
VGltZXJGaXJlZCkKLSAgICAsIG1fbmV0d29ya0xvYWRDaGVja2VyKG1ha2VVbmlxdWVSZWY8TmV0
d29ya0xvYWRDaGVja2VyPihuZXR3b3JrUHJvY2VzcywgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0
ZXJzLm9wdGlvbnN9LCBtX3Nlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBX
VEZNb3ZlKG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJMIHsgbV9wYXJh
bWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVm
KCksIG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxp
Z2h0UG9saWN5LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRwUmVmZXJyZXIoKSkpCisgICAgLCBt
X25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4obmV0
d29ya1Byb2Nlc3MsIG51bGxwdHIsIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25z
fSwgbV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShtX3Bh
cmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1
ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFt
ZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwg
bV9wYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cFJlZmVycmVyKCkpKQogewogICAgIGluaXRpYWxpemUo
bmV0d29ya1Byb2Nlc3MpOwogfQogCi1QaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vz
cywgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZUVy
cm9yJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAg
IDogbV9zZXNzaW9uSUQoY29ubmVjdGlvbi5zZXNzaW9uSUQoKSkKICAgICAsIG1fcGFyYW1ldGVy
cyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmUGluZ0xv
YWQ6OnRpbWVvdXRUaW1lckZpcmVkKQotICAgICwgbV9uZXR3b3JrTG9hZENoZWNrZXIobWFrZVVu
aXF1ZVJlZjxOZXR3b3JrTG9hZENoZWNrZXI+KG5ldHdvcmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMg
eyBtX3BhcmFtZXRlcnMub3B0aW9uc30sIG1fc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFn
ZVByb3h5SUQsIFdURk1vdmUobV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMpLCBV
UkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3Jp
Z2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1l
dGVycy5wcmVmbGlnaHRQb2xpY3ksIG1fcGFyYW1ldGVycy5yZXF1ZXN0Lmh0dHBSZWZlcnJlcigp
KSkKKyAgICAsIG1fbmV0d29ya0xvYWRDaGVja2VyKG1ha2VVbmlxdWVSZWY8TmV0d29ya0xvYWRD
aGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksICZjb25uZWN0aW9uLnNjaGVtZVJl
Z2lzdHJ5KCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zfSwgbV9zZXNzaW9u
SUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShtX3BhcmFtZXRlcnMub3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0s
IG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMudG9wT3Jp
Z2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwgbV9wYXJhbWV0ZXJz
LnJlcXVlc3QuaHR0cFJlZmVycmVyKCkpKQogICAgICwgbV9ibG9iRmlsZXMoY29ubmVjdGlvbi5y
ZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKIHsKICAgICBmb3IgKGF1dG8mIGZp
bGUgOiBtX2Jsb2JGaWxlcykgewpAQCAtNjMsNyArNjMsNyBAQCBQaW5nTG9hZDo6UGluZ0xvYWQo
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlCiAgICAgICAgICAgICBmaWxlLT5wcmVwYXJlRm9yRmlsZUFj
Y2VzcygpOwogICAgIH0KIAotICAgIGluaXRpYWxpemUobmV0d29ya1Byb2Nlc3MpOworICAgIGlu
aXRpYWxpemUoY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpKTsKIH0KIAogdm9pZCBQaW5nTG9h
ZDo6aW5pdGlhbGl6ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyNTEwODgpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDExICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyOwogY2xhc3MgTmV0d29y
a1Byb2Nlc3M7CitjbGFzcyBOZXR3b3JrU2NoZW1lUmVnaXN0cnk7CiAKIGNsYXNzIFBpbmdMb2Fk
IGZpbmFsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBpbmdMb2FkPiwgcHJpdmF0ZSBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQgewogcHVibGljOgogICAgIFBpbmdMb2FkKE5ldHdvcmtQcm9jZXNzJiwg
UEFMOjpTZXNzaW9uSUQsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJik7Ci0gICAgUGluZ0xvYWQoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJik7CisgICAgUGluZ0xv
YWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik+JiYpOwogCiBwcml2YXRl
OgogICAgIH5QaW5nTG9hZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjIsNyArNTIyLDYgQEAg
TmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHBhcmFtZXRlcnMu
dXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSA9IGNv
cHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQ
b2xpY3kpOwogICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0xvY2FsID0gY29w
eVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0xvY2FsKTsKICAgICBwYXJhbWV0ZXJzLnVy
bFNjaGVtZXNSZWdpc3RlcmVkQXNOb0FjY2VzcyA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1Jl
Z2lzdGVyQXNOb0FjY2Vzcyk7Ci0gICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFz
Q09SU0VuYWJsZWQgPSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQ09SU0VuYWJs
ZWQpOwogICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhbkRpc3BsYXlPbmx5
SWZDYW5SZXF1ZXN0ID0gY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NhbkRpc3Bs
YXlPbmx5SWZDYW5SZXF1ZXN0KTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAt
MTUzNyw3ICsxNTM2LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVB
cwogewogICAgIG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkLmFkZCh1cmxTY2hlbWUp
OwogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJV
UkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybFNjaGVtZSkpOwotICAgIHNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNF
bmFibGVkKHVybFNjaGVtZSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3Rlckds
b2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhjb25zdCBTdHJpbmcm
IHVybFNjaGVtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzU5Niw2ICszNTk2
LDcgQEAKIAkJNTg3NzQzQTQyMUMzMEFEODAwQUU5MDg0IC8qIEhUVFBTVXBncmFkZUxpc3QuZGIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBu
YW1lID0gSFRUUFNVcGdyYWRlTGlzdC5kYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
SFRUUFNVcGdyYWRlTGlzdC5kYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJNThFOTc3REMyMUM0OTlGRTAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNThFOTc3REQy
MUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMEExMEMxMjM1MjQxQTMwMDUzRTJDQSAvKiBO
ZXR3b3JrU2NoZW1lUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0
d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJLaXQyL05ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1QzBCMTc3NTFFN0M4NzlDMDBFOTEyM0Mg
LyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUMwQjE3NzYxRTdDODc5QzAwRTkxMjNDIC8qIFdl
YlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMzY3Myw2ICszNjc0LDcg
QEAKIAkJNUM5RUYyRTcyMUYwNThGOTAwM0JEQzU2IC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTI2RDdG
MjE3QUJCQjYwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTI2RDgwMjE3QUJCQjYwMEY5N0EzNSAvKiBX
S1NhZmVCcm93c2luZ1dhcm5pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tTYWZlQnJvd3NpbmdXYXJuaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QTJGNzQ3MjM1MEUxNTQwMEJFNTE5NCAvKiBOZXR3b3JrU2NoZW1lUmVnaXN0cnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1NjaGVtZVJlZ2lzdHJ5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTQ2RTdBMjFGMUEyMzkwMENFODZCNCAvKiBBUElI
VFRQQ29va2llU3RvcmVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IEFQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tOyBwYXRoID0gVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElIVFRQQ29va2llU3RvcmVDb2NvYS5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwogCQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYWZlQnJvd3NpbmdXYXJuaW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTk4NTRCMjEwQkVCNzMwMDU3RUI2QiAv
KiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02Nzk5LDYgKzY4MDEsOCBAQAogCQkJCTUxMjQwRUJFMjIwQjY5NDcw
MDVDRkM2MyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmggKi8sCiAJCQkJNUMxNDI2RTUxQzIz
RjgwNTAwRDQxMTgzIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCAqLywKIAkJ
CQk1QzE0MjZFNjFDMjNGODA1MDBENDExODMgLyogTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuaCAqLywKKwkJCQk1QzBBMTBDMTIzNTI0MUEzMDA1M0UyQ0EgLyogTmV0d29ya1NjaGVtZVJl
Z2lzdHJ5LmNwcCAqLywKKwkJCQk1Q0EyRjc0NzIzNTBFMTU0MDBCRTUxOTQgLyogTmV0d29ya1Nj
aGVtZVJlZ2lzdHJ5LmggKi8sCiAJCQkJNTMyMTU5NTIxREJBRTZGQzAwNTRBQTNDIC8qIE5ldHdv
cmtTZXNzaW9uLmNwcCAqLywKIAkJCQk1QzIwQ0I5RTFCQjBERDE4MDA4OTVCQjEgLyogTmV0d29y
a1Nlc3Npb24uaCAqLywKIAkJCQk1Qzg5REY1NjIxQUY2MUZGMDA0NjQ1RTggLyogTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsNyArMzcwLDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZQogICAgICAgICByZWdp
c3RlclVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKHNjaGVtZSk7CiAKICAgICBmb3IgKGF1dG8m
IHNjaGVtZSA6IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkKQot
ICAgICAgICByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoc2NoZW1lKTsKKyAgICAgICAg
TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChzY2hl
bWUpOwogCiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdp
c3RlcmVkQXNBbHdheXNSZXZhbGlkYXRlZCkKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVBc0Fs
d2F5c1JldmFsaWRhdGVkKHNjaGVtZSk7CkBAIC01NjUsOSArNTY1LDEwIEBAIHZvaWQgV2ViUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3AKICAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZCh1cmxTY2hlbWUpOwogfQogCi12b2lk
IFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcm
IHVybFNjaGVtZSkgY29uc3QKK3ZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NP
UlNFbmFibGVkKGNvbnN0IFN0cmluZyYgdXJsU2NoZW1lKQogewogICAgIExlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQodXJsU2NoZW1lKTsKKyAgICBl
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09S
U0VuYWJsZWQoeyB1cmxTY2hlbWUgfSksIDApOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkg
Y29uc3QKQEAgLTExNzgsNiArMTE3OSw3IEBAIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiYgV2Vi
UHJvY2Vzczo6ZW4KICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgICAgICBtX25ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi0+c2V0TmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuKFdURk1vdmUoY29ubmVj
dGlvbkluZm8uYXVkaXRUb2tlbikpOwogI2VuZGlmCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQoV2ViQ29yZTo6TGVn
YWN5U2NoZW1lUmVnaXN0cnk6OmFsbFVSTFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCgp
KSwgMCk7CiAgICAgfQogICAgIAogICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b247CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI1
MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNiw3ICszMjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJVUkxT
Y2hlbWVBc0xvY2FsKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxT
Y2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJV
UkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2b2lk
IHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAg
ICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZChjb25zdCBTdHJpbmcm
KSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKGNv
bnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3Bs
YXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380935</attachid>
            <date>2019-10-14 16:40:10 -0700</date>
            <delta_ts>2019-10-22 12:34:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202891-20191014164010.patch</filename>
            <type>text/plain</type>
            <size>39352</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTA4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEwLTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFzcyBDT1JT
LWVuYWJsZWQgc2NoZW1lcyB0aHJvdWdoIFdlYlByb2Nlc3MgaW5zdGVhZCBvZiBoYXZpbmcgdGhl
bSBOZXR3b3JrUHJvY2Vzcy1nbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXND
T1JTRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjphbGxVUkxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5Lmg6CisKIDIwMTktMTAtMTQg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
RUdSRVNTSU9OOiBbaU9TIDEzP10gVGVzdFdlYktpdEFQSS5TaGFyZWRCdWZmZXJUZXN0LnRyeUNy
ZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cyBpcyBmYWlsaW5nCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAy
NTEwODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5oIgogCisjaW5jbHVkZSAiUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYv
TG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTQyMSw2ICs0MjIsNyBA
QCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjphbGxvd3NEYXRhYmFzCiAKIHZvaWQgTGVnYWN5
U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJp
bmcmIHNjaGVtZSkKIHsKKyAgICBBU1NFUlQoIWlzSW5OZXR3b3JrUHJvY2VzcygpKTsKICAgICBp
ZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAgICAgQ09SU0VuYWJsZWRTY2hl
bWVzKCkuYWRkKHNjaGVtZSk7CkBAIC00MjgsOSArNDMwLDE2IEBAIHZvaWQgTGVnYWN5U2NoZW1l
UmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2MKIAogYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewor
ICAgIEFTU0VSVCghaXNJbk5ldHdvcmtQcm9jZXNzKCkpOwogICAgIHJldHVybiAhc2NoZW1lLmlz
TnVsbCgpICYmIENPUlNFbmFibGVkU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKK1Zl
Y3RvcjxTdHJpbmc+IExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjphbGxVUkxTY2hlbWVzUmVnaXN0ZXJl
ZEFzQ09SU0VuYWJsZWQoKQoreworICAgIEFTU0VSVCghaXNJbk5ldHdvcmtQcm9jZXNzKCkpOwor
ICAgIHJldHVybiBjb3B5VG9WZWN0b3IoQ09SU0VuYWJsZWRTY2hlbWVzKCkpOworfQorCiB2b2lk
IExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVu
dFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChzY2hlbWUu
aXNOdWxsKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdp
c3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVt
ZVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDI1MTA4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAg
cHVibGljOgogICAgIC8vIEFsbG93IG5vbi1IVFRQIHNjaGVtZXMgdG8gYmUgcmVnaXN0ZXJlZCB0
byBhbGxvdyBDT1JTIHJlcXVlc3RzLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFi
bGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVj
dG9yPFN0cmluZz4gYWxsVVJMU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkKCk7CiAKICAg
ICAvLyBBbGxvdyByZXNvdXJjZXMgZnJvbSBzb21lIHNjaGVtZXMgdG8gbG9hZCBvbiBhIHBhZ2Us
IHJlZ2FyZGxlc3Mgb2YgaXRzCiAgICAgLy8gQ29udGVudCBTZWN1cml0eSBQb2xpY3kuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw1OCBAQAorMjAxOS0xMC0xNCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFBhc3MgQ09SUy1lbmFibGVk
IHNjaGVtZXMgdGhyb3VnaCBXZWJQcm9jZXNzIGluc3RlYWQgb2YgaGF2aW5nIHRoZW0gTmV0d29y
a1Byb2Nlc3MtZ2xvYmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDI4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBOb3cgdGhlIExlZ2FjeVNjaGVtZVJlZ2lz
dHJ5IGlzIG5vdCB1c2VkIGFzIG11Y2ggaW4gdGhlIE5ldHdvcmtQcm9jZXNzLCBhIHN0ZXAgdG93
YXJkcyBubyB1c2UgYXQgYWxsLgorICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgY3VycmVu
dGx5IG9ubHkgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGdsaWIgQVBJIHdlYmtpdF9zZWN1cml0eV9t
YW5hZ2VyX3JlZ2lzdGVyX3VyaV9zY2hlbWVfYXNfY29yc19lbmFibGVkCisgICAgICAgIGJ1dCBp
dCBoYXMgYmVlbiByZXF1ZXN0ZWQgaW4gYnVnIDIwMTE4MCBhbmQgYnVnIDE5OTA2NC4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmxvYWRQaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlbWVSZWdp
c3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpOZXR3b3Jr
TG9hZENoZWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OmRvZXNO
b3ROZWVkQ09SU0NoZWNrIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1By
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hl
bWVBc0NPUlNFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Om1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2NoZW1lUmVnaXN0cnkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVt
ZUFzQ09SU0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2NoZW1lUmVnaXN0cnk6
OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JTRW5hYmxlZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6UGluZ0xvYWQpOgorICAg
ICAgICBVc2UgbnVsbHB0ciwgaW5kaWNhdGluZyB0aGF0IHRoZSBQaW5nTG9hZCBjb25zdHJ1Y3Rv
ciB0aGF0IGlzIHVzZWQgaW4gYWQgY2xpY2sgYXR0cmlidXRpb24gc2hvdWxkIG5vdCBjaGVjayB0
aGUgY3VzdG9tIHNjaGVtZSByZWdpc3RyeS4KKyAgICAgICAgVGhpcyBpcyBPayBiZWNhdXNlIGFk
IGNsaWNrIGF0dHJpYnV0aW9uIGlzIG9ubHkgdXNlZCBmb3IgSFRUUCBmYW1pbHkgc2NoZW1lcy4K
KyAgICAgICAgKFdlYktpdDo6bV9ibG9iRmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVu
c3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJl
Z2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFz
Q09SU0VuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorCiAyMDE5LTEwLTE0ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbbWFjT1NdIFNhbmRib3ggZXh0ZW5zaW9ucyBzaG91bGQgYmUgY3JlYXRl
ZCB3aXRoIGF1ZGl0IHRva2Vucywgbm90IFBJRHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24g
MjUxMDg4KQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQCBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyCiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRNYXAuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2NoZW1lUmVnaXN0cnku
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldENoYW5uZWwuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2
aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKQEAgLTkzLDYgKzk0LDcgQEAg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDbwogICAgICwgbV9tZG5zUmVn
aXN0ZXIoKnRoaXMpCiAjZW5kaWYKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJv
Y2Vzc0lkZW50aWZpZXIpCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KE5ldHdvcmtTY2hlbWVSZWdp
c3RyeTo6Y3JlYXRlKCkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCkBAIC00MzcsNyArNDM5LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6bG9hZAogICAgIH07CiAKICAgICAvLyBQaW5nTG9hZCBtYW5hZ2VzIGl0cyBvd24gbGlmZXRp
bWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4K
LSAgICBuZXcgUGluZ0xvYWQoKnRoaXMsIG5ldHdvcmtQcm9jZXNzKCksIFdURk1vdmUobG9hZFBh
cmFtZXRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbmV3IFBpbmdMb2Fk
KCp0aGlzLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRPbkxpbmVT
dGF0ZShib29sIGlzT25MaW5lKQpAQCAtNTI2LDYgKzUyOCwxMiBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252CiAgICAgbG9hZGVyLT5jb252ZXJ0VG9Eb3dubG9hZChk
b3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQoVmVjdG9yPFN0
cmluZz4mJiBzY2hlbWVzKQoreworICAgIGZvciAoYXV0byYmIHNjaGVtZSA6IFdURk1vdmUoc2No
ZW1lcykpCisgICAgICAgIG1fc2NoZW1lUmVnaXN0cnktPnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JT
RW5hYmxlZChXVEZNb3ZlKHNjaGVtZSkpOworfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBz
dG9yYWdlU2Vzc2lvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24g
MjUxMDg4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIGVudW0gY2xh
c3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
Y2xhc3MgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5OwogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBjbGFz
cyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKQEAgLTE1OSw2
ICsxNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9M
b25nZXJOZWVkZWQoKTsKICNlbmRpZgogCisgICAgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5JiBzY2hl
bWVSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCk7IH0KKwogcHJpdmF0
ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKTsKIApAQCAtMTg4LDYgKzE5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dGFydERvd25sb2FkKERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7CiAgICAgdm9pZCBjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAorICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVz
QXNDT1JTRW5hYmxlZChWZWN0b3I8U3RyaW5nPiYmIHNjaGVtZXMpOworCiAgICAgdm9pZCBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwogICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY29va2llc0VuYWJs
ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0zNDEsNiArMzQ2LDcgQEAg
cHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyPiBt
X3Byb2Nlc3NFbnRhbmdsZWRQb3J0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2
b2lkKCk+PiBtX21lc3NhZ2VCYXRjaERlbGl2ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOworICAgIFJl
ZjxOZXR3b3JrU2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1lUmVnaXN0cnk7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtOTIsNCArOTIsNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzCiAgICAgUG9zdE1lc3NhZ2VUb1JlbW90ZShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMgbWVzc2FnZSwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciByZW1vdGUpCiAgICAgQ2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KSAtPiAoYm9vbCBoYXNBY3Rpdml0eSkgQXN5bmMK
ICAgICBEaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRfdCBtZXNzYWdlQmF0Y2hJ
ZGVudGlmaWVyKQorICAgIFJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQoVmVjdG9yPFN0
cmluZz4gc2NoZW1lcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCShyZXZpc2lvbiAyNTEwODgpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3Mu
aCIKKyNpbmNsdWRlICJOZXR3b3JrU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Lmg+CkBAIC00OCw3ICs0OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVPcmlnaW4oY29u
c3QgVVIKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3RvY29sSXNC
bG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsKIH0KIAotTmV0d29y
a0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIEhUVFBIZWFkZXJNYXAmJiBv
cmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBVUkwmJiB1cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4m
JiBzb3VyY2VPcmlnaW4sIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIFByZWZs
aWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRU
UFNVcGdyYWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MsIExvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKK05ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29y
a0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1NjaGVt
ZVJlZ2lzdHJ5KiBzY2hlbWVSZWdpc3RyeSwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlE
LCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgVVJMJiYgdXJsLCBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
JiYgdG9wT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiBy
ZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUpCiAgICAgOiBt
X29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
ICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCkBAIC02Miw2ICs2Myw3IEBA
IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKE4KICAgICAsIG1fc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcykKICAgICAsIG1faXNIVFRQU1VwZ3JhZGVFbmFibGVkKGlzSFRUUFNVcGdyYWRl
RW5hYmxlZCkKICAgICAsIG1fcmVxdWVzdExvYWRUeXBlKHJlcXVlc3RMb2FkVHlwZSkKKyAgICAs
IG1fc2NoZW1lUmVnaXN0cnkoc2NoZW1lUmVnaXN0cnkpCiB7CiAgICAgbV9pc1NhbWVPcmlnaW5S
ZXF1ZXN0ID0gaXNTYW1lT3JpZ2luKG1fdXJsLCBtX29yaWdpbi5nZXQoKSk7CiAgICAgc3dpdGNo
IChvcHRpb25zLmNyZWRlbnRpYWxzKSB7CkBAIC00MzYsNyArNDM4LDcgQEAgYm9vbCBOZXR3b3Jr
TG9hZENoZWNrZXI6OmRvZXNOb3ROZWVkQ09SUwogICAgIGlmIChtX29wdGlvbnMubW9kZSA9PSBG
ZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycyB8fCBtX29wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlv
bnM6Ok1vZGU6Ok5hdmlnYXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghTGVn
YWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JTRW5hYmxlZCh1cmwu
cHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQorICAgIGlmIChtX3NjaGVtZVJl
Z2lzdHJ5ICYmICFtX3NjaGVtZVJlZ2lzdHJ5LT5zaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0Vu
YWJsZWQodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVy
biBtX2lzU2FtZU9yaWdpblJlcXVlc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgJKHJldmlzaW9uIDI1MTA4OCkKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDEzICs1MCwxNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOwogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBO
ZXR3b3JrU2NoZW1lUmVnaXN0cnk7CiAKIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1h
aW5GcmFtZSwgT3RoZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2Vz
cyYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYg
dG9wT3JpZ2luLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBi
b29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRy
YU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBM
b2FkVHlwZTo6T3RoZXIpOworICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYs
IE5ldHdvcmtTY2hlbWVSZWdpc3RyeSosIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNl
c3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYm
LCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ks
IFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBi
b29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBMb2FkVHlw
ZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOwogICAgIH5OZXR3b3JrTG9hZENo
ZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRyaXBsZXQgewpAQCAtMTU1LDYgKzE1
Niw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRJbmZvcm1hdGlvbiBtX2xv
YWRJbmZvcm1hdGlvbjsKIAogICAgIExvYWRUeXBlIG1fcmVxdWVzdExvYWRUeXBlOworICAgIFJl
ZlB0cjxOZXR3b3JrU2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1lUmVnaXN0cnk7CiB9OwogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MCw5ICszNTAsNiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1ByCiAgICAgZm9yIChhdXRvJiBzY2hlbWUg
OiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNOb0FjY2VzcykKICAgICAgICAgcmVn
aXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKHNjaGVtZSk7CiAKLSAgICBmb3IgKGF1dG8mIHNjaGVt
ZSA6IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkKQotICAgICAg
ICByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoc2NoZW1lKTsKLQogICAgIGZvciAoYXV0
byYgc2NoZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FuRGlzcGxheU9u
bHlJZkNhblJlcXVlc3QpCiAgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25s
eUlmQ2FuUmVxdWVzdChzY2hlbWUpOwogICAgIApAQCAtMjIyMSwxMSArMjIxOCw2IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXMKICAgICBMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKHNjaGVtZSk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcm
IHNjaGVtZSkgY29uc3QKLXsKLSAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxT
Y2hlbWVBc0NPUlNFbmFibGVkKHNjaGVtZSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
Z2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJpbmcm
IHNjaGVtZSkgY29uc3QKIHsKICAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJBc0Nh
bkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KHNjaGVtZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDI1MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNiBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAgICAgUmVnaXN0ZXJVUkxTY2hl
bWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShTdHJpbmcgc2NoZW1lKQogICAgIFJl
Z2lzdGVyVVJMU2NoZW1lQXNMb2NhbChTdHJpbmcgc2NoZW1lKQogICAgIFJlZ2lzdGVyVVJMU2No
ZW1lQXNOb0FjY2VzcyhTdHJpbmcgc2NoZW1lKQotICAgIFJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JT
RW5hYmxlZChTdHJpbmcgc2NoZW1lKQogICAgIFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdChTdHJpbmcgc2NoZW1lKQogCiAgICAgU2V0Q2FjaGVTdG9yYWdlUGFy
YW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnksIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjUxMDg4KQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVy
ZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBlbmNvZGVyIDw8IHVybFNj
aGVtZXNSZWdpc3RlcmVkQXNMb2NhbDsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3Rl
cmVkQXNOb0FjY2VzczsKLSAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JT
RW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTE1OSw4
ICsxNTgsNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51cmxTY2hl
bWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVk
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAko
cmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw2
IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyAKICAgICBWZWN0b3I8
U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWw7CiAgICAgVmVjdG9yPFN0cmluZz4g
dXJsU2NoZW1lc1JlZ2lzdGVyZWRBc05vQWNjZXNzOwogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNj
aGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDsKLSAgICBWZWN0b3I8
U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQ7CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTEwODgpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw3ICsxMTEsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNv
dXJjZUxvCiAKICAgICBpZiAoc3luY2hyb25vdXNSZXBseSB8fCBwYXJhbWV0ZXJzLnNob3VsZFJl
c3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzIHx8IHBhcmFtZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUp
IHsKICAgICAgICAgTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUg
PSBpc01haW5GcmFtZUxvYWQoKSA/IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok1haW5G
cmFtZSA6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok90aGVyOwotICAgICAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25z
IH0sIHNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIEhUVFBIZWFkZXJN
YXAgeyBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFt
ZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYo
KSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGln
aHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMu
aXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKKyAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBt
YWtlVW5pcXVlPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
LCAmY29ubmVjdGlvbi5zY2hlbWVSZWdpc3RyeSgpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRl
cnMub3B0aW9ucyB9LCBzZXNzaW9uSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBI
VFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJM
IHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdp
bi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRl
cnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgbV9w
YXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CiAgICAgICAgIGlmIChtX3BhcmFtZXRl
cnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAgICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIt
PnNldENTUFJlc3BvbnNlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMgeyBtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkgfSk7CiAjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTY2hlbWVSZWdpc3RyeS5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2NoZW1lUmVnaXN0cnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit2b2lkIE5ldHdvcmtTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hl
bWVBc0NPUlNFbmFibGVkKFN0cmluZyYmIHNjaGVtZSkKK3sKKyAgICBtX2NvcnNFbmFibGVkU2No
ZW1lcy5hZGQoV1RGTW92ZShzY2hlbWUpKTsKK30KKworYm9vbCBOZXR3b3JrU2NoZW1lUmVnaXN0
cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JTRW5hYmxlZChTdHJpbmdWaWV3IHNjaGVtZSkK
K3sKKyAgICByZXR1cm4gbV9jb3JzRW5hYmxlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lLnRvU3Ry
aW5nV2l0aG91dENvcHlpbmcoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2NoZW1lUmVnaXN0cnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTY2hlbWVSZWdp
c3RyeS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NjaGVtZVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIE5ldHdvcmtTY2hlbWVSZWdpc3RyeSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtT
Y2hlbWVSZWdpc3RyeT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TmV0d29ya1NjaGVtZVJl
Z2lzdHJ5PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTY2hlbWVSZWdp
c3RyeSk7IH0KKworICAgIC8vIEFsbG93IG5vbi1IVFRQIHNjaGVtZXMgdG8gYmUgcmVnaXN0ZXJl
ZCB0byBhbGxvdyBDT1JTIHJlcXVlc3RzLgorICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NP
UlNFbmFibGVkKFN0cmluZyYmIHNjaGVtZSk7CisgICAgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVt
ZUFzQ09SU0VuYWJsZWQoU3RyaW5nVmlldyBzY2hlbWUpOworCitwcml2YXRlOgorICAgIHVzaW5n
IFVSTFNjaGVtZXMgPSBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsK
KyAgICBVUkxTY2hlbWVzIG1fY29yc0VuYWJsZWRTY2hlbWVzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNw
cAkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE3ICs0NSwxNyBAQCBQaW5nTG9hZDo6UGlu
Z0xvYWQoTmV0d29ya1Byb2Nlc3MmIG5ldHdvCiAgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92ZShw
YXJhbWV0ZXJzKSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlBpbmdMb2FkOjp0aW1lb3V0
VGltZXJGaXJlZCkKLSAgICAsIG1fbmV0d29ya0xvYWRDaGVja2VyKG1ha2VVbmlxdWVSZWY8TmV0
d29ya0xvYWRDaGVja2VyPihuZXR3b3JrUHJvY2VzcywgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0
ZXJzLm9wdGlvbnN9LCBtX3Nlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBX
VEZNb3ZlKG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJMIHsgbV9wYXJh
bWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVm
KCksIG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxp
Z2h0UG9saWN5LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRwUmVmZXJyZXIoKSkpCisgICAgLCBt
X25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4obmV0
d29ya1Byb2Nlc3MsIG51bGxwdHIsIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25z
fSwgbV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShtX3Bh
cmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1
ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFt
ZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwg
bV9wYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cFJlZmVycmVyKCkpKQogewogICAgIGluaXRpYWxpemUo
bmV0d29ya1Byb2Nlc3MpOwogfQogCi1QaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vz
cywgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZUVy
cm9yJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAg
IDogbV9zZXNzaW9uSUQoY29ubmVjdGlvbi5zZXNzaW9uSUQoKSkKICAgICAsIG1fcGFyYW1ldGVy
cyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmUGluZ0xv
YWQ6OnRpbWVvdXRUaW1lckZpcmVkKQotICAgICwgbV9uZXR3b3JrTG9hZENoZWNrZXIobWFrZVVu
aXF1ZVJlZjxOZXR3b3JrTG9hZENoZWNrZXI+KG5ldHdvcmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMg
eyBtX3BhcmFtZXRlcnMub3B0aW9uc30sIG1fc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFn
ZVByb3h5SUQsIFdURk1vdmUobV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMpLCBV
UkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3Jp
Z2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1l
dGVycy5wcmVmbGlnaHRQb2xpY3ksIG1fcGFyYW1ldGVycy5yZXF1ZXN0Lmh0dHBSZWZlcnJlcigp
KSkKKyAgICAsIG1fbmV0d29ya0xvYWRDaGVja2VyKG1ha2VVbmlxdWVSZWY8TmV0d29ya0xvYWRD
aGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksICZjb25uZWN0aW9uLnNjaGVtZVJl
Z2lzdHJ5KCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zfSwgbV9zZXNzaW9u
SUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShtX3BhcmFtZXRlcnMub3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0s
IG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMudG9wT3Jp
Z2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwgbV9wYXJhbWV0ZXJz
LnJlcXVlc3QuaHR0cFJlZmVycmVyKCkpKQogICAgICwgbV9ibG9iRmlsZXMoY29ubmVjdGlvbi5y
ZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKIHsKICAgICBmb3IgKGF1dG8mIGZp
bGUgOiBtX2Jsb2JGaWxlcykgewpAQCAtNjMsNyArNjMsNyBAQCBQaW5nTG9hZDo6UGluZ0xvYWQo
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlCiAgICAgICAgICAgICBmaWxlLT5wcmVwYXJlRm9yRmlsZUFj
Y2VzcygpOwogICAgIH0KIAotICAgIGluaXRpYWxpemUobmV0d29ya1Byb2Nlc3MpOworICAgIGlu
aXRpYWxpemUoY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpKTsKIH0KIAogdm9pZCBQaW5nTG9h
ZDo6aW5pdGlhbGl6ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyNTEwODgpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDExICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyOwogY2xhc3MgTmV0d29y
a1Byb2Nlc3M7CitjbGFzcyBOZXR3b3JrU2NoZW1lUmVnaXN0cnk7CiAKIGNsYXNzIFBpbmdMb2Fk
IGZpbmFsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBpbmdMb2FkPiwgcHJpdmF0ZSBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQgewogcHVibGljOgogICAgIFBpbmdMb2FkKE5ldHdvcmtQcm9jZXNzJiwg
UEFMOjpTZXNzaW9uSUQsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJik7Ci0gICAgUGluZ0xvYWQoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJik7CisgICAgUGluZ0xv
YWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik+JiYpOwogCiBwcml2YXRl
OgogICAgIH5QaW5nTG9hZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjIsNyArNTIyLDYgQEAg
TmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHBhcmFtZXRlcnMu
dXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSA9IGNv
cHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQ
b2xpY3kpOwogICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0xvY2FsID0gY29w
eVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0xvY2FsKTsKICAgICBwYXJhbWV0ZXJzLnVy
bFNjaGVtZXNSZWdpc3RlcmVkQXNOb0FjY2VzcyA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1Jl
Z2lzdGVyQXNOb0FjY2Vzcyk7Ci0gICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFz
Q09SU0VuYWJsZWQgPSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQ09SU0VuYWJs
ZWQpOwogICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhbkRpc3BsYXlPbmx5
SWZDYW5SZXF1ZXN0ID0gY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NhbkRpc3Bs
YXlPbmx5SWZDYW5SZXF1ZXN0KTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAt
MTUzNyw3ICsxNTM2LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVB
cwogewogICAgIG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkLmFkZCh1cmxTY2hlbWUp
OwogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJV
UkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybFNjaGVtZSkpOwotICAgIHNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNF
bmFibGVkKHVybFNjaGVtZSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3Rlckds
b2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhjb25zdCBTdHJpbmcm
IHVybFNjaGVtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzU5Niw2ICszNTk2
LDcgQEAKIAkJNTg3NzQzQTQyMUMzMEFEODAwQUU5MDg0IC8qIEhUVFBTVXBncmFkZUxpc3QuZGIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBu
YW1lID0gSFRUUFNVcGdyYWRlTGlzdC5kYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
SFRUUFNVcGdyYWRlTGlzdC5kYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJNThFOTc3REMyMUM0OTlGRTAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNThFOTc3REQy
MUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMEExMEMxMjM1MjQxQTMwMDUzRTJDQSAvKiBO
ZXR3b3JrU2NoZW1lUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0
d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJLaXQyL05ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1QzBCMTc3NTFFN0M4NzlDMDBFOTEyM0Mg
LyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUMwQjE3NzYxRTdDODc5QzAwRTkxMjNDIC8qIFdl
YlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMzY3Myw2ICszNjc0LDcg
QEAKIAkJNUM5RUYyRTcyMUYwNThGOTAwM0JEQzU2IC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTI2RDdG
MjE3QUJCQjYwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTI2RDgwMjE3QUJCQjYwMEY5N0EzNSAvKiBX
S1NhZmVCcm93c2luZ1dhcm5pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tTYWZlQnJvd3NpbmdXYXJuaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QTJGNzQ3MjM1MEUxNTQwMEJFNTE5NCAvKiBOZXR3b3JrU2NoZW1lUmVnaXN0cnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1NjaGVtZVJlZ2lzdHJ5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTQ2RTdBMjFGMUEyMzkwMENFODZCNCAvKiBBUElI
VFRQQ29va2llU3RvcmVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IEFQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tOyBwYXRoID0gVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElIVFRQQ29va2llU3RvcmVDb2NvYS5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwogCQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYWZlQnJvd3NpbmdXYXJuaW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTk4NTRCMjEwQkVCNzMwMDU3RUI2QiAv
KiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02Nzk5LDYgKzY4MDEsOCBAQAogCQkJCTUxMjQwRUJFMjIwQjY5NDcw
MDVDRkM2MyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmggKi8sCiAJCQkJNUMxNDI2RTUxQzIz
RjgwNTAwRDQxMTgzIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCAqLywKIAkJ
CQk1QzE0MjZFNjFDMjNGODA1MDBENDExODMgLyogTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuaCAqLywKKwkJCQk1QzBBMTBDMTIzNTI0MUEzMDA1M0UyQ0EgLyogTmV0d29ya1NjaGVtZVJl
Z2lzdHJ5LmNwcCAqLywKKwkJCQk1Q0EyRjc0NzIzNTBFMTU0MDBCRTUxOTQgLyogTmV0d29ya1Nj
aGVtZVJlZ2lzdHJ5LmggKi8sCiAJCQkJNTMyMTU5NTIxREJBRTZGQzAwNTRBQTNDIC8qIE5ldHdv
cmtTZXNzaW9uLmNwcCAqLywKIAkJCQk1QzIwQ0I5RTFCQjBERDE4MDA4OTVCQjEgLyogTmV0d29y
a1Nlc3Npb24uaCAqLywKIAkJCQk1Qzg5REY1NjIxQUY2MUZGMDA0NjQ1RTggLyogTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsNyArMzcwLDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZQogICAgICAgICByZWdp
c3RlclVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKHNjaGVtZSk7CiAKICAgICBmb3IgKGF1dG8m
IHNjaGVtZSA6IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkKQot
ICAgICAgICByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoc2NoZW1lKTsKKyAgICAgICAg
TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChzY2hl
bWUpOwogCiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdp
c3RlcmVkQXNBbHdheXNSZXZhbGlkYXRlZCkKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVBc0Fs
d2F5c1JldmFsaWRhdGVkKHNjaGVtZSk7CkBAIC01NjUsOSArNTY1LDEwIEBAIHZvaWQgV2ViUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3AKICAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZCh1cmxTY2hlbWUpOwogfQogCi12b2lk
IFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcm
IHVybFNjaGVtZSkgY29uc3QKK3ZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NP
UlNFbmFibGVkKGNvbnN0IFN0cmluZyYgdXJsU2NoZW1lKQogewogICAgIExlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQodXJsU2NoZW1lKTsKKyAgICBl
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09S
U0VuYWJsZWQoeyB1cmxTY2hlbWUgfSksIDApOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkg
Y29uc3QKQEAgLTExNzgsNiArMTE3OSw3IEBAIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiYgV2Vi
UHJvY2Vzczo6ZW4KICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgICAgICBtX25ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi0+c2V0TmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuKFdURk1vdmUoY29ubmVj
dGlvbkluZm8uYXVkaXRUb2tlbikpOwogI2VuZGlmCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQoV2ViQ29yZTo6TGVn
YWN5U2NoZW1lUmVnaXN0cnk6OmFsbFVSTFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCgp
KSwgMCk7CiAgICAgfQogICAgIAogICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b247CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI1
MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNiw3ICszMjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJVUkxT
Y2hlbWVBc0xvY2FsKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxT
Y2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJV
UkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2b2lk
IHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAg
ICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZChjb25zdCBTdHJpbmcm
KSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKGNv
bnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3Bs
YXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYpIGNvbnN0OwpJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjUxMTA4KQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTkt
MTAtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBQYXNzIENPUlMtZW5hYmxlZCBzY2hlbWVzIHRocm91Z2ggV2ViUHJvY2VzcyBpbnN0ZWFk
IG9mIGhhdmluZyB0aGVtIE5ldHdvcmtQcm9jZXNzLWdsb2JhbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODkxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbToKKyAgICAgICAgKC1bU1dNZXNzYWdlSGFuZGxl
cldpdGhFeHBlY3RlZE1lc3NhZ2UgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3Jp
cHRNZXNzYWdlOl0pOgorICAgICAgICBVc2UgRVhQRUNUX1dLX1NUUkVRIHNvIEkgY2FuIHNlZSB3
aGF0IGlzIGdvaW5nIG9uIG9uIEVXUy4KKwogMjAxOS0xMC0xNCAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI0MzY4Mik6IFF1aWNrIExvb2sg
cHJldmlld3MgbG9hZGVkIGZyb20gdGhlIG1lbW9yeSBjYWNoZSByZW5kZXIgd2l0aCB0aGUgd3Jv
bmcgY29udGVudCB0eXBlCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQkocmV2aXNpb24gMjUx
MDg4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgQGludGVyZmFjZSBT
V01lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTQogQGltcGxlbWVudGF0aW9uIFNXTWVzc2FnZUhh
bmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlCiAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjoo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2
ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKIHsKLSAgICBFWFBFQ1Rf
VFJVRShbW21lc3NhZ2UgYm9keV0gaXNFcXVhbFRvU3RyaW5nOmV4cGVjdGVkTWVzc2FnZV0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUShtZXNzYWdlLmJvZHksIGV4cGVjdGVkTWVzc2FnZSk7CiAgICAg
ZG9uZSA9IHRydWU7CiB9CiBAZW5kCg==
</data>
<flag name="review"
          id="396684"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381582</attachid>
            <date>2019-10-22 12:34:10 -0700</date>
            <delta_ts>2019-10-24 09:38:44 -0700</delta_ts>
            <desc>retry all ews</desc>
            <filename>attachment.cgi.patch</filename>
            <type>text/plain</type>
            <size>37830</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTA4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEwLTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFzcyBDT1JT
LWVuYWJsZWQgc2NoZW1lcyB0aHJvdWdoIFdlYlByb2Nlc3MgaW5zdGVhZCBvZiBoYXZpbmcgdGhl
bSBOZXR3b3JrUHJvY2Vzcy1nbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJs
ZXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NP
UlNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91
bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
U2NoZW1lUmVnaXN0cnk6OmFsbFVSTFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuaDoKKwogMjAxOS0xMC0xNCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJF
R1JFU1NJT046IFtpT1MgMTM/XSBUZXN0V2ViS2l0QVBJLlNoYXJlZEJ1ZmZlclRlc3QudHJ5Q3Jl
YXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzIGlzIGZhaWxpbmcKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDI1
MTA4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgiCiAKKyNpbmNsdWRlICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9M
b2NrZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNDIxLDYgKzQyMiw3IEBA
IGJvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXMKIAogdm9pZCBMZWdhY3lT
Y2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQogeworICAgIEFTU0VSVCghaXNJbk5ldHdvcmtQcm9jZXNzKCkpOwogICAgIGlm
IChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKICAgICBDT1JTRW5hYmxlZFNjaGVt
ZXMoKS5hZGQoc2NoZW1lKTsKQEAgLTQyOCw5ICs0MzAsMTYgQEAgdm9pZCBMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6cmVnaXN0ZXJVUkxTYwogCiBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91
bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Cisg
ICAgQVNTRVJUKCFpc0luTmV0d29ya1Byb2Nlc3MoKSk7CiAgICAgcmV0dXJuICFzY2hlbWUuaXNO
dWxsKCkgJiYgQ09SU0VuYWJsZWRTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIAorVmVj
dG9yPFN0cmluZz4gTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmFsbFVSTFNjaGVtZXNSZWdpc3RlcmVk
QXNDT1JTRW5hYmxlZCgpCit7CisgICAgQVNTRVJUKCFpc0luTmV0d29ya1Byb2Nlc3MoKSk7Cisg
ICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihDT1JTRW5hYmxlZFNjaGVtZXMoKSk7Cit9CisKIHZvaWQg
TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50
U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgaWYgKHNjaGVtZS5p
c051bGwoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lz
dHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1l
UmVnaXN0cnkuaAkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVnYWN5U2NoZW1lUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBw
dWJsaWM6CiAgICAgLy8gQWxsb3cgbm9uLUhUVFAgc2NoZW1lcyB0byBiZSByZWdpc3RlcmVkIHRv
IGFsbG93IENPUlMgcmVxdWVzdHMuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVn
aXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJs
ZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0
b3I8U3RyaW5nPiBhbGxVUkxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQoKTsKIAogICAg
IC8vIEFsbG93IHJlc291cmNlcyBmcm9tIHNvbWUgc2NoZW1lcyB0byBsb2FkIG9uIGEgcGFnZSwg
cmVnYXJkbGVzcyBvZiBpdHMKICAgICAvLyBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTEwODgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE5LTEwLTE0ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFzcyBDT1JTLWVuYWJsZWQg
c2NoZW1lcyB0aHJvdWdoIFdlYlByb2Nlc3MgaW5zdGVhZCBvZiBoYXZpbmcgdGhlbSBOZXR3b3Jr
UHJvY2Vzcy1nbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMjg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAg
ICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiAgTm93IHRoZSBMZWdhY3lTY2hlbWVSZWdpc3Ry
eSBpcyBub3QgdXNlZCBhcyBtdWNoIGluIHRoZSBOZXR3b3JrUHJvY2VzcywgYSBzdGVwIHRvd2Fy
ZHMgbm8gdXNlIGF0IGFsbC4KKyAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGN1cnJlbnRs
eSBvbmx5IGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBnbGliIEFQSSB3ZWJraXRfc2VjdXJpdHlfbWFu
YWdlcl9yZWdpc3Rlcl91cmlfc2NoZW1lX2FzX2NvcnNfZW5hYmxlZAorICAgICAgICBidXQgaXQg
aGFzIGJlZW4gcmVxdWVzdGVkIGluIGJ1ZyAyMDExODAgYW5kIGJ1ZyAxOTkwNjQuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpsb2FkUGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZXNBc0NPUlNFbmFibGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZW1lUmVnaXN0
cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hl
Y2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xv
YWRDaGVja2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpkb2VzTm90
TmVlZENPUlNDaGVjayBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1l
QXNDT1JTRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjptX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVB
c0NPUlNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NjaGVtZVJlZ2lzdHJ5Ojpz
aG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTY2hlbWVSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1NjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OlBpbmdMb2FkKToKKyAgICAg
ICAgVXNlIG51bGxwdHIsIGluZGljYXRpbmcgdGhhdCB0aGUgUGluZ0xvYWQgY29uc3RydWN0b3Ig
dGhhdCBpcyB1c2VkIGluIGFkIGNsaWNrIGF0dHJpYnV0aW9uIHNob3VsZCBub3QgY2hlY2sgdGhl
IGN1c3RvbSBzY2hlbWUgcmVnaXN0cnkuCisgICAgICAgIFRoaXMgaXMgT2sgYmVjYXVzZSBhZCBj
bGljayBhdHRyaWJ1dGlvbiBpcyBvbmx5IHVzZWQgZm9yIEhUVFAgZmFtaWx5IHNjaGVtZXMuCisg
ICAgICAgIChXZWJLaXQ6Om1fYmxvYkZpbGVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1
cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdp
c3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NP
UlNFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaDoKKwogMjAxOS0xMC0xNCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW21hY09TXSBTYW5kYm94IGV4dGVuc2lvbnMgc2hvdWxkIGJlIGNyZWF0ZWQg
d2l0aCBhdWRpdCB0b2tlbnMsIG5vdCBQSURzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI1
MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cgogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAorTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNw
cAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRDaGFubmVsLmNwcApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDI1MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5l
dHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNpbmNs
dWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCkBAIC05Myw2ICs5NCw3IEBAIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ28KICAgICAsIG1fbWRuc1JlZ2lz
dGVyKCp0aGlzKQogI2VuZGlmCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nl
c3NJZGVudGlmaWVyKQorICAgICwgbV9zY2hlbWVSZWdpc3RyeShOZXR3b3JrU2NoZW1lUmVnaXN0
cnk6OmNyZWF0ZSgpKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
IApAQCAtNDM3LDcgKzQzOSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmxvYWQKICAgICB9OwogCiAgICAgLy8gUGluZ0xvYWQgbWFuYWdlcyBpdHMgb3duIGxpZmV0aW1l
LCBkZWxldGluZyBpdHNlbGYgd2hlbiBpdHMgcHVycG9zZSBoYXMgYmVlbiBmdWxmaWxsZWQuCi0g
ICAgbmV3IFBpbmdMb2FkKCp0aGlzLCBuZXR3b3JrUHJvY2VzcygpLCBXVEZNb3ZlKGxvYWRQYXJh
bWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIG5ldyBQaW5nTG9hZCgq
dGhpcywgV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0T25MaW5lU3Rh
dGUoYm9vbCBpc09uTGluZSkKQEAgLTUyNiw2ICs1MjgsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y29udgogICAgIGxvYWRlci0+Y29udmVydFRvRG93bmxvYWQoZG93
bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJp
bmc+JiYgc2NoZW1lcykKK3sKKyAgICBmb3IgKGF1dG8mJiBzY2hlbWUgOiBXVEZNb3ZlKHNjaGVt
ZXMpKQorICAgICAgICBtX3NjaGVtZVJlZ2lzdHJ5LT5yZWdpc3RlclVSTFNjaGVtZUFzQ09SU0Vu
YWJsZWQoV1RGTW92ZShzY2hlbWUpKTsKK30KKwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3Rv
cmFnZVNlc3Npb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI1
MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBlbnVtIGNsYXNz
IEluY2x1ZGVTZWN1cmVDb29raWVzIDogYm9vbDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Ns
YXNzIE5ldHdvcmtTY2hlbWVSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3Mg
TmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya1Nlc3Npb247CkBAIC0xNTksNiAr
MTYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9u
Z2VyTmVlZGVkKCk7CiAjZW5kaWYKIAorICAgIE5ldHdvcmtTY2hlbWVSZWdpc3RyeSYgc2NoZW1l
UmVnaXN0cnkoKSB7IHJldHVybiBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpOyB9CisKIHByaXZhdGU6
CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllcik7CiAKQEAgLTE4OCw2ICsxOTEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Rh
cnREb3dubG9hZChEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSB7IH0pOwogICAgIHZvaWQgY29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVy
LCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKKyAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lc0Fz
Q09SU0VuYWJsZWQoVmVjdG9yPFN0cmluZz4mJiBzY2hlbWVzKTsKKwogICAgIHZvaWQgY29va2ll
c0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1
cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKICAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVk
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMzQxLDYgKzM0Niw3IEBAIHBy
aXZhdGU6CiAKICAgICBIYXNoU2V0PFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj4gbV9w
cm9jZXNzRW50YW5nbGVkUG9ydHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9p
ZCgpPj4gbV9tZXNzYWdlQmF0Y2hEZWxpdmVyeUNvbXBsZXRpb25IYW5kbGVyczsKKyAgICBSZWY8
TmV0d29ya1NjaGVtZVJlZ2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDI1MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTkyLDQgKzkyLDUgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
cwogICAgIFBvc3RNZXNzYWdlVG9SZW1vdGUoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzIG1lc3NhZ2UsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIg
cmVtb3RlKQogICAgIENoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KHN0cnVjdCBXZWJDb3JlOjpN
ZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCkgLT4gKGJvb2wgaGFzQWN0aXZpdHkpIEFzeW5jCiAg
ICAgRGlkRGVsaXZlck1lc3NhZ2VQb3J0TWVzc2FnZXModWludDY0X3QgbWVzc2FnZUJhdGNoSWRl
bnRpZmllcikKKyAgICBSZWdpc3RlclVSTFNjaGVtZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJp
bmc+IHNjaGVtZXMpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgi
CisjaW5jbHVkZSAiTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b250ZW50UnVsZUxpc3RSZXN1bHRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJp
dHlQb2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5o
PgpAQCAtNDgsNyArNDksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lT3JpZ2luKGNvbnN0
IFVSCiAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzRGF0YSgpIHx8IHVybC5wcm90b2NvbElzQmxv
YigpIHx8ICFvcmlnaW4gfHwgb3JpZ2luLT5jYW5SZXF1ZXN0KHVybCk7CiB9CiAKLU5ldHdvcmtM
b2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBIVFRQSGVhZGVyTWFwJiYgb3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycywgVVJMJiYgdXJsLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYg
c291cmNlT3JpZ2luLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBQcmVmbGln
aHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBT
VXBncmFkZUVuYWJsZWQsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
LCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUpCitOZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtM
b2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTY2hlbWVS
ZWdpc3RyeSogc2NoZW1lUmVnaXN0cnksIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwg
SFRUUEhlYWRlck1hcCYmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYm
IHRvcE9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVm
ZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1cmVFeHRy
YU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQogICAgIDogbV9v
cHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAg
ICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpAQCAtNjIsNiArNjMsNyBAQCBO
ZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihOCiAgICAgLCBtX3Nob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MpCiAgICAgLCBtX2lzSFRUUFNVcGdyYWRlRW5hYmxlZChpc0hUVFBTVXBncmFkZUVu
YWJsZWQpCiAgICAgLCBtX3JlcXVlc3RMb2FkVHlwZShyZXF1ZXN0TG9hZFR5cGUpCisgICAgLCBt
X3NjaGVtZVJlZ2lzdHJ5KHNjaGVtZVJlZ2lzdHJ5KQogewogICAgIG1faXNTYW1lT3JpZ2luUmVx
dWVzdCA9IGlzU2FtZU9yaWdpbihtX3VybCwgbV9vcmlnaW4uZ2V0KCkpOwogICAgIHN3aXRjaCAo
b3B0aW9ucy5jcmVkZW50aWFscykgewpAQCAtNDM2LDcgKzQzOCw3IEBAIGJvb2wgTmV0d29ya0xv
YWRDaGVja2VyOjpkb2VzTm90TmVlZENPUlMKICAgICBpZiAobV9vcHRpb25zLm1vZGUgPT0gRmV0
Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMgfHwgbV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25z
OjpNb2RlOjpOYXZpZ2F0ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoIUxlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQodXJsLnBy
b3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICBpZiAobV9zY2hlbWVSZWdp
c3RyeSAmJiAhbV9zY2hlbWVSZWdpc3RyeS0+c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFi
bGVkKHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4g
bV9pc1NhbWVPcmlnaW5SZXF1ZXN0OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCShyZXZpc2lvbiAyNTEwODgpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MCwxMyArNTAsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3MgTmV0
d29ya1NjaGVtZVJlZ2lzdHJ5OwogCiBjbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TmV0d29ya0xvYWRDaGVja2VyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBMb2FkVHlwZSA6IGJvb2wgeyBNYWlu
RnJhbWUsIE90aGVyIH07CiAKLSAgICBOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3Mm
LCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRv
cE9yaWdpbiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9v
bCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gTG9h
ZFR5cGU6Ok90aGVyKTsKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmLCBO
ZXR3b3JrU2NoZW1lUmVnaXN0cnkqLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNz
aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwg
VVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgUmVmUHRyPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBT
dHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9v
bCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUg
cmVxdWVzdExvYWRUeXBlID0gTG9hZFR5cGU6Ok90aGVyKTsKICAgICB+TmV0d29ya0xvYWRDaGVj
a2VyKCk7CiAKICAgICBzdHJ1Y3QgUmVkaXJlY3Rpb25UcmlwbGV0IHsKQEAgLTE1NSw2ICsxNTYs
NyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkSW5mb3JtYXRpb24gbV9sb2Fk
SW5mb3JtYXRpb247CiAKICAgICBMb2FkVHlwZSBtX3JlcXVlc3RMb2FkVHlwZTsKKyAgICBSZWZQ
dHI8TmV0d29ya1NjaGVtZVJlZ2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OwogfTsKIAogfQpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDI1MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsOSArMzUwLDYgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcgogICAgIGZvciAoYXV0byYgc2NoZW1lIDog
cGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3MpCiAgICAgICAgIHJlZ2lz
dGVyVVJMU2NoZW1lQXNOb0FjY2VzcyhzY2hlbWUpOwogCi0gICAgZm9yIChhdXRvJiBzY2hlbWUg
OiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCkKLSAgICAgICAg
cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHNjaGVtZSk7Ci0KICAgICBmb3IgKGF1dG8m
IHNjaGVtZSA6IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhbkRpc3BsYXlPbmx5
SWZDYW5SZXF1ZXN0KQogICAgICAgICByZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJ
ZkNhblJlcXVlc3Qoc2NoZW1lKTsKICAgICAKQEAgLTIyMjEsMTEgKzIyMTgsNiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzCiAgICAgTGVnYWN5U2NoZW1lUmVnaXN0
cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2VzcyhzY2hlbWUpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpIGNvbnN0Ci17Ci0gICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNDT1JTRW5hYmxlZChzY2hlbWUpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdp
c3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpIGNvbnN0CiB7CiAgICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyQXNDYW5E
aXNwbGF5T25seUlmQ2FuUmVxdWVzdChzY2hlbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyNTEwODgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDYgQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIFJlZ2lzdGVyVVJMU2NoZW1l
QXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koU3RyaW5nIHNjaGVtZSkKICAgICBSZWdp
c3RlclVSTFNjaGVtZUFzTG9jYWwoU3RyaW5nIHNjaGVtZSkKICAgICBSZWdpc3RlclVSTFNjaGVt
ZUFzTm9BY2Nlc3MoU3RyaW5nIHNjaGVtZSkKLSAgICBSZWdpc3RlclVSTFNjaGVtZUFzQ09SU0Vu
YWJsZWQoU3RyaW5nIHNjaGVtZSkKICAgICBSZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9u
bHlJZkNhblJlcXVlc3QoU3RyaW5nIHNjaGVtZSkKIAogICAgIFNldENhY2hlU3RvcmFnZVBhcmFt
ZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0
b3J5LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUpOwpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI1MTA4OCkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmUKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVk
QXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hl
bWVzUmVnaXN0ZXJlZEFzTG9jYWw7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJl
ZEFzTm9BY2Nlc3M7Ci0gICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0Vu
YWJsZWQ7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FuRGlzcGxheU9u
bHlJZkNhblJlcXVlc3Q7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xNTksOCAr
MTU4LDYgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXJsU2NoZW1l
c1JlZ2lzdGVyZWRBc05vQWNjZXNzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51
cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJl
dmlzaW9uIDI1MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNiBA
QCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgCiAgICAgVmVjdG9yPFN0
cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0xvY2FsOwogICAgIFZlY3RvcjxTdHJpbmc+IHVy
bFNjaGVtZXNSZWdpc3RlcmVkQXNOb0FjY2VzczsKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hl
bWVzUmVnaXN0ZXJlZEFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Q7Ci0gICAgVmVjdG9yPFN0
cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkOwogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjUxMDg4KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTEsNyArMTExLDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3Vy
Y2VMbwogCiAgICAgaWYgKHN5bmNocm9ub3VzUmVwbHkgfHwgcGFyYW1ldGVycy5zaG91bGRSZXN0
cmljdEhUVFBSZXNwb25zZUFjY2VzcyB8fCBwYXJhbWV0ZXJzLm9wdGlvbnMua2VlcEFsaXZlKSB7
CiAgICAgICAgIE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0g
aXNNYWluRnJhbWVMb2FkKCkgPyBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlOjpNYWluRnJh
bWUgOiBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlOjpPdGhlcjsKLSAgICAgICAgbV9uZXR3
b3JrTG9hZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlv
bi5uZXR3b3JrUHJvY2VzcygpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9
LCBzZXNzaW9uSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBIVFRQSGVhZGVyTWFw
IHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0
ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCks
IG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0
UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgbV9wYXJhbWV0ZXJzLmlz
SFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
KCksIHJlcXVlc3RMb2FkVHlwZSk7CisgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyID0gbWFr
ZVVuaXF1ZTxOZXR3b3JrTG9hZENoZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwg
JmNvbm5lY3Rpb24uc2NoZW1lUmVnaXN0cnkoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJz
Lm9wdGlvbnMgfSwgc2Vzc2lvbklEKCksIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgSFRU
UEhlYWRlck1hcCB7IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7
IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4u
Y29weVJlZigpLCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJz
LnByZWZsaWdodFBvbGljeSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIG1fcGFy
YW1ldGVycy5pc0hUVFBTVXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcygpLCByZXF1ZXN0TG9hZFR5cGUpOwogICAgICAgICBpZiAobV9wYXJhbWV0ZXJz
LmNzcFJlc3BvbnNlSGVhZGVycykKICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5z
ZXRDU1BSZXNwb25zZUhlYWRlcnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
IHsgbV9wYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycy52YWx1ZSgpIH0pOwogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTY2hlbWVSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2NoZW1lUmVnaXN0cnkuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTY2hlbWVSZWdpc3RyeS5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBOZXR3b3JrU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1l
QXNDT1JTRW5hYmxlZChTdHJpbmcmJiBzY2hlbWUpCit7CisgICAgbV9jb3JzRW5hYmxlZFNjaGVt
ZXMuYWRkKFdURk1vdmUoc2NoZW1lKSk7Cit9CisKK2Jvb2wgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5
OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoU3RyaW5nVmlldyBzY2hlbWUpCit7
CisgICAgcmV0dXJuIG1fY29yc0VuYWJsZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZS50b1N0cmlu
Z1dpdGhvdXRDb3B5aW5nKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2NoZW1lUmVnaXN0
cnkuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTY2hlbWVSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBOZXR3b3JrU2NoZW1lUmVnaXN0cnkgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrU2No
ZW1lUmVnaXN0cnk+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtTY2hlbWVSZWdp
c3RyeT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU2NoZW1lUmVnaXN0
cnkpOyB9CisKKyAgICAvLyBBbGxvdyBub24tSFRUUCBzY2hlbWVzIHRvIGJlIHJlZ2lzdGVyZWQg
dG8gYWxsb3cgQ09SUyByZXF1ZXN0cy4KKyAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JT
RW5hYmxlZChTdHJpbmcmJiBzY2hlbWUpOworICAgIGJvb2wgc2hvdWxkVHJlYXRVUkxTY2hlbWVB
c0NPUlNFbmFibGVkKFN0cmluZ1ZpZXcgc2NoZW1lKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBV
UkxTY2hlbWVzID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47Cisg
ICAgVVJMU2NoZW1lcyBtX2NvcnNFbmFibGVkU2NoZW1lczsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJ
KHJldmlzaW9uIDI1MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNyArNDUsMTcgQEAgUGluZ0xvYWQ6OlBpbmdM
b2FkKE5ldHdvcmtQcm9jZXNzJiBuZXR3bwogICAgICwgbV9wYXJhbWV0ZXJzKFdURk1vdmUocGFy
YW1ldGVycykpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZQaW5nTG9hZDo6dGltZW91dFRp
bWVyRmlyZWQpCi0gICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVlUmVmPE5ldHdv
cmtMb2FkQ2hlY2tlcj4obmV0d29ya1Byb2Nlc3MsIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVy
cy5vcHRpb25zfSwgbV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgV1RG
TW92ZShtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1l
dGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigp
LCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdo
dFBvbGljeSwgbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cFJlZmVycmVyKCkpKQorICAgICwgbV9u
ZXR3b3JrTG9hZENoZWNrZXIobWFrZVVuaXF1ZVJlZjxOZXR3b3JrTG9hZENoZWNrZXI+KG5ldHdv
cmtQcm9jZXNzLCBudWxscHRyLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9uc30s
IG1fc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIFdURk1vdmUobV9wYXJh
bWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMpLCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVz
dC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0
ZXJzLnRvcE9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG1f
cGFyYW1ldGVycy5yZXF1ZXN0Lmh0dHBSZWZlcnJlcigpKSkKIHsKICAgICBpbml0aWFsaXplKG5l
dHdvcmtQcm9jZXNzKTsKIH0KIAotUGluZ0xvYWQ6OlBpbmdMb2FkKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorUGluZ0xvYWQ6OlBpbmdMb2FkKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6
IG1fc2Vzc2lvbklEKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMo
V1RGTW92ZShwYXJhbWV0ZXJzKSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlBpbmdMb2Fk
Ojp0aW1lb3V0VGltZXJGaXJlZCkKLSAgICAsIG1fbmV0d29ya0xvYWRDaGVja2VyKG1ha2VVbmlx
dWVSZWY8TmV0d29ya0xvYWRDaGVja2VyPihuZXR3b3JrUHJvY2VzcywgRmV0Y2hPcHRpb25zIHsg
bV9wYXJhbWV0ZXJzLm9wdGlvbnN9LCBtX3Nlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQ
cm94eUlELCBXVEZNb3ZlKG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJM
IHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdp
bi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRl
cnMucHJlZmxpZ2h0UG9saWN5LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRwUmVmZXJyZXIoKSkp
CisgICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hl
Y2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCAmY29ubmVjdGlvbi5zY2hlbWVSZWdp
c3RyeSgpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9uc30sIG1fc2Vzc2lvbklE
LCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIFdURk1vdmUobV9wYXJhbWV0ZXJzLm9yaWdp
bmFsUmVxdWVzdEhlYWRlcnMpLCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBt
X3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdp
bi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG1fcGFyYW1ldGVycy5y
ZXF1ZXN0Lmh0dHBSZWZlcnJlcigpKSkKICAgICAsIG1fYmxvYkZpbGVzKGNvbm5lY3Rpb24ucmVz
b2x2ZUJsb2JSZWZlcmVuY2VzKG1fcGFyYW1ldGVycykpCiB7CiAgICAgZm9yIChhdXRvJiBmaWxl
IDogbV9ibG9iRmlsZXMpIHsKQEAgLTYzLDcgKzYzLDcgQEAgUGluZ0xvYWQ6OlBpbmdMb2FkKE5l
dHdvcmtDb25uZWN0aW9uVG9XZQogICAgICAgICAgICAgZmlsZS0+cHJlcGFyZUZvckZpbGVBY2Nl
c3MoKTsKICAgICB9CiAKLSAgICBpbml0aWFsaXplKG5ldHdvcmtQcm9jZXNzKTsKKyAgICBpbml0
aWFsaXplKGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSk7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6
OmluaXRpYWxpemUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzKQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkocmV2aXNpb24gMjUxMDg4KQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCwxMSArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlcjsKIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzOworY2xhc3MgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5OwogCiBjbGFzcyBQaW5nTG9hZCBm
aW5hbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQaW5nTG9hZD4sIHByaXZhdGUgTmV0d29ya0Rh
dGFUYXNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICBQaW5nTG9hZChOZXR3b3JrUHJvY2VzcyYsIFBB
TDo6U2Vzc2lvbklELCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik+JiYpOwotICAgIFBpbmdMb2FkKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik+JiYpOworICAgIFBpbmdMb2Fk
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmKTsKIAogcHJpdmF0ZToK
ICAgICB+UGluZ0xvYWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI1MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIyLDcgKzUyMiw2IEBAIE5l
dHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBwYXJhbWV0ZXJzLnVy
bFNjaGVtZXNSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBjb3B5
VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9s
aWN5KTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2NhbCA9IGNvcHlU
b1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNMb2NhbCk7CiAgICAgcGFyYW1ldGVycy51cmxT
Y2hlbWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3MgPSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdp
c3RlckFzTm9BY2Nlc3MpOwotICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NP
UlNFbmFibGVkID0gY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVk
KTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlm
Q2FuUmVxdWVzdCA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdCk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTE1
MzcsNyArMTUzNiw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXMK
IHsKICAgICBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDT1JTRW5hYmxlZC5hZGQodXJsU2NoZW1lKTsK
ICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyVVJM
U2NoZW1lQXNDT1JTRW5hYmxlZCh1cmxTY2hlbWUpKTsKLSAgICBzZW5kVG9OZXR3b3JraW5nUHJv
Y2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5h
YmxlZCh1cmxTY2hlbWUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJHbG9i
YWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoY29uc3QgU3RyaW5nJiB1
cmxTY2hlbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDI1MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM1OTYsNiArMzU5Niw3
IEBACiAJCTU4Nzc0M0E0MjFDMzBBRDgwMEFFOTA4NCAvKiBIVFRQU1VwZ3JhZGVMaXN0LmRiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFt
ZSA9IEhUVFBTVXBncmFkZUxpc3QuZGI7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0hU
VFBTVXBncmFkZUxpc3QuZGI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTU4RTk3N0RDMjFDNDk5RkUwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4RTk3N0REMjFD
NDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzBBMTBDMTIzNTI0MUEzMDA1M0UyQ0EgLyogTmV0
d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ldHdvcmtTY2hlbWVSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDMEIxNzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdv
cmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUMwQjE3NzUxRTdDODc5QzAwRTkxMjNDIC8q
IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVDMEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJT
b2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTM2NzMsNiArMzY3NCw3IEBA
CiAJCTVDOUVGMkU3MjFGMDU4RjkwMDNCREM1NiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92
aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0EyNkQ3RjIx
N0FCQkI2MDBGOTdBMzUgLyogV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0EyNkQ4MDIxN0FCQkI2MDBGOTdBMzUgLyogV0tT
YWZlQnJvd3NpbmdXYXJuaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
U2FmZUJyb3dzaW5nV2FybmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0Ey
Rjc0NzIzNTBFMTU0MDBCRTUxOTQgLyogTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtTY2hlbWVSZWdpc3RyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0E0NkU3QTIxRjFBMjM5MDBDRTg2QjQgLyogQVBJSFRU
UENvb2tpZVN0b3JlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBBUElIVFRQQ29va2llU3RvcmVDb2NvYS5tbTsgcGF0aCA9IFVJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsg
fTsKIAkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJyb3dzaW5nV2FybmluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0E5ODU0QjIxMEJFQjczMDA1N0VCNkIgLyog
U2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjc5OSw2ICs2ODAxLDggQEAKIAkJCQk1MTI0MEVCRTIyMEI2OTQ3MDA1
Q0ZDNjMgLyogTmV0d29ya1Jlc291cmNlTG9hZE1hcC5oICovLAogCQkJCTVDMTQyNkU1MUMyM0Y4
MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJ
NUMxNDI2RTYxQzIzRjgwNTAwRDQxMTgzIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmggKi8sCisJCQkJNUMwQTEwQzEyMzUyNDFBMzAwNTNFMkNBIC8qIE5ldHdvcmtTY2hlbWVSZWdp
c3RyeS5jcHAgKi8sCisJCQkJNUNBMkY3NDcyMzUwRTE1NDAwQkU1MTk0IC8qIE5ldHdvcmtTY2hl
bWVSZWdpc3RyeS5oICovLAogCQkJCTUzMjE1OTUyMURCQUU2RkMwMDU0QUEzQyAvKiBOZXR3b3Jr
U2Vzc2lvbi5jcHAgKi8sCiAJCQkJNUMyMENCOUUxQkIwREQxODAwODk1QkIxIC8qIE5ldHdvcmtT
ZXNzaW9uLmggKi8sCiAJCQkJNUM4OURGNTYyMUFGNjFGRjAwNDY0NUU4IC8qIE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI1MTA4OCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcwLDcgKzM3MCw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICAgICAgICAgcmVnaXN0
ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChzY2hlbWUpOwogCiAgICAgZm9yIChhdXRvJiBz
Y2hlbWUgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCkKLSAg
ICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHNjaGVtZSk7CisgICAgICAgIExl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoc2NoZW1l
KTsKIAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0
ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQpCiAgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lQXNBbHdh
eXNSZXZhbGlkYXRlZChzY2hlbWUpOwpAQCAtNTY1LDkgKzU2NSwxMCBAQCB2b2lkIFdlYlByb2Nl
c3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwCiAgICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJl
Z2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQodXJsU2NoZW1lKTsKIH0KIAotdm9pZCBX
ZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJiB1
cmxTY2hlbWUpIGNvbnN0Cit2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JT
RW5hYmxlZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKIHsKICAgICBMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybFNjaGVtZSk7CisgICAgZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlclVSTFNjaGVtZXNBc0NPUlNF
bmFibGVkKHsgdXJsU2NoZW1lIH0pLCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3Rl
clVSTFNjaGVtZUFzQWx3YXlzUmV2YWxpZGF0ZWQoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpIGNv
bnN0CkBAIC0xMTc4LDYgKzExNzksNyBAQCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24mIFdlYlBy
b2Nlc3M6OmVuCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24tPnNldE5ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbihXVEZNb3ZlKGNvbm5lY3Rp
b25JbmZvLmF1ZGl0VG9rZW4pKTsKICNlbmRpZgorICAgICAgICBtX25ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpSZWdpc3RlclVSTFNjaGVtZXNBc0NPUlNFbmFibGVkKFdlYkNvcmU6OkxlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjphbGxVUkxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQoKSks
IDApOwogICAgIH0KICAgICAKICAgICByZXR1cm4gKm1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNTEw
ODgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjYsNyArMzI2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2No
ZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2No
ZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJM
U2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCBy
ZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAg
dm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQWx3YXlzUmV2YWxpZGF0ZWQoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25lZChjb25z
dCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJpbmcmKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381819</attachid>
            <date>2019-10-24 09:38:46 -0700</date>
            <delta_ts>2019-10-24 10:07:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202891-20191024093845.patch</filename>
            <type>text/plain</type>
            <size>38532</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTQ1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEwLTI0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFzcyBDT1JT
LWVuYWJsZWQgc2NoZW1lcyB0aHJvdWdoIFdlYlByb2Nlc3MgaW5zdGVhZCBvZiBoYXZpbmcgdGhl
bSBOZXR3b3JrUHJvY2Vzcy1nbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJs
ZXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NP
UlNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91
bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
U2NoZW1lUmVnaXN0cnk6OmFsbFVSTFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuaDoKKwogMjAxOS0xMC0yMiAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGl0
IHBvc3NpYmxlIHRvIG5vdCBpbmNsdWRlIElQQyBNZXNzYWdlcyBoZWFkZXJzIGluIG90aGVyIGhl
YWRlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVS
ZWdpc3RyeS5jcHAJKHJldmlzaW9uIDI1MTQ1MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5Lmgi
CiAKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlIDx3dGYv
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgpAQCAtNDIxLDYgKzQyMiw3IEBAIGJvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmFsbG93
c0RhdGFiYXMKIAogdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVB
c0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogeworICAgIEFTU0VSVCghaXNJbk5l
dHdvcmtQcm9jZXNzKCkpOwogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBDT1JTRW5hYmxlZFNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKQEAgLTQyOCw5ICs0MzAs
MTYgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTYwogCiBib29sIExl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29u
c3QgU3RyaW5nJiBzY2hlbWUpCiB7CisgICAgQVNTRVJUKCFpc0luTmV0d29ya1Byb2Nlc3MoKSk7
CiAgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgQ09SU0VuYWJsZWRTY2hlbWVzKCkuY29u
dGFpbnMoc2NoZW1lKTsKIH0KIAorVmVjdG9yPFN0cmluZz4gTGVnYWN5U2NoZW1lUmVnaXN0cnk6
OmFsbFVSTFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCgpCit7CisgICAgQVNTRVJUKCFp
c0luTmV0d29ya1Byb2Nlc3MoKSk7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihDT1JTRW5hYmxl
ZFNjaGVtZXMoKSk7Cit9CisKIHZvaWQgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hl
bWUpCiB7CiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuaAkocmV2aXNpb24gMjUxNDUyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuaAkod29ya2luZyBj
b3B5KQpAQCAtODEsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgLy8gQWxsb3cgbm9uLUhUVFAgc2No
ZW1lcyB0byBiZSByZWdpc3RlcmVkIHRvIGFsbG93IENPUlMgcmVxdWVzdHMuCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0
IFN0cmluZyYgc2NoZW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzaG91bGRU
cmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBhbGxVUkxTY2hlbWVzUmVnaXN0ZXJl
ZEFzQ09SU0VuYWJsZWQoKTsKIAogICAgIC8vIEFsbG93IHJlc291cmNlcyBmcm9tIHNvbWUgc2No
ZW1lcyB0byBsb2FkIG9uIGEgcGFnZSwgcmVnYXJkbGVzcyBvZiBpdHMKICAgICAvLyBDb250ZW50
IFNlY3VyaXR5IFBvbGljeS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTE0NTIpCisrKyBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE5
LTEwLTI0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUGFzcyBDT1JTLWVuYWJsZWQgc2NoZW1lcyB0aHJvdWdoIFdlYlByb2Nlc3MgaW5zdGVh
ZCBvZiBoYXZpbmcgdGhlbSBOZXR3b3JrUHJvY2Vzcy1nbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjg5MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiAgTm93
IHRoZSBMZWdhY3lTY2hlbWVSZWdpc3RyeSBpcyBub3QgdXNlZCBhcyBtdWNoIGluIHRoZSBOZXR3
b3JrUHJvY2VzcywgYSBzdGVwIHRvd2FyZHMgbm8gdXNlIGF0IGFsbC4KKyAgICAgICAgVGhpcyBm
dW5jdGlvbmFsaXR5IGlzIGN1cnJlbnRseSBvbmx5IGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBnbGli
IEFQSSB3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl9yZWdpc3Rlcl91cmlfc2NoZW1lX2FzX2NvcnNf
ZW5hYmxlZAorICAgICAgICBidXQgaXQgaGFzIGJlZW4gcmVxdWVzdGVkIGluIGJ1ZyAyMDExODAg
YW5kIGJ1ZyAxOTkwNjQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2FkUGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVt
ZXNBc0NPUlNFbmFibGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c2NoZW1lUmVnaXN0cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWRDaGVja2VyOjpkb2VzTm90TmVlZENPUlNDaGVjayBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NjaGVt
ZVJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1NjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTY2hlbWVSZWdpc3RyeS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGlu
Z0xvYWQ6OlBpbmdMb2FkKToKKyAgICAgICAgVXNlIG51bGxwdHIsIGluZGljYXRpbmcgdGhhdCB0
aGUgUGluZ0xvYWQgY29uc3RydWN0b3IgdGhhdCBpcyB1c2VkIGluIGFkIGNsaWNrIGF0dHJpYnV0
aW9uIHNob3VsZCBub3QgY2hlY2sgdGhlIGN1c3RvbSBzY2hlbWUgcmVnaXN0cnkuCisgICAgICAg
IFRoaXMgaXMgT2sgYmVjYXVzZSBhZCBjbGljayBhdHRyaWJ1dGlvbiBpcyBvbmx5IHVzZWQgZm9y
IEhUVFAgZmFtaWx5IHNjaGVtZXMuCisgICAgICAgIChXZWJLaXQ6Om1fYmxvYkZpbGVzKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQpOgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRp
YWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVnaXN0ZXJV
UkxTY2hlbWVBc0NPUlNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAxOS0xMC0yMiAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlLWVuYWJsZSBsZWdh
Y3kgVExTIGJ5IGRlZmF1bHQsIGtlZXAgcnVudGltZSBzd2l0Y2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAko
cmV2aXNpb24gMjUxNDUyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQCBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAK
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRNYXAuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2NoZW1l
UmVnaXN0cnkuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAkocmV2aXNpb24gMjUxNDUyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYg
KzQzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5l
bC5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKQEAgLTk0LDYg
Kzk1LDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDbwogICAgICwg
bV9tZG5zUmVnaXN0ZXIoKnRoaXMpCiAjZW5kaWYKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KE5ldHdvcmtT
Y2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC00NTgsNyArNDYwLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bG9hZAogICAgIH07CiAKICAgICAvLyBQaW5nTG9hZCBtYW5hZ2VzIGl0cyBv
d24gbGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1
bGZpbGxlZC4KLSAgICBuZXcgUGluZ0xvYWQoKnRoaXMsIG5ldHdvcmtQcm9jZXNzKCksIFdURk1v
dmUobG9hZFBhcmFtZXRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbmV3
IFBpbmdMb2FkKCp0aGlzLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
ZXRPbkxpbmVTdGF0ZShib29sIGlzT25MaW5lKQpAQCAtNTQ3LDYgKzU0OSwxMiBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252CiAgICAgbG9hZGVyLT5jb252ZXJ0VG9E
b3dubG9hZChkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQo
VmVjdG9yPFN0cmluZz4mJiBzY2hlbWVzKQoreworICAgIGZvciAoYXV0byYmIHNjaGVtZSA6IFdU
Rk1vdmUoc2NoZW1lcykpCisgICAgICAgIG1fc2NoZW1lUmVnaXN0cnktPnJlZ2lzdGVyVVJMU2No
ZW1lQXNDT1JTRW5hYmxlZChXVEZNb3ZlKHNjaGVtZSkpOworfQorCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vz
c2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAko
cmV2aXNpb24gMjUxNDUyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBA
IGVudW0gY2xhc3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorY2xhc3MgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5OwogY2xhc3MgTmV0d29ya1Byb2Nl
c3M7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczsKQEAgLTE2NCw2ICsxNjUsOCBAQCBwdWJsaWM6CiAgICAgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uJiBzd0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCisgICAgTmV0d29ya1NjaGVt
ZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc2NoZW1lUmVnaXN0cnkuZ2V0
KCk7IH0KKwogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3
b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwg
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApAQCAtMTkzLDYgKzE5Niw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdGFydERvd25sb2FkKERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7CiAgICAg
dm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291
cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAorICAgIHZvaWQgcmVn
aXN0ZXJVUkxTY2hlbWVzQXNDT1JTRW5hYmxlZChWZWN0b3I8U3RyaW5nPiYmIHNjaGVtZXMpOwor
CiAgICAgdm9pZCBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2ll
U3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwogICAgIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwogICAgIHZv
aWQgY29va2llc0VuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0z
NDYsNiArMzUxLDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyPiBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0czsKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBGdW5jdGlvbjx2b2lkKCk+PiBtX21lc3NhZ2VCYXRjaERlbGl2ZXJ5Q29tcGxldGlvbkhh
bmRsZXJzOworICAgIFJlZjxOZXR3b3JrU2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1lUmVnaXN0cnk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjUxNDUyKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtOTEsNCArOTEsNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzCiAgICAgUG9zdE1lc3NhZ2VUb1JlbW90ZShzdHJ1Y3QgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgc3RydWN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciByZW1vdGUpCiAgICAgQ2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHko
c3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KSAtPiAoYm9vbCBoYXNB
Y3Rpdml0eSkgQXN5bmMKICAgICBEaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRf
dCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKQorICAgIFJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0Vu
YWJsZWQoVmVjdG9yPFN0cmluZz4gc2NoZW1lcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCShyZXZpc2lvbiAy
NTE0NTIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2NoZW1lUmVnaXN0cnkuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmg+CkBAIC00OCw3ICs0OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c1NhbWVPcmlnaW4oY29uc3QgVVIKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwg
dXJsLnByb3RvY29sSXNCbG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJs
KTsKIH0KIAotTmV0d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1By
b2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIEhU
VFBIZWFkZXJNYXAmJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBVUkwmJiB1cmwsIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0
b3BPcmlnaW4sIFByZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVy
cmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MsIExvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKK05ldHdvcmtMb2Fk
Q2hlY2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vz
cywgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5KiBzY2hlbWVSZWdpc3RyeSwgRmV0Y2hPcHRpb25zJiYg
b3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm94eUlELCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
VVJMJiYgdXJsLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kgcHJlZmxpZ2h0UG9s
aWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQsIGJvb2wg
c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBMb2FkVHlwZSByZXF1ZXN0TG9h
ZFR5cGUpCiAgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1fc2Vzc2lv
bklEKHNlc3Npb25JRCkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCkBA
IC02Miw2ICs2Myw3IEBAIE5ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKE4K
ICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKHNob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcykKICAgICAsIG1faXNIVFRQU1VwZ3JhZGVFbmFibGVk
KGlzSFRUUFNVcGdyYWRlRW5hYmxlZCkKICAgICAsIG1fcmVxdWVzdExvYWRUeXBlKHJlcXVlc3RM
b2FkVHlwZSkKKyAgICAsIG1fc2NoZW1lUmVnaXN0cnkoc2NoZW1lUmVnaXN0cnkpCiB7CiAgICAg
bV9pc1NhbWVPcmlnaW5SZXF1ZXN0ID0gaXNTYW1lT3JpZ2luKG1fdXJsLCBtX29yaWdpbi5nZXQo
KSk7CiAgICAgc3dpdGNoIChvcHRpb25zLmNyZWRlbnRpYWxzKSB7CkBAIC00MzYsNyArNDM4LDcg
QEAgYm9vbCBOZXR3b3JrTG9hZENoZWNrZXI6OmRvZXNOb3ROZWVkQ09SUwogICAgIGlmIChtX29w
dGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycyB8fCBtX29wdGlvbnMubW9k
ZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXND
T1JTRW5hYmxlZCh1cmwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQorICAg
IGlmIChtX3NjaGVtZVJlZ2lzdHJ5ICYmICFtX3NjaGVtZVJlZ2lzdHJ5LT5zaG91bGRUcmVhdFVS
TFNjaGVtZUFzQ09SU0VuYWJsZWQodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBtX2lzU2FtZU9yaWdpblJlcXVlc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgJKHJldmlzaW9u
IDI1MTQ1MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVj
a2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEzICs1MCwxNCBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOwogY2xhc3MgTmV0d29ya1By
b2Nlc3M7CitjbGFzcyBOZXR3b3JrU2NoZW1lUmVnaXN0cnk7CiAKIGNsYXNzIE5ldHdvcmtMb2Fk
Q2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRU
eXBlIDogYm9vbCB7IE1haW5GcmFtZSwgT3RoZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hlY2tl
cihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25J
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwm
JiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmlu
ZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNo
b3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1
ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOworICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihO
ZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTY2hlbWVSZWdpc3RyeSosIFdlYkNvcmU6OkZldGNoT3B0
aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6
SFRUUEhlYWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
LCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpQ
cmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5h
YmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9
IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOwogICAg
IH5OZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRyaXBsZXQg
ewpAQCAtMTU1LDYgKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRJ
bmZvcm1hdGlvbiBtX2xvYWRJbmZvcm1hdGlvbjsKIAogICAgIExvYWRUeXBlIG1fcmVxdWVzdExv
YWRUeXBlOworICAgIFJlZlB0cjxOZXR3b3JrU2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1lUmVnaXN0
cnk7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjUxNDUyKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MCw5ICsz
NTAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1ByCiAgICAgZm9y
IChhdXRvJiBzY2hlbWUgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNOb0FjY2Vz
cykKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKHNjaGVtZSk7CiAKLSAgICBm
b3IgKGF1dG8mIHNjaGVtZSA6IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNF
bmFibGVkKQotICAgICAgICByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoc2NoZW1lKTsK
LQogICAgIGZvciAoYXV0byYgc2NoZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJl
ZEFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpCiAgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1l
QXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChzY2hlbWUpOwogICAgIApAQCAtMjIzMywxMSAr
MjIzMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXMKICAgICBM
ZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKHNjaGVtZSk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxl
ZChjb25zdCBTdHJpbmcmIHNjaGVtZSkgY29uc3QKLXsKLSAgICBMZWdhY3lTY2hlbWVSZWdpc3Ry
eTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHNjaGVtZSk7Ci19Ci0KIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVz
dChjb25zdCBTdHJpbmcmIHNjaGVtZSkgY29uc3QKIHsKICAgICBMZWdhY3lTY2hlbWVSZWdpc3Ry
eTo6cmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KHNjaGVtZSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1MTQ1MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3
ICsxNDYsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAgICAg
UmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShTdHJpbmcg
c2NoZW1lKQogICAgIFJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbChTdHJpbmcgc2NoZW1lKQogICAg
IFJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2VzcyhTdHJpbmcgc2NoZW1lKQotICAgIFJlZ2lzdGVy
VVJMU2NoZW1lQXNDT1JTRW5hYmxlZChTdHJpbmcgc2NoZW1lKQogICAgIFJlZ2lzdGVyVVJMU2No
ZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChTdHJpbmcgc2NoZW1lKQogCiAgICAgU2V0
Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBj
YWNoZVN0b3JhZ2VEaXJlY3RvcnksIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhh
bmRsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24g
MjUxNDUyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDYgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29kZXIgPDwgdXJs
U2NoZW1lc1JlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBl
bmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2NhbDsKICAgICBlbmNvZGVyIDw8IHVy
bFNjaGVtZXNSZWdpc3RlcmVkQXNOb0FjY2VzczsKLSAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNS
ZWdpc3RlcmVkQXNDT1JTRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3Rl
cmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKQEAgLTE1OSw4ICsxNTgsNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3MpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXJsU2NoZW1lc1JlZ2lzdGVy
ZWRBc0NPUlNFbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjUxNDUyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC05MCw3ICs5MCw2IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyAKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWw7CiAgICAg
VmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc05vQWNjZXNzOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVz
dDsKLSAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQ7
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTE0NTIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6Ok5ldHdvcmtSZXNvdXJjZUxvCiAKICAgICBpZiAoc3luY2hyb25vdXNSZXBseSB8fCBwYXJh
bWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzIHx8IHBhcmFtZXRlcnMub3B0
aW9ucy5rZWVwQWxpdmUpIHsKICAgICAgICAgTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZSBy
ZXF1ZXN0TG9hZFR5cGUgPSBpc01haW5GcmFtZUxvYWQoKSA/IE5ldHdvcmtMb2FkQ2hlY2tlcjo6
TG9hZFR5cGU6Ok1haW5GcmFtZSA6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok90aGVy
OwotICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWRD
aGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFy
YW1ldGVycy5vcHRpb25zIH0sIHNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5
SUQsIEhUVFBIZWFkZXJNYXAgeyBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyB9
LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNl
T3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi5jb3B5UmVmKCksIG1fcGFy
YW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigp
LCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKKyAgICAgICAgbV9uZXR3b3Jr
TG9hZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5u
ZXR3b3JrUHJvY2VzcygpLCAmY29ubmVjdGlvbi5zY2hlbWVSZWdpc3RyeSgpLCBGZXRjaE9wdGlv
bnMgeyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBzZXNzaW9uSUQoKSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VQcm94eUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0
ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJl
ZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRw
UmVmZXJyZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CiAgICAgICAg
IGlmIChtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAgICAgICAgICAgbV9uZXR3
b3JrTG9hZENoZWNrZXItPnNldENTUFJlc3BvbnNlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMgeyBtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVl
KCkgfSk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTY2hlbWVSZWdpc3RyeS5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2No
ZW1lUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1NjaGVtZVJlZ2lzdHJ5
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIE5ldHdvcmtTY2hlbWVSZWdpc3RyeTo6
cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKFN0cmluZyYmIHNjaGVtZSkKK3sKKyAgICBt
X2NvcnNFbmFibGVkU2NoZW1lcy5hZGQoV1RGTW92ZShzY2hlbWUpKTsKK30KKworYm9vbCBOZXR3
b3JrU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JTRW5hYmxlZChTdHJp
bmdWaWV3IHNjaGVtZSkKK3sKKyAgICBpZiAoc2NoZW1lLnN0YXJ0c1dpdGgoImh0dHAiKSkKKyAg
ICAgICAgcmV0dXJuIHNjaGVtZS5sZW5ndGgoKSA9PSA0IHx8IChzY2hlbWUubGVuZ3RoKCkgPT0g
NSAmJiBzY2hlbWVbNF0gPT0gJ3MnKTsKKyAgICByZXR1cm4gbV9jb3JzRW5hYmxlZFNjaGVtZXMu
Y29udGFpbnMoc2NoZW1lLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2NoZW1lUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTY2hlbWVSZWdpc3RyeS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtTY2hlbWVSZWdpc3RyeSA6IHB1Ymxp
YyBSZWZDb3VudGVkPE5ldHdvcmtTY2hlbWVSZWdpc3RyeT4geworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8TmV0d29ya1NjaGVtZVJlZ2lzdHJ5PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IE5ldHdvcmtTY2hlbWVSZWdpc3RyeSk7IH0KKworICAgIC8vIEFsbG93IG5vbi1IVFRQIHNj
aGVtZXMgdG8gYmUgcmVnaXN0ZXJlZCB0byBhbGxvdyBDT1JTIHJlcXVlc3RzLgorICAgIHZvaWQg
cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKFN0cmluZyYmIHNjaGVtZSk7CisgICAgYm9v
bCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoU3RyaW5nVmlldyBzY2hlbWUpOwor
Citwcml2YXRlOgorICAgIHVzaW5nIFVSTFNjaGVtZXMgPSBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPjsKKyAgICBVUkxTY2hlbWVzIG1fY29yc0VuYWJsZWRTY2hlbWVz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmNwcAkocmV2aXNpb24gMjUxNDUyKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE3ICs0
NSwxNyBAQCBQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya1Byb2Nlc3MmIG5ldHdvCiAgICAgLCBt
X3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhp
cywgJlBpbmdMb2FkOjp0aW1lb3V0VGltZXJGaXJlZCkKLSAgICAsIG1fbmV0d29ya0xvYWRDaGVj
a2VyKG1ha2VVbmlxdWVSZWY8TmV0d29ya0xvYWRDaGVja2VyPihuZXR3b3JrUHJvY2VzcywgRmV0
Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnN9LCBtX3Nlc3Npb25JRCwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VQcm94eUlELCBXVEZNb3ZlKG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RI
ZWFkZXJzKSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJz
LnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigp
LCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRw
UmVmZXJyZXIoKSkpCisgICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVlUmVmPE5l
dHdvcmtMb2FkQ2hlY2tlcj4obmV0d29ya1Byb2Nlc3MsIG51bGxwdHIsIEZldGNoT3B0aW9ucyB7
IG1fcGFyYW1ldGVycy5vcHRpb25zfSwgbV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdl
UHJveHlJRCwgV1RGTW92ZShtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVS
TCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmln
aW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0
ZXJzLnByZWZsaWdodFBvbGljeSwgbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cFJlZmVycmVyKCkp
KQogewogICAgIGluaXRpYWxpemUobmV0d29ya1Byb2Nlc3MpOwogfQogCi1QaW5nTG9hZDo6UGlu
Z0xvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitQaW5nTG9hZDo6
UGluZ0xvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9zZXNzaW9uSUQoY29ubmVjdGlvbi5zZXNzaW9uSUQo
KSkKICAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQogICAgICwgbV9jb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fdGltZW91
dFRpbWVyKCp0aGlzLCAmUGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVkKQotICAgICwgbV9uZXR3
b3JrTG9hZENoZWNrZXIobWFrZVVuaXF1ZVJlZjxOZXR3b3JrTG9hZENoZWNrZXI+KG5ldHdvcmtQ
cm9jZXNzLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9uc30sIG1fc2Vzc2lvbklE
LCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIFdURk1vdmUobV9wYXJhbWV0ZXJzLm9yaWdp
bmFsUmVxdWVzdEhlYWRlcnMpLCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBt
X3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdp
bi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG1fcGFyYW1ldGVycy5y
ZXF1ZXN0Lmh0dHBSZWZlcnJlcigpKSkKKyAgICAsIG1fbmV0d29ya0xvYWRDaGVja2VyKG1ha2VV
bmlxdWVSZWY8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCks
ICZjb25uZWN0aW9uLnNjaGVtZVJlZ2lzdHJ5KCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVy
cy5vcHRpb25zfSwgbV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgV1RG
TW92ZShtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1l
dGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigp
LCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdo
dFBvbGljeSwgbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cFJlZmVycmVyKCkpKQogICAgICwgbV9i
bG9iRmlsZXMoY29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkK
IHsKICAgICBmb3IgKGF1dG8mIGZpbGUgOiBtX2Jsb2JGaWxlcykgewpAQCAtNjMsNyArNjMsNyBA
QCBQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlCiAgICAgICAgICAgICBm
aWxlLT5wcmVwYXJlRm9yRmlsZUFjY2VzcygpOwogICAgIH0KIAotICAgIGluaXRpYWxpemUobmV0
d29ya1Byb2Nlc3MpOworICAgIGluaXRpYWxpemUoY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
KTsKIH0KIAogdm9pZCBQaW5nTG9hZDo6aW5pdGlhbGl6ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShy
ZXZpc2lvbiAyNTE0NTIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDExICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya0xvYWRD
aGVja2VyOwogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBOZXR3b3JrU2NoZW1lUmVnaXN0
cnk7CiAKIGNsYXNzIFBpbmdMb2FkIGZpbmFsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBpbmdM
b2FkPiwgcHJpdmF0ZSBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGljOgogICAgIFBpbmdM
b2FkKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJik7Ci0gICAgUGlu
Z0xvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBOZXR3b3JrUHJvY2VzcyYsIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKT4mJik7CisgICAgUGluZ0xvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik+JiYpOwogCiBwcml2YXRlOgogICAgIH5QaW5nTG9hZCgpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAJKHJldmlzaW9u
IDI1MTQ1MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2
ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9D
YWxsYmFja0FnZ3JlZ2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI1MTQ1MikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTIzLDcgKzUyMyw2IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMK
ICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQnlwYXNzaW5n
Q29udGVudFNlY3VyaXR5UG9saWN5KTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3Rl
cmVkQXNMb2NhbCA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNMb2NhbCk7CiAg
ICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3MgPSBjb3B5VG9WZWN0
b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzTm9BY2Nlc3MpOwotICAgIHBhcmFtZXRlcnMudXJsU2No
ZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkID0gY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVn
aXN0ZXJBc0NPUlNFbmFibGVkKTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVk
QXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1Jl
Z2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk7CiAKICNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKQEAgLTE1MTIsNyArMTUxMSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJl
Z2lzdGVyVVJMU2NoZW1lQXMKIHsKICAgICBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDT1JTRW5hYmxl
ZC5hZGQodXJsU2NoZW1lKTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCh1cmxTY2hlbWUpKTsKLSAgICBz
ZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlZ2lzdGVy
VVJMU2NoZW1lQXNDT1JTRW5hYmxlZCh1cmxTY2hlbWUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cmVnaXN0ZXJHbG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxl
cnMoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1MTQ1MikKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTM1OTcsNiArMzU5Nyw3IEBACiAJCTU4Nzc0M0E0MjFDMzBBRDgwMEFFOTA4NCAvKiBIVFRQ
U1VwZ3JhZGVMaXN0LmRiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gZmlsZTsgbmFtZSA9IEhUVFBTVXBncmFkZUxpc3QuZGI7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJLaXQyL0hUVFBTVXBncmFkZUxpc3QuZGI7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTU4RTk3N0RDMjFDNDk5RkUwMDVEOTJBNiAvKiBOZXR3b3JrSFRU
UFNVcGdyYWRlQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU4RTk3N0REMjFDNDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzBBMTBDMTIzNTI0
MUEzMDA1M0UyQ0EgLyogTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtTY2hlbWVSZWdpc3RyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMEIxNzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3Jr
U29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUMwQjE3NzUx
RTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVDMEIxNzc2MUU3Qzg3
OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU29ja2V0U3RyZWFtTWVz
c2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAg
LTM2NzQsNiArMzY3NSw3IEBACiAJCTVDOUVGMkU3MjFGMDU4RjkwMDNCREM1NiAvKiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1Q0EyNkQ3RjIxN0FCQkI2MDBGOTdBMzUgLyogV0tTYWZlQnJvd3NpbmdXYXJuaW5n
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTYWZlQnJvd3Np
bmdXYXJuaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0EyNkQ4MDIxN0FC
QkI2MDBGOTdBMzUgLyogV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLU2FmZUJyb3dzaW5nV2FybmluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1Q0EyRjc0NzIzNTBFMTU0MDBCRTUxOTQgLyogTmV0d29ya1NjaGVtZVJl
Z2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtTY2hlbWVS
ZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0E0NkU3QTIxRjFBMjM5
MDBDRTg2QjQgLyogQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBUElIVFRQQ29va2llU3RvcmVDb2NvYS5tbTsgcGF0aCA9
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVC
cm93c2luZ1dhcm5pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJy
b3dzaW5nV2FybmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0E5ODU0QjIx
MEJFQjczMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjgwMCw2ICs2ODAyLDggQEAKIAkJCQk1
MTI0MEVCRTIyMEI2OTQ3MDA1Q0ZDNjMgLyogTmV0d29ya1Jlc291cmNlTG9hZE1hcC5oICovLAog
CQkJCTVDMTQyNkU1MUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5jcHAgKi8sCiAJCQkJNUMxNDI2RTYxQzIzRjgwNTAwRDQxMTgzIC8qIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmggKi8sCisJCQkJNUMwQTEwQzEyMzUyNDFBMzAwNTNFMkNBIC8q
IE5ldHdvcmtTY2hlbWVSZWdpc3RyeS5jcHAgKi8sCisJCQkJNUNBMkY3NDcyMzUwRTE1NDAwQkU1
MTk0IC8qIE5ldHdvcmtTY2hlbWVSZWdpc3RyeS5oICovLAogCQkJCTUzMjE1OTUyMURCQUU2RkMw
MDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbi5jcHAgKi8sCiAJCQkJNUMyMENCOUUxQkIwREQxODAw
ODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uLmggKi8sCiAJCQkJNUM4OURGNTYyMUFGNjFGRjAwNDY0
NUU4IC8qIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLywKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI1MTQ1MikKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3Mo
V2UKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChzY2hlbWUpOwog
CiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVk
QXNDT1JTRW5hYmxlZCkKLSAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHNj
aGVtZSk7CisgICAgICAgIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFz
Q09SU0VuYWJsZWQoc2NoZW1lKTsKIAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogcGFyYW1ldGVy
cy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQpCiAgICAgICAgIHJlZ2lz
dGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZChzY2hlbWUpOwpAQCAtNTU5LDkgKzU1OSwx
MCBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwCiAgICAgTGVnYWN5
U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQodXJsU2No
ZW1lKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJs
ZWQoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpIGNvbnN0Cit2b2lkIFdlYlByb2Nlc3M6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKIHsKICAg
ICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHVy
bFNjaGVtZSk7CisgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3Rl
clVSTFNjaGVtZXNBc0NPUlNFbmFibGVkKHsgdXJsU2NoZW1lIH0pLCAwKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzQWx3YXlzUmV2YWxpZGF0ZWQoY29uc3QgU3Ry
aW5nJiB1cmxTY2hlbWUpIGNvbnN0CkBAIC0xMTcyLDYgKzExNzMsNyBAQCBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24mIFdlYlByb2Nlc3M6OmVuCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICAg
ICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPnNldE5ldHdvcmtQcm9jZXNzQXVkaXRUb2tl
bihXVEZNb3ZlKGNvbm5lY3Rpb25JbmZvLmF1ZGl0VG9rZW4pKTsKICNlbmRpZgorICAgICAgICBt
X25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlclVSTFNjaGVtZXNBc0NPUlNFbmFi
bGVkKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjphbGxVUkxTY2hlbWVzUmVnaXN0ZXJl
ZEFzQ09SU0VuYWJsZWQoKSksIDApOwogICAgIH0KICAgICAKICAgICByZXR1cm4gKm1fbmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCShyZXZpc2lvbiAyNTE0NTIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjksNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2
b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAg
ICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJikg
Y29uc3Q7Ci0gICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3Ry
aW5nJikgY29uc3Q7CisgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQWx3YXlzUmV2YWxpZGF0
ZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ2Fj
aGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJM
U2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJpbmcmKSBjb25zdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>