<?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>184205</bug_id>
          
          <creation_ts>2018-03-30 17:14:16 -0700</creation_ts>
          <short_desc>Make NetworkProcess get ContentBlocker information from UIProcess</short_desc>
          <delta_ts>2018-04-04 09:15:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=184306</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>184277</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1410785</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-30 17:14:16 -0700</bug_when>
    <thetext>Make NetworkProcess get ContentBlocker information from UIProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410787</commentid>
    <comment_count>1</comment_count>
      <attachid>336901</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-30 17:16:57 -0700</bug_when>
    <thetext>Created attachment 336901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411095</commentid>
    <comment_count>2</comment_count>
      <attachid>336987</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-02 09:38:44 -0700</bug_when>
    <thetext>Created attachment 336987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411111</commentid>
    <comment_count>3</comment_count>
      <attachid>336991</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-02 10:04:34 -0700</bug_when>
    <thetext>Created attachment 336991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411222</commentid>
    <comment_count>4</comment_count>
      <attachid>336991</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-02 13:19:13 -0700</bug_when>
    <thetext>Comment on attachment 336991
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp:112
&gt; +void NetworkLoadChecker::continueCheckingRequest(ResourceRequest&amp;&amp; request, ValidationHandler&amp;&amp; handler)

I think this is an unnecessary continue function.  Couldn&apos;t this just be a lambda inside checkRequest?

&gt; Source/WebKit/NetworkProcess/NetworkUserContentController.cpp:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

2018

&gt; Source/WebKit/NetworkProcess/NetworkUserContentController.h:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

2018

&gt; Source/WebKit/NetworkProcess/NetworkUserContentController.h:42
&gt; +class NetworkUserContentController {

ContentRuleListManager?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411229</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-02 13:25:27 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp:112
&gt; &gt; +void NetworkLoadChecker::continueCheckingRequest(ResourceRequest&amp;&amp; request, ValidationHandler&amp;&amp; handler)
&gt; 
&gt; I think this is an unnecessary continue function.  Couldn&apos;t this just be a
&gt; lambda inside checkRequest?

I would agree if we were to only compile for #if ENABLE(CONTENT_EXTENSIONS).
Since we are compiling for both, we would need to compile-conditionally checkRequest call.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkUserContentController.cpp:2
&gt; &gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.
&gt; 
&gt; 2018

OK

&gt; &gt; Source/WebKit/NetworkProcess/NetworkUserContentController.h:2
&gt; &gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.
&gt; 
&gt; 2018

OK

&gt; &gt; Source/WebKit/NetworkProcess/NetworkUserContentController.h:42
&gt; &gt; +class NetworkUserContentController {
&gt; 
&gt; ContentRuleListManager?

OK, will change it to NetworkContentRuleListManager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411240</commentid>
    <comment_count>6</comment_count>
      <attachid>337024</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-02 13:37:49 -0700</bug_when>
    <thetext>Created attachment 337024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411254</commentid>
    <comment_count>7</comment_count>
      <attachid>337024</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-02 14:25:52 -0700</bug_when>
    <thetext>Comment on attachment 337024
Patch

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

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:557
&gt; +        webUserContentControllerProxy-&gt;addNetworkProcess(*this);

Will it work correctly if someone adds a content rule list after a WKWebView is already instantiated and doing loading?

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:461
&gt; +    WebPage* webPage = webFrame ? webFrame-&gt;page() : nullptr;

We should probably check webPage for null before using it.  And let&apos;s put its declaration inside the scope of where it&apos;s used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411259</commentid>
    <comment_count>8</comment_count>
      <attachid>337024</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-02 14:32:09 -0700</bug_when>
    <thetext>Comment on attachment 337024
Patch

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

&gt; Source/WebKit/UIProcess/UserContent/WebUserContentControllerProxy.cpp:358
&gt; +        process-&gt;send(Messages::NetworkContentRuleListManager::AddContentRuleLists { identifier(), { pair } }, 0);

Ah, here.  This will update it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411268</commentid>
    <comment_count>9</comment_count>
      <attachid>337035</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-02 15:07:26 -0700</bug_when>
    <thetext>Created attachment 337035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411316</commentid>
    <comment_count>10</comment_count>
      <attachid>337035</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-02 17:21:32 -0700</bug_when>
    <thetext>Comment on attachment 337035
Patch

Rejecting attachment 337035 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 337035, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
org/git/WebKit
   0ba6dafd0b0..ef8bb830f8b  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 230192 = 0ba6dafd0b0f84b3fd563178f8009853ff2a4de1
r230193 = ef8bb830f8be80faa63866c7d213f3f8d6521938
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.webkit.org/results/7185921</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411413</commentid>
    <comment_count>11</comment_count>
      <attachid>337035</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-03 08:25:29 -0700</bug_when>
    <thetext>Comment on attachment 337035
Patch

Rejecting attachment 337035 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 337035, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
 hunks FAILED -- saving rejects to file Source/WebKit/WebKit.xcodeproj/project.pbxproj.rej
patching file Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
patching file Source/WebKit/WebProcess/UserContent/WebUserContentController.cpp
patching file Source/WebKit/WebProcess/UserContent/WebUserContentController.h
patching file Source/WebKit/WebProcess/WebPage/WebPage.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/7193568</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411442</commentid>
    <comment_count>12</comment_count>
      <attachid>337084</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-03 10:12:37 -0700</bug_when>
    <thetext>Created attachment 337084
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411472</commentid>
    <comment_count>13</comment_count>
      <attachid>337084</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-03 10:58:53 -0700</bug_when>
    <thetext>Comment on attachment 337084
Rebasing

Clearing flags on attachment: 337084

Committed r230210: &lt;https://trac.webkit.org/changeset/230210&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411473</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-03 10:58:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411474</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-03 10:59:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/39146551&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411529</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-03 12:55:13 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 184277</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411544</commentid>
    <comment_count>17</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-04-03 13:17:36 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #16)
&gt; Re-opened since this is blocked by bug 184277
Link to test run showing crashes and wpt test failures after this change:
https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/r230211%20(8539)/results.html

API test assertion failures:
ASSERTION FAILED: isValidIdentifier(m_identifier)
https://build.webkit.org/builders/Apple%20Sierra%20Debug%20WK1%20%28Tests%29/builds/7020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411557</commentid>
    <comment_count>18</comment_count>
      <attachid>337111</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-03 14:05:00 -0700</bug_when>
    <thetext>Created attachment 337111
Build and crash fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411559</commentid>
    <comment_count>19</comment_count>
      <attachid>337113</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-03 14:08:12 -0700</bug_when>
    <thetext>Created attachment 337113
Build and crash fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411563</commentid>
    <comment_count>20</comment_count>
      <attachid>337113</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-03 14:33:59 -0700</bug_when>
    <thetext>Comment on attachment 337113
Build and crash fix

Clearing flags on attachment: 337113

Committed r230223: &lt;https://trac.webkit.org/changeset/230223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411564</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-03 14:34:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411609</commentid>
    <comment_count>22</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-04-03 17:45:15 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #20)
&gt; Comment on attachment 337113 [details]
&gt; Build and crash fix
&gt; 
&gt; Clearing flags on attachment: 337113
&gt; 
&gt; Committed r230223: &lt;https://trac.webkit.org/changeset/230223&gt;
API tests are still hitting an assertion failure:
https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/builds/2711</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411612</commentid>
    <comment_count>23</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-03 17:49:52 -0700</bug_when>
    <thetext>Will fix it tonight</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411622</commentid>
    <comment_count>24</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-03 18:32:05 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411623</commentid>
    <comment_count>25</comment_count>
      <attachid>337137</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-03 18:32:07 -0700</bug_when>
    <thetext>Created attachment 337137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411635</commentid>
    <comment_count>26</comment_count>
      <attachid>337137</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-03 20:03:46 -0700</bug_when>
    <thetext>Comment on attachment 337137
Patch

Clearing flags on attachment: 337137

Committed r230232: &lt;https://trac.webkit.org/changeset/230232&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411636</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-03 20:03:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336901</attachid>
            <date>2018-03-30 17:16:57 -0700</date>
            <delta_ts>2018-04-02 09:38:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184205-20180330171645.patch</filename>
            <type>text/plain</type>
            <size>74686</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDllM2IzZGFlYTFkMzExMGY5
Yjg3MTk4ZTM4MGVkNWM3Nzc2OGNiMTAuLjJmOGNmMDI2MGQzYjY5NzY4ZWJjY2NlZTUxOWY1NTli
YmFhMDBjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTgtMDMtMzAgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1Byb2Nlc3Mg
Z2V0IENvbnRlbnRCbG9ja2VyIGluZm9ybWF0aW9uIGZyb20gVUlQcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQyMDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9jZXNz
IGdldCBjb250ZW50IGJsb2NrZXJzCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6
Y2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250
aW51ZUNoZWNraW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tl
cjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TG9hZENoZWNrZXI6OnNldENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om5ldHdv
cmtVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjpjb250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVy
OjphZGRDb250ZW50UnVsZUxpc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1VzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmguCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1VzZXJD
b250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFNoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaC4KKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUdy
b3VwRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cERhdGE6OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpjb250ZW50RXh0ZW5zaW9uUnVsZXMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OmFkZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29y
bGRVc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2Vy
U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJN
ZXNzYWdlSGFuZGxlckZvck5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
Q29udGVudFJ1bGVMaXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZE5ldHdvcmtQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92
ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmNvbnRlbnRFeHRlbnNpb25SdWxlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJT
dHJhdGVneTo6c3RhcnRQaW5nTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBjb25z
dCk6CisKIDIwMTgtMDMtMjggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBkb2VzIG5vdCBuZWVkIHRvIGV4cG9zZSBhbGwg
cmVkaXJlY3QgcmVzcG9uc2UgaGVhZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggMWQyNmU5Yjg3
NTA5YzQxZTMzYTM4MjE5MDRiMzE0NzcxN2FkZjRmOC4uZTNmZmQxYTEyNDUzZThiYzAyOWExZjYz
MjgyOWEwNjE0OGVkN2E3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMTgsNiArMTE4LDcgQEAg
c2V0KFdlYktpdF9TT1VSQ0VTCiAgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAogICAgIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKIApAQCAtNjEyLDYg
KzYxMyw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2Nr
ZXRTdHJlYW0ubWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRl
bnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCA5ZDY2YzBkZjZlYzc2NDJmNGUwMGJjOTMxZjEyZTE3YzYxZWFiZjRjLi5m
ODc0YTYwOTgzMTk4MDgxNmVjNmZlNTc2NzU1OTZiYjFjYjZjYWJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0xMTUsNiArMTE1LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAg
ICAgTmV0d29ya1JUQ1NvY2tldCBcCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyIFwKICAgICBO
ZXR3b3JrU29ja2V0U3RyZWFtIFwKKyAgICBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyIFwK
ICAgICBQbHVnaW5Db250cm9sbGVyUHJveHkgXAogICAgIFBsdWdpblByb2Nlc3MgXAogICAgIFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCA0MTI2OTIzODM5ZDFmYzhkYWRiOTM4
M2ZkOTBhZGRkZGQ3ZTJmZDVhLi4zOTUyMzIzZDA4NzU4YmU5OTUxNGRmYThkYzEyNmNhNzY2OWZl
NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENoZWNrZXIuY3BwCkBAIC05NSwxMiArOTUsMjAgQEAgTmV0d29ya0xvYWRDaGVja2VyOjpSZXF1
ZXN0T3JFcnJvciBOZXR3b3JrTG9hZENoZWNrZXI6OnJldHVybkVycm9yKFN0cmluZyYmIGVycm8K
IHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgVmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewogI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCi0gICAgaWYgKHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JM
b2FkKHJlcXVlc3QpLmJsb2NrZWRMb2FkKSB7Ci0gICAgICAgIGhhbmRsZXIocmV0dXJuRXJyb3Io
QVNDSUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQgZXh0ZW5zaW9uIikpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChX
VEZNb3ZlKHJlcXVlc3QpLCBbdGhpcywgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildKGF1dG8m
JiByZXF1ZXN0LCBhdXRvIHN0YXR1cykgbXV0YWJsZSB7CisgICAgICAgIGlmIChzdGF0dXMuYmxv
Y2tlZExvYWQpIHsKKyAgICAgICAgICAgIGhhbmRsZXIodGhpcy0+cmV0dXJuRXJyb3IoQVNDSUlM
aXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQgZXh0ZW5zaW9uIikpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICB0aGlzLT5jb250aW51ZUNoZWNraW5nUmVxdWVzdChX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICB9KTsKKyNlbHNlCisgICAg
Y29udGludWVDaGVja2luZ1JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVy
KSk7CiAjZW5kaWYKK30KIAordm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRpbnVlQ2hlY2tp
bmdSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFZhbGlkYXRpb25IYW5kbGVyJiYg
aGFuZGxlcikKK3sKICAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5ID0gdGhpcy0+
Y29udGVudFNlY3VyaXR5UG9saWN5KCkpIHsKICAgICAgICAgaWYgKGlzUmVkaXJlY3RlZCgpKSB7
CiAgICAgICAgICAgICBVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsKQEAgLTIyOSwyMSArMjM3LDE5
IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeSogTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2Vj
dXJpdHlQb2xpY3koKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
LUNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIE5ldHdvcmtMb2Fk
Q2hlY2tlcjo6Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kKCkKK3ZvaWQgTmV0d29ya0xvYWRDaGVj
a2VyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyYpPiYmIGNhbGxiYWNr
KQogewotICAgIGlmICghbV9jb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQpIHsKLSAgICAgICAgbV9j
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRFeHRlbnNp
b25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7Ci0gICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IG1fY29udGVudFJ1bGVMaXN0cykKLSAgICAgICAgICAgIG1fY29udGVudEV4dGVuc2lvbnNC
YWNrZW5kLT5hZGRDb250ZW50RXh0ZW5zaW9uKHBhaXIuZmlyc3QsIFdlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0OjpjcmVhdGUoV1RGTW92ZShwYWlyLnNlY29uZCkpKTsKKyAgICBpZiAoIW1fdXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikgeworICAgICAgICBDb250ZW50RXh0ZW5zaW9u
czo6QmxvY2tlZFN0YXR1cyBzdGF0dXM7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVxdWVz
dCksIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmV0dXJuICptX2NvbnRl
bnRFeHRlbnNpb25zQmFja2VuZDsKLX0KLQotQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0
dXMgTmV0d29ya0xvYWRDaGVja2VyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9h
ZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgYXV0byBzdGF0dXMgPSBjb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQoKS5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yUGluZ0xv
YWQocmVxdWVzdC51cmwoKSwgbV9tYWluRG9jdW1lbnRVUkwpOwotICAgIGFwcGx5QmxvY2tlZFN0
YXR1c1RvUmVxdWVzdChzdGF0dXMsIG51bGxwdHIsIHJlcXVlc3QpOwotICAgIHJldHVybiBzdGF0
dXM7CisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtVc2VyQ29udGVudENv
bnRyb2xsZXIoKS5jb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoKm1fdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciwgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBiYWNrZW5kKSBtdXRhYmxlIHsKKyAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSB0aGlzIGxpdmFiaWxpdHkuCisgICAgICAgIGF1dG8gc3RhdHVzID0g
YmFja2VuZC5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yUGluZ0xvYWQocmVxdWVzdC51
cmwoKSwgbV9tYWluRG9jdW1lbnRVUkwpOworICAgICAgICBhcHBseUJsb2NrZWRTdGF0dXNUb1Jl
cXVlc3Qoc3RhdHVzLCBudWxscHRyLCByZXF1ZXN0KTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92
ZShyZXF1ZXN0KSwgc3RhdHVzKTsKKyAgICB9KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuaAppbmRleCBlY2ZiNWViNWJjYTc3YzI3ZTFkNGFjZDgyYjhiOWM4YTI5
ZWQ0NDIyLi42YTE2MGZhNTYyYjI4YmY2ZDc4ZTRiYzc2NDVlZjBjOGM0ZTI3NzgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKQEAg
LTI1LDggKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmg+CisjaW5jbHVkZSAiTmV0d29y
a1VzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgpAQCAtNTIsMTAgKzU0LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q1NQUmVzcG9u
c2VIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYm
IGhlYWRlcnMpIHsgbV9jc3BSZXNwb25zZUhlYWRlcnMgPSBXVEZNb3ZlKGhlYWRlcnMpOyB9CiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICB2b2lkIHNldENvbnRlbnRFeHRlbnNp
b25SdWxlTGlzdHMoV2ViQ29yZTo6VVJMJiYgbWFpbkRvY3VtZW50VVJMLCBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4mJiBjb250ZW50UnVs
ZUxpc3RzKQorICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoV2ViQ29yZTo6
VVJMJiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5Eb2N1bWVudFVS
TCA9IFdURk1vdmUobWFpbkRvY3VtZW50VVJMKTsKLSAgICAgICAgbV9jb250ZW50UnVsZUxpc3Rz
ID0gV1RGTW92ZShjb250ZW50UnVsZUxpc3RzKTsKKyAgICAgICAgbV91c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICB9CiAjZW5kaWYKIApAQCAtNjksNiAr
NzEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjaGVja1JlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFZhbGlkYXRpb25IYW5kbGVyJiYpOwogCisgICAgdm9pZCBjb250aW51ZUNo
ZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRs
ZXImJik7CisKICAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNrKGNvbnN0IFdlYkNvcmU6OlVS
TCYpIGNvbnN0OwogICAgIHZvaWQgY2hlY2tDT1JTUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBjaGVja0NPUlNSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXIm
Jik7CkBAIC03Nyw4ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgUmVxdWVzdE9yRXJyb3IgcmV0dXJu
RXJyb3IoU3RyaW5nJiYgZXJyb3IpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
LSAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5k
JiBjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoKTsKLSAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6QmxvY2tlZFN0YXR1cyBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyYpPiYmKTsKICNlbmRpZgogCiAgICAgV2ViQ29y
ZTo6RmV0Y2hPcHRpb25zOjpNb2RlIG1fbW9kZTsKQEAgLTkyLDE2ICs5NSwxNCBAQCBwcml2YXRl
OgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVyczsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRF
TlNJT05TKQogICAgIFdlYkNvcmU6OlVSTCBtX21haW5Eb2N1bWVudFVSTDsKLSAgICBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gbV9jb250
ZW50UnVsZUxpc3RzOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpVc2VyQ29udGVudFByb3ZpZGVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKICNl
bmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4g
bV9jb3JzUHJlZmxpZ2h0Q2hlY2tlcjsKICAgICBib29sIG1faXNTYW1lT3JpZ2luUmVxdWVzdCB7
IHRydWUgfTsKICAgICBib29sIG1faXNTaW1wbGVSZXF1ZXN0IHsgdHJ1ZSB9OwogICAgIG11dGFi
bGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250
ZW50U2VjdXJpdHlQb2xpY3k7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNp
b25zQmFja2VuZD4gbV9jb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ7Ci0jZW5kaWYKICAgICBzaXpl
X3QgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogICAgIFdlYkNvcmU6OlVSTCBtX3ByZXZpb3VzVVJM
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKaW5kZXggZjFhOTljMjcyZWUxMzI4Y2Q3NDhiN2E0YTQ4ZDI5NDM2NjA4ZDYyOS4uNmMyMjA5
ZWUzZmRiMzY2MTM4ODRjNWViNDRiNGU4MTAxY2JmNTFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlByZWNv
bm5lY3RUYXNrLmgiCiAjaW5jbHVkZSAiUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJTZXNzaW9uVHJhY2tlci5oIgpAQCAtMTcwLDYgKzE3MSwxMyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6Ok5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgeworICAgICAgICBtX25ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIuZGlkUmVjZWl2ZU1l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKwogICAgIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAppbmRleCAyMTJiOGJkOTUxMjU5OTJiZDFlMTcwOGEzN2NjNTA5MDBhNzMyYjcxLi5mYjhm
YjdkNGU3MjdhM2JjZGMzNTBlNjk3ZmYxOGQ1NTNjNTI0ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCisjaW5jbHVkZSAiTmV0d29ya1VzZXJDb250ZW50
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQu
aD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMTU3
LDYgKzE1OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlB
dXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRy
b2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwogCisjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKKyAgICBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyJiBuZXR3
b3JrVXNlckNvbnRlbnRDb250cm9sbGVyKCkgeyByZXR1cm4gbV9uZXR3b3JrVXNlckNvbnRlbnRD
b250cm9sbGVyOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2VzcygpOwog
ICAgIH5OZXR3b3JrUHJvY2VzcygpOwpAQCAtMjgzLDYgKzI4OCwxMCBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKElPUykKICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVE
YXRhYmFzZVRyYWNrZXI7CiAjZW5kaWYKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CisgICAgTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlciBtX25ldHdvcmtVc2VyQ29udGVudENv
bnRyb2xsZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcAppbmRleCAwMTcyYzNiNDE5YjgxZjE1ZDNmNzg5YWQ4ZThkNmYzYWY5
ODkxZDU4Li40NDA3N2QzY2U1ZWYxZGQwYjU5NDA0ZTVmOWU2ZDc2NzE3MDMyMmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBlbmNvZGVyIDw8IG1haW5Eb2N1
bWVudFVSTDsKLSAgICBlbmNvZGVyIDw8IGNvbnRlbnRSdWxlTGlzdHM7CisgICAgZW5jb2RlciA8
PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiB9CiAKQEAgLTE4NCwx
MSArMTg0LDExIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQubWFpbkRvY3VtZW50VVJMKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3REYXRhPj4+IGNvbnRlbnRSdWxlTGlzdHM7Ci0gICAgZGVjb2RlciA+PiBjb250
ZW50UnVsZUxpc3RzOwotICAgIGlmICghY29udGVudFJ1bGVMaXN0cykKKyAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4+IHVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyOworICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdC5jb250ZW50UnVsZUxpc3Rz
ID0gV1RGTW92ZSgqY29udGVudFJ1bGVMaXN0cyk7CisgICAgcmVzdWx0LnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIgPSAqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNl
bmRpZgogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKaW5kZXggNzdk
ZTg1NTUzZWRmNGM5OGNiYTdjNDY3M2ZiNmUzYjcxMGQ0ZTNiYS4uMmNjMzNhY2U5YmYwMDkyMzE5
YWJiZTU2Y2FmYmEwYjgyZDU1NzMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtMjcs
NyArMjcsNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVM
aXN0RGF0YS5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50
VVJMOwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE+PiBjb250ZW50UnVsZUxpc3RzOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNhYzE3
OWM4MDY2YTRhNzk0Mzg5OWE3OTg5ZGRmN2NiOTU3NjQwYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5j
cHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb21waWxlZENv
bnRlbnRSdWxlTGlzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXI6Ok5ldHdvcmtVc2VyQ29u
dGVudENvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CitOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVy
Ojp+TmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlcigpID0gZGVmYXVsdDsKKwordm9pZCBOZXR3
b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjpjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBCYWNrZW5kQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2Vu
ZHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gbV9jb250ZW50RXh0ZW5z
aW9uQmFja2VuZHMuZW5kKCkpIHsKKyAgICAgICAgY2FsbGJhY2soKml0ZXJhdG9yLT52YWx1ZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wZW5kaW5nQ2FsbGJhY2tzLmVuc3VyZShp
ZGVudGlmaWVyLCBbXSB7CisgICAgICAgIHJldHVybiBWZWN0b3I8QmFja2VuZENhbGxiYWNrPiB7
IH07CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7Cisg
ICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkNvbnRlbnRFeHRlbnNpb25SdWxl
cyB7IGlkZW50aWZpZXIgfSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1VzZXJDb250ZW50Q29udHJv
bGxlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENv
bnRlbnRSdWxlTGlzdERhdGE+PiYgY29udGVudFJ1bGVMaXN0cykKK3sKKyAgICBhdXRvJiBiYWNr
ZW5kID0gKm1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVuc3VyZShpZGVudGlmaWVyLCBbXSB7
CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OworCisgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZW50UnVsZUxpc3QgOiBjb250ZW50UnVsZUxp
c3RzKSB7CisgICAgICAgIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YSBjb250ZW50UnVs
ZUxpc3REYXRhID0gY29udGVudFJ1bGVMaXN0LnNlY29uZDsKKyAgICAgICAgYXV0byBjb21waWxl
ZENvbnRlbnRSdWxlTGlzdCA9IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0OjpjcmVhdGUoV1RG
TW92ZShjb250ZW50UnVsZUxpc3REYXRhKSk7CisgICAgICAgIGJhY2tlbmQuYWRkQ29udGVudEV4
dGVuc2lvbihjb250ZW50UnVsZUxpc3QuZmlyc3QsIFdURk1vdmUoY29tcGlsZWRDb250ZW50UnVs
ZUxpc3QpKTsKKyAgICB9CisKKyAgICBhdXRvIHBlbmRpbmdDYWxsYmFja3MgPSBtX3BlbmRpbmdD
YWxsYmFja3MudGFrZShpZGVudGlmaWVyKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcGVu
ZGluZ0NhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soYmFja2VuZCk7CisKK30KKwordm9pZCBO
ZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVDb250ZW50UnVsZUxpc3QoVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmZpbmQo
aWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fY29udGVudEV4dGVuc2lvbkJhY2tl
bmRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpdGVyYXRvci0+dmFsdWUtPnJlbW92
ZUNvbnRlbnRFeHRlbnNpb24obmFtZSk7Cit9CisKK3ZvaWQgTmV0d29ya1VzZXJDb250ZW50Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fY29udGVudEV4
dGVuc2lvbkJhY2tlbmRzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1f
Y29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
dGVyYXRvci0+dmFsdWUtPnJlbW92ZUFsbENvbnRlbnRFeHRlbnNpb25zKCk7Cit9CisKK3ZvaWQg
TmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlKFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5k
cy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDkyODYwNTNjYzI5M2UzNjIwMTNmZWViOTQyNDhkOTNhYmUyNDdlNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1VzZXJDb250
ZW50Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3REYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50UHJvdmlkZXIuaD4KKworbmFtZXNw
YWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIgeworcHVi
bGljOgorICAgIE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIoKTsKKyAgICB+TmV0d29ya1Vz
ZXJDb250ZW50Q29udHJvbGxlcigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworICAgIHVzaW5nIEJhY2tlbmRDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNv
bnRlbnRFeHRlbnNpb25zQmFja2VuZCYpPjsKKyAgICB2b2lkIGNvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZChVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBCYWNrZW5kQ2FsbGJhY2smJik7
CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZGRDb250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiYpOworICAgIHZvaWQgcmVtb3ZlQ29udGVudFJ1bGVM
aXN0KFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7
CisgICAgdm9pZCByZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIpOworCisgICAgSGFzaE1hcDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNp
b25zQmFja2VuZD4+IG1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzOworICAgIEhhc2hNYXA8VXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgVmVjdG9yPEJhY2tlbmRDYWxsYmFjaz4+IG1f
cGVuZGluZ0NhbGxiYWNrczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxl
ci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzI4N2FlZjJmMmRlNWJhYzBmYzFkYWVmYWE2ZTNi
ZjQ4NzJlOGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCisKK21lc3NhZ2VzIC0+IE5ldHdvcmtVc2VyQ29udGVudENvbnRy
b2xsZXIgeworICAgIFJlbW92ZShXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKKyAgICBBZGRDb250ZW50UnVsZUxpc3RzKFdlYktpdDo6VXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50RmlsdGVy
cykKKyAgICBSZW1vdmVDb250ZW50UnVsZUxpc3QoV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBuYW1lKQorICAgIFJlbW92ZUFsbENvbnRl
bnRSdWxlTGlzdHMoV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcAppbmRleCBiYzQ4OTQzNjg4ZDUwNjczOTExZjFhYWRlMGE4Yzc3Mzc2ZDI0YWQ1Li43ZjMy
OGI1MTdjZmE3ZjM0MzViZjZmZTExMzZkZjFkNjQ2YTg2YjVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtNDgsNyArNDgsNyBAQCBQaW5nTG9hZDo6UGlu
Z0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBIVFRQSGVh
ZGVyTWFwJiYgbwogICAgIGlmIChtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAg
ICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdURk1vdmUo
bV9wYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycy52YWx1ZSgpKSk7CiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKLSAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0Q29udGVudEV4
dGVuc2lvblJ1bGVMaXN0cyhXVEZNb3ZlKG1fcGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwpLCBX
VEZNb3ZlKG1fcGFyYW1ldGVycy5jb250ZW50UnVsZUxpc3RzKSk7CisgICAgbV9uZXR3b3JrTG9h
ZENoZWNrZXItPnNldENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKFdURk1vdmUobV9wYXJhbWV0
ZXJzLm1haW5Eb2N1bWVudFVSTCksIG1fcGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyKTsKICNlbmRpZgogCiAgICAgLy8gSWYgdGhlIHNlcnZlciBuZXZlciByZXNwb25k
cywgdGhpcyBvYmplY3Qgd2lsbCBoYW5nIGFyb3VuZCBmb3JldmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggODIwNzgwYjg5ZWE0NmEwNjFlOTZiMTMzZTVk
YTRmOTdmNGNlOTA1OC4uMTYwODBiOTI5YmM4Y2Q2MDc2MDFlZDhkZTE1NzRkNTdmMmI2OThmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0xOTEsNiArMTkx
LDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKHJlY2VpdmVyKToKICAg
ICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcicsCisgICAgICAgICdXZWJL
aXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXInLAogICAgIF0pCiAKICAgICBmb3Ig
cGFyYW1ldGVyIGluIHJlY2VpdmVyLml0ZXJwYXJhbWV0ZXJzKCk6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWIzZmI0M2Y5NDAxMDg3ZjgwYzBiY2Y3NDBiNmViOWU0ODBhMDRiNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
ZW51bSBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYzQ5OTdlMzE3NzJkMTA0
MmNhMjhhY2E1OWQ1ODVkM2Y3ZDhiYmMyZC4uMDEyN2EyYWZmMjI1YzBlMWM5OGU3ZjQ0NzZjZGNl
NGExZjBiYTk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE3OCw4ICsxNzgsMTMgQEAgc3RkOjpvcHRpb25hbDxXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMuaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVz
ZXJDb250ZW50Q29udHJvbGxlcklEKSkKKworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAg
ICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CisgICAgaWYgKCF1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQgPSAqdXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllcjsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy52aXNpdGVkTGlua1RhYmxlSUQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy53ZWJzaXRlRGF0YVN0b3JlSUQpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmlu
ZGV4IGEzN2E3MzRkY2RmNWZhZjE1YWJkZWQ5MGIyOTBhNTdhODgzM2Y0ZTYuLmEwZjgyNmQ3YWUz
YThhMmFiYmJjODc5YzBmZjQ3NWY4NTJiOWQ1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTk4LDcgKzk4LDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RDsKICAgICB1aW50NjRfdCBoaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlEOwogCi0gICAgdWlu
dDY0X3QgdXNlckNvbnRlbnRDb250cm9sbGVySUQ7CisgICAgVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJRDsKICAgICB1aW50NjRfdCB2aXNpdGVk
TGlua1RhYmxlSUQ7CiAgICAgdWludDY0X3Qgd2Vic2l0ZURhdGFTdG9yZUlEOwogICAgIGJvb2wg
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlR3JvdXBEYXRhLmNwcAppbmRleCAyNzUwMDdhZjcxNWIyNWZhN2IyZDZkOWQ3MDVmZTc1MzI5
NTllNTUxLi5hYmRhN2Q1ZTVjNjRlMDE1NGFkMzU2OTk2N2FlODc2ZjZmNjlkYzMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcApAQCAtNTMsMTAgKzUzLDExIEBA
IHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gV2ViUGFnZUdyb3VwRGF0YTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBib29sIHZpc2libGVUb0hpc3RvcnlDbGllbnQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB1aW50NjRfdCB1c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcikpCisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIGRlY29kZXIg
Pj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBpZiAoIXVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
cmV0dXJuIHsgeyBpZCwgcGFnZUdyb3VwSUQsIHZpc2libGVUb0luamVjdGVkQnVuZGxlLCB2aXNp
YmxlVG9IaXN0b3J5Q2xpZW50LCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH0gfTsK
KyAgICByZXR1cm4geyB7IGlkLCBwYWdlR3JvdXBJRCwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUs
IHZpc2libGVUb0hpc3RvcnlDbGllbnQsICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
IH0gfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlR3JvdXBEYXRhLmgKaW5kZXggMmM2MWU1OTdiNjU2Y2Q4YjgyNzZkMjBjNDZlODQxYzk5Zjgw
YjViMC4uOTMwZDhlZTk4YWVlNmUyNjcxNTFkMTY2ZDk4MDE5MjQ5MmIwMzliMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC00
Myw3ICs0NCw3IEBAIHN0cnVjdCBXZWJQYWdlR3JvdXBEYXRhIHsKICAgICBib29sIHZpc2libGVU
b0luamVjdGVkQnVuZGxlOwogICAgIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudDsKIAotICAg
IHVpbnQ2NF90IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CisgICAgVXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzMjQ0NmQ4NGZm
ZDcyMDI3NTA5MTc2ZTI2ODg4MzEyYzY1YjI0M2Q3Li45Y2QyNWQxYTcyNDJkNDEwMTEwNDZjOGEy
YzRhZDBmOTJlYmJhZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAKKyNpbmNs
dWRlICJBUElDb250ZW50UnVsZUxpc3QuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaWYgRU5B
QkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKQEAgLTM0LDExICszNSwxNCBAQAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVByb2Nlc3NNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgog
I2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAKQEAgLTg1LDYgKzg5LDggQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9j
ZXNzUHJveHkoKQogICAgIEFTU0VSVChtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tz
LmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJh
Y2tzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9y
T3JpZ2luc0NhbGxiYWNrcy5pc0VtcHR5KCkpOworICAgIGZvciAoYXV0byogcHJveHkgOiBtX3dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMpCisgICAgICAgIHByb3h5LT5yZW1vdmVOZXR3
b3JrUHJvY2VzcygqdGhpcyk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TGF1
bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMp
CkBAIC01MjgsNCArNTM0LDMwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xk
aW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKICAgICB9CiB9CiAKKwor
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmNvbnRlbnRFeHRlbnNpb25SdWxlcyhVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
ID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmdldChpZGVudGlmaWVyKSkgeworICAg
ICAgICBpZiAobV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzLmNvbnRhaW5zKHdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
bV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzLmFkZCh3ZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eSk7CisgICAgICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRO
ZXR3b3JrUHJvY2VzcygqdGhpcyk7CisKKyAgICAgICAgYXV0byBydWxlcyA9IFdURjo6bWFwKHdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5jb250ZW50RXh0ZW5zaW9uUnVsZXMoKSwgW10o
YXV0byYmIGtleVZhbHVlKSAtPiBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRS
dWxlTGlzdERhdGE+IHsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihrZXlWYWx1
ZS52YWx1ZS0+bmFtZSgpLCBrZXlWYWx1ZS52YWx1ZS0+Y29tcGlsZWRSdWxlTGlzdCgpLmRhdGEo
KSk7CisgICAgICAgIH0pOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrVXNlckNvbnRl
bnRDb250cm9sbGVyOjpBZGRDb250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllciwgcnVsZXMgfSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Vz
ZXJDb250ZW50Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIsIHsg
fSB9LCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmIHBy
b3h5KQoreworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZSB7IHByb3h5LmlkZW50aWZpZXIoKSB9LCAwKTsKKyAgICBtX3dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3hpZXMucmVtb3ZlKCZwcm94eSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGZmZmI0MTRmOTY1MTc5ZDI2MTBhNjEzZTJiZTZl
ZTNjZDMzZTEwMmUuLmM5ZGM3OTJhOWI1ZTA3Y2NmZTEwNTI5YTdlMTlhZTZhYmE0OTBkOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgi
CiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRs
ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC01OSw2ICs2MCw3IEBAIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOwogZW51bSBjbGFzcyBX
ZWJzaXRlRGF0YVR5cGU7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7
CitjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIHN0cnVjdCBXZWJzaXRlRGF0
YTsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eSA6IHB1YmxpYyBDaGlsZFByb2Nlc3NQcm94
eSwgcHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50IHsKQEAgLTk0LDYgKzk2LDEwIEBAIHB1
YmxpYzoKICAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSB7IHJldHVybiBtX3Rocm90
dGxlcjsgfQogICAgIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCgpIHsgcmV0dXJuIG1fcHJv
Y2Vzc1Bvb2w7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgdm9pZCBk
aWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzUHJv
eHkoV2ViUHJvY2Vzc1Bvb2wmKTsKIApAQCAtMTM5LDYgKzE0NSwxMCBAQCBwcml2YXRlOgogICAg
IHZvaWQgYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNSZXN1bHQoVmVjdG9yPFN0cmluZz4mJiBkb21h
aW5zLCB1aW50NjRfdCBjb250ZXh0SWQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQorICAgIHZvaWQgY29udGVudEV4dGVuc2lvblJ1bGVzKFVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIpOworI2VuZGlmCisKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNs
aWVudAogICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CiAKQEAgLTE2MSw2ICsxNzEsMTAgQEAg
cHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wgc3VjY2Vzcyk+PiBtX3dyaXRlQmxvYlRvRmlsZVBhdGhDYWxsYmFja01hcDsKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVk
KT4+IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXA7CiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPj4g
bV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwOworCisjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKKyAgICBIYXNoU2V0PFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
Kj4gbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzOworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2MTI2
ZWE1ZDg3ZDY0YWRjMmU4ZDZlZWMyNjM4MWQwY2Q4YzcyNWUyLi4xODRjMmZkNTQ0MWY4ZDg3MDQz
NmQxNWI3NmE0ZDJkZmY2MzcyODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBA
IC00Nyw0ICs0Nyw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVj
ZWl2ZXIgewogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQogICAgIFN0
b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4
dElkKQogICAgIEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+IGRv
bWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJZCkKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCisgICAgQ29udGVudEV4dGVuc2lvblJ1bGVzKFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciBpZGVudGlmaWVyKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNDIzM2M4ZTVjZmZjNjYyMDEzMWNkYmI4M2MwMDJk
Y2E1NTYzNDFiYi4uMjQ4YTFkMDVmY2QyZWJkMTI1NmExZDYzYzQ1M2RhMjg0OTQ3MmJhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAtMzEsNiArMzEsOCBA
QAogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVl
dC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c1Byb3h5LmgiCisjaW5jbHVkZSAiTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCkBA
IC00NiwxOCArNDgsMzUgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyBIYXNoTWFw
PFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5Kj4mIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMoKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIs
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4+IHByb3hpZXM7CisgICAgcmV0dXJuIHBy
b3hpZXM7Cit9CisKKworV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpnZXQoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBp
ZGVudGlmaWVyKQoreworICAgIHJldHVybiB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVz
KCkuZ2V0KGlkZW50aWZpZXIpOworfQorICAgIAogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKLSAgICA6IG1fdXNlclNjcmlwdHMo
QVBJOjpBcnJheTo6Y3JlYXRlKCkpCisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVPYmplY3RJ
ZGVudGlmaWVyPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigpKQorICAgICwg
bV91c2VyU2NyaXB0cyhBUEk6OkFycmF5OjpjcmVhdGUoKSkKICAgICAsIG1fdXNlclN0eWxlU2hl
ZXRzKEFQSTo6QXJyYXk6OmNyZWF0ZSgpKQogeworICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3hpZXMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKIH0KIAogV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpCiB7Ci0gICAg
Zm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICBw
cm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CisgICAg
d2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwor
ICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKSB7CisgICAgICAgIHByb2Nlc3Mt
PnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwog
ICAgICAgICBwcm9jZXNzLT5kaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHko
KnRoaXMpOwogICAgIH0KKyAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNz
ZXMpCisgICAgICAgIHByb2Nlc3MtPmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eSgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFk
ZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC02NSw3ICs4NCw3IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9j
ZXNzUHJveHksCiAgICAgaWYgKCFtX3Byb2Nlc3Nlcy5hZGQoJndlYlByb2Nlc3NQcm94eSkuaXNO
ZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLCAqdGhpcyk7CisgICAgd2ViUHJvY2Vzc1By
b3h5LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCksICp0
aGlzKTsKIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHko
KSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZCA6IG1fdXNlckNvbnRlbnRXb3JsZHMpCkBA
IC05NSw3ICsxMTQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogICAgIEFTU0VSVChtX3By
b2Nlc3Nlcy5jb250YWlucygmd2ViUHJvY2Vzc1Byb3h5KSk7CiAKICAgICBtX3Byb2Nlc3Nlcy5y
ZW1vdmUoJndlYlByb2Nlc3NQcm94eSk7Ci0gICAgd2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAK
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRV
c2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKQEAgLTEwNiw3ICsxMjUsNyBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQ
STo6VXNlckNvbnRlbnRXb3JsZAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91c2VyQ29udGVudFdv
cmxkcy5hZGQoJndvcmxkKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAg
ICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRk
VXNlckNvbnRlbnRXb3JsZHMoeyBzdGQ6Om1ha2VfcGFpcih3b3JsZC5pZGVudGlmaWVyKCksIHdv
cmxkLm5hbWUoKSkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRz
KHsgc3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBp
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgfQogfQogCkBAIC0xMzAsNyArMTQ5LDcgQEAg
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3Js
ZFVzZXMoQVBJOjpVc2VyQ29udGVudFcKIHsKICAgICBpZiAoc2hvdWxkU2VuZFJlbW92ZVVzZXJD
b250ZW50V29ybGRzTWVzc2FnZSh3b3JsZCwgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpKSB7CiAgICAg
ICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJl
bW92ZVVzZXJDb250ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVy
KCkpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9
KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIH0KIH0KIApAQCAtMTQzLDcgKzE2Miw3
IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50
V29ybGRVc2VzKEhhc2hDb3VudGVkU2V0PFJlCiAgICAgfQogCiAgICAgZm9yIChXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3
b3JsZHNUb1JlbW92ZSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMo
d29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0
JiB1c2VyU2NyaXB0KQpAQCAtMTU1LDcgKzE3NCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQog
ICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNj
cmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1
c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3Jp
cHRzKHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNl
clNjcmlwdC51c2VyU2NyaXB0KCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogfQog
CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQ
STo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKQEAgLTE2Myw3ICsxODIsNyBAQCB2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlw
dCYgdXNlclNjcmlwdAogICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNl
clNjcmlwdC51c2VyQ29udGVudFdvcmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSog
cHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHQod29ybGQtPmlkZW50aWZp
ZXIoKSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVz
ZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBp
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygp
LnJlbW92ZUFsbCgmdXNlclNjcmlwdCk7CiAKQEAgLTE3Myw3ICsxOTIsNyBAQCB2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlw
dCYgdXNlclNjcmlwdAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlclNjcmlwdHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3Ig
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJT
Y3JpcHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFs
bFVzZXJTY3JpcHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CiAKICAgICB1bnNpZ25lZCB1c2VyU2NyaXB0c1JlbW92ZWQgPSBtX3VzZXJTY3JpcHRz
LT5yZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxBUEk6OlVzZXJTY3JpcHQ+KFsmXShjb25zdCBhdXRv
JiB1c2VyU2NyaXB0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclNjcmlwdC0+dXNlckNvbnRlbnRX
b3JsZCgpID09ICZ3b3JsZDsKQEAgLTE5NCw3ICsyMTMsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCiAgICAgICAgIHdvcmxkSWRl
bnRpZmllcnMudW5jaGVja2VkQXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigp
KTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0g
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
UmVtb3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7Cisg
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
UmVtb3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIApAQCAt
MjEwLDcgKzIyOSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVz
ZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTCiAgICAgbV91c2VyU3R5bGVT
aGVldHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU3R5bGVTaGVldCk7CiAKICAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0
cyh7IHsgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1
c2VyU3R5bGVTaGVldC51c2VyU3R5bGVTaGVldCgpIH0gfSksIGlkZW50aWZpZXIoKSk7CisgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRk
VXNlclN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5p
ZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVT
aGVldCkKQEAgLTIxOCw3ICsyMzcsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1cwogICAgIFJl
ZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQudXNlckNvbnRl
bnRXb3JsZCgpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nl
c3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5
bGVTaGVldC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNo
ZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIGlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50
cygpLnJlbW92ZUFsbCgmdXNlclN0eWxlU2hlZXQpOwogCkBAIC0yMjgsNyArMjQ3LDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJ
OjpVc2VyU3R5bGVTaGVldCYgdXMKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQog
ewogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVy
KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgdW5zaWduZWQgdXNlclN0eWxlU2hlZXRz
UmVtb3ZlZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5yZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxBUEk6
OlVzZXJTdHlsZVNoZWV0PihbJl0oY29uc3QgYXV0byYgdXNlclN0eWxlU2hlZXQpIHsKICAgICAg
ICAgcmV0dXJuICZ1c2VyU3R5bGVTaGVldC0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3JsZDsK
QEAgLTI0OSw3ICsyNjgsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQogICAgICAgICB3b3JsZElkZW50aWZpZXJzLnVuY2hl
Y2tlZEFwcGVuZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAKICAgICBmb3Ig
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJT
dHlsZVNoZWV0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKIAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKQEAgLTI3
MCw3ICsyODksNyBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2Vy
U2NyaXB0TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZQogICAgIG1fc2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzLmFkZChoYW5kbGVyLmlkZW50aWZpZXIoKSwgJmhhbmRsZXIpOwogCiAgICAgZm9y
IChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZp
ZXIoKSwgaGFuZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZp
ZXIoKSwgaGFuZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAg
IAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjgwLDcgKzI5OSw3IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29u
c3QgU3RyaW5nCiAgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuYmVn
aW4oKSwgZW5kID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICBpZiAoaXQtPnZhbHVlLT5uYW1lKCkgPT0gbmFtZSAmJiAmaXQtPnZhbHVl
LT51c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkKSB7CiAgICAgICAgICAgICBmb3IgKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNj
cmlwdE1lc3NhZ2VIYW5kbGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlm
aWVyKCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICAgICAgICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRs
ZXJzLnJlbW92ZShpdCk7CiAKQEAgLTI5Myw3ICszMTIsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0
cmluZwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1l
c3NhZ2VIYW5kbGVycyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAo
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNj
cmlwdE1lc3NhZ2VIYW5kbGVycyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigp
KTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmll
cigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICB1bnNpZ25lZCBudW1iZXJS
ZW1vdmVkID0gMDsKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmVJZihbJl0oYXV0
byYgZW50cnkpIHsKQEAgLTMzMCwyNCArMzQ5LDMzIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmFkZENvbnRlbnRSdWxlTGlzdChBUEk6OkNvbnRlbnRSdWxlTGlzdCYgY29u
CiAKICAgICBhdXRvIHBhaXIgPSBzdGQ6Om1ha2VfcGFpcihjb250ZW50UnVsZUxpc3QubmFtZSgp
LCBjb250ZW50UnVsZUxpc3QuY29tcGlsZWRSdWxlTGlzdCgpLmRhdGEoKSk7CiAKLSAgICBmb3Ig
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxl
TGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CisKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9j
ZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtVc2VyQ29udGVu
dENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMgeyBpZGVudGlmaWVyKCksIHsgcGFpciB9
IH0sIDApOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVD
b250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIG1fY29udGVudFJ1bGVM
aXN0cy5yZW1vdmUobmFtZSk7CiAKLSAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRSdWxlTGlzdChuYW1lKSwgaWRlbnRpZmllcigp
KTsKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50
UnVsZUxpc3QobmFtZSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGZvciAoYXV0
byogcHJvY2VzcyA6IG1fbmV0d29ya1Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1bGVM
aXN0IHsgaWRlbnRpZmllcigpLCBuYW1lIH0sIDApOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCkKIHsKICAgICBtX2Nv
bnRlbnRSdWxlTGlzdHMuY2xlYXIoKTsKIAotICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBpZGVudGlm
aWVyKCkpOworICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFs
bENvbnRlbnRSdWxlTGlzdHMoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgZm9y
IChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxDb250
ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpIH0sIDApOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDIzMGY2MjNkOThlNDc4Mjk1MDExMGQ5
NDlmNTI1NjU2MjAwZTNiODQuLmFiM2YyNjAyYjBjMjNkNzYzOTAwMjAwYWZjNmNmNWE3OGZmY2Y4
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjcsMTEgKzI3
LDExIEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC01NCwy
MCArNTQsMjMgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2NsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CiBjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwog
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiAKLWNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6VXNlckNvbnRlbnRDb250cm9sbGVyPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHVibGljIElkZW50aWZpZWQ8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHsKK2NsYXNz
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRlbnRDb250cm9sbGVyPiwgcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eT4gY3JlYXRlKCkKICAgICB7IAogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSk7Ci0gICAgfSAKLSAgICBleHBsaWNp
dCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpOworICAgIH0KKyAgICBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eSgpOwogICAgIH5XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSgpOwogCisgICAgc3RhdGljIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiBnZXQoVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CisKICAgICB2b2lkIGFkZFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgcmVt
b3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKIApAQCAtOTEsMTEgKzk0LDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVu
dFdvcmxkJik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIHZvaWQgYWRk
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHkpIHsgbV9uZXR3b3JrUHJv
Y2Vzc2VzLnJlbW92ZSgmcHJveHkpOyB9CisgICAgdm9pZCByZW1vdmVOZXR3b3JrUHJvY2VzcyhO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSkgeyBtX25ldHdvcmtQcm9jZXNzZXMuYWRkKCZwcm94
eSk7IH0KKwogICAgIHZvaWQgYWRkQ29udGVudFJ1bGVMaXN0KEFQSTo6Q29udGVudFJ1bGVMaXN0
Jik7CiAgICAgdm9pZCByZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCByZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCk7CisgICAgY29uc3QgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4+JiBjb250ZW50RXh0ZW5zaW9uUnVsZXMo
KSB7IHJldHVybiBtX2NvbnRlbnRSdWxlTGlzdHM7IH0KICNlbmRpZgogCisgICAgVXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKQEAgLTEwNywxMyArMTE2LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVV
c2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpVc2VyQ29udGVu
dFdvcmxkPj4mKTsKICAgICBib29sIHNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01l
c3NhZ2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1v
dmUpOwogCi0gICAgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsgICAgCisg
ICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgSGFz
aFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsKICAgICBSZWY8QVBJOjpBcnJheT4g
bV91c2VyU2NyaXB0czsKICAgICBSZWY8QVBJOjpBcnJheT4gbV91c2VyU3R5bGVTaGVldHM7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9z
Y3JpcHRNZXNzYWdlSGFuZGxlcnM7CiAgICAgSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6VXNl
ckNvbnRlbnRXb3JsZD4+IG1fdXNlckNvbnRlbnRXb3JsZHM7CiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQorICAgIEhhc2hTZXQ8TmV0d29ya1Byb2Nlc3NQcm94eSo+IG1fbmV0d29y
a1Byb2Nlc3NlczsKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVM
aXN0Pj4gbV9jb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWVjY2FjMmYxYTk2ODY2Yjdj
ZDlhYjRhMWQ5OGU4NjFjODUxNTBiZS4uMjliYzhmMTQ1NzliNDZlNGUxMTM3MmZlYjBmMWEyODM3
ZjVkMzVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC05NTgsNiArOTU4LDcgQEAKIAkJNDFGQUY1RjUxRTNDMDY0OTAwMUFFNjc4IC8q
IFdlYlJUQ1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZBRjVGNDFFM0MwNjQxMDAxQUU2NzggLyogV2ViUlRDUmVzb2x2ZXIuaCAqLzsg
fTsKIAkJNDFGQUY1RjgxRTNDMTAyMTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBRjVGNjFFM0Mw
QjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCAqLzsgfTsKIAkJNDFGQUY1RjkxRTND
MTAyNTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY3MUUzQzBCNDcwMDFBRTY3OCAvKiBM
aWJXZWJSVENSZXNvbHZlci5jcHAgKi87IH07CisJCTQxRkJFODI2MjA2REY3RkEwMDBGMDc0MSAv
KiBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkJFODI0MjA2REE3OUMwMDBGMDc0MSAvKiBOZXR3
b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNDQ1MEFFQzAxREMzRkFFNTAw
OTk0M0YyIC8qIFNoYXJlZE1lbW9yeUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBBRUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRN
ZW1vcnlDb2NvYS5jcHAgKi87IH07CiAJCTQ2MEY0ODhGMUY5OTZGNzEwMENGNEI4NyAvKiBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBGNDg4RDFGOTk2RjZDMDBDRjRC
ODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwogCQk0NjBGNDg5MDFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDYwRjQ4OEUxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTExOTYsNiArMTE5Nyw3IEBACiAJCTUyRDVB
MUIwMUM1NzQ5NUEwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMUFBMUM1NzQ5
NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCAqLzsgfTsKIAkJNTJE
NUExQjExQzU3NDk2MjAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMUFDMUM1
NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gKi87IH07CiAJ
CTUyRDVBMUI3MUM1NzRBMDIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQjQxQzU3
NDlGMjAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gKi87IH07CisJCTUyRjA2
MEUxMTY1NDMxODUwMEYzMjgxQiAvKiBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUyRjA2MEREMTY1NDMxNzUwMEYzMjgxQiAvKiBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9s
bGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTMwMjU4M0IxRENCQkQyMjAwREE4OUMy
IC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTMwMjU4MkUxRENCQkQxRDAwREE4OUMyIC8qIE5ldHdvcmtD
YXB0dXJlUmVzb3VyY2UuY3BwICovOyB9OwogCQk1MzAyNTgzQzFEQ0JCRDIyMDBEQTg5QzIgLyog
TmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTMwMjU4MkYxRENCQkQxRDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJl
UmVzb3VyY2UuaCAqLzsgfTsKIAkJNTMwMjU4M0QxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdvcmtD
YXB0dXJlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTMwMjU4MzAxRENCQkQxRDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlRXZlbnQuY3Bw
ICovOyB9OwpAQCAtMzM2NCw2ICszMzY2LDEwIEBACiAJCTQxRkFGNUY0MUUzQzA2NDEwMDFBRTY3
OCAvKiBXZWJSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQUY1RjYxRTNDMEI0NzAwMUFFNjc4IC8q
IExpYldlYlJUQ1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExp
YldlYlJUQ1Jlc29sdmVyLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZBRjVGNzFFM0MwQjQ3MDAxQUU2
NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTGliV2ViUlRDUmVzb2x2ZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGli
V2ViUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgy
MTIwNkQ4N0Y2MDAwRjA3NDEgLyogVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkJFODIyMjA2REE3OUMw
MDBGMDc0MSAvKiBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIuaDsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQkU4MjMyMDZEQTc5QzAwMEYwNzQxIC8qIE5ldHdvcmtV
c2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
TmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkJFODI0MjA2REE3OUMwMDBGMDc0MSAvKiBOZXR3b3Jr
VXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ0NTBBRUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2Nv
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRNZW1vcnlD
b2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMw
MENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTM2NDYsNiArMzY1Miw3IEBACiAJCTUyRDVBMUIyMUM1NzQ5RjIwMERFMzRBMyAv
KiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTJENUExQjMxQzU3NDlGMjAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJENUExQjQxQzU3NDlG
MjAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MkYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogTmV0d29y
a1VzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4MkUxRENCQkQxRDAwREE4OUMyIC8qIE5l
dHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MzAyNTgyRjFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrQ2FwdHVyZVJlc291
cmNlLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3Vy
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4MzAxRENCQkQxRDAwREE4
OUMyIC8qIE5ldHdvcmtDYXB0dXJlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTmV0d29ya0NhcHR1cmVFdmVudC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTI5Myw2ICs1MzAwLDcgQEAKIAkJCQkxQTY0MjQ1QzEyREUyOUExMDBDQUFFMkMg
LyogVXBkYXRlSW5mby5oICovLAogCQkJCTVDMTlBNTFFMUZEMEIxNDYwMEVFQTMyMyAvKiBVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJNUMxOUE1MUYxRkQwQjE0NzAwRUVBMzIz
IC8qIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmggKi8sCisJCQkJNDFGQkU4MjEyMDZEODdGNjAw
MEYwNzQxIC8qIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCAqLywKIAkJCQkxQUMx
MzM2NTE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuY3BwICovLAogCQkJCTFBQzEzMzY2MTg1
NjVCNTcwMEYzRUMwNSAvKiBVc2VyRGF0YS5oICovLAogCQkJCTI2ODQwNTRBMThCODY2RkYwMDIy
QzM4QiAvKiBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcCAqLywKQEAgLTY0MTIsNiAr
NjQyMCw5IEBACiAJCQkJNUMwQjE3N0QxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRT
dHJlYW0uY3BwICovLAogCQkJCTVDMEIxNzdFMUU3Qzg4NjcwMEU5MTIzQyAvKiBOZXR3b3JrU29j
a2V0U3RyZWFtLmggKi8sCiAJCQkJNUMwQjE3N0YxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtT
b2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDFGQkU4MjQyMDZEQTc5QzAwMEYwNzQx
IC8qIE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwICovLAorCQkJCTQxRkJFODIyMjA2
REE3OUMwMDBGMDc0MSAvKiBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmggKi8sCisJCQkJ
NDFGQkU4MjMyMDZEQTc5QzAwMEYwNzQxIC8qIE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIu
bWVzc2FnZXMuaW4gKi8sCiAJCQkJNDYyMTA3RDcxRjM4REJEMzAwREQ3ODEwIC8qIFBpbmdMb2Fk
LmNwcCAqLywKIAkJCQk1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0UgLyogUGluZ0xvYWQuaCAqLywK
IAkJCQk4M0EwRUQzMzFGNzQ3Q0M3MDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suY3BwICovLApA
QCAtODQwMSw2ICs4NDEyLDcgQEAKIAkJCQk3Q0U0RDIyNjFBNDkxNkMyMDBDN0YxNTIgLyogV2Vi
UHJvY2Vzc1Bvb2xNZXNzYWdlcy5oICovLAogCQkJCUJDRUU3QUNDMTI4MTc5ODgwMDk4MjdEQSAv
KiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUJDRUU3QUNEMTI4
MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTUyRjA2
MEREMTY1NDMxNzUwMEYzMjgxQiAvKiBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVz
b3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxRjA2MERFMTY1NDMxNzUw
MEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggKi8sCiAJCQkJN0E3OTFFRjkx
QzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCkBAIC0xMTEwNSw2ICsxMTExNyw3IEBACiAJCQkJMzc2MDg4MUUxNTA0
MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTBBRkZCOTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyRjA2MEUxMTY1NDMxODUw
MEYzMjgxQiAvKiBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdBNzkxRUZDMUM3RDA4QzUwMEM0QzUyQiAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBRDE3NUYx
RUE2QUY5OTAwM0IwODk0IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTExMTc5LDYgKzExMTkyLDcgQEAKIAkJCQlCQzIwNEVFRTExQzgzRUM4MDA4RjMzNzUgLyog
V0tCdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM1RUVCOUUxMjc3NjFBQzAwMzMyMkI4
IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNUVF
QkEwMTI3NzYxQUMwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDFGQkU4MjYyMDZERjdGQTAwMEYwNzQxIC8qIE5ldHdvcmtVc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGQTJENzcxNTIxMkUy
NjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDQkI4MTIwMUFBMEY5NzAwMDZCMTk0MiAvKiBXS0J1bmRsZUZpbGVIYW5kbGVSZWYu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEMjVGMTgxMUQ2QkRFMTAwMTY5QjBFIC8qIFdLQnVu
ZGxlRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggZDc0OWQ4ZWRiZDVj
NWI5ZTM4NGZmYWNkYmI5ODI1YjFkMTA0NDY0NC4uYzk3M2NhODE3MDY2ODg0YmMzMjdmNzcxZWMy
MzBiYjhkZmZkYzAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNDU3LDYgKzQ1NywxMCBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgV2ViRnJhbWVM
b2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVu
dChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7CisgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2Vi
RnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51
bGxwdHI7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2Uo
KSA6IG51bGxwdHI7CisKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFy
YW1ldGVyczsKICAgICBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyID0gZ2VuZXJhdGVMb2FkSWRl
bnRpZmllcigpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwpAQCAtNDcz
LDE0ICs0NzcsOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKEZyYW1l
JiBmcmFtZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjbwogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKICAgICBsb2FkUGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwgPSBkb2N1
bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKTsKLQotICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRl
ciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IHBhZ2UgPSBmcmFtZS5wYWdlKCkpIHsKLSAgICAgICAgICAgIHBhZ2UtPnVzZXJDb250ZW50UHJv
dmlkZXIoKS5mb3JFYWNoQ29udGVudEV4dGVuc2lvbihbJmxvYWRQYXJhbWV0ZXJzXShjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uJiBj
b250ZW50RXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY29udGVu
dFJ1bGVMaXN0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRlbnRpZmllciwgc3RhdGljX2Nhc3Q8
Y29uc3QgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QmPihjb250ZW50RXh0ZW5zaW9uLmNvbXBp
bGVkRXh0ZW5zaW9uKCkpLmRhdGEoKSkpOwotICAgICAgICAgICAgfSwgKmRvY3VtZW50TG9hZGVy
KTsKLSAgICAgICAgfQotICAgIH0KKyAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBwYXNzaW5nIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIHdlIHNob3VsZCBqdXN0IHBhc3Mgd2ViUGFn
ZUlkIHRvIE5ldHdvcmtQcm9jZXNzLgorICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUucGFnZSgp
KQorICAgICAgICBsb2FkUGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
ID0gd2ViUGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcigpOwogI2VuZGlmCiAK
ICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCmluZGV4IDIyMzVhOGRmMDRkMWM0YmNhNmQzMGVmNTMwMDMyOTVkMWFlMDU5OGEuLmI5ZTU4
NTgzNWZlMzA4YTg1MGEzZDg1MjdkOGFlMGIyM2MwZmYzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIuY3BwCkBAIC01MCw5ICs1MCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcio+JiB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkKK3N0YXRpYyBI
YXNoTWFwPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcio+JiB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDx1aW50NjRfdCwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKj4+IHVz
ZXJDb250ZW50Q29udHJvbGxlcnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
Kj4+IHVzZXJDb250ZW50Q29udHJvbGxlcnM7CiAKICAgICByZXR1cm4gdXNlckNvbnRlbnRDb250
cm9sbGVyczsKIH0KQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIFdvcmxkTWFwJiB3b3JsZE1hcCgp
CiAgICAgcmV0dXJuIG1hcDsKIH0KIAotUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKQor
UmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpn
ZXRPckNyZWF0ZShVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
CiAgICAgYXV0byYgdXNlckNvbnRlbnRDb250cm9sbGVyUHRyID0gdXNlckNvbnRlbnRDb250cm9s
bGVycygpLmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYg
KHVzZXJDb250ZW50Q29udHJvbGxlclB0cikKQEAgLTc4LDE3ICs3OCwxNyBAQCBSZWY8V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRl
KHVpbnQ2NF90IGlkZQogICAgIHJldHVybiB1c2VyQ29udGVudENvbnRyb2xsZXIucmVsZWFzZU5v
bk51bGwoKTsKIH0KIAotV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXIodWludDY0X3QgaWRlbnRpZmllcikKK1dlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRo
aXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
aWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKHVzZXJDb250
ZW50Q29udHJvbGxlcnMoKS5jb250YWlucyhtX2lkZW50aWZpZXIpKTsKIAotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVu
dGlmaWVyLnRvVUludDY0KCkpOwogCiAgICAgdXNlckNvbnRlbnRDb250cm9sbGVycygpLnJlbW92
ZShtX2lkZW50aWZpZXIpOwogfQpAQCAtMjQyLDcgKzI0Miw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmICghd2ViUGFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFn
ZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNl
KHZhbHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkpOworICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2Vi
UGFnZS0+cGFnZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRh
UmVmZXJlbmNlKHZhbHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4g
bV9jb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IDliNzJkOTZj
OGJiYjc3OWMxYmViOWIxZjBhYWMyMTJjM2M5ZTQ1NTMuLmY1OGQyMWU4Y2RmYzZiZWQ5YzA0OWRk
MmRjMzBhZjk0OWQwOGFiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFByb3ZpZGVy
Lmg+CkBAIC00OSwxMCArNTAsMTAgQEAgY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvclByb3h5OwogCiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6VXNlckNvbnRlbnRQcm92aWRlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+
IGdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyPiBnZXRPckNyZWF0ZShVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKTsKIAotICAg
IHVpbnQ2NF90IGlkZW50aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0gCisgICAgVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CiAKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZCYsIFdlYkNvcmU6OlVzZXJTY3JpcHQmJik7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0
V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7
CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxp
Y2l0IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICBl
eHBsaWNpdCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcik7CiAKICAgICAvLyBXZWJDb3JlOjpVc2VyQ29udGVudFByb3ZpZGVyCiAgICAgdm9p
ZCBmb3JFYWNoVXNlclNjcmlwdChGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3Js
ZCYsIGNvbnN0IFdlYkNvcmU6OlVzZXJTY3JpcHQmKT4mJikgY29uc3QgZmluYWw7CkBAIC0xMTEs
NyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlckludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2Ny
aXB0TWVzc2FnZUhhbmRsZXJJZGVudGlmaWVyKTsKICNlbmRpZgogCi0gICAgdWludDY0X3QgbV9p
ZGVudGlmaWVyOworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkPiwgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgV2ViQ29yZTo6VXNlclNjcmlwdD4+PiBX
b3JsZFRvVXNlclNjcmlwdE1hcDsKICAgICBXb3JsZFRvVXNlclNjcmlwdE1hcCBtX3VzZXJTY3Jp
cHRzOwpAQCAtMTI2LDcgKzEyNyw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKICAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lv
bnNCYWNrZW5kIG1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQ7CiAjZW5kaWYKLQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggMjI1MWU3MTE5NWFmNGM2ZjNiZjFmMWM1NTMxZTdkODYwZTE2Nzc0ZS4uZmM0
OWU4YzUyM2ZhYTg3M2Q3ZGQyZjc1NjEyODJjMjExNGM4ODI4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUg
IlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViVVJM
U2NoZW1lSGFuZGxlci5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlj
dGlvbmFyeVBvcHVwSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5o
PgpAQCAtMTA2OCw2ICsxMDY5LDggQEAgcHVibGljOgogICAgIHZvaWQgb3BlbkdMRGlzcGxheU1h
c2tDaGFuZ2VkKHVpbnQzMl90IGRpc3BsYXlNYXNrKTsKICNlbmRpZgogCisgICAgVXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXItPmlkZW50aWZpZXIoKTsgfQor
CiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336987</attachid>
            <date>2018-04-02 09:38:44 -0700</date>
            <delta_ts>2018-04-02 10:04:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184205-20180402093843.patch</filename>
            <type>text/plain</type>
            <size>79005</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExMTlkN2JjZTY0ZDBhODI0
ZmNjMjAyMTYwOTU0YTZmZmFmYzI5MmEuLjJmNzQ4MGFlZmJlMjg0NDIyNTBhMzg5Yjk0NTc4Yjhj
ZmFkOTcwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDE4LTA0LTAyICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9jZXNz
IGdldCBDb250ZW50QmxvY2tlciBpbmZvcm1hdGlvbiBmcm9tIFVJUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MjA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBOZXR3b3JrUHJvY2Vz
cyBnZXQgY29udGVudCBibG9ja2VycyBmcm9tIFVJUHJvY2VzcyBkaXJlY3RseS4KKyAgICAgICAg
QmVmb3JlIHRoYXQgcGF0Y2gsIFdlYlByb2Nlc3Mgc2VudCBjb250ZW50IGJsb2NrZXJzIHRvIE5l
dHdvcmtQcm9jZXNzIGZvciBlYWNoIFBpbmdMb2FkLgorICAgICAgICBJbnN0ZWFkLCBXZWJQcm9j
ZXNzIHNlbmRzIHRoZSBjb250ZW50IGJsb2NrZXIgaWRlbnRpZmllciBmb3IgZWFjaCBQaW5nTG9h
ZCBhbmQgTmV0d29ya1Byb2Nlc3MgZmV0Y2hlcyB0aGUgY29udGVudCBibG9ja2VyIG9uY2UuCisK
KyAgICAgICAgVGhpcyBpcyBib3RoIG1vcmUgZWZmaWNpZW50IHRoYW4gcGFzc2luZyB0aGVtIGZv
ciBlYWNoIFBpbmdMb2FkIGFuZCBzYWZlciBpbiB0aGUgc2Vuc2UKKyAgICAgICAgdGhhdCBhIGNv
bXByb21pc2VkIFdlYlByb2Nlc3Mgd2lsbCBub3QgYmUgYWJsZSB0byBieXBhc3MgYW55IG9mIHRo
ZXNlLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCBOZXR3b3JrUHJvY2VzcyBzaG91bGQgZ2V0IHRo
ZSBjb250ZW50IGJsb2NrZXIgaWRlbnRpZmllciBkaXJlY3RseSBmcm9tIHRoZSBXZWJQYWdlSUQg
YXR0YWNoZWQgdG8gdGhlIHJlcXVlc3QuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBi
ZWFjb24rY29udGVudCBibG9ja2VyIHRlc3RzLgorCisgICAgICAgIERpZCBzb21lIHJlZmFjdG9y
aW5nIHRvIGFkZCBhIHR5cGVkIGNvbnRlbnQgYmxvY2tlciBpZGVudGlmaWVyLgorICAgICAgICBP
bmNlIE5ldHdvcmtQcm9jZXNzIGZldGNoZXMgYSBnaXZlbiBjb250ZW50IGJsb2NrZXIsIHRoZSBj
b250ZW50IGJsb2NrZXIgd2lsbCBzZW5kIGFueSBtb2RpZmljYXRpb24gdG8gTmV0d29ya1Byb2Nl
c3MuCisgICAgICAgIEludHJvZHVjZWQgTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlciB0byBo
YW5kbGUgdGhlIGNvbnRlbnQgYmxvY2tlcnMgaW4gTmV0d29ya1Byb2Nlc3MuCisKKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVz
Rm9yTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmg6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6c2V0Q29udGVudEV4dGVuc2lv
bkNvbnRyb2xsZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRlbnRDb250
cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtVc2VyQ29udGVudENv
bnRyb2xsZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZENvbnRlbnRSdWxlTGlzdHMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVDb250ZW50UnVs
ZUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjpy
ZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1VzZXJD
b250ZW50Q29udHJvbGxlcjo6cmVtb3ZlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VHcm91cERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VHcm91
cERhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9j
ZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpjb250ZW50
RXh0ZW5zaW9uUnVsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpk
aWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpnZXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29u
dGVudFdvcmxkVXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxV
c2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1l
c3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxl
TGlzdHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmFkZE5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNvbnRlbnRFeHRlbnNpb25SdWxl
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjppZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciBjb25zdCk6CisKIDIwMTgtMDQtMDIgIE1pY2hhZWwgQ2F0
YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIERyYWdBbmRE
cm9wSGFuZGxlci5jcHAgc2hvdWxkIGluY2x1ZGUgR1VuaXF1ZVB0ckd0ay5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAppbmRleCA2MGU5MmI3ZTczOTAzNGQ5YTc4ZDIzNTFiMjk4Mjc2ZDRlMDUxZDE2Li44N2Y0
YjUxZDg1NmZmZjRiMzdiNDVlNGZhNTExNmZmODg5NmVkYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
QEAgLTExOCw2ICsxMTgsNyBAQCBzZXQoV2ViS2l0X1NPVVJDRVMKICAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKKyAg
ICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAogICAgIE5l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcAogCkBAIC02MjIsNiArNjIzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxF
UwogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCiAgICAgTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCiAgICAgTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KIAogICAgIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDlkNjZjMGRmNmVjNzY0MmY0ZTAwYmM5
MzFmMTJlMTdjNjFlYWJmNGMuLmY4NzRhNjA5ODMxOTgwODE2ZWM2ZmU1NzY3NTU5NmJiMWNiNmNh
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTExNSw2ICsxMTUsNyBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKICAgICBOZXR3b3JrUlRDU29ja2V0IFwKICAgICBOZXR3b3JrUmVz
b3VyY2VMb2FkZXIgXAogICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0gXAorICAgIE5ldHdvcmtVc2Vy
Q29udGVudENvbnRyb2xsZXIgXAogICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSBcCiAgICAgUGx1
Z2luUHJvY2VzcyBcCiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGEx
NDVlODEzZmY0YWFkM2YxZjc1YmFiZWYyZGE5OGNiMjZjNmQ0NzIuLmQ1MWVkNmY4ZTFkMTAyYTMx
MmRmYWRiOGZhZmQxMGE1OWJjMTFkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTk1LDEyICs5NSwyMCBAQCBOZXR3
b3JrTG9hZENoZWNrZXI6OlJlcXVlc3RPckVycm9yIE5ldHdvcmtMb2FkQ2hlY2tlcjo6cmV0dXJu
RXJyb3IoU3RyaW5nJiYgZXJybwogdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIp
CiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBpZiAocHJvY2Vzc0NvbnRl
bnRFeHRlbnNpb25SdWxlc0ZvckxvYWQocmVxdWVzdCkuYmxvY2tlZExvYWQpIHsKLSAgICAgICAg
aGFuZGxlcihyZXR1cm5FcnJvcihBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYnkgY29udGVudCBleHRl
bnNpb24iKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIHByb2Nlc3NDb250ZW50RXh0
ZW5zaW9uUnVsZXNGb3JMb2FkKFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBoYW5kbGVyID0gV1RG
TW92ZShoYW5kbGVyKV0oYXV0byYmIHJlcXVlc3QsIGF1dG8gc3RhdHVzKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKHN0YXR1cy5ibG9ja2VkTG9hZCkgeworICAgICAgICAgICAgaGFuZGxlcih0aGlz
LT5yZXR1cm5FcnJvcihBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYnkgY29udGVudCBleHRlbnNpb24i
KSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMtPmNvbnRp
bnVlQ2hlY2tpbmdSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoaGFuZGxlcikpOwor
ICAgIH0pOworI2Vsc2UKKyAgICBjb250aW51ZUNoZWNraW5nUmVxdWVzdChXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKICNlbmRpZgorfQogCit2b2lkIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6Y29udGludWVDaGVja2luZ1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
VmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVyKQorewogICAgIGlmIChhdXRvKiBjb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgewogICAgICAgICBp
ZiAoaXNSZWRpcmVjdGVkKCkpIHsKICAgICAgICAgICAgIFVSTCB1cmwgPSByZXF1ZXN0LnVybCgp
OwpAQCAtMjI5LDIxICsyMzcsMTggQEAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBOZXR3b3JrTG9h
ZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQotQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25z
QmFja2VuZCYgTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoKQor
dm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JM
b2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2Vk
U3RhdHVzJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFtX2NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZCkgewotICAgICAgICBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4oKTsKLSAg
ICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9jb250ZW50UnVsZUxpc3RzKQotICAgICAgICAgICAg
bV9jb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQtPmFkZENvbnRlbnRFeHRlbnNpb24ocGFpci5maXJz
dCwgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKHBhaXIuc2Vjb25k
KSkpOworICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSB7CisgICAg
ICAgIENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzIHN0YXR1czsKKyAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZShyZXF1ZXN0KSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICByZXR1cm4gKm1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kOwotfQotCi1Db250ZW50RXh0
ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBOZXR3b3JrTG9hZENoZWNrZXI6OnByb2Nlc3NDb250ZW50
RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBh
dXRvIHN0YXR1cyA9IGNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCgpLnByb2Nlc3NDb250ZW50RXh0
ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZChyZXF1ZXN0LnVybCgpLCBtX21haW5Eb2N1bWVudFVSTCk7
Ci0gICAgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KHN0YXR1cywgbnVsbHB0ciwgcmVxdWVz
dCk7Ci0gICAgcmV0dXJuIHN0YXR1czsKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCku
bmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlcigpLmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCgq
bV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCB0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgYmFja2VuZCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8g
c3RhdHVzID0gYmFja2VuZC5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yUGluZ0xvYWQo
cmVxdWVzdC51cmwoKSwgbV9tYWluRG9jdW1lbnRVUkwpOworICAgICAgICBhcHBseUJsb2NrZWRT
dGF0dXNUb1JlcXVlc3Qoc3RhdHVzLCBudWxscHRyLCByZXF1ZXN0KTsKKyAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShyZXF1ZXN0KSwgc3RhdHVzKTsKKyAgICB9KTsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCBlY2ZiNWViNWJjYTc3YzI3ZTFkNGFjZDgy
YjhiOWM4YTI5ZWQ0NDIyLi4wMjkyOGU5OWYxMGVmMWMyMTIxYjEzMmU0YWY4YjQwMWRiNThhOTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hl
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVj
a2VyLmgKQEAgLTI1LDggKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmg+CisjaW5jbHVk
ZSAiTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250
ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgpAQCAtNDAsOSArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjsKIAotY2xhc3MgTmV0d29ya0xvYWRDaGVj
a2VyIHsKK2NsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdv
cmtMb2FkQ2hlY2tlcj4gewogcHVibGljOgotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihXZWJDb3Jl
OjpGZXRjaE9wdGlvbnM6Ok1vZGUsIGJvb2wgc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXAmJiwgV2ViQ29yZTo6VVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4mJik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrTG9hZENoZWNrZXI+IGNyZWF0ZShXZWJDb3Jl
OjpGZXRjaE9wdGlvbnM6Ok1vZGUgbW9kZSwgYm9vbCBzaG91bGRGb2xsb3dSZWRpcmVjdHMsIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiBvcmlnaW5h
bEhlYWRlcnMsIFdlYkNvcmU6OlVSTCYmIHVybCwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiYmIHNvdXJjZU9yaWdpbikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE5ldHdvcmtMb2FkQ2hlY2tlciB7IG1vZGUsIHNob3VsZEZvbGxvd1JlZGlyZWN0cywgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIHNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW5hbEhlYWRlcnMpLCBX
VEZNb3ZlKHVybCksIFdURk1vdmUoc291cmNlT3JpZ2luKSB9KTsKKyAgICB9CiAgICAgfk5ldHdv
cmtMb2FkQ2hlY2tlcigpOwogCiAgICAgdXNpbmcgUmVxdWVzdE9yRXJyb3IgPSBFeHBlY3RlZDxX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+OwpAQCAtNTIs
MTAgKzU3LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYmIGhlYWRlcnMpIHsg
bV9jc3BSZXNwb25zZUhlYWRlcnMgPSBXVEZNb3ZlKGhlYWRlcnMpOyB9CiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKLSAgICB2b2lkIHNldENvbnRlbnRFeHRlbnNpb25SdWxlTGlzdHMo
V2ViQ29yZTo6VVJMJiYgbWFpbkRvY3VtZW50VVJMLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4mJiBjb250ZW50UnVsZUxpc3RzKQorICAg
IHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoV2ViQ29yZTo6VVJMJiYgbWFpbkRv
Y3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+
IGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5Eb2N1bWVudFVSTCA9IFdURk1vdmUo
bWFpbkRvY3VtZW50VVJMKTsKLSAgICAgICAgbV9jb250ZW50UnVsZUxpc3RzID0gV1RGTW92ZShj
b250ZW50UnVsZUxpc3RzKTsKKyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyID0gaWRlbnRpZmllcjsKICAgICB9CiAjZW5kaWYKIApAQCAtNjMsMTIgKzY4LDE2IEBAIHB1
YmxpYzoKICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7IH0K
IAogcHJpdmF0ZToKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoV2ViQ29yZTo6RmV0Y2hPcHRpb25z
OjpNb2RlLCBib29sIHNob3VsZEZvbGxvd1JlZGlyZWN0cywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFdl
YkNvcmU6OlVSTCYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYpOworCiAgICAg
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3koKSBj
b25zdDsKICAgICBib29sIGlzQ2hlY2tpbmcoKSBjb25zdCB7IHJldHVybiAhIW1fY29yc1ByZWZs
aWdodENoZWNrZXI7IH0KICAgICBib29sIGlzUmVkaXJlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVkaXJlY3RDb3VudDsgfQogCiAgICAgdm9pZCBjaGVja1JlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFZhbGlkYXRpb25IYW5kbGVyJiYpOwogCisgICAgdm9pZCBjb250aW51ZUNo
ZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRs
ZXImJik7CisKICAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNrKGNvbnN0IFdlYkNvcmU6OlVS
TCYpIGNvbnN0OwogICAgIHZvaWQgY2hlY2tDT1JTUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBjaGVja0NPUlNSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXIm
Jik7CkBAIC03Nyw4ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgUmVxdWVzdE9yRXJyb3IgcmV0dXJu
RXJyb3IoU3RyaW5nJiYgZXJyb3IpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
LSAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5k
JiBjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoKTsKLSAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6QmxvY2tlZFN0YXR1cyBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyYpPiYmKTsKICNlbmRpZgogCiAgICAgV2ViQ29y
ZTo6RmV0Y2hPcHRpb25zOjpNb2RlIG1fbW9kZTsKQEAgLTkyLDE2ICsxMDAsMTQgQEAgcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycz4gbV9jc3BSZXNwb25zZUhlYWRlcnM7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKICAgICBXZWJDb3JlOjpVUkwgbV9tYWluRG9jdW1lbnRVUkw7Ci0gICAgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+IG1fY29u
dGVudFJ1bGVMaXN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6VXNlckNvbnRlbnRQcm92aWRlcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CiAj
ZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI+
IG1fY29yc1ByZWZsaWdodENoZWNrZXI7CiAgICAgYm9vbCBtX2lzU2FtZU9yaWdpblJlcXVlc3Qg
eyB0cnVlIH07CiAgICAgYm9vbCBtX2lzU2ltcGxlUmVxdWVzdCB7IHRydWUgfTsKICAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29u
dGVudFNlY3VyaXR5UG9saWN5OwotI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQ+IG1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kOwotI2VuZGlmCiAgICAgc2l6
ZV90IG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKICAgICBXZWJDb3JlOjpVUkwgbV9wcmV2aW91c1VS
TDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IDFjNTU4OGU3OTQzNDk4ZmE0MTk3NDRhODI5ZThiNzQ0NGYzODMwN2UuLmQ4ZGFm
MmU3MmNjMGM5ZDg0MWMxZjE4ZDU2MDU0OGVjYjIwZmE5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRl
ICJOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJQcmVj
b25uZWN0VGFzay5oIgogI2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKQEAgLTE3MSw2ICsxNzIsMTMgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKKyAgICAgICAgbV9uZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKICAgICBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKaW5kZXggZDhjZWE2OWRlODc2Mjk5MmFiMDI5NzRlNDVhNzg3MTg0NDBkNzVjZC4uYWJm
ZThhMmJmYTI3YzgwMWRjNjBjN2JhZTk3MmZjMjk0MDRjOTMxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgorI2luY2x1ZGUgIk5ldHdvcmtVc2VyQ29udGVu
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTE1
Nyw2ICsxNTgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5
QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCwgYm9vbCk7CiAgICAgYm9vbCBzZXNzaW9uSXNDb250
cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKIAorI2lmIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCisgICAgTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlciYgbmV0
d29ya1VzZXJDb250ZW50Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fbmV0d29ya1VzZXJDb250ZW50
Q29udHJvbGxlcjsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3MoKTsK
ICAgICB+TmV0d29ya1Byb2Nlc3MoKTsKQEAgLTI5MSw2ICsyOTYsMTAgQEAgcHJpdmF0ZToKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQorICAgIE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIgbV9uZXR3b3JrVXNlckNvbnRlbnRD
b250cm9sbGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAKaW5kZXggMDE3MmMzYjQxOWI4MWYxNWQzZjc4OWFkOGU4ZDZmM2Fm
OTg5MWQ1OC4uNDQwNzdkM2NlNWVmMWRkMGI1OTQwNGU1ZjllNmQ3NjcxNzAzMjJkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9j
dW1lbnRVUkw7Ci0gICAgZW5jb2RlciA8PCBjb250ZW50UnVsZUxpc3RzOworICAgIGVuY29kZXIg
PDwgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgogfQogCkBAIC0xODQs
MTEgKzE4NCwxMSBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVzb3VyYwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVSTCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29u
dGVudFJ1bGVMaXN0RGF0YT4+PiBjb250ZW50UnVsZUxpc3RzOwotICAgIGRlY29kZXIgPj4gY29u
dGVudFJ1bGVMaXN0czsKLSAgICBpZiAoIWNvbnRlbnRSdWxlTGlzdHMpCisgICAgc3RkOjpvcHRp
b25hbDxzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+PiB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcjsKKyAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQuY29udGVudFJ1bGVMaXN0
cyA9IFdURk1vdmUoKmNvbnRlbnRSdWxlTGlzdHMpOworICAgIHJlc3VsdC51c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAj
ZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDc3
ZGU4NTU1M2VkZjRjOThjYmE3YzQ2NzNmYjZlM2I3MTBkNGUzYmEuLjJjYzMzYWNlOWJmMDA5MjMx
OWFiYmU1NmNhZmJhMGI4MmQ1NTczMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNpbmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGEuaCIKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVu
dFVSTDsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVs
ZUxpc3REYXRhPj4gY29udGVudFJ1bGVMaXN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzYWMx
NzljODA2NmE0YTc5NDM4OTlhNzk4OWRkZjdjYjk1NzY0MGEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjpOZXR3b3JrVXNlckNv
bnRlbnRDb250cm9sbGVyKCkgPSBkZWZhdWx0OworTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxl
cjo6fk5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgTmV0
d29ya1VzZXJDb250ZW50Q29udHJvbGxlcjo6Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kKFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQmFja2VuZENhbGxiYWNrJiYg
Y2FsbGJhY2spCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fY29udGVudEV4dGVuc2lvbkJhY2tl
bmRzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yICE9IG1fY29udGVudEV4dGVu
c2lvbkJhY2tlbmRzLmVuZCgpKSB7CisgICAgICAgIGNhbGxiYWNrKCppdGVyYXRvci0+dmFsdWUp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcGVuZGluZ0NhbGxiYWNrcy5lbnN1cmUo
aWRlbnRpZmllciwgW10geworICAgICAgICByZXR1cm4gVmVjdG9yPEJhY2tlbmRDYWxsYmFjaz4g
eyB9OworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwor
ICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpDb250ZW50RXh0ZW5zaW9uUnVs
ZXMgeyBpZGVudGlmaWVyIH0sIDApOworfQorCit2b2lkIE5ldHdvcmtVc2VyQ29udGVudENvbnRy
b2xsZXI6OmFkZENvbnRlbnRSdWxlTGlzdHMoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhPj4mIGNvbnRlbnRSdWxlTGlzdHMpCit7CisgICAgYXV0byYgYmFj
a2VuZCA9ICptX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5lbnN1cmUoaWRlbnRpZmllciwgW10g
eworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPigpOworICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKKworICAgIGZvciAoY29uc3QgYXV0byYgY29udGVudFJ1bGVMaXN0IDogY29udGVudFJ1bGVM
aXN0cykgeworICAgICAgICBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEgY29udGVudFJ1
bGVMaXN0RGF0YSA9IGNvbnRlbnRSdWxlTGlzdC5zZWNvbmQ7CisgICAgICAgIGF1dG8gY29tcGls
ZWRDb250ZW50UnVsZUxpc3QgPSBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6Y3JlYXRlKFdU
Rk1vdmUoY29udGVudFJ1bGVMaXN0RGF0YSkpOworICAgICAgICBiYWNrZW5kLmFkZENvbnRlbnRF
eHRlbnNpb24oY29udGVudFJ1bGVMaXN0LmZpcnN0LCBXVEZNb3ZlKGNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0KSk7CisgICAgfQorCisgICAgYXV0byBwZW5kaW5nQ2FsbGJhY2tzID0gbV9wZW5kaW5n
Q2FsbGJhY2tzLnRha2UoaWRlbnRpZmllcik7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHBl
bmRpbmdDYWxsYmFja3MpCisgICAgICAgIGNhbGxiYWNrKGJhY2tlbmQpOworCit9CisKK3ZvaWQg
TmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5maW5k
KGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2NvbnRlbnRFeHRlbnNpb25CYWNr
ZW5kcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXRlcmF0b3ItPnZhbHVlLT5yZW1v
dmVDb250ZW50RXh0ZW5zaW9uKG5hbWUpOworfQorCit2b2lkIE5ldHdvcmtVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NvbnRlbnRF
eHRlbnNpb25CYWNrZW5kcy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBt
X2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aXRlcmF0b3ItPnZhbHVlLT5yZW1vdmVBbGxDb250ZW50RXh0ZW5zaW9ucygpOworfQorCit2b2lk
IE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZShVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgbV9jb250ZW50RXh0ZW5zaW9uQmFja2Vu
ZHMucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ5Mjg2MDUzY2MyOTNlMzYyMDEzZmVlYjk0MjQ4ZDkzYWJlMjQ3ZTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtVc2VyQ29u
dGVudENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFByb3ZpZGVyLmg+CisKK25hbWVz
cGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyIHsKK3B1
YmxpYzoKKyAgICBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyKCk7CisgICAgfk5ldHdvcmtV
c2VyQ29udGVudENvbnRyb2xsZXIoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICB1c2luZyBCYWNrZW5kQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmKT47CisgICAgdm9pZCBjb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgQmFja2VuZENhbGxiYWNrJiYp
OworCitwcml2YXRlOgorICAgIHZvaWQgYWRkQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29t
cGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4mKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRlbnRSdWxl
TGlzdChVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUp
OworICAgIHZvaWQgcmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZShVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyKTsKKworICAgIEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQ+PiBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kczsKKyAgICBIYXNoTWFwPFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFZlY3RvcjxCYWNrZW5kQ2FsbGJhY2s+PiBt
X3BlbmRpbmdDYWxsYmFja3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xs
ZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMyODdhZWYyZjJkZTViYWMwZmMxZGFlZmFhNmUz
YmY0ODcyZThiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMy
IEBACisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQorCittZXNzYWdlcyAtPiBOZXR3b3JrVXNlckNvbnRlbnRDb250
cm9sbGVyIHsKKyAgICBSZW1vdmUoV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCisgICAgQWRkQ29udGVudFJ1bGVMaXN0cyhXZWJLaXQ6OlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gY29udGVudEZpbHRl
cnMpCisgICAgUmVtb3ZlQ29udGVudFJ1bGVMaXN0KFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbmFtZSkKKyAgICBSZW1vdmVBbGxDb250
ZW50UnVsZUxpc3RzKFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVu
dGlmaWVyKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKaW5kZXggYmM0ODk0MzY4OGQ1MDY3MzkxMWYxYWFkZTBhOGM3NzM3NmQyNGFkNS4uMjVm
OTYzYTIwMWNhMjFiOWRhYTY3MzkxZWRjZmI3OGMzNzEwYzlhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBQaW5nTG9hZDo6
UGluZ0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBIVFRQ
SGVhZGVyTWFwJiYgbwogICAgIDogbV9wYXJhbWV0ZXJzKFdURk1vdmUocGFyYW1ldGVycykpCiAg
ICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAg
ICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZQaW5nTG9hZDo6dGltZW91dFRpbWVyRmlyZWQpCi0g
ICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tl
cj4obV9wYXJhbWV0ZXJzLm1vZGUsIG1fcGFyYW1ldGVycy5zaG91bGRGb2xsb3dSZWRpcmVjdHMs
IG1fcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbV9wYXJhbWV0ZXJzLnNlc3Np
b25JRCwgV1RGTW92ZShvcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJMIHsgbV9wYXJhbWV0ZXJz
LnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCkpKQor
ICAgICwgbV9uZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya0xvYWRDaGVja2VyOjpjcmVhdGUobV9w
YXJhbWV0ZXJzLm1vZGUsIG1fcGFyYW1ldGVycy5zaG91bGRGb2xsb3dSZWRpcmVjdHMsIG1fcGFy
YW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwg
V1RGTW92ZShvcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVl
c3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCkpKQogewogCiAg
ICAgaWYgKG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgIG1fbmV0d29y
a0xvYWRDaGVja2VyLT5zZXRDU1BSZXNwb25zZUhlYWRlcnMoV1RGTW92ZShtX3BhcmFtZXRlcnMu
Y3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkpKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQotICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDb250ZW50RXh0ZW5zaW9uUnVsZUxp
c3RzKFdURk1vdmUobV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCksIFdURk1vdmUobV9wYXJh
bWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMpKTsKKyAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0
Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoV1RGTW92ZShtX3BhcmFtZXRlcnMubWFpbkRvY3Vt
ZW50VVJMKSwgbV9wYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOwog
I2VuZGlmCiAKICAgICAvLyBJZiB0aGUgc2VydmVyIG5ldmVyIHJlc3BvbmRzLCB0aGlzIG9iamVj
dCB3aWxsIGhhbmcgYXJvdW5kIGZvcmV2ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmgKaW5kZXggNzRhNjk4NTc3NmE5ZmI1YTdmNTkxNWJkZTg0NjU0NWMwM2ZhYmM4MC4u
YTFlZjZlNzMxN2ZlNTVmNmM1ZGNmNTNhYzc1NTNhOWNiMDdjOTZhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAg
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiBtX2NvbXBsZXRpb25IYW5kbGVy
OwogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+IG1fdGFzazsKICAgICBXZWJDb3JlOjpUaW1l
ciBtX3RpbWVvdXRUaW1lcjsKLSAgICBVbmlxdWVSZWY8TmV0d29ya0xvYWRDaGVja2VyPiBtX25l
dHdvcmtMb2FkQ2hlY2tlcjsKKyAgICBSZWY8TmV0d29ya0xvYWRDaGVja2VyPiBtX25ldHdvcmtM
b2FkQ2hlY2tlcjsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4g
bV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKaW5kZXggMjdmMDVjN2IzODE1YmY1MWM2OTM0NGUxYTY2ZGU1N2YwMDAw
ZTc1ZC4uYjdhNGM5NjVjNzkwMTE1MDliYjU1MjU3NmZkNTA1MGM2NjQ1MzhjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0xODUsNiArMTg1LDcgQEAgZGVm
IGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKHJlY2VpdmVyKToKICAgICAgICAgICAg
IHR5cGVzX2J5X25hbWVzcGFjZVsnSVBDJ10udXBkYXRlKFsoJ2NsYXNzJywgJ0Nvbm5lY3Rpb24n
KV0pCiAKICAgICBub19mb3J3YXJkX2RlY2xhcmF0aW9uX3R5cGVzID0gZnJvemVuc2V0KFsKKyAg
ICAgICAgJ1N0cmluZycsCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXInLApAQCAtMTkyLDcgKzE5Myw3IEBAIGRl
ZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICdX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXInLAotICAgICAgICAnU3RyaW5nJywKKyAg
ICAgICAgJ1dlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcicsCiAgICAgXSkK
IAogICAgIGZvciBwYXJhbWV0ZXIgaW4gcmVjZWl2ZXIuaXRlcnBhcmFtZXRlcnMoKToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lYjNmYjQzZjk0MDEwODdmODBjMGJjZjc0MGI2ZWI5ZTQ4MGEwNGI0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitlbnVtIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBlIHsgfTsK
K3VzaW5nIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA3MDg5
ZGE4YjJhODZkZmRlZjg3NWI5ODgwYjZmNGZhYjAzYTcyZGE5Li44NjcxNTliNjhmNDAyZjI5YWVk
ZGI3ZjMyOWU3ODAwOWZmMTlhNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTc5LDggKzE3OSwxMyBAQCBzdGQ6Om9w
dGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZShJUEM6OgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5oaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlEKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQpKQorCisgICAgc3RkOjpvcHRpb25hbDxV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyOworICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsK
KyAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJRCA9
ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnZpc2l0ZWRMaW5rVGFibGVJRCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLndlYnNpdGVEYXRh
U3RvcmVJRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKaW5kZXggNmJkMTk2MWYzYzRkNDUwMDRkZGRmZDYyMDFjNjgyN2Q5N2U5MDQwMi4u
YmFlYmFmNGQ0MTAwODk2NWE1NmY0YzFjM2YyMWFjZTg3M2VhNDMyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtOTgsNyArOTgs
NyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEOwogICAgIHVpbnQ2NF90IGhpZ2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQ7
CiAKLSAgICB1aW50NjRfdCB1c2VyQ29udGVudENvbnRyb2xsZXJJRDsKKyAgICBVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklEOwogICAgIHVpbnQ2
NF90IHZpc2l0ZWRMaW5rVGFibGVJRDsKICAgICB1aW50NjRfdCB3ZWJzaXRlRGF0YVN0b3JlSUQ7
CiAgICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCmluZGV4IDI3NTAwN2FmNzE1YjI1ZmE3YjJkNmQ5
ZDcwNWZlNzUzMjk1OWU1NTEuLmFiZGE3ZDVlNWM2NGUwMTU0YWQzNTY5OTY3YWU4NzZmNmY2OWRj
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCkBAIC01Mywx
MCArNTMsMTEgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBE
YXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIGJvb2wgdmlzaWJsZVRvSGlz
dG9yeUNsaWVudDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZpc2libGVUb0hpc3RvcnlDbGll
bnQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHVpbnQ2NF90IHVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSkKKyAgICBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7Cisg
ICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIGlmICgh
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICByZXR1cm4geyB7IGlkLCBwYWdlR3JvdXBJRCwgdmlzaWJsZVRvSW5qZWN0ZWRC
dW5kbGUsIHZpc2libGVUb0hpc3RvcnlDbGllbnQsIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIgfSB9OworICAgIHJldHVybiB7IHsgaWQsIHBhZ2VHcm91cElELCB2aXNpYmxlVG9Jbmpl
Y3RlZEJ1bmRsZSwgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCwgKnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgfSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaAppbmRleCAyYzYxZTU5N2I2NTZjZDhiODI3NmQyMGM0
NmU4NDFjOTlmODBiNWIwLi45MzBkOGVlOThhZWU2ZTI2NzE1MWQxNjZkOTgwMTkyNDkyYjAzOWIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKQEAgLTQzLDcgKzQ0LDcgQEAgc3RydWN0IFdlYlBhZ2VHcm91cERhdGEgewogICAgIGJv
b2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7CiAgICAgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xp
ZW50OwogCi0gICAgdWludDY0X3QgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAg
ICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDYxMzg5M2U0MzBiYmJjOWVkNzAzNGFlYjE0ZmM1OGRjNWUyOGVmYmMuLjM0MWU2NzdhZTQ2YzNl
ODI4YWFjZTNiOTg5MzJlODY2ZTM3YjA4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHku
aCIKIAorI2luY2x1ZGUgIkFQSUNvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMu
aCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQpAQCAtMzQsMTEg
KzM1LDE0IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzc01lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KIApAQCAtODUsNiArODksOCBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp+
TmV0d29ya1Byb2Nlc3NQcm94eSgpCiAgICAgQVNTRVJUKG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURh
dGFDYWxsYmFja3MuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wZW5kaW5nRGVsZXRlV2Vic2l0
ZURhdGFDYWxsYmFja3MuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmlzRW1wdHkoKSk7CisgICAgZm9yIChhdXRvKiBw
cm94eSA6IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcykKKyAgICAgICAgcHJveHkt
PnJlbW92ZU5ldHdvcmtQcm9jZXNzKCp0aGlzKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1
bmNoT3B0aW9ucykKQEAgLTU0MCw0ICs1NDYsMzAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAg
IH0KIH0KIAorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKK3ZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6Y29udGVudEV4dGVuc2lvblJ1bGVzKFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogd2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Z2V0KGlkZW50aWZp
ZXIpKSB7CisgICAgICAgIGlmIChtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMuY29u
dGFpbnMod2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMuYWRkKHdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KTsKKyAgICAgICAgd2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHktPmFkZE5ldHdvcmtQcm9jZXNzKCp0aGlzKTsKKworICAgICAgICBhdXRvIHJ1bGVzID0g
V1RGOjptYXAod2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmNvbnRlbnRFeHRlbnNpb25S
dWxlcygpLCBbXShhdXRvJiYga2V5VmFsdWUpIC0+IHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0RGF0YT4geworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKGtleVZhbHVlLnZhbHVlLT5uYW1lKCksIGtleVZhbHVlLnZhbHVlLT5jb21waWxlZFJ1bGVM
aXN0KCkuZGF0YSgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMgeyBpZGVudGlmaWVy
LCBydWxlcyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50UnVsZUxpc3RzIHsgaWRl
bnRpZmllciwgeyB9IH0sIDApOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZERl
c3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eSYgcHJveHkpCit7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1VzZXJDb250ZW50
Q29udHJvbGxlcjo6UmVtb3ZlIHsgcHJveHkuaWRlbnRpZmllcigpIH0sIDApOworICAgIG1fd2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcy5yZW1vdmUoJnByb3h5KTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZmZmYjQxNGY5NjUxNzlkMjYx
MGE2MTNlMmJlNmVlM2NkMzNlMTAyZS4uYzlkYzc5MmE5YjVlMDdjY2ZlMTA1MjlhN2UxOWFlNmFi
YTQ5MGQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQcm9jZXNz
TGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJv
Y2Vzc1Rocm90dGxlckNsaWVudC5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTU5LDYgKzYwLDcgQEAgY2xh
c3MgV2ViUHJvY2Vzc1Bvb2w7CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb247CiBl
bnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczsKK2NsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Owogc3RydWN0
IFdlYnNpdGVEYXRhOwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5IDogcHVibGljIENoaWxk
UHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQgewpAQCAtOTQsNiAr
OTYsMTAgQEAgcHVibGljOgogICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIHsgcmV0
dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKCkgeyBy
ZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
KyAgICB2b2lkIGRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eSYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29y
a1Byb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwogCkBAIC0xMzksNiArMTQ1LDEwIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8U3Ry
aW5nPiYmIGRvbWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgdm9pZCBjb250ZW50RXh0ZW5zaW9uUnVsZXMoVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CisjZW5kaWYKKwogICAgIC8vIFByb2Nlc3NM
YXVuY2hlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5j
aGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKIApAQCAtMTYxLDYg
KzE3MSwxMCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4+IG1fd3JpdGVCbG9iVG9GaWxlUGF0aENhbGxiYWNrTWFw
OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
IHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcDsKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYg
ZG9tYWlucyk+PiBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXA7CisKKyNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIEhhc2hTZXQ8V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkqPiBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXM7CisjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDYxMjZlYTVkODdkNjRhZGMyZThkNmVlYzI2MzgxZDBjZDhjNzI1ZTIuLjE4NGMyZmQ1
NDQxZjhkODcwNDM2ZDE1Yjc2YTRkMmRmZjYzNzI4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KQEAgLTQ3LDQgKzQ3LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94
eSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05J
TkcpCiAgICAgU3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQoYm9vbCB3YXNHcmFudGVkLCB1aW50
NjRfdCBjb250ZXh0SWQpCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNSZXN1bHQoVmVjdG9y
PFN0cmluZz4gZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKQorCisjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKKyAgICBDb250ZW50RXh0ZW5zaW9uUnVsZXMoV2ViS2l0OjpVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRleCA0MjMzYzhlNWNmZmM2NjIwMTMx
Y2RiYjgzYzAwMmRjYTU1NjM0MWJiLi4yNDhhMWQwNWZjZDJlYmQxMjU2YTFkNjNjNDUzZGEyODQ5
NDcyYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC0z
MSw2ICszMSw4IEBACiAjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5oIgogI2luY2x1ZGUgIkFQSVVz
ZXJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJOZXR3b3JrVXNlckNvbnRlbnRDb250cm9s
bGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIuaCIKQEAgLTQ2LDE4ICs0OCwzNSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3Rh
dGljIEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkqPiYgd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcygpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqPj4gcHJveGllczsKKyAg
ICByZXR1cm4gcHJveGllczsKK30KKworCitXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmdldChVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIHdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3hpZXMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisgICAgCiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQotICAgIDogbV91
c2VyU2NyaXB0cyhBUEk6OkFycmF5OjpjcmVhdGUoKSkKKyAgICA6IG1faWRlbnRpZmllcihnZW5l
cmF0ZU9iamVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllclR5cGU+
KCkpCisgICAgLCBtX3VzZXJTY3JpcHRzKEFQSTo6QXJyYXk6OmNyZWF0ZSgpKQogICAgICwgbV91
c2VyU3R5bGVTaGVldHMoQVBJOjpBcnJheTo6Y3JlYXRlKCkpCiB7CisgICAgd2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveGllcygpLmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOwogfQogCiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KCkKIHsKLSAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKSB7
Ci0gICAgICAgIHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmll
cigpKTsKKyAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkucmVtb3ZlKG1faWRl
bnRpZmllcik7CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAgICAg
ICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CiAgICAgICAgIHByb2Nlc3MtPmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eSgqdGhpcyk7CiAgICAgfQorICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fbmV0
d29ya1Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KCp0aGlzKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6YWRkUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTY1LDcgKzg0LDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkUHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHdlYlByb2Nlc3NQcm94eSwKICAgICBpZiAoIW1fcHJvY2Vzc2VzLmFkZCgmd2ViUHJvY2Vz
c1Byb3h5KS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQcm9jZXNzUHJv
eHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCksICp0aGlzKTsKKyAgICB3
ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9V
SW50NjQoKSwgKnRoaXMpOwogCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMudXNlckNvbnRlbnRXb3Js
ZHMuaXNFbXB0eSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHdvcmxkIDogbV91c2VyQ29udGVu
dFdvcmxkcykKQEAgLTk1LDcgKzExNCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiAgICAg
QVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5zKCZ3ZWJQcm9jZXNzUHJveHkpKTsKIAogICAgIG1f
cHJvY2Vzc2VzLnJlbW92ZSgmd2ViUHJvY2Vzc1Byb3h5KTsKLSAgICB3ZWJQcm9jZXNzUHJveHku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOworICAgIHdlYlByb2Nl
c3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNv
bnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQpAQCAtMTA2LDcgKzEy
NSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50
V29ybGRVc2UoQVBJOjpVc2VyQ29udGVudFdvcmxkCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Vz
ZXJDb250ZW50V29ybGRzLmFkZCgmd29ybGQpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRy
eSkgewogICAgICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQotICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpBZGRVc2VyQ29udGVudFdvcmxkcyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50
aWZpZXIoKSwgd29ybGQubmFtZSgpKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlckNv
bnRlbnRXb3JsZHMoeyBzdGQ6Om1ha2VfcGFpcih3b3JsZC5pZGVudGlmaWVyKCksIHdvcmxkLm5h
bWUoKSkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICB9CiB9CiAKQEAgLTEzMCw3
ICsxNDksNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2Vy
Q29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50VwogewogICAgIGlmIChzaG91bGRTZW5k
UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHNNZXNzYWdlKHdvcmxkLCBudW1iZXJPZlVzZXNUb1JlbW92
ZSkpIHsKICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSks
IGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHsgd29ybGQuaWRl
bnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgfQogfQogCkBAIC0x
NDMsNyArMTYyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
VXNlckNvbnRlbnRXb3JsZFVzZXMoSGFzaENvdW50ZWRTZXQ8UmUKICAgICB9CiAKICAgICBmb3Ig
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250
ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29u
dGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIH0K
IAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6
OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCkBAIC0xNTUsNyArMTc0LDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVz
ZXJTY3JpcHQpCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTY3Jp
cHQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVu
dGlmaWVyKCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSksIGlkZW50aWZpZXIoKSk7Cisg
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
QWRkVXNlclNjcmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRp
ZmllcigpLCB1c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVz
ZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQpAQCAtMTYzLDcgKzE4Miw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJ
OjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0CiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4g
d29ybGQgPSB1c2VyU2NyaXB0LnVzZXJDb250ZW50V29ybGQoKTsKIAogICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdCh3b3Js
ZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7
CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlVXNlclNjcmlwdCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50
aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIG1fdXNlclNjcmlwdHMt
PmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2VyU2NyaXB0KTsKIApAQCAtMTczLDcgKzE5Miw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJ
OjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQog
ewogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQWxsVXNlclNjcmlwdHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7
CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIHVuc2lnbmVkIHVzZXJTY3JpcHRzUmVtb3ZlZCA9IG1f
dXNlclNjcmlwdHMtPnJlbW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclNjcmlwdD4oWyZd
KGNvbnN0IGF1dG8mIHVzZXJTY3JpcHQpIHsKICAgICAgICAgcmV0dXJuICZ1c2VyU2NyaXB0LT51
c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkOwpAQCAtMTk0LDcgKzIxMyw3IEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkKICAgICAg
ICAgd29ybGRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQod29ybGRDb3VudFBhaXIua2V5LT5p
ZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3By
b2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRp
ZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5jbGVh
cigpOwogCkBAIC0yMTAsNyArMjI5LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6YWRkVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclMKICAgICBt
X3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTdHlsZVNoZWV0KTsKIAog
ICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNl
clN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVu
dGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRpZmll
cigpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpBZGRVc2VyU3R5bGVTaGVldHMoeyB7IHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIo
KSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQudXNlclN0eWxlU2hlZXQoKSB9
IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQm
IHVzZXJTdHlsZVNoZWV0KQpAQCAtMjE4LDcgKzIzNyw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQm
IHVzCiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5bGVTaGVl
dC51c2VyQ29udGVudFdvcmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2Vz
cyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVy
KCksIHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
VXNlclN0eWxlU2hlZXQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQuaWRlbnRp
ZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgbV91c2VyU3R5bGVTaGVl
dHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2VyU3R5bGVTaGVldCk7CiAKQEAgLTIyOCw3ICsy
NDcsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5
bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1cwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKEFQSTo6VXNlckNvbnRlbnRXb3Js
ZCYgd29ybGQpCiB7CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nl
c3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSks
IGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHsgd29ybGQuaWRlbnRp
ZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICB1bnNpZ25lZCB1c2Vy
U3R5bGVTaGVldHNSZW1vdmVkID0gbV91c2VyU3R5bGVTaGVldHMtPnJlbW92ZUFsbE9mVHlwZU1h
dGNoaW5nPEFQSTo6VXNlclN0eWxlU2hlZXQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVl
dCkgewogICAgICAgICByZXR1cm4gJnVzZXJTdHlsZVNoZWV0LT51c2VyQ29udGVudFdvcmxkKCkg
PT0gJndvcmxkOwpAQCAtMjQ5LDcgKzI2OCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCiAgICAgICAgIHdvcmxkSWRlbnRp
ZmllcnMudW5jaGVja2VkQXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigpKTsK
IAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkpOwor
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigp
LnRvVUludDY0KCkpOwogCiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCkuY2xlYXIo
KTsKIApAQCAtMjcwLDcgKzI4OSw3IEBAIGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlCiAgICAgbV9z
Y3JpcHRNZXNzYWdlSGFuZGxlcnMuYWRkKGhhbmRsZXIuaWRlbnRpZmllcigpLCAmaGFuZGxlcik7
CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFk
ZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB7IGhhbmRsZXIuaWRlbnRpZmllcigpLCB3b3Js
ZC0+aWRlbnRpZmllcigpLCBoYW5kbGVyLm5hbWUoKSB9IH0pLCBpZGVudGlmaWVyKCkpOworICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFk
ZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB7IGhhbmRsZXIuaWRlbnRpZmllcigpLCB3b3Js
ZC0+aWRlbnRpZmllcigpLCBoYW5kbGVyLm5hbWUoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yODAsNyArMjk5LDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVy
Rm9yTmFtZShjb25zdCBTdHJpbmcKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NjcmlwdE1lc3NhZ2VI
YW5kbGVycy5iZWdpbigpLCBlbmQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUoKSA9PSBuYW1lICYm
ICZpdC0+dmFsdWUtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQpIHsKICAgICAgICAgICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIod29ybGQuaWRlbnRpZmllcigpLCBpdC0+dmFs
dWUtPmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2Ny
aXB0TWVzc2FnZUhhbmRsZXIod29ybGQuaWRlbnRpZmllcigpLCBpdC0+dmFsdWUtPmlkZW50aWZp
ZXIoKSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgICAgICAgICAgbV9zY3JpcHRN
ZXNzYWdlSGFuZGxlcnMucmVtb3ZlKGl0KTsKIApAQCAtMjkzLDcgKzMxMiw3IEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5h
bWUoY29uc3QgU3RyaW5nCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7
CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1v
dmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBp
ZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB3b3Js
ZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIHVuc2ln
bmVkIG51bWJlclJlbW92ZWQgPSAwOwogICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92
ZUlmKFsmXShhdXRvJiBlbnRyeSkgewpAQCAtMzMwLDI0ICszNDksMzMgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkQ29udGVudFJ1bGVMaXN0KEFQSTo6Q29udGVudFJ1
bGVMaXN0JiBjb24KIAogICAgIGF1dG8gcGFpciA9IHN0ZDo6bWFrZV9wYWlyKGNvbnRlbnRSdWxl
TGlzdC5uYW1lKCksIGNvbnRlbnRSdWxlTGlzdC5jb21waWxlZFJ1bGVMaXN0KCkuZGF0YSgpKTsK
IAotICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRk
Q29udGVudFJ1bGVMaXN0cyh7IHBhaXIgfSksIGlkZW50aWZpZXIoKSk7CisgICAgZm9yIChhdXRv
KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyh7IHBhaXIgfSks
IGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1f
bmV0d29ya1Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1VzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIo
KSwgeyBwYWlyIH0gfSwgMCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgbV9j
b250ZW50UnVsZUxpc3RzLnJlbW92ZShuYW1lKTsKIAotICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0KG5hbWUpLCBp
ZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJl
bW92ZUNvbnRlbnRSdWxlTGlzdChuYW1lKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisg
ICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVD
b250ZW50UnVsZUxpc3QgeyBpZGVudGlmaWVyKCksIG5hbWUgfSwgMCk7CiB9CiAKIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQog
ewogICAgIG1fY29udGVudFJ1bGVMaXN0cy5jbGVhcigpOwogCi0gICAgZm9yIChXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3Rz
KCksIGlkZW50aWZpZXIoKSk7CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7
CisKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXI6OlJl
bW92ZUFsbENvbnRlbnRSdWxlTGlzdHMgeyBpZGVudGlmaWVyKCkgfSwgMCk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggMjMwZjYyM2Q5OGU0
NzgyOTUwMTEwZDk0OWY1MjU2NTYyMDBlM2I4NC4uYWIzZjI2MDJiMGMyM2Q3NjM5MDAyMDBhZmM2
Y2Y1YTc4ZmZjZjg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBA
IC0yNywxMSArMjcsMTEgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRl
ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KLSNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KQEAgLTU0LDIwICs1NCwyMyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eTsKIGNsYXNzIFdlYlBy
b2Nlc3NQcm94eTsKIGNsYXNzIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOwogc3RydWN0IEZyYW1l
SW5mb0RhdGE7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIAotY2xhc3MgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudENvbnRyb2xsZXI+LCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwdWJsaWMgSWRlbnRpZmllZDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eT4geworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudENvbnRyb2xsZXI+LCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBjcmVhdGUoKQogICAgIHsgCiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KTsKLSAgICB9IAot
ICAgIGV4cGxpY2l0IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCk7CisgICAgfQorICAg
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCk7CiAgICAgfldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KCk7CiAKKyAgICBzdGF0aWMgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkqIGdldChVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKwogICAgIHZvaWQgYWRk
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAg
ICAgdm9pZCByZW1vdmVQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogCkBAIC05MSwxMSArOTQs
MTcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6
OlVzZXJDb250ZW50V29ybGQmKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisg
ICAgdm9pZCBhZGROZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSkgeyBt
X25ldHdvcmtQcm9jZXNzZXMucmVtb3ZlKCZwcm94eSk7IH0KKyAgICB2b2lkIHJlbW92ZU5ldHdv
cmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5KSB7IG1fbmV0d29ya1Byb2Nlc3Nl
cy5hZGQoJnByb3h5KTsgfQorCiAgICAgdm9pZCBhZGRDb250ZW50UnVsZUxpc3QoQVBJOjpDb250
ZW50UnVsZUxpc3QmKTsKICAgICB2b2lkIHJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIHJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKTsKKyAgICBjb25zdCBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Pj4mIGNvbnRlbnRFeHRl
bnNpb25SdWxlcygpIHsgcmV0dXJuIG1fY29udGVudFJ1bGVMaXN0czsgfQogI2VuZGlmCiAKKyAg
ICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtMTA3LDEzICsxMTYsMTUgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6
OlVzZXJDb250ZW50V29ybGQ+PiYpOwogICAgIGJvb2wgc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250
ZW50V29ybGRzTWVzc2FnZShBUEk6OlVzZXJDb250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJP
ZlVzZXNUb1JlbW92ZSk7CiAKLSAgICBIYXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vz
c2VzOyAgICAKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKKyAgICBIYXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vzc2VzOwogICAgIFJlZjxB
UEk6OkFycmF5PiBtX3VzZXJTY3JpcHRzOwogICAgIFJlZjxBUEk6OkFycmF5PiBtX3VzZXJTdHls
ZVNoZWV0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXI+PiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVyczsKICAgICBIYXNoQ291bnRlZFNldDxSZWZQ
dHI8QVBJOjpVc2VyQ29udGVudFdvcmxkPj4gbV91c2VyQ29udGVudFdvcmxkczsKIAogI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgSGFzaFNldDxOZXR3b3JrUHJvY2Vzc1Byb3h5
Kj4gbV9uZXR3b3JrUHJvY2Vzc2VzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpD
b250ZW50UnVsZUxpc3Q+PiBtX2NvbnRlbnRSdWxlTGlzdHM7CiAjZW5kaWYKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZWNjYWMy
ZjFhOTY4NjZiN2NkOWFiNGExZDk4ZTg2MWM4NTE1MGJlLi42ZjRlMjE1NmQ0Yjk1OGQ0NWM1NjUx
ZTdmOTdiYTcyMjk2OTkwNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTk1OCw2ICs5NTgsNyBAQAogCQk0MUZBRjVGNTFFM0MwNjQ5
MDAxQUU2NzggLyogV2ViUlRDUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY0MUUzQzA2NDEwMDFBRTY3OCAvKiBXZWJSVENSZXNv
bHZlci5oICovOyB9OwogCQk0MUZBRjVGODFFM0MxMDIxMDAxQUU2NzggLyogTGliV2ViUlRDUmVz
b2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RkFGNUY2MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5oICovOyB9OwogCQk0
MUZBRjVGOTFFM0MxMDI1MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQUY1RjcxRTNDMEI0NzAw
MUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJNDFGQkU4MjYyMDZERjdG
QTAwMEYwNzQxIC8qIE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQkU4MjQyMDZEQTc5QzAwMEYw
NzQxIC8qIE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwICovOyB9OwogCQk0NDUwQUVD
MDFEQzNGQUU1MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1MEFFQkYxREMzRkFFNTAwOTk0M0Yy
IC8qIFNoYXJlZE1lbW9yeUNvY29hLmNwcCAqLzsgfTsKIAkJNDYwRjQ4OEYxRjk5NkY3MTAwQ0Y0
Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MEY0ODhEMUY5
OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTQ2MEY0ODkwMUY5OTZGNzEwMENGNEI4NyAvKiBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwpAQCAtMTE5Niw2ICsxMTk3LDcg
QEAKIAkJNTJENUExQjAxQzU3NDk1QTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJE
NUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICov
OyB9OwogCQk1MkQ1QTFCMTFDNTc0OTYyMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTJENUExQUMxQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
bSAqLzsgfTsKIAkJNTJENUExQjcxQzU3NEEwMjAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MkQ1QTFCNDFDNTc0OUYyMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSAqLzsg
fTsKKwkJNTJGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIE5ldHdvcmtVc2VyQ29udGVudENvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIE5ldHdvcmtVc2VyQ29u
dGVudENvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MzAyNTgzQjFEQ0JC
RDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgyRTFEQ0JCRDFEMDBEQTg5QzIg
LyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAgKi87IH07CiAJCTUzMDI1ODNDMURDQkJEMjIw
MERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgyRjFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0
d29ya0NhcHR1cmVSZXNvdXJjZS5oICovOyB9OwogCQk1MzAyNTgzRDFEQ0JCRDIyMDBEQTg5QzIg
LyogTmV0d29ya0NhcHR1cmVFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgzMDFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1
cmVFdmVudC5jcHAgKi87IH07CkBAIC0yMzQ1LDkgKzIzNDcsOSBAQAogCQkJZHN0UGF0aCA9IFBy
aXZhdGVIZWFkZXJzL2F0b21zOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE7CiAJCQlmaWxlcyA9
ICgKLQkJCQk5OUNBNjZDQTIwMzY2ODVEMDA3NEYzNUUgLyogRW50ZXJGdWxsc2NyZWVuLmpzIGlu
IENvcHkgV2ViRHJpdmVyIEF0b21zICovLAogCQkJCTk5Qjc1MEYyMUYzM0VENUIwMEMxQ0ZCNSAv
KiBFbGVtZW50QXR0cmlidXRlLmpzIGluIENvcHkgV2ViRHJpdmVyIEF0b21zICovLAogCQkJCTk5
Qjc1MEYzMUYzM0VENUIwMEMxQ0ZCNSAvKiBFbGVtZW50RGlzcGxheWVkLmpzIGluIENvcHkgV2Vi
RHJpdmVyIEF0b21zICovLAorCQkJCTk5Q0E2NkNBMjAzNjY4NUQwMDc0RjM1RSAvKiBFbnRlckZ1
bGxzY3JlZW4uanMgaW4gQ29weSBXZWJEcml2ZXIgQXRvbXMgKi8sCiAJCQkJOTlCNzUwRjQxRjMz
RUQ1QjAwQzFDRkI1IC8qIEZpbmROb2Rlcy5qcyBpbiBDb3B5IFdlYkRyaXZlciBBdG9tcyAqLywK
IAkJCQk5OUI3NTBGNTFGMzNFRDVCMDBDMUNGQjUgLyogRm9ybUVsZW1lbnRDbGVhci5qcyBpbiBD
b3B5IFdlYkRyaXZlciBBdG9tcyAqLywKIAkJCQk5OUI3NTBGNjFGMzNFRDVCMDBDMUNGQjUgLyog
Rm9ybVN1Ym1pdC5qcyBpbiBDb3B5IFdlYkRyaXZlciBBdG9tcyAqLywKQEAgLTMzNjQsNiArMzM2
NiwxMCBAQAogCQk0MUZBRjVGNDFFM0MwNjQxMDAxQUU2NzggLyogV2ViUlRDUmVzb2x2ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUlRDUmVzb2x2ZXIuaDsgcGF0aCA9
IE5ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRkFGNUY2MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENSZXNvbHZlci5oOyBwYXRo
ID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFGQUY1RjcxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1Jlc29s
dmVyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQkU4MjEyMDZEODdGNjAwMEYwNzQxIC8qIFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUZCRTgyMjIwNkRBNzlDMDAwRjA3NDEgLyogTmV0d29ya1VzZXJD
b250ZW50Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3
b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
VXNlckNvbnRlbnRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
RkJFODIzMjA2REE3OUMwMDBGMDc0MSAvKiBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE5ldHdvcmtVc2VyQ29udGVudENvbnRy
b2xsZXIubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRl
bnRDb250cm9sbGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUZCRTgyNDIwNkRBNzlDMDAwRjA3NDEgLyogTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrVXNlckNvbnRl
bnRDb250cm9sbGVyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtVc2VyQ29udGVu
dENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDUwQUVCRjFE
QzNGQUU1MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkTWVtb3J5Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZD
MDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjQ2LDYgKzM2NTIs
NyBAQAogCQk1MkQ1QTFCMjFDNTc0OUYyMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUIzMUM1NzQ5RjIwMERF
MzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUI0MUM1NzQ5RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTJGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1VzZXJDb250ZW50
Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUzMDI1ODJFMURDQkJEMUQwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtDYXB0dXJlUmVz
b3VyY2UuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJl
c291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4MkYxRENCQkQx
RDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzMDI1ODMwMURDQkJEMUQwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZUV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtDYXB0
dXJlRXZlbnQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVy
ZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyOTMsNiArNTMwMCw3
IEBACiAJCQkJMUE2NDI0NUMxMkRFMjlBMTAwQ0FBRTJDIC8qIFVwZGF0ZUluZm8uaCAqLywKIAkJ
CQk1QzE5QTUxRTFGRDBCMTQ2MDBFRUEzMjMgLyogVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuY3Bw
ICovLAogCQkJCTVDMTlBNTFGMUZEMEIxNDcwMEVFQTMyMyAvKiBVUkxTY2hlbWVUYXNrUGFyYW1l
dGVycy5oICovLAorCQkJCTQxRkJFODIxMjA2RDg3RjYwMDBGMDc0MSAvKiBVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJMUFDMTMzNjUxODU2NUI1NzAwRjNFQzA1IC8q
IFVzZXJEYXRhLmNwcCAqLywKIAkJCQkxQUMxMzM2NjE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRh
dGEuaCAqLywKIAkJCQkyNjg0MDU0QTE4Qjg2NkZGMDAyMkMzOEIgLyogVmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlSW5mby5jcHAgKi8sCkBAIC02NDEyLDYgKzY0MjAsOSBAQAogCQkJCTVDMEIxNzdE
MUU3Qzg4NjcwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtLmNwcCAqLywKIAkJCQk1QzBC
MTc3RTFFN0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5oICovLAogCQkJCTVD
MEIxNzdGMUU3Qzg4NjcwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmlu
ICovLAorCQkJCTQxRkJFODI0MjA2REE3OUMwMDBGMDc0MSAvKiBOZXR3b3JrVXNlckNvbnRlbnRD
b250cm9sbGVyLmNwcCAqLywKKwkJCQk0MUZCRTgyMjIwNkRBNzlDMDAwRjA3NDEgLyogTmV0d29y
a1VzZXJDb250ZW50Q29udHJvbGxlci5oICovLAorCQkJCTQxRkJFODIzMjA2REE3OUMwMDBGMDc0
MSAvKiBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluICovLAogCQkJCTQ2
MjEwN0Q3MUYzOERCRDMwMERENzgxMCAvKiBQaW5nTG9hZC5jcHAgKi8sCiAJCQkJNUNFODVCMUYx
Qzg4RTY0MzAwNzBCRkNFIC8qIFBpbmdMb2FkLmggKi8sCiAJCQkJODNBMEVEMzMxRjc0N0NDNzAw
MzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmNwcCAqLywKQEAgLTgyNzksNiArODI5MCw3IEBACiAJ
CQkJNTFGMDYwREQxNjU0MzE3NTAwRjMyODFEIC8qIE5ldHdvcmtSVENTb2NrZXRNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAogCQkJCTVDMEIxNzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29j
a2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1QzBCMTc3NTFFN0M4NzlDMDBF
OTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmggKi8sCisJCQkJNTJGMDYwREQx
NjU0MzE3NTAwRjMyODFCIC8qIE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAogCQkJCTFBMkQ4NDM3MTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1l
c3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUEyRDg0MzgxMjdGNjVE
NTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMuaCAqLywKIAkJCQlD
REEyOUEyNDFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCkBAIC0xMDY5Niw2ICsxMDcwOCw4IEBACiAJCQkJNUMyMENCOUQxQkIw
RENGQTAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1QzBCMTc4MTFFN0M4QzI2MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1QzBCMTc3ODFFN0M4ODBFMDBFOTEyM0MgLyogTmV0d29ya1NvY2tl
dFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUZCRTgyNjIw
NkRGN0ZBMDAwRjA3NDEgLyogTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MkYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogTmV0d29ya1VzZXJDb250
ZW50Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTMx
MjYxRTE0OEZGODJDMDBCQTJBMzkgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTJFQzUwMTQ4OTk4MDUwMDgxMEQ3MSAvKiBO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTJEODQ4QzEyN0Y2QTQ5MDAxRUI5NjIgLyogTlBJZGVudGlmaWVyRGF0YS5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBiMTRhNTgwMzI2YTAyZDZkMTg0MWE2ZDg4
YTRmODJjYjMxOTQ2MzI0Li5jNGFlMmMxZGYxYzkzODc0ZTE0YzE3YjgzMjM0YWNmM2ExODk3NmE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCkBAIC00NTYsNiArNDU2LDEwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCog
d2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lLmxvYWRl
cigpLmNsaWVudCgpKTsKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNs
aWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsK
KwogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAg
IGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAg
ICAgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7CkBAIC00NzIsMTQgKzQ3Niw5IEBA
IHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQogICAgIGxvYWRQYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50b3BEb2N1
bWVudCgpLnVybCgpOwotCi0gICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1l
LnBhZ2UoKSkgewotICAgICAgICAgICAgcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVh
Y2hDb250ZW50RXh0ZW5zaW9uKFsmbG9hZFBhcmFtZXRlcnNdKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb24mIGNvbnRlbnRFeHRlbnNp
b24pIHsKLSAgICAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50UnVsZUxpc3RzLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihpZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdCY+KGNvbnRlbnRFeHRlbnNpb24uY29tcGlsZWRFeHRlbnNpb24o
KSkuZGF0YSgpKSk7Ci0gICAgICAgICAgICB9LCAqZG9jdW1lbnRMb2FkZXIpOwotICAgICAgICB9
Ci0gICAgfQorICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHBhc3NpbmcgdXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciwgd2Ugc2hvdWxkIGp1c3QgcGFzcyB3ZWJQYWdlSWQgdG8gTmV0d29y
a1Byb2Nlc3MuCisgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS5wYWdlKCkpCisgICAgICAgIGxv
YWRQYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgPSB3ZWJQYWdlLT51
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCk7CiAjZW5kaWYKIAogICAgIGlmIChjb21w
bGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggMjIz
NWE4ZGYwNGQxYzRiY2E2ZDMwZWY1MzAwMzI5NWQxYWUwNTk4YS4uYjllNTg1ODM1ZmUzMDhhODUw
YTNkODUyN2Q4YWUwYjIzYzBmZjM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHAKQEAgLTUwLDkgKzUwLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1zdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyKj4mIHVzZXJDb250ZW50Q29udHJvbGxlcnMoKQorc3RhdGljIEhhc2hNYXA8VXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKj4mIHVz
ZXJDb250ZW50Q29udHJvbGxlcnMoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
TWFwPHVpbnQ2NF90LCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIqPj4gdXNlckNvbnRlbnRDb250
cm9sbGVyczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyLCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIqPj4gdXNlckNvbnRl
bnRDb250cm9sbGVyczsKIAogICAgIHJldHVybiB1c2VyQ29udGVudENvbnRyb2xsZXJzOwogfQpA
QCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgV29ybGRNYXAmIHdvcmxkTWFwKCkKICAgICByZXR1cm4g
bWFwOwogfQogCi1SZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpCitSZWY8V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBhdXRvJiB1
c2VyQ29udGVudENvbnRyb2xsZXJQdHIgPSB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkuYWRkKGlk
ZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAodXNlckNvbnRlbnRD
b250cm9sbGVyUHRyKQpAQCAtNzgsMTcgKzc4LDE3IEBAIFJlZjxXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUodWludDY0X3QgaWRl
CiAgICAgcmV0dXJuIHVzZXJDb250ZW50Q29udHJvbGxlci5yZWxlYXNlTm9uTnVsbCgpOwogfQog
Ci1XZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcih1aW50
NjRfdCBpZGVudGlmaWVyKQorV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKQog
ICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCksICp0aGlzKTsKIH0KIAogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjp+V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyKCkKIHsKICAgICBBU1NFUlQodXNlckNvbnRlbnRDb250cm9sbGVy
cygpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50
NjQoKSk7CiAKICAgICB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkucmVtb3ZlKG1faWRlbnRpZmll
cik7CiB9CkBAIC0yNDIsNyArMjQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCF3ZWJQYWdl
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT5wYWdlSUQoKSwgd2ViRnJh
bWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UodmFsdWUtPmRhdGEo
KSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT5wYWdlSUQo
KSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UodmFs
dWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAg
ICB9CiAKICAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5kZXggOWI3MmQ5NmM4YmJiNzc5YzFiZWI5
YjFmMGFhYzIxMmMzYzllNDU1My4uZjU4ZDIxZThjZGZjNmJlZDljMDQ5ZGQyZGMzMGFmOTQ5ZDA4
YWJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtMjYsNiArMjYsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXIuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlw
ZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50UHJvdmlkZXIuaD4KQEAgLTQ5LDEw
ICs1MCwxMCBAQCBjbGFzcyBXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHk7CiAK
IGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpV
c2VyQ29udGVudFByb3ZpZGVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gZ2V0T3JDcmVhdGUo
dWludDY0X3QgaWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI+IGdldE9yQ3JlYXRlKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOwogICAg
IHZpcnR1YWwgfldlYlVzZXJDb250ZW50Q29udHJvbGxlcigpOwogCi0gICAgdWludDY0X3QgaWRl
bnRpZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfSAKKyAgICBVc2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAog
ICAgIHZvaWQgYWRkVXNlclNjcmlwdChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgV2ViQ29y
ZTo6VXNlclNjcmlwdCYmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRXaXRoVVJMKEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKQEAgLTcxLDcgKzcy
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOworICAgIGV4cGxpY2l0IFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcihVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKIAog
ICAgIC8vIFdlYkNvcmU6OlVzZXJDb250ZW50UHJvdmlkZXIKICAgICB2b2lkIGZvckVhY2hVc2Vy
U2NyaXB0KEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJiwgY29uc3QgV2Vi
Q29yZTo6VXNlclNjcmlwdCYpPiYmKSBjb25zdCBmaW5hbDsKQEAgLTExMSw3ICsxMTIsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVySW50ZXJuYWwo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcklkZW50aWZpZXIpOwogI2VuZGlmCiAKLSAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7Cisg
ICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKICAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+LCBWZWN0b3I8
c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4+IFdvcmxkVG9Vc2VyU2Ny
aXB0TWFwOwogICAgIFdvcmxkVG9Vc2VyU2NyaXB0TWFwIG1fdXNlclNjcmlwdHM7CkBAIC0xMjYs
NyArMTI3LDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAg
IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgbV9j
b250ZW50RXh0ZW5zaW9uQmFja2VuZDsKICNlbmRpZgotCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA1
Y2IwOTEyOWE1ZjY5MGJkNmNiNzYyZjBhMWFmZGM5ZDg2NTUyOWU1Li4zOGU5MTBhYjA1M2M2NGVi
YzJlOGQzNjZlY2VjOGFiM2I1ODQ4NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5
LmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVy
LmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0aW9uYXJ5UG9wdXBJ
bmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CkBAIC0xMDY5LDYg
KzEwNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBvcGVuR0xEaXNwbGF5TWFza0NoYW5nZWQodWlu
dDMyX3QgZGlzcGxheU1hc2spOwogI2VuZGlmCiAKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+aWRlbnRpZmllcigpOyB9CisKIHByaXZhdGU6CiAg
ICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336991</attachid>
            <date>2018-04-02 10:04:34 -0700</date>
            <delta_ts>2018-04-02 13:37:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184205-20180402100433.patch</filename>
            <type>text/plain</type>
            <size>79491</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExMTlkN2JjZTY0ZDBhODI0
ZmNjMjAyMTYwOTU0YTZmZmFmYzI5MmEuLjJmNzQ4MGFlZmJlMjg0NDIyNTBhMzg5Yjk0NTc4Yjhj
ZmFkOTcwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDE4LTA0LTAyICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9jZXNz
IGdldCBDb250ZW50QmxvY2tlciBpbmZvcm1hdGlvbiBmcm9tIFVJUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MjA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBOZXR3b3JrUHJvY2Vz
cyBnZXQgY29udGVudCBibG9ja2VycyBmcm9tIFVJUHJvY2VzcyBkaXJlY3RseS4KKyAgICAgICAg
QmVmb3JlIHRoYXQgcGF0Y2gsIFdlYlByb2Nlc3Mgc2VudCBjb250ZW50IGJsb2NrZXJzIHRvIE5l
dHdvcmtQcm9jZXNzIGZvciBlYWNoIFBpbmdMb2FkLgorICAgICAgICBJbnN0ZWFkLCBXZWJQcm9j
ZXNzIHNlbmRzIHRoZSBjb250ZW50IGJsb2NrZXIgaWRlbnRpZmllciBmb3IgZWFjaCBQaW5nTG9h
ZCBhbmQgTmV0d29ya1Byb2Nlc3MgZmV0Y2hlcyB0aGUgY29udGVudCBibG9ja2VyIG9uY2UuCisK
KyAgICAgICAgVGhpcyBpcyBib3RoIG1vcmUgZWZmaWNpZW50IHRoYW4gcGFzc2luZyB0aGVtIGZv
ciBlYWNoIFBpbmdMb2FkIGFuZCBzYWZlciBpbiB0aGUgc2Vuc2UKKyAgICAgICAgdGhhdCBhIGNv
bXByb21pc2VkIFdlYlByb2Nlc3Mgd2lsbCBub3QgYmUgYWJsZSB0byBieXBhc3MgYW55IG9mIHRo
ZXNlLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCBOZXR3b3JrUHJvY2VzcyBzaG91bGQgZ2V0IHRo
ZSBjb250ZW50IGJsb2NrZXIgaWRlbnRpZmllciBkaXJlY3RseSBmcm9tIHRoZSBXZWJQYWdlSUQg
YXR0YWNoZWQgdG8gdGhlIHJlcXVlc3QuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBi
ZWFjb24rY29udGVudCBibG9ja2VyIHRlc3RzLgorCisgICAgICAgIERpZCBzb21lIHJlZmFjdG9y
aW5nIHRvIGFkZCBhIHR5cGVkIGNvbnRlbnQgYmxvY2tlciBpZGVudGlmaWVyLgorICAgICAgICBP
bmNlIE5ldHdvcmtQcm9jZXNzIGZldGNoZXMgYSBnaXZlbiBjb250ZW50IGJsb2NrZXIsIHRoZSBj
b250ZW50IGJsb2NrZXIgd2lsbCBzZW5kIGFueSBtb2RpZmljYXRpb24gdG8gTmV0d29ya1Byb2Nl
c3MuCisgICAgICAgIEludHJvZHVjZWQgTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlciB0byBo
YW5kbGUgdGhlIGNvbnRlbnQgYmxvY2tlcnMgaW4gTmV0d29ya1Byb2Nlc3MuCisKKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVz
Rm9yTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmg6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6c2V0Q29udGVudEV4dGVuc2lv
bkNvbnRyb2xsZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRlbnRDb250
cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtVc2VyQ29udGVudENv
bnRyb2xsZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZENvbnRlbnRSdWxlTGlzdHMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVDb250ZW50UnVs
ZUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjpy
ZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1VzZXJD
b250ZW50Q29udHJvbGxlcjo6cmVtb3ZlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VHcm91cERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VHcm91
cERhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9j
ZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpjb250ZW50
RXh0ZW5zaW9uUnVsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpk
aWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpnZXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29u
dGVudFdvcmxkVXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxV
c2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1l
c3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxl
TGlzdHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmFkZE5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNvbnRlbnRFeHRlbnNpb25SdWxl
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjppZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciBjb25zdCk6CisKIDIwMTgtMDQtMDIgIE1pY2hhZWwgQ2F0
YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIERyYWdBbmRE
cm9wSGFuZGxlci5jcHAgc2hvdWxkIGluY2x1ZGUgR1VuaXF1ZVB0ckd0ay5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAppbmRleCA2MGU5MmI3ZTczOTAzNGQ5YTc4ZDIzNTFiMjk4Mjc2ZDRlMDUxZDE2Li44N2Y0
YjUxZDg1NmZmZjRiMzdiNDVlNGZhNTExNmZmODg5NmVkYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
QEAgLTExOCw2ICsxMTgsNyBAQCBzZXQoV2ViS2l0X1NPVVJDRVMKICAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKKyAg
ICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAogICAgIE5l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcAogCkBAIC02MjIsNiArNjIzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxF
UwogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCiAgICAgTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCiAgICAgTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KIAogICAgIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDlkNjZjMGRmNmVjNzY0MmY0ZTAwYmM5
MzFmMTJlMTdjNjFlYWJmNGMuLmY4NzRhNjA5ODMxOTgwODE2ZWM2ZmU1NzY3NTU5NmJiMWNiNmNh
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTExNSw2ICsxMTUsNyBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKICAgICBOZXR3b3JrUlRDU29ja2V0IFwKICAgICBOZXR3b3JrUmVz
b3VyY2VMb2FkZXIgXAogICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0gXAorICAgIE5ldHdvcmtVc2Vy
Q29udGVudENvbnRyb2xsZXIgXAogICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSBcCiAgICAgUGx1
Z2luUHJvY2VzcyBcCiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGEx
NDVlODEzZmY0YWFkM2YxZjc1YmFiZWYyZGE5OGNiMjZjNmQ0NzIuLmE4ODgwOTAxNjBmMWQ1ZGU3
ZGYwNDM2MDE1MzQyZTc5NzEyYTY3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
aCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29u
dGVudFJ1bGVMaXN0LmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oPgpAQCAtOTUsMTIgKzk3LDIwIEBAIE5ldHdvcmtM
b2FkQ2hlY2tlcjo6UmVxdWVzdE9yRXJyb3IgTmV0d29ya0xvYWRDaGVja2VyOjpyZXR1cm5FcnJv
cihTdHJpbmcmJiBlcnJvCiB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFZhbGlkYXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIGlmIChwcm9jZXNzQ29udGVudEV4
dGVuc2lvblJ1bGVzRm9yTG9hZChyZXF1ZXN0KS5ibG9ja2VkTG9hZCkgewotICAgICAgICBoYW5k
bGVyKHJldHVybkVycm9yKEFTQ0lJTGl0ZXJhbCgiQmxvY2tlZCBieSBjb250ZW50IGV4dGVuc2lv
biIpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgcHJvY2Vzc0NvbnRlbnRFeHRlbnNp
b25SdWxlc0ZvckxvYWQoV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMsIGhhbmRsZXIgPSBXVEZNb3Zl
KGhhbmRsZXIpXShhdXRvJiYgcmVxdWVzdCwgYXV0byBzdGF0dXMpIG11dGFibGUgeworICAgICAg
ICBpZiAoc3RhdHVzLmJsb2NrZWRMb2FkKSB7CisgICAgICAgICAgICBoYW5kbGVyKHRoaXMtPnJl
dHVybkVycm9yKEFTQ0lJTGl0ZXJhbCgiQmxvY2tlZCBieSBjb250ZW50IGV4dGVuc2lvbiIpKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdGhpcy0+Y29udGludWVD
aGVja2luZ1JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAg
fSk7CisjZWxzZQorICAgIGNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUoaGFuZGxlcikpOwogI2VuZGlmCit9CiAKK3ZvaWQgTmV0d29ya0xvYWRDaGVja2Vy
Ojpjb250aW51ZUNoZWNraW5nUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBWYWxp
ZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit7CiAgICAgaWYgKGF1dG8qIGNvbnRlbnRTZWN1cml0
eVBvbGljeSA9IHRoaXMtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSB7CiAgICAgICAgIGlmIChp
c1JlZGlyZWN0ZWQoKSkgewogICAgICAgICAgICAgVVJMIHVybCA9IHJlcXVlc3QudXJsKCk7CkBA
IC0yMjksMjEgKzIzOSwxOCBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCi1Db250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kJiBOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCgpCit2b2lk
IE5ldHdvcmtMb2FkQ2hlY2tlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0
dXMmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIW1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5k
KSB7Ci0gICAgICAgIG1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPigpOwotICAgICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBtX2NvbnRlbnRSdWxlTGlzdHMpCi0gICAgICAgICAgICBtX2Nv
bnRlbnRFeHRlbnNpb25zQmFja2VuZC0+YWRkQ29udGVudEV4dGVuc2lvbihwYWlyLmZpcnN0LCBX
ZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUocGFpci5zZWNvbmQpKSk7
CisgICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpIHsKKyAgICAgICAg
Q29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMgc3RhdHVzOworICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKHJlcXVlc3QpLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IHJldHVybiAqbV9jb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ7Ci19Ci0KLUNvbnRlbnRFeHRlbnNp
b25zOjpCbG9ja2VkU3RhdHVzIE5ldHdvcmtMb2FkQ2hlY2tlcjo6cHJvY2Vzc0NvbnRlbnRFeHRl
bnNpb25SdWxlc0ZvckxvYWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIGF1dG8g
c3RhdHVzID0gY29udGVudEV4dGVuc2lvbnNCYWNrZW5kKCkucHJvY2Vzc0NvbnRlbnRFeHRlbnNp
b25SdWxlc0ZvclBpbmdMb2FkKHJlcXVlc3QudXJsKCksIG1fbWFpbkRvY3VtZW50VVJMKTsKLSAg
ICBhcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3Qoc3RhdHVzLCBudWxscHRyLCByZXF1ZXN0KTsK
LSAgICByZXR1cm4gc3RhdHVzOworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3
b3JrVXNlckNvbnRlbnRDb250cm9sbGVyKCkuY29udGVudEV4dGVuc2lvbnNCYWNrZW5kKCptX3Vz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHRoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShhdXRvJiBiYWNrZW5kKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBzdGF0
dXMgPSBiYWNrZW5kLnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZChyZXF1
ZXN0LnVybCgpLCBtX21haW5Eb2N1bWVudFVSTCk7CisgICAgICAgIGFwcGx5QmxvY2tlZFN0YXR1
c1RvUmVxdWVzdChzdGF0dXMsIG51bGxwdHIsIHJlcXVlc3QpOworICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKHJlcXVlc3QpLCBzdGF0dXMpOworICAgIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5oCmluZGV4IGVjZmI1ZWI1YmNhNzdjMjdlMWQ0YWNkODJiOGI5
YzhhMjllZDQ0MjIuLjdlOGU4NTY3Y2MwOTUwODdlNDdkZjRkZjcxODFkMzA2MDdiNzNiODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
aApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmg+CisjaW5jbHVkZSAiTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAt
NDAsOSArNDAsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlcjsKIAotY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIHsKK2NsYXNzIE5ldHdv
cmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewog
cHVibGljOgotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1v
ZGUsIGJvb2wgc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgV2ViQ29y
ZTo6VVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CisgICAgc3RhdGlj
IFJlZjxOZXR3b3JrTG9hZENoZWNrZXI+IGNyZWF0ZShXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1v
ZGUgbW9kZSwgYm9vbCBzaG91bGRGb2xsb3dSZWRpcmVjdHMsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiBvcmlnaW5hbEhlYWRlcnMsIFdlYkNvcmU6
OlVSTCYmIHVybCwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdp
bikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtMb2FkQ2hlY2tl
ciB7IG1vZGUsIHNob3VsZEZvbGxvd1JlZGlyZWN0cywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IHNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW5hbEhlYWRlcnMpLCBXVEZNb3ZlKHVybCksIFdURk1v
dmUoc291cmNlT3JpZ2luKSB9KTsKKyAgICB9CiAgICAgfk5ldHdvcmtMb2FkQ2hlY2tlcigpOwog
CiAgICAgdXNpbmcgUmVxdWVzdE9yRXJyb3IgPSBFeHBlY3RlZDxXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+OwpAQCAtNTIsMTAgKzU1LDEwIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYmIGhlYWRlcnMpIHsgbV9jc3BSZXNwb25zZUhlYWRl
cnMgPSBXVEZNb3ZlKGhlYWRlcnMpOyB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
LSAgICB2b2lkIHNldENvbnRlbnRFeHRlbnNpb25SdWxlTGlzdHMoV2ViQ29yZTo6VVJMJiYgbWFp
bkRvY3VtZW50VVJMLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3REYXRhPj4mJiBjb250ZW50UnVsZUxpc3RzKQorICAgIHZvaWQgc2V0Q29udGVudEV4
dGVuc2lvbkNvbnRyb2xsZXIoV2ViQ29yZTo6VVJMJiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9w
dGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiAgICAg
ewogICAgICAgICBtX21haW5Eb2N1bWVudFVSTCA9IFdURk1vdmUobWFpbkRvY3VtZW50VVJMKTsK
LSAgICAgICAgbV9jb250ZW50UnVsZUxpc3RzID0gV1RGTW92ZShjb250ZW50UnVsZUxpc3RzKTsK
KyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsK
ICAgICB9CiAjZW5kaWYKIApAQCAtNjMsMTIgKzY2LDE2IEBAIHB1YmxpYzoKICAgICBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7IH0KIAogcHJpdmF0ZToKKyAgICBO
ZXR3b3JrTG9hZENoZWNrZXIoV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpNb2RlLCBib29sIHNob3Vs
ZEZvbGxvd1JlZGlyZWN0cywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFdlYkNvcmU6OlVSTCYmLCBSZWZQ
dHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYpOworCiAgICAgV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdDsKICAgICBib29sIGlz
Q2hlY2tpbmcoKSBjb25zdCB7IHJldHVybiAhIW1fY29yc1ByZWZsaWdodENoZWNrZXI7IH0KICAg
ICBib29sIGlzUmVkaXJlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RDb3VudDsgfQog
CiAgICAgdm9pZCBjaGVja1JlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFZhbGlk
YXRpb25IYW5kbGVyJiYpOwogCisgICAgdm9pZCBjb250aW51ZUNoZWNraW5nUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CisKICAgICBib29s
IGRvZXNOb3ROZWVkQ09SU0NoZWNrKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwogICAgIHZv
aWQgY2hlY2tDT1JTUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlv
bkhhbmRsZXImJik7CiAgICAgdm9pZCBjaGVja0NPUlNSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CkBAIC03Nyw4ICs4NCw3
IEBAIHByaXZhdGU6CiAgICAgUmVxdWVzdE9yRXJyb3IgcmV0dXJuRXJyb3IoU3RyaW5nJiYgZXJy
b3IpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kJiBjb250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQoKTsKLSAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1
cyBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKTsKKyAgICB2b2lkIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Qmxv
Y2tlZFN0YXR1cyYpPiYmKTsKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpN
b2RlIG1fbW9kZTsKQEAgLTkyLDE2ICs5OCwxMyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBtX2NzcFJl
c3BvbnNlSGVhZGVyczsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFdlYkNv
cmU6OlVSTCBtX21haW5Eb2N1bWVudFVSTDsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gbV9jb250ZW50UnVsZUxpc3RzOworICAg
IHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gbV91c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyPiBtX2NvcnNQcmVmbGlnaHRDaGVja2VyOwogICAg
IGJvb2wgbV9pc1NhbWVPcmlnaW5SZXF1ZXN0IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9pc1NpbXBs
ZVJlcXVlc3QgeyB0cnVlIH07CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKLSNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPiBtX2NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZDsKLSNlbmRpZgogICAgIHNpemVfdCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAg
ICAgV2ViQ29yZTo6VVJMIG1fcHJldmlvdXNVUkw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAxYzU1ODhlNzk0MzQ5OGZhNDE5
NzQ0YTgyOWU4Yjc0NDRmMzgzMDdlLi5kOGRhZjJlNzJjYzBjOWQ4NDFjMWYxOGQ1NjA1NDhlY2Iy
MGZhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJSZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCkBAIC0x
NzEsNiArMTcyLDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TmV0d29ya1VzZXJDb250ZW50Q29u
dHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIG1fbmV0d29ya1VzZXJD
b250ZW50Q29udHJvbGxlci5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgZGlkUmVjZWl2ZU5ldHdvcmtQ
cm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGQ4Y2VhNjlkZTg3NjI5OTJh
YjAyOTc0ZTQ1YTc4NzE4NDQwZDc1Y2QuLmFiZmU4YTJiZmEyN2M4MDFkYzYwYzdiYWU5NzJmYzI5
NDA0YzkzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKICNpbmNs
dWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIK
KyNpbmNsdWRlICJOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CkBAIC0xNTcsNiArMTU4LDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQsIGJv
b2wpOwogICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Np
b25JRCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIE5ldHdv
cmtVc2VyQ29udGVudENvbnRyb2xsZXImIG5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIoKSB7
IHJldHVybiBtX25ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXI7IH0KKyNlbmRpZgorCiBwcml2
YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzKCk7CiAgICAgfk5ldHdvcmtQcm9jZXNzKCk7CkBAIC0y
OTEsNiArMjk2LDEwIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICNlbmRpZgorCisj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBOZXR3b3JrVXNlckNvbnRlbnRDb250
cm9sbGVyIG1fbmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlcjsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDAxNzJj
M2I0MTliODFmMTVkM2Y3ODlhZDhlOGQ2ZjNhZjk4OTFkNTguLjQ0MDc3ZDNjZTVlZjFkZDBiNTk0
MDRlNWY5ZTZkNzY3MTcwMzIyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC05
Myw3ICs5Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQogICAgIGVuY29kZXIgPDwgbWFpbkRvY3VtZW50VVJMOwotICAgIGVuY29kZXIgPDwgY29u
dGVudFJ1bGVMaXN0czsKKyAgICBlbmNvZGVyIDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXI7CiAjZW5kaWYKIH0KIApAQCAtMTg0LDExICsxODQsMTEgQEAgYm9vbCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29y
a1Jlc291cmMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tYWluRG9jdW1lbnRVUkwp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+Pj4gY29udGVudFJ1
bGVMaXN0czsKLSAgICBkZWNvZGVyID4+IGNvbnRlbnRSdWxlTGlzdHM7Ci0gICAgaWYgKCFjb250
ZW50UnVsZUxpc3RzKQorICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsK
KyAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CisgICAgaWYg
KCF1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmVzdWx0LmNvbnRlbnRSdWxlTGlzdHMgPSBXVEZNb3ZlKCpjb250ZW50UnVsZUxpc3Rz
KTsKKyAgICByZXN1bHQudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciA9ICp1c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCA3N2RlODU1NTNlZGY0Yzk4Y2JhN2M0NjczZmI2ZTNi
NzEwZDRlM2JhLi4yY2MzM2FjZTliZjAwOTIzMTlhYmJlNTZjYWZiYTBiODJkNTU3MzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3
b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW5j
bHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmgiCisjaW5jbHVkZSAiVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9w
dGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oPgpAQCAt
NjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQog
ICAgIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1lbnRVUkw7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+IGNvbnRlbnRSdWxlTGlzdHM7
CisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRlbnRDb250
cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDZkMGRkNWE4NmYxZmJmZWI2ODc4NDViMmJmNTM4OGUx
MzdmM2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrVXNlckNvbnRlbnRD
b250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05ldHdvcmtVc2VyQ29u
dGVudENvbnRyb2xsZXI6Ok5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7
CitOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjp+TmV0d29ya1VzZXJDb250ZW50Q29udHJv
bGxlcigpCit7CisgICAgYXV0byBwZW5kaW5nQ2FsbGJhY2tzID0gV1RGTW92ZShtX3BlbmRpbmdD
YWxsYmFja3MpOworICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCBiYWNrZW5kOworICAgIGZvciAoYXV0byYgY2FsbGJhY2tzIDogcGVuZGluZ0Nh
bGxiYWNrcy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJh
Y2tzKQorICAgICAgICAgICAgY2FsbGJhY2soYmFja2VuZCk7CisgICAgfQorfQorCit2b2lkIE5l
dHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZChVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEJhY2tlbmRDYWxsYmFjayYm
IGNhbGxiYWNrKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NvbnRlbnRFeHRlbnNpb25CYWNr
ZW5kcy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciAhPSBtX2NvbnRlbnRFeHRl
bnNpb25CYWNrZW5kcy5lbmQoKSkgeworICAgICAgICBjYWxsYmFjaygqaXRlcmF0b3ItPnZhbHVl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3BlbmRpbmdDYWxsYmFja3MuZW5zdXJl
KGlkZW50aWZpZXIsIFtdIHsKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxCYWNrZW5kQ2FsbGJhY2s+
IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Q29udGVudEV4dGVuc2lvblJ1
bGVzIHsgaWRlbnRpZmllciB9LCAwKTsKK30KKwordm9pZCBOZXR3b3JrVXNlckNvbnRlbnRDb250
cm9sbGVyOjphZGRDb250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0RGF0YT4+JiBjb250ZW50UnVsZUxpc3RzKQoreworICAgIGF1dG8mIGJh
Y2tlbmQgPSAqbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZW5zdXJlKGlkZW50aWZpZXIsIFtd
IHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4oKTsKKyAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRlbnRSdWxlTGlzdCA6IGNvbnRlbnRSdWxl
TGlzdHMpIHsKKyAgICAgICAgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhIGNvbnRlbnRS
dWxlTGlzdERhdGEgPSBjb250ZW50UnVsZUxpc3Quc2Vjb25kOworICAgICAgICBhdXRvIGNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0ID0gV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmNyZWF0ZShX
VEZNb3ZlKGNvbnRlbnRSdWxlTGlzdERhdGEpKTsKKyAgICAgICAgYmFja2VuZC5hZGRDb250ZW50
RXh0ZW5zaW9uKGNvbnRlbnRSdWxlTGlzdC5maXJzdCwgV1RGTW92ZShjb21waWxlZENvbnRlbnRS
dWxlTGlzdCkpOworICAgIH0KKworICAgIGF1dG8gcGVuZGluZ0NhbGxiYWNrcyA9IG1fcGVuZGlu
Z0NhbGxiYWNrcy50YWtlKGlkZW50aWZpZXIpOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBw
ZW5kaW5nQ2FsbGJhY2tzKQorICAgICAgICBjYWxsYmFjayhiYWNrZW5kKTsKKworfQorCit2b2lk
IE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZmlu
ZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jb250ZW50RXh0ZW5zaW9uQmFj
a2VuZHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9yLT52YWx1ZS0+cmVt
b3ZlQ29udGVudEV4dGVuc2lvbihuYW1lKTsKK30KKwordm9pZCBOZXR3b3JrVXNlckNvbnRlbnRD
b250cm9sbGVyOjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9jb250ZW50
RXh0ZW5zaW9uQmFja2VuZHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0g
bV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGl0ZXJhdG9yLT52YWx1ZS0+cmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnMoKTsKK30KKwordm9p
ZCBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmUoVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIG1fY29udGVudEV4dGVuc2lvbkJhY2tl
bmRzLnJlbW92ZShpZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40OTI4NjA1M2NjMjkzZTM2MjAxM2ZlZWI5NDI0OGQ5M2FiZTI0N2U0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNv
bnRlbnRDb250cm9sbGVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIlVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJDb21waWxlZENvbnRl
bnRSdWxlTGlzdERhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRQcm92aWRlci5oPgorCituYW1l
c3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlciB7Citw
dWJsaWM6CisgICAgTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlcigpOworICAgIH5OZXR3b3Jr
VXNlckNvbnRlbnRDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCisgICAgdXNpbmcgQmFja2VuZENhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kJik+OworICAgIHZvaWQgY29udGVudEV4dGVuc2lvbnNC
YWNrZW5kKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIEJhY2tlbmRDYWxsYmFjayYm
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGFkZENvbnRlbnRSdWxlTGlzdHMoVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+Jik7CisgICAgdm9pZCByZW1vdmVDb250ZW50UnVs
ZUxpc3QoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyAgICB2b2lkIHJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdmUoVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcik7CisKKyAgICBIYXNoTWFwPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvbnNCYWNrZW5kPj4gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHM7CisgICAgSGFzaE1hcDxV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBWZWN0b3I8QmFja2VuZENhbGxiYWNrPj4g
bV9wZW5kaW5nQ2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRlbnRDb250cm9s
bGVyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzMjg3YWVmMmYyZGU1YmFjMGZjMWRhZWZhYTZl
M2JmNDg3MmU4YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwz
MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKKworbWVzc2FnZXMgLT4gTmV0d29ya1VzZXJDb250ZW50Q29u
dHJvbGxlciB7CisgICAgUmVtb3ZlKFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllciBpZGVudGlmaWVyKQorICAgIEFkZENvbnRlbnRSdWxlTGlzdHMoV2ViS2l0OjpVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+IGNvbnRlbnRGaWx0
ZXJzKQorICAgIFJlbW92ZUNvbnRlbnRSdWxlTGlzdChXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIG5hbWUpCisgICAgUmVtb3ZlQWxsQ29u
dGVudFJ1bGVMaXN0cyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuY3BwCmluZGV4IGJjNDg5NDM2ODhkNTA2NzM5MTFmMWFhZGUwYThjNzczNzZkMjRhZDUuLjI1
Zjk2M2EyMDFjYTIxYjlkYWE2NzM5MWVkY2ZiNzhjMzcxMGM5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgUGluZ0xvYWQ6
OlBpbmdMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgSFRU
UEhlYWRlck1hcCYmIG8KICAgICA6IG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQog
ICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAg
ICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmUGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVkKQot
ICAgICwgbV9uZXR3b3JrTG9hZENoZWNrZXIobWFrZVVuaXF1ZVJlZjxOZXR3b3JrTG9hZENoZWNr
ZXI+KG1fcGFyYW1ldGVycy5tb2RlLCBtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3Rz
LCBtX3BhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIG1fcGFyYW1ldGVycy5zZXNz
aW9uSUQsIFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVy
cy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpKSkK
KyAgICAsIG1fbmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y3JlYXRlKG1f
cGFyYW1ldGVycy5tb2RlLCBtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBtX3Bh
cmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQs
IFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1
ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpKSkKIHsKIAog
ICAgIGlmIChtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAgICAgICBtX25ldHdv
cmtMb2FkQ2hlY2tlci0+c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdURk1vdmUobV9wYXJhbWV0ZXJz
LmNzcFJlc3BvbnNlSGVhZGVycy52YWx1ZSgpKSk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKLSAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0Q29udGVudEV4dGVuc2lvblJ1bGVM
aXN0cyhXVEZNb3ZlKG1fcGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwpLCBXVEZNb3ZlKG1fcGFy
YW1ldGVycy5jb250ZW50UnVsZUxpc3RzKSk7CisgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnNl
dENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKFdURk1vdmUobV9wYXJhbWV0ZXJzLm1haW5Eb2N1
bWVudFVSTCksIG1fcGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsK
ICNlbmRpZgogCiAgICAgLy8gSWYgdGhlIHNlcnZlciBuZXZlciByZXNwb25kcywgdGhpcyBvYmpl
Y3Qgd2lsbCBoYW5nIGFyb3VuZCBmb3JldmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5oCmluZGV4IDc0YTY5ODU3NzZhOWZiNWE3ZjU5MTViZGU4NDY1NDVjMDNmYWJjODAu
LmExZWY2ZTczMTdmZTU1ZjZjNWRjZjUzYWM3NTUzYTljYjA3Yzk2YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAg
ICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKT4gbV9jb21wbGV0aW9uSGFuZGxl
cjsKICAgICBSZWZQdHI8TmV0d29ya0RhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6VGlt
ZXIgbV90aW1lb3V0VGltZXI7Ci0gICAgVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4gbV9u
ZXR3b3JrTG9hZENoZWNrZXI7CisgICAgUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4gbV9uZXR3b3Jr
TG9hZENoZWNrZXI7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+
IG1fbGFzdFJlZGlyZWN0aW9uUmVxdWVzdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CmluZGV4IDI3ZjA1YzdiMzgxNWJmNTFjNjkzNDRlMWE2NmRlNTdmMDAw
MGU3NWQuLmI3YTRjOTY1Yzc5MDExNTA5YmI1NTI1NzZmZDUwNTBjNjY0NTM4YzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMTg1LDYgKzE4NSw3IEBAIGRl
ZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICAg
ICB0eXBlc19ieV9uYW1lc3BhY2VbJ0lQQyddLnVwZGF0ZShbKCdjbGFzcycsICdDb25uZWN0aW9u
JyldKQogCiAgICAgbm9fZm9yd2FyZF9kZWNsYXJhdGlvbl90eXBlcyA9IGZyb3plbnNldChbCisg
ICAgICAgICdTdHJpbmcnLAogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyJywKQEAgLTE5Miw3ICsxOTMsNyBAQCBk
ZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjZWl2ZXIpOgogICAgICAgICAn
V2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJywKLSAgICAgICAgJ1N0cmluZycsCisg
ICAgICAgICdXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXInLAogICAgIF0p
CiAKICAgICBmb3IgcGFyYW1ldGVyIGluIHJlY2VpdmVyLml0ZXJwYXJhbWV0ZXJzKCk6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWIzZmI0M2Y5NDAxMDg3ZjgwYzBiY2Y3NDBiNmViOWU0ODBhMDRi
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworZW51bSBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyVHlwZSB7IH07
Cit1c2luZyBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmll
cjxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggNzA4
OWRhOGIyYTg2ZGZkZWY4NzViOTg4MGI2ZjRmYWIwM2E3MmRhOS4uODY3MTU5YjY4ZjQwMmYyOWFl
ZGRiN2YzMjllNzgwMDlmZjE5YTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE3OSw4ICsxNzksMTMgQEAgc3RkOjpv
cHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEKSkKKworICAgIHN0ZDo6b3B0aW9uYWw8
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7
CisgICAgaWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQg
PSAqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy52aXNpdGVkTGlua1RhYmxlSUQpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy53ZWJzaXRlRGF0
YVN0b3JlSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCmluZGV4IDZiZDE5NjFmM2M0ZDQ1MDA0ZGRkZmQ2MjAxYzY4MjdkOTdlOTA0MDIu
LmJhZWJhZjRkNDEwMDg5NjVhNTZmNGMxYzNmMjFhY2U4NzNlYTQzMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTk4LDcgKzk4
LDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRDsKICAgICB1aW50NjRfdCBoaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlE
OwogCi0gICAgdWludDY0X3QgdXNlckNvbnRlbnRDb250cm9sbGVySUQ7CisgICAgVXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJRDsKICAgICB1aW50
NjRfdCB2aXNpdGVkTGlua1RhYmxlSUQ7CiAgICAgdWludDY0X3Qgd2Vic2l0ZURhdGFTdG9yZUlE
OwogICAgIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAppbmRleCAyNzUwMDdhZjcxNWIyNWZhN2IyZDZk
OWQ3MDVmZTc1MzI5NTllNTUxLi5hYmRhN2Q1ZTVjNjRlMDE1NGFkMzU2OTk2N2FlODc2ZjZmNjlk
YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcApAQCAtNTMs
MTAgKzUzLDExIEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gV2ViUGFnZUdyb3Vw
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBib29sIHZpc2libGVUb0hp
c3RvcnlDbGllbnQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2aXNpYmxlVG9IaXN0b3J5Q2xp
ZW50KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB1aW50NjRfdCB1c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcikpCisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBpZiAo
IXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgcmV0dXJuIHsgeyBpZCwgcGFnZUdyb3VwSUQsIHZpc2libGVUb0luamVjdGVk
QnVuZGxlLCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50LCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyIH0gfTsKKyAgICByZXR1cm4geyB7IGlkLCBwYWdlR3JvdXBJRCwgdmlzaWJsZVRvSW5q
ZWN0ZWRCdW5kbGUsIHZpc2libGVUb0hpc3RvcnlDbGllbnQsICp1c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyIH0gfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmgKaW5kZXggMmM2MWU1OTdiNjU2Y2Q4YjgyNzZkMjBj
NDZlODQxYzk5ZjgwYjViMC4uOTMwZDhlZTk4YWVlNmUyNjcxNTFkMTY2ZDk4MDE5MjQ5MmIwMzli
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaApAQCAtMjUsNiArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IElQQyB7CkBAIC00Myw3ICs0NCw3IEBAIHN0cnVjdCBXZWJQYWdlR3JvdXBEYXRhIHsKICAgICBi
b29sIHZpc2libGVUb0luamVjdGVkQnVuZGxlOwogICAgIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNs
aWVudDsKIAotICAgIHVpbnQ2NF90IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7Cisg
ICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCA2MTM4OTNlNDMwYmJiYzllZDcwMzRhZWIxNGZjNThkYzVlMjhlZmJjLi43ZTIwNGQ2MzRlMDhm
MDIxMWJkMGFiNmI4NWJmMTlmYWVjODhhMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5
LmgiCiAKKyNpbmNsdWRlICJBUElDb250ZW50UnVsZUxpc3QuaCIKICNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2Vz
LmgiCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKQEAgLTM0LDEx
ICszNSwxNCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVByb2Nlc3NNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAKQEAgLTg1LDYgKzg5LDEwIEBAIE5ldHdvcmtQcm9jZXNzUHJveHk6
On5OZXR3b3JrUHJvY2Vzc1Byb3h5KCkKICAgICBBU1NFUlQobV9wZW5kaW5nRmV0Y2hXZWJzaXRl
RGF0YUNhbGxiYWNrcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3BlbmRpbmdEZWxldGVXZWJz
aXRlRGF0YUNhbGxiYWNrcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3BlbmRpbmdEZWxldGVX
ZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3MuaXNFbXB0eSgpKTsKKyNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQorICAgIGZvciAoYXV0byogcHJveHkgOiBtX3dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3hpZXMpCisgICAgICAgIHByb3h5LT5yZW1vdmVOZXR3b3JrUHJvY2Vzcygq
dGhpcyk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hP
cHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKQEAg
LTU0MCw0ICs1NDgsMjggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJc0hvbGRpbmdM
b2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIH0KIH0KIAorCisjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y29u
dGVudEV4dGVuc2lvblJ1bGVzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBpZiAoYXV0byogd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgPSBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Z2V0KGlkZW50aWZpZXIpKSB7CisgICAgICAg
IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcy5hZGQod2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkpOworICAgICAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRk
TmV0d29ya1Byb2Nlc3MoKnRoaXMpOworCisgICAgICAgIGF1dG8gcnVsZXMgPSBXVEY6Om1hcCh3
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+Y29udGVudEV4dGVuc2lvblJ1bGVzKCksIFtd
KGF1dG8mJiBrZXlWYWx1ZSkgLT4gc3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3REYXRhPiB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoa2V5VmFs
dWUudmFsdWUtPm5hbWUoKSwga2V5VmFsdWUudmFsdWUtPmNvbXBpbGVkUnVsZUxpc3QoKS5kYXRh
KCkpOworICAgICAgICB9KTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1VzZXJDb250
ZW50Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIsIHJ1bGVzIH0s
IDApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtV
c2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMgeyBpZGVudGlmaWVyLCB7
IH0gfSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5JiBw
cm94eSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmUgeyBwcm94eS5pZGVudGlmaWVyKCkgfSwgMCk7CisgICAgbV93ZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94aWVzLnJlbW92ZSgmcHJveHkpOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBmZmZiNDE0Zjk2NTE3OWQyNjEwYTYxM2UyYmU2
ZWUzY2QzM2UxMDJlLi5jOWRjNzkyYTliNWUwN2NjZmUxMDUyOWE3ZTE5YWU2YWJhNDkwZDk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5o
IgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0
bGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtNTksNiArNjAsNyBAQCBjbGFzcyBXZWJQcm9j
ZXNzUG9vbDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjsKIGVudW0gY2xhc3Mg
V2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBzdHJ1Y3QgV2Vic2l0ZURh
dGE7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzUHJv
eHksIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CkBAIC05NCw2ICs5NiwxMCBAQCBw
dWJsaWM6CiAgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgeyByZXR1cm4gbV90aHJv
dHRsZXI7IH0KICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2woKSB7IHJldHVybiBtX3By
b2Nlc3NQb29sOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIHZvaWQg
ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5Jik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc1By
b3h5KFdlYlByb2Nlc3NQb29sJik7CiAKQEAgLTEzOSw2ICsxNDUsMTAgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+JiYgZG9t
YWlucywgdWludDY0X3QgY29udGV4dElkKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKKyAgICB2b2lkIGNvbnRlbnRFeHRlbnNpb25SdWxlcyhVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyKTsKKyNlbmRpZgorCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpD
bGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwogCkBAIC0xNjEsNiArMTcxLDEwIEBA
IHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sIHN1Y2Nlc3MpPj4gbV93cml0ZUJsb2JUb0ZpbGVQYXRoQ2FsbGJhY2tNYXA7CiAgICAgSGFz
aE1hcDx1aW50NjRfdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRl
ZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwOwogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4+
IG1fYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcDsKKworI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCisgICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllczsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNjEy
NmVhNWQ4N2Q2NGFkYzJlOGQ2ZWVjMjYzODFkMGNkOGM3MjVlMi4uMTg0YzJmZDU0NDFmOGQ4NzA0
MzZkMTViNzZhNGQyZGZmNjM3Mjg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpA
QCAtNDcsNCArNDcsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJl
Y2VpdmVyIHsKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICBT
dG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRl
eHRJZCkKICAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8U3RyaW5nPiBk
b21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQorICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDQyMzNjOGU1Y2ZmYzY2MjAxMzFjZGJiODNjMDAy
ZGNhNTU2MzQxYmIuLjBjOGFhMjFkYjllNTRmZmMwZGY0MmQ0MDFhZjkwNGRlNDdlZjNiNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMxLDYgKzMxLDgg
QEAKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hl
ZXQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NQcm94eS5oIgorI2luY2x1ZGUgIk5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgpA
QCAtNDYsMTggKzQ4LDM3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgSGFzaE1h
cDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eSo+JiB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
LCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+PiBwcm94aWVzOworICAgIHJldHVybiBw
cm94aWVzOworfQorCisKK1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6Z2V0KFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGll
cygpLmdldChpZGVudGlmaWVyKTsKK30KKyAgICAKIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpCi0gICAgOiBtX3VzZXJTY3JpcHRz
KEFQSTo6QXJyYXk6OmNyZWF0ZSgpKQorICAgIDogbV9pZGVudGlmaWVyKGdlbmVyYXRlT2JqZWN0
SWRlbnRpZmllcjxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyVHlwZT4oKSkKKyAgICAs
IG1fdXNlclNjcmlwdHMoQVBJOjpBcnJheTo6Y3JlYXRlKCkpCiAgICAgLCBtX3VzZXJTdHlsZVNo
ZWV0cyhBUEk6OkFycmF5OjpjcmVhdGUoKSkKIHsKKyAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94aWVzKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5Ojp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQogewotICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKLSAgICAgICAg
cHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOworICAg
IHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsK
KyAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICBwcm9jZXNz
LT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
ICAgICAgICAgcHJvY2Vzcy0+ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KCp0aGlzKTsKICAgICB9CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBmb3Ig
KGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPmRp
ZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgqdGhpcyk7CisjZW5kaWYKIH0K
IAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkUHJvY2VzcyhXZWJQcm9j
ZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKQEAgLTY1LDcgKzg2LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6YWRkUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwKICAgICBp
ZiAoIW1fcHJvY2Vzc2VzLmFkZCgmd2ViUHJvY2Vzc1Byb3h5KS5pc05ld0VudHJ5KQogICAgICAg
ICByZXR1cm47CiAKLSAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBpZGVudGlmaWVyKCksICp0aGlzKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSwgKnRoaXMpOwogCiAgICAgQVNT
RVJUKHBhcmFtZXRlcnMudXNlckNvbnRlbnRXb3JsZHMuaXNFbXB0eSgpKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIHdvcmxkIDogbV91c2VyQ29udGVudFdvcmxkcykKQEAgLTk1LDcgKzExNiw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5z
KCZ3ZWJQcm9jZXNzUHJveHkpKTsKIAogICAgIG1fcHJvY2Vzc2VzLnJlbW92ZSgmd2ViUHJvY2Vz
c1Byb3h5KTsKLSAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBpZGVudGlmaWVyKCkpOworICAgIHdlYlByb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250
ZW50V29ybGQmIHdvcmxkKQpAQCAtMTA2LDcgKzEyNyw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpVc2VyQ29udGVudFdv
cmxkCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3VzZXJDb250ZW50V29ybGRzLmFkZCgmd29ybGQp
OwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyQ29udGVudFdvcmxk
cyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwgd29ybGQubmFtZSgpKSB9KSwg
aWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlckNvbnRlbnRXb3JsZHMoeyBzdGQ6Om1ha2VfcGFp
cih3b3JsZC5pZGVudGlmaWVyKCksIHdvcmxkLm5hbWUoKSkgfSksIGlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKICAgICB9CiB9CiAKQEAgLTEzMCw3ICsxNTEsNyBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJD
b250ZW50VwogewogICAgIGlmIChzaG91bGRTZW5kUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHNNZXNz
YWdlKHdvcmxkLCBudW1iZXJPZlVzZXNUb1JlbW92ZSkpIHsKICAgICAgICAgZm9yIChXZWJQcm9j
ZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRX
b3JsZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZVVzZXJDb250ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAgICAgfQogfQogCkBAIC0xNDMsNyArMTY0LDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoSGFzaENv
dW50ZWRTZXQ8UmUKICAgICB9CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwg
aWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSks
IGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCkBA
IC0xNTUsNyArMTc2LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRk
VXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCiAgICAgbV91c2VyU2NyaXB0
cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTY3JpcHQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNlclNj
cmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNlclNj
cmlwdCgpIH0gfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7IHVzZXJTY3Jp
cHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LnVzZXJTY3Jp
cHQoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1
c2VyU2NyaXB0KQpAQCAtMTYzLDcgKzE4NCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0CiAg
ICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU2NyaXB0LnVzZXJDb250
ZW50V29ybGQoKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9j
ZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0
LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdCh3b3JsZC0+
aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2Vy
U2NyaXB0KTsKIApAQCAtMTczLDcgKzE5NCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0CiB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cyhB
UEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMoeyB3b3JsZC5p
ZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMoeyB3
b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIHVu
c2lnbmVkIHVzZXJTY3JpcHRzUmVtb3ZlZCA9IG1fdXNlclNjcmlwdHMtPnJlbW92ZUFsbE9mVHlw
ZU1hdGNoaW5nPEFQSTo6VXNlclNjcmlwdD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTY3JpcHQpIHsK
ICAgICAgICAgcmV0dXJuICZ1c2VyU2NyaXB0LT51c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxk
OwpAQCAtMTk0LDcgKzIxNSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkKICAgICAgICAgd29ybGRJZGVudGlmaWVycy51bmNoZWNr
ZWRBcHBlbmQod29ybGRDb3VudFBhaXIua2V5LT5pZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChX
ZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2Ny
aXB0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2Ny
aXB0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAg
bV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwogCkBAIC0yMTAsNyArMjMxLDcgQEAg
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQoQVBJ
OjpVc2VyU3R5bGVTaGVldCYgdXNlclMKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMo
KS5hcHBlbmQoJnVzZXJTdHlsZVNoZWV0KTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBw
cm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVT
aGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVz
ZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU3R5bGVTaGVldHMo
eyB7IHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNl
clN0eWxlU2hlZXQudXNlclN0eWxlU2hlZXQoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJT
dHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQpAQCAtMjE4LDcg
KzIzOSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJT
dHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzCiAgICAgUmVmPEFQSTo6VXNlckNvbnRl
bnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5bGVTaGVldC51c2VyQ29udGVudFdvcmxkKCk7CiAKICAg
ICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVz
ZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LmlkZW50aWZp
ZXIoKSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclN0eWxlU2hlZXQod29ybGQtPmlkZW50
aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOwogCiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1
c2VyU3R5bGVTaGVldCk7CiAKQEAgLTIyOCw3ICsyNDksNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0
JiB1cwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0
eWxlU2hlZXRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9yIChXZWJQ
cm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxs
VXNlclN0eWxlU2hlZXRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CiAKICAgICB1bnNpZ25lZCB1c2VyU3R5bGVTaGVldHNSZW1vdmVkID0gbV91c2Vy
U3R5bGVTaGVldHMtPnJlbW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclN0eWxlU2hlZXQ+
KFsmXShjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVldCkgewogICAgICAgICByZXR1cm4gJnVzZXJT
dHlsZVNoZWV0LT51c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkOwpAQCAtMjQ5LDcgKzI3MCw3
IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cygpCiAgICAgICAgIHdvcmxkSWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKHdvcmxk
Q291bnRQYWlyLmtleS0+aWRlbnRpZmllcigpKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHdvcmxk
SWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh3
b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgbV91c2Vy
U3R5bGVTaGVldHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIApAQCAtMjcwLDcgKzI5MSw3IEBAIGJv
b2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcihXZWJTY3JpcHRNZXNzYWdlCiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuYWRkKGhh
bmRsZXIuaWRlbnRpZmllcigpLCAmaGFuZGxlcik7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94
eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMo
eyB7IGhhbmRsZXIuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCBoYW5kbGVyLm5h
bWUoKSB9IH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMo
eyB7IGhhbmRsZXIuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCBoYW5kbGVyLm5h
bWUoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC0yODAsNyArMzAxLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcKICAgICBm
b3IgKGF1dG8gaXQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5iZWdpbigpLCBlbmQgPSBtX3Nj
cmlwdE1lc3NhZ2VIYW5kbGVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlm
IChpdC0+dmFsdWUtPm5hbWUoKSA9PSBuYW1lICYmICZpdC0+dmFsdWUtPnVzZXJDb250ZW50V29y
bGQoKSA9PSAmd29ybGQpIHsKICAgICAgICAgICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIod29ybGQuaWRlbnRpZmllcigpLCBpdC0+dmFsdWUtPmlkZW50aWZpZXIoKSksIGlkZW50aWZp
ZXIoKSk7CisgICAgICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIod29ybGQuaWRl
bnRpZmllcigpLCBpdC0+dmFsdWUtPmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKIAogICAgICAgICAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMucmVtb3ZlKGl0KTsK
IApAQCAtMjkzLDcgKzMxNCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nCiB2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQ
STo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIHVuc2lnbmVkIG51bWJlclJlbW92ZWQgPSAwOwogICAg
IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92ZUlmKFsmXShhdXRvJiBlbnRyeSkgewpAQCAt
MzMwLDI0ICszNTEsMzMgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRk
Q29udGVudFJ1bGVMaXN0KEFQSTo6Q29udGVudFJ1bGVMaXN0JiBjb24KIAogICAgIGF1dG8gcGFp
ciA9IHN0ZDo6bWFrZV9wYWlyKGNvbnRlbnRSdWxlTGlzdC5uYW1lKCksIGNvbnRlbnRSdWxlTGlz
dC5jb21waWxlZFJ1bGVMaXN0KCkuZGF0YSgpKTsKIAotICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyh7IHBhaXIgfSks
IGlkZW50aWZpZXIoKSk7CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisg
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
QWRkQ29udGVudFJ1bGVMaXN0cyh7IHBhaXIgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KworICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fbmV0d29ya1Byb2Nlc3NlcykKKyAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlcjo6QWRk
Q29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSwgeyBwYWlyIH0gfSwgMCk7CiB9CiAKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChj
b25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgbV9jb250ZW50UnVsZUxpc3RzLnJlbW92ZShuYW1l
KTsKIAotICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0g
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
UmVtb3ZlQ29udGVudFJ1bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0
byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRSdWxlTGlzdChuYW1lKSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9u
ZXR3b3JrUHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
VXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50UnVsZUxpc3QgeyBpZGVudGlmaWVy
KCksIG5hbWUgfSwgMCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogewogICAgIG1fY29udGVudFJ1bGVMaXN0cy5j
bGVhcigpOwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlkZW50aWZpZXIoKSk7CisgICAgZm9y
IChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0
cygpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3Mg
OiBtX25ldHdvcmtQcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMgeyBp
ZGVudGlmaWVyKCkgfSwgMCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmgKaW5kZXggMjMwZjYyM2Q5OGU0NzgyOTUwMTEwZDk0OWY1MjU2NTYyMDBlM2I4
NC4uYWIzZjI2MDJiMGMyM2Q3NjM5MDAyMDBhZmM2Y2Y1YTc4ZmZjZjg0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0yNywxMSArMjcsMTEgQEAKIAogI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
IlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvSWRlbnRpZmll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTU0LDIwICs1NCwyMyBAQCBzdHJ1
Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgTmV0
d29ya1Byb2Nlc3NQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGNsYXNzIFdlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczsKIAotY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkg
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudENv
bnRyb2xsZXI+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgSWRlbnRpZmll
ZDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4geworY2xhc3MgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpVc2VyQ29udGVudENvbnRyb2xsZXI+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBj
cmVhdGUoKQogICAgIHsgCiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5KTsKLSAgICB9IAotICAgIGV4cGxpY2l0IFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KCk7CisgICAgfQorICAgIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KCk7CiAgICAgfldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCk7CiAKKyAgICBzdGF0
aWMgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqIGdldChVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyKTsKKwogICAgIHZvaWQgYWRkUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmLCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCByZW1vdmVQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYpOwogCkBAIC05MSwxMSArOTQsMTcgQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKIAogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgdm9pZCBhZGROZXR3b3JrUHJvY2VzcyhO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSkgeyBtX25ldHdvcmtQcm9jZXNzZXMucmVtb3ZlKCZw
cm94eSk7IH0KKyAgICB2b2lkIHJlbW92ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJv
eHkmIHByb3h5KSB7IG1fbmV0d29ya1Byb2Nlc3Nlcy5hZGQoJnByb3h5KTsgfQorCiAgICAgdm9p
ZCBhZGRDb250ZW50UnVsZUxpc3QoQVBJOjpDb250ZW50UnVsZUxpc3QmKTsKICAgICB2b2lkIHJl
bW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlbW92ZUFsbENv
bnRlbnRSdWxlTGlzdHMoKTsKKyAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6
Q29udGVudFJ1bGVMaXN0Pj4mIGNvbnRlbnRFeHRlbnNpb25SdWxlcygpIHsgcmV0dXJuIG1fY29u
dGVudFJ1bGVMaXN0czsgfQogI2VuZGlmCiAKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwogcHJp
dmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtMTA3
LDEzICsxMTYsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVVzZXJDb250ZW50V29ybGRV
c2VzKEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OlVzZXJDb250ZW50V29ybGQ+PiYpOwogICAg
IGJvb2wgc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVzc2FnZShBUEk6OlVzZXJD
b250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7CiAKLSAgICBIYXNo
U2V0PFdlYlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vzc2VzOyAgICAKKyAgICBVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBIYXNoU2V0PFdlYlByb2Nlc3NQ
cm94eSo+IG1fcHJvY2Vzc2VzOwogICAgIFJlZjxBUEk6OkFycmF5PiBtX3VzZXJTY3JpcHRzOwog
ICAgIFJlZjxBUEk6OkFycmF5PiBtX3VzZXJTdHlsZVNoZWV0czsKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+PiBtX3NjcmlwdE1lc3NhZ2VIYW5k
bGVyczsKICAgICBIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpVc2VyQ29udGVudFdvcmxkPj4g
bV91c2VyQ29udGVudFdvcmxkczsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisg
ICAgSGFzaFNldDxOZXR3b3JrUHJvY2Vzc1Byb3h5Kj4gbV9uZXR3b3JrUHJvY2Vzc2VzOwogICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+PiBtX2NvbnRlbnRS
dWxlTGlzdHM7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBlZWNjYWMyZjFhOTY4NjZiN2NkOWFiNGExZDk4ZTg2MWM4
NTE1MGJlLi42ZjRlMjE1NmQ0Yjk1OGQ0NWM1NjUxZTdmOTdiYTcyMjk2OTkwNDRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1OCw2
ICs5NTgsNyBAQAogCQk0MUZBRjVGNTFFM0MwNjQ5MDAxQUU2NzggLyogV2ViUlRDUmVzb2x2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY0
MUUzQzA2NDEwMDFBRTY3OCAvKiBXZWJSVENSZXNvbHZlci5oICovOyB9OwogCQk0MUZBRjVGODFF
M0MxMDIxMDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY2MUUzQzBCNDcwMDFBRTY3OCAvKiBM
aWJXZWJSVENSZXNvbHZlci5oICovOyB9OwogCQk0MUZBRjVGOTFFM0MxMDI1MDAxQUU2NzggLyog
TGliV2ViUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGQUY1RjcxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVy
LmNwcCAqLzsgfTsKKwkJNDFGQkU4MjYyMDZERjdGQTAwMEYwNzQxIC8qIE5ldHdvcmtVc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQkU4MjQyMDZEQTc5QzAwMEYwNzQxIC8qIE5ldHdvcmtVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwICovOyB9OwogCQk0NDUwQUVDMDFEQzNGQUU1MDA5OTQzRjIgLyogU2hhcmVk
TWVtb3J5Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDQ1MEFFQkYxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJlZE1lbW9yeUNvY29hLmNwcCAq
LzsgfTsKIAkJNDYwRjQ4OEYxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTQ2MEY0ODkw
MUY5OTZGNzEwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBGNDg4
RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
cy5oICovOyB9OwpAQCAtMTE5Niw2ICsxMTk3LDcgQEAKIAkJNTJENUExQjAxQzU3NDk1QTAwREUz
NEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovOyB9OwogCQk1MkQ1QTFCMTFDNTc0OTYyMDBE
RTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUMxQzU3NDk0RTAwREUzNEEzIC8q
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSAqLzsgfTsKIAkJNTJENUExQjcxQzU3NEEw
MjAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTFCNDFDNTc0OUYyMDBERTM0QTMgLyog
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSAqLzsgfTsKKwkJNTJGMDYwRTExNjU0MzE4NTAwRjMy
ODFCIC8qIE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGMDYwREQxNjU0
MzE3NTAwRjMyODFCIC8qIE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQk1MzAyNTgzQjFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1
cmVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzAyNTgyRTFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5j
cHAgKi87IH07CiAJCTUzMDI1ODNDMURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJl
c291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzAyNTgyRjFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oICovOyB9
OwogCQk1MzAyNTgzRDFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVFdmVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgzMDFE
Q0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVFdmVudC5jcHAgKi87IH07CkBAIC0yMzQ1
LDkgKzIzNDcsOSBAQAogCQkJZHN0UGF0aCA9IFByaXZhdGVIZWFkZXJzL2F0b21zOwogCQkJZHN0
U3ViZm9sZGVyU3BlYyA9IDE7CiAJCQlmaWxlcyA9ICgKLQkJCQk5OUNBNjZDQTIwMzY2ODVEMDA3
NEYzNUUgLyogRW50ZXJGdWxsc2NyZWVuLmpzIGluIENvcHkgV2ViRHJpdmVyIEF0b21zICovLAog
CQkJCTk5Qjc1MEYyMUYzM0VENUIwMEMxQ0ZCNSAvKiBFbGVtZW50QXR0cmlidXRlLmpzIGluIENv
cHkgV2ViRHJpdmVyIEF0b21zICovLAogCQkJCTk5Qjc1MEYzMUYzM0VENUIwMEMxQ0ZCNSAvKiBF
bGVtZW50RGlzcGxheWVkLmpzIGluIENvcHkgV2ViRHJpdmVyIEF0b21zICovLAorCQkJCTk5Q0E2
NkNBMjAzNjY4NUQwMDc0RjM1RSAvKiBFbnRlckZ1bGxzY3JlZW4uanMgaW4gQ29weSBXZWJEcml2
ZXIgQXRvbXMgKi8sCiAJCQkJOTlCNzUwRjQxRjMzRUQ1QjAwQzFDRkI1IC8qIEZpbmROb2Rlcy5q
cyBpbiBDb3B5IFdlYkRyaXZlciBBdG9tcyAqLywKIAkJCQk5OUI3NTBGNTFGMzNFRDVCMDBDMUNG
QjUgLyogRm9ybUVsZW1lbnRDbGVhci5qcyBpbiBDb3B5IFdlYkRyaXZlciBBdG9tcyAqLywKIAkJ
CQk5OUI3NTBGNjFGMzNFRDVCMDBDMUNGQjUgLyogRm9ybVN1Ym1pdC5qcyBpbiBDb3B5IFdlYkRy
aXZlciBBdG9tcyAqLywKQEAgLTMzNjQsNiArMzM2NiwxMCBAQAogCQk0MUZBRjVGNDFFM0MwNjQx
MDAxQUU2NzggLyogV2ViUlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV2ViUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkFGNUY2MUUzQzBCNDcwMDFB
RTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMaWJXZWJSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQUY1RjcxRTNDMEI0
NzAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFGQkU4MjEyMDZEODdGNjAwMEYwNzQxIC8qIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgyMjIw
NkRBNzlDMDAwRjA3NDEgLyogTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmg7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkJFODIzMjA2REE3OUMwMDBGMDc0MSAvKiBO
ZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW47IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgyNDIwNkRBNzlDMDAwRjA3NDEgLyog
TmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyogU2hhcmVkTWVt
b3J5Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVk
TWVtb3J5Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFG
OTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zNjQ2LDYgKzM2NTIsNyBAQAogCQk1MkQ1QTFCMjFDNTc0OUYyMDBE
RTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUyRDVBMUIzMUM1NzQ5RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUI0
MUM1NzQ5RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8q
IE5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMDI1ODJFMURDQkJEMUQwMERBODlD
MiAvKiBOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTMwMjU4MkYxRENCQkQxRDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJl
UmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0NhcHR1
cmVSZXNvdXJjZS5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVy
ZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMDI1ODMwMURDQkJE
MUQwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtDYXB0dXJlRXZlbnQuY3BwOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTUyOTMsNiArNTMwMCw3IEBACiAJCQkJMUE2NDI0NUMxMkRFMjlBMTAw
Q0FBRTJDIC8qIFVwZGF0ZUluZm8uaCAqLywKIAkJCQk1QzE5QTUxRTFGRDBCMTQ2MDBFRUEzMjMg
LyogVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuY3BwICovLAogCQkJCTVDMTlBNTFGMUZEMEIxNDcw
MEVFQTMyMyAvKiBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oICovLAorCQkJCTQxRkJFODIxMjA2
RDg3RjYwMDBGMDc0MSAvKiBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmggKi8sCiAJ
CQkJMUFDMTMzNjUxODU2NUI1NzAwRjNFQzA1IC8qIFVzZXJEYXRhLmNwcCAqLywKIAkJCQkxQUMx
MzM2NjE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuaCAqLywKIAkJCQkyNjg0MDU0QTE4Qjg2
NkZGMDAyMkMzOEIgLyogVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5jcHAgKi8sCkBAIC02
NDEyLDYgKzY0MjAsOSBAQAogCQkJCTVDMEIxNzdEMUU3Qzg4NjcwMEU5MTIzQyAvKiBOZXR3b3Jr
U29ja2V0U3RyZWFtLmNwcCAqLywKIAkJCQk1QzBCMTc3RTFFN0M4ODY3MDBFOTEyM0MgLyogTmV0
d29ya1NvY2tldFN0cmVhbS5oICovLAogCQkJCTVDMEIxNzdGMUU3Qzg4NjcwMEU5MTIzQyAvKiBO
ZXR3b3JrU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmluICovLAorCQkJCTQxRkJFODI0MjA2REE3OUMw
MDBGMDc0MSAvKiBOZXR3b3JrVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCAqLywKKwkJCQk0MUZC
RTgyMjIwNkRBNzlDMDAwRjA3NDEgLyogTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlci5oICov
LAorCQkJCTQxRkJFODIzMjA2REE3OUMwMDBGMDc0MSAvKiBOZXR3b3JrVXNlckNvbnRlbnRDb250
cm9sbGVyLm1lc3NhZ2VzLmluICovLAogCQkJCTQ2MjEwN0Q3MUYzOERCRDMwMERENzgxMCAvKiBQ
aW5nTG9hZC5jcHAgKi8sCiAJCQkJNUNFODVCMUYxQzg4RTY0MzAwNzBCRkNFIC8qIFBpbmdMb2Fk
LmggKi8sCiAJCQkJODNBMEVEMzMxRjc0N0NDNzAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmNw
cCAqLywKQEAgLTgyNzksNiArODI5MCw3IEBACiAJCQkJNTFGMDYwREQxNjU0MzE3NTAwRjMyODFE
IC8qIE5ldHdvcmtSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTVDMEIxNzc0
MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLywKIAkJCQk1QzBCMTc3NTFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVh
bU1lc3NhZ2VzLmggKi8sCisJCQkJNTJGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIE5ldHdvcmtV
c2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBMkQ4NDM3
MTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJMUEyRDg0MzgxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyTWVzc2FnZXMuaCAqLywKIAkJCQlDREEyOUEyNDFDQkVCNjdBMDA5MDFDQ0YgLyog
UGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMDY5Niw2
ICsxMDcwOCw4IEBACiAJCQkJNUMyMENCOUQxQkIwRENGQTAwODk1QkIxIC8qIE5ldHdvcmtTZXNz
aW9uQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzBCMTc4MTFFN0M4QzI2MDBFOTEyM0Mg
LyogTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzBCMTc3ODFF
N0M4ODBFMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0MUZCRTgyNjIwNkRGN0ZBMDAwRjA3NDEgLyogTmV0d29ya1Vz
ZXJDb250ZW50Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MkYwNjBFMTE2NTQz
MTg1MDBGMzI4MUIgLyogTmV0d29ya1VzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTMxMjYxRTE0OEZGODJDMDBCQTJBMzkgLyogTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTMxQTJFQzUwMTQ4OTk4MDUwMDgxMEQ3MSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEODQ4QzEyN0Y2QTQ5MDAx
RUI5NjIgLyogTlBJZGVudGlmaWVyRGF0YS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApp
bmRleCBiMTRhNTgwMzI2YTAyZDZkMTg0MWE2ZDg4YTRmODJjYjMxOTQ2MzI0Li5jNGFlMmMxZGYx
YzkzODc0ZTE0YzE3YjgzMjM0YWNmM2ExODk3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC00NTYsNiAr
NDU2LDEwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZy
YW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dl
YkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lLmxvYWRlcigpLmNsaWVudCgpKTsKKyAgICBXZWJGcmFt
ZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50
LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUg
PyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKwogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAgIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIg
PSBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAgICAgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9
IHJlcXVlc3Q7CkBAIC00NzIsMTQgKzQ3Niw5IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0
YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvCiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGxvYWRQYXJhbWV0ZXJzLm1haW5E
b2N1bWVudFVSTCA9IGRvY3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgpOwotCi0gICAgaWYgKGF1
dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkgewot
ICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLnBhZ2UoKSkgewotICAgICAgICAgICAgcGFn
ZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVhY2hDb250ZW50RXh0ZW5zaW9uKFsmbG9hZFBh
cmFtZXRlcnNdKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQ29udGVudEV4dGVuc2lvbnM6OkNv
bnRlbnRFeHRlbnNpb24mIGNvbnRlbnRFeHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICBsb2Fk
UGFyYW1ldGVycy5jb250ZW50UnVsZUxpc3RzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpZGVudGlm
aWVyLCBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdCY+KGNvbnRl
bnRFeHRlbnNpb24uY29tcGlsZWRFeHRlbnNpb24oKSkuZGF0YSgpKSk7Ci0gICAgICAgICAgICB9
LCAqZG9jdW1lbnRMb2FkZXIpOwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIEZJWE1FOiBJbnN0
ZWFkIG9mIHBhc3NpbmcgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgd2Ugc2hvdWxk
IGp1c3QgcGFzcyB3ZWJQYWdlSWQgdG8gTmV0d29ya1Byb2Nlc3MuCisgICAgaWYgKGF1dG8qIHBh
Z2UgPSBmcmFtZS5wYWdlKCkpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIgPSB3ZWJQYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyKCk7CiAjZW5kaWYKIAogICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggMjIzNWE4ZGYwNGQxYzRiY2E2ZDMwZWY1MzAwMzI5
NWQxYWUwNTk4YS4uYjllNTg1ODM1ZmUzMDhhODUwYTNkODUyN2Q4YWUwYjIzYzBmZjM3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgSGFzaE1h
cDx1aW50NjRfdCwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKj4mIHVzZXJDb250ZW50Q29udHJv
bGxlcnMoKQorc3RhdGljIEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKj4mIHVzZXJDb250ZW50Q29udHJvbGxlcnMoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPHVpbnQ2NF90LCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIqPj4gdXNlckNvbnRlbnRDb250cm9sbGVyczsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIqPj4gdXNlckNvbnRlbnRDb250cm9sbGVyczsKIAogICAgIHJldHVy
biB1c2VyQ29udGVudENvbnRyb2xsZXJzOwogfQpAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgV29y
bGRNYXAmIHdvcmxkTWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1SZWY8V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHVpbnQ2
NF90IGlkZW50aWZpZXIpCitSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKICAgICBhdXRvJiB1c2VyQ29udGVudENvbnRyb2xsZXJQdHIgPSB1
c2VyQ29udGVudENvbnRyb2xsZXJzKCkuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICBpZiAodXNlckNvbnRlbnRDb250cm9sbGVyUHRyKQpAQCAtNzgsMTcgKzc4
LDE3IEBAIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IFdlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6Z2V0T3JDcmVhdGUodWludDY0X3QgaWRlCiAgICAgcmV0dXJuIHVzZXJDb250ZW50Q29u
dHJvbGxlci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1XZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQorV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyLCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKIH0KIAogV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKCkKIHsKICAg
ICBBU1NFUlQodXNlckNvbnRlbnRDb250cm9sbGVycygpLmNvbnRhaW5zKG1faWRlbnRpZmllcikp
OwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKICAgICB1c2VyQ29udGVudENv
bnRyb2xsZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiB9CkBAIC0yNDIsNyArMjQyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVz
c2FnZSh3ZWJQYWdlLT5wYWdlSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJ
UEM6OkRhdGFSZWZlcmVuY2UodmFsdWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZp
ZXIoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpE
aWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT5wYWdlSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVu
dGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UodmFsdWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXIt
PmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICB9CiAKICAgICBSZWZQdHI8V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
LmgKaW5kZXggOWI3MmQ5NmM4YmJiNzc5YzFiZWI5YjFmMGFhYzIxMmMzYzllNDU1My4uZjU4ZDIx
ZThjZGZjNmJlZDljMDQ5ZGQyZGMzMGFmOTQ5ZDA4YWJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIKICNpbmNsdWRlICJX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Vz
ZXJDb250ZW50UHJvdmlkZXIuaD4KQEAgLTQ5LDEwICs1MCwxMCBAQCBjbGFzcyBXZWJVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHk7CiAKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyQ29udGVudFByb3ZpZGVyLCBwcml2YXRl
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcik7CisgICAg
c3RhdGljIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IGdldE9yQ3JlYXRlKFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcigpOwogCi0gICAgdWludDY0X3QgaWRlbnRpZmllcigpIHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfSAKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgYWRkVXNlclNjcmlwdChJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgV2ViQ29yZTo6VXNlclNjcmlwdCYmKTsKICAgICB2b2lk
IHJlbW92ZVVzZXJTY3JpcHRXaXRoVVJMKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBjb25z
dCBXZWJDb3JlOjpVUkwmKTsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKHVpbnQ2NF90IGlk
ZW50aWZpZXIpOworICAgIGV4cGxpY2l0IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcihVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKIAogICAgIC8vIFdlYkNvcmU6OlVzZXJDb250ZW50
UHJvdmlkZXIKICAgICB2b2lkIGZvckVhY2hVc2VyU2NyaXB0KEZ1bmN0aW9uPHZvaWQoV2ViQ29y
ZTo6RE9NV3JhcHBlcldvcmxkJiwgY29uc3QgV2ViQ29yZTo6VXNlclNjcmlwdCYpPiYmKSBjb25z
dCBmaW5hbDsKQEAgLTExMSw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVySW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYs
IHVpbnQ2NF90IHVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcklkZW50aWZpZXIpOwogI2VuZGlmCiAK
LSAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQ+LCBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3Jl
OjpVc2VyU2NyaXB0Pj4+IFdvcmxkVG9Vc2VyU2NyaXB0TWFwOwogICAgIFdvcmxkVG9Vc2VyU2Ny
aXB0TWFwIG1fdXNlclNjcmlwdHM7CkBAIC0xMjYsNyArMTI3LDYgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZDsKICNl
bmRpZgotCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA1Y2IwOTEyOWE1ZjY5MGJkNmNiNzYyZjBhMWFm
ZGM5ZDg2NTUyOWU1Li4zOGU5MTBhYjA1M2M2NGViYzJlOGQzNjZlY2VjOGFiM2I1ODQ4NjA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00Niw2ICs0
Niw3IEBACiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIK
ICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EaWN0aW9uYXJ5UG9wdXBJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUxvYWRlclR5cGVzLmg+CkBAIC0xMDY5LDYgKzEwNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBvcGVuR0xEaXNwbGF5TWFza0NoYW5nZWQodWludDMyX3QgZGlzcGxheU1hc2spOwogI2VuZGlm
CiAKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+
aWRlbnRpZmllcigpOyB9CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337024</attachid>
            <date>2018-04-02 13:37:49 -0700</date>
            <delta_ts>2018-04-02 15:07:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184205-20180402133748.patch</filename>
            <type>text/plain</type>
            <size>79721</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExMTlkN2JjZTY0ZDBhODI0
ZmNjMjAyMTYwOTU0YTZmZmFmYzI5MmEuLjk4OTA0MjBhNGQ0ZjhkZDNmM2VmM2NhOTQxMTJmYmQw
MTc4NzM5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDE4LTA0LTAyICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9jZXNz
IGdldCBDb250ZW50QmxvY2tlciBpbmZvcm1hdGlvbiBmcm9tIFVJUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MjA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBOZXR3b3JrUHJvY2Vz
cyBnZXQgY29udGVudCBibG9ja2VycyBmcm9tIFVJUHJvY2VzcyBkaXJlY3RseS4KKyAgICAgICAg
QmVmb3JlIHRoYXQgcGF0Y2gsIFdlYlByb2Nlc3Mgc2VudCBjb250ZW50IGJsb2NrZXJzIHRvIE5l
dHdvcmtQcm9jZXNzIGZvciBlYWNoIFBpbmdMb2FkLgorICAgICAgICBJbnN0ZWFkLCBXZWJQcm9j
ZXNzIHNlbmRzIHRoZSBjb250ZW50IGJsb2NrZXIgaWRlbnRpZmllciBmb3IgZWFjaCBQaW5nTG9h
ZCBhbmQgTmV0d29ya1Byb2Nlc3MgZmV0Y2hlcyB0aGUgY29udGVudCBibG9ja2VyIG9uY2UuCisK
KyAgICAgICAgVGhpcyBpcyBib3RoIG1vcmUgZWZmaWNpZW50IHRoYW4gcGFzc2luZyB0aGVtIGZv
ciBlYWNoIFBpbmdMb2FkIGFuZCBzYWZlciBpbiB0aGUgc2Vuc2UKKyAgICAgICAgdGhhdCBhIGNv
bXByb21pc2VkIFdlYlByb2Nlc3Mgd2lsbCBub3QgYmUgYWJsZSB0byBieXBhc3MgYW55IG9mIHRo
ZXNlLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCBOZXR3b3JrUHJvY2VzcyBzaG91bGQgZ2V0IHRo
ZSBjb250ZW50IGJsb2NrZXIgaWRlbnRpZmllciBkaXJlY3RseSBmcm9tIHRoZSBXZWJQYWdlSUQg
YXR0YWNoZWQgdG8gdGhlIHJlcXVlc3QuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBi
ZWFjb24rY29udGVudCBibG9ja2VyIHRlc3RzLgorCisgICAgICAgIERpZCBzb21lIHJlZmFjdG9y
aW5nIHRvIGFkZCBhIHR5cGVkIGNvbnRlbnQgYmxvY2tlciBpZGVudGlmaWVyLgorICAgICAgICBP
bmNlIE5ldHdvcmtQcm9jZXNzIGZldGNoZXMgYSBnaXZlbiBjb250ZW50IGJsb2NrZXIsIHRoZSBj
b250ZW50IGJsb2NrZXIgd2lsbCBzZW5kIGFueSBtb2RpZmljYXRpb24gdG8gTmV0d29ya1Byb2Nl
c3MuCisgICAgICAgIEludHJvZHVjZWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIgdG8g
aGFuZGxlIHRoZSBjb250ZW50IGJsb2NrZXJzIGluIE5ldHdvcmtQcm9jZXNzLgorCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250aW51ZUNoZWNraW5nUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxl
c0ZvckxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OnNldENvbnRlbnRFeHRlbnNp
b25Db250cm9sbGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6Om5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxl
TGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OnJlbW92ZUNvbnRl
bnRSdWxlTGlzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5h
Z2VyOjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OnJlbW92ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW46IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VHcm91cERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VHcm91cERhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6fk5l
dHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojpjb250ZW50RXh0ZW5zaW9uUnVsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpnZXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRVc2VyQ29udGVudFdvcmxkVXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNj
cmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVBbGxVc2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENv
bnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OmFkZE5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZU5ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNvbnRlbnRFeHRl
bnNpb25SdWxlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9h
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBjb25zdCk6CisKIDIwMTgtMDQtMDIgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
IERyYWdBbmREcm9wSGFuZGxlci5jcHAgc2hvdWxkIGluY2x1ZGUgR1VuaXF1ZVB0ckd0ay5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dAppbmRleCA2MGU5MmI3ZTczOTAzNGQ5YTc4ZDIzNTFiMjk4Mjc2ZDRlMDUx
ZDE2Li5hNWI5ZjFkZTliYmFiNjczZjMzMjY0NGUyZWRiMWE3Nzc2N2MzODkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKQEAgLTEwNyw2ICsxMDcsNyBAQCBzZXQoV2ViS2l0X1NPVVJDRVMKIAogICAgIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKICAgICBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKyAgICBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKICAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTYxOSw2ICs2
MjAsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAKICAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCiAgICAgTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KICAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KICAgICBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggOWQ2NmMwZGY2ZWM3NjQyZjRlMDBiYzkzMWYxMmUxN2M2MWVhYmY0Yy4uZGEwYTUyZGFl
MGFhYWNiMzIwOTUzNDg1YjkxOTQ4ODAwODc2YTc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMTE1LDYgKzExNSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIE5ldHdv
cmtSVENTb2NrZXQgXAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBcCiAgICAgTmV0d29ya1Nv
Y2tldFN0cmVhbSBcCisgICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIgXAogICAgIFBs
dWdpbkNvbnRyb2xsZXJQcm94eSBcCiAgICAgUGx1Z2luUHJvY2VzcyBcCiAgICAgUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NTIzZTAzM2Y3ZGZjODJiZjdlN2ZlZmFkNDE2NWQzOWM4Y2ExMmRkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlci5jcHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKKworI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6Ok5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyKCkgPSBkZWZhdWx0OworTmV0d29ya0NvbnRlbnRSdWxl
TGlzdE1hbmFnZXI6On5OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpCit7CisgICAgYXV0
byBwZW5kaW5nQ2FsbGJhY2tzID0gV1RGTW92ZShtX3BlbmRpbmdDYWxsYmFja3MpOworICAgIGlm
IChwZW5kaW5nQ2FsbGJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCBiYWNrZW5k
OworICAgIGZvciAoYXV0byYgY2FsbGJhY2tzIDogcGVuZGluZ0NhbGxiYWNrcy52YWx1ZXMoKSkg
eworICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAgICAgICAgICAg
Y2FsbGJhY2soYmFja2VuZCk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyOjpjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBCYWNrZW5kQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZmluZChpZGVudGlm
aWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZW5k
KCkpIHsKKyAgICAgICAgY2FsbGJhY2soKml0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9wZW5kaW5nQ2FsbGJhY2tzLmVuc3VyZShpZGVudGlmaWVyLCBbXSB7
CisgICAgICAgIHJldHVybiBWZWN0b3I8QmFja2VuZENhbGxiYWNrPiB7IH07CisgICAgfSkuaXRl
cmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkNvbnRlbnRFeHRlbnNpb25SdWxlcyB7IGlkZW50aWZpZXIg
fSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFkZENvbnRl
bnRSdWxlTGlzdHMoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3RE
YXRhPj4mIGNvbnRlbnRSdWxlTGlzdHMpCit7CisgICAgYXV0byYgYmFja2VuZCA9ICptX2NvbnRl
bnRFeHRlbnNpb25CYWNrZW5kcy5lbnN1cmUoaWRlbnRpZmllciwgW10geworICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4
dGVuc2lvbnNCYWNrZW5kPigpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAgIGZvciAo
Y29uc3QgYXV0byYgY29udGVudFJ1bGVMaXN0IDogY29udGVudFJ1bGVMaXN0cykgeworICAgICAg
ICBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEgY29udGVudFJ1bGVMaXN0RGF0YSA9IGNv
bnRlbnRSdWxlTGlzdC5zZWNvbmQ7CisgICAgICAgIGF1dG8gY29tcGlsZWRDb250ZW50UnVsZUxp
c3QgPSBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoY29udGVudFJ1
bGVMaXN0RGF0YSkpOworICAgICAgICBiYWNrZW5kLmFkZENvbnRlbnRFeHRlbnNpb24oY29udGVu
dFJ1bGVMaXN0LmZpcnN0LCBXVEZNb3ZlKGNvbXBpbGVkQ29udGVudFJ1bGVMaXN0KSk7CisgICAg
fQorCisgICAgYXV0byBwZW5kaW5nQ2FsbGJhY2tzID0gbV9wZW5kaW5nQ2FsbGJhY2tzLnRha2Uo
aWRlbnRpZmllcik7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHBlbmRpbmdDYWxsYmFja3Mp
CisgICAgICAgIGNhbGxiYWNrKGJhY2tlbmQpOworCit9CisKK3ZvaWQgTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXI6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZmluZChpZGVudGlmaWVyKTsK
KyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9yLT52YWx1ZS0+cmVtb3ZlQ29udGVudEV4dGVu
c2lvbihuYW1lKTsKK30KKwordm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6cmVt
b3ZlQWxsQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fY29udGVudEV4dGVuc2lvbkJhY2tl
bmRzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fY29udGVudEV4dGVu
c2lvbkJhY2tlbmRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpdGVyYXRvci0+dmFs
dWUtPnJlbW92ZUFsbENvbnRlbnRFeHRlbnNpb25zKCk7Cit9CisKK3ZvaWQgTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXI6OnJlbW92ZShVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCit7CisgICAgbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMucmVtb3ZlKGlk
ZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGY3NmNlMjU5YWE3MzY0ZGMwZTc2MTJlMGRkMzM5NjlhNjZlMDc4NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1h
bmFnZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0
RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFByb3ZpZGVyLmg+CisKK25hbWVzcGFjZSBJUEMg
eworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciB7CitwdWJsaWM6Cisg
ICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKTsKKyAgICB+TmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICB1c2luZyBCYWNrZW5kQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQmKT47CisgICAgdm9pZCBjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQo
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgQmFja2VuZENhbGxiYWNrJiYpOworCitw
cml2YXRlOgorICAgIHZvaWQgYWRkQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhPj4mKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRlbnRSdWxlTGlzdChV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IHZvaWQgcmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZShVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
KTsKKworICAgIEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQ+PiBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kczsKKyAgICBIYXNoTWFwPFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFZlY3RvcjxCYWNrZW5kQ2FsbGJhY2s+PiBtX3BlbmRp
bmdDYWxsYmFja3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTAxNjQxNmY0ZjM0NjE2NjZlZjI3MWI2ZjU5NDVhYTIx
YThiMDZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBA
CisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQorCittZXNzYWdlcyAtPiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlciB7CisgICAgUmVtb3ZlKFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIEFkZENvbnRlbnRSdWxlTGlzdHMoV2ViS2l0OjpVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+IGNvbnRlbnRGaWx0ZXJz
KQorICAgIFJlbW92ZUNvbnRlbnRSdWxlTGlzdChXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIG5hbWUpCisgICAgUmVtb3ZlQWxsQ29udGVu
dFJ1bGVMaXN0cyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggYTE0NWU4MTNmZjRhYWQzZjFmNzViYWJlZjJk
YTk4Y2IyNmM2ZDQ3Mi4uZTRlNzEzZjcyMWIzZTAyZGYxYTNhZTY2Mzc0Njc4ZTIzMDA3ZmVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVj
a2VyLmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIKKyNpbmNsdWRl
ICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hl
Lmg+CkBAIC05NSwxMiArOTcsMjAgQEAgTmV0d29ya0xvYWRDaGVja2VyOjpSZXF1ZXN0T3JFcnJv
ciBOZXR3b3JrTG9hZENoZWNrZXI6OnJldHVybkVycm9yKFN0cmluZyYmIGVycm8KIHZvaWQgTmV0
d29ya0xvYWRDaGVja2VyOjpjaGVja1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
VmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewogI2lmIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCi0gICAgaWYgKHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKHJlcXVl
c3QpLmJsb2NrZWRMb2FkKSB7Ci0gICAgICAgIGhhbmRsZXIocmV0dXJuRXJyb3IoQVNDSUlMaXRl
cmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQgZXh0ZW5zaW9uIikpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChXVEZNb3ZlKHJl
cXVlc3QpLCBbdGhpcywgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildKGF1dG8mJiByZXF1ZXN0
LCBhdXRvIHN0YXR1cykgbXV0YWJsZSB7CisgICAgICAgIGlmIChzdGF0dXMuYmxvY2tlZExvYWQp
IHsKKyAgICAgICAgICAgIGhhbmRsZXIodGhpcy0+cmV0dXJuRXJyb3IoQVNDSUlMaXRlcmFsKCJC
bG9ja2VkIGJ5IGNvbnRlbnQgZXh0ZW5zaW9uIikpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICB0aGlzLT5jb250aW51ZUNoZWNraW5nUmVxdWVzdChXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29udGludWVD
aGVja2luZ1JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7CiAjZW5k
aWYKK30KIAordm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFZhbGlkYXRpb25IYW5kbGVyJiYgaGFuZGxlcikK
K3sKICAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5ID0gdGhpcy0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCkpIHsKICAgICAgICAgaWYgKGlzUmVkaXJlY3RlZCgpKSB7CiAgICAgICAg
ICAgICBVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsKQEAgLTIyOSwyMSArMjM5LDE4IEBAIENvbnRl
bnRTZWN1cml0eVBvbGljeSogTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xp
Y3koKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLUNvbnRlbnRF
eHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIE5ldHdvcmtMb2FkQ2hlY2tlcjo6
Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kKCkKK3ZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpwcm9j
ZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyYpPiYmIGNhbGxiYWNrKQogewotICAg
IGlmICghbV9jb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQpIHsKLSAgICAgICAgbV9jb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fY29u
dGVudFJ1bGVMaXN0cykKLSAgICAgICAgICAgIG1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kLT5h
ZGRDb250ZW50RXh0ZW5zaW9uKHBhaXIuZmlyc3QsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0
OjpjcmVhdGUoV1RGTW92ZShwYWlyLnNlY29uZCkpKTsKKyAgICBpZiAoIW1fdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcikgeworICAgICAgICBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tl
ZFN0YXR1cyBzdGF0dXM7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCksIHN0YXR1
cyk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmV0dXJuICptX2NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZDsKLX0KLQotQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMgTmV0d29y
a0xvYWRDaGVja2VyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgYXV0byBzdGF0dXMgPSBjb250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQoKS5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yUGluZ0xvYWQocmVxdWVz
dC51cmwoKSwgbV9tYWluRG9jdW1lbnRVUkwpOwotICAgIGFwcGx5QmxvY2tlZFN0YXR1c1RvUmVx
dWVzdChzdGF0dXMsIG51bGxwdHIsIHJlcXVlc3QpOwotICAgIHJldHVybiBzdGF0dXM7CisgICAg
TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
KCkuY29udGVudEV4dGVuc2lvbnNCYWNrZW5kKCptX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBiYWNr
ZW5kKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBiYWNrZW5kLnByb2Nlc3NDb250
ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZChyZXF1ZXN0LnVybCgpLCBtX21haW5Eb2N1bWVu
dFVSTCk7CisgICAgICAgIGFwcGx5QmxvY2tlZFN0YXR1c1RvUmVxdWVzdChzdGF0dXMsIG51bGxw
dHIsIHJlcXVlc3QpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3QpLCBzdGF0dXMp
OworICAgIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCmlu
ZGV4IGVjZmI1ZWI1YmNhNzdjMjdlMWQ0YWNkODJiOGI5YzhhMjllZDQ0MjIuLjAzMmQ1ZjQzODcz
ZGNlZWJjY2VmNDJmMzU1OWZjNTllMmM1ZjY0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaApAQCAtMjUsOCArMjUsOCBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtNDAsOSArNDAsMTIgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjsKIAotY2xh
c3MgTmV0d29ya0xvYWRDaGVja2VyIHsKK2NsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogcHVibGljOgotICAgIE5ldHdvcmtM
b2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1vZGUsIGJvb2wgc2hvdWxkRm9sbG93
UmVkaXJlY3RzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUEFMOjpTZXNzaW9u
SUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgV2ViQ29yZTo6VVJMJiYsIFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrTG9hZENoZWNr
ZXI+IGNyZWF0ZShXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1vZGUgbW9kZSwgYm9vbCBzaG91bGRG
b2xsb3dSZWRpcmVjdHMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXAmJiBvcmlnaW5hbEhlYWRlcnMsIFdlYkNvcmU6OlVSTCYmIHVybCwgUmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbikKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtMb2FkQ2hlY2tlciB7IG1vZGUsIHNob3VsZEZvbGxv
d1JlZGlyZWN0cywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNlc3Npb25JRCwgV1RGTW92ZShv
cmlnaW5hbEhlYWRlcnMpLCBXVEZNb3ZlKHVybCksIFdURk1vdmUoc291cmNlT3JpZ2luKSB9KTsK
KyAgICB9CiAgICAgfk5ldHdvcmtMb2FkQ2hlY2tlcigpOwogCiAgICAgdXNpbmcgUmVxdWVzdE9y
RXJyb3IgPSBFeHBlY3RlZDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3I+OwpAQCAtNTIsMTAgKzU1LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q1NQ
UmVzcG9uc2VIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyYmIGhlYWRlcnMpIHsgbV9jc3BSZXNwb25zZUhlYWRlcnMgPSBXVEZNb3ZlKGhlYWRlcnMp
OyB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICB2b2lkIHNldENvbnRlbnRF
eHRlbnNpb25SdWxlTGlzdHMoV2ViQ29yZTo6VVJMJiYgbWFpbkRvY3VtZW50VVJMLCBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4mJiBjb250
ZW50UnVsZUxpc3RzKQorICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoV2Vi
Q29yZTo6VVJMJiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5Eb2N1
bWVudFVSTCA9IFdURk1vdmUobWFpbkRvY3VtZW50VVJMKTsKLSAgICAgICAgbV9jb250ZW50UnVs
ZUxpc3RzID0gV1RGTW92ZShjb250ZW50UnVsZUxpc3RzKTsKKyAgICAgICAgbV91c2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICB9CiAjZW5kaWYKIApAQCAt
NjMsMTIgKzY2LDE2IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k7IH0KIAogcHJpdmF0ZToKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoV2Vi
Q29yZTo6RmV0Y2hPcHRpb25zOjpNb2RlLCBib29sIHNob3VsZEZvbGxvd1JlZGlyZWN0cywgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpI
VFRQSGVhZGVyTWFwJiYsIFdlYkNvcmU6OlVSTCYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+JiYpOworCiAgICAgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50
U2VjdXJpdHlQb2xpY3koKSBjb25zdDsKICAgICBib29sIGlzQ2hlY2tpbmcoKSBjb25zdCB7IHJl
dHVybiAhIW1fY29yc1ByZWZsaWdodENoZWNrZXI7IH0KICAgICBib29sIGlzUmVkaXJlY3RlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RDb3VudDsgfQogCiAgICAgdm9pZCBjaGVja1JlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFZhbGlkYXRpb25IYW5kbGVyJiYpOwogCisg
ICAgdm9pZCBjb250aW51ZUNoZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CisKICAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNr
KGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwogICAgIHZvaWQgY2hlY2tDT1JTUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CiAgICAgdm9p
ZCBjaGVja0NPUlNSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
VmFsaWRhdGlvbkhhbmRsZXImJik7CkBAIC03Nyw4ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgUmVx
dWVzdE9yRXJyb3IgcmV0dXJuRXJyb3IoU3RyaW5nJiYgZXJyb3IpOwogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKLSAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kJiBjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoKTsKLSAgICBXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBwcm9jZXNzQ29udGVudEV4dGVu
c2lvblJ1bGVzRm9yTG9hZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHBy
b2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyYpPiYmKTsKICNl
bmRpZgogCiAgICAgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpNb2RlIG1fbW9kZTsKQEAgLTkyLDE2
ICs5OCwxMyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVyczsKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFdlYkNvcmU6OlVSTCBtX21haW5Eb2N1bWVu
dFVSTDsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVs
ZUxpc3REYXRhPj4gbV9jb250ZW50UnVsZUxpc3RzOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyPiBtX2NvcnNQcmVmbGlnaHRDaGVja2VyOwogICAgIGJvb2wgbV9pc1NhbWVPcmlnaW5S
ZXF1ZXN0IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9pc1NpbXBsZVJlcXVlc3QgeyB0cnVlIH07CiAg
ICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kPiBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZDsKLSNlbmRpZgog
ICAgIHNpemVfdCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAgICAgV2ViQ29yZTo6VVJMIG1fcHJl
dmlvdXNVUkw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAppbmRleCAxYzU1ODhlNzk0MzQ5OGZhNDE5NzQ0YTgyOWU4Yjc0NDRmMzgzMDdl
Li43OTc3ZGExMzIwNTY1MDViOGQwMzdkY2NhNGQxMzY4YzgzZWMxMWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNz
YWdlcy5oIgpAQCAtMTcxLDYgKzE3MiwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlcgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Ok5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAg
bV9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgZGlk
UmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGQ4
Y2VhNjlkZTg3NjI5OTJhYjAyOTc0ZTQ1YTc4NzE4NDQwZDc1Y2QuLmNlNDEyYjQ1OTI4NmIzNjlk
ZjEyY2QwOGYzMzM4NWFkOGM5ZGRkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDaGlsZFBy
b2Nlc3MuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXJNYXAuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMTU3LDYgKzE1OCwxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBB
TDo6U2Vzc2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9t
YXRpb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKKyAgICBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciYgbmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIoKSB7IHJldHVybiBtX05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
OyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2VzcygpOwogICAgIH5OZXR3
b3JrUHJvY2VzcygpOwpAQCAtMjkxLDYgKzI5NiwxMCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JN
KElPUykKICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRhYmFzZVRy
YWNrZXI7CiAjZW5kaWYKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIgbV9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
cjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCmluZGV4IDAxNzJjM2I0MTliODFmMTVkM2Y3ODlhZDhlOGQ2ZjNhZjk4OTFkNTgu
LjQ0MDc3ZDNjZTVlZjFkZDBiNTk0MDRlNWY5ZTZkNzY3MTcwMzIyZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGVuY29kZXIgPDwgbWFpbkRvY3VtZW50VVJM
OwotICAgIGVuY29kZXIgPDwgY29udGVudFJ1bGVMaXN0czsKKyAgICBlbmNvZGVyIDw8IHVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIH0KIApAQCAtMTg0LDExICsxODQs
MTEgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5tYWluRG9jdW1lbnRVUkwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE+Pj4gY29udGVudFJ1bGVMaXN0czsKLSAgICBkZWNvZGVyID4+IGNvbnRlbnRSdWxl
TGlzdHM7Ci0gICAgaWYgKCFjb250ZW50UnVsZUxpc3RzKQorICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPj4gdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXI7CisgICAgaWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0LmNvbnRlbnRSdWxlTGlzdHMgPSBXVEZN
b3ZlKCpjb250ZW50UnVsZUxpc3RzKTsKKyAgICByZXN1bHQudXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciA9ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiAK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCA3N2RlODU1NTNl
ZGY0Yzk4Y2JhN2M0NjczZmI2ZTNiNzEwZDRlM2JhLi4yY2MzM2FjZTliZjAwOTIzMTlhYmJlNTZj
YWZiYTBiODJkNTU3MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0yNyw3ICsyNyw3
IEBACiAKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
LmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
TG9hZGVyT3B0aW9ucy5oPgpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQogICAgIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1lbnRVUkw7Ci0g
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YT4+IGNvbnRlbnRSdWxlTGlzdHM7CisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IGJj
NDg5NDM2ODhkNTA2NzM5MTFmMWFhZGUwYThjNzczNzZkMjRhZDUuLjI1Zjk2M2EyMDFjYTIxYjlk
YWE2NzM5MWVkY2ZiNzhjMzcxMGM5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgUGluZ0xvYWQ6OlBpbmdMb2FkKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgSFRUUEhlYWRlck1hcCYmIG8K
ICAgICA6IG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQogICAgICwgbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fdGltZW91dFRp
bWVyKCp0aGlzLCAmUGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVkKQotICAgICwgbV9uZXR3b3Jr
TG9hZENoZWNrZXIobWFrZVVuaXF1ZVJlZjxOZXR3b3JrTG9hZENoZWNrZXI+KG1fcGFyYW1ldGVy
cy5tb2RlLCBtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBtX3BhcmFtZXRlcnMu
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIFdURk1vdmUo
b3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgp
IH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpKSkKKyAgICAsIG1fbmV0d29y
a0xvYWRDaGVja2VyKE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y3JlYXRlKG1fcGFyYW1ldGVycy5tb2Rl
LCBtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBtX3BhcmFtZXRlcnMuc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIFdURk1vdmUob3JpZ2lu
YWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1f
cGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpKSkKIHsKIAogICAgIGlmIChtX3BhcmFt
ZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+
c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdURk1vdmUobV9wYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVh
ZGVycy52YWx1ZSgpKSk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlci0+c2V0Q29udGVudEV4dGVuc2lvblJ1bGVMaXN0cyhXVEZNb3ZlKG1f
cGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwpLCBXVEZNb3ZlKG1fcGFyYW1ldGVycy5jb250ZW50
UnVsZUxpc3RzKSk7CisgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnNldENvbnRlbnRFeHRlbnNp
b25Db250cm9sbGVyKFdURk1vdmUobV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCksIG1fcGFy
YW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKICNlbmRpZgogCiAgICAg
Ly8gSWYgdGhlIHNlcnZlciBuZXZlciByZXNwb25kcywgdGhpcyBvYmplY3Qgd2lsbCBoYW5nIGFy
b3VuZCBmb3JldmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4
IDc0YTY5ODU3NzZhOWZiNWE3ZjU5MTViZGU4NDY1NDVjMDNmYWJjODAuLmExZWY2ZTczMTdmZTU1
ZjZjNWRjZjUzYWM3NTUzYTljYjA3Yzk2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICBSZWZQdHI8
TmV0d29ya0RhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6VGltZXIgbV90aW1lb3V0VGlt
ZXI7Ci0gICAgVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4gbV9uZXR3b3JrTG9hZENoZWNr
ZXI7CisgICAgUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4gbV9uZXR3b3JrTG9hZENoZWNrZXI7CiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fbGFzdFJlZGlyZWN0
aW9uUmVxdWVzdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CmluZGV4IDI3ZjA1YzdiMzgxNWJmNTFjNjkzNDRlMWE2NmRlNTdmMDAwMGU3NWQuLmI3YTRjOTY1
Yzc5MDExNTA5YmI1NTI1NzZmZDUwNTBjNjY0NTM4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMTg1LDYgKzE4NSw3IEBAIGRlZiBmb3J3YXJkX2RlY2xh
cmF0aW9uc19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICAgICB0eXBlc19ieV9uYW1l
c3BhY2VbJ0lQQyddLnVwZGF0ZShbKCdjbGFzcycsICdDb25uZWN0aW9uJyldKQogCiAgICAgbm9f
Zm9yd2FyZF9kZWNsYXJhdGlvbl90eXBlcyA9IGZyb3plbnNldChbCisgICAgICAgICdTdHJpbmcn
LAogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VX
b3JrZXJKb2JJZGVudGlmaWVyJywKQEAgLTE5Miw3ICsxOTMsNyBAQCBkZWYgZm9yd2FyZF9kZWNs
YXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjZWl2ZXIpOgogICAgICAgICAnV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyJywKLSAgICAgICAgJ1N0cmluZycsCisgICAgICAgICdXZWJLaXQ6
OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXInLAogICAgIF0pCiAKICAgICBmb3IgcGFy
YW1ldGVyIGluIHJlY2VpdmVyLml0ZXJwYXJhbWV0ZXJzKCk6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWIzZmI0M2Y5NDAxMDg3ZjgwYzBiY2Y3NDBiNmViOWU0ODBhMDRiNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51
bSBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggNzA4OWRhOGIyYTg2ZGZkZWY4
NzViOTg4MGI2ZjRmYWIwM2E3MmRhOS4uODY3MTU5YjY4ZjQwMmYyOWFlZGRiN2YzMjllNzgwMDlm
ZjE5YTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKQEAgLTE3OSw4ICsxNzksMTMgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBD
OjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXJD
b250ZW50Q29udHJvbGxlcklEKSkKKworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBk
ZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CisgICAgaWYgKCF1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQgPSAqdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcjsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy52aXNpdGVkTGlua1RhYmxlSUQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy53ZWJzaXRlRGF0YVN0b3JlSUQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4
IDZiZDE5NjFmM2M0ZDQ1MDA0ZGRkZmQ2MjAxYzY4MjdkOTdlOTA0MDIuLmJhZWJhZjRkNDEwMDg5
NjVhNTZmNGMxYzNmMjFhY2U4NzNlYTQzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTk4LDcgKzk4LDcgQEAgc3RydWN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRDsK
ICAgICB1aW50NjRfdCBoaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlEOwogCi0gICAgdWludDY0
X3QgdXNlckNvbnRlbnRDb250cm9sbGVySUQ7CisgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJRDsKICAgICB1aW50NjRfdCB2aXNpdGVkTGlu
a1RhYmxlSUQ7CiAgICAgdWludDY0X3Qgd2Vic2l0ZURhdGFTdG9yZUlEOwogICAgIGJvb2wgY2Fu
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
R3JvdXBEYXRhLmNwcAppbmRleCAyNzUwMDdhZjcxNWIyNWZhN2IyZDZkOWQ3MDVmZTc1MzI5NTll
NTUxLi5hYmRhN2Q1ZTVjNjRlMDE1NGFkMzU2OTk2N2FlODc2ZjZmNjlkYzMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcApAQCAtNTMsMTAgKzUzLDExIEBAIHN0
ZDo6b3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gV2ViUGFnZUdyb3VwRGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBib29sIHZpc2libGVUb0hpc3RvcnlDbGllbnQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB1aW50NjRfdCB1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcikpCisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4g
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBpZiAoIXVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0
dXJuIHsgeyBpZCwgcGFnZUdyb3VwSUQsIHZpc2libGVUb0luamVjdGVkQnVuZGxlLCB2aXNpYmxl
VG9IaXN0b3J5Q2xpZW50LCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH0gfTsKKyAg
ICByZXR1cm4geyB7IGlkLCBwYWdlR3JvdXBJRCwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIHZp
c2libGVUb0hpc3RvcnlDbGllbnQsICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH0g
fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
R3JvdXBEYXRhLmgKaW5kZXggMmM2MWU1OTdiNjU2Y2Q4YjgyNzZkMjBjNDZlODQxYzk5ZjgwYjVi
MC4uOTMwZDhlZTk4YWVlNmUyNjcxNTFkMTY2ZDk4MDE5MjQ5MmIwMzliMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC00Myw3
ICs0NCw3IEBAIHN0cnVjdCBXZWJQYWdlR3JvdXBEYXRhIHsKICAgICBib29sIHZpc2libGVUb0lu
amVjdGVkQnVuZGxlOwogICAgIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudDsKIAotICAgIHVp
bnQ2NF90IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CisgICAgVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2MTM4OTNlNDMwYmJi
YzllZDcwMzRhZWIxNGZjNThkYzVlMjhlZmJjLi41YzY5NDIyNDA0YjczMGVkZTZmMmE0NWIxMzdk
ZjJmMDE5YmY0YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI2LDE5ICsyNiwyMyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKIAorI2luY2x1
ZGUgIkFQSUNvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpZiBFTkFC
TEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNlbmRpZgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisj
aW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCkBAIC04NSw2
ICs4OSwxMCBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp+TmV0d29ya1Byb2Nlc3NQcm94eSgpCiAg
ICAgQVNTRVJUKG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuaXNFbXB0eSgpKTsK
ICAgICBBU1NFUlQobV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3MuaXNFbXB0eSgp
KTsKICAgICBBU1NFUlQobV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJh
Y2tzLmlzRW1wdHkoKSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBmb3Ig
KGF1dG8qIHByb3h5IDogbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKQorICAgICAg
ICBwcm94eS0+cmVtb3ZlTmV0d29ya1Byb2Nlc3MoKnRoaXMpOworI2VuZGlmCiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6Okxh
dW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCkBAIC01NDAsNCArNTQ4LDI4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdM
b2NrZWRGaWxlcykKICAgICB9CiB9CiAKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbnRlbnRFeHRlbnNpb25SdWxlcyhVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5ID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OmdldChpZGVudGlmaWVyKSkgeworICAgICAgICBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3hpZXMuYWRkKHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KTsKKyAgICAgICAgd2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZE5ldHdvcmtQcm9jZXNzKCp0aGlzKTsKKwor
ICAgICAgICBhdXRvIHJ1bGVzID0gV1RGOjptYXAod2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHktPmNvbnRlbnRFeHRlbnNpb25SdWxlcygpLCBbXShhdXRvJiYga2V5VmFsdWUpIC0+IHN0ZDo6
cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4geworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGtleVZhbHVlLnZhbHVlLT5uYW1lKCksIGtleVZhbHVl
LnZhbHVlLT5jb21waWxlZFJ1bGVMaXN0KCkuZGF0YSgpKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpBZGRDb250ZW50
UnVsZUxpc3RzIHsgaWRlbnRpZmllciwgcnVsZXMgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OkFk
ZENvbnRlbnRSdWxlTGlzdHMgeyBpZGVudGlmaWVyLCB7IH0gfSwgMCk7Cit9CisKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5JiBwcm94eSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlIHsgcHJveHkuaWRlbnRp
ZmllcigpIH0sIDApOworICAgIG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcy5yZW1v
dmUoJnByb3h5KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
aW5kZXggZmZmYjQxNGY5NjUxNzlkMjYxMGE2MTNlMmJlNmVlM2NkMzNlMTAyZS4uYzlkYzc5MmE5
YjVlMDdjY2ZlMTA1MjlhN2UxOWFlNmFiYTQ5MGQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhy
b3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgorI2luY2x1ZGUg
IlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KQEAgLTU5LDYgKzYwLDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBlbnVtIGNsYXNzIFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVj
dCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKK2NsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5Owogc3RydWN0IFdlYnNpdGVEYXRhOwogCiBjbGFzcyBOZXR3b3JrUHJv
Y2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJv
dHRsZXJDbGllbnQgewpAQCAtOTQsNiArOTYsMTAgQEAgcHVibGljOgogICAgIFByb2Nlc3NUaHJv
dHRsZXImIHRocm90dGxlcigpIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgV2ViUHJvY2Vz
c1Bvb2wmIHByb2Nlc3NQb29sKCkgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQogCisjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICB2b2lkIGRpZERlc3Ryb3lXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYpOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwog
CkBAIC0xMzksNiArMTQ1LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBhbGxTdG9yYWdlQWNjZXNz
RW50cmllc1Jlc3VsdChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgdm9pZCBj
b250ZW50RXh0ZW5zaW9uUnVsZXMoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7Cisj
ZW5kaWYKKwogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRGaW5p
c2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KSBvdmVycmlkZTsKIApAQCAtMTYxLDYgKzE3MSwxMCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4+IG1fd3JpdGVC
bG9iVG9GaWxlUGF0aENhbGxiYWNrTWFwOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdlQWNjZXNzUmVz
cG9uc2VDYWxsYmFja01hcDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+PiBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzQ2FsbGJhY2tNYXA7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIEhh
c2hTZXQ8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqPiBtX3dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3hpZXM7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDYxMjZlYTVkODdkNjRhZGMyZThkNmVlYzI2
MzgxZDBjZDhjNzI1ZTIuLjE4NGMyZmQ1NDQxZjhkODcwNDM2ZDE1Yjc2YTRkMmRmZjYzNzI4NmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ3LDQgKzQ3LDggQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgSEFWRShDRk5F
VFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgU3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1
bHQoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXNSZXN1bHQoVmVjdG9yPFN0cmluZz4gZG9tYWlucywgdWludDY0X3QgY29udGV4
dElkKQorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBDb250ZW50RXh0ZW5z
aW9uUnVsZXMoV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApp
bmRleCA0MjMzYzhlNWNmZmM2NjIwMTMxY2RiYjgzYzAwMmRjYTU1NjM0MWJiLi40MmZiOGVhZTNk
YjJkZGZmOTI0ZTAxOWQ2NzE0YjI2ODI0ODJhOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiQVBJVXNlclNj
cmlwdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCkBAIC00NiwxOCArNDgsMzcgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyBIYXNoTWFwPFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4mIHdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3hpZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
TWFwPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5Kj4+IHByb3hpZXM7CisgICAgcmV0dXJuIHByb3hpZXM7Cit9CisKKworV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkqIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpn
ZXQoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJl
dHVybiB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkuZ2V0KGlkZW50aWZpZXIpOwor
fQorICAgIAogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KCkKLSAgICA6IG1fdXNlclNjcmlwdHMoQVBJOjpBcnJheTo6Y3JlYXRlKCkp
CisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigpKQorICAgICwgbV91c2VyU2NyaXB0cyhBUEk6OkFy
cmF5OjpjcmVhdGUoKSkKICAgICAsIG1fdXNlclN0eWxlU2hlZXRzKEFQSTo6QXJyYXk6OmNyZWF0
ZSgpKQogeworICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMoKS5hZGQobV9pZGVu
dGlmaWVyLCB0aGlzKTsKIH0KIAogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6On5XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpCiB7Ci0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICBwcm9jZXNzLT5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CisgICAgd2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveGllcygpLnJlbW92ZShtX2lkZW50aWZpZXIpOworICAgIGZvciAoYXV0byogcHJvY2Vz
cyA6IG1fcHJvY2Vzc2VzKSB7CisgICAgICAgIHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAgICBwcm9jZXNzLT5kaWRE
ZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKnRoaXMpOwogICAgIH0KKyNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fbmV0
d29ya1Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KCp0aGlzKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1By
b3h5LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNjUsNyArODYs
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LAogICAgIGlmICghbV9wcm9jZXNzZXMuYWRkKCZ3
ZWJQcm9jZXNzUHJveHkpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlBy
b2Nlc3NQcm94eS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSwgKnRoaXMp
OworICAgIHdlYlByb2Nlc3NQcm94eS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy51c2VyQ29u
dGVudFdvcmxkcy5pc0VtcHR5KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgd29ybGQgOiBtX3Vz
ZXJDb250ZW50V29ybGRzKQpAQCAtOTUsNyArMTE2LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQ
cm8KICAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMoJndlYlByb2Nlc3NQcm94eSkpOwog
CiAgICAgbV9wcm9jZXNzZXMucmVtb3ZlKCZ3ZWJQcm9jZXNzUHJveHkpOwotICAgIHdlYlByb2Nl
c3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CisgICAg
d2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigp
LnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCkBAIC0x
MDYsNyArMTI3LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNl
ckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQKICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fdXNlckNvbnRlbnRXb3JsZHMuYWRkKCZ3b3JsZCk7CiAgICAgaWYgKGFkZFJlc3VsdC5p
c05ld0VudHJ5KSB7CiAgICAgICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9w
cm9jZXNzZXMpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsgc3RkOjptYWtlX3BhaXIod29y
bGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpB
ZGRVc2VyQ29udGVudFdvcmxkcyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwg
d29ybGQubmFtZSgpKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIH0KIH0KIApA
QCAtMTMwLDcgKzE1MSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRlbnRXCiB7CiAgICAgaWYgKHNo
b3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01lc3NhZ2Uod29ybGQsIG51bWJlck9mVXNl
c1RvUmVtb3ZlKSkgewogICAgICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1f
cHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZp
ZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoeyB3
b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICB9CiB9
CiAKQEAgLTE0Myw3ICsxNjQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZQogICAgIH0KIAog
ICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
VXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkpOworICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZVVzZXJDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2Ny
aXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKQEAgLTE1NSw3ICsxNzYsNyBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNj
cmlwdCYgdXNlclNjcmlwdCkKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLmFwcGVuZCgm
dXNlclNjcmlwdCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJv
Y2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRzKHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29y
bGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC51c2VyU2NyaXB0KCkgfSB9KSwgaWRlbnRpZmll
cigpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxk
LT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSksIGlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCkBAIC0xNjMsNyAr
MTg0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNj
cmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQKICAgICBSZWY8QVBJOjpVc2VyQ29udGVu
dFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3JsZCgpOwogCiAgICAgZm9y
IChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2Ny
aXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQuaWRlbnRpZmllcigpKSwgaWRlbnRp
ZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3Jp
cHQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgbV91c2Vy
U2NyaXB0cy0+ZWxlbWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTY3JpcHQpOwogCkBAIC0xNzMsNyAr
MTk0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNj
cmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYg
d29ybGQpCiB7CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRp
ZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgdW5zaWduZWQgdXNlclNjcmlwdHNSZW1v
dmVkID0gbV91c2VyU2NyaXB0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU2Ny
aXB0PihbJl0oY29uc3QgYXV0byYgdXNlclNjcmlwdCkgewogICAgICAgICByZXR1cm4gJnVzZXJT
Y3JpcHQtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQ7CkBAIC0xOTQsNyArMjE1LDcgQEAg
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMo
KQogICAgICAgICB3b3JsZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZCh3b3JsZENvdW50UGFp
ci5rZXktPmlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2Vz
cyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmllcnMp
LCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmllcnMp
LCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50
cygpLmNsZWFyKCk7CiAKQEAgLTIxMCw3ICsyMzEsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2Vy
UwogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmFwcGVuZCgmdXNlclN0eWxlU2hl
ZXQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpBZGRVc2VyU3R5bGVTaGVldHMoeyB7IHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSwgd29y
bGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQudXNlclN0eWxlU2hlZXQoKSB9IH0pLCBp
ZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IHsgdXNlclN0eWxlU2hlZXQuaWRl
bnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC51c2VyU3R5bGVT
aGVldCgpIH0gfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5
bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCkBAIC0yMTgsNyArMjM5LDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5
bGVTaGVldCYgdXMKICAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJT
dHlsZVNoZWV0LnVzZXJDb250ZW50V29ybGQoKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclN0eWxlU2hlZXQod29ybGQtPmlk
ZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpKTsK
KyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVl
dC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3VzZXJT
dHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTdHlsZVNoZWV0KTsKIApAQCAt
MjI4LDcgKzI0OSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92
ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzCiB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoQVBJOjpVc2VyQ29u
dGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZp
ZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoeyB3b3Js
ZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIHVuc2ln
bmVkIHVzZXJTdHlsZVNoZWV0c1JlbW92ZWQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlQWxs
T2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU3R5bGVTaGVldD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJT
dHlsZVNoZWV0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50
V29ybGQoKSA9PSAmd29ybGQ7CkBAIC0yNDksNyArMjcwLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKICAgICAgICAgd29y
bGRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQod29ybGRDb3VudFBhaXIua2V5LT5pZGVudGlm
aWVyKCkpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZp
ZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMo
KS5jbGVhcigpOwogCkBAIC0yNzAsNyArMjkxLDcgQEAgYm9vbCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2UK
ICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5hZGQoaGFuZGxlci5pZGVudGlmaWVyKCksICZo
YW5kbGVyKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNz
ZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVy
KCksIHdvcmxkLT5pZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIo
KSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVy
KCksIHdvcmxkLT5pZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI4MCw3ICszMDEs
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2Fn
ZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZwogICAgIGZvciAoYXV0byBpdCA9IG1fc2NyaXB0
TWVzc2FnZUhhbmRsZXJzLmJlZ2luKCksIGVuZCA9IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+bmFtZSgpID09
IG5hbWUgJiYgJml0LT52YWx1ZS0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3JsZCkgewogICAg
ICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAg
ICAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCks
IGl0LT52YWx1ZS0+aWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0LT52YWx1ZS0+
aWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgICAgICAgICBt
X3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmUoaXQpOwogCkBAIC0yOTMsNyArMzE0LDcgQEAg
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5k
bGVyRm9yTmFtZShjb25zdCBTdHJpbmcKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3
b3JsZCkKIHsKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVy
KCkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAg
ICAgdW5zaWduZWQgbnVtYmVyUmVtb3ZlZCA9IDA7CiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxl
cnMucmVtb3ZlSWYoWyZdKGF1dG8mIGVudHJ5KSB7CkBAIC0zMzAsMjQgKzM1MSwzMyBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3QoQVBJOjpD
b250ZW50UnVsZUxpc3QmIGNvbgogCiAgICAgYXV0byBwYWlyID0gc3RkOjptYWtlX3BhaXIoY29u
dGVudFJ1bGVMaXN0Lm5hbWUoKSwgY29udGVudFJ1bGVMaXN0LmNvbXBpbGVkUnVsZUxpc3QoKS5k
YXRhKCkpOwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpBZGRDb250ZW50UnVsZUxpc3RzKHsgcGFpciB9KSwgaWRlbnRpZmllcigpKTsKKyAgICBm
b3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50UnVsZUxpc3RzKHsg
cGFpciB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgZm9yIChhdXRvKiBwcm9j
ZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlk
ZW50aWZpZXIoKSwgeyBwYWlyIH0gfSwgMCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJpbmcmIG5hbWUpCiB7
CiAgICAgbV9jb250ZW50UnVsZUxpc3RzLnJlbW92ZShuYW1lKTsKIAotICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0
KG5hbWUpLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUNvbnRlbnRSdWxlTGlzdChuYW1lKSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworCisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
cjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0IHsgaWRlbnRpZmllcigpLCBuYW1lIH0sIDApOwogfQog
CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxDb250ZW50UnVs
ZUxpc3RzKCkKIHsKICAgICBtX2NvbnRlbnRSdWxlTGlzdHMuY2xlYXIoKTsKIAotICAgIGZvciAo
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsQ29udGVu
dFJ1bGVMaXN0cygpLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1f
cHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OlJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKSwgaWRlbnRpZmllcigpLnRv
VUludDY0KCkpOworCisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2Vz
KQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSB9LCAwKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCAy
MzBmNjIzZDk4ZTQ3ODI5NTAxMTBkOTQ5ZjUyNTY1NjIwMGUzYjg0Li5hYjNmMjYwMmIwYzIzZDc2
MzkwMDIwMGFmYzZjZjVhNzhmZmNmODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmgKQEAgLTI3LDExICsyNywxMSBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgpAQCAtNTQsMjAgKzU0LDIzIEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5Owog
Y2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI7CiBz
dHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwog
Ci1jbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50Q29udHJvbGxlcj4sIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBJZGVudGlmaWVkPFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5PiB7CitjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50Q29udHJv
bGxlcj4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IGNyZWF0ZSgpCiAgICAgeyAKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkp
OwotICAgIH0gCi0gICAgZXhwbGljaXQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsK
KyAgICB9CisgICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsKICAgICB+V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsKIAorICAgIHN0YXRpYyBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSogZ2V0KFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOworCiAg
ICAgdm9pZCBhZGRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmKTsKICAgICB2b2lkIHJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKQEAg
LTkxLDExICs5NCwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyTWVzc2FnZUhh
bmRsZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKKyAgICB2b2lkIGFkZE5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkm
IHByb3h5KSB7IG1fbmV0d29ya1Byb2Nlc3Nlcy5yZW1vdmUoJnByb3h5KTsgfQorICAgIHZvaWQg
cmVtb3ZlTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHkpIHsgbV9uZXR3
b3JrUHJvY2Vzc2VzLmFkZCgmcHJveHkpOyB9CisKICAgICB2b2lkIGFkZENvbnRlbnRSdWxlTGlz
dChBUEk6OkNvbnRlbnRSdWxlTGlzdCYpOwogICAgIHZvaWQgcmVtb3ZlQ29udGVudFJ1bGVMaXN0
KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpOwor
ICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+PiYg
Y29udGVudEV4dGVuc2lvblJ1bGVzKCkgeyByZXR1cm4gbV9jb250ZW50UnVsZUxpc3RzOyB9CiAj
ZW5kaWYKIAorICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCiBwcml2YXRlOgogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC0xMDcsMTMgKzExNiwxNSBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoSGFzaENvdW50ZWRTZXQ8
UmVmUHRyPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4+Jik7CiAgICAgYm9vbCBzaG91bGRTZW5kUmVt
b3ZlVXNlckNvbnRlbnRXb3JsZHNNZXNzYWdlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYsIHVuc2ln
bmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKTsKIAotICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5
Kj4gbV9wcm9jZXNzZXM7ICAgIAorICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
bV9pZGVudGlmaWVyOworICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4gbV9wcm9jZXNzZXM7
CiAgICAgUmVmPEFQSTo6QXJyYXk+IG1fdXNlclNjcmlwdHM7CiAgICAgUmVmPEFQSTo6QXJyYXk+
IG1fdXNlclN0eWxlU2hlZXRzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcj4+IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzOwogICAgIEhhc2hDb3Vu
dGVkU2V0PFJlZlB0cjxBUEk6OlVzZXJDb250ZW50V29ybGQ+PiBtX3VzZXJDb250ZW50V29ybGRz
OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBIYXNoU2V0PE5ldHdvcmtQ
cm9jZXNzUHJveHkqPiBtX25ldHdvcmtQcm9jZXNzZXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4+IG1fY29udGVudFJ1bGVMaXN0czsKICNlbmRpZgog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGVlY2NhYzJmMWE5Njg2NmI3Y2Q5YWI0YTFkOThlODYxYzg1MTUwYmUuLjViYWFjOWZjMzll
Yjg3MDY5ODU0MWU2MzZiNDVlYTZlZWQxYjA4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTU4LDYgKzk1OCw3IEBACiAJCTQxRkFG
NUY1MUUzQzA2NDkwMDFBRTY3OCAvKiBXZWJSVENSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQUY1RjQxRTNDMDY0MTAwMUFFNjc4IC8q
IFdlYlJUQ1Jlc29sdmVyLmggKi87IH07CiAJCTQxRkFGNUY4MUUzQzEwMjEwMDFBRTY3OCAvKiBM
aWJXZWJSVENSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQUY1RjYxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmgg
Ki87IH07CiAJCTQxRkFGNUY5MUUzQzEwMjUwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBRjVG
NzFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuY3BwICovOyB9OworCQk0MUZC
RTgyNjIwNkRGN0ZBMDAwRjA3NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQkU4MjQy
MDZEQTc5QzAwMEYwNzQxIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCAqLzsg
fTsKIAkJNDQ1MEFFQzAxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJlZE1lbW9yeUNvY29hLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBBRUJGMURD
M0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAgKi87IH07CiAJCTQ2MEY0ODhG
MUY5OTZGNzEwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjBGNDg4RDFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk0NjBGNDg5MDFGOTk2RjcxMDBDRjRCODcg
LyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYwRjQ4OEUxRjk5NkY2QzAwQ0Y0Qjg3
IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTEx
OTYsNiArMTE5Nyw3IEBACiAJCTUyRDVBMUIwMUM1NzQ5NUEwMERFMzRBMyAvKiBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyRDVBMUFBMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaCAqLzsgfTsKIAkJNTJENUExQjExQzU3NDk2MjAwREUzNEEzIC8qIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyRDVBMUFDMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0gKi87IH07CiAJCTUyRDVBMUI3MUM1NzRBMDIwMERFMzRBMyAvKiBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTJENUExQjQxQzU3NDlGMjAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0gKi87IH07CisJCTUyRjA2MEUxMTY1NDMxODUwMEYzMjgxQiAvKiBOZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyog
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk1MzAyNTgzQjFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgyRTFE
Q0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAgKi87IH07CiAJCTUz
MDI1ODNDMURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgyRjFEQ0JCRDFE
MDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oICovOyB9OwogCQk1MzAyNTgzRDFE
Q0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgzMDFEQ0JCRDFEMDBEQTg5QzIg
LyogTmV0d29ya0NhcHR1cmVFdmVudC5jcHAgKi87IH07CkBAIC0yMzQ1LDkgKzIzNDcsOSBAQAog
CQkJZHN0UGF0aCA9IFByaXZhdGVIZWFkZXJzL2F0b21zOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9
IDE7CiAJCQlmaWxlcyA9ICgKLQkJCQk5OUNBNjZDQTIwMzY2ODVEMDA3NEYzNUUgLyogRW50ZXJG
dWxsc2NyZWVuLmpzIGluIENvcHkgV2ViRHJpdmVyIEF0b21zICovLAogCQkJCTk5Qjc1MEYyMUYz
M0VENUIwMEMxQ0ZCNSAvKiBFbGVtZW50QXR0cmlidXRlLmpzIGluIENvcHkgV2ViRHJpdmVyIEF0
b21zICovLAogCQkJCTk5Qjc1MEYzMUYzM0VENUIwMEMxQ0ZCNSAvKiBFbGVtZW50RGlzcGxheWVk
LmpzIGluIENvcHkgV2ViRHJpdmVyIEF0b21zICovLAorCQkJCTk5Q0E2NkNBMjAzNjY4NUQwMDc0
RjM1RSAvKiBFbnRlckZ1bGxzY3JlZW4uanMgaW4gQ29weSBXZWJEcml2ZXIgQXRvbXMgKi8sCiAJ
CQkJOTlCNzUwRjQxRjMzRUQ1QjAwQzFDRkI1IC8qIEZpbmROb2Rlcy5qcyBpbiBDb3B5IFdlYkRy
aXZlciBBdG9tcyAqLywKIAkJCQk5OUI3NTBGNTFGMzNFRDVCMDBDMUNGQjUgLyogRm9ybUVsZW1l
bnRDbGVhci5qcyBpbiBDb3B5IFdlYkRyaXZlciBBdG9tcyAqLywKIAkJCQk5OUI3NTBGNjFGMzNF
RDVCMDBDMUNGQjUgLyogRm9ybVN1Ym1pdC5qcyBpbiBDb3B5IFdlYkRyaXZlciBBdG9tcyAqLywK
QEAgLTMzNjQsNiArMzM2NiwxMCBAQAogCQk0MUZBRjVGNDFFM0MwNjQxMDAxQUU2NzggLyogV2Vi
UlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUlRDUmVz
b2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkFGNUY2MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJS
VENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENS
ZXNvbHZlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQUY1RjcxRTNDMEI0NzAwMUFFNjc4IC8qIExp
YldlYlJUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExpYldlYlJUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jl
c29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQkU4MjEyMDZEODdG
NjAwMEYwNzQxIC8qIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgyMjIwNkRBNzlDMDAwRjA3NDEg
LyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxRkJFODIzMjA2REE3OUMwMDBGMDc0MSAvKiBOZXR3b3JrQ29udGVu
dFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOZXR3
b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgyNDIwNkRBNzlDMDAwRjA3NDEgLyogTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5Q29j
b2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkTWVtb3J5
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFGOTk2RjZD
MDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zNjQ2LDYgKzM2NTIsNyBAQAogCQk1MkQ1QTFCMjFDNTc0OUYyMDBERTM0QTMg
LyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyRDVBMUIzMUM1NzQ5RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUI0MUM1NzQ5
RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIE5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4MkUxRENCQkQxRDAwREE4OUMyIC8q
IE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MzAyNTgyRjFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNv
dXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrQ2FwdHVyZVJl
c291cmNlLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVz
b3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4MzAxRENCQkQxRDAw
REE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTmV0d29ya0NhcHR1cmVFdmVudC5jcHA7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTI5Myw2ICs1MzAwLDcgQEAKIAkJCQkxQTY0MjQ1QzEyREUyOUExMDBDQUFF
MkMgLyogVXBkYXRlSW5mby5oICovLAogCQkJCTVDMTlBNTFFMUZEMEIxNDYwMEVFQTMyMyAvKiBV
UkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJNUMxOUE1MUYxRkQwQjE0NzAwRUVB
MzIzIC8qIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmggKi8sCisJCQkJNDFGQkU4MjEyMDZEODdG
NjAwMEYwNzQxIC8qIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCAqLywKIAkJCQkx
QUMxMzM2NTE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuY3BwICovLAogCQkJCTFBQzEzMzY2
MTg1NjVCNTcwMEYzRUMwNSAvKiBVc2VyRGF0YS5oICovLAogCQkJCTI2ODQwNTRBMThCODY2RkYw
MDIyQzM4QiAvKiBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcCAqLywKQEAgLTY0MTIs
NiArNjQyMCw5IEBACiAJCQkJNUMwQjE3N0QxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2Nr
ZXRTdHJlYW0uY3BwICovLAogCQkJCTVDMEIxNzdFMUU3Qzg4NjcwMEU5MTIzQyAvKiBOZXR3b3Jr
U29ja2V0U3RyZWFtLmggKi8sCiAJCQkJNUMwQjE3N0YxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdv
cmtTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDFGQkU4MjQyMDZEQTc5QzAwMEYw
NzQxIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCAqLywKKwkJCQk0MUZCRTgy
MjIwNkRBNzlDMDAwRjA3NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCAqLywK
KwkJCQk0MUZCRTgyMzIwNkRBNzlDMDAwRjA3NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1h
bmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDYyMTA3RDcxRjM4REJEMzAwREQ3ODEwIC8qIFBp
bmdMb2FkLmNwcCAqLywKIAkJCQk1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0UgLyogUGluZ0xvYWQu
aCAqLywKIAkJCQk4M0EwRUQzMzFGNzQ3Q0M3MDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suY3Bw
ICovLApAQCAtODI3OSw2ICs4MjkwLDcgQEAKIAkJCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUQg
LyogTmV0d29ya1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNUMwQjE3NzQx
RTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAogCQkJCTVDMEIxNzc1MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFt
TWVzc2FnZXMuaCAqLywKKwkJCQk1MkYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBMkQ4NDM3
MTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJMUEyRDg0MzgxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyTWVzc2FnZXMuaCAqLywKIAkJCQlDREEyOUEyNDFDQkVCNjdBMDA5MDFDQ0YgLyog
UGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMDY5Niw2
ICsxMDcwOCw4IEBACiAJCQkJNUMyMENCOUQxQkIwRENGQTAwODk1QkIxIC8qIE5ldHdvcmtTZXNz
aW9uQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzBCMTc4MTFFN0M4QzI2MDBFOTEyM0Mg
LyogTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzBCMTc3ODFF
N0M4ODBFMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0MUZCRTgyNjIwNkRGN0ZBMDAwRjA3NDEgLyogTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTJGMDYwRTExNjU0
MzE4NTAwRjMyODFCIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMzEyNjFFMTQ4RkY4MkMwMEJBMkEzOSAvKiBO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzFBMkVDNTAxNDg5OTgwNTAwODEwRDcxIC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4NDhDMTI3RjZBNDkw
MDFFQjk2MiAvKiBOUElkZW50aWZpZXJEYXRhLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CmluZGV4IGIxNGE1ODAzMjZhMDJkNmQxODQxYTZkODhhNGY4MmNiMzE5NDYzMjQuLmM0YWUyYzFk
ZjFjOTM4NzRlMTRjMTdiODMyMzRhY2YzYTE4OTc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTQ1Niw2
ICs0NTYsMTAgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZChGcmFtZSYg
ZnJhbWUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY28KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAorICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRv
V2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWUubG9hZGVyKCkuY2xpZW50KCkpOworICAgIFdlYkZy
YW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGll
bnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJGcmFt
ZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworCiAgICAgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmll
ciA9IGdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKICAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0
ID0gcmVxdWVzdDsKQEAgLTQ3MiwxNCArNDc2LDkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJhbWUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY28K
IAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgbG9hZFBhcmFtZXRlcnMubWFp
bkRvY3VtZW50VVJMID0gZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCk7Ci0KLSAgICBpZiAo
YXV0byogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUucGFnZSgpKSB7Ci0gICAgICAgICAgICBw
YWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkuZm9yRWFjaENvbnRlbnRFeHRlbnNpb24oWyZsb2Fk
UGFyYW1ldGVyc10oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBDb250ZW50RXh0ZW5zaW9uczo6
Q29udGVudEV4dGVuc2lvbiYgY29udGVudEV4dGVuc2lvbikgewotICAgICAgICAgICAgICAgIGxv
YWRQYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGlkZW50
aWZpZXIsIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0Jj4oY29u
dGVudEV4dGVuc2lvbi5jb21waWxlZEV4dGVuc2lvbigpKS5kYXRhKCkpKTsKLSAgICAgICAgICAg
IH0sICpkb2N1bWVudExvYWRlcik7Ci0gICAgICAgIH0KLSAgICB9CisgICAgLy8gRklYTUU6IElu
c3RlYWQgb2YgcGFzc2luZyB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCB3ZSBzaG91
bGQganVzdCBwYXNzIHdlYlBhZ2VJZCB0byBOZXR3b3JrUHJvY2Vzcy4KKyAgICBpZiAoYXV0byog
cGFnZSA9IGZyYW1lLnBhZ2UoKSkKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMudXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciA9IHdlYlBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIoKTsKICNlbmRpZgogCiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCAyMjM1YThkZjA0ZDFjNGJjYTZkMzBlZjUzMDAz
Mjk1ZDFhZTA1OThhLi5iOWU1ODU4MzVmZTMwOGE4NTBhM2Q4NTI3ZDhhZTBiMjNjMGZmMzdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtNTAsOSArNTAsOSBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBIYXNo
TWFwPHVpbnQ2NF90LCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIqPiYgdXNlckNvbnRlbnRDb250
cm9sbGVycygpCitzdGF0aWMgSGFzaE1hcDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
LCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIqPiYgdXNlckNvbnRlbnRDb250cm9sbGVycygpCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcio+PiB1c2VyQ29udGVudENvbnRyb2xsZXJzOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcio+PiB1c2VyQ29udGVudENvbnRyb2xsZXJzOwogCiAgICAgcmV0
dXJuIHVzZXJDb250ZW50Q29udHJvbGxlcnM7CiB9CkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBX
b3JsZE1hcCYgd29ybGRNYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLVJlZjxXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUodWlu
dDY0X3QgaWRlbnRpZmllcikKK1JlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8mIHVzZXJDb250ZW50Q29udHJvbGxlclB0ciA9
IHVzZXJDb250ZW50Q29udHJvbGxlcnMoKS5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0
b3ItPnZhbHVlOwogICAgIGlmICh1c2VyQ29udGVudENvbnRyb2xsZXJQdHIpCkBAIC03OCwxNyAr
NzgsMTcgQEAgUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGUKICAgICByZXR1cm4gdXNlckNvbnRlbnRD
b250cm9sbGVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLVdlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpCitXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcihVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2lkZW50aWZpZXIsICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwogfQogCiBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKQogewog
ICAgIEFTU0VSVCh1c2VyQ29udGVudENvbnRyb2xsZXJzKCkuY29udGFpbnMobV9pZGVudGlmaWVy
KSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2lkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAogICAgIHVzZXJDb250ZW50
Q29udHJvbGxlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KQEAgLTI0Miw3ICsyNDIsNyBA
QCBwcml2YXRlOgogICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RN
ZXNzYWdlKHdlYlBhZ2UtPnBhZ2VJRCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBtX2lkZW50aWZpZXIs
IElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29udHJvbGxlci0+aWRlbnRp
ZmllcigpKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPnBhZ2VJRCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBtX2lk
ZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29udHJvbGxl
ci0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuaAppbmRleCA5YjcyZDk2YzhiYmI3NzljMWJlYjliMWYwYWFjMjEyYzNjOWU0NTUzLi5mNThk
MjFlOGNkZmM2YmVkOWMwNDlkZDJkYzMwYWY5NDlkMDhhYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgogI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
VXNlckNvbnRlbnRQcm92aWRlci5oPgpAQCAtNDksMTAgKzUwLDEwIEBAIGNsYXNzIFdlYlVzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTsKIAogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlVzZXJDb250ZW50UHJvdmlkZXIsIHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAg
ICBzdGF0aWMgUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gZ2V0T3JDcmVhdGUoVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyKCk7CiAKLSAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9IAorICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmll
cigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYpOwogICAgIHZv
aWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYpOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIodWludDY0X3Qg
aWRlbnRpZmllcik7CisgICAgZXhwbGljaXQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOwogCiAgICAgLy8gV2ViQ29yZTo6VXNlckNvbnRl
bnRQcm92aWRlcgogICAgIHZvaWQgZm9yRWFjaFVzZXJTY3JpcHQoRnVuY3Rpb248dm9pZChXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQmLCBjb25zdCBXZWJDb3JlOjpVc2VyU2NyaXB0Jik+JiYpIGNv
bnN0IGZpbmFsOwpAQCAtMTExLDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVV
c2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
JiwgdWludDY0X3QgdXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVySWRlbnRpZmllcik7CiAjZW5kaWYK
IAotICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4sIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFdlYkNv
cmU6OlVzZXJTY3JpcHQ+Pj4gV29ybGRUb1VzZXJTY3JpcHRNYXA7CiAgICAgV29ybGRUb1VzZXJT
Y3JpcHRNYXAgbV91c2VyU2NyaXB0czsKQEAgLTEyNiw3ICsxMjcsNiBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kOwog
I2VuZGlmCi0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDVjYjA5MTI5YTVmNjkwYmQ2Y2I3NjJmMGEx
YWZkYzlkODY1NTI5ZTUuLjM4ZTkxMGFiMDUzYzY0ZWJjMmU4ZDM2NmVjZWM4YWIzYjU4NDg2MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ2LDYg
KzQ2LDcgQEAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5o
IgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RpY3Rpb25hcnlQb3B1cEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyVHlwZXMuaD4KQEAgLTEwNjksNiArMTA3MCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIG9wZW5HTERpc3BsYXlNYXNrQ2hhbmdlZCh1aW50MzJfdCBkaXNwbGF5TWFzayk7CiAjZW5k
aWYKIAorICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
LT5pZGVudGlmaWVyKCk7IH0KKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJ
RCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337035</attachid>
            <date>2018-04-02 15:07:26 -0700</date>
            <delta_ts>2018-04-03 10:12:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184205-20180402150725.patch</filename>
            <type>text/plain</type>
            <size>79807</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExMTlkN2JjZTY0ZDBhODI0
ZmNjMjAyMTYwOTU0YTZmZmFmYzI5MmEuLjJjOWQxMTI2YjkyNThiNjc0NzRjNTAxNWUwYTNlODEy
NzZmMjExOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDE4LTA0LTAyICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9jZXNz
IGdldCBDb250ZW50QmxvY2tlciBpbmZvcm1hdGlvbiBmcm9tIFVJUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MjA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9j
ZXNzIGdldCBjb250ZW50IGJsb2NrZXJzIGZyb20gVUlQcm9jZXNzIGRpcmVjdGx5LgorICAgICAg
ICBCZWZvcmUgdGhhdCBwYXRjaCwgV2ViUHJvY2VzcyBzZW50IGNvbnRlbnQgYmxvY2tlcnMgdG8g
TmV0d29ya1Byb2Nlc3MgZm9yIGVhY2ggUGluZ0xvYWQuCisgICAgICAgIEluc3RlYWQsIFdlYlBy
b2Nlc3Mgc2VuZHMgdGhlIGNvbnRlbnQgYmxvY2tlciBpZGVudGlmaWVyIGZvciBlYWNoIFBpbmdM
b2FkIGFuZCBOZXR3b3JrUHJvY2VzcyBmZXRjaGVzIHRoZSBjb250ZW50IGJsb2NrZXIgb25jZS4K
KworICAgICAgICBUaGlzIGlzIGJvdGggbW9yZSBlZmZpY2llbnQgdGhhbiBwYXNzaW5nIHRoZW0g
Zm9yIGVhY2ggUGluZ0xvYWQgYW5kIHNhZmVyIGluIHRoZSBzZW5zZQorICAgICAgICB0aGF0IGEg
Y29tcHJvbWlzZWQgV2ViUHJvY2VzcyB3aWxsIG5vdCBiZSBhYmxlIHRvIGJ5cGFzcyBhbnkgb2Yg
dGhlc2UuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBnZXQg
dGhlIGNvbnRlbnQgYmxvY2tlciBpZGVudGlmaWVyIGRpcmVjdGx5IGZyb20gdGhlIFdlYlBhZ2VJ
RCBhdHRhY2hlZCB0byB0aGUgcmVxdWVzdC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IGJlYWNvbitjb250ZW50IGJsb2NrZXIgdGVzdHMuCisKKyAgICAgICAgRGlkIHNvbWUgcmVmYWN0
b3JpbmcgdG8gYWRkIGEgdHlwZWQgY29udGVudCBibG9ja2VyIGlkZW50aWZpZXIuCisgICAgICAg
IE9uY2UgTmV0d29ya1Byb2Nlc3MgZmV0Y2hlcyBhIGdpdmVuIGNvbnRlbnQgYmxvY2tlciwgdGhl
IGNvbnRlbnQgYmxvY2tlciB3aWxsIHNlbmQgYW55IG1vZGlmaWNhdGlvbiB0byBOZXR3b3JrUHJv
Y2Vzcy4KKyAgICAgICAgSW50cm9kdWNlZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciB0
byBoYW5kbGUgdGhlIGNvbnRlbnQgYmxvY2tlcnMgaW4gTmV0d29ya1Byb2Nlc3MuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250aW51ZUNoZWNraW5nUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxl
c0ZvckxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OnNldENvbnRlbnRFeHRlbnNp
b25Db250cm9sbGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6Om5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxl
TGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OnJlbW92ZUNvbnRl
bnRSdWxlTGlzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5h
Z2VyOjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OnJlbW92ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW46IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VHcm91cERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VHcm91cERhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6fk5l
dHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojpjb250ZW50RXh0ZW5zaW9uUnVsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpnZXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRVc2VyQ29udGVudFdvcmxkVXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNj
cmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVBbGxVc2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENv
bnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OmFkZE5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZU5ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNvbnRlbnRFeHRl
bnNpb25SdWxlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9h
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBjb25zdCk6CisKIDIwMTgtMDQtMDIgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
IERyYWdBbmREcm9wSGFuZGxlci5jcHAgc2hvdWxkIGluY2x1ZGUgR1VuaXF1ZVB0ckd0ay5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dAppbmRleCA2MGU5MmI3ZTczOTAzNGQ5YTc4ZDIzNTFiMjk4Mjc2ZDRlMDUx
ZDE2Li5hNWI5ZjFkZTliYmFiNjczZjMzMjY0NGUyZWRiMWE3Nzc2N2MzODkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKQEAgLTEwNyw2ICsxMDcsNyBAQCBzZXQoV2ViS2l0X1NPVVJDRVMKIAogICAgIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKICAgICBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKyAgICBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKICAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTYxOSw2ICs2
MjAsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAKICAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCiAgICAgTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KICAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KICAgICBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggOWQ2NmMwZGY2ZWM3NjQyZjRlMDBiYzkzMWYxMmUxN2M2MWVhYmY0Yy4uZGEwYTUyZGFl
MGFhYWNiMzIwOTUzNDg1YjkxOTQ4ODAwODc2YTc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMTE1LDYgKzExNSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIE5ldHdv
cmtSVENTb2NrZXQgXAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBcCiAgICAgTmV0d29ya1Nv
Y2tldFN0cmVhbSBcCisgICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIgXAogICAgIFBs
dWdpbkNvbnRyb2xsZXJQcm94eSBcCiAgICAgUGx1Z2luUHJvY2VzcyBcCiAgICAgUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NTIzZTAzM2Y3ZGZjODJiZjdlN2ZlZmFkNDE2NWQzOWM4Y2ExMmRkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlci5jcHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKKworI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6Ok5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyKCkgPSBkZWZhdWx0OworTmV0d29ya0NvbnRlbnRSdWxl
TGlzdE1hbmFnZXI6On5OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpCit7CisgICAgYXV0
byBwZW5kaW5nQ2FsbGJhY2tzID0gV1RGTW92ZShtX3BlbmRpbmdDYWxsYmFja3MpOworICAgIGlm
IChwZW5kaW5nQ2FsbGJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCBiYWNrZW5k
OworICAgIGZvciAoYXV0byYgY2FsbGJhY2tzIDogcGVuZGluZ0NhbGxiYWNrcy52YWx1ZXMoKSkg
eworICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAgICAgICAgICAg
Y2FsbGJhY2soYmFja2VuZCk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyOjpjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBCYWNrZW5kQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZmluZChpZGVudGlm
aWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZW5k
KCkpIHsKKyAgICAgICAgY2FsbGJhY2soKml0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9wZW5kaW5nQ2FsbGJhY2tzLmVuc3VyZShpZGVudGlmaWVyLCBbXSB7
CisgICAgICAgIHJldHVybiBWZWN0b3I8QmFja2VuZENhbGxiYWNrPiB7IH07CisgICAgfSkuaXRl
cmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkNvbnRlbnRFeHRlbnNpb25SdWxlcyB7IGlkZW50aWZpZXIg
fSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFkZENvbnRl
bnRSdWxlTGlzdHMoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3RE
YXRhPj4mIGNvbnRlbnRSdWxlTGlzdHMpCit7CisgICAgYXV0byYgYmFja2VuZCA9ICptX2NvbnRl
bnRFeHRlbnNpb25CYWNrZW5kcy5lbnN1cmUoaWRlbnRpZmllciwgW10geworICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4
dGVuc2lvbnNCYWNrZW5kPigpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAgIGZvciAo
Y29uc3QgYXV0byYgY29udGVudFJ1bGVMaXN0IDogY29udGVudFJ1bGVMaXN0cykgeworICAgICAg
ICBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEgY29udGVudFJ1bGVMaXN0RGF0YSA9IGNv
bnRlbnRSdWxlTGlzdC5zZWNvbmQ7CisgICAgICAgIGF1dG8gY29tcGlsZWRDb250ZW50UnVsZUxp
c3QgPSBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoY29udGVudFJ1
bGVMaXN0RGF0YSkpOworICAgICAgICBiYWNrZW5kLmFkZENvbnRlbnRFeHRlbnNpb24oY29udGVu
dFJ1bGVMaXN0LmZpcnN0LCBXVEZNb3ZlKGNvbXBpbGVkQ29udGVudFJ1bGVMaXN0KSk7CisgICAg
fQorCisgICAgYXV0byBwZW5kaW5nQ2FsbGJhY2tzID0gbV9wZW5kaW5nQ2FsbGJhY2tzLnRha2Uo
aWRlbnRpZmllcik7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHBlbmRpbmdDYWxsYmFja3Mp
CisgICAgICAgIGNhbGxiYWNrKGJhY2tlbmQpOworCit9CisKK3ZvaWQgTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXI6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZmluZChpZGVudGlmaWVyKTsK
KyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9yLT52YWx1ZS0+cmVtb3ZlQ29udGVudEV4dGVu
c2lvbihuYW1lKTsKK30KKwordm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6cmVt
b3ZlQWxsQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fY29udGVudEV4dGVuc2lvbkJhY2tl
bmRzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fY29udGVudEV4dGVu
c2lvbkJhY2tlbmRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpdGVyYXRvci0+dmFs
dWUtPnJlbW92ZUFsbENvbnRlbnRFeHRlbnNpb25zKCk7Cit9CisKK3ZvaWQgTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXI6OnJlbW92ZShVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCit7CisgICAgbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMucmVtb3ZlKGlk
ZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGY3NmNlMjU5YWE3MzY0ZGMwZTc2MTJlMGRkMzM5NjlhNjZlMDc4NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1h
bmFnZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0
RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFByb3ZpZGVyLmg+CisKK25hbWVzcGFjZSBJUEMg
eworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciB7CitwdWJsaWM6Cisg
ICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKTsKKyAgICB+TmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICB1c2luZyBCYWNrZW5kQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQmKT47CisgICAgdm9pZCBjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQo
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgQmFja2VuZENhbGxiYWNrJiYpOworCitw
cml2YXRlOgorICAgIHZvaWQgYWRkQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhPj4mKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRlbnRSdWxlTGlzdChV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IHZvaWQgcmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZShVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
KTsKKworICAgIEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQ+PiBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kczsKKyAgICBIYXNoTWFwPFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFZlY3RvcjxCYWNrZW5kQ2FsbGJhY2s+PiBtX3BlbmRp
bmdDYWxsYmFja3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTAxNjQxNmY0ZjM0NjE2NjZlZjI3MWI2ZjU5NDVhYTIx
YThiMDZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBA
CisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQorCittZXNzYWdlcyAtPiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlciB7CisgICAgUmVtb3ZlKFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIEFkZENvbnRlbnRSdWxlTGlzdHMoV2ViS2l0OjpVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+IGNvbnRlbnRGaWx0ZXJz
KQorICAgIFJlbW92ZUNvbnRlbnRSdWxlTGlzdChXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIG5hbWUpCisgICAgUmVtb3ZlQWxsQ29udGVu
dFJ1bGVMaXN0cyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggYTE0NWU4MTNmZjRhYWQzZjFmNzViYWJlZjJk
YTk4Y2IyNmM2ZDQ3Mi4uZTRlNzEzZjcyMWIzZTAyZGYxYTNhZTY2Mzc0Njc4ZTIzMDA3ZmVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVj
a2VyLmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIKKyNpbmNsdWRl
ICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hl
Lmg+CkBAIC05NSwxMiArOTcsMjAgQEAgTmV0d29ya0xvYWRDaGVja2VyOjpSZXF1ZXN0T3JFcnJv
ciBOZXR3b3JrTG9hZENoZWNrZXI6OnJldHVybkVycm9yKFN0cmluZyYmIGVycm8KIHZvaWQgTmV0
d29ya0xvYWRDaGVja2VyOjpjaGVja1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
VmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewogI2lmIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCi0gICAgaWYgKHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKHJlcXVl
c3QpLmJsb2NrZWRMb2FkKSB7Ci0gICAgICAgIGhhbmRsZXIocmV0dXJuRXJyb3IoQVNDSUlMaXRl
cmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQgZXh0ZW5zaW9uIikpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChXVEZNb3ZlKHJl
cXVlc3QpLCBbdGhpcywgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildKGF1dG8mJiByZXF1ZXN0
LCBhdXRvIHN0YXR1cykgbXV0YWJsZSB7CisgICAgICAgIGlmIChzdGF0dXMuYmxvY2tlZExvYWQp
IHsKKyAgICAgICAgICAgIGhhbmRsZXIodGhpcy0+cmV0dXJuRXJyb3IoQVNDSUlMaXRlcmFsKCJC
bG9ja2VkIGJ5IGNvbnRlbnQgZXh0ZW5zaW9uIikpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICB0aGlzLT5jb250aW51ZUNoZWNraW5nUmVxdWVzdChXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29udGludWVD
aGVja2luZ1JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7CiAjZW5k
aWYKK30KIAordm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFZhbGlkYXRpb25IYW5kbGVyJiYgaGFuZGxlcikK
K3sKICAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5ID0gdGhpcy0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCkpIHsKICAgICAgICAgaWYgKGlzUmVkaXJlY3RlZCgpKSB7CiAgICAgICAg
ICAgICBVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsKQEAgLTIyOSwyMSArMjM5LDE4IEBAIENvbnRl
bnRTZWN1cml0eVBvbGljeSogTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xp
Y3koKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLUNvbnRlbnRF
eHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIE5ldHdvcmtMb2FkQ2hlY2tlcjo6
Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kKCkKK3ZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpwcm9j
ZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyYpPiYmIGNhbGxiYWNrKQogewotICAg
IGlmICghbV9jb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQpIHsKLSAgICAgICAgbV9jb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fY29u
dGVudFJ1bGVMaXN0cykKLSAgICAgICAgICAgIG1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kLT5h
ZGRDb250ZW50RXh0ZW5zaW9uKHBhaXIuZmlyc3QsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0
OjpjcmVhdGUoV1RGTW92ZShwYWlyLnNlY29uZCkpKTsKKyAgICBpZiAoIW1fdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcikgeworICAgICAgICBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tl
ZFN0YXR1cyBzdGF0dXM7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCksIHN0YXR1
cyk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmV0dXJuICptX2NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZDsKLX0KLQotQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMgTmV0d29y
a0xvYWRDaGVja2VyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgYXV0byBzdGF0dXMgPSBjb250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQoKS5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yUGluZ0xvYWQocmVxdWVz
dC51cmwoKSwgbV9tYWluRG9jdW1lbnRVUkwpOwotICAgIGFwcGx5QmxvY2tlZFN0YXR1c1RvUmVx
dWVzdChzdGF0dXMsIG51bGxwdHIsIHJlcXVlc3QpOwotICAgIHJldHVybiBzdGF0dXM7CisgICAg
TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
KCkuY29udGVudEV4dGVuc2lvbnNCYWNrZW5kKCptX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBiYWNr
ZW5kKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBiYWNrZW5kLnByb2Nlc3NDb250
ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZChyZXF1ZXN0LnVybCgpLCBtX21haW5Eb2N1bWVu
dFVSTCk7CisgICAgICAgIGFwcGx5QmxvY2tlZFN0YXR1c1RvUmVxdWVzdChzdGF0dXMsIG51bGxw
dHIsIHJlcXVlc3QpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3QpLCBzdGF0dXMp
OworICAgIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCmlu
ZGV4IGVjZmI1ZWI1YmNhNzdjMjdlMWQ0YWNkODJiOGI5YzhhMjllZDQ0MjIuLjAzMmQ1ZjQzODcz
ZGNlZWJjY2VmNDJmMzU1OWZjNTllMmM1ZjY0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaApAQCAtMjUsOCArMjUsOCBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtNDAsOSArNDAsMTIgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjsKIAotY2xh
c3MgTmV0d29ya0xvYWRDaGVja2VyIHsKK2NsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogcHVibGljOgotICAgIE5ldHdvcmtM
b2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1vZGUsIGJvb2wgc2hvdWxkRm9sbG93
UmVkaXJlY3RzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUEFMOjpTZXNzaW9u
SUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgV2ViQ29yZTo6VVJMJiYsIFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrTG9hZENoZWNr
ZXI+IGNyZWF0ZShXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1vZGUgbW9kZSwgYm9vbCBzaG91bGRG
b2xsb3dSZWRpcmVjdHMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXAmJiBvcmlnaW5hbEhlYWRlcnMsIFdlYkNvcmU6OlVSTCYmIHVybCwgUmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbikKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtMb2FkQ2hlY2tlciB7IG1vZGUsIHNob3VsZEZvbGxv
d1JlZGlyZWN0cywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNlc3Npb25JRCwgV1RGTW92ZShv
cmlnaW5hbEhlYWRlcnMpLCBXVEZNb3ZlKHVybCksIFdURk1vdmUoc291cmNlT3JpZ2luKSB9KTsK
KyAgICB9CiAgICAgfk5ldHdvcmtMb2FkQ2hlY2tlcigpOwogCiAgICAgdXNpbmcgUmVxdWVzdE9y
RXJyb3IgPSBFeHBlY3RlZDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3I+OwpAQCAtNTIsMTAgKzU1LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q1NQ
UmVzcG9uc2VIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyYmIGhlYWRlcnMpIHsgbV9jc3BSZXNwb25zZUhlYWRlcnMgPSBXVEZNb3ZlKGhlYWRlcnMp
OyB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICB2b2lkIHNldENvbnRlbnRF
eHRlbnNpb25SdWxlTGlzdHMoV2ViQ29yZTo6VVJMJiYgbWFpbkRvY3VtZW50VVJMLCBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4mJiBjb250
ZW50UnVsZUxpc3RzKQorICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoV2Vi
Q29yZTo6VVJMJiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5Eb2N1
bWVudFVSTCA9IFdURk1vdmUobWFpbkRvY3VtZW50VVJMKTsKLSAgICAgICAgbV9jb250ZW50UnVs
ZUxpc3RzID0gV1RGTW92ZShjb250ZW50UnVsZUxpc3RzKTsKKyAgICAgICAgbV91c2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICB9CiAjZW5kaWYKIApAQCAt
NjMsMTIgKzY2LDE2IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k7IH0KIAogcHJpdmF0ZToKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoV2Vi
Q29yZTo6RmV0Y2hPcHRpb25zOjpNb2RlLCBib29sIHNob3VsZEZvbGxvd1JlZGlyZWN0cywgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpI
VFRQSGVhZGVyTWFwJiYsIFdlYkNvcmU6OlVSTCYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+JiYpOworCiAgICAgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50
U2VjdXJpdHlQb2xpY3koKSBjb25zdDsKICAgICBib29sIGlzQ2hlY2tpbmcoKSBjb25zdCB7IHJl
dHVybiAhIW1fY29yc1ByZWZsaWdodENoZWNrZXI7IH0KICAgICBib29sIGlzUmVkaXJlY3RlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RDb3VudDsgfQogCiAgICAgdm9pZCBjaGVja1JlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFZhbGlkYXRpb25IYW5kbGVyJiYpOwogCisg
ICAgdm9pZCBjb250aW51ZUNoZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CisKICAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNr
KGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwogICAgIHZvaWQgY2hlY2tDT1JTUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CiAgICAgdm9p
ZCBjaGVja0NPUlNSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
VmFsaWRhdGlvbkhhbmRsZXImJik7CkBAIC03Nyw4ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgUmVx
dWVzdE9yRXJyb3IgcmV0dXJuRXJyb3IoU3RyaW5nJiYgZXJyb3IpOwogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKLSAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kJiBjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoKTsKLSAgICBXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBwcm9jZXNzQ29udGVudEV4dGVu
c2lvblJ1bGVzRm9yTG9hZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHBy
b2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyYpPiYmKTsKICNl
bmRpZgogCiAgICAgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpNb2RlIG1fbW9kZTsKQEAgLTkyLDE2
ICs5OCwxMyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVyczsKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFdlYkNvcmU6OlVSTCBtX21haW5Eb2N1bWVu
dFVSTDsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVs
ZUxpc3REYXRhPj4gbV9jb250ZW50UnVsZUxpc3RzOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyPiBtX2NvcnNQcmVmbGlnaHRDaGVja2VyOwogICAgIGJvb2wgbV9pc1NhbWVPcmlnaW5S
ZXF1ZXN0IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9pc1NpbXBsZVJlcXVlc3QgeyB0cnVlIH07CiAg
ICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kPiBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZDsKLSNlbmRpZgog
ICAgIHNpemVfdCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAgICAgV2ViQ29yZTo6VVJMIG1fcHJl
dmlvdXNVUkw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAppbmRleCAxYzU1ODhlNzk0MzQ5OGZhNDE5NzQ0YTgyOWU4Yjc0NDRmMzgzMDdl
Li43OTc3ZGExMzIwNTY1MDViOGQwMzdkY2NhNGQxMzY4YzgzZWMxMWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNz
YWdlcy5oIgpAQCAtMTcxLDYgKzE3MiwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlcgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Ok5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAg
bV9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgZGlk
UmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGQ4
Y2VhNjlkZTg3NjI5OTJhYjAyOTc0ZTQ1YTc4NzE4NDQwZDc1Y2QuLmNlNDEyYjQ1OTI4NmIzNjlk
ZjEyY2QwOGYzMzM4NWFkOGM5ZGRkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDaGlsZFBy
b2Nlc3MuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXJNYXAuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMTU3LDYgKzE1OCwxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBB
TDo6U2Vzc2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9t
YXRpb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKKyAgICBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciYgbmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIoKSB7IHJldHVybiBtX05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
OyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2VzcygpOwogICAgIH5OZXR3
b3JrUHJvY2VzcygpOwpAQCAtMjkxLDYgKzI5NiwxMCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JN
KElPUykKICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRhYmFzZVRy
YWNrZXI7CiAjZW5kaWYKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIgbV9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
cjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCmluZGV4IDAxNzJjM2I0MTliODFmMTVkM2Y3ODlhZDhlOGQ2ZjNhZjk4OTFkNTgu
LjQ0MDc3ZDNjZTVlZjFkZDBiNTk0MDRlNWY5ZTZkNzY3MTcwMzIyZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGVuY29kZXIgPDwgbWFpbkRvY3VtZW50VVJM
OwotICAgIGVuY29kZXIgPDwgY29udGVudFJ1bGVMaXN0czsKKyAgICBlbmNvZGVyIDw8IHVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIH0KIApAQCAtMTg0LDExICsxODQs
MTEgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5tYWluRG9jdW1lbnRVUkwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE+Pj4gY29udGVudFJ1bGVMaXN0czsKLSAgICBkZWNvZGVyID4+IGNvbnRlbnRSdWxl
TGlzdHM7Ci0gICAgaWYgKCFjb250ZW50UnVsZUxpc3RzKQorICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPj4gdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXI7CisgICAgaWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0LmNvbnRlbnRSdWxlTGlzdHMgPSBXVEZN
b3ZlKCpjb250ZW50UnVsZUxpc3RzKTsKKyAgICByZXN1bHQudXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciA9ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiAK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCA3N2RlODU1NTNl
ZGY0Yzk4Y2JhN2M0NjczZmI2ZTNiNzEwZDRlM2JhLi4yY2MzM2FjZTliZjAwOTIzMTlhYmJlNTZj
YWZiYTBiODJkNTU3MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0yNyw3ICsyNyw3
IEBACiAKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
LmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
TG9hZGVyT3B0aW9ucy5oPgpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQogICAgIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1lbnRVUkw7Ci0g
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YT4+IGNvbnRlbnRSdWxlTGlzdHM7CisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IGJj
NDg5NDM2ODhkNTA2NzM5MTFmMWFhZGUwYThjNzczNzZkMjRhZDUuLjI1Zjk2M2EyMDFjYTIxYjlk
YWE2NzM5MWVkY2ZiNzhjMzcxMGM5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgUGluZ0xvYWQ6OlBpbmdMb2FkKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgSFRUUEhlYWRlck1hcCYmIG8K
ICAgICA6IG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQogICAgICwgbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fdGltZW91dFRp
bWVyKCp0aGlzLCAmUGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVkKQotICAgICwgbV9uZXR3b3Jr
TG9hZENoZWNrZXIobWFrZVVuaXF1ZVJlZjxOZXR3b3JrTG9hZENoZWNrZXI+KG1fcGFyYW1ldGVy
cy5tb2RlLCBtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBtX3BhcmFtZXRlcnMu
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIFdURk1vdmUo
b3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgp
IH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpKSkKKyAgICAsIG1fbmV0d29y
a0xvYWRDaGVja2VyKE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y3JlYXRlKG1fcGFyYW1ldGVycy5tb2Rl
LCBtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBtX3BhcmFtZXRlcnMuc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIFdURk1vdmUob3JpZ2lu
YWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1f
cGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpKSkKIHsKIAogICAgIGlmIChtX3BhcmFt
ZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+
c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdURk1vdmUobV9wYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVh
ZGVycy52YWx1ZSgpKSk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlci0+c2V0Q29udGVudEV4dGVuc2lvblJ1bGVMaXN0cyhXVEZNb3ZlKG1f
cGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwpLCBXVEZNb3ZlKG1fcGFyYW1ldGVycy5jb250ZW50
UnVsZUxpc3RzKSk7CisgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnNldENvbnRlbnRFeHRlbnNp
b25Db250cm9sbGVyKFdURk1vdmUobV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCksIG1fcGFy
YW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKICNlbmRpZgogCiAgICAg
Ly8gSWYgdGhlIHNlcnZlciBuZXZlciByZXNwb25kcywgdGhpcyBvYmplY3Qgd2lsbCBoYW5nIGFy
b3VuZCBmb3JldmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4
IDc0YTY5ODU3NzZhOWZiNWE3ZjU5MTViZGU4NDY1NDVjMDNmYWJjODAuLmExZWY2ZTczMTdmZTU1
ZjZjNWRjZjUzYWM3NTUzYTljYjA3Yzk2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICBSZWZQdHI8
TmV0d29ya0RhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6VGltZXIgbV90aW1lb3V0VGlt
ZXI7Ci0gICAgVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4gbV9uZXR3b3JrTG9hZENoZWNr
ZXI7CisgICAgUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4gbV9uZXR3b3JrTG9hZENoZWNrZXI7CiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fbGFzdFJlZGlyZWN0
aW9uUmVxdWVzdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CmluZGV4IDI3ZjA1YzdiMzgxNWJmNTFjNjkzNDRlMWE2NmRlNTdmMDAwMGU3NWQuLmI3YTRjOTY1
Yzc5MDExNTA5YmI1NTI1NzZmZDUwNTBjNjY0NTM4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMTg1LDYgKzE4NSw3IEBAIGRlZiBmb3J3YXJkX2RlY2xh
cmF0aW9uc19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICAgICB0eXBlc19ieV9uYW1l
c3BhY2VbJ0lQQyddLnVwZGF0ZShbKCdjbGFzcycsICdDb25uZWN0aW9uJyldKQogCiAgICAgbm9f
Zm9yd2FyZF9kZWNsYXJhdGlvbl90eXBlcyA9IGZyb3plbnNldChbCisgICAgICAgICdTdHJpbmcn
LAogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VX
b3JrZXJKb2JJZGVudGlmaWVyJywKQEAgLTE5Miw3ICsxOTMsNyBAQCBkZWYgZm9yd2FyZF9kZWNs
YXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjZWl2ZXIpOgogICAgICAgICAnV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyJywKLSAgICAgICAgJ1N0cmluZycsCisgICAgICAgICdXZWJLaXQ6
OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXInLAogICAgIF0pCiAKICAgICBmb3IgcGFy
YW1ldGVyIGluIHJlY2VpdmVyLml0ZXJwYXJhbWV0ZXJzKCk6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWIzZmI0M2Y5NDAxMDg3ZjgwYzBiY2Y3NDBiNmViOWU0ODBhMDRiNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51
bSBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggNzA4OWRhOGIyYTg2ZGZkZWY4
NzViOTg4MGI2ZjRmYWIwM2E3MmRhOS4uODY3MTU5YjY4ZjQwMmYyOWFlZGRiN2YzMjllNzgwMDlm
ZjE5YTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKQEAgLTE3OSw4ICsxNzksMTMgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBD
OjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXJD
b250ZW50Q29udHJvbGxlcklEKSkKKworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBk
ZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CisgICAgaWYgKCF1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQgPSAqdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcjsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy52aXNpdGVkTGlua1RhYmxlSUQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy53ZWJzaXRlRGF0YVN0b3JlSUQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4
IDZiZDE5NjFmM2M0ZDQ1MDA0ZGRkZmQ2MjAxYzY4MjdkOTdlOTA0MDIuLmJhZWJhZjRkNDEwMDg5
NjVhNTZmNGMxYzNmMjFhY2U4NzNlYTQzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTk4LDcgKzk4LDcgQEAgc3RydWN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRDsK
ICAgICB1aW50NjRfdCBoaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlEOwogCi0gICAgdWludDY0
X3QgdXNlckNvbnRlbnRDb250cm9sbGVySUQ7CisgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJRDsKICAgICB1aW50NjRfdCB2aXNpdGVkTGlu
a1RhYmxlSUQ7CiAgICAgdWludDY0X3Qgd2Vic2l0ZURhdGFTdG9yZUlEOwogICAgIGJvb2wgY2Fu
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
R3JvdXBEYXRhLmNwcAppbmRleCAyNzUwMDdhZjcxNWIyNWZhN2IyZDZkOWQ3MDVmZTc1MzI5NTll
NTUxLi5hYmRhN2Q1ZTVjNjRlMDE1NGFkMzU2OTk2N2FlODc2ZjZmNjlkYzMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcApAQCAtNTMsMTAgKzUzLDExIEBAIHN0
ZDo6b3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gV2ViUGFnZUdyb3VwRGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBib29sIHZpc2libGVUb0hpc3RvcnlDbGllbnQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB1aW50NjRfdCB1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcikpCisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4g
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBpZiAoIXVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0
dXJuIHsgeyBpZCwgcGFnZUdyb3VwSUQsIHZpc2libGVUb0luamVjdGVkQnVuZGxlLCB2aXNpYmxl
VG9IaXN0b3J5Q2xpZW50LCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH0gfTsKKyAg
ICByZXR1cm4geyB7IGlkLCBwYWdlR3JvdXBJRCwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIHZp
c2libGVUb0hpc3RvcnlDbGllbnQsICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH0g
fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
R3JvdXBEYXRhLmgKaW5kZXggMmM2MWU1OTdiNjU2Y2Q4YjgyNzZkMjBjNDZlODQxYzk5ZjgwYjVi
MC4uOTMwZDhlZTk4YWVlNmUyNjcxNTFkMTY2ZDk4MDE5MjQ5MmIwMzliMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC00Myw3
ICs0NCw3IEBAIHN0cnVjdCBXZWJQYWdlR3JvdXBEYXRhIHsKICAgICBib29sIHZpc2libGVUb0lu
amVjdGVkQnVuZGxlOwogICAgIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudDsKIAotICAgIHVp
bnQ2NF90IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CisgICAgVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2MTM4OTNlNDMwYmJi
YzllZDcwMzRhZWIxNGZjNThkYzVlMjhlZmJjLi41YzY5NDIyNDA0YjczMGVkZTZmMmE0NWIxMzdk
ZjJmMDE5YmY0YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI2LDE5ICsyNiwyMyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKIAorI2luY2x1
ZGUgIkFQSUNvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpZiBFTkFC
TEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNlbmRpZgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisj
aW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCkBAIC04NSw2
ICs4OSwxMCBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp+TmV0d29ya1Byb2Nlc3NQcm94eSgpCiAg
ICAgQVNTRVJUKG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuaXNFbXB0eSgpKTsK
ICAgICBBU1NFUlQobV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3MuaXNFbXB0eSgp
KTsKICAgICBBU1NFUlQobV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJh
Y2tzLmlzRW1wdHkoKSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBmb3Ig
KGF1dG8qIHByb3h5IDogbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKQorICAgICAg
ICBwcm94eS0+cmVtb3ZlTmV0d29ya1Byb2Nlc3MoKnRoaXMpOworI2VuZGlmCiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6Okxh
dW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCkBAIC01NDAsNCArNTQ4LDI4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdM
b2NrZWRGaWxlcykKICAgICB9CiB9CiAKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbnRlbnRFeHRlbnNpb25SdWxlcyhVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5ID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OmdldChpZGVudGlmaWVyKSkgeworICAgICAgICBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3hpZXMuYWRkKHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KTsKKyAgICAgICAgd2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZE5ldHdvcmtQcm9jZXNzKCp0aGlzKTsKKwor
ICAgICAgICBhdXRvIHJ1bGVzID0gV1RGOjptYXAod2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHktPmNvbnRlbnRFeHRlbnNpb25SdWxlcygpLCBbXShhdXRvJiYga2V5VmFsdWUpIC0+IHN0ZDo6
cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4geworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGtleVZhbHVlLnZhbHVlLT5uYW1lKCksIGtleVZhbHVl
LnZhbHVlLT5jb21waWxlZFJ1bGVMaXN0KCkuZGF0YSgpKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpBZGRDb250ZW50
UnVsZUxpc3RzIHsgaWRlbnRpZmllciwgcnVsZXMgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OkFk
ZENvbnRlbnRSdWxlTGlzdHMgeyBpZGVudGlmaWVyLCB7IH0gfSwgMCk7Cit9CisKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5JiBwcm94eSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlIHsgcHJveHkuaWRlbnRp
ZmllcigpIH0sIDApOworICAgIG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcy5yZW1v
dmUoJnByb3h5KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
aW5kZXggZmZmYjQxNGY5NjUxNzlkMjYxMGE2MTNlMmJlNmVlM2NkMzNlMTAyZS4uYzlkYzc5MmE5
YjVlMDdjY2ZlMTA1MjlhN2UxOWFlNmFiYTQ5MGQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhy
b3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgorI2luY2x1ZGUg
IlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KQEAgLTU5LDYgKzYwLDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBlbnVtIGNsYXNzIFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVj
dCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKK2NsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5Owogc3RydWN0IFdlYnNpdGVEYXRhOwogCiBjbGFzcyBOZXR3b3JrUHJv
Y2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJv
dHRsZXJDbGllbnQgewpAQCAtOTQsNiArOTYsMTAgQEAgcHVibGljOgogICAgIFByb2Nlc3NUaHJv
dHRsZXImIHRocm90dGxlcigpIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgV2ViUHJvY2Vz
c1Bvb2wmIHByb2Nlc3NQb29sKCkgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQogCisjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICB2b2lkIGRpZERlc3Ryb3lXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYpOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwog
CkBAIC0xMzksNiArMTQ1LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBhbGxTdG9yYWdlQWNjZXNz
RW50cmllc1Jlc3VsdChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgdm9pZCBj
b250ZW50RXh0ZW5zaW9uUnVsZXMoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7Cisj
ZW5kaWYKKwogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRGaW5p
c2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KSBvdmVycmlkZTsKIApAQCAtMTYxLDYgKzE3MSwxMCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4+IG1fd3JpdGVC
bG9iVG9GaWxlUGF0aENhbGxiYWNrTWFwOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdlQWNjZXNzUmVz
cG9uc2VDYWxsYmFja01hcDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+PiBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzQ2FsbGJhY2tNYXA7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIEhh
c2hTZXQ8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqPiBtX3dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3hpZXM7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDYxMjZlYTVkODdkNjRhZGMyZThkNmVlYzI2
MzgxZDBjZDhjNzI1ZTIuLjE4NGMyZmQ1NDQxZjhkODcwNDM2ZDE1Yjc2YTRkMmRmZjYzNzI4NmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ3LDQgKzQ3LDggQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgSEFWRShDRk5F
VFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgU3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1
bHQoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXNSZXN1bHQoVmVjdG9yPFN0cmluZz4gZG9tYWlucywgdWludDY0X3QgY29udGV4
dElkKQorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBDb250ZW50RXh0ZW5z
aW9uUnVsZXMoV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApp
bmRleCA0MjMzYzhlNWNmZmM2NjIwMTMxY2RiYjgzYzAwMmRjYTU1NjM0MWJiLi40MmZiOGVhZTNk
YjJkZGZmOTI0ZTAxOWQ2NzE0YjI2ODI0ODJhOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiQVBJVXNlclNj
cmlwdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCkBAIC00NiwxOCArNDgsMzcgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyBIYXNoTWFwPFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4mIHdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3hpZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
TWFwPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5Kj4+IHByb3hpZXM7CisgICAgcmV0dXJuIHByb3hpZXM7Cit9CisKKworV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkqIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpn
ZXQoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJl
dHVybiB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkuZ2V0KGlkZW50aWZpZXIpOwor
fQorICAgIAogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KCkKLSAgICA6IG1fdXNlclNjcmlwdHMoQVBJOjpBcnJheTo6Y3JlYXRlKCkp
CisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigpKQorICAgICwgbV91c2VyU2NyaXB0cyhBUEk6OkFy
cmF5OjpjcmVhdGUoKSkKICAgICAsIG1fdXNlclN0eWxlU2hlZXRzKEFQSTo6QXJyYXk6OmNyZWF0
ZSgpKQogeworICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMoKS5hZGQobV9pZGVu
dGlmaWVyLCB0aGlzKTsKIH0KIAogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6On5XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpCiB7Ci0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICBwcm9jZXNzLT5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CisgICAgd2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveGllcygpLnJlbW92ZShtX2lkZW50aWZpZXIpOworICAgIGZvciAoYXV0byogcHJvY2Vz
cyA6IG1fcHJvY2Vzc2VzKSB7CisgICAgICAgIHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAgICBwcm9jZXNzLT5kaWRE
ZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKnRoaXMpOwogICAgIH0KKyNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fbmV0
d29ya1Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KCp0aGlzKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1By
b3h5LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNjUsNyArODYs
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LAogICAgIGlmICghbV9wcm9jZXNzZXMuYWRkKCZ3
ZWJQcm9jZXNzUHJveHkpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlBy
b2Nlc3NQcm94eS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSwgKnRoaXMp
OworICAgIHdlYlByb2Nlc3NQcm94eS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy51c2VyQ29u
dGVudFdvcmxkcy5pc0VtcHR5KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgd29ybGQgOiBtX3Vz
ZXJDb250ZW50V29ybGRzKQpAQCAtOTUsNyArMTE2LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQ
cm8KICAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMoJndlYlByb2Nlc3NQcm94eSkpOwog
CiAgICAgbV9wcm9jZXNzZXMucmVtb3ZlKCZ3ZWJQcm9jZXNzUHJveHkpOwotICAgIHdlYlByb2Nl
c3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CisgICAg
d2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigp
LnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCkBAIC0x
MDYsNyArMTI3LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNl
ckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQKICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fdXNlckNvbnRlbnRXb3JsZHMuYWRkKCZ3b3JsZCk7CiAgICAgaWYgKGFkZFJlc3VsdC5p
c05ld0VudHJ5KSB7CiAgICAgICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9w
cm9jZXNzZXMpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsgc3RkOjptYWtlX3BhaXIod29y
bGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpB
ZGRVc2VyQ29udGVudFdvcmxkcyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwg
d29ybGQubmFtZSgpKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIH0KIH0KIApA
QCAtMTMwLDcgKzE1MSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRlbnRXCiB7CiAgICAgaWYgKHNo
b3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01lc3NhZ2Uod29ybGQsIG51bWJlck9mVXNl
c1RvUmVtb3ZlKSkgewogICAgICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1f
cHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZp
ZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoeyB3
b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICB9CiB9
CiAKQEAgLTE0Myw3ICsxNjQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZQogICAgIH0KIAog
ICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
VXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkpOworICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZVVzZXJDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2Ny
aXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKQEAgLTE1NSw3ICsxNzYsNyBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNj
cmlwdCYgdXNlclNjcmlwdCkKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLmFwcGVuZCgm
dXNlclNjcmlwdCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJv
Y2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRzKHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29y
bGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC51c2VyU2NyaXB0KCkgfSB9KSwgaWRlbnRpZmll
cigpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxk
LT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSksIGlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCkBAIC0xNjMsNyAr
MTg0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNj
cmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQKICAgICBSZWY8QVBJOjpVc2VyQ29udGVu
dFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3JsZCgpOwogCiAgICAgZm9y
IChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2Ny
aXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQuaWRlbnRpZmllcigpKSwgaWRlbnRp
ZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3Jp
cHQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgbV91c2Vy
U2NyaXB0cy0+ZWxlbWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTY3JpcHQpOwogCkBAIC0xNzMsNyAr
MTk0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNj
cmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYg
d29ybGQpCiB7CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRp
ZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgdW5zaWduZWQgdXNlclNjcmlwdHNSZW1v
dmVkID0gbV91c2VyU2NyaXB0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU2Ny
aXB0PihbJl0oY29uc3QgYXV0byYgdXNlclNjcmlwdCkgewogICAgICAgICByZXR1cm4gJnVzZXJT
Y3JpcHQtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQ7CkBAIC0xOTQsNyArMjE1LDcgQEAg
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMo
KQogICAgICAgICB3b3JsZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZCh3b3JsZENvdW50UGFp
ci5rZXktPmlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2Vz
cyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmllcnMp
LCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmllcnMp
LCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50
cygpLmNsZWFyKCk7CiAKQEAgLTIxMCw3ICsyMzEsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2Vy
UwogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmFwcGVuZCgmdXNlclN0eWxlU2hl
ZXQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpBZGRVc2VyU3R5bGVTaGVldHMoeyB7IHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSwgd29y
bGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQudXNlclN0eWxlU2hlZXQoKSB9IH0pLCBp
ZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IHsgdXNlclN0eWxlU2hlZXQuaWRl
bnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC51c2VyU3R5bGVT
aGVldCgpIH0gfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5
bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCkBAIC0yMTgsNyArMjM5LDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5
bGVTaGVldCYgdXMKICAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJT
dHlsZVNoZWV0LnVzZXJDb250ZW50V29ybGQoKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclN0eWxlU2hlZXQod29ybGQtPmlk
ZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpKTsK
KyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVl
dC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3VzZXJT
dHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTdHlsZVNoZWV0KTsKIApAQCAt
MjI4LDcgKzI0OSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92
ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzCiB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoQVBJOjpVc2VyQ29u
dGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZp
ZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoeyB3b3Js
ZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIHVuc2ln
bmVkIHVzZXJTdHlsZVNoZWV0c1JlbW92ZWQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlQWxs
T2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU3R5bGVTaGVldD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJT
dHlsZVNoZWV0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50
V29ybGQoKSA9PSAmd29ybGQ7CkBAIC0yNDksNyArMjcwLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKICAgICAgICAgd29y
bGRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQod29ybGRDb3VudFBhaXIua2V5LT5pZGVudGlm
aWVyKCkpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZp
ZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMo
KS5jbGVhcigpOwogCkBAIC0yNzAsNyArMjkxLDcgQEAgYm9vbCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2UK
ICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5hZGQoaGFuZGxlci5pZGVudGlmaWVyKCksICZo
YW5kbGVyKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNz
ZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVy
KCksIHdvcmxkLT5pZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIo
KSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVy
KCksIHdvcmxkLT5pZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI4MCw3ICszMDEs
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2Fn
ZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZwogICAgIGZvciAoYXV0byBpdCA9IG1fc2NyaXB0
TWVzc2FnZUhhbmRsZXJzLmJlZ2luKCksIGVuZCA9IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+bmFtZSgpID09
IG5hbWUgJiYgJml0LT52YWx1ZS0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3JsZCkgewogICAg
ICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAg
ICAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCks
IGl0LT52YWx1ZS0+aWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0LT52YWx1ZS0+
aWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgICAgICAgICBt
X3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmUoaXQpOwogCkBAIC0yOTMsNyArMzE0LDcgQEAg
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5k
bGVyRm9yTmFtZShjb25zdCBTdHJpbmcKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3
b3JsZCkKIHsKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVy
KCkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAg
ICAgdW5zaWduZWQgbnVtYmVyUmVtb3ZlZCA9IDA7CiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxl
cnMucmVtb3ZlSWYoWyZdKGF1dG8mIGVudHJ5KSB7CkBAIC0zMzAsMjQgKzM1MSwzMyBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3QoQVBJOjpD
b250ZW50UnVsZUxpc3QmIGNvbgogCiAgICAgYXV0byBwYWlyID0gc3RkOjptYWtlX3BhaXIoY29u
dGVudFJ1bGVMaXN0Lm5hbWUoKSwgY29udGVudFJ1bGVMaXN0LmNvbXBpbGVkUnVsZUxpc3QoKS5k
YXRhKCkpOwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpBZGRDb250ZW50UnVsZUxpc3RzKHsgcGFpciB9KSwgaWRlbnRpZmllcigpKTsKKyAgICBm
b3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50UnVsZUxpc3RzKHsg
cGFpciB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgZm9yIChhdXRvKiBwcm9j
ZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlk
ZW50aWZpZXIoKSwgeyBwYWlyIH0gfSwgMCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJpbmcmIG5hbWUpCiB7
CiAgICAgbV9jb250ZW50UnVsZUxpc3RzLnJlbW92ZShuYW1lKTsKIAotICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0
KG5hbWUpLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUNvbnRlbnRSdWxlTGlzdChuYW1lKSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworCisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
cjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0IHsgaWRlbnRpZmllcigpLCBuYW1lIH0sIDApOwogfQog
CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxDb250ZW50UnVs
ZUxpc3RzKCkKIHsKICAgICBtX2NvbnRlbnRSdWxlTGlzdHMuY2xlYXIoKTsKIAotICAgIGZvciAo
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsQ29udGVu
dFJ1bGVMaXN0cygpLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1f
cHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OlJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKSwgaWRlbnRpZmllcigpLnRv
VUludDY0KCkpOworCisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2Vz
KQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSB9LCAwKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCAy
MzBmNjIzZDk4ZTQ3ODI5NTAxMTBkOTQ5ZjUyNTY1NjIwMGUzYjg0Li5hYjNmMjYwMmIwYzIzZDc2
MzkwMDIwMGFmYzZjZjVhNzhmZmNmODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmgKQEAgLTI3LDExICsyNywxMSBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgpAQCAtNTQsMjAgKzU0LDIzIEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5Owog
Y2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI7CiBz
dHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwog
Ci1jbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50Q29udHJvbGxlcj4sIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBJZGVudGlmaWVkPFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5PiB7CitjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50Q29udHJv
bGxlcj4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IGNyZWF0ZSgpCiAgICAgeyAKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkp
OwotICAgIH0gCi0gICAgZXhwbGljaXQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsK
KyAgICB9CisgICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsKICAgICB+V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsKIAorICAgIHN0YXRpYyBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSogZ2V0KFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOworCiAg
ICAgdm9pZCBhZGRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmKTsKICAgICB2b2lkIHJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKQEAg
LTkxLDExICs5NCwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyTWVzc2FnZUhh
bmRsZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKKyAgICB2b2lkIGFkZE5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkm
IHByb3h5KSB7IG1fbmV0d29ya1Byb2Nlc3Nlcy5yZW1vdmUoJnByb3h5KTsgfQorICAgIHZvaWQg
cmVtb3ZlTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHkpIHsgbV9uZXR3
b3JrUHJvY2Vzc2VzLmFkZCgmcHJveHkpOyB9CisKICAgICB2b2lkIGFkZENvbnRlbnRSdWxlTGlz
dChBUEk6OkNvbnRlbnRSdWxlTGlzdCYpOwogICAgIHZvaWQgcmVtb3ZlQ29udGVudFJ1bGVMaXN0
KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpOwor
ICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+PiYg
Y29udGVudEV4dGVuc2lvblJ1bGVzKCkgeyByZXR1cm4gbV9jb250ZW50UnVsZUxpc3RzOyB9CiAj
ZW5kaWYKIAorICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCiBwcml2YXRlOgogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC0xMDcsMTMgKzExNiwxNSBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoSGFzaENvdW50ZWRTZXQ8
UmVmUHRyPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4+Jik7CiAgICAgYm9vbCBzaG91bGRTZW5kUmVt
b3ZlVXNlckNvbnRlbnRXb3JsZHNNZXNzYWdlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYsIHVuc2ln
bmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKTsKIAotICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5
Kj4gbV9wcm9jZXNzZXM7ICAgIAorICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
bV9pZGVudGlmaWVyOworICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4gbV9wcm9jZXNzZXM7
CiAgICAgUmVmPEFQSTo6QXJyYXk+IG1fdXNlclNjcmlwdHM7CiAgICAgUmVmPEFQSTo6QXJyYXk+
IG1fdXNlclN0eWxlU2hlZXRzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcj4+IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzOwogICAgIEhhc2hDb3Vu
dGVkU2V0PFJlZlB0cjxBUEk6OlVzZXJDb250ZW50V29ybGQ+PiBtX3VzZXJDb250ZW50V29ybGRz
OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBIYXNoU2V0PE5ldHdvcmtQ
cm9jZXNzUHJveHkqPiBtX25ldHdvcmtQcm9jZXNzZXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4+IG1fY29udGVudFJ1bGVMaXN0czsKICNlbmRpZgog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGVlY2NhYzJmMWE5Njg2NmI3Y2Q5YWI0YTFkOThlODYxYzg1MTUwYmUuLjFiZWFiNzQ5OWVj
OGYyZTQ3NmRlYTFjOGRhMmU5NTNiODI5NWYyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTU4LDYgKzk1OCw3IEBACiAJCTQxRkFG
NUY1MUUzQzA2NDkwMDFBRTY3OCAvKiBXZWJSVENSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQUY1RjQxRTNDMDY0MTAwMUFFNjc4IC8q
IFdlYlJUQ1Jlc29sdmVyLmggKi87IH07CiAJCTQxRkFGNUY4MUUzQzEwMjEwMDFBRTY3OCAvKiBM
aWJXZWJSVENSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQUY1RjYxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmgg
Ki87IH07CiAJCTQxRkFGNUY5MUUzQzEwMjUwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBRjVG
NzFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuY3BwICovOyB9OworCQk0MUZC
RTgyNjIwNkRGN0ZBMDAwRjA3NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQkU4MjQy
MDZEQTc5QzAwMEYwNzQxIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCAqLzsg
fTsKIAkJNDQ1MEFFQzAxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJlZE1lbW9yeUNvY29hLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBBRUJGMURD
M0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAgKi87IH07CiAJCTQ2MEY0ODhG
MUY5OTZGNzEwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjBGNDg4RDFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk0NjBGNDg5MDFGOTk2RjcxMDBDRjRCODcg
LyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYwRjQ4OEUxRjk5NkY2QzAwQ0Y0Qjg3
IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTEx
OTYsNiArMTE5Nyw3IEBACiAJCTUyRDVBMUIwMUM1NzQ5NUEwMERFMzRBMyAvKiBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyRDVBMUFBMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaCAqLzsgfTsKIAkJNTJENUExQjExQzU3NDk2MjAwREUzNEEzIC8qIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyRDVBMUFDMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0gKi87IH07CiAJCTUyRDVBMUI3MUM1NzRBMDIwMERFMzRBMyAvKiBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTJENUExQjQxQzU3NDlGMjAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0gKi87IH07CisJCTUyRjA2MEUxMTY1NDMxODUwMEYzMjgxQiAvKiBOZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyog
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk1MzAyNTgzQjFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgyRTFE
Q0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAgKi87IH07CiAJCTUz
MDI1ODNDMURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgyRjFEQ0JCRDFE
MDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oICovOyB9OwogCQk1MzAyNTgzRDFE
Q0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgzMDFEQ0JCRDFEMDBEQTg5QzIg
LyogTmV0d29ya0NhcHR1cmVFdmVudC5jcHAgKi87IH07CkBAIC0yMzQ1LDkgKzIzNDcsOSBAQAog
CQkJZHN0UGF0aCA9IFByaXZhdGVIZWFkZXJzL2F0b21zOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9
IDE7CiAJCQlmaWxlcyA9ICgKLQkJCQk5OUNBNjZDQTIwMzY2ODVEMDA3NEYzNUUgLyogRW50ZXJG
dWxsc2NyZWVuLmpzIGluIENvcHkgV2ViRHJpdmVyIEF0b21zICovLAogCQkJCTk5Qjc1MEYyMUYz
M0VENUIwMEMxQ0ZCNSAvKiBFbGVtZW50QXR0cmlidXRlLmpzIGluIENvcHkgV2ViRHJpdmVyIEF0
b21zICovLAogCQkJCTk5Qjc1MEYzMUYzM0VENUIwMEMxQ0ZCNSAvKiBFbGVtZW50RGlzcGxheWVk
LmpzIGluIENvcHkgV2ViRHJpdmVyIEF0b21zICovLAorCQkJCTk5Q0E2NkNBMjAzNjY4NUQwMDc0
RjM1RSAvKiBFbnRlckZ1bGxzY3JlZW4uanMgaW4gQ29weSBXZWJEcml2ZXIgQXRvbXMgKi8sCiAJ
CQkJOTlCNzUwRjQxRjMzRUQ1QjAwQzFDRkI1IC8qIEZpbmROb2Rlcy5qcyBpbiBDb3B5IFdlYkRy
aXZlciBBdG9tcyAqLywKIAkJCQk5OUI3NTBGNTFGMzNFRDVCMDBDMUNGQjUgLyogRm9ybUVsZW1l
bnRDbGVhci5qcyBpbiBDb3B5IFdlYkRyaXZlciBBdG9tcyAqLywKIAkJCQk5OUI3NTBGNjFGMzNF
RDVCMDBDMUNGQjUgLyogRm9ybVN1Ym1pdC5qcyBpbiBDb3B5IFdlYkRyaXZlciBBdG9tcyAqLywK
QEAgLTMzNjQsNiArMzM2NiwxMCBAQAogCQk0MUZBRjVGNDFFM0MwNjQxMDAxQUU2NzggLyogV2Vi
UlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUlRDUmVz
b2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkFGNUY2MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJS
VENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENS
ZXNvbHZlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQUY1RjcxRTNDMEI0NzAwMUFFNjc4IC8qIExp
YldlYlJUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExpYldlYlJUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jl
c29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQkU4MjEyMDZEODdG
NjAwMEYwNzQxIC8qIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgyMjIwNkRBNzlDMDAwRjA3NDEg
LyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxRkJFODIzMjA2REE3OUMwMDBGMDc0MSAvKiBOZXR3b3JrQ29udGVu
dFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOZXR3
b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgyNDIwNkRBNzlDMDAwRjA3NDEgLyogTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5Q29j
b2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkTWVtb3J5
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFGOTk2RjZD
MDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zNjQ2LDYgKzM2NTIsNyBAQAogCQk1MkQ1QTFCMjFDNTc0OUYyMDBERTM0QTMg
LyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyRDVBMUIzMUM1NzQ5RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUI0MUM1NzQ5
RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIE5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4MkUxRENCQkQxRDAwREE4OUMyIC8q
IE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MzAyNTgyRjFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNv
dXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrQ2FwdHVyZVJl
c291cmNlLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVz
b3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4MzAxRENCQkQxRDAw
REE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTmV0d29ya0NhcHR1cmVFdmVudC5jcHA7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTI5Myw2ICs1MzAwLDcgQEAKIAkJCQkxQTY0MjQ1QzEyREUyOUExMDBDQUFF
MkMgLyogVXBkYXRlSW5mby5oICovLAogCQkJCTVDMTlBNTFFMUZEMEIxNDYwMEVFQTMyMyAvKiBV
UkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJNUMxOUE1MUYxRkQwQjE0NzAwRUVB
MzIzIC8qIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmggKi8sCisJCQkJNDFGQkU4MjEyMDZEODdG
NjAwMEYwNzQxIC8qIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCAqLywKIAkJCQkx
QUMxMzM2NTE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuY3BwICovLAogCQkJCTFBQzEzMzY2
MTg1NjVCNTcwMEYzRUMwNSAvKiBVc2VyRGF0YS5oICovLAogCQkJCTI2ODQwNTRBMThCODY2RkYw
MDIyQzM4QiAvKiBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcCAqLywKQEAgLTYzODEs
NiArNjM4OSw5IEBACiAJCQkJNTEzQTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLywKIAkJCQk1MTNBMTY0QTE2MzBBOUJGMDA1RDdEMjIg
LyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLywKIAkJCQk1MTNBMTY0QjE2MzBB
OUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Ki8sCisJCQkJNDFGQkU4MjQyMDZEQTc5QzAwMEYwNzQxIC8qIE5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyLmNwcCAqLywKKwkJCQk0MUZCRTgyMjIwNkRBNzlDMDAwRjA3NDEgLyogTmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCAqLywKKwkJCQk0MUZCRTgyMzIwNkRBNzlDMDAwRjA3
NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJ
NDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgKi8sCiAJCQkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oICovLAogCQkJCTUzMjE1OTUxMURCQUU2RkMwMDU0QUEzQyAvKiBOZXR3b3Jr
RGF0YVRhc2suY3BwICovLApAQCAtODI2Niw2ICs4Mjc3LDcgQEAKIAkJCQkyOTg0RjU3QjE2NEI5
MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5o
ICovLAogCQkJCTUxREQ5RjI2MTYzNjdEQTIwMDE1NzhFOSAvKiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTFERDlGMjcxNjM2N0RBMjAw
MTU3OEU5IC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCAqLywKKwkJ
CQk1MkYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRSAv
KiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUx
N0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
cy5oICovLAogCQkJCTUxQUNDOTM0MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01l
c3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMDY2MSw2ICsxMDY3Myw4IEBACiAJCQkJNTMwMjU4
M0IxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEzQTE2NEMxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxREQ5RjI4MTYzNjdEQTIwMDE1
NzhFOSAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0MUZCRTgyNjIwNkRGN0ZBMDAwRjA3NDEgLyogTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTJGMDYwRTExNjU0
MzE4NTAwRjMyODFCIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ2REYwNjNCMUYzOTA1RjgwMDE5ODBCQiAvKiBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMyMTU5
NTQxREJBRTcxRDAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFzay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1M0JBNDdEMDFEQzJFRjVFMDA0REY0QUQgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBiMTRhNTgwMzI2YTAyZDZkMTg0MWE2ZDg4
YTRmODJjYjMxOTQ2MzI0Li5kN2Y4YmY4NDljNjRkZmE0MzRmMDQ5NmUwOWU5NTRkMmMwMzdhYWZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCkBAIC00NTYsNiArNDU2LDkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJhbWUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3
ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWUubG9hZGVy
KCkuY2xpZW50KCkpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xp
ZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworCiAgICAg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBh
cmFtZXRlcnMuaWRlbnRpZmllciA9IGdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKICAgICBsb2Fk
UGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKQEAgLTQ3MiwxMyArNDc1LDExIEBAIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAg
IGxvYWRQYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50b3BEb2N1bWVudCgp
LnVybCgpOwotCi0gICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLnBhZ2Uo
KSkgewotICAgICAgICAgICAgcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVhY2hDb250
ZW50RXh0ZW5zaW9uKFsmbG9hZFBhcmFtZXRlcnNdKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb24mIGNvbnRlbnRFeHRlbnNpb24pIHsK
LSAgICAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50UnVsZUxpc3RzLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihpZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb21waWxlZENv
bnRlbnRSdWxlTGlzdCY+KGNvbnRlbnRFeHRlbnNpb24uY29tcGlsZWRFeHRlbnNpb24oKSkuZGF0
YSgpKSk7Ci0gICAgICAgICAgICB9LCAqZG9jdW1lbnRMb2FkZXIpOwotICAgICAgICB9CisgICAg
Ly8gRklYTUU6IEluc3RlYWQgb2YgcGFzc2luZyB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyLCB3ZSBzaG91bGQganVzdCBwYXNzIHdlYlBhZ2VJZCB0byBOZXR3b3JrUHJvY2Vzcy4KKyAg
ICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLnBhZ2UoKSkgeworICAgICAgICBXZWJQYWdlKiB3ZWJQ
YWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYg
KHdlYlBhZ2UpCisgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyID0gd2ViUGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcigp
OwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4
IDIyMzVhOGRmMDRkMWM0YmNhNmQzMGVmNTMwMDMyOTVkMWFlMDU5OGEuLmI5ZTU4NTgzNWZlMzA4
YTg1MGEzZDg1MjdkOGFlMGIyM2MwZmYzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuY3BwCkBAIC01MCw5ICs1MCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcio+JiB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkKK3N0YXRpYyBIYXNoTWFwPFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcio+
JiB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaE1hcDx1aW50NjRfdCwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKj4+IHVzZXJDb250ZW50
Q29udHJvbGxlcnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8VXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKj4+IHVzZXJD
b250ZW50Q29udHJvbGxlcnM7CiAKICAgICByZXR1cm4gdXNlckNvbnRlbnRDb250cm9sbGVyczsK
IH0KQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIFdvcmxkTWFwJiB3b3JsZE1hcCgpCiAgICAgcmV0
dXJuIG1hcDsKIH0KIAotUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKQorUmVmPFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0
ZShVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0
byYgdXNlckNvbnRlbnRDb250cm9sbGVyUHRyID0gdXNlckNvbnRlbnRDb250cm9sbGVycygpLmFk
ZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKHVzZXJDb250
ZW50Q29udHJvbGxlclB0cikKQEAgLTc4LDE3ICs3OCwxNyBAQCBSZWY8V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90
IGlkZQogICAgIHJldHVybiB1c2VyQ29udGVudENvbnRyb2xsZXIucmVsZWFzZU5vbk51bGwoKTsK
IH0KIAotV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXIo
dWludDY0X3QgaWRlbnRpZmllcikKK1dlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmll
ci50b1VJbnQ2NCgpLCAqdGhpcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6fldl
YlVzZXJDb250ZW50Q29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKHVzZXJDb250ZW50Q29udHJv
bGxlcnMoKS5jb250YWlucyhtX2lkZW50aWZpZXIpKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCkpOwogCiAgICAgdXNlckNvbnRlbnRDb250cm9sbGVycygpLnJlbW92ZShtX2lkZW50
aWZpZXIpOwogfQpAQCAtMjQyLDcgKzI0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghd2Vi
UGFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFnZUlEKCksIHdl
YkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZhbHVlLT5k
YXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkpOworICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFn
ZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNl
KHZhbHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7
CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV9jb250cm9s
bGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IDliNzJkOTZjOGJiYjc3OWMx
YmViOWIxZjBhYWMyMTJjM2M5ZTQ1NTMuLmY1OGQyMWU4Y2RmYzZiZWQ5YzA0OWRkMmRjMzBhZjk0
OWQwOGFiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVk
ZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0
YVR5cGVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFByb3ZpZGVyLmg+CkBAIC00
OSwxMCArNTAsMTAgQEAgY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5
OwogCiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6VXNlckNvbnRlbnRQcm92aWRlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IGdldE9yQ3Jl
YXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyPiBnZXRPckNyZWF0ZShVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsK
ICAgICB2aXJ0dWFsIH5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKTsKIAotICAgIHVpbnQ2NF90
IGlkZW50aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0gCisgICAgVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CiAKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdl
YkNvcmU6OlVzZXJTY3JpcHQmJik7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0V2l0aFVSTChJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CkBAIC03MSw3
ICs3Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICBleHBsaWNpdCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7
CiAKICAgICAvLyBXZWJDb3JlOjpVc2VyQ29udGVudFByb3ZpZGVyCiAgICAgdm9pZCBmb3JFYWNo
VXNlclNjcmlwdChGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYsIGNvbnN0
IFdlYkNvcmU6OlVzZXJTY3JpcHQmKT4mJikgY29uc3QgZmluYWw7CkBAIC0xMTEsNyArMTEyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlckludGVy
bmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJJZGVudGlmaWVyKTsKICNlbmRpZgogCi0gICAgdWludDY0X3QgbV9pZGVudGlmaWVy
OworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiwgVmVj
dG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgV2ViQ29yZTo6VXNlclNjcmlwdD4+PiBXb3JsZFRvVXNl
clNjcmlwdE1hcDsKICAgICBXb3JsZFRvVXNlclNjcmlwdE1hcCBtX3VzZXJTY3JpcHRzOwpAQCAt
MTI2LDcgKzEyNyw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
ICAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5k
IG1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQ7CiAjZW5kaWYKLQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggNWNiMDkxMjlhNWY2OTBiZDZjYjc2MmYwYTFhZmRjOWQ4NjU1MjllNS4uMzhlOTEwYWIwNTNj
NjRlYmMyZThkMzY2ZWNlYzhhYjNiNTg0ODYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIlNoYXJlZE1l
bW9yeS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFu
ZGxlci5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBv
cHVwSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgpAQCAtMTA2
OSw2ICsxMDcwLDggQEAgcHVibGljOgogICAgIHZvaWQgb3BlbkdMRGlzcGxheU1hc2tDaGFuZ2Vk
KHVpbnQzMl90IGRpc3BsYXlNYXNrKTsKICNlbmRpZgogCisgICAgVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXItPmlkZW50aWZpZXIoKTsgfQorCiBwcml2YXRl
OgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337084</attachid>
            <date>2018-04-03 10:12:37 -0700</date>
            <delta_ts>2018-04-03 14:04:59 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-184205-20180403101237.patch</filename>
            <type>text/plain</type>
            <size>79135</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkMWUzNzhmZWQ0OWRlM2E3
M2NiYjFjMTNkNWRiYjU1OGM5NWQyZmEuLmE1ZDlhYWY1MWY0ZTg1OTVhYzQ0ODg3NTYwMjJkY2Ux
YWU3Y2IwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDE4LTA0LTAzICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9jZXNz
IGdldCBDb250ZW50QmxvY2tlciBpbmZvcm1hdGlvbiBmcm9tIFVJUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MjA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9j
ZXNzIGdldCBjb250ZW50IGJsb2NrZXJzIGZyb20gVUlQcm9jZXNzIGRpcmVjdGx5LgorICAgICAg
ICBCZWZvcmUgdGhhdCBwYXRjaCwgV2ViUHJvY2VzcyBzZW50IGNvbnRlbnQgYmxvY2tlcnMgdG8g
TmV0d29ya1Byb2Nlc3MgZm9yIGVhY2ggUGluZ0xvYWQuCisgICAgICAgIEluc3RlYWQsIFdlYlBy
b2Nlc3Mgc2VuZHMgdGhlIGNvbnRlbnQgYmxvY2tlciBpZGVudGlmaWVyIGZvciBlYWNoIFBpbmdM
b2FkIGFuZCBOZXR3b3JrUHJvY2VzcyBmZXRjaGVzIHRoZSBjb250ZW50IGJsb2NrZXIgb25jZS4K
KworICAgICAgICBUaGlzIGlzIGJvdGggbW9yZSBlZmZpY2llbnQgdGhhbiBwYXNzaW5nIHRoZW0g
Zm9yIGVhY2ggUGluZ0xvYWQgYW5kIHNhZmVyIGluIHRoZSBzZW5zZQorICAgICAgICB0aGF0IGEg
Y29tcHJvbWlzZWQgV2ViUHJvY2VzcyB3aWxsIG5vdCBiZSBhYmxlIHRvIGJ5cGFzcyBhbnkgb2Yg
dGhlc2UuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBnZXQg
dGhlIGNvbnRlbnQgYmxvY2tlciBpZGVudGlmaWVyIGRpcmVjdGx5IGZyb20gdGhlIFdlYlBhZ2VJ
RCBhdHRhY2hlZCB0byB0aGUgcmVxdWVzdC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IGJlYWNvbitjb250ZW50IGJsb2NrZXIgdGVzdHMuCisKKyAgICAgICAgRGlkIHNvbWUgcmVmYWN0
b3JpbmcgdG8gYWRkIGEgdHlwZWQgY29udGVudCBibG9ja2VyIGlkZW50aWZpZXIuCisgICAgICAg
IE9uY2UgTmV0d29ya1Byb2Nlc3MgZmV0Y2hlcyBhIGdpdmVuIGNvbnRlbnQgYmxvY2tlciwgdGhl
IGNvbnRlbnQgYmxvY2tlciB3aWxsIHNlbmQgYW55IG1vZGlmaWNhdGlvbiB0byBOZXR3b3JrUHJv
Y2Vzcy4KKyAgICAgICAgSW50cm9kdWNlZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciB0
byBoYW5kbGUgdGhlIGNvbnRlbnQgYmxvY2tlcnMgaW4gTmV0d29ya1Byb2Nlc3MuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250aW51ZUNoZWNraW5nUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxl
c0ZvckxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OnNldENvbnRlbnRFeHRlbnNp
b25Db250cm9sbGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6Om5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxl
TGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OnJlbW92ZUNvbnRl
bnRSdWxlTGlzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5h
Z2VyOjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OnJlbW92ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW46IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VHcm91cERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VHcm91cERhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6fk5l
dHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojpjb250ZW50RXh0ZW5zaW9uUnVsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpnZXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRVc2VyQ29udGVudFdvcmxkVXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNj
cmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVBbGxVc2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENv
bnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OmFkZE5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZU5ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNvbnRlbnRFeHRl
bnNpb25SdWxlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9h
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBjb25zdCk6CisKIDIwMTgtMDQtMDIgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtFbmNo
YW50XSBDbGVhbiB1cCBUZXh0Q2hlY2tlckVuY2hhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDYw
ZTkyYjdlNzM5MDM0ZDlhNzhkMjM1MWIyOTgyNzZkNGUwNTFkMTYuLmE1YjlmMWRlOWJiYWI2NzNm
MzMyNjQ0ZTJlZGIxYTc3NzY3YzM4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTA3LDYgKzEw
Nyw3IEBAIHNldChXZWJLaXRfU09VUkNFUwogCiAgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAK
ICAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAogICAgIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtNjE5LDYgKzYyMCw3IEBAIHNldChXZWJLaXRfTUVT
U0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIubWVzc2FnZXMuaW4KIAogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbgogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0ubWVz
c2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5ZDY2YzBkZjZlYzc2NDJm
NGUwMGJjOTMxZjEyZTE3YzYxZWFiZjRjLi5kYTBhNTJkYWUwYWFhY2IzMjA5NTM0ODViOTE5NDg4
MDA4NzZhNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMTUsNiArMTE1LDcg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgTmV0d29ya1JUQ1NvY2tldCBcCiAgICAgTmV0
d29ya1Jlc291cmNlTG9hZGVyIFwKICAgICBOZXR3b3JrU29ja2V0U3RyZWFtIFwKKyAgICBOZXR3
b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciBcCiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5IFwK
ICAgICBQbHVnaW5Qcm9jZXNzIFwKICAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1MjNlMDMzZjdkZmM4MmJmN2U3ZmVm
YWQ0MTY1ZDM5YzhjYTEyZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEw
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Qu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFn
ZXIoKSA9IGRlZmF1bHQ7CitOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6fk5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyKCkKK3sKKyAgICBhdXRvIHBlbmRpbmdDYWxsYmFja3MgPSBX
VEZNb3ZlKG1fcGVuZGluZ0NhbGxiYWNrcyk7CisgICAgaWYgKHBlbmRpbmdDYWxsYmFja3MuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kIGJhY2tlbmQ7CisgICAgZm9yIChhdXRvJiBjYWxs
YmFja3MgOiBwZW5kaW5nQ2FsbGJhY2tzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAgICAgICAgICBjYWxsYmFjayhiYWNrZW5kKTsKKyAg
ICB9Cit9CisKK3ZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEJhY2tlbmRDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Nv
bnRlbnRFeHRlbnNpb25CYWNrZW5kcy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRv
ciAhPSBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5lbmQoKSkgeworICAgICAgICBjYWxsYmFj
aygqaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3BlbmRp
bmdDYWxsYmFja3MuZW5zdXJlKGlkZW50aWZpZXIsIFtdIHsKKyAgICAgICAgcmV0dXJuIFZlY3Rv
cjxCYWNrZW5kQ2FsbGJhY2s+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
Q29udGVudEV4dGVuc2lvblJ1bGVzIHsgaWRlbnRpZmllciB9LCAwKTsKK30KKwordm9pZCBOZXR3
b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiYgY29udGVudFJ1bGVMaXN0
cykKK3sKKyAgICBhdXRvJiBiYWNrZW5kID0gKm1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVu
c3VyZShpZGVudGlmaWVyLCBbXSB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7Cisg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZW50UnVs
ZUxpc3QgOiBjb250ZW50UnVsZUxpc3RzKSB7CisgICAgICAgIFdlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YSBjb250ZW50UnVsZUxpc3REYXRhID0gY29udGVudFJ1bGVMaXN0LnNlY29uZDsK
KyAgICAgICAgYXV0byBjb21waWxlZENvbnRlbnRSdWxlTGlzdCA9IFdlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0OjpjcmVhdGUoV1RGTW92ZShjb250ZW50UnVsZUxpc3REYXRhKSk7CisgICAgICAg
IGJhY2tlbmQuYWRkQ29udGVudEV4dGVuc2lvbihjb250ZW50UnVsZUxpc3QuZmlyc3QsIFdURk1v
dmUoY29tcGlsZWRDb250ZW50UnVsZUxpc3QpKTsKKyAgICB9CisKKyAgICBhdXRvIHBlbmRpbmdD
YWxsYmFja3MgPSBtX3BlbmRpbmdDYWxsYmFja3MudGFrZShpZGVudGlmaWVyKTsKKyAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogcGVuZGluZ0NhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soYmFj
a2VuZCk7CisKK30KKwordm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6cmVtb3Zl
Q29udGVudFJ1bGVMaXN0KFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NvbnRlbnRF
eHRlbnNpb25CYWNrZW5kcy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBt
X2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aXRlcmF0b3ItPnZhbHVlLT5yZW1vdmVDb250ZW50RXh0ZW5zaW9uKG5hbWUpOworfQorCit2b2lk
IE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3Rz
KFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZmluZChpZGVudGlmaWVyKTsK
KyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9yLT52YWx1ZS0+cmVtb3ZlQWxsQ29udGVudEV4
dGVuc2lvbnMoKTsKK30KKwordm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6cmVt
b3ZlKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBt
X2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjc2Y2UyNTlhYTczNjRkYzBlNzYx
MmUwZGQzMzk2OWE2NmUwNzg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCisKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJD
b250ZW50UHJvdmlkZXIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOwor
Y2xhc3MgRGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBOZXR3b3JrQ29udGVudFJ1bGVM
aXN0TWFuYWdlcigpOworICAgIH5OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKKworICAgIHVzaW5nIEJhY2tlbmRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCYpPjsK
KyAgICB2b2lkIGNvbnRlbnRFeHRlbnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyLCBCYWNrZW5kQ2FsbGJhY2smJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZGRD
b250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiYp
OworICAgIHZvaWQgcmVtb3ZlQ29udGVudFJ1bGVMaXN0KFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCByZW1vdmVBbGxDb250ZW50
UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOworICAgIHZvaWQgcmVt
b3ZlKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOworCisgICAgSGFzaE1hcDxVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4+IG1fY29udGVudEV4dGVu
c2lvbkJhY2tlbmRzOworICAgIEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciwgVmVjdG9yPEJhY2tlbmRDYWxsYmFjaz4+IG1fcGVuZGluZ0NhbGxiYWNrczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFlMDE2NDE2ZjRmMzQ2MTY2NmVmMjcxYjZmNTk0NWFhMjFhOGIwNmQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKK21l
c3NhZ2VzIC0+IE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyIHsKKyAgICBSZW1vdmUoV2Vi
S2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgQWRk
Q29udGVudFJ1bGVMaXN0cyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYktpdDo6V2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhPj4gY29udGVudEZpbHRlcnMpCisgICAgUmVtb3ZlQ29udGVudFJ1
bGVMaXN0KFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBTdHJpbmcgbmFtZSkKKyAgICBSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKFdlYktpdDo6VXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKQorfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNw
cAppbmRleCBhMTQ1ZTgxM2ZmNGFhZDNmMWY3NWJhYmVmMmRhOThjYjI2YzZkNDcyLi5lNGU3MTNm
NzIxYjNlMDJkZjFhM2FlNjYzNzQ2NzhlMjMwMDdmZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCkBAIC0yOCw3ICsyOCw5
IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdC5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaD4KQEAgLTk1LDEyICs5NywyMCBA
QCBOZXR3b3JrTG9hZENoZWNrZXI6OlJlcXVlc3RPckVycm9yIE5ldHdvcmtMb2FkQ2hlY2tlcjo6
cmV0dXJuRXJyb3IoU3RyaW5nJiYgZXJybwogdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNr
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBpZiAocHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQocmVxdWVzdCkuYmxvY2tlZExvYWQpIHsKLSAg
ICAgICAgaGFuZGxlcihyZXR1cm5FcnJvcihBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYnkgY29udGVu
dCBleHRlbnNpb24iKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIHByb2Nlc3NDb250
ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBoYW5kbGVy
ID0gV1RGTW92ZShoYW5kbGVyKV0oYXV0byYmIHJlcXVlc3QsIGF1dG8gc3RhdHVzKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKHN0YXR1cy5ibG9ja2VkTG9hZCkgeworICAgICAgICAgICAgaGFuZGxl
cih0aGlzLT5yZXR1cm5FcnJvcihBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYnkgY29udGVudCBleHRl
bnNpb24iKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMt
PmNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoaGFuZGxl
cikpOworICAgIH0pOworI2Vsc2UKKyAgICBjb250aW51ZUNoZWNraW5nUmVxdWVzdChXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKICNlbmRpZgorfQogCit2b2lkIE5ldHdvcmtM
b2FkQ2hlY2tlcjo6Y29udGludWVDaGVja2luZ1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgVmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVyKQorewogICAgIGlmIChhdXRvKiBjb250
ZW50U2VjdXJpdHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgewogICAg
ICAgICBpZiAoaXNSZWRpcmVjdGVkKCkpIHsKICAgICAgICAgICAgIFVSTCB1cmwgPSByZXF1ZXN0
LnVybCgpOwpAQCAtMjI5LDIxICsyMzksMTggQEAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBOZXR3
b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0CiB9CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZCYgTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQoKQordm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVs
ZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpC
bG9ja2VkU3RhdHVzJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFtX2NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCkgewotICAgICAgICBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4o
KTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9jb250ZW50UnVsZUxpc3RzKQotICAgICAg
ICAgICAgbV9jb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQtPmFkZENvbnRlbnRFeHRlbnNpb24ocGFp
ci5maXJzdCwgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKHBhaXIu
c2Vjb25kKSkpOworICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSB7
CisgICAgICAgIENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzIHN0YXR1czsKKyAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0KSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICByZXR1cm4gKm1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kOwotfQotCi1Db250
ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBOZXR3b3JrTG9hZENoZWNrZXI6OnByb2Nlc3ND
b250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsK
LSAgICBhdXRvIHN0YXR1cyA9IGNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCgpLnByb2Nlc3NDb250
ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZChyZXF1ZXN0LnVybCgpLCBtX21haW5Eb2N1bWVu
dFVSTCk7Ci0gICAgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KHN0YXR1cywgbnVsbHB0ciwg
cmVxdWVzdCk7Ci0gICAgcmV0dXJuIHN0YXR1czsKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xl
dG9uKCkubmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKS5jb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQoKm1fdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGJhY2tlbmQpIG11dGFibGUgeworICAgICAg
ICBhdXRvIHN0YXR1cyA9IGJhY2tlbmQucHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvclBp
bmdMb2FkKHJlcXVlc3QudXJsKCksIG1fbWFpbkRvY3VtZW50VVJMKTsKKyAgICAgICAgYXBwbHlC
bG9ja2VkU3RhdHVzVG9SZXF1ZXN0KHN0YXR1cywgbnVsbHB0ciwgcmVxdWVzdCk7CisgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCksIHN0YXR1cyk7CisgICAgfSk7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggZWNmYjVlYjViY2E3N2MyN2Ux
ZDRhY2Q4MmI4YjljOGEyOWVkNDQyMi4uMDMyZDVmNDM4NzNkY2VlYmNjZWY0MmYzNTU5ZmM1OWUy
YzVmNjRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5oCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CkBAIC00MCw5ICs0MCwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOwogCi1jbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIg
eworY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0xv
YWRDaGVja2VyPiB7CiBwdWJsaWM6Ci0gICAgTmV0d29ya0xvYWRDaGVja2VyKFdlYkNvcmU6OkZl
dGNoT3B0aW9uczo6TW9kZSwgYm9vbCBzaG91bGRGb2xsb3dSZWRpcmVjdHMsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCYmLCBXZWJDb3JlOjpVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
KTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4gY3JlYXRlKFdlYkNvcmU6OkZl
dGNoT3B0aW9uczo6TW9kZSBtb2RlLCBib29sIHNob3VsZEZvbGxvd1JlZGlyZWN0cywgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmIG9yaWdpbmFsSGVh
ZGVycywgV2ViQ29yZTo6VVJMJiYgdXJsLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
JiYgc291cmNlT3JpZ2luKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0
d29ya0xvYWRDaGVja2VyIHsgbW9kZSwgc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgc2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdpbmFsSGVhZGVycyksIFdURk1v
dmUodXJsKSwgV1RGTW92ZShzb3VyY2VPcmlnaW4pIH0pOworICAgIH0KICAgICB+TmV0d29ya0xv
YWRDaGVja2VyKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0T3JFcnJvciA9IEV4cGVjdGVkPFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj47CkBAIC01MiwxMCAr
NTUsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDU1BSZXNwb25zZUhlYWRlcnMoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiYgaGVhZGVycykgeyBtX2Nz
cFJlc3BvbnNlSGVhZGVycyA9IFdURk1vdmUoaGVhZGVycyk7IH0KICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQotICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvblJ1bGVMaXN0cyhXZWJD
b3JlOjpVUkwmJiBtYWluRG9jdW1lbnRVUkwsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiYmIGNvbnRlbnRSdWxlTGlzdHMpCisgICAgdm9p
ZCBzZXRDb250ZW50RXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpVUkwmJiBtYWluRG9jdW1l
bnRVUkwsIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gaWRl
bnRpZmllcikKICAgICB7CiAgICAgICAgIG1fbWFpbkRvY3VtZW50VVJMID0gV1RGTW92ZShtYWlu
RG9jdW1lbnRVUkwpOwotICAgICAgICBtX2NvbnRlbnRSdWxlTGlzdHMgPSBXVEZNb3ZlKGNvbnRl
bnRSdWxlTGlzdHMpOworICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
PSBpZGVudGlmaWVyOwogICAgIH0KICNlbmRpZgogCkBAIC02MywxMiArNjYsMTYgQEAgcHVibGlj
OgogICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsgfQogCiBw
cml2YXRlOgorICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1v
ZGUsIGJvb2wgc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgV2ViQ29y
ZTo6VVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CisKICAgICBXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0
OwogICAgIGJvb2wgaXNDaGVja2luZygpIGNvbnN0IHsgcmV0dXJuICEhbV9jb3JzUHJlZmxpZ2h0
Q2hlY2tlcjsgfQogICAgIGJvb2wgaXNSZWRpcmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZWRp
cmVjdENvdW50OyB9CiAKICAgICB2b2lkIGNoZWNrUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CiAKKyAgICB2b2lkIGNvbnRpbnVlQ2hlY2tp
bmdSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYm
KTsKKwogICAgIGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJikg
Y29uc3Q7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsK
QEAgLTc3LDggKzg0LDcgQEAgcHJpdmF0ZToKICAgICBSZXF1ZXN0T3JFcnJvciByZXR1cm5FcnJv
cihTdHJpbmcmJiBlcnJvcik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIGNv
bnRlbnRFeHRlbnNpb25zQmFja2VuZCgpOwotICAgIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpCbG9ja2VkU3RhdHVzIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25S
dWxlc0ZvckxvYWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzJik+JiYpOwogI2VuZGlmCiAKICAgICBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnM6Ok1vZGUgbV9tb2RlOwpAQCAtOTIsMTYgKzk4LDEzIEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnM+IG1fY3NwUmVzcG9uc2VIZWFkZXJzOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAgICAgV2ViQ29yZTo6VVJMIG1fbWFpbkRvY3VtZW50VVJMOwotICAgIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBtX2NvbnRlbnRS
dWxlTGlzdHM7CisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI+IG1fY29yc1ByZWZsaWdo
dENoZWNrZXI7CiAgICAgYm9vbCBtX2lzU2FtZU9yaWdpblJlcXVlc3QgeyB0cnVlIH07CiAgICAg
Ym9vbCBtX2lzU2ltcGxlUmVxdWVzdCB7IHRydWUgfTsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9s
aWN5OwotI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+IG1f
Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kOwotI2VuZGlmCiAgICAgc2l6ZV90IG1fcmVkaXJlY3RD
b3VudCB7IDAgfTsKICAgICBXZWJDb3JlOjpVUkwgbV9wcmV2aW91c1VSTDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDFjNTU4
OGU3OTQzNDk4ZmE0MTk3NDRhODI5ZThiNzQ0NGYzODMwN2UuLjc5NzdkYTEzMjA1NjUwNWI4ZDAz
N2RjY2E0ZDEzNjhjODNlYzExZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCkBAIC0xNzEsNiArMTcy
LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBtX05ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZDhjZWE2OWRlODc2Mjk5MmFiMDI5NzRl
NDVhNzg3MTg0NDBkNzVjZC4uY2U0MTJiNDU5Mjg2YjM2OWRmMTJjZDA4ZjMzMzg1YWQ4YzlkZGRl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRv
d25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgorI2luY2x1
ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9E
aWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CkBAIC0xNTcsNiArMTU4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wpOwog
ICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCkg
Y29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIE5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0
dXJuIG1fTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIE5ldHdvcmtQcm9jZXNzKCk7CiAgICAgfk5ldHdvcmtQcm9jZXNzKCk7CkBAIC0yOTEs
NiArMjk2LDEwIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYlNRTGl0ZURh
dGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICNlbmRpZgorCisjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlciBtX05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggMDE3MmMz
YjQxOWI4MWYxNWQzZjc4OWFkOGU4ZDZmM2FmOTg5MWQ1OC4uNDQwNzdkM2NlNWVmMWRkMGI1OTQw
NGU1ZjllNmQ3NjcxNzAzMjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTkz
LDcgKzkzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7Ci0gICAgZW5jb2RlciA8PCBjb250
ZW50UnVsZUxpc3RzOworICAgIGVuY29kZXIgPDwgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllcjsKICNlbmRpZgogfQogCkBAIC0xODQsMTEgKzE4NCwxMSBAQCBib29sIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3Jr
UmVzb3VyYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVSTCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6
cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+PiBjb250ZW50UnVs
ZUxpc3RzOwotICAgIGRlY29kZXIgPj4gY29udGVudFJ1bGVMaXN0czsKLSAgICBpZiAoIWNvbnRl
bnRSdWxlTGlzdHMpCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXI+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBpZiAo
IXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXN1bHQuY29udGVudFJ1bGVMaXN0cyA9IFdURk1vdmUoKmNvbnRlbnRSdWxlTGlzdHMp
OworICAgIHJlc3VsdC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gKnVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDc3ZGU4NTU1M2VkZjRjOThjYmE3YzQ2NzNmYjZlM2I3
MTBkNGUzYmEuLjJjYzMzYWNlOWJmMDA5MjMxOWFiYmU1NmNhZmJhMGI4MmQ1NTczMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdv
cmtMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNpbmNs
dWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuaCIKKyNpbmNsdWRlICJVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0
aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAg
ICAgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTDsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gY29udGVudFJ1bGVMaXN0czsK
KyAgICBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggYmM0ODk0MzY4OGQ1MDY3MzkxMWYxYWFk
ZTBhOGM3NzM3NmQyNGFkNS4uMjVmOTYzYTIwMWNhMjFiOWRhYTY3MzkxZWRjZmI3OGMzNzEwYzlh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTQyLDEz
ICs0MiwxMyBAQCBQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzLCBIVFRQSGVhZGVyTWFwJiYgbwogICAgIDogbV9wYXJhbWV0ZXJzKFdU
Rk1vdmUocGFyYW1ldGVycykpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZQaW5nTG9hZDo6
dGltZW91dFRpbWVyRmlyZWQpCi0gICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVl
UmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4obV9wYXJhbWV0ZXJzLm1vZGUsIG1fcGFyYW1ldGVycy5z
aG91bGRGb2xsb3dSZWRpcmVjdHMsIG1fcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW5hbFJlcXVlc3RIZWFkZXJz
KSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJj
ZU9yaWdpbi5jb3B5UmVmKCkpKQorICAgICwgbV9uZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya0xv
YWRDaGVja2VyOjpjcmVhdGUobV9wYXJhbWV0ZXJzLm1vZGUsIG1fcGFyYW1ldGVycy5zaG91bGRG
b2xsb3dSZWRpcmVjdHMsIG1fcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbV9w
YXJhbWV0ZXJzLnNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJM
IHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdp
bi5jb3B5UmVmKCkpKQogewogCiAgICAgaWYgKG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRl
cnMpCiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDU1BSZXNwb25zZUhlYWRlcnMo
V1RGTW92ZShtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkpKTsKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRD
b250ZW50RXh0ZW5zaW9uUnVsZUxpc3RzKFdURk1vdmUobV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVu
dFVSTCksIFdURk1vdmUobV9wYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMpKTsKKyAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlci0+c2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoV1RGTW92ZSht
X3BhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMKSwgbV9wYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICAvLyBJZiB0aGUgc2VydmVyIG5ldmVy
IHJlc3BvbmRzLCB0aGlzIG9iamVjdCB3aWxsIGhhbmcgYXJvdW5kIGZvcmV2ZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggNzRhNjk4NTc3NmE5ZmI1YTdmNTkx
NWJkZTg0NjU0NWMwM2ZhYmM4MC4uYTFlZjZlNzMxN2ZlNTVmNmM1ZGNmNTNhYzc1NTNhOWNiMDdj
OTZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNzAsNyAr
NzAsNyBAQCBwcml2YXRlOgogICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
PiBtX2NvbXBsZXRpb25IYW5kbGVyOwogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+IG1fdGFz
azsKICAgICBXZWJDb3JlOjpUaW1lciBtX3RpbWVvdXRUaW1lcjsKLSAgICBVbmlxdWVSZWY8TmV0
d29ya0xvYWRDaGVja2VyPiBtX25ldHdvcmtMb2FkQ2hlY2tlcjsKKyAgICBSZWY8TmV0d29ya0xv
YWRDaGVja2VyPiBtX25ldHdvcmtMb2FkQ2hlY2tlcjsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdD4gbV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjdmMDVjN2IzODE1YmY1
MWM2OTM0NGUxYTY2ZGU1N2YwMDAwZTc1ZC4uYjdhNGM5NjVjNzkwMTE1MDliYjU1MjU3NmZkNTA1
MGM2NjQ1MzhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0xODUsNiArMTg1LDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKHJl
Y2VpdmVyKToKICAgICAgICAgICAgIHR5cGVzX2J5X25hbWVzcGFjZVsnSVBDJ10udXBkYXRlKFso
J2NsYXNzJywgJ0Nvbm5lY3Rpb24nKV0pCiAKICAgICBub19mb3J3YXJkX2RlY2xhcmF0aW9uX3R5
cGVzID0gZnJvemVuc2V0KFsKKyAgICAgICAgJ1N0cmluZycsCiAgICAgICAgICdXZWJDb3JlOjpE
b2N1bWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXInLApA
QCAtMTkyLDcgKzE5Myw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhy
ZWNlaXZlcik6CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXInLAot
ICAgICAgICAnU3RyaW5nJywKKyAgICAgICAgJ1dlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcicsCiAgICAgXSkKIAogICAgIGZvciBwYXJhbWV0ZXIgaW4gcmVjZWl2ZXIuaXRl
cnBhcmFtZXRlcnMoKToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjNmYjQzZjk0MDEwODdmODBj
MGJjZjc0MGI2ZWI5ZTQ4MGEwNGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBl
PjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCA3MDg5ZGE4YjJhODZkZmRlZjg3NWI5ODgwYjZmNGZhYjAzYTcyZGE5
Li44NjcxNTliNjhmNDAyZjI5YWVkZGI3ZjMyOWU3ODAwOWZmMTlhNTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTc5
LDggKzE3OSwxMyBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5oaWdoZXN0VXNl
ZEJhY2tGb3J3YXJkSXRlbUlEKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQpKQor
CisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcjsKKyAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy51c2Vy
Q29udGVudENvbnRyb2xsZXJJRCA9ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwor
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpc2l0ZWRMaW5rVGFibGVJRCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLndlYnNpdGVEYXRhU3RvcmVJRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNmJkMTk2MWYzYzRkNDUwMDRkZGRm
ZDYyMDFjNjgyN2Q5N2U5MDQwMi4uYmFlYmFmNGQ0MTAwODk2NWE1NmY0YzFjM2YyMWFjZTg3M2Vh
NDMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtOTgsNyArOTgsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwogICAgIHVpbnQ2NF90IGhpZ2hlc3RV
c2VkQmFja0ZvcndhcmRJdGVtSUQ7CiAKLSAgICB1aW50NjRfdCB1c2VyQ29udGVudENvbnRyb2xs
ZXJJRDsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29u
dHJvbGxlcklEOwogICAgIHVpbnQ2NF90IHZpc2l0ZWRMaW5rVGFibGVJRDsKICAgICB1aW50NjRf
dCB3ZWJzaXRlRGF0YVN0b3JlSUQ7CiAgICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCmluZGV4IDI3
NTAwN2FmNzE1YjI1ZmE3YjJkNmQ5ZDcwNWZlNzUzMjk1OWU1NTEuLmFiZGE3ZDVlNWM2NGUwMTU0
YWQzNTY5OTY3YWU4NzZmNmY2OWRjMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VHcm91cERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VH
cm91cERhdGEuY3BwCkBAIC01MywxMCArNTMsMTEgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlR3Jv
dXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHZpc2libGVUb0hpc3RvcnlDbGllbnQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIHVpbnQ2NF90IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSh1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSkKKyAgICBzdGQ6
Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyOworICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyB7IGlkLCBwYWdlR3JvdXBJ
RCwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIHZpc2libGVUb0hpc3RvcnlDbGllbnQsIHVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgfSB9OworICAgIHJldHVybiB7IHsgaWQsIHBhZ2VH
cm91cElELCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSwgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCwg
KnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgfSB9OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERh
dGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaAppbmRleCAyYzYx
ZTU5N2I2NTZjZDhiODI3NmQyMGM0NmU4NDFjOTlmODBiNWIwLi45MzBkOGVlOThhZWU2ZTI2NzE1
MWQxNjZkOTgwMTkyNDkyYjAzOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlR3JvdXBEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3Vw
RGF0YS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTQzLDcgKzQ0LDcgQEAgc3RydWN0IFdlYlBh
Z2VHcm91cERhdGEgewogICAgIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7CiAgICAgYm9v
bCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50OwogCi0gICAgdWludDY0X3QgdXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllcjsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDYxMzg5M2U0MzBiYmJjOWVkNzAzNGFlYjE0ZmM1OGRjNWUy
OGVmYmMuLjVjNjk0MjI0MDRiNzMwZWRlNmYyYTQ1YjEzN2RmMmYwMTliZjRhODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMjYsMTkgKzI2LDIzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogCisjaW5jbHVkZSAiQVBJQ29udGVudFJ1bGVMaXN0
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUg
IkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RP
Q09MX01BTkFHRVIpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIgogI2VuZGlmCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVBy
b2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0Lmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKQEAgLTg1LDYgKzg5LDEwIEBAIE5ldHdvcmtQcm9j
ZXNzUHJveHk6On5OZXR3b3JrUHJvY2Vzc1Byb3h5KCkKICAgICBBU1NFUlQobV9wZW5kaW5nRmV0
Y2hXZWJzaXRlRGF0YUNhbGxiYWNrcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3BlbmRpbmdE
ZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3BlbmRp
bmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3MuaXNFbXB0eSgpKTsKKyNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGZvciAoYXV0byogcHJveHkgOiBtX3dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMpCisgICAgICAgIHByb3h5LT5yZW1vdmVOZXR3b3Jr
UHJvY2VzcygqdGhpcyk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
ZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0
aW9ucykKQEAgLTU0MCw0ICs1NDgsMjggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJ
c0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIH0KIH0K
IAorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Y29udGVudEV4dGVuc2lvblJ1bGVzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogd2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Z2V0KGlkZW50aWZpZXIpKSB7
CisgICAgICAgIG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcy5hZGQod2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkpOworICAgICAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS0+YWRkTmV0d29ya1Byb2Nlc3MoKnRoaXMpOworCisgICAgICAgIGF1dG8gcnVsZXMgPSBX
VEY6Om1hcCh3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+Y29udGVudEV4dGVuc2lvblJ1
bGVzKCksIFtdKGF1dG8mJiBrZXlWYWx1ZSkgLT4gc3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3REYXRhPiB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoa2V5VmFsdWUudmFsdWUtPm5hbWUoKSwga2V5VmFsdWUudmFsdWUtPmNvbXBpbGVkUnVsZUxp
c3QoKS5kYXRhKCkpOworICAgICAgICB9KTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMgeyBpZGVudGlmaWVy
LCBydWxlcyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlk
ZW50aWZpZXIsIHsgfSB9LCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRE
ZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkmIHByb3h5KQoreworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyOjpSZW1vdmUgeyBwcm94eS5pZGVudGlmaWVyKCkgfSwgMCk7CisgICAgbV93
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzLnJlbW92ZSgmcHJveHkpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBmZmZiNDE0Zjk2NTE3OWQy
NjEwYTYxM2UyYmU2ZWUzY2QzM2UxMDJlLi5jOWRjNzkyYTliNWUwN2NjZmUxMDUyOWE3ZTE5YWU2
YWJhNDkwZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlByb2Nl
c3NMYXVuY2hlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQ
cm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtNTksNiArNjAsNyBAQCBj
bGFzcyBXZWJQcm9jZXNzUG9vbDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjsK
IGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBzdHJ1
Y3QgV2Vic2l0ZURhdGE7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgOiBwdWJsaWMgQ2hp
bGRQcm9jZXNzUHJveHksIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CkBAIC05NCw2
ICs5NiwxMCBAQCBwdWJsaWM6CiAgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgeyBy
ZXR1cm4gbV90aHJvdHRsZXI7IH0KICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2woKSB7
IHJldHVybiBtX3Byb2Nlc3NQb29sOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQorICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CiAKQEAgLTEzOSw2ICsxNDUsMTAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxT
dHJpbmc+JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICB2b2lkIGNvbnRlbnRFeHRlbnNpb25SdWxlcyhV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyNlbmRpZgorCiAgICAgLy8gUHJvY2Vz
c0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1
bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwogCkBAIC0xNjEs
NiArMTcxLDEwIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPj4gbV93cml0ZUJsb2JUb0ZpbGVQYXRoQ2FsbGJhY2tN
YXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wgd2FzR3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwOwogICAg
IEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
JiBkb21haW5zKT4+IG1fYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcDsKKworI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllczsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggNjEyNmVhNWQ4N2Q2NGFkYzJlOGQ2ZWVjMjYzODFkMGNkOGM3MjVlMi4uMTg0YzJm
ZDU0NDFmOGQ4NzA0MzZkMTViNzZhNGQyZGZmNjM3Mjg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNDcsNCArNDcsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1By
b3h5IExlZ2FjeVJlY2VpdmVyIHsKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElP
TklORykKICAgICBTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVp
bnQ2NF90IGNvbnRleHRJZCkKICAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0
b3I8U3RyaW5nPiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQorICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJLaXQ6OlVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDQyMzNjOGU1Y2ZmYzY2MjAx
MzFjZGJiODNjMDAyZGNhNTU2MzQxYmIuLjQyZmI4ZWFlM2RiMmRkZmY5MjRlMDE5ZDY3MTRiMjY4
MjQ4MmE4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAg
LTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJ
VXNlclN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIuaCIKQEAgLTQ2LDE4ICs0OCwzNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
c3RhdGljIEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkqPiYgd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcygp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqPj4gcHJveGllczsK
KyAgICByZXR1cm4gcHJveGllczsKK30KKworCitXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmdldChVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIHdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3hpZXMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisgICAgCiBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQotICAgIDog
bV91c2VyU2NyaXB0cyhBUEk6OkFycmF5OjpjcmVhdGUoKSkKKyAgICA6IG1faWRlbnRpZmllcihn
ZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllclR5
cGU+KCkpCisgICAgLCBtX3VzZXJTY3JpcHRzKEFQSTo6QXJyYXk6OmNyZWF0ZSgpKQogICAgICwg
bV91c2VyU3R5bGVTaGVldHMoQVBJOjpBcnJheTo6Y3JlYXRlKCkpCiB7CisgICAgd2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveGllcygpLmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOwogfQogCiBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KCkKIHsKLSAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KSB7Ci0gICAgICAgIHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRp
ZmllcigpKTsKKyAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkucmVtb3ZlKG1f
aWRlbnRpZmllcik7CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAg
ICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAgICAgICAgIHByb2Nlc3MtPmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSgqdGhpcyk7CiAgICAgfQorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAgICAg
ICBwcm9jZXNzLT5kaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKnRoaXMp
OworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC02NSw3ICs4Niw3IEBAIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNz
UHJveHksCiAgICAgaWYgKCFtX3Byb2Nlc3Nlcy5hZGQoJndlYlByb2Nlc3NQcm94eSkuaXNOZXdF
bnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLCAqdGhpcyk7CisgICAgd2ViUHJvY2Vzc1Byb3h5
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCksICp0aGlz
KTsKIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHkoKSk7
CiAgICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZCA6IG1fdXNlckNvbnRlbnRXb3JsZHMpCkBAIC05
NSw3ICsxMTYsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogICAgIEFTU0VSVChtX3Byb2Nl
c3Nlcy5jb250YWlucygmd2ViUHJvY2Vzc1Byb3h5KSk7CiAKICAgICBtX3Byb2Nlc3Nlcy5yZW1v
dmUoJndlYlByb2Nlc3NQcm94eSk7Ci0gICAgd2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRVc2Uo
QVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKQEAgLTEwNiw3ICsxMjcsNyBAQCB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6
VXNlckNvbnRlbnRXb3JsZAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91c2VyQ29udGVudFdvcmxk
cy5hZGQoJndvcmxkKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAg
Zm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNl
ckNvbnRlbnRXb3JsZHMoeyBzdGQ6Om1ha2VfcGFpcih3b3JsZC5pZGVudGlmaWVyKCksIHdvcmxk
Lm5hbWUoKSkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsg
c3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgfQogfQogCkBAIC0xMzAsNyArMTUxLDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVz
ZXMoQVBJOjpVc2VyQ29udGVudFcKIHsKICAgICBpZiAoc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250
ZW50V29ybGRzTWVzc2FnZSh3b3JsZCwgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpKSB7CiAgICAgICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZVVzZXJDb250ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkp
OworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIH0KIH0KIApAQCAtMTQzLDcgKzE2NCw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29y
bGRVc2VzKEhhc2hDb3VudGVkU2V0PFJlCiAgICAgfQogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3Js
ZHNUb1JlbW92ZSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29y
bGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1
c2VyU2NyaXB0KQpAQCAtMTU1LDcgKzE3Niw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQogICAg
IG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAgIGZv
ciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlw
dHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2Vy
U2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRz
KHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNj
cmlwdC51c2VyU2NyaXB0KCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogfQogCiB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6
VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKQEAgLTE2Myw3ICsxODQsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYg
dXNlclNjcmlwdAogICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclNj
cmlwdC51c2VyQ29udGVudFdvcmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJv
Y2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIo
KSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJT
Y3JpcHQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLnJl
bW92ZUFsbCgmdXNlclNjcmlwdCk7CiAKQEAgLTE3Myw3ICsxOTQsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYg
dXNlclNjcmlwdAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxs
VXNlclNjcmlwdHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3Jp
cHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVz
ZXJTY3JpcHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CiAKICAgICB1bnNpZ25lZCB1c2VyU2NyaXB0c1JlbW92ZWQgPSBtX3VzZXJTY3JpcHRzLT5y
ZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxBUEk6OlVzZXJTY3JpcHQ+KFsmXShjb25zdCBhdXRvJiB1
c2VyU2NyaXB0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclNjcmlwdC0+dXNlckNvbnRlbnRXb3Js
ZCgpID09ICZ3b3JsZDsKQEAgLTE5NCw3ICsyMTUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCiAgICAgICAgIHdvcmxkSWRlbnRp
ZmllcnMudW5jaGVja2VkQXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigpKTsK
IAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7CisgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIApAQCAtMjEw
LDcgKzIzMSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
dHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTCiAgICAgbV91c2VyU3R5bGVTaGVl
dHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU3R5bGVTaGVldCk7CiAKICAgICBmb3IgKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7
IHsgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2Vy
U3R5bGVTaGVldC51c2VyU3R5bGVTaGVldCgpIH0gfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNl
clN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVu
dGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRpZmll
cigpLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVl
dCkKQEAgLTIxOCw3ICsyMzksNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1cwogICAgIFJlZjxB
UEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQudXNlckNvbnRlbnRX
b3JsZCgpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVT
aGVldC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0
KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygp
LnJlbW92ZUFsbCgmdXNlclN0eWxlU2hlZXQpOwogCkBAIC0yMjgsNyArMjQ5LDcgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpV
c2VyU3R5bGVTaGVldCYgdXMKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUFsbFVzZXJTdHlsZVNoZWV0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewog
ICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkp
OworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgdW5zaWduZWQgdXNlclN0eWxlU2hlZXRzUmVt
b3ZlZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5yZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxBUEk6OlVz
ZXJTdHlsZVNoZWV0PihbJl0oY29uc3QgYXV0byYgdXNlclN0eWxlU2hlZXQpIHsKICAgICAgICAg
cmV0dXJuICZ1c2VyU3R5bGVTaGVldC0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3JsZDsKQEAg
LTI0OSw3ICsyNzAsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVBbGxVc2VyU3R5bGVTaGVldHMoKQogICAgICAgICB3b3JsZElkZW50aWZpZXJzLnVuY2hlY2tl
ZEFwcGVuZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2Vy
U3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
IAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKQEAgLTI3MCw3
ICsyOTEsNyBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2Ny
aXB0TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZQogICAgIG1fc2NyaXB0TWVzc2FnZUhh
bmRsZXJzLmFkZChoYW5kbGVyLmlkZW50aWZpZXIoKSwgJmhhbmRsZXIpOwogCiAgICAgZm9yIChX
ZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIo
KSwgaGFuZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIo
KSwgaGFuZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjgwLDcgKzMwMSw3IEBAIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3Qg
U3RyaW5nCiAgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuYmVnaW4o
KSwgZW5kID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBpZiAoaXQtPnZhbHVlLT5uYW1lKCkgPT0gbmFtZSAmJiAmaXQtPnZhbHVlLT51
c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkKSB7CiAgICAgICAgICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVy
KCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBpZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CiAKICAgICAgICAgICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJz
LnJlbW92ZShpdCk7CiAKQEAgLTI5Myw3ICszMTQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmlu
Zwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3Nh
Z2VIYW5kbGVycyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVycyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsK
KyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigp
IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICB1bnNpZ25lZCBudW1iZXJSZW1v
dmVkID0gMDsKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmVJZihbJl0oYXV0byYg
ZW50cnkpIHsKQEAgLTMzMCwyNCArMzUxLDMzIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmFkZENvbnRlbnRSdWxlTGlzdChBUEk6OkNvbnRlbnRSdWxlTGlzdCYgY29uCiAK
ICAgICBhdXRvIHBhaXIgPSBzdGQ6Om1ha2VfcGFpcihjb250ZW50UnVsZUxpc3QubmFtZSgpLCBj
b250ZW50UnVsZUxpc3QuY29tcGlsZWRSdWxlTGlzdCgpLmRhdGEoKSk7CiAKLSAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlz
dHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1f
cHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CisKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNz
ZXMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyOjpBZGRDb250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpLCB7IHBhaXIgfSB9
LCAwKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29u
dGVudFJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBtX2NvbnRlbnRSdWxlTGlz
dHMucmVtb3ZlKG5hbWUpOwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50UnVsZUxpc3QobmFtZSksIGlkZW50aWZpZXIoKSk7
CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1
bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBmb3IgKGF1dG8q
IHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVDb250ZW50UnVsZUxp
c3QgeyBpZGVudGlmaWVyKCksIG5hbWUgfSwgMCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogewogICAgIG1fY29u
dGVudFJ1bGVMaXN0cy5jbGVhcigpOwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nl
c3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlkZW50aWZp
ZXIoKSk7CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxs
Q29udGVudFJ1bGVMaXN0cygpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBmb3Ig
KGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVBbGxDb250
ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpIH0sIDApOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDIzMGY2MjNkOThlNDc4Mjk1MDExMGQ5
NDlmNTI1NjU2MjAwZTNiODQuLmFiM2YyNjAyYjBjMjNkNzYzOTAwMjAwYWZjNmNmNWE3OGZmY2Y4
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjcsMTEgKzI3
LDExIEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC01NCwy
MCArNTQsMjMgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2NsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CiBjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwog
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiAKLWNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6VXNlckNvbnRlbnRDb250cm9sbGVyPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHVibGljIElkZW50aWZpZWQ8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHsKK2NsYXNz
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRlbnRDb250cm9sbGVyPiwgcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eT4gY3JlYXRlKCkKICAgICB7IAogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSk7Ci0gICAgfSAKLSAgICBleHBsaWNp
dCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpOworICAgIH0KKyAgICBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eSgpOwogICAgIH5XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSgpOwogCisgICAgc3RhdGljIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiBnZXQoVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CisKICAgICB2b2lkIGFkZFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgcmVt
b3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKIApAQCAtOTEsMTEgKzk0LDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVu
dFdvcmxkJik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIHZvaWQgYWRk
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHkpIHsgbV9uZXR3b3JrUHJv
Y2Vzc2VzLnJlbW92ZSgmcHJveHkpOyB9CisgICAgdm9pZCByZW1vdmVOZXR3b3JrUHJvY2VzcyhO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSkgeyBtX25ldHdvcmtQcm9jZXNzZXMuYWRkKCZwcm94
eSk7IH0KKwogICAgIHZvaWQgYWRkQ29udGVudFJ1bGVMaXN0KEFQSTo6Q29udGVudFJ1bGVMaXN0
Jik7CiAgICAgdm9pZCByZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCByZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCk7CisgICAgY29uc3QgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4+JiBjb250ZW50RXh0ZW5zaW9uUnVsZXMo
KSB7IHJldHVybiBtX2NvbnRlbnRSdWxlTGlzdHM7IH0KICNlbmRpZgogCisgICAgVXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKQEAgLTEwNywxMyArMTE2LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVV
c2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpVc2VyQ29udGVu
dFdvcmxkPj4mKTsKICAgICBib29sIHNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01l
c3NhZ2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1v
dmUpOwogCi0gICAgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsgICAgCisg
ICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgSGFz
aFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsKICAgICBSZWY8QVBJOjpBcnJheT4g
bV91c2VyU2NyaXB0czsKICAgICBSZWY8QVBJOjpBcnJheT4gbV91c2VyU3R5bGVTaGVldHM7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9z
Y3JpcHRNZXNzYWdlSGFuZGxlcnM7CiAgICAgSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6VXNl
ckNvbnRlbnRXb3JsZD4+IG1fdXNlckNvbnRlbnRXb3JsZHM7CiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQorICAgIEhhc2hTZXQ8TmV0d29ya1Byb2Nlc3NQcm94eSo+IG1fbmV0d29y
a1Byb2Nlc3NlczsKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVM
aXN0Pj4gbV9jb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTk2NDY0NDE4ZWRlODE1NGVi
M2M3ZTRkOWU2ZjM0ZmEyNWE1MDkzYS4uNGQyYzY3ZjM0ZWFjMTljY2JmYTUxMGVlMTVhY2M5ODBm
ZjQxYWMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC05NTgsNiArOTU4LDcgQEAKIAkJNDFGQUY1RjUxRTNDMDY0OTAwMUFFNjc4IC8q
IFdlYlJUQ1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZBRjVGNDFFM0MwNjQxMDAxQUU2NzggLyogV2ViUlRDUmVzb2x2ZXIuaCAqLzsg
fTsKIAkJNDFGQUY1RjgxRTNDMTAyMTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBRjVGNjFFM0Mw
QjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCAqLzsgfTsKIAkJNDFGQUY1RjkxRTND
MTAyNTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY3MUUzQzBCNDcwMDFBRTY3OCAvKiBM
aWJXZWJSVENSZXNvbHZlci5jcHAgKi87IH07CisJCTQxRkJFODI2MjA2REY3RkEwMDBGMDc0MSAv
KiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCRTgyNDIwNkRBNzlDMDAwRjA3NDEgLyogTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwICovOyB9OwogCQk0NDUwQUVDMDFEQzNGQUU1
MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1MEFFQkYxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJl
ZE1lbW9yeUNvY29hLmNwcCAqLzsgfTsKIAkJNDYwRjQ4OEYxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MEY0ODhEMUY5OTZGNkMwMENG
NEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CiAJCTQ2MEY0ODkwMUY5OTZGNzEwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwpAQCAtMTE5Niw2ICsxMTk3LDcgQEAKIAkJNTJE
NUExQjAxQzU3NDk1QTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUExQzU3
NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovOyB9OwogCQk1
MkQ1QTFCMTFDNTc0OTYyMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUMx
QzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSAqLzsgfTsK
IAkJNTJENUExQjcxQzU3NEEwMjAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTFCNDFD
NTc0OUYyMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSAqLzsgfTsKKwkJNTJG
MDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyRjA2MEREMTY1NDMxNzUwMEYzMjgxQiAvKiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUzMDI1ODNCMURDQkJEMjIwMERB
ODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMDI1ODJFMURDQkJEMUQwMERBODlDMiAvKiBOZXR3
b3JrQ2FwdHVyZVJlc291cmNlLmNwcCAqLzsgfTsKIAkJNTMwMjU4M0MxRENCQkQyMjAwREE4OUMy
IC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMDI1ODJGMURDQkJEMUQwMERBODlDMiAvKiBOZXR3b3JrQ2Fw
dHVyZVJlc291cmNlLmggKi87IH07CiAJCTUzMDI1ODNEMURDQkJEMjIwMERBODlDMiAvKiBOZXR3
b3JrQ2FwdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzMDI1ODMwMURDQkJEMUQwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZUV2ZW50
LmNwcCAqLzsgfTsKQEAgLTMzNDIsNiArMzM0NCwxMCBAQAogCQk0MUZBRjVGNDFFM0MwNjQxMDAx
QUU2NzggLyogV2ViUlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV2ViUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkFGNUY2MUUzQzBCNDcwMDFBRTY3
OCAvKiBMaWJXZWJSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMaWJXZWJSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVz
b2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQUY1RjcxRTNDMEI0NzAw
MUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExpYldlYlJUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFG
QkU4MjEyMDZEODdGNjAwMEYwNzQxIC8qIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgyMjIwNkRB
NzlDMDAwRjA3NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkJFODIzMjA2REE3OUMwMDBGMDc0MSAvKiBO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgyNDIwNkRBNzlDMDAwRjA3NDEg
LyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyogU2hh
cmVkTWVtb3J5Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2hhcmVkTWVtb3J5Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBG
NDg4RDFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjI0LDYgKzM2MzAsNyBAQAogCQk1MkQ1QTFCMjFDNTc0
OUYyMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyRDVBMUIzMUM1NzQ5RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
RDVBMUI0MUM1NzQ5RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGMDYwREQxNjU0MzE3NTAwRjMy
ODFCIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4MkUxRENCQkQx
RDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHA7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzAyNTgyRjFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0d29y
a0NhcHR1cmVSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3
b3JrQ2FwdHVyZVJlc291cmNlLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4
MzAxRENCQkQxRDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlRXZlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0NhcHR1cmVFdmVudC5jcHA7IHBhdGgg
PSBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI3MSw2ICs1Mjc4LDcgQEAKIAkJCQkxQTY0MjQ1QzEy
REUyOUExMDBDQUFFMkMgLyogVXBkYXRlSW5mby5oICovLAogCQkJCTVDMTlBNTFFMUZEMEIxNDYw
MEVFQTMyMyAvKiBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJNUMxOUE1MUYx
RkQwQjE0NzAwRUVBMzIzIC8qIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmggKi8sCisJCQkJNDFG
QkU4MjEyMDZEODdGNjAwMEYwNzQxIC8qIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIu
aCAqLywKIAkJCQkxQUMxMzM2NTE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuY3BwICovLAog
CQkJCTFBQzEzMzY2MTg1NjVCNTcwMEYzRUMwNSAvKiBVc2VyRGF0YS5oICovLAogCQkJCTI2ODQw
NTRBMThCODY2RkYwMDIyQzM4QiAvKiBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcCAq
LywKQEAgLTYzNTksNiArNjM2Nyw5IEBACiAJCQkJNTEzQTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8q
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLywKIAkJCQk1MTNBMTY0QTE2MzBB
OUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLywKIAkJCQk1
MTNBMTY0QjE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gKi8sCisJCQkJNDFGQkU4MjQyMDZEQTc5QzAwMEYwNzQxIC8qIE5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCAqLywKKwkJCQk0MUZCRTgyMjIwNkRBNzlDMDAwRjA3
NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCAqLywKKwkJCQk0MUZCRTgyMzIw
NkRBNzlDMDAwRjA3NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMu
aW4gKi8sCiAJCQkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgKi8sCiAJCQkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovLAogCQkJCTUzMjE1OTUxMURCQUU2RkMwMDU0QUEz
QyAvKiBOZXR3b3JrRGF0YVRhc2suY3BwICovLApAQCAtODI0NCw2ICs4MjU1LDcgQEAKIAkJCQky
OTg0RjU3QjE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oICovLAogCQkJCTUxREQ5RjI2MTYzNjdEQTIwMDE1NzhFOSAvKiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTFERDlG
MjcxNjM2N0RBMjAwMTU3OEU5IC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2Fn
ZXMuaCAqLywKKwkJCQk1MkYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxN0NGMEUxMTYzQTQ4
NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAogCQkJCTUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlcy5oICovLAogCQkJCTUxQUNDOTM0MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3
b3JrUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMDY1OSw2ICsxMDY3MSw4IEBA
CiAJCQkJNTMwMjU4M0IxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzQTE2NEMxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxREQ5RjI4
MTYzNjdEQTIwMDE1NzhFOSAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUZCRTgyNjIwNkRGN0ZBMDAwRjA3NDEg
LyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTJGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ2REYwNjNCMUYzOTA1Rjgw
MDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTMyMTU5NTQxREJBRTcxRDAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFzay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1M0JBNDdEMDFEQzJFRjVFMDA0REY0QUQgLyogTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBiMTRhNTgwMzI2YTAy
ZDZkMTg0MWE2ZDg4YTRmODJjYjMxOTQ2MzI0Li5kN2Y4YmY4NDljNjRkZmE0MzRmMDQ5NmUwOWU5
NTRkMmMwMzdhYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC00NTYsNiArNDU2LDkgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJhbWUsIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQo
ZnJhbWUubG9hZGVyKCkuY2xpZW50KCkpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZy
YW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxs
cHRyOworCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7
CiAgICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciA9IGdlbmVyYXRlTG9hZElkZW50aWZpZXIo
KTsKICAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKQEAgLTQ3MiwxMyArNDc1
LDExIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1l
LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRF
TlNJT05TKQogICAgIGxvYWRQYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50
b3BEb2N1bWVudCgpLnVybCgpOwotCi0gICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJh
bWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9
IGZyYW1lLnBhZ2UoKSkgewotICAgICAgICAgICAgcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigp
LmZvckVhY2hDb250ZW50RXh0ZW5zaW9uKFsmbG9hZFBhcmFtZXRlcnNdKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb24mIGNvbnRlbnRF
eHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50UnVsZUxp
c3RzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxjb25zdCBX
ZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdCY+KGNvbnRlbnRFeHRlbnNpb24uY29tcGlsZWRFeHRl
bnNpb24oKSkuZGF0YSgpKSk7Ci0gICAgICAgICAgICB9LCAqZG9jdW1lbnRMb2FkZXIpOwotICAg
ICAgICB9CisgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcGFzc2luZyB1c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyLCB3ZSBzaG91bGQganVzdCBwYXNzIHdlYlBhZ2VJZCB0byBOZXR3b3Jr
UHJvY2Vzcy4KKyAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLnBhZ2UoKSkgeworICAgICAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsK
KyAgICAgICAgaWYgKHdlYlBhZ2UpCisgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy51c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gd2ViUGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcigpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuY3BwCmluZGV4IDIyMzVhOGRmMDRkMWM0YmNhNmQzMGVmNTMwMDMyOTVkMWFlMDU5OGEuLmI5
ZTU4NTgzNWZlMzA4YTg1MGEzZDg1MjdkOGFlMGIyM2MwZmYzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwCkBAIC01MCw5ICs1MCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlcio+JiB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkKK3N0YXRp
YyBIYXNoTWFwPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcio+JiB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDx1aW50NjRfdCwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKj4+
IHVzZXJDb250ZW50Q29udHJvbGxlcnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyKj4+IHVzZXJDb250ZW50Q29udHJvbGxlcnM7CiAKICAgICByZXR1cm4gdXNlckNvbnRlbnRD
b250cm9sbGVyczsKIH0KQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIFdvcmxkTWFwJiB3b3JsZE1h
cCgpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4g
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVy
KQorUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpnZXRPckNyZWF0ZShVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7CiAgICAgYXV0byYgdXNlckNvbnRlbnRDb250cm9sbGVyUHRyID0gdXNlckNvbnRlbnRDb250
cm9sbGVycygpLmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
aWYgKHVzZXJDb250ZW50Q29udHJvbGxlclB0cikKQEAgLTc4LDE3ICs3OCwxNyBAQCBSZWY8V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3Jl
YXRlKHVpbnQ2NF90IGlkZQogICAgIHJldHVybiB1c2VyQ29udGVudENvbnRyb2xsZXIucmVsZWFz
ZU5vbk51bGwoKTsKIH0KIAotV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIodWludDY0X3QgaWRlbnRpZmllcikKK1dlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwg
KnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKHVzZXJD
b250ZW50Q29udHJvbGxlcnMoKS5jb250YWlucyhtX2lkZW50aWZpZXIpKTsKIAotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogCiAgICAgdXNlckNvbnRlbnRDb250cm9sbGVycygpLnJl
bW92ZShtX2lkZW50aWZpZXIpOwogfQpAQCAtMjQyLDcgKzI0Miw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+
cGFnZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJl
bmNlKHZhbHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkpOworICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uo
d2ViUGFnZS0+cGFnZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpE
YXRhUmVmZXJlbmNlKHZhbHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxl
cj4gbV9jb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IDliNzJk
OTZjOGJiYjc3OWMxYmViOWIxZjBhYWMyMTJjM2M5ZTQ1NTMuLmY1OGQyMWU4Y2RmYzZiZWQ5YzA0
OWRkMmRjMzBhZjk0OWQwOGFiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFByb3Zp
ZGVyLmg+CkBAIC00OSwxMCArNTAsMTAgQEAgY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvclByb3h5OwogCiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6VXNlckNvbnRlbnRQcm92aWRlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI+IGdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyPiBnZXRPckNyZWF0ZShVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKTsKIAot
ICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0gCisgICAg
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CiAKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCYsIFdlYkNvcmU6OlVzZXJTY3JpcHQmJik7CiAgICAgdm9pZCByZW1vdmVVc2VyU2Ny
aXB0V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3QgV2ViQ29yZTo6VVJM
Jik7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4
cGxpY2l0IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAg
ICBleHBsaWNpdCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcik7CiAKICAgICAvLyBXZWJDb3JlOjpVc2VyQ29udGVudFByb3ZpZGVyCiAgICAg
dm9pZCBmb3JFYWNoVXNlclNjcmlwdChGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZCYsIGNvbnN0IFdlYkNvcmU6OlVzZXJTY3JpcHQmKT4mJikgY29uc3QgZmluYWw7CkBAIC0x
MTEsNyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlckludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2Vy
U2NyaXB0TWVzc2FnZUhhbmRsZXJJZGVudGlmaWVyKTsKICNlbmRpZgogCi0gICAgdWludDY0X3Qg
bV9pZGVudGlmaWVyOworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkPiwgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgV2ViQ29yZTo6VXNlclNjcmlwdD4+
PiBXb3JsZFRvVXNlclNjcmlwdE1hcDsKICAgICBXb3JsZFRvVXNlclNjcmlwdE1hcCBtX3VzZXJT
Y3JpcHRzOwpAQCAtMTI2LDcgKzEyNyw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKICAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvbnNCYWNrZW5kIG1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQ7CiAjZW5kaWYKLQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggNWNiMDkxMjlhNWY2OTBiZDZjYjc2MmYwYTFhZmRjOWQ4NjU1MjllNS4u
MzhlOTEwYWIwNTNjNjRlYmMyZThkMzY2ZWNlYzhhYjNiNTg0ODYwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1
ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV2Vi
VVJMU2NoZW1lSGFuZGxlci5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGljdGlvbmFyeVBvcHVwSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBl
cy5oPgpAQCAtMTA2OSw2ICsxMDcwLDggQEAgcHVibGljOgogICAgIHZvaWQgb3BlbkdMRGlzcGxh
eU1hc2tDaGFuZ2VkKHVpbnQzMl90IGRpc3BsYXlNYXNrKTsKICNlbmRpZgogCisgICAgVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXItPmlkZW50aWZpZXIoKTsg
fQorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337111</attachid>
            <date>2018-04-03 14:05:00 -0700</date>
            <delta_ts>2018-04-03 14:08:11 -0700</delta_ts>
            <desc>Build and crash fix</desc>
            <filename>bug-184205-20180403140459.patch</filename>
            <type>text/plain</type>
            <size>79305</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkMWUzNzhmZWQ0OWRlM2E3
M2NiYjFjMTNkNWRiYjU1OGM5NWQyZmEuLmE1ZDlhYWY1MWY0ZTg1OTVhYzQ0ODg3NTYwMjJkY2Ux
YWU3Y2IwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDE4LTA0LTAzICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9jZXNz
IGdldCBDb250ZW50QmxvY2tlciBpbmZvcm1hdGlvbiBmcm9tIFVJUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MjA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9j
ZXNzIGdldCBjb250ZW50IGJsb2NrZXJzIGZyb20gVUlQcm9jZXNzIGRpcmVjdGx5LgorICAgICAg
ICBCZWZvcmUgdGhhdCBwYXRjaCwgV2ViUHJvY2VzcyBzZW50IGNvbnRlbnQgYmxvY2tlcnMgdG8g
TmV0d29ya1Byb2Nlc3MgZm9yIGVhY2ggUGluZ0xvYWQuCisgICAgICAgIEluc3RlYWQsIFdlYlBy
b2Nlc3Mgc2VuZHMgdGhlIGNvbnRlbnQgYmxvY2tlciBpZGVudGlmaWVyIGZvciBlYWNoIFBpbmdM
b2FkIGFuZCBOZXR3b3JrUHJvY2VzcyBmZXRjaGVzIHRoZSBjb250ZW50IGJsb2NrZXIgb25jZS4K
KworICAgICAgICBUaGlzIGlzIGJvdGggbW9yZSBlZmZpY2llbnQgdGhhbiBwYXNzaW5nIHRoZW0g
Zm9yIGVhY2ggUGluZ0xvYWQgYW5kIHNhZmVyIGluIHRoZSBzZW5zZQorICAgICAgICB0aGF0IGEg
Y29tcHJvbWlzZWQgV2ViUHJvY2VzcyB3aWxsIG5vdCBiZSBhYmxlIHRvIGJ5cGFzcyBhbnkgb2Yg
dGhlc2UuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBnZXQg
dGhlIGNvbnRlbnQgYmxvY2tlciBpZGVudGlmaWVyIGRpcmVjdGx5IGZyb20gdGhlIFdlYlBhZ2VJ
RCBhdHRhY2hlZCB0byB0aGUgcmVxdWVzdC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IGJlYWNvbitjb250ZW50IGJsb2NrZXIgdGVzdHMuCisKKyAgICAgICAgRGlkIHNvbWUgcmVmYWN0
b3JpbmcgdG8gYWRkIGEgdHlwZWQgY29udGVudCBibG9ja2VyIGlkZW50aWZpZXIuCisgICAgICAg
IE9uY2UgTmV0d29ya1Byb2Nlc3MgZmV0Y2hlcyBhIGdpdmVuIGNvbnRlbnQgYmxvY2tlciwgdGhl
IGNvbnRlbnQgYmxvY2tlciB3aWxsIHNlbmQgYW55IG1vZGlmaWNhdGlvbiB0byBOZXR3b3JrUHJv
Y2Vzcy4KKyAgICAgICAgSW50cm9kdWNlZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciB0
byBoYW5kbGUgdGhlIGNvbnRlbnQgYmxvY2tlcnMgaW4gTmV0d29ya1Byb2Nlc3MuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250aW51ZUNoZWNraW5nUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxl
c0ZvckxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OnNldENvbnRlbnRFeHRlbnNp
b25Db250cm9sbGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6Om5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxl
TGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OnJlbW92ZUNvbnRl
bnRSdWxlTGlzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5h
Z2VyOjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OnJlbW92ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW46IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VHcm91cERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VHcm91cERhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6fk5l
dHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojpjb250ZW50RXh0ZW5zaW9uUnVsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpnZXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRVc2VyQ29udGVudFdvcmxkVXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNj
cmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVBbGxVc2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENv
bnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OmFkZE5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZU5ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNvbnRlbnRFeHRl
bnNpb25SdWxlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9h
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBjb25zdCk6CisKIDIwMTgtMDQtMDIgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtFbmNo
YW50XSBDbGVhbiB1cCBUZXh0Q2hlY2tlckVuY2hhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDYw
ZTkyYjdlNzM5MDM0ZDlhNzhkMjM1MWIyOTgyNzZkNGUwNTFkMTYuLmE1YjlmMWRlOWJiYWI2NzNm
MzMyNjQ0ZTJlZGIxYTc3NzY3YzM4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTA3LDYgKzEw
Nyw3IEBAIHNldChXZWJLaXRfU09VUkNFUwogCiAgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAK
ICAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAogICAgIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtNjE5LDYgKzYyMCw3IEBAIHNldChXZWJLaXRfTUVT
U0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIubWVzc2FnZXMuaW4KIAogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbgogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0ubWVz
c2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5ZDY2YzBkZjZlYzc2NDJm
NGUwMGJjOTMxZjEyZTE3YzYxZWFiZjRjLi5kYTBhNTJkYWUwYWFhY2IzMjA5NTM0ODViOTE5NDg4
MDA4NzZhNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMTUsNiArMTE1LDcg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgTmV0d29ya1JUQ1NvY2tldCBcCiAgICAgTmV0
d29ya1Jlc291cmNlTG9hZGVyIFwKICAgICBOZXR3b3JrU29ja2V0U3RyZWFtIFwKKyAgICBOZXR3
b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciBcCiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5IFwK
ICAgICBQbHVnaW5Qcm9jZXNzIFwKICAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1MjNlMDMzZjdkZmM4MmJmN2U3ZmVm
YWQ0MTY1ZDM5YzhjYTEyZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEw
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Qu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFn
ZXIoKSA9IGRlZmF1bHQ7CitOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6fk5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyKCkKK3sKKyAgICBhdXRvIHBlbmRpbmdDYWxsYmFja3MgPSBX
VEZNb3ZlKG1fcGVuZGluZ0NhbGxiYWNrcyk7CisgICAgaWYgKHBlbmRpbmdDYWxsYmFja3MuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kIGJhY2tlbmQ7CisgICAgZm9yIChhdXRvJiBjYWxs
YmFja3MgOiBwZW5kaW5nQ2FsbGJhY2tzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAgICAgICAgICBjYWxsYmFjayhiYWNrZW5kKTsKKyAg
ICB9Cit9CisKK3ZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEJhY2tlbmRDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Nv
bnRlbnRFeHRlbnNpb25CYWNrZW5kcy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRv
ciAhPSBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5lbmQoKSkgeworICAgICAgICBjYWxsYmFj
aygqaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3BlbmRp
bmdDYWxsYmFja3MuZW5zdXJlKGlkZW50aWZpZXIsIFtdIHsKKyAgICAgICAgcmV0dXJuIFZlY3Rv
cjxCYWNrZW5kQ2FsbGJhY2s+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
Q29udGVudEV4dGVuc2lvblJ1bGVzIHsgaWRlbnRpZmllciB9LCAwKTsKK30KKwordm9pZCBOZXR3
b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiYgY29udGVudFJ1bGVMaXN0
cykKK3sKKyAgICBhdXRvJiBiYWNrZW5kID0gKm1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVu
c3VyZShpZGVudGlmaWVyLCBbXSB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7Cisg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZW50UnVs
ZUxpc3QgOiBjb250ZW50UnVsZUxpc3RzKSB7CisgICAgICAgIFdlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YSBjb250ZW50UnVsZUxpc3REYXRhID0gY29udGVudFJ1bGVMaXN0LnNlY29uZDsK
KyAgICAgICAgYXV0byBjb21waWxlZENvbnRlbnRSdWxlTGlzdCA9IFdlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0OjpjcmVhdGUoV1RGTW92ZShjb250ZW50UnVsZUxpc3REYXRhKSk7CisgICAgICAg
IGJhY2tlbmQuYWRkQ29udGVudEV4dGVuc2lvbihjb250ZW50UnVsZUxpc3QuZmlyc3QsIFdURk1v
dmUoY29tcGlsZWRDb250ZW50UnVsZUxpc3QpKTsKKyAgICB9CisKKyAgICBhdXRvIHBlbmRpbmdD
YWxsYmFja3MgPSBtX3BlbmRpbmdDYWxsYmFja3MudGFrZShpZGVudGlmaWVyKTsKKyAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogcGVuZGluZ0NhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soYmFj
a2VuZCk7CisKK30KKwordm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6cmVtb3Zl
Q29udGVudFJ1bGVMaXN0KFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NvbnRlbnRF
eHRlbnNpb25CYWNrZW5kcy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBt
X2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aXRlcmF0b3ItPnZhbHVlLT5yZW1vdmVDb250ZW50RXh0ZW5zaW9uKG5hbWUpOworfQorCit2b2lk
IE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3Rz
KFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZmluZChpZGVudGlmaWVyKTsK
KyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9yLT52YWx1ZS0+cmVtb3ZlQWxsQ29udGVudEV4
dGVuc2lvbnMoKTsKK30KKwordm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6cmVt
b3ZlKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBt
X2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjc2Y2UyNTlhYTczNjRkYzBlNzYx
MmUwZGQzMzk2OWE2NmUwNzg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCisKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJD
b250ZW50UHJvdmlkZXIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOwor
Y2xhc3MgRGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBOZXR3b3JrQ29udGVudFJ1bGVM
aXN0TWFuYWdlcigpOworICAgIH5OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKKworICAgIHVzaW5nIEJhY2tlbmRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCYpPjsK
KyAgICB2b2lkIGNvbnRlbnRFeHRlbnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyLCBCYWNrZW5kQ2FsbGJhY2smJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZGRD
b250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiYp
OworICAgIHZvaWQgcmVtb3ZlQ29udGVudFJ1bGVMaXN0KFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCByZW1vdmVBbGxDb250ZW50
UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOworICAgIHZvaWQgcmVt
b3ZlKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOworCisgICAgSGFzaE1hcDxVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4+IG1fY29udGVudEV4dGVu
c2lvbkJhY2tlbmRzOworICAgIEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciwgVmVjdG9yPEJhY2tlbmRDYWxsYmFjaz4+IG1fcGVuZGluZ0NhbGxiYWNrczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFlMDE2NDE2ZjRmMzQ2MTY2NmVmMjcxYjZmNTk0NWFhMjFhOGIwNmQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKK21l
c3NhZ2VzIC0+IE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyIHsKKyAgICBSZW1vdmUoV2Vi
S2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgQWRk
Q29udGVudFJ1bGVMaXN0cyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYktpdDo6V2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhPj4gY29udGVudEZpbHRlcnMpCisgICAgUmVtb3ZlQ29udGVudFJ1
bGVMaXN0KFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBTdHJpbmcgbmFtZSkKKyAgICBSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKFdlYktpdDo6VXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKQorfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNw
cAppbmRleCBhMTQ1ZTgxM2ZmNGFhZDNmMWY3NWJhYmVmMmRhOThjYjI2YzZkNDcyLi5lNGU3MTNm
NzIxYjNlMDJkZjFhM2FlNjYzNzQ2NzhlMjMwMDdmZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCkBAIC0yOCw3ICsyOCw5
IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdC5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaD4KQEAgLTk1LDEyICs5NywyMCBA
QCBOZXR3b3JrTG9hZENoZWNrZXI6OlJlcXVlc3RPckVycm9yIE5ldHdvcmtMb2FkQ2hlY2tlcjo6
cmV0dXJuRXJyb3IoU3RyaW5nJiYgZXJybwogdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNr
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBpZiAocHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQocmVxdWVzdCkuYmxvY2tlZExvYWQpIHsKLSAg
ICAgICAgaGFuZGxlcihyZXR1cm5FcnJvcihBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYnkgY29udGVu
dCBleHRlbnNpb24iKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIHByb2Nlc3NDb250
ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBoYW5kbGVy
ID0gV1RGTW92ZShoYW5kbGVyKV0oYXV0byYmIHJlcXVlc3QsIGF1dG8gc3RhdHVzKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKHN0YXR1cy5ibG9ja2VkTG9hZCkgeworICAgICAgICAgICAgaGFuZGxl
cih0aGlzLT5yZXR1cm5FcnJvcihBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYnkgY29udGVudCBleHRl
bnNpb24iKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMt
PmNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoaGFuZGxl
cikpOworICAgIH0pOworI2Vsc2UKKyAgICBjb250aW51ZUNoZWNraW5nUmVxdWVzdChXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKICNlbmRpZgorfQogCit2b2lkIE5ldHdvcmtM
b2FkQ2hlY2tlcjo6Y29udGludWVDaGVja2luZ1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgVmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVyKQorewogICAgIGlmIChhdXRvKiBjb250
ZW50U2VjdXJpdHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgewogICAg
ICAgICBpZiAoaXNSZWRpcmVjdGVkKCkpIHsKICAgICAgICAgICAgIFVSTCB1cmwgPSByZXF1ZXN0
LnVybCgpOwpAQCAtMjI5LDIxICsyMzksMTggQEAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBOZXR3
b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0CiB9CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZCYgTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQoKQordm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVs
ZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpC
bG9ja2VkU3RhdHVzJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFtX2NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCkgewotICAgICAgICBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4o
KTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9jb250ZW50UnVsZUxpc3RzKQotICAgICAg
ICAgICAgbV9jb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQtPmFkZENvbnRlbnRFeHRlbnNpb24ocGFp
ci5maXJzdCwgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKHBhaXIu
c2Vjb25kKSkpOworICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSB7
CisgICAgICAgIENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzIHN0YXR1czsKKyAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0KSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICByZXR1cm4gKm1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kOwotfQotCi1Db250
ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBOZXR3b3JrTG9hZENoZWNrZXI6OnByb2Nlc3ND
b250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsK
LSAgICBhdXRvIHN0YXR1cyA9IGNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCgpLnByb2Nlc3NDb250
ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZChyZXF1ZXN0LnVybCgpLCBtX21haW5Eb2N1bWVu
dFVSTCk7Ci0gICAgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KHN0YXR1cywgbnVsbHB0ciwg
cmVxdWVzdCk7Ci0gICAgcmV0dXJuIHN0YXR1czsKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xl
dG9uKCkubmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKS5jb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQoKm1fdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGJhY2tlbmQpIG11dGFibGUgeworICAgICAg
ICBhdXRvIHN0YXR1cyA9IGJhY2tlbmQucHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvclBp
bmdMb2FkKHJlcXVlc3QudXJsKCksIG1fbWFpbkRvY3VtZW50VVJMKTsKKyAgICAgICAgYXBwbHlC
bG9ja2VkU3RhdHVzVG9SZXF1ZXN0KHN0YXR1cywgbnVsbHB0ciwgcmVxdWVzdCk7CisgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCksIHN0YXR1cyk7CisgICAgfSk7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggZWNmYjVlYjViY2E3N2MyN2Ux
ZDRhY2Q4MmI4YjljOGEyOWVkNDQyMi4uMDMyZDVmNDM4NzNkY2VlYmNjZWY0MmYzNTU5ZmM1OWUy
YzVmNjRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5oCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CkBAIC00MCw5ICs0MCwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOwogCi1jbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIg
eworY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0xv
YWRDaGVja2VyPiB7CiBwdWJsaWM6Ci0gICAgTmV0d29ya0xvYWRDaGVja2VyKFdlYkNvcmU6OkZl
dGNoT3B0aW9uczo6TW9kZSwgYm9vbCBzaG91bGRGb2xsb3dSZWRpcmVjdHMsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCYmLCBXZWJDb3JlOjpVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
KTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4gY3JlYXRlKFdlYkNvcmU6OkZl
dGNoT3B0aW9uczo6TW9kZSBtb2RlLCBib29sIHNob3VsZEZvbGxvd1JlZGlyZWN0cywgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmIG9yaWdpbmFsSGVh
ZGVycywgV2ViQ29yZTo6VVJMJiYgdXJsLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
JiYgc291cmNlT3JpZ2luKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0
d29ya0xvYWRDaGVja2VyIHsgbW9kZSwgc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgc2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdpbmFsSGVhZGVycyksIFdURk1v
dmUodXJsKSwgV1RGTW92ZShzb3VyY2VPcmlnaW4pIH0pOworICAgIH0KICAgICB+TmV0d29ya0xv
YWRDaGVja2VyKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0T3JFcnJvciA9IEV4cGVjdGVkPFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj47CkBAIC01MiwxMCAr
NTUsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDU1BSZXNwb25zZUhlYWRlcnMoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiYgaGVhZGVycykgeyBtX2Nz
cFJlc3BvbnNlSGVhZGVycyA9IFdURk1vdmUoaGVhZGVycyk7IH0KICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQotICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvblJ1bGVMaXN0cyhXZWJD
b3JlOjpVUkwmJiBtYWluRG9jdW1lbnRVUkwsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiYmIGNvbnRlbnRSdWxlTGlzdHMpCisgICAgdm9p
ZCBzZXRDb250ZW50RXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpVUkwmJiBtYWluRG9jdW1l
bnRVUkwsIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gaWRl
bnRpZmllcikKICAgICB7CiAgICAgICAgIG1fbWFpbkRvY3VtZW50VVJMID0gV1RGTW92ZShtYWlu
RG9jdW1lbnRVUkwpOwotICAgICAgICBtX2NvbnRlbnRSdWxlTGlzdHMgPSBXVEZNb3ZlKGNvbnRl
bnRSdWxlTGlzdHMpOworICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
PSBpZGVudGlmaWVyOwogICAgIH0KICNlbmRpZgogCkBAIC02MywxMiArNjYsMTYgQEAgcHVibGlj
OgogICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsgfQogCiBw
cml2YXRlOgorICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1v
ZGUsIGJvb2wgc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgV2ViQ29y
ZTo6VVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CisKICAgICBXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0
OwogICAgIGJvb2wgaXNDaGVja2luZygpIGNvbnN0IHsgcmV0dXJuICEhbV9jb3JzUHJlZmxpZ2h0
Q2hlY2tlcjsgfQogICAgIGJvb2wgaXNSZWRpcmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZWRp
cmVjdENvdW50OyB9CiAKICAgICB2b2lkIGNoZWNrUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CiAKKyAgICB2b2lkIGNvbnRpbnVlQ2hlY2tp
bmdSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYm
KTsKKwogICAgIGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJikg
Y29uc3Q7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsK
QEAgLTc3LDggKzg0LDcgQEAgcHJpdmF0ZToKICAgICBSZXF1ZXN0T3JFcnJvciByZXR1cm5FcnJv
cihTdHJpbmcmJiBlcnJvcik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIGNv
bnRlbnRFeHRlbnNpb25zQmFja2VuZCgpOwotICAgIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpCbG9ja2VkU3RhdHVzIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25S
dWxlc0ZvckxvYWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzJik+JiYpOwogI2VuZGlmCiAKICAgICBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnM6Ok1vZGUgbV9tb2RlOwpAQCAtOTIsMTYgKzk4LDEzIEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnM+IG1fY3NwUmVzcG9uc2VIZWFkZXJzOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAgICAgV2ViQ29yZTo6VVJMIG1fbWFpbkRvY3VtZW50VVJMOwotICAgIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBtX2NvbnRlbnRS
dWxlTGlzdHM7CisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI+IG1fY29yc1ByZWZsaWdo
dENoZWNrZXI7CiAgICAgYm9vbCBtX2lzU2FtZU9yaWdpblJlcXVlc3QgeyB0cnVlIH07CiAgICAg
Ym9vbCBtX2lzU2ltcGxlUmVxdWVzdCB7IHRydWUgfTsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9s
aWN5OwotI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+IG1f
Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kOwotI2VuZGlmCiAgICAgc2l6ZV90IG1fcmVkaXJlY3RD
b3VudCB7IDAgfTsKICAgICBXZWJDb3JlOjpVUkwgbV9wcmV2aW91c1VSTDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDFjNTU4
OGU3OTQzNDk4ZmE0MTk3NDRhODI5ZThiNzQ0NGYzODMwN2UuLjc5NzdkYTEzMjA1NjUwNWI4ZDAz
N2RjY2E0ZDEzNjhjODNlYzExZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCkBAIC0xNzEsNiArMTcy
LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBtX05ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZDhjZWE2OWRlODc2Mjk5MmFiMDI5NzRl
NDVhNzg3MTg0NDBkNzVjZC4uY2U0MTJiNDU5Mjg2YjM2OWRmMTJjZDA4ZjMzMzg1YWQ4YzlkZGRl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRv
d25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgorI2luY2x1
ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9E
aWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CkBAIC0xNTcsNiArMTU4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wpOwog
ICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCkg
Y29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIE5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0
dXJuIG1fTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIE5ldHdvcmtQcm9jZXNzKCk7CiAgICAgfk5ldHdvcmtQcm9jZXNzKCk7CkBAIC0yOTEs
NiArMjk2LDEwIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYlNRTGl0ZURh
dGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICNlbmRpZgorCisjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlciBtX05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggMDE3MmMz
YjQxOWI4MWYxNWQzZjc4OWFkOGU4ZDZmM2FmOTg5MWQ1OC4uNDQwNzdkM2NlNWVmMWRkMGI1OTQw
NGU1ZjllNmQ3NjcxNzAzMjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTkz
LDcgKzkzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7Ci0gICAgZW5jb2RlciA8PCBjb250
ZW50UnVsZUxpc3RzOworICAgIGVuY29kZXIgPDwgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllcjsKICNlbmRpZgogfQogCkBAIC0xODQsMTEgKzE4NCwxMSBAQCBib29sIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3Jr
UmVzb3VyYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVSTCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6
cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+PiBjb250ZW50UnVs
ZUxpc3RzOwotICAgIGRlY29kZXIgPj4gY29udGVudFJ1bGVMaXN0czsKLSAgICBpZiAoIWNvbnRl
bnRSdWxlTGlzdHMpCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXI+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBpZiAo
IXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXN1bHQuY29udGVudFJ1bGVMaXN0cyA9IFdURk1vdmUoKmNvbnRlbnRSdWxlTGlzdHMp
OworICAgIHJlc3VsdC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gKnVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDc3ZGU4NTU1M2VkZjRjOThjYmE3YzQ2NzNmYjZlM2I3
MTBkNGUzYmEuLjJjYzMzYWNlOWJmMDA5MjMxOWFiYmU1NmNhZmJhMGI4MmQ1NTczMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdv
cmtMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNpbmNs
dWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuaCIKKyNpbmNsdWRlICJVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0
aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAg
ICAgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTDsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gY29udGVudFJ1bGVMaXN0czsK
KyAgICBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggYmM0ODk0MzY4OGQ1MDY3MzkxMWYxYWFk
ZTBhOGM3NzM3NmQyNGFkNS4uMjVmOTYzYTIwMWNhMjFiOWRhYTY3MzkxZWRjZmI3OGMzNzEwYzlh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTQyLDEz
ICs0MiwxMyBAQCBQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzLCBIVFRQSGVhZGVyTWFwJiYgbwogICAgIDogbV9wYXJhbWV0ZXJzKFdU
Rk1vdmUocGFyYW1ldGVycykpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZQaW5nTG9hZDo6
dGltZW91dFRpbWVyRmlyZWQpCi0gICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVl
UmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4obV9wYXJhbWV0ZXJzLm1vZGUsIG1fcGFyYW1ldGVycy5z
aG91bGRGb2xsb3dSZWRpcmVjdHMsIG1fcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW5hbFJlcXVlc3RIZWFkZXJz
KSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJj
ZU9yaWdpbi5jb3B5UmVmKCkpKQorICAgICwgbV9uZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya0xv
YWRDaGVja2VyOjpjcmVhdGUobV9wYXJhbWV0ZXJzLm1vZGUsIG1fcGFyYW1ldGVycy5zaG91bGRG
b2xsb3dSZWRpcmVjdHMsIG1fcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbV9w
YXJhbWV0ZXJzLnNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJM
IHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdp
bi5jb3B5UmVmKCkpKQogewogCiAgICAgaWYgKG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRl
cnMpCiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDU1BSZXNwb25zZUhlYWRlcnMo
V1RGTW92ZShtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkpKTsKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRD
b250ZW50RXh0ZW5zaW9uUnVsZUxpc3RzKFdURk1vdmUobV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVu
dFVSTCksIFdURk1vdmUobV9wYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMpKTsKKyAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlci0+c2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoV1RGTW92ZSht
X3BhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMKSwgbV9wYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICAvLyBJZiB0aGUgc2VydmVyIG5ldmVy
IHJlc3BvbmRzLCB0aGlzIG9iamVjdCB3aWxsIGhhbmcgYXJvdW5kIGZvcmV2ZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggNzRhNjk4NTc3NmE5ZmI1YTdmNTkx
NWJkZTg0NjU0NWMwM2ZhYmM4MC4uYTFlZjZlNzMxN2ZlNTVmNmM1ZGNmNTNhYzc1NTNhOWNiMDdj
OTZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNzAsNyAr
NzAsNyBAQCBwcml2YXRlOgogICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
PiBtX2NvbXBsZXRpb25IYW5kbGVyOwogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+IG1fdGFz
azsKICAgICBXZWJDb3JlOjpUaW1lciBtX3RpbWVvdXRUaW1lcjsKLSAgICBVbmlxdWVSZWY8TmV0
d29ya0xvYWRDaGVja2VyPiBtX25ldHdvcmtMb2FkQ2hlY2tlcjsKKyAgICBSZWY8TmV0d29ya0xv
YWRDaGVja2VyPiBtX25ldHdvcmtMb2FkQ2hlY2tlcjsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdD4gbV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjdmMDVjN2IzODE1YmY1
MWM2OTM0NGUxYTY2ZGU1N2YwMDAwZTc1ZC4uYjdhNGM5NjVjNzkwMTE1MDliYjU1MjU3NmZkNTA1
MGM2NjQ1MzhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0xODUsNiArMTg1LDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKHJl
Y2VpdmVyKToKICAgICAgICAgICAgIHR5cGVzX2J5X25hbWVzcGFjZVsnSVBDJ10udXBkYXRlKFso
J2NsYXNzJywgJ0Nvbm5lY3Rpb24nKV0pCiAKICAgICBub19mb3J3YXJkX2RlY2xhcmF0aW9uX3R5
cGVzID0gZnJvemVuc2V0KFsKKyAgICAgICAgJ1N0cmluZycsCiAgICAgICAgICdXZWJDb3JlOjpE
b2N1bWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXInLApA
QCAtMTkyLDcgKzE5Myw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhy
ZWNlaXZlcik6CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXInLAot
ICAgICAgICAnU3RyaW5nJywKKyAgICAgICAgJ1dlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcicsCiAgICAgXSkKIAogICAgIGZvciBwYXJhbWV0ZXIgaW4gcmVjZWl2ZXIuaXRl
cnBhcmFtZXRlcnMoKToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjNmYjQzZjk0MDEwODdmODBj
MGJjZjc0MGI2ZWI5ZTQ4MGEwNGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBl
PjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCA3MDg5ZGE4YjJhODZkZmRlZjg3NWI5ODgwYjZmNGZhYjAzYTcyZGE5
Li44NjcxNTliNjhmNDAyZjI5YWVkZGI3ZjMyOWU3ODAwOWZmMTlhNTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTc5
LDggKzE3OSwxMyBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5oaWdoZXN0VXNl
ZEJhY2tGb3J3YXJkSXRlbUlEKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQpKQor
CisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcjsKKyAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy51c2Vy
Q29udGVudENvbnRyb2xsZXJJRCA9ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwor
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpc2l0ZWRMaW5rVGFibGVJRCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLndlYnNpdGVEYXRhU3RvcmVJRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNmJkMTk2MWYzYzRkNDUwMDRkZGRm
ZDYyMDFjNjgyN2Q5N2U5MDQwMi4uYmFlYmFmNGQ0MTAwODk2NWE1NmY0YzFjM2YyMWFjZTg3M2Vh
NDMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtOTgsNyArOTgsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwogICAgIHVpbnQ2NF90IGhpZ2hlc3RV
c2VkQmFja0ZvcndhcmRJdGVtSUQ7CiAKLSAgICB1aW50NjRfdCB1c2VyQ29udGVudENvbnRyb2xs
ZXJJRDsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29u
dHJvbGxlcklEOwogICAgIHVpbnQ2NF90IHZpc2l0ZWRMaW5rVGFibGVJRDsKICAgICB1aW50NjRf
dCB3ZWJzaXRlRGF0YVN0b3JlSUQ7CiAgICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCmluZGV4IDI3
NTAwN2FmNzE1YjI1ZmE3YjJkNmQ5ZDcwNWZlNzUzMjk1OWU1NTEuLmFiZGE3ZDVlNWM2NGUwMTU0
YWQzNTY5OTY3YWU4NzZmNmY2OWRjMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VHcm91cERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VH
cm91cERhdGEuY3BwCkBAIC01MywxMCArNTMsMTEgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlR3Jv
dXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHZpc2libGVUb0hpc3RvcnlDbGllbnQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIHVpbnQ2NF90IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSh1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSkKKyAgICBzdGQ6
Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyOworICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyB7IGlkLCBwYWdlR3JvdXBJ
RCwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIHZpc2libGVUb0hpc3RvcnlDbGllbnQsIHVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgfSB9OworICAgIHJldHVybiB7IHsgaWQsIHBhZ2VH
cm91cElELCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSwgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCwg
KnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgfSB9OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERh
dGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaAppbmRleCAyYzYx
ZTU5N2I2NTZjZDhiODI3NmQyMGM0NmU4NDFjOTlmODBiNWIwLi45MzBkOGVlOThhZWU2ZTI2NzE1
MWQxNjZkOTgwMTkyNDkyYjAzOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlR3JvdXBEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3Vw
RGF0YS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTQzLDcgKzQ0LDcgQEAgc3RydWN0IFdlYlBh
Z2VHcm91cERhdGEgewogICAgIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7CiAgICAgYm9v
bCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50OwogCi0gICAgdWludDY0X3QgdXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllcjsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDYxMzg5M2U0MzBiYmJjOWVkNzAzNGFlYjE0ZmM1OGRjNWUy
OGVmYmMuLjVjNjk0MjI0MDRiNzMwZWRlNmYyYTQ1YjEzN2RmMmYwMTliZjRhODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMjYsMTkgKzI2LDIzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogCisjaW5jbHVkZSAiQVBJQ29udGVudFJ1bGVMaXN0
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUg
IkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RP
Q09MX01BTkFHRVIpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIgogI2VuZGlmCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVBy
b2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0Lmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKQEAgLTg1LDYgKzg5LDEwIEBAIE5ldHdvcmtQcm9j
ZXNzUHJveHk6On5OZXR3b3JrUHJvY2Vzc1Byb3h5KCkKICAgICBBU1NFUlQobV9wZW5kaW5nRmV0
Y2hXZWJzaXRlRGF0YUNhbGxiYWNrcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3BlbmRpbmdE
ZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3BlbmRp
bmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3MuaXNFbXB0eSgpKTsKKyNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGZvciAoYXV0byogcHJveHkgOiBtX3dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMpCisgICAgICAgIHByb3h5LT5yZW1vdmVOZXR3b3Jr
UHJvY2VzcygqdGhpcyk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
ZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0
aW9ucykKQEAgLTU0MCw0ICs1NDgsMjggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJ
c0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIH0KIH0K
IAorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Y29udGVudEV4dGVuc2lvblJ1bGVzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogd2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Z2V0KGlkZW50aWZpZXIpKSB7
CisgICAgICAgIG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcy5hZGQod2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkpOworICAgICAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS0+YWRkTmV0d29ya1Byb2Nlc3MoKnRoaXMpOworCisgICAgICAgIGF1dG8gcnVsZXMgPSBX
VEY6Om1hcCh3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+Y29udGVudEV4dGVuc2lvblJ1
bGVzKCksIFtdKGF1dG8mJiBrZXlWYWx1ZSkgLT4gc3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3REYXRhPiB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoa2V5VmFsdWUudmFsdWUtPm5hbWUoKSwga2V5VmFsdWUudmFsdWUtPmNvbXBpbGVkUnVsZUxp
c3QoKS5kYXRhKCkpOworICAgICAgICB9KTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMgeyBpZGVudGlmaWVy
LCBydWxlcyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlk
ZW50aWZpZXIsIHsgfSB9LCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRE
ZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkmIHByb3h5KQoreworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyOjpSZW1vdmUgeyBwcm94eS5pZGVudGlmaWVyKCkgfSwgMCk7CisgICAgbV93
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzLnJlbW92ZSgmcHJveHkpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBmZmZiNDE0Zjk2NTE3OWQy
NjEwYTYxM2UyYmU2ZWUzY2QzM2UxMDJlLi5jOWRjNzkyYTliNWUwN2NjZmUxMDUyOWE3ZTE5YWU2
YWJhNDkwZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlByb2Nl
c3NMYXVuY2hlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQ
cm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtNTksNiArNjAsNyBAQCBj
bGFzcyBXZWJQcm9jZXNzUG9vbDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjsK
IGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBzdHJ1
Y3QgV2Vic2l0ZURhdGE7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgOiBwdWJsaWMgQ2hp
bGRQcm9jZXNzUHJveHksIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CkBAIC05NCw2
ICs5NiwxMCBAQCBwdWJsaWM6CiAgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgeyBy
ZXR1cm4gbV90aHJvdHRsZXI7IH0KICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2woKSB7
IHJldHVybiBtX3Byb2Nlc3NQb29sOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQorICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CiAKQEAgLTEzOSw2ICsxNDUsMTAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxT
dHJpbmc+JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICB2b2lkIGNvbnRlbnRFeHRlbnNpb25SdWxlcyhV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyNlbmRpZgorCiAgICAgLy8gUHJvY2Vz
c0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1
bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwogCkBAIC0xNjEs
NiArMTcxLDEwIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPj4gbV93cml0ZUJsb2JUb0ZpbGVQYXRoQ2FsbGJhY2tN
YXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wgd2FzR3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwOwogICAg
IEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
JiBkb21haW5zKT4+IG1fYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcDsKKworI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllczsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggNjEyNmVhNWQ4N2Q2NGFkYzJlOGQ2ZWVjMjYzODFkMGNkOGM3MjVlMi4uMTg0YzJm
ZDU0NDFmOGQ4NzA0MzZkMTViNzZhNGQyZGZmNjM3Mjg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNDcsNCArNDcsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1By
b3h5IExlZ2FjeVJlY2VpdmVyIHsKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElP
TklORykKICAgICBTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVp
bnQ2NF90IGNvbnRleHRJZCkKICAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0
b3I8U3RyaW5nPiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQorICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJLaXQ6OlVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDQyMzNjOGU1Y2ZmYzY2MjAx
MzFjZGJiODNjMDAyZGNhNTU2MzQxYmIuLjQyZmI4ZWFlM2RiMmRkZmY5MjRlMDE5ZDY3MTRiMjY4
MjQ4MmE4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAg
LTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJ
VXNlclN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIuaCIKQEAgLTQ2LDE4ICs0OCwzNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
c3RhdGljIEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkqPiYgd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcygp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqPj4gcHJveGllczsK
KyAgICByZXR1cm4gcHJveGllczsKK30KKworCitXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmdldChVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIHdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3hpZXMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisgICAgCiBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQotICAgIDog
bV91c2VyU2NyaXB0cyhBUEk6OkFycmF5OjpjcmVhdGUoKSkKKyAgICA6IG1faWRlbnRpZmllcihn
ZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllclR5
cGU+KCkpCisgICAgLCBtX3VzZXJTY3JpcHRzKEFQSTo6QXJyYXk6OmNyZWF0ZSgpKQogICAgICwg
bV91c2VyU3R5bGVTaGVldHMoQVBJOjpBcnJheTo6Y3JlYXRlKCkpCiB7CisgICAgd2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveGllcygpLmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOwogfQogCiBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KCkKIHsKLSAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KSB7Ci0gICAgICAgIHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRp
ZmllcigpKTsKKyAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkucmVtb3ZlKG1f
aWRlbnRpZmllcik7CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAg
ICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAgICAgICAgIHByb2Nlc3MtPmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSgqdGhpcyk7CiAgICAgfQorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAgICAg
ICBwcm9jZXNzLT5kaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKnRoaXMp
OworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC02NSw3ICs4Niw3IEBAIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNz
UHJveHksCiAgICAgaWYgKCFtX3Byb2Nlc3Nlcy5hZGQoJndlYlByb2Nlc3NQcm94eSkuaXNOZXdF
bnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLCAqdGhpcyk7CisgICAgd2ViUHJvY2Vzc1Byb3h5
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCksICp0aGlz
KTsKIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHkoKSk7
CiAgICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZCA6IG1fdXNlckNvbnRlbnRXb3JsZHMpCkBAIC05
NSw3ICsxMTYsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogICAgIEFTU0VSVChtX3Byb2Nl
c3Nlcy5jb250YWlucygmd2ViUHJvY2Vzc1Byb3h5KSk7CiAKICAgICBtX3Byb2Nlc3Nlcy5yZW1v
dmUoJndlYlByb2Nlc3NQcm94eSk7Ci0gICAgd2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRVc2Uo
QVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKQEAgLTEwNiw3ICsxMjcsNyBAQCB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6
VXNlckNvbnRlbnRXb3JsZAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91c2VyQ29udGVudFdvcmxk
cy5hZGQoJndvcmxkKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAg
Zm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNl
ckNvbnRlbnRXb3JsZHMoeyBzdGQ6Om1ha2VfcGFpcih3b3JsZC5pZGVudGlmaWVyKCksIHdvcmxk
Lm5hbWUoKSkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsg
c3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgfQogfQogCkBAIC0xMzAsNyArMTUxLDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVz
ZXMoQVBJOjpVc2VyQ29udGVudFcKIHsKICAgICBpZiAoc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250
ZW50V29ybGRzTWVzc2FnZSh3b3JsZCwgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpKSB7CiAgICAgICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZVVzZXJDb250ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkp
OworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIH0KIH0KIApAQCAtMTQzLDcgKzE2NCw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29y
bGRVc2VzKEhhc2hDb3VudGVkU2V0PFJlCiAgICAgfQogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3Js
ZHNUb1JlbW92ZSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29y
bGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1
c2VyU2NyaXB0KQpAQCAtMTU1LDcgKzE3Niw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQogICAg
IG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAgIGZv
ciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlw
dHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2Vy
U2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRz
KHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNj
cmlwdC51c2VyU2NyaXB0KCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogfQogCiB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6
VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKQEAgLTE2Myw3ICsxODQsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYg
dXNlclNjcmlwdAogICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclNj
cmlwdC51c2VyQ29udGVudFdvcmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJv
Y2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIo
KSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJT
Y3JpcHQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLnJl
bW92ZUFsbCgmdXNlclNjcmlwdCk7CiAKQEAgLTE3Myw3ICsxOTQsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYg
dXNlclNjcmlwdAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxs
VXNlclNjcmlwdHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3Jp
cHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVz
ZXJTY3JpcHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CiAKICAgICB1bnNpZ25lZCB1c2VyU2NyaXB0c1JlbW92ZWQgPSBtX3VzZXJTY3JpcHRzLT5y
ZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxBUEk6OlVzZXJTY3JpcHQ+KFsmXShjb25zdCBhdXRvJiB1
c2VyU2NyaXB0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclNjcmlwdC0+dXNlckNvbnRlbnRXb3Js
ZCgpID09ICZ3b3JsZDsKQEAgLTE5NCw3ICsyMTUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCiAgICAgICAgIHdvcmxkSWRlbnRp
ZmllcnMudW5jaGVja2VkQXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigpKTsK
IAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7CisgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIApAQCAtMjEw
LDcgKzIzMSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
dHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTCiAgICAgbV91c2VyU3R5bGVTaGVl
dHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU3R5bGVTaGVldCk7CiAKICAgICBmb3IgKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7
IHsgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2Vy
U3R5bGVTaGVldC51c2VyU3R5bGVTaGVldCgpIH0gfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNl
clN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVu
dGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRpZmll
cigpLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVl
dCkKQEAgLTIxOCw3ICsyMzksNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1cwogICAgIFJlZjxB
UEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQudXNlckNvbnRlbnRX
b3JsZCgpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVT
aGVldC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0
KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygp
LnJlbW92ZUFsbCgmdXNlclN0eWxlU2hlZXQpOwogCkBAIC0yMjgsNyArMjQ5LDcgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpV
c2VyU3R5bGVTaGVldCYgdXMKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUFsbFVzZXJTdHlsZVNoZWV0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewog
ICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkp
OworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgdW5zaWduZWQgdXNlclN0eWxlU2hlZXRzUmVt
b3ZlZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5yZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxBUEk6OlVz
ZXJTdHlsZVNoZWV0PihbJl0oY29uc3QgYXV0byYgdXNlclN0eWxlU2hlZXQpIHsKICAgICAgICAg
cmV0dXJuICZ1c2VyU3R5bGVTaGVldC0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3JsZDsKQEAg
LTI0OSw3ICsyNzAsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVBbGxVc2VyU3R5bGVTaGVldHMoKQogICAgICAgICB3b3JsZElkZW50aWZpZXJzLnVuY2hlY2tl
ZEFwcGVuZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2Vy
U3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
IAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKQEAgLTI3MCw3
ICsyOTEsNyBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2Ny
aXB0TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZQogICAgIG1fc2NyaXB0TWVzc2FnZUhh
bmRsZXJzLmFkZChoYW5kbGVyLmlkZW50aWZpZXIoKSwgJmhhbmRsZXIpOwogCiAgICAgZm9yIChX
ZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIo
KSwgaGFuZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIo
KSwgaGFuZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjgwLDcgKzMwMSw3IEBAIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3Qg
U3RyaW5nCiAgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuYmVnaW4o
KSwgZW5kID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBpZiAoaXQtPnZhbHVlLT5uYW1lKCkgPT0gbmFtZSAmJiAmaXQtPnZhbHVlLT51
c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkKSB7CiAgICAgICAgICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVy
KCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBpZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CiAKICAgICAgICAgICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJz
LnJlbW92ZShpdCk7CiAKQEAgLTI5Myw3ICszMTQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmlu
Zwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3Nh
Z2VIYW5kbGVycyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVycyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsK
KyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigp
IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICB1bnNpZ25lZCBudW1iZXJSZW1v
dmVkID0gMDsKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmVJZihbJl0oYXV0byYg
ZW50cnkpIHsKQEAgLTMzMCwyNCArMzUxLDMzIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmFkZENvbnRlbnRSdWxlTGlzdChBUEk6OkNvbnRlbnRSdWxlTGlzdCYgY29uCiAK
ICAgICBhdXRvIHBhaXIgPSBzdGQ6Om1ha2VfcGFpcihjb250ZW50UnVsZUxpc3QubmFtZSgpLCBj
b250ZW50UnVsZUxpc3QuY29tcGlsZWRSdWxlTGlzdCgpLmRhdGEoKSk7CiAKLSAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlz
dHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1f
cHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CisKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNz
ZXMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyOjpBZGRDb250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpLCB7IHBhaXIgfSB9
LCAwKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29u
dGVudFJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBtX2NvbnRlbnRSdWxlTGlz
dHMucmVtb3ZlKG5hbWUpOwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50UnVsZUxpc3QobmFtZSksIGlkZW50aWZpZXIoKSk7
CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1
bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBmb3IgKGF1dG8q
IHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVDb250ZW50UnVsZUxp
c3QgeyBpZGVudGlmaWVyKCksIG5hbWUgfSwgMCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogewogICAgIG1fY29u
dGVudFJ1bGVMaXN0cy5jbGVhcigpOwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nl
c3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlkZW50aWZp
ZXIoKSk7CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxs
Q29udGVudFJ1bGVMaXN0cygpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBmb3Ig
KGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVBbGxDb250
ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpIH0sIDApOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDIzMGY2MjNkOThlNDc4Mjk1MDExMGQ5
NDlmNTI1NjU2MjAwZTNiODQuLjMxNjlkZDljYzk0NzE0YzMxZmEyNTRlMzg4MTY3NTUwYmUxZmU4
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjcsMTEgKzI3
LDExIEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC01NCwy
MCArNTQsMjMgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2NsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CiBjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwog
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiAKLWNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6VXNlckNvbnRlbnRDb250cm9sbGVyPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHVibGljIElkZW50aWZpZWQ8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHsKK2NsYXNz
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRlbnRDb250cm9sbGVyPiwgcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eT4gY3JlYXRlKCkKICAgICB7IAogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSk7Ci0gICAgfSAKLSAgICBleHBsaWNp
dCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpOworICAgIH0KKyAgICBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eSgpOwogICAgIH5XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSgpOwogCisgICAgc3RhdGljIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiBnZXQoVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CisKICAgICB2b2lkIGFkZFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgcmVt
b3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKIApAQCAtOTEsMTEgKzk0LDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVu
dFdvcmxkJik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIHZvaWQgYWRk
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHkpIHsgbV9uZXR3b3JrUHJv
Y2Vzc2VzLmFkZCgmcHJveHkpOyB9CisgICAgdm9pZCByZW1vdmVOZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSkgeyBtX25ldHdvcmtQcm9jZXNzZXMucmVtb3ZlKCZwcm94
eSk7IH0KKwogICAgIHZvaWQgYWRkQ29udGVudFJ1bGVMaXN0KEFQSTo6Q29udGVudFJ1bGVMaXN0
Jik7CiAgICAgdm9pZCByZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCByZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCk7CisgICAgY29uc3QgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4+JiBjb250ZW50RXh0ZW5zaW9uUnVsZXMo
KSB7IHJldHVybiBtX2NvbnRlbnRSdWxlTGlzdHM7IH0KICNlbmRpZgogCisgICAgVXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKQEAgLTEwNywxMyArMTE2LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVV
c2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpVc2VyQ29udGVu
dFdvcmxkPj4mKTsKICAgICBib29sIHNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01l
c3NhZ2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1v
dmUpOwogCi0gICAgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsgICAgCisg
ICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgSGFz
aFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsKICAgICBSZWY8QVBJOjpBcnJheT4g
bV91c2VyU2NyaXB0czsKICAgICBSZWY8QVBJOjpBcnJheT4gbV91c2VyU3R5bGVTaGVldHM7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9z
Y3JpcHRNZXNzYWdlSGFuZGxlcnM7CiAgICAgSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6VXNl
ckNvbnRlbnRXb3JsZD4+IG1fdXNlckNvbnRlbnRXb3JsZHM7CiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQorICAgIEhhc2hTZXQ8TmV0d29ya1Byb2Nlc3NQcm94eSo+IG1fbmV0d29y
a1Byb2Nlc3NlczsKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVM
aXN0Pj4gbV9jb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTk2NDY0NDE4ZWRlODE1NGVi
M2M3ZTRkOWU2ZjM0ZmEyNWE1MDkzYS4uNGQyYzY3ZjM0ZWFjMTljY2JmYTUxMGVlMTVhY2M5ODBm
ZjQxYWMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC05NTgsNiArOTU4LDcgQEAKIAkJNDFGQUY1RjUxRTNDMDY0OTAwMUFFNjc4IC8q
IFdlYlJUQ1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZBRjVGNDFFM0MwNjQxMDAxQUU2NzggLyogV2ViUlRDUmVzb2x2ZXIuaCAqLzsg
fTsKIAkJNDFGQUY1RjgxRTNDMTAyMTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBRjVGNjFFM0Mw
QjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCAqLzsgfTsKIAkJNDFGQUY1RjkxRTND
MTAyNTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY3MUUzQzBCNDcwMDFBRTY3OCAvKiBM
aWJXZWJSVENSZXNvbHZlci5jcHAgKi87IH07CisJCTQxRkJFODI2MjA2REY3RkEwMDBGMDc0MSAv
KiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCRTgyNDIwNkRBNzlDMDAwRjA3NDEgLyogTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwICovOyB9OwogCQk0NDUwQUVDMDFEQzNGQUU1
MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1MEFFQkYxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJl
ZE1lbW9yeUNvY29hLmNwcCAqLzsgfTsKIAkJNDYwRjQ4OEYxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MEY0ODhEMUY5OTZGNkMwMENG
NEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CiAJCTQ2MEY0ODkwMUY5OTZGNzEwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwpAQCAtMTE5Niw2ICsxMTk3LDcgQEAKIAkJNTJE
NUExQjAxQzU3NDk1QTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUExQzU3
NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovOyB9OwogCQk1
MkQ1QTFCMTFDNTc0OTYyMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUMx
QzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSAqLzsgfTsK
IAkJNTJENUExQjcxQzU3NEEwMjAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTFCNDFD
NTc0OUYyMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSAqLzsgfTsKKwkJNTJG
MDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyRjA2MEREMTY1NDMxNzUwMEYzMjgxQiAvKiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUzMDI1ODNCMURDQkJEMjIwMERB
ODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMDI1ODJFMURDQkJEMUQwMERBODlDMiAvKiBOZXR3
b3JrQ2FwdHVyZVJlc291cmNlLmNwcCAqLzsgfTsKIAkJNTMwMjU4M0MxRENCQkQyMjAwREE4OUMy
IC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMDI1ODJGMURDQkJEMUQwMERBODlDMiAvKiBOZXR3b3JrQ2Fw
dHVyZVJlc291cmNlLmggKi87IH07CiAJCTUzMDI1ODNEMURDQkJEMjIwMERBODlDMiAvKiBOZXR3
b3JrQ2FwdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzMDI1ODMwMURDQkJEMUQwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZUV2ZW50
LmNwcCAqLzsgfTsKQEAgLTMzNDIsNiArMzM0NCwxMCBAQAogCQk0MUZBRjVGNDFFM0MwNjQxMDAx
QUU2NzggLyogV2ViUlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV2ViUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkFGNUY2MUUzQzBCNDcwMDFBRTY3
OCAvKiBMaWJXZWJSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMaWJXZWJSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVz
b2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQUY1RjcxRTNDMEI0NzAw
MUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExpYldlYlJUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFG
QkU4MjEyMDZEODdGNjAwMEYwNzQxIC8qIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgyMjIwNkRB
NzlDMDAwRjA3NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkJFODIzMjA2REE3OUMwMDBGMDc0MSAvKiBO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgyNDIwNkRBNzlDMDAwRjA3NDEg
LyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyogU2hh
cmVkTWVtb3J5Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2hhcmVkTWVtb3J5Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBG
NDg4RDFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjI0LDYgKzM2MzAsNyBAQAogCQk1MkQ1QTFCMjFDNTc0
OUYyMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyRDVBMUIzMUM1NzQ5RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
RDVBMUI0MUM1NzQ5RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGMDYwREQxNjU0MzE3NTAwRjMy
ODFCIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4MkUxRENCQkQx
RDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHA7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzAyNTgyRjFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0d29y
a0NhcHR1cmVSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3
b3JrQ2FwdHVyZVJlc291cmNlLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4
MzAxRENCQkQxRDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlRXZlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0NhcHR1cmVFdmVudC5jcHA7IHBhdGgg
PSBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI3MSw2ICs1Mjc4LDcgQEAKIAkJCQkxQTY0MjQ1QzEy
REUyOUExMDBDQUFFMkMgLyogVXBkYXRlSW5mby5oICovLAogCQkJCTVDMTlBNTFFMUZEMEIxNDYw
MEVFQTMyMyAvKiBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJNUMxOUE1MUYx
RkQwQjE0NzAwRUVBMzIzIC8qIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmggKi8sCisJCQkJNDFG
QkU4MjEyMDZEODdGNjAwMEYwNzQxIC8qIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIu
aCAqLywKIAkJCQkxQUMxMzM2NTE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuY3BwICovLAog
CQkJCTFBQzEzMzY2MTg1NjVCNTcwMEYzRUMwNSAvKiBVc2VyRGF0YS5oICovLAogCQkJCTI2ODQw
NTRBMThCODY2RkYwMDIyQzM4QiAvKiBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcCAq
LywKQEAgLTYzNTksNiArNjM2Nyw5IEBACiAJCQkJNTEzQTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8q
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLywKIAkJCQk1MTNBMTY0QTE2MzBB
OUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLywKIAkJCQk1
MTNBMTY0QjE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gKi8sCisJCQkJNDFGQkU4MjQyMDZEQTc5QzAwMEYwNzQxIC8qIE5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCAqLywKKwkJCQk0MUZCRTgyMjIwNkRBNzlDMDAwRjA3
NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCAqLywKKwkJCQk0MUZCRTgyMzIw
NkRBNzlDMDAwRjA3NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMu
aW4gKi8sCiAJCQkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgKi8sCiAJCQkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovLAogCQkJCTUzMjE1OTUxMURCQUU2RkMwMDU0QUEz
QyAvKiBOZXR3b3JrRGF0YVRhc2suY3BwICovLApAQCAtODI0NCw2ICs4MjU1LDcgQEAKIAkJCQky
OTg0RjU3QjE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oICovLAogCQkJCTUxREQ5RjI2MTYzNjdEQTIwMDE1NzhFOSAvKiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTFERDlG
MjcxNjM2N0RBMjAwMTU3OEU5IC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2Fn
ZXMuaCAqLywKKwkJCQk1MkYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxN0NGMEUxMTYzQTQ4
NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAogCQkJCTUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlcy5oICovLAogCQkJCTUxQUNDOTM0MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3
b3JrUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMDY1OSw2ICsxMDY3MSw4IEBA
CiAJCQkJNTMwMjU4M0IxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzQTE2NEMxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxREQ5RjI4
MTYzNjdEQTIwMDE1NzhFOSAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUZCRTgyNjIwNkRGN0ZBMDAwRjA3NDEg
LyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTJGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ2REYwNjNCMUYzOTA1Rjgw
MDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTMyMTU5NTQxREJBRTcxRDAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFzay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1M0JBNDdEMDFEQzJFRjVFMDA0REY0QUQgLyogTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBiMTRhNTgwMzI2YTAy
ZDZkMTg0MWE2ZDg4YTRmODJjYjMxOTQ2MzI0Li40OWM1ZDQ3ZGQ4YzliYWNhYjIwYjJjZGJiYThl
Mjk3Yzk3ZTk2NzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC00NTYsNiArNDU2LDkgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJhbWUsIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQo
ZnJhbWUubG9hZGVyKCkuY2xpZW50KCkpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZy
YW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxs
cHRyOworCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7
CiAgICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciA9IGdlbmVyYXRlTG9hZElkZW50aWZpZXIo
KTsKICAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKQEAgLTQ3MiwxNCArNDc1
LDEyIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1l
LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRF
TlNJT05TKQogICAgIGxvYWRQYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50
b3BEb2N1bWVudCgpLnVybCgpOwotCi0gICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJh
bWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9
IGZyYW1lLnBhZ2UoKSkgewotICAgICAgICAgICAgcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigp
LmZvckVhY2hDb250ZW50RXh0ZW5zaW9uKFsmbG9hZFBhcmFtZXRlcnNdKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb24mIGNvbnRlbnRF
eHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50UnVsZUxp
c3RzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxjb25zdCBX
ZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdCY+KGNvbnRlbnRFeHRlbnNpb24uY29tcGlsZWRFeHRl
bnNpb24oKSkuZGF0YSgpKSk7Ci0gICAgICAgICAgICB9LCAqZG9jdW1lbnRMb2FkZXIpOwotICAg
ICAgICB9Ci0gICAgfQorICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHBhc3NpbmcgdXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciwgd2Ugc2hvdWxkIGp1c3QgcGFzcyB3ZWJQYWdlSWQgdG8g
TmV0d29ya1Byb2Nlc3MuCisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVy
Q2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7
CisgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFt
ZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CisgICAgV2ViUGFnZSogd2ViUGFn
ZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CisgICAgaWYgKHdlYlBh
Z2UpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgPSB3ZWJQYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCk7CiAjZW5kaWYK
IAogICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5jcHAKaW5kZXggMjIzNWE4ZGYwNGQxYzRiY2E2ZDMwZWY1MzAwMzI5NWQxYWUwNTk4YS4uYjll
NTg1ODM1ZmUzMDhhODUwYTNkODUyN2Q4YWUwYjIzYzBmZjM3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyKj4mIHVzZXJDb250ZW50Q29udHJvbGxlcnMoKQorc3RhdGlj
IEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyKj4mIHVzZXJDb250ZW50Q29udHJvbGxlcnMoKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPHVpbnQ2NF90LCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIqPj4g
dXNlckNvbnRlbnRDb250cm9sbGVyczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIqPj4gdXNlckNvbnRlbnRDb250cm9sbGVyczsKIAogICAgIHJldHVybiB1c2VyQ29udGVudENv
bnRyb2xsZXJzOwogfQpAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgV29ybGRNYXAmIHdvcmxkTWFw
KCkKICAgICByZXR1cm4gbWFwOwogfQogCi1SZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIp
CitSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OmdldE9yQ3JlYXRlKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKICAgICBhdXRvJiB1c2VyQ29udGVudENvbnRyb2xsZXJQdHIgPSB1c2VyQ29udGVudENvbnRy
b2xsZXJzKCkuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBp
ZiAodXNlckNvbnRlbnRDb250cm9sbGVyUHRyKQpAQCAtNzgsMTcgKzc4LDE3IEBAIFJlZjxXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVh
dGUodWludDY0X3QgaWRlCiAgICAgcmV0dXJuIHVzZXJDb250ZW50Q29udHJvbGxlci5yZWxlYXNl
Tm9uTnVsbCgpOwogfQogCi1XZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQorV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAq
dGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKIH0KIAogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKCkKIHsKICAgICBBU1NFUlQodXNlckNv
bnRlbnRDb250cm9sbGVycygpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOwogCi0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lk
ZW50aWZpZXIudG9VSW50NjQoKSk7CiAKICAgICB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkucmVt
b3ZlKG1faWRlbnRpZmllcik7CiB9CkBAIC0yNDIsNyArMjQyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT5w
YWdlSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVu
Y2UodmFsdWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CisgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3
ZWJQYWdlLT5wYWdlSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UodmFsdWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKICAgICB9CiAKICAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
PiBtX2NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5kZXggOWI3MmQ5
NmM4YmJiNzc5YzFiZWI5YjFmMGFhYzIxMmMzYzllNDU1My4uZjU4ZDIxZThjZGZjNmJlZDljMDQ5
ZGQyZGMzMGFmOTQ5ZDA4YWJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJEYXRhVHlwZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50UHJvdmlk
ZXIuaD4KQEAgLTQ5LDEwICs1MCwxMCBAQCBjbGFzcyBXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yUHJveHk7CiAKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlciBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpVc2VyQ29udGVudFByb3ZpZGVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxl
cj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI+IGdldE9yQ3JlYXRlKFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfldlYlVzZXJDb250ZW50Q29udHJvbGxlcigpOwogCi0g
ICAgdWludDY0X3QgaWRlbnRpZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfSAKKyAgICBV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KIAogICAgIHZvaWQgYWRkVXNlclNjcmlwdChJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkJiwgV2ViQ29yZTo6VXNlclNjcmlwdCYmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3Jp
cHRXaXRoVVJMKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBjb25zdCBXZWJDb3JlOjpVUkwm
KTsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOworICAg
IGV4cGxpY2l0IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcihVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyKTsKIAogICAgIC8vIFdlYkNvcmU6OlVzZXJDb250ZW50UHJvdmlkZXIKICAgICB2
b2lkIGZvckVhY2hVc2VyU2NyaXB0KEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6RE9NV3JhcHBlcldv
cmxkJiwgY29uc3QgV2ViQ29yZTo6VXNlclNjcmlwdCYpPiYmKSBjb25zdCBmaW5hbDsKQEAgLTEx
MSw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVySW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcklkZW50aWZpZXIpOwogI2VuZGlmCiAKLSAgICB1aW50NjRfdCBt
X2lkZW50aWZpZXI7CisgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ+LCBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4+
IFdvcmxkVG9Vc2VyU2NyaXB0TWFwOwogICAgIFdvcmxkVG9Vc2VyU2NyaXB0TWFwIG1fdXNlclNj
cmlwdHM7CkBAIC0xMjYsNyArMTI3LDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQogICAgIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQgbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZDsKICNlbmRpZgotCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCA1Y2IwOTEyOWE1ZjY5MGJkNmNiNzYyZjBhMWFmZGM5ZDg2NTUyOWU1Li4z
OGU5MTBhYjA1M2M2NGViYzJlOGQzNjZlY2VjOGFiM2I1ODQ4NjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVk
ZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJXZWJV
UkxTY2hlbWVIYW5kbGVyLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
aWN0aW9uYXJ5UG9wdXBJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVz
Lmg+CkBAIC0xMDY5LDYgKzEwNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBvcGVuR0xEaXNwbGF5
TWFza0NoYW5nZWQodWludDMyX3QgZGlzcGxheU1hc2spOwogI2VuZGlmCiAKKyAgICBVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+aWRlbnRpZmllcigpOyB9
CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337113</attachid>
            <date>2018-04-03 14:08:12 -0700</date>
            <delta_ts>2018-04-03 18:32:03 -0700</delta_ts>
            <desc>Build and crash fix</desc>
            <filename>bug-184205-20180403140811.patch</filename>
            <type>text/plain</type>
            <size>78835</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkMWUzNzhmZWQ0OWRlM2E3
M2NiYjFjMTNkNWRiYjU1OGM5NWQyZmEuLmE1ZDlhYWY1MWY0ZTg1OTVhYzQ0ODg3NTYwMjJkY2Ux
YWU3Y2IwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDE4LTA0LTAzICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9jZXNz
IGdldCBDb250ZW50QmxvY2tlciBpbmZvcm1hdGlvbiBmcm9tIFVJUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MjA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9j
ZXNzIGdldCBjb250ZW50IGJsb2NrZXJzIGZyb20gVUlQcm9jZXNzIGRpcmVjdGx5LgorICAgICAg
ICBCZWZvcmUgdGhhdCBwYXRjaCwgV2ViUHJvY2VzcyBzZW50IGNvbnRlbnQgYmxvY2tlcnMgdG8g
TmV0d29ya1Byb2Nlc3MgZm9yIGVhY2ggUGluZ0xvYWQuCisgICAgICAgIEluc3RlYWQsIFdlYlBy
b2Nlc3Mgc2VuZHMgdGhlIGNvbnRlbnQgYmxvY2tlciBpZGVudGlmaWVyIGZvciBlYWNoIFBpbmdM
b2FkIGFuZCBOZXR3b3JrUHJvY2VzcyBmZXRjaGVzIHRoZSBjb250ZW50IGJsb2NrZXIgb25jZS4K
KworICAgICAgICBUaGlzIGlzIGJvdGggbW9yZSBlZmZpY2llbnQgdGhhbiBwYXNzaW5nIHRoZW0g
Zm9yIGVhY2ggUGluZ0xvYWQgYW5kIHNhZmVyIGluIHRoZSBzZW5zZQorICAgICAgICB0aGF0IGEg
Y29tcHJvbWlzZWQgV2ViUHJvY2VzcyB3aWxsIG5vdCBiZSBhYmxlIHRvIGJ5cGFzcyBhbnkgb2Yg
dGhlc2UuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBnZXQg
dGhlIGNvbnRlbnQgYmxvY2tlciBpZGVudGlmaWVyIGRpcmVjdGx5IGZyb20gdGhlIFdlYlBhZ2VJ
RCBhdHRhY2hlZCB0byB0aGUgcmVxdWVzdC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IGJlYWNvbitjb250ZW50IGJsb2NrZXIgdGVzdHMuCisKKyAgICAgICAgRGlkIHNvbWUgcmVmYWN0
b3JpbmcgdG8gYWRkIGEgdHlwZWQgY29udGVudCBibG9ja2VyIGlkZW50aWZpZXIuCisgICAgICAg
IE9uY2UgTmV0d29ya1Byb2Nlc3MgZmV0Y2hlcyBhIGdpdmVuIGNvbnRlbnQgYmxvY2tlciwgdGhl
IGNvbnRlbnQgYmxvY2tlciB3aWxsIHNlbmQgYW55IG1vZGlmaWNhdGlvbiB0byBOZXR3b3JrUHJv
Y2Vzcy4KKyAgICAgICAgSW50cm9kdWNlZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciB0
byBoYW5kbGUgdGhlIGNvbnRlbnQgYmxvY2tlcnMgaW4gTmV0d29ya1Byb2Nlc3MuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250aW51ZUNoZWNraW5nUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxl
c0ZvckxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OnNldENvbnRlbnRFeHRlbnNp
b25Db250cm9sbGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6Om5ldHdvcmtVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxl
TGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OnJlbW92ZUNvbnRl
bnRSdWxlTGlzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5h
Z2VyOjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OnJlbW92ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW46IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VHcm91cERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VHcm91cERhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6fk5l
dHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojpjb250ZW50RXh0ZW5zaW9uUnVsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpnZXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRVc2VyQ29udGVudFdvcmxkVXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNj
cmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVBbGxVc2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENv
bnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OmFkZE5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZU5ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNvbnRlbnRFeHRl
bnNpb25SdWxlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9h
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBjb25zdCk6CisKIDIwMTgtMDQtMDIgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtFbmNo
YW50XSBDbGVhbiB1cCBUZXh0Q2hlY2tlckVuY2hhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDYw
ZTkyYjdlNzM5MDM0ZDlhNzhkMjM1MWIyOTgyNzZkNGUwNTFkMTYuLmE1YjlmMWRlOWJiYWI2NzNm
MzMyNjQ0ZTJlZGIxYTc3NzY3YzM4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTA3LDYgKzEw
Nyw3IEBAIHNldChXZWJLaXRfU09VUkNFUwogCiAgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAK
ICAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAogICAgIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtNjE5LDYgKzYyMCw3IEBAIHNldChXZWJLaXRfTUVT
U0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIubWVzc2FnZXMuaW4KIAogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbgogICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0ubWVz
c2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5ZDY2YzBkZjZlYzc2NDJm
NGUwMGJjOTMxZjEyZTE3YzYxZWFiZjRjLi5kYTBhNTJkYWUwYWFhY2IzMjA5NTM0ODViOTE5NDg4
MDA4NzZhNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMTUsNiArMTE1LDcg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgTmV0d29ya1JUQ1NvY2tldCBcCiAgICAgTmV0
d29ya1Jlc291cmNlTG9hZGVyIFwKICAgICBOZXR3b3JrU29ja2V0U3RyZWFtIFwKKyAgICBOZXR3
b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciBcCiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5IFwK
ICAgICBQbHVnaW5Qcm9jZXNzIFwKICAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1MjNlMDMzZjdkZmM4MmJmN2U3ZmVm
YWQ0MTY1ZDM5YzhjYTEyZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEw
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Qu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFn
ZXIoKSA9IGRlZmF1bHQ7CitOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6fk5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyKCkKK3sKKyAgICBhdXRvIHBlbmRpbmdDYWxsYmFja3MgPSBX
VEZNb3ZlKG1fcGVuZGluZ0NhbGxiYWNrcyk7CisgICAgaWYgKHBlbmRpbmdDYWxsYmFja3MuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kIGJhY2tlbmQ7CisgICAgZm9yIChhdXRvJiBjYWxs
YmFja3MgOiBwZW5kaW5nQ2FsbGJhY2tzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAgICAgICAgICBjYWxsYmFjayhiYWNrZW5kKTsKKyAg
ICB9Cit9CisKK3ZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEJhY2tlbmRDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Nv
bnRlbnRFeHRlbnNpb25CYWNrZW5kcy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRv
ciAhPSBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5lbmQoKSkgeworICAgICAgICBjYWxsYmFj
aygqaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3BlbmRp
bmdDYWxsYmFja3MuZW5zdXJlKGlkZW50aWZpZXIsIFtdIHsKKyAgICAgICAgcmV0dXJuIFZlY3Rv
cjxCYWNrZW5kQ2FsbGJhY2s+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
Q29udGVudEV4dGVuc2lvblJ1bGVzIHsgaWRlbnRpZmllciB9LCAwKTsKK30KKwordm9pZCBOZXR3
b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiYgY29udGVudFJ1bGVMaXN0
cykKK3sKKyAgICBhdXRvJiBiYWNrZW5kID0gKm1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVu
c3VyZShpZGVudGlmaWVyLCBbXSB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7Cisg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZW50UnVs
ZUxpc3QgOiBjb250ZW50UnVsZUxpc3RzKSB7CisgICAgICAgIFdlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YSBjb250ZW50UnVsZUxpc3REYXRhID0gY29udGVudFJ1bGVMaXN0LnNlY29uZDsK
KyAgICAgICAgYXV0byBjb21waWxlZENvbnRlbnRSdWxlTGlzdCA9IFdlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0OjpjcmVhdGUoV1RGTW92ZShjb250ZW50UnVsZUxpc3REYXRhKSk7CisgICAgICAg
IGJhY2tlbmQuYWRkQ29udGVudEV4dGVuc2lvbihjb250ZW50UnVsZUxpc3QuZmlyc3QsIFdURk1v
dmUoY29tcGlsZWRDb250ZW50UnVsZUxpc3QpKTsKKyAgICB9CisKKyAgICBhdXRvIHBlbmRpbmdD
YWxsYmFja3MgPSBtX3BlbmRpbmdDYWxsYmFja3MudGFrZShpZGVudGlmaWVyKTsKKyAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogcGVuZGluZ0NhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soYmFj
a2VuZCk7CisKK30KKwordm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6cmVtb3Zl
Q29udGVudFJ1bGVMaXN0KFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NvbnRlbnRF
eHRlbnNpb25CYWNrZW5kcy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBt
X2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aXRlcmF0b3ItPnZhbHVlLT5yZW1vdmVDb250ZW50RXh0ZW5zaW9uKG5hbWUpOworfQorCit2b2lk
IE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3Rz
KFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZmluZChpZGVudGlmaWVyKTsK
KyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9yLT52YWx1ZS0+cmVtb3ZlQWxsQ29udGVudEV4
dGVuc2lvbnMoKTsKK30KKwordm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6cmVt
b3ZlKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBt
X2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjc2Y2UyNTlhYTczNjRkYzBlNzYx
MmUwZGQzMzk2OWE2NmUwNzg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCisKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJD
b250ZW50UHJvdmlkZXIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOwor
Y2xhc3MgRGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBOZXR3b3JrQ29udGVudFJ1bGVM
aXN0TWFuYWdlcigpOworICAgIH5OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKKworICAgIHVzaW5nIEJhY2tlbmRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCYpPjsK
KyAgICB2b2lkIGNvbnRlbnRFeHRlbnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyLCBCYWNrZW5kQ2FsbGJhY2smJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZGRD
b250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiYp
OworICAgIHZvaWQgcmVtb3ZlQ29udGVudFJ1bGVMaXN0KFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCByZW1vdmVBbGxDb250ZW50
UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOworICAgIHZvaWQgcmVt
b3ZlKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOworCisgICAgSGFzaE1hcDxVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4+IG1fY29udGVudEV4dGVu
c2lvbkJhY2tlbmRzOworICAgIEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciwgVmVjdG9yPEJhY2tlbmRDYWxsYmFjaz4+IG1fcGVuZGluZ0NhbGxiYWNrczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFlMDE2NDE2ZjRmMzQ2MTY2NmVmMjcxYjZmNTk0NWFhMjFhOGIwNmQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKK21l
c3NhZ2VzIC0+IE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyIHsKKyAgICBSZW1vdmUoV2Vi
S2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgQWRk
Q29udGVudFJ1bGVMaXN0cyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYktpdDo6V2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhPj4gY29udGVudEZpbHRlcnMpCisgICAgUmVtb3ZlQ29udGVudFJ1
bGVMaXN0KFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBTdHJpbmcgbmFtZSkKKyAgICBSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKFdlYktpdDo6VXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKQorfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNw
cAppbmRleCBhMTQ1ZTgxM2ZmNGFhZDNmMWY3NWJhYmVmMmRhOThjYjI2YzZkNDcyLi5lNGU3MTNm
NzIxYjNlMDJkZjFhM2FlNjYzNzQ2NzhlMjMwMDdmZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCkBAIC0yOCw3ICsyOCw5
IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdC5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaD4KQEAgLTk1LDEyICs5NywyMCBA
QCBOZXR3b3JrTG9hZENoZWNrZXI6OlJlcXVlc3RPckVycm9yIE5ldHdvcmtMb2FkQ2hlY2tlcjo6
cmV0dXJuRXJyb3IoU3RyaW5nJiYgZXJybwogdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNr
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBpZiAocHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQocmVxdWVzdCkuYmxvY2tlZExvYWQpIHsKLSAg
ICAgICAgaGFuZGxlcihyZXR1cm5FcnJvcihBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYnkgY29udGVu
dCBleHRlbnNpb24iKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIHByb2Nlc3NDb250
ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBoYW5kbGVy
ID0gV1RGTW92ZShoYW5kbGVyKV0oYXV0byYmIHJlcXVlc3QsIGF1dG8gc3RhdHVzKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKHN0YXR1cy5ibG9ja2VkTG9hZCkgeworICAgICAgICAgICAgaGFuZGxl
cih0aGlzLT5yZXR1cm5FcnJvcihBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYnkgY29udGVudCBleHRl
bnNpb24iKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMt
PmNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoaGFuZGxl
cikpOworICAgIH0pOworI2Vsc2UKKyAgICBjb250aW51ZUNoZWNraW5nUmVxdWVzdChXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKICNlbmRpZgorfQogCit2b2lkIE5ldHdvcmtM
b2FkQ2hlY2tlcjo6Y29udGludWVDaGVja2luZ1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgVmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVyKQorewogICAgIGlmIChhdXRvKiBjb250
ZW50U2VjdXJpdHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgewogICAg
ICAgICBpZiAoaXNSZWRpcmVjdGVkKCkpIHsKICAgICAgICAgICAgIFVSTCB1cmwgPSByZXF1ZXN0
LnVybCgpOwpAQCAtMjI5LDIxICsyMzksMTggQEAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBOZXR3
b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0CiB9CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZCYgTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQoKQordm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVs
ZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpC
bG9ja2VkU3RhdHVzJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFtX2NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCkgewotICAgICAgICBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4o
KTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9jb250ZW50UnVsZUxpc3RzKQotICAgICAg
ICAgICAgbV9jb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQtPmFkZENvbnRlbnRFeHRlbnNpb24ocGFp
ci5maXJzdCwgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKHBhaXIu
c2Vjb25kKSkpOworICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSB7
CisgICAgICAgIENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzIHN0YXR1czsKKyAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0KSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICByZXR1cm4gKm1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kOwotfQotCi1Db250
ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBOZXR3b3JrTG9hZENoZWNrZXI6OnByb2Nlc3ND
b250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsK
LSAgICBhdXRvIHN0YXR1cyA9IGNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCgpLnByb2Nlc3NDb250
ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZChyZXF1ZXN0LnVybCgpLCBtX21haW5Eb2N1bWVu
dFVSTCk7Ci0gICAgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KHN0YXR1cywgbnVsbHB0ciwg
cmVxdWVzdCk7Ci0gICAgcmV0dXJuIHN0YXR1czsKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xl
dG9uKCkubmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKS5jb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQoKm1fdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGJhY2tlbmQpIG11dGFibGUgeworICAgICAg
ICBhdXRvIHN0YXR1cyA9IGJhY2tlbmQucHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvclBp
bmdMb2FkKHJlcXVlc3QudXJsKCksIG1fbWFpbkRvY3VtZW50VVJMKTsKKyAgICAgICAgYXBwbHlC
bG9ja2VkU3RhdHVzVG9SZXF1ZXN0KHN0YXR1cywgbnVsbHB0ciwgcmVxdWVzdCk7CisgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCksIHN0YXR1cyk7CisgICAgfSk7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggZWNmYjVlYjViY2E3N2MyN2Ux
ZDRhY2Q4MmI4YjljOGEyOWVkNDQyMi4uMDMyZDVmNDM4NzNkY2VlYmNjZWY0MmYzNTU5ZmM1OWUy
YzVmNjRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5oCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CkBAIC00MCw5ICs0MCwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOwogCi1jbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIg
eworY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0xv
YWRDaGVja2VyPiB7CiBwdWJsaWM6Ci0gICAgTmV0d29ya0xvYWRDaGVja2VyKFdlYkNvcmU6OkZl
dGNoT3B0aW9uczo6TW9kZSwgYm9vbCBzaG91bGRGb2xsb3dSZWRpcmVjdHMsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCYmLCBXZWJDb3JlOjpVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
KTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4gY3JlYXRlKFdlYkNvcmU6OkZl
dGNoT3B0aW9uczo6TW9kZSBtb2RlLCBib29sIHNob3VsZEZvbGxvd1JlZGlyZWN0cywgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmIG9yaWdpbmFsSGVh
ZGVycywgV2ViQ29yZTo6VVJMJiYgdXJsLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
JiYgc291cmNlT3JpZ2luKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0
d29ya0xvYWRDaGVja2VyIHsgbW9kZSwgc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgc2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdpbmFsSGVhZGVycyksIFdURk1v
dmUodXJsKSwgV1RGTW92ZShzb3VyY2VPcmlnaW4pIH0pOworICAgIH0KICAgICB+TmV0d29ya0xv
YWRDaGVja2VyKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0T3JFcnJvciA9IEV4cGVjdGVkPFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj47CkBAIC01MiwxMCAr
NTUsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDU1BSZXNwb25zZUhlYWRlcnMoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiYgaGVhZGVycykgeyBtX2Nz
cFJlc3BvbnNlSGVhZGVycyA9IFdURk1vdmUoaGVhZGVycyk7IH0KICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQotICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvblJ1bGVMaXN0cyhXZWJD
b3JlOjpVUkwmJiBtYWluRG9jdW1lbnRVUkwsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiYmIGNvbnRlbnRSdWxlTGlzdHMpCisgICAgdm9p
ZCBzZXRDb250ZW50RXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpVUkwmJiBtYWluRG9jdW1l
bnRVUkwsIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gaWRl
bnRpZmllcikKICAgICB7CiAgICAgICAgIG1fbWFpbkRvY3VtZW50VVJMID0gV1RGTW92ZShtYWlu
RG9jdW1lbnRVUkwpOwotICAgICAgICBtX2NvbnRlbnRSdWxlTGlzdHMgPSBXVEZNb3ZlKGNvbnRl
bnRSdWxlTGlzdHMpOworICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
PSBpZGVudGlmaWVyOwogICAgIH0KICNlbmRpZgogCkBAIC02MywxMiArNjYsMTYgQEAgcHVibGlj
OgogICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsgfQogCiBw
cml2YXRlOgorICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1v
ZGUsIGJvb2wgc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgV2ViQ29y
ZTo6VVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CisKICAgICBXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0
OwogICAgIGJvb2wgaXNDaGVja2luZygpIGNvbnN0IHsgcmV0dXJuICEhbV9jb3JzUHJlZmxpZ2h0
Q2hlY2tlcjsgfQogICAgIGJvb2wgaXNSZWRpcmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZWRp
cmVjdENvdW50OyB9CiAKICAgICB2b2lkIGNoZWNrUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CiAKKyAgICB2b2lkIGNvbnRpbnVlQ2hlY2tp
bmdSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYm
KTsKKwogICAgIGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJikg
Y29uc3Q7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsK
QEAgLTc3LDggKzg0LDcgQEAgcHJpdmF0ZToKICAgICBSZXF1ZXN0T3JFcnJvciByZXR1cm5FcnJv
cihTdHJpbmcmJiBlcnJvcik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIGNv
bnRlbnRFeHRlbnNpb25zQmFja2VuZCgpOwotICAgIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpCbG9ja2VkU3RhdHVzIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25S
dWxlc0ZvckxvYWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzJik+JiYpOwogI2VuZGlmCiAKICAgICBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnM6Ok1vZGUgbV9tb2RlOwpAQCAtOTIsMTYgKzk4LDEzIEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnM+IG1fY3NwUmVzcG9uc2VIZWFkZXJzOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAgICAgV2ViQ29yZTo6VVJMIG1fbWFpbkRvY3VtZW50VVJMOwotICAgIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBtX2NvbnRlbnRS
dWxlTGlzdHM7CisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI+IG1fY29yc1ByZWZsaWdo
dENoZWNrZXI7CiAgICAgYm9vbCBtX2lzU2FtZU9yaWdpblJlcXVlc3QgeyB0cnVlIH07CiAgICAg
Ym9vbCBtX2lzU2ltcGxlUmVxdWVzdCB7IHRydWUgfTsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9s
aWN5OwotI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+IG1f
Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kOwotI2VuZGlmCiAgICAgc2l6ZV90IG1fcmVkaXJlY3RD
b3VudCB7IDAgfTsKICAgICBXZWJDb3JlOjpVUkwgbV9wcmV2aW91c1VSTDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDFjNTU4
OGU3OTQzNDk4ZmE0MTk3NDRhODI5ZThiNzQ0NGYzODMwN2UuLjc5NzdkYTEzMjA1NjUwNWI4ZDAz
N2RjY2E0ZDEzNjhjODNlYzExZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCkBAIC0xNzEsNiArMTcy
LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBtX05ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZDhjZWE2OWRlODc2Mjk5MmFiMDI5NzRl
NDVhNzg3MTg0NDBkNzVjZC4uY2U0MTJiNDU5Mjg2YjM2OWRmMTJjZDA4ZjMzMzg1YWQ4YzlkZGRl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRv
d25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgorI2luY2x1
ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9E
aWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CkBAIC0xNTcsNiArMTU4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wpOwog
ICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCkg
Y29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIE5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0
dXJuIG1fTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIE5ldHdvcmtQcm9jZXNzKCk7CiAgICAgfk5ldHdvcmtQcm9jZXNzKCk7CkBAIC0yOTEs
NiArMjk2LDEwIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYlNRTGl0ZURh
dGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICNlbmRpZgorCisjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlciBtX05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggMDE3MmMz
YjQxOWI4MWYxNWQzZjc4OWFkOGU4ZDZmM2FmOTg5MWQ1OC4uNDQwNzdkM2NlNWVmMWRkMGI1OTQw
NGU1ZjllNmQ3NjcxNzAzMjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTkz
LDcgKzkzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7Ci0gICAgZW5jb2RlciA8PCBjb250
ZW50UnVsZUxpc3RzOworICAgIGVuY29kZXIgPDwgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllcjsKICNlbmRpZgogfQogCkBAIC0xODQsMTEgKzE4NCwxMSBAQCBib29sIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3Jr
UmVzb3VyYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVSTCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6
cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+PiBjb250ZW50UnVs
ZUxpc3RzOwotICAgIGRlY29kZXIgPj4gY29udGVudFJ1bGVMaXN0czsKLSAgICBpZiAoIWNvbnRl
bnRSdWxlTGlzdHMpCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXI+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBpZiAo
IXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXN1bHQuY29udGVudFJ1bGVMaXN0cyA9IFdURk1vdmUoKmNvbnRlbnRSdWxlTGlzdHMp
OworICAgIHJlc3VsdC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gKnVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDc3ZGU4NTU1M2VkZjRjOThjYmE3YzQ2NzNmYjZlM2I3
MTBkNGUzYmEuLjJjYzMzYWNlOWJmMDA5MjMxOWFiYmU1NmNhZmJhMGI4MmQ1NTczMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdv
cmtMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNpbmNs
dWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuaCIKKyNpbmNsdWRlICJVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0
aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAg
ICAgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTDsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gY29udGVudFJ1bGVMaXN0czsK
KyAgICBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggYmM0ODk0MzY4OGQ1MDY3MzkxMWYxYWFk
ZTBhOGM3NzM3NmQyNGFkNS4uMjVmOTYzYTIwMWNhMjFiOWRhYTY3MzkxZWRjZmI3OGMzNzEwYzlh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTQyLDEz
ICs0MiwxMyBAQCBQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzLCBIVFRQSGVhZGVyTWFwJiYgbwogICAgIDogbV9wYXJhbWV0ZXJzKFdU
Rk1vdmUocGFyYW1ldGVycykpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZQaW5nTG9hZDo6
dGltZW91dFRpbWVyRmlyZWQpCi0gICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVl
UmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4obV9wYXJhbWV0ZXJzLm1vZGUsIG1fcGFyYW1ldGVycy5z
aG91bGRGb2xsb3dSZWRpcmVjdHMsIG1fcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW5hbFJlcXVlc3RIZWFkZXJz
KSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJj
ZU9yaWdpbi5jb3B5UmVmKCkpKQorICAgICwgbV9uZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya0xv
YWRDaGVja2VyOjpjcmVhdGUobV9wYXJhbWV0ZXJzLm1vZGUsIG1fcGFyYW1ldGVycy5zaG91bGRG
b2xsb3dSZWRpcmVjdHMsIG1fcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbV9w
YXJhbWV0ZXJzLnNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJM
IHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdp
bi5jb3B5UmVmKCkpKQogewogCiAgICAgaWYgKG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRl
cnMpCiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDU1BSZXNwb25zZUhlYWRlcnMo
V1RGTW92ZShtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkpKTsKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRD
b250ZW50RXh0ZW5zaW9uUnVsZUxpc3RzKFdURk1vdmUobV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVu
dFVSTCksIFdURk1vdmUobV9wYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMpKTsKKyAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlci0+c2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoV1RGTW92ZSht
X3BhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMKSwgbV9wYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICAvLyBJZiB0aGUgc2VydmVyIG5ldmVy
IHJlc3BvbmRzLCB0aGlzIG9iamVjdCB3aWxsIGhhbmcgYXJvdW5kIGZvcmV2ZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggNzRhNjk4NTc3NmE5ZmI1YTdmNTkx
NWJkZTg0NjU0NWMwM2ZhYmM4MC4uYTFlZjZlNzMxN2ZlNTVmNmM1ZGNmNTNhYzc1NTNhOWNiMDdj
OTZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNzAsNyAr
NzAsNyBAQCBwcml2YXRlOgogICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
PiBtX2NvbXBsZXRpb25IYW5kbGVyOwogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+IG1fdGFz
azsKICAgICBXZWJDb3JlOjpUaW1lciBtX3RpbWVvdXRUaW1lcjsKLSAgICBVbmlxdWVSZWY8TmV0
d29ya0xvYWRDaGVja2VyPiBtX25ldHdvcmtMb2FkQ2hlY2tlcjsKKyAgICBSZWY8TmV0d29ya0xv
YWRDaGVja2VyPiBtX25ldHdvcmtMb2FkQ2hlY2tlcjsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdD4gbV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjdmMDVjN2IzODE1YmY1
MWM2OTM0NGUxYTY2ZGU1N2YwMDAwZTc1ZC4uYjdhNGM5NjVjNzkwMTE1MDliYjU1MjU3NmZkNTA1
MGM2NjQ1MzhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0xODUsNiArMTg1LDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKHJl
Y2VpdmVyKToKICAgICAgICAgICAgIHR5cGVzX2J5X25hbWVzcGFjZVsnSVBDJ10udXBkYXRlKFso
J2NsYXNzJywgJ0Nvbm5lY3Rpb24nKV0pCiAKICAgICBub19mb3J3YXJkX2RlY2xhcmF0aW9uX3R5
cGVzID0gZnJvemVuc2V0KFsKKyAgICAgICAgJ1N0cmluZycsCiAgICAgICAgICdXZWJDb3JlOjpE
b2N1bWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXInLApA
QCAtMTkyLDcgKzE5Myw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhy
ZWNlaXZlcik6CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXInLAot
ICAgICAgICAnU3RyaW5nJywKKyAgICAgICAgJ1dlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcicsCiAgICAgXSkKIAogICAgIGZvciBwYXJhbWV0ZXIgaW4gcmVjZWl2ZXIuaXRl
cnBhcmFtZXRlcnMoKToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjNmYjQzZjk0MDEwODdmODBj
MGJjZjc0MGI2ZWI5ZTQ4MGEwNGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBl
PjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCA3MDg5ZGE4YjJhODZkZmRlZjg3NWI5ODgwYjZmNGZhYjAzYTcyZGE5
Li44NjcxNTliNjhmNDAyZjI5YWVkZGI3ZjMyOWU3ODAwOWZmMTlhNTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTc5
LDggKzE3OSwxMyBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5oaWdoZXN0VXNl
ZEJhY2tGb3J3YXJkSXRlbUlEKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQpKQor
CisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcjsKKyAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy51c2Vy
Q29udGVudENvbnRyb2xsZXJJRCA9ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwor
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpc2l0ZWRMaW5rVGFibGVJRCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLndlYnNpdGVEYXRhU3RvcmVJRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNmJkMTk2MWYzYzRkNDUwMDRkZGRm
ZDYyMDFjNjgyN2Q5N2U5MDQwMi4uYmFlYmFmNGQ0MTAwODk2NWE1NmY0YzFjM2YyMWFjZTg3M2Vh
NDMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtOTgsNyArOTgsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwogICAgIHVpbnQ2NF90IGhpZ2hlc3RV
c2VkQmFja0ZvcndhcmRJdGVtSUQ7CiAKLSAgICB1aW50NjRfdCB1c2VyQ29udGVudENvbnRyb2xs
ZXJJRDsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29u
dHJvbGxlcklEOwogICAgIHVpbnQ2NF90IHZpc2l0ZWRMaW5rVGFibGVJRDsKICAgICB1aW50NjRf
dCB3ZWJzaXRlRGF0YVN0b3JlSUQ7CiAgICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCmluZGV4IDI3
NTAwN2FmNzE1YjI1ZmE3YjJkNmQ5ZDcwNWZlNzUzMjk1OWU1NTEuLmFiZGE3ZDVlNWM2NGUwMTU0
YWQzNTY5OTY3YWU4NzZmNmY2OWRjMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VHcm91cERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VH
cm91cERhdGEuY3BwCkBAIC01MywxMCArNTMsMTEgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlR3Jv
dXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHZpc2libGVUb0hpc3RvcnlDbGllbnQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIHVpbnQ2NF90IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSh1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSkKKyAgICBzdGQ6
Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyOworICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyB7IGlkLCBwYWdlR3JvdXBJ
RCwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIHZpc2libGVUb0hpc3RvcnlDbGllbnQsIHVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgfSB9OworICAgIHJldHVybiB7IHsgaWQsIHBhZ2VH
cm91cElELCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSwgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCwg
KnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgfSB9OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERh
dGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaAppbmRleCAyYzYx
ZTU5N2I2NTZjZDhiODI3NmQyMGM0NmU4NDFjOTlmODBiNWIwLi45MzBkOGVlOThhZWU2ZTI2NzE1
MWQxNjZkOTgwMTkyNDkyYjAzOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlR3JvdXBEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3Vw
RGF0YS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTQzLDcgKzQ0LDcgQEAgc3RydWN0IFdlYlBh
Z2VHcm91cERhdGEgewogICAgIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7CiAgICAgYm9v
bCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50OwogCi0gICAgdWludDY0X3QgdXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllcjsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDYxMzg5M2U0MzBiYmJjOWVkNzAzNGFlYjE0ZmM1OGRjNWUy
OGVmYmMuLjVjNjk0MjI0MDRiNzMwZWRlNmYyYTQ1YjEzN2RmMmYwMTliZjRhODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMjYsMTkgKzI2LDIzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogCisjaW5jbHVkZSAiQVBJQ29udGVudFJ1bGVMaXN0
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUg
IkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RP
Q09MX01BTkFHRVIpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIgogI2VuZGlmCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVBy
b2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0Lmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKQEAgLTg1LDYgKzg5LDEwIEBAIE5ldHdvcmtQcm9j
ZXNzUHJveHk6On5OZXR3b3JrUHJvY2Vzc1Byb3h5KCkKICAgICBBU1NFUlQobV9wZW5kaW5nRmV0
Y2hXZWJzaXRlRGF0YUNhbGxiYWNrcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3BlbmRpbmdE
ZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3BlbmRp
bmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3MuaXNFbXB0eSgpKTsKKyNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGZvciAoYXV0byogcHJveHkgOiBtX3dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMpCisgICAgICAgIHByb3h5LT5yZW1vdmVOZXR3b3Jr
UHJvY2VzcygqdGhpcyk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
ZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0
aW9ucykKQEAgLTU0MCw0ICs1NDgsMjggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJ
c0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIH0KIH0K
IAorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Y29udGVudEV4dGVuc2lvblJ1bGVzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogd2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Z2V0KGlkZW50aWZpZXIpKSB7
CisgICAgICAgIG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcy5hZGQod2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkpOworICAgICAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS0+YWRkTmV0d29ya1Byb2Nlc3MoKnRoaXMpOworCisgICAgICAgIGF1dG8gcnVsZXMgPSBX
VEY6Om1hcCh3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+Y29udGVudEV4dGVuc2lvblJ1
bGVzKCksIFtdKGF1dG8mJiBrZXlWYWx1ZSkgLT4gc3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3REYXRhPiB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoa2V5VmFsdWUudmFsdWUtPm5hbWUoKSwga2V5VmFsdWUudmFsdWUtPmNvbXBpbGVkUnVsZUxp
c3QoKS5kYXRhKCkpOworICAgICAgICB9KTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMgeyBpZGVudGlmaWVy
LCBydWxlcyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlk
ZW50aWZpZXIsIHsgfSB9LCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRE
ZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkmIHByb3h5KQoreworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyOjpSZW1vdmUgeyBwcm94eS5pZGVudGlmaWVyKCkgfSwgMCk7CisgICAgbV93
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzLnJlbW92ZSgmcHJveHkpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBmZmZiNDE0Zjk2NTE3OWQy
NjEwYTYxM2UyYmU2ZWUzY2QzM2UxMDJlLi5jOWRjNzkyYTliNWUwN2NjZmUxMDUyOWE3ZTE5YWU2
YWJhNDkwZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlByb2Nl
c3NMYXVuY2hlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQ
cm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtNTksNiArNjAsNyBAQCBj
bGFzcyBXZWJQcm9jZXNzUG9vbDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjsK
IGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBzdHJ1
Y3QgV2Vic2l0ZURhdGE7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgOiBwdWJsaWMgQ2hp
bGRQcm9jZXNzUHJveHksIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CkBAIC05NCw2
ICs5NiwxMCBAQCBwdWJsaWM6CiAgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgeyBy
ZXR1cm4gbV90aHJvdHRsZXI7IH0KICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2woKSB7
IHJldHVybiBtX3Byb2Nlc3NQb29sOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQorICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CiAKQEAgLTEzOSw2ICsxNDUsMTAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxT
dHJpbmc+JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICB2b2lkIGNvbnRlbnRFeHRlbnNpb25SdWxlcyhV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyNlbmRpZgorCiAgICAgLy8gUHJvY2Vz
c0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1
bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwogCkBAIC0xNjEs
NiArMTcxLDEwIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPj4gbV93cml0ZUJsb2JUb0ZpbGVQYXRoQ2FsbGJhY2tN
YXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wgd2FzR3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwOwogICAg
IEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
JiBkb21haW5zKT4+IG1fYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcDsKKworI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllczsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggNjEyNmVhNWQ4N2Q2NGFkYzJlOGQ2ZWVjMjYzODFkMGNkOGM3MjVlMi4uMTg0YzJm
ZDU0NDFmOGQ4NzA0MzZkMTViNzZhNGQyZGZmNjM3Mjg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNDcsNCArNDcsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1By
b3h5IExlZ2FjeVJlY2VpdmVyIHsKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElP
TklORykKICAgICBTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVp
bnQ2NF90IGNvbnRleHRJZCkKICAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0
b3I8U3RyaW5nPiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQorICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJLaXQ6OlVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDQyMzNjOGU1Y2ZmYzY2MjAx
MzFjZGJiODNjMDAyZGNhNTU2MzQxYmIuLjQyZmI4ZWFlM2RiMmRkZmY5MjRlMDE5ZDY3MTRiMjY4
MjQ4MmE4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAg
LTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJ
VXNlclN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIuaCIKQEAgLTQ2LDE4ICs0OCwzNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
c3RhdGljIEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkqPiYgd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcygp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqPj4gcHJveGllczsK
KyAgICByZXR1cm4gcHJveGllczsKK30KKworCitXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmdldChVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIHdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3hpZXMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisgICAgCiBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQotICAgIDog
bV91c2VyU2NyaXB0cyhBUEk6OkFycmF5OjpjcmVhdGUoKSkKKyAgICA6IG1faWRlbnRpZmllcihn
ZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllclR5
cGU+KCkpCisgICAgLCBtX3VzZXJTY3JpcHRzKEFQSTo6QXJyYXk6OmNyZWF0ZSgpKQogICAgICwg
bV91c2VyU3R5bGVTaGVldHMoQVBJOjpBcnJheTo6Y3JlYXRlKCkpCiB7CisgICAgd2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveGllcygpLmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOwogfQogCiBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KCkKIHsKLSAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KSB7Ci0gICAgICAgIHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRp
ZmllcigpKTsKKyAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkucmVtb3ZlKG1f
aWRlbnRpZmllcik7CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAg
ICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAgICAgICAgIHByb2Nlc3MtPmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSgqdGhpcyk7CiAgICAgfQorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAgICAg
ICBwcm9jZXNzLT5kaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKnRoaXMp
OworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC02NSw3ICs4Niw3IEBAIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNz
UHJveHksCiAgICAgaWYgKCFtX3Byb2Nlc3Nlcy5hZGQoJndlYlByb2Nlc3NQcm94eSkuaXNOZXdF
bnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLCAqdGhpcyk7CisgICAgd2ViUHJvY2Vzc1Byb3h5
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCksICp0aGlz
KTsKIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHkoKSk7
CiAgICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZCA6IG1fdXNlckNvbnRlbnRXb3JsZHMpCkBAIC05
NSw3ICsxMTYsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogICAgIEFTU0VSVChtX3Byb2Nl
c3Nlcy5jb250YWlucygmd2ViUHJvY2Vzc1Byb3h5KSk7CiAKICAgICBtX3Byb2Nlc3Nlcy5yZW1v
dmUoJndlYlByb2Nlc3NQcm94eSk7Ci0gICAgd2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRVc2Uo
QVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKQEAgLTEwNiw3ICsxMjcsNyBAQCB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6
VXNlckNvbnRlbnRXb3JsZAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91c2VyQ29udGVudFdvcmxk
cy5hZGQoJndvcmxkKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAg
Zm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNl
ckNvbnRlbnRXb3JsZHMoeyBzdGQ6Om1ha2VfcGFpcih3b3JsZC5pZGVudGlmaWVyKCksIHdvcmxk
Lm5hbWUoKSkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsg
c3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgfQogfQogCkBAIC0xMzAsNyArMTUxLDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVz
ZXMoQVBJOjpVc2VyQ29udGVudFcKIHsKICAgICBpZiAoc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250
ZW50V29ybGRzTWVzc2FnZSh3b3JsZCwgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpKSB7CiAgICAgICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZVVzZXJDb250ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkp
OworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIH0KIH0KIApAQCAtMTQzLDcgKzE2NCw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29y
bGRVc2VzKEhhc2hDb3VudGVkU2V0PFJlCiAgICAgfQogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3Js
ZHNUb1JlbW92ZSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29y
bGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1
c2VyU2NyaXB0KQpAQCAtMTU1LDcgKzE3Niw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQogICAg
IG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAgIGZv
ciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlw
dHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2Vy
U2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRz
KHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNj
cmlwdC51c2VyU2NyaXB0KCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogfQogCiB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6
VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKQEAgLTE2Myw3ICsxODQsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYg
dXNlclNjcmlwdAogICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclNj
cmlwdC51c2VyQ29udGVudFdvcmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJv
Y2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIo
KSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJT
Y3JpcHQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLnJl
bW92ZUFsbCgmdXNlclNjcmlwdCk7CiAKQEAgLTE3Myw3ICsxOTQsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYg
dXNlclNjcmlwdAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxs
VXNlclNjcmlwdHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3Jp
cHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVz
ZXJTY3JpcHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CiAKICAgICB1bnNpZ25lZCB1c2VyU2NyaXB0c1JlbW92ZWQgPSBtX3VzZXJTY3JpcHRzLT5y
ZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxBUEk6OlVzZXJTY3JpcHQ+KFsmXShjb25zdCBhdXRvJiB1
c2VyU2NyaXB0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclNjcmlwdC0+dXNlckNvbnRlbnRXb3Js
ZCgpID09ICZ3b3JsZDsKQEAgLTE5NCw3ICsyMTUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCiAgICAgICAgIHdvcmxkSWRlbnRp
ZmllcnMudW5jaGVja2VkQXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigpKTsK
IAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7CisgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIApAQCAtMjEw
LDcgKzIzMSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
dHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTCiAgICAgbV91c2VyU3R5bGVTaGVl
dHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU3R5bGVTaGVldCk7CiAKICAgICBmb3IgKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7
IHsgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2Vy
U3R5bGVTaGVldC51c2VyU3R5bGVTaGVldCgpIH0gfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNl
clN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVu
dGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRpZmll
cigpLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVl
dCkKQEAgLTIxOCw3ICsyMzksNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1cwogICAgIFJlZjxB
UEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQudXNlckNvbnRlbnRX
b3JsZCgpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVT
aGVldC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0
KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygp
LnJlbW92ZUFsbCgmdXNlclN0eWxlU2hlZXQpOwogCkBAIC0yMjgsNyArMjQ5LDcgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpV
c2VyU3R5bGVTaGVldCYgdXMKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUFsbFVzZXJTdHlsZVNoZWV0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewog
ICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkp
OworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgdW5zaWduZWQgdXNlclN0eWxlU2hlZXRzUmVt
b3ZlZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5yZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxBUEk6OlVz
ZXJTdHlsZVNoZWV0PihbJl0oY29uc3QgYXV0byYgdXNlclN0eWxlU2hlZXQpIHsKICAgICAgICAg
cmV0dXJuICZ1c2VyU3R5bGVTaGVldC0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3JsZDsKQEAg
LTI0OSw3ICsyNzAsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVBbGxVc2VyU3R5bGVTaGVldHMoKQogICAgICAgICB3b3JsZElkZW50aWZpZXJzLnVuY2hlY2tl
ZEFwcGVuZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2Vy
U3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
IAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKQEAgLTI3MCw3
ICsyOTEsNyBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2Ny
aXB0TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZQogICAgIG1fc2NyaXB0TWVzc2FnZUhh
bmRsZXJzLmFkZChoYW5kbGVyLmlkZW50aWZpZXIoKSwgJmhhbmRsZXIpOwogCiAgICAgZm9yIChX
ZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIo
KSwgaGFuZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIo
KSwgaGFuZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjgwLDcgKzMwMSw3IEBAIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3Qg
U3RyaW5nCiAgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuYmVnaW4o
KSwgZW5kID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBpZiAoaXQtPnZhbHVlLT5uYW1lKCkgPT0gbmFtZSAmJiAmaXQtPnZhbHVlLT51
c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkKSB7CiAgICAgICAgICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVy
KCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBpZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CiAKICAgICAgICAgICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJz
LnJlbW92ZShpdCk7CiAKQEAgLTI5Myw3ICszMTQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmlu
Zwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3Nh
Z2VIYW5kbGVycyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVycyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsK
KyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigp
IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICB1bnNpZ25lZCBudW1iZXJSZW1v
dmVkID0gMDsKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmVJZihbJl0oYXV0byYg
ZW50cnkpIHsKQEAgLTMzMCwyNCArMzUxLDMzIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmFkZENvbnRlbnRSdWxlTGlzdChBUEk6OkNvbnRlbnRSdWxlTGlzdCYgY29uCiAK
ICAgICBhdXRvIHBhaXIgPSBzdGQ6Om1ha2VfcGFpcihjb250ZW50UnVsZUxpc3QubmFtZSgpLCBj
b250ZW50UnVsZUxpc3QuY29tcGlsZWRSdWxlTGlzdCgpLmRhdGEoKSk7CiAKLSAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlz
dHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1f
cHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CisKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNz
ZXMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyOjpBZGRDb250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpLCB7IHBhaXIgfSB9
LCAwKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29u
dGVudFJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBtX2NvbnRlbnRSdWxlTGlz
dHMucmVtb3ZlKG5hbWUpOwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50UnVsZUxpc3QobmFtZSksIGlkZW50aWZpZXIoKSk7
CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1
bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBmb3IgKGF1dG8q
IHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVDb250ZW50UnVsZUxp
c3QgeyBpZGVudGlmaWVyKCksIG5hbWUgfSwgMCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogewogICAgIG1fY29u
dGVudFJ1bGVMaXN0cy5jbGVhcigpOwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nl
c3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlkZW50aWZp
ZXIoKSk7CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxs
Q29udGVudFJ1bGVMaXN0cygpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBmb3Ig
KGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVBbGxDb250
ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpIH0sIDApOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDIzMGY2MjNkOThlNDc4Mjk1MDExMGQ5
NDlmNTI1NjU2MjAwZTNiODQuLjMxNjlkZDljYzk0NzE0YzMxZmEyNTRlMzg4MTY3NTUwYmUxZmU4
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjcsMTEgKzI3
LDExIEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC01NCwy
MCArNTQsMjMgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2NsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CiBjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwog
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiAKLWNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6VXNlckNvbnRlbnRDb250cm9sbGVyPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHVibGljIElkZW50aWZpZWQ8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHsKK2NsYXNz
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRlbnRDb250cm9sbGVyPiwgcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eT4gY3JlYXRlKCkKICAgICB7IAogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSk7Ci0gICAgfSAKLSAgICBleHBsaWNp
dCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpOworICAgIH0KKyAgICBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eSgpOwogICAgIH5XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSgpOwogCisgICAgc3RhdGljIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiBnZXQoVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CisKICAgICB2b2lkIGFkZFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgcmVt
b3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKIApAQCAtOTEsMTEgKzk0LDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVu
dFdvcmxkJik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIHZvaWQgYWRk
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHkpIHsgbV9uZXR3b3JrUHJv
Y2Vzc2VzLmFkZCgmcHJveHkpOyB9CisgICAgdm9pZCByZW1vdmVOZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSkgeyBtX25ldHdvcmtQcm9jZXNzZXMucmVtb3ZlKCZwcm94
eSk7IH0KKwogICAgIHZvaWQgYWRkQ29udGVudFJ1bGVMaXN0KEFQSTo6Q29udGVudFJ1bGVMaXN0
Jik7CiAgICAgdm9pZCByZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCByZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCk7CisgICAgY29uc3QgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4+JiBjb250ZW50RXh0ZW5zaW9uUnVsZXMo
KSB7IHJldHVybiBtX2NvbnRlbnRSdWxlTGlzdHM7IH0KICNlbmRpZgogCisgICAgVXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKQEAgLTEwNywxMyArMTE2LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVV
c2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpVc2VyQ29udGVu
dFdvcmxkPj4mKTsKICAgICBib29sIHNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01l
c3NhZ2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1v
dmUpOwogCi0gICAgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsgICAgCisg
ICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgSGFz
aFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsKICAgICBSZWY8QVBJOjpBcnJheT4g
bV91c2VyU2NyaXB0czsKICAgICBSZWY8QVBJOjpBcnJheT4gbV91c2VyU3R5bGVTaGVldHM7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9z
Y3JpcHRNZXNzYWdlSGFuZGxlcnM7CiAgICAgSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6VXNl
ckNvbnRlbnRXb3JsZD4+IG1fdXNlckNvbnRlbnRXb3JsZHM7CiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQorICAgIEhhc2hTZXQ8TmV0d29ya1Byb2Nlc3NQcm94eSo+IG1fbmV0d29y
a1Byb2Nlc3NlczsKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVM
aXN0Pj4gbV9jb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTk2NDY0NDE4ZWRlODE1NGVi
M2M3ZTRkOWU2ZjM0ZmEyNWE1MDkzYS4uNGQyYzY3ZjM0ZWFjMTljY2JmYTUxMGVlMTVhY2M5ODBm
ZjQxYWMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC05NTgsNiArOTU4LDcgQEAKIAkJNDFGQUY1RjUxRTNDMDY0OTAwMUFFNjc4IC8q
IFdlYlJUQ1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZBRjVGNDFFM0MwNjQxMDAxQUU2NzggLyogV2ViUlRDUmVzb2x2ZXIuaCAqLzsg
fTsKIAkJNDFGQUY1RjgxRTNDMTAyMTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBRjVGNjFFM0Mw
QjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCAqLzsgfTsKIAkJNDFGQUY1RjkxRTND
MTAyNTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY3MUUzQzBCNDcwMDFBRTY3OCAvKiBM
aWJXZWJSVENSZXNvbHZlci5jcHAgKi87IH07CisJCTQxRkJFODI2MjA2REY3RkEwMDBGMDc0MSAv
KiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCRTgyNDIwNkRBNzlDMDAwRjA3NDEgLyogTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwICovOyB9OwogCQk0NDUwQUVDMDFEQzNGQUU1
MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1MEFFQkYxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJl
ZE1lbW9yeUNvY29hLmNwcCAqLzsgfTsKIAkJNDYwRjQ4OEYxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MEY0ODhEMUY5OTZGNkMwMENG
NEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CiAJCTQ2MEY0ODkwMUY5OTZGNzEwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwpAQCAtMTE5Niw2ICsxMTk3LDcgQEAKIAkJNTJE
NUExQjAxQzU3NDk1QTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUExQzU3
NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovOyB9OwogCQk1
MkQ1QTFCMTFDNTc0OTYyMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUMx
QzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSAqLzsgfTsK
IAkJNTJENUExQjcxQzU3NEEwMjAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTFCNDFD
NTc0OUYyMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSAqLzsgfTsKKwkJNTJG
MDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyRjA2MEREMTY1NDMxNzUwMEYzMjgxQiAvKiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUzMDI1ODNCMURDQkJEMjIwMERB
ODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMDI1ODJFMURDQkJEMUQwMERBODlDMiAvKiBOZXR3
b3JrQ2FwdHVyZVJlc291cmNlLmNwcCAqLzsgfTsKIAkJNTMwMjU4M0MxRENCQkQyMjAwREE4OUMy
IC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMDI1ODJGMURDQkJEMUQwMERBODlDMiAvKiBOZXR3b3JrQ2Fw
dHVyZVJlc291cmNlLmggKi87IH07CiAJCTUzMDI1ODNEMURDQkJEMjIwMERBODlDMiAvKiBOZXR3
b3JrQ2FwdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzMDI1ODMwMURDQkJEMUQwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZUV2ZW50
LmNwcCAqLzsgfTsKQEAgLTMzNDIsNiArMzM0NCwxMCBAQAogCQk0MUZBRjVGNDFFM0MwNjQxMDAx
QUU2NzggLyogV2ViUlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV2ViUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkFGNUY2MUUzQzBCNDcwMDFBRTY3
OCAvKiBMaWJXZWJSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMaWJXZWJSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVz
b2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQUY1RjcxRTNDMEI0NzAw
MUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExpYldlYlJUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFG
QkU4MjEyMDZEODdGNjAwMEYwNzQxIC8qIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgyMjIwNkRB
NzlDMDAwRjA3NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkJFODIzMjA2REE3OUMwMDBGMDc0MSAvKiBO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZCRTgyNDIwNkRBNzlDMDAwRjA3NDEg
LyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyogU2hh
cmVkTWVtb3J5Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2hhcmVkTWVtb3J5Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBG
NDg4RDFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjI0LDYgKzM2MzAsNyBAQAogCQk1MkQ1QTFCMjFDNTc0
OUYyMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyRDVBMUIzMUM1NzQ5RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
RDVBMUI0MUM1NzQ5RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGMDYwREQxNjU0MzE3NTAwRjMy
ODFCIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4MkUxRENCQkQx
RDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHA7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzAyNTgyRjFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0d29y
a0NhcHR1cmVSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3
b3JrQ2FwdHVyZVJlc291cmNlLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwMjU4
MzAxRENCQkQxRDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlRXZlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0NhcHR1cmVFdmVudC5jcHA7IHBhdGgg
PSBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI3MSw2ICs1Mjc4LDcgQEAKIAkJCQkxQTY0MjQ1QzEy
REUyOUExMDBDQUFFMkMgLyogVXBkYXRlSW5mby5oICovLAogCQkJCTVDMTlBNTFFMUZEMEIxNDYw
MEVFQTMyMyAvKiBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJNUMxOUE1MUYx
RkQwQjE0NzAwRUVBMzIzIC8qIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmggKi8sCisJCQkJNDFG
QkU4MjEyMDZEODdGNjAwMEYwNzQxIC8qIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIu
aCAqLywKIAkJCQkxQUMxMzM2NTE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuY3BwICovLAog
CQkJCTFBQzEzMzY2MTg1NjVCNTcwMEYzRUMwNSAvKiBVc2VyRGF0YS5oICovLAogCQkJCTI2ODQw
NTRBMThCODY2RkYwMDIyQzM4QiAvKiBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcCAq
LywKQEAgLTYzNTksNiArNjM2Nyw5IEBACiAJCQkJNTEzQTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8q
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLywKIAkJCQk1MTNBMTY0QTE2MzBB
OUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLywKIAkJCQk1
MTNBMTY0QjE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gKi8sCisJCQkJNDFGQkU4MjQyMDZEQTc5QzAwMEYwNzQxIC8qIE5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCAqLywKKwkJCQk0MUZCRTgyMjIwNkRBNzlDMDAwRjA3
NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCAqLywKKwkJCQk0MUZCRTgyMzIw
NkRBNzlDMDAwRjA3NDEgLyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMu
aW4gKi8sCiAJCQkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgKi8sCiAJCQkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovLAogCQkJCTUzMjE1OTUxMURCQUU2RkMwMDU0QUEz
QyAvKiBOZXR3b3JrRGF0YVRhc2suY3BwICovLApAQCAtODI0NCw2ICs4MjU1LDcgQEAKIAkJCQky
OTg0RjU3QjE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oICovLAogCQkJCTUxREQ5RjI2MTYzNjdEQTIwMDE1NzhFOSAvKiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTFERDlG
MjcxNjM2N0RBMjAwMTU3OEU5IC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2Fn
ZXMuaCAqLywKKwkJCQk1MkYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxN0NGMEUxMTYzQTQ4
NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAogCQkJCTUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlcy5oICovLAogCQkJCTUxQUNDOTM0MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3
b3JrUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMDY1OSw2ICsxMDY3MSw4IEBA
CiAJCQkJNTMwMjU4M0IxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzQTE2NEMxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxREQ5RjI4
MTYzNjdEQTIwMDE1NzhFOSAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUZCRTgyNjIwNkRGN0ZBMDAwRjA3NDEg
LyogTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTJGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ2REYwNjNCMUYzOTA1Rjgw
MDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTMyMTU5NTQxREJBRTcxRDAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFzay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1M0JBNDdEMDFEQzJFRjVFMDA0REY0QUQgLyogTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBiMTRhNTgwMzI2YTAy
ZDZkMTg0MWE2ZDg4YTRmODJjYjMxOTQ2MzI0Li42OGNjMGU2MDJmOTZmZmZmZmJiYzIwNTcyMzM5
MjE4OTgzMWYyODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC00NzIsMTQgKzQ3MiwxMiBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjbwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBs
b2FkUGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwgPSBkb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51
cmwoKTsKLQotICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS5wYWdlKCkp
IHsKLSAgICAgICAgICAgIHBhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKS5mb3JFYWNoQ29udGVu
dEV4dGVuc2lvbihbJmxvYWRQYXJhbWV0ZXJzXShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIENv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uJiBjb250ZW50RXh0ZW5zaW9uKSB7Ci0g
ICAgICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY29udGVudFJ1bGVMaXN0cy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoaWRlbnRpZmllciwgc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3QmPihjb250ZW50RXh0ZW5zaW9uLmNvbXBpbGVkRXh0ZW5zaW9uKCkpLmRhdGEo
KSkpOwotICAgICAgICAgICAgfSwgKmRvY3VtZW50TG9hZGVyKTsKLSAgICAgICAgfQotICAgIH0K
KyAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBwYXNzaW5nIHVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIsIHdlIHNob3VsZCBqdXN0IHBhc3Mgd2ViUGFnZUlkIHRvIE5ldHdvcmtQcm9jZXNz
LgorICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2Vi
RnJhbWVMb2FkZXJDbGllbnQoZnJhbWUubG9hZGVyKCkuY2xpZW50KCkpOworICAgIFdlYkZyYW1l
KiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQt
PndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/
IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworICAgIGlmICh3ZWJQYWdlKQorICAgICAgICBs
b2FkUGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gd2ViUGFnZS0+
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcigpOwogI2VuZGlmCiAKICAgICBpZiAoY29t
cGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IDIy
MzVhOGRmMDRkMWM0YmNhNmQzMGVmNTMwMDMyOTVkMWFlMDU5OGEuLmI5ZTU4NTgzNWZlMzA4YTg1
MGEzZDg1MjdkOGFlMGIyM2MwZmYzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCkBAIC01MCw5ICs1MCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcio+JiB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkKK3N0YXRpYyBIYXNoTWFwPFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcio+JiB1
c2VyQ29udGVudENvbnRyb2xsZXJzKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aE1hcDx1aW50NjRfdCwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKj4+IHVzZXJDb250ZW50Q29u
dHJvbGxlcnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8VXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKj4+IHVzZXJDb250
ZW50Q29udHJvbGxlcnM7CiAKICAgICByZXR1cm4gdXNlckNvbnRlbnRDb250cm9sbGVyczsKIH0K
QEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIFdvcmxkTWFwJiB3b3JsZE1hcCgpCiAgICAgcmV0dXJu
IG1hcDsKIH0KIAotUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKQorUmVmPFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byYg
dXNlckNvbnRlbnRDb250cm9sbGVyUHRyID0gdXNlckNvbnRlbnRDb250cm9sbGVycygpLmFkZChp
ZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKHVzZXJDb250ZW50
Q29udHJvbGxlclB0cikKQEAgLTc4LDE3ICs3OCwxNyBAQCBSZWY8V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90IGlk
ZQogICAgIHJldHVybiB1c2VyQ29udGVudENvbnRyb2xsZXIucmVsZWFzZU5vbk51bGwoKTsKIH0K
IAotV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXIodWlu
dDY0X3QgaWRlbnRpZmllcikKK1dlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpLCAqdGhpcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6fldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKHVzZXJDb250ZW50Q29udHJvbGxl
cnMoKS5jb250YWlucyhtX2lkZW50aWZpZXIpKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCkpOwogCiAgICAgdXNlckNvbnRlbnRDb250cm9sbGVycygpLnJlbW92ZShtX2lkZW50aWZp
ZXIpOwogfQpAQCAtMjQyLDcgKzI0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghd2ViUGFn
ZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFnZUlEKCksIHdlYkZy
YW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZhbHVlLT5kYXRh
KCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkpOworICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFnZUlE
KCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZh
bHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAg
ICAgfQogCiAgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV9jb250cm9sbGVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IDliNzJkOTZjOGJiYjc3OWMxYmVi
OWIxZjBhYWMyMTJjM2M5ZTQ1NTMuLmY1OGQyMWU4Y2RmYzZiZWQ5YzA0OWRkMmRjMzBhZjk0OWQw
OGFiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAi
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5
cGVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFByb3ZpZGVyLmg+CkBAIC00OSwx
MCArNTAsMTAgQEAgY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5Owog
CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
VXNlckNvbnRlbnRQcm92aWRlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IGdldE9yQ3JlYXRl
KHVpbnQ2NF90IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyPiBnZXRPckNyZWF0ZShVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKICAg
ICB2aXJ0dWFsIH5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKTsKIAotICAgIHVpbnQ2NF90IGlk
ZW50aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0gCisgICAgVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAK
ICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdlYkNv
cmU6OlVzZXJTY3JpcHQmJik7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0V2l0aFVSTChJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CkBAIC03MSw3ICs3
Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICBleHBsaWNpdCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CiAK
ICAgICAvLyBXZWJDb3JlOjpVc2VyQ29udGVudFByb3ZpZGVyCiAgICAgdm9pZCBmb3JFYWNoVXNl
clNjcmlwdChGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFdl
YkNvcmU6OlVzZXJTY3JpcHQmKT4mJikgY29uc3QgZmluYWw7CkBAIC0xMTEsNyArMTEyLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlckludGVybmFs
KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0TWVzc2FnZUhh
bmRsZXJJZGVudGlmaWVyKTsKICNlbmRpZgogCi0gICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwor
ICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCiAgICAg
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiwgVmVjdG9y
PHN0ZDo6cGFpcjx1aW50NjRfdCwgV2ViQ29yZTo6VXNlclNjcmlwdD4+PiBXb3JsZFRvVXNlclNj
cmlwdE1hcDsKICAgICBXb3JsZFRvVXNlclNjcmlwdE1hcCBtX3VzZXJTY3JpcHRzOwpAQCAtMTI2
LDcgKzEyNyw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAg
ICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kIG1f
Y29udGVudEV4dGVuc2lvbkJhY2tlbmQ7CiAjZW5kaWYKLQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
NWNiMDkxMjlhNWY2OTBiZDZjYjc2MmYwYTFhZmRjOWQ4NjU1MjllNS4uMzhlOTEwYWIwNTNjNjRl
YmMyZThkMzY2ZWNlYzhhYjNiNTg0ODYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIlNoYXJlZE1lbW9y
eS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxl
ci5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBvcHVw
SW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgpAQCAtMTA2OSw2
ICsxMDcwLDggQEAgcHVibGljOgogICAgIHZvaWQgb3BlbkdMRGlzcGxheU1hc2tDaGFuZ2VkKHVp
bnQzMl90IGRpc3BsYXlNYXNrKTsKICNlbmRpZgogCisgICAgVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXItPmlkZW50aWZpZXIoKTsgfQorCiBwcml2YXRlOgog
ICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYp
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337137</attachid>
            <date>2018-04-03 18:32:07 -0700</date>
            <delta_ts>2018-04-03 20:03:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184205-20180403183206.patch</filename>
            <type>text/plain</type>
            <size>3997</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJhMzM3YmExNTRlZTU1OGVl
YjA3ZjBiNGVkMGU3OTU2ZDM3YzEwYjAuLjkyZmI1YTE1ZmFlMDZjZWZmNWVjOTk3ZTYyZWE1NTVh
Y2NlZTBlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDQtMDMgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1Byb2Nlc3Mg
Z2V0IENvbnRlbnRCbG9ja2VyIGluZm9ybWF0aW9uIGZyb20gVUlQcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQyMDUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5MTQ2NTUxPgorCisgICAgICAgIFVucmV2aWV3ZWQuCisgICAgICAgIFVw
ZGF0ZWQgZGVjb2RlL2VuY29kZSBtZXRob2RzIHRvIG5vdCBoaXQgbnVsbCBpZGVudGlmaWVyIGFz
c2VydGlvbi4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VHcm91cERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VHcm91cERhdGE6OmRlY29kZSk6CisKIDIwMTgtMDQtMDMgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBkb2VzIG5v
dCBuZWVkIHRvIGV4cG9zZSBhbGwgcmVkaXJlY3QgcmVzcG9uc2UgaGVhZGVycwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA4
NjcxNTliNjhmNDAyZjI5YWVkZGI3ZjMyOWU3ODAwOWZmMTlhNTBjLi4yNjMwMzRhNDc5MjIxMGJj
MWMwOGRlZjhjZTZkN2M2NDJjNWJmNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCBpdGVtU3RhdGVzOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbklE
OwogICAgIGVuY29kZXIgPDwgaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRDsKLSAgICBlbmNv
ZGVyIDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklEOworICAgIGVuY29kZXIgPDwgdXNlckNvbnRl
bnRDb250cm9sbGVySUQudG9VSW50NjQoKTsKICAgICBlbmNvZGVyIDw8IHZpc2l0ZWRMaW5rVGFi
bGVJRDsKICAgICBlbmNvZGVyIDw8IHdlYnNpdGVEYXRhU3RvcmVJRDsKICAgICBlbmNvZGVyIDw8
IGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKQEAgLTE4MCwxMSArMTgwLDExIEBAIHN0
ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LmhpZ2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGlmICghdXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBwYXJh
bWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXI7CisgICAgcGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJRCA9IG1ha2VP
YmplY3RJZGVudGlmaWVyPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigqdXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKaW5kZXggYWJk
YTdkNWU1YzY0ZTAxNTRhZDM1Njk5NjdhZTg3NmY2ZjY5ZGMzMC4uN2IzMzJhZmE3ODU1NTUxODdm
NzlkZTlkNjdlNTEyZGU5NGE4OGQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUdyb3VwRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdy
b3VwRGF0YS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdm9pZCBXZWJQYWdlR3JvdXBEYXRhOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgcGFnZUdyb3Vw
SUQ7CiAgICAgZW5jb2RlciA8PCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZTsKICAgICBlbmNvZGVy
IDw8IHZpc2libGVUb0hpc3RvcnlDbGllbnQ7Ci0gICAgZW5jb2RlciA8PCB1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyOworICAgIGVuY29kZXIgPDwgdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllci50b1VJbnQ2NCgpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VHcm91cERh
dGE+IFdlYlBhZ2VHcm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC01
MywxMSArNTMsMTEgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQYWdlR3Jv
dXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIGJvb2wgdmlzaWJsZVRv
SGlzdG9yeUNsaWVudDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZpc2libGVUb0hpc3RvcnlD
bGllbnQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHN0ZDo6b3B0aW9uYWw8
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB1c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllcjsKICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHsgeyBpZCwgcGFnZUdyb3VwSUQsIHZp
c2libGVUb0luamVjdGVkQnVuZGxlLCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50LCAqdXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciB9IH07CisgICAgcmV0dXJuIHsgeyBpZCwgcGFnZUdyb3Vw
SUQsIHZpc2libGVUb0luamVjdGVkQnVuZGxlLCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50LCBtYWtl
T2JqZWN0SWRlbnRpZmllcjxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyVHlwZT4oKnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpIH0gfTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>