<?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>149702</bug_id>
          
          <creation_ts>2015-10-01 02:25:42 -0700</creation_ts>
          <short_desc>Implement the CSS4 &apos;revert&apos; keyword (including inside the &quot;all&quot; property)</short_desc>
          <delta_ts>2015-12-13 23:12:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>50167214</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>hyatt</cc>
    
    <cc>jonlee</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1129885</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-10-01 02:25:42 -0700</bug_when>
    <thetext>In order to reset all properties back to UA-stylesheet at the shadow boundary,
we need the support for `all: revert`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134243</commentid>
    <comment_count>1</comment_count>
      <attachid>263386</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-10-17 14:36:29 -0700</bug_when>
    <thetext>Created attachment 263386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134244</commentid>
    <comment_count>2</comment_count>
      <attachid>263387</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-10-17 14:41:04 -0700</bug_when>
    <thetext>Created attachment 263387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134247</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-17 14:43:43 -0700</bug_when>
    <thetext>Attachment 263387 did not pass style-queue:


ERROR: Source/WebCore/css/StyleResolver.cpp:1854:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WebCore/css/StyleResolver.h:309:  The parameter name &quot;id&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/css/StyleResolver.h:535:  The parameter name &quot;linkMatchMask&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/css/StyleResolver.h:535:  The parameter name &quot;matchResult&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/css/CSSValue.h:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/css/CSSValue.h:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 6 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134249</commentid>
    <comment_count>4</comment_count>
      <attachid>263390</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-10-17 14:46:04 -0700</bug_when>
    <thetext>Created attachment 263390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134250</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-17 14:48:49 -0700</bug_when>
    <thetext>Attachment 263390 did not pass style-queue:


ERROR: Source/WebCore/css/CSSValue.h:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/css/CSSValue.h:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 2 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134253</commentid>
    <comment_count>6</comment_count>
      <attachid>263390</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-17 14:55:17 -0700</bug_when>
    <thetext>Comment on attachment 263390
Patch

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:5503
&gt;  		BC7D8FF01BD03B6400FFE540 /* CSSUnsetValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7D8FEE1BD03B6400FFE540 /* CSSUnsetValue.h */; };
&gt; +		BC7D8FF31BD1A47900FFE540 /* CSSRevertValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7D8FF11BD1A47900FFE540 /* CSSRevertValue.cpp */; settings = {ASSET_TAGS = (); }; };
&gt; +		BC7D8FF41BD1A47900FFE540 /* CSSRevertValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7D8FF21BD1A47900FFE540 /* CSSRevertValue.h */; settings = {ASSET_TAGS = (); }; };

Please run ./Tools/Scripts/sort-Xcode-project-file on this file.

&gt; Source/WebCore/css/StyleResolver.cpp:1858
&gt; +        authorRollback = new CascadedProperties(direction, writingMode);

unique_ptr?

&gt; Source/WebCore/css/StyleResolver.h:425
&gt; -
&gt; +        

whitespace

&gt; Source/WebCore/css/StyleResolver.h:457
&gt; +        void setAuthorRollback(CascadedProperties* rollback) { m_authorRollback.reset(rollback); }

Should take a std::unique_ptr&lt;CascadedProperties&gt;&amp;&amp; and the caller should std::move I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134262</commentid>
    <comment_count>7</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-10-17 16:14:39 -0700</bug_when>
    <thetext>Fixed in r191252.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146534</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-12-04 18:16:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/23771199&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148897</commentid>
    <comment_count>9</comment_count>
    <who name="yisibl">50167214</who>
    <bug_when>2015-12-13 23:12:39 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/191252</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263386</attachid>
            <date>2015-10-17 14:36:29 -0700</date>
            <delta_ts>2015-10-17 14:41:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>63258</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTI0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyOSBAQAorMjAxNS0xMC0xNyAgRGF2aWQg
SHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBDU1M0ICdy
ZXZlcnQnIGtleXdvcmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDk3MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBuZXcgdGVzdHMgaW4gZmFzdC9jc3MgYW5kIGZhc3QvY3NzL3ZhcmlhYmxl
cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENTU1JldmVydFZhbHVlIHRvIHRoZSBw
cm9qZWN0IGFuZCBtYWtlZmlsZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlS2V5d29yZFZhbHVlKToKKyAgICAgICAgTWFrZSBzdXJlIHRv
IGhhbmRsZSAicmV2ZXJ0IiBpbiB0aGUga2V5d29yZCBwYXJzaW5nIHBhdGggKGFsb25nIHdpdGgg
aW5oZXJpdC9pbml0aWFsL3Vuc2V0KS4KKworICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDdXN0b21Qcm9w
ZXJ0eURlY2xhcmF0aW9uKToKKyAgICAgICAgQXQgdGhlIHBhcnNlciBsZXZlbCwgInJldmVydCIg
aXMganVzdCBsaWtlIGluaGVyaXQvaW5pdGlhbC91bnNldCBhbmQgZ2V0cyBpdHMgb3duIHNwZWNp
YWwKKyAgICAgICAgc2luZ2xldG9uIHZhbHVlLCBDU1NSZXZlcnRWYWx1ZS4KKworICAgICAgICAq
IGNzcy9DU1NSZXZlcnRWYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmV2
ZXJ0VmFsdWU6OmN1c3RvbUNTU1RleHQpOgorICAgICAgICAqIGNzcy9DU1NSZXZlcnRWYWx1ZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1JldmVydFZhbHVlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUmV2ZXJ0VmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NSZXZlcnRWYWx1ZTo6Q1NTUmV2ZXJ0VmFsdWUpOgorICAgICAgICBUaGlzIHZhbHVlIGlz
IGlkZW50aWNhbCB0byB0aGUgaW5oZXJpdC9pbml0aWFsL3Vuc2V0IHZhbHVlcywgaS5lLiwgaXRz
IG93biBzcGVjaWFsIHZhbHVlCisgICAgICAgIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUg
YSByZXZlcnQgd2hlbiBkb2luZyBzdHlsZSByZXNvbHV0aW9uLgorCisgICAgICAgICogY3NzL0NT
U1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpjc3NWYWx1ZVR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6ZGVzdHJveSk6
CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6
aXNJbmhlcml0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNJbml0aWFs
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzVW5zZXRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNSZXZlcnRWYWx1ZSk6CisgICAgICAgIEFkZCB0aGUg
UmV2ZXJ0Q2xhc3MgdG8gQ1NTVmFsdWUgYW5kIG1ha2Ugc3VyZSBpdCBpcyBoYW5kbGVkIGluIGFs
bCB0aGUgYXBwcm9wcmlhdGUgbWV0aG9kcy4KKworICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdv
cmRzLmluOgorICAgICAgICBBZGQgdGhlICJyZXZlcnQiIGtleXdvcmQgdG8gdGhlIGxpc3Qgb2Yg
YWxsb3dlZCBDU1Mga2V5d29yZHMuCisKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29sLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Q1NTVmFsdWVQb29sKToKKyAgICAgICAg
KiBjc3MvQ1NTVmFsdWVQb29sLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBvb2w6OmNy
ZWF0ZVJldmVydFZhbHVlKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGEgQ1NTUmV2ZXJ0VmFs
dWUgc2luZ2xldG9uLCBqdXN0IGxpa2UgaW5oZXJpdC91bnNldC9pbml0aWFsLgorCisgICAgICAg
ICogY3NzL0ZvbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udExvYWRlcjo6cmVz
b2x2ZUZvbnRTdHlsZSk6CisgICAgICAgIEFkZCAidW5zZXQiIGFuZCAicmV2ZXJ0IiBhcyBzcGVj
aWFsIGtleXdvcmRzIHRvIGJlIGlnbm9yZWQuIFRoaXMgY29kZSBzZWVtcyB0byBiZSB0dXJuZWQg
b2ZmLAorICAgICAgICBidXQgcGF0Y2hpbmcgaXQgYW55d2F5LgorCisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oOgorICAgICAgICBBZGQgYSBNYXRjaERlZmF1bHQgdmFsdWUgb2YgMCB0
byB0aGUgTGlua01hdGNoTWFzay4gVGhpcyBlbmFibGVzIGl0IHRvIGJlIHVzZWQgYXMgYW4gaW5k
ZXgKKyAgICAgICAgdG8gdGhlIGNvcnJlY3QgdmFsdWUgaW4gUHJvcGVydHkgKGluIHRoZSBzdHls
ZSByZXNvbHV0aW9uIGNvZGUpLgorCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OmluaXRGb3JTdHlsZVJlc29s
dmUpOgorICAgICAgICBEZWxldGUgYW55IGxpbmdlcmluZyBvbGQgQ2FzY2FkZWRQcm9wZXJ0eSBy
b2xsYmFja3MgZm9yIFVBL3VzZXIgcnVsZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5
TWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICBQYXNzIGFsb25nIHRoZSBNYXRjaFJlc3VsdCBh
cyBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlciwgc2luY2Ugd2UgbmVlZCBpdCB0byBsYXppbHkgY29t
cHV0ZQorICAgICAgICB0aGUgY2FzY2FkZSByb2xsYmFja3MgaWYgdGhlICJyZXZlcnQiIGtleXdv
cmQgaXMgZW5jb3VudGVyZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNh
c2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKToKKyAgICAgICAgVGhpcyBtZXRob2Qgd2lsbCBs
YXppbHkgY3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgQ2FzY2FkZWRQcm9wZXJ0aWVzIHBvaW50ZXIg
dGhhdCBpcyBjYWNoZWQKKyAgICAgICAgaW4gdGhlIFN0eWxlUmVzb2x2ZXIncyBzdGF0ZS4gVGhp
cyB3aWxsIGNvbnRhaW4gb25seSBVQSBydWxlcyAoZm9yIHVzZXIgcmV2ZXJ0cykgYW5kIFVBL3Vz
ZXIKKyAgICAgICAgcnVsZXMgKGZvciBhdXRob3IgcmV2ZXJ0cykuIFRoZXNlIHdpbGwgb25seSBi
ZSBjb21wdXRlZCBhdCBtb3N0IG9uY2UgZm9yIGEgZ2l2ZW4gZWxlbWVudAorICAgICAgICB3aGVu
IGRvaW5nIGEgcmV2ZXJzaW9uLCBhbmQgdGhleSB3aWxsIGJlIGNvbXB1dGVkIGxhemlseSwgaS5l
Liwgb25seSBpZiBhIHJldmVydCBpcworICAgICAgICByZXF1ZXN0ZWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICBQYXNzIGFsb25n
IHRoZSBMaW5rTWF0Y2hNYXNrIGFuZCB0aGUgTWF0Y2hSZXN1bHQgdG8gYXBwbHlQcm9wZXJ0eS4g
VGhpcyB3YXkgd2Uga25vdyBzcGVjaWZpY2FsbHkKKyAgICAgICAgd2hpY2ggbGluayB0eXBlIHdl
IHdlcmUgY29tcHV0aW5nIGlmIHdlIGhhdmUgdG8gcmV2ZXJ0IChzbyB0aGF0IHdlIHJvbGwgYmFj
ayBhbmQgbG9vayBhdCB0aGUKKyAgICAgICAgc2FtZSBpbmRleCBpbiB0aGUgcmV2ZXJ0ZWQgdmVy
c2lvbikuIFRoZSBNYXRjaFJlc3VsdCBpcyBwYXNzZWQgYWxvbmcgYmVjYXVzZSBpdCBpcyBuZWVk
ZWQKKyAgICAgICAgdG8gYnVpbGQgdGhlIENhc2NhZGVkUHJvcGVydGllcyByb2xsYmFja3MuCisK
KyAgICAgICAgVGhlIGJhc2ljIGlkZWEgaXMgdGhhdCBpZiBhIHJldmVydCBpcyBlbmNvdW50ZXJl
ZCwgdGhlIGxldmVsIHRoYXQgdGhlIHJ1bGUgY2FtZSBmcm9tIGlzCisgICAgICAgIGNoZWNrZWQu
IElmIGl0IGlzIFVBIGxldmVsLCBqdXN0IHRyZWF0IGFzICJ1bnNldC4iIElmIGl0IGlzIGF1dGhv
ciBvciB1c2VyIGxldmVsLCBnZXQKKyAgICAgICAgdGhlIGNvcnJlY3QgQ2FzY2FkZWRQcm9wZXJ0
aWVzIHJvbGxiYWNrIGFuZCByZXBlYXQgdGhlIGFwcGx5UHJvcGVydHkgdXNpbmcgdGhlIHByb3Bl
cnR5CisgICAgICAgIGZvdW5kIGluIHRoZSByb2xsYmFjay4gSWYgdGhlIHByb3BlcnR5IGlzIG5v
dCBwcmVzZW50IGluIHRoZSBjYXNjYWRlIHJvbGxiYWNrLCB0aGVuIHRoZQorICAgICAgICByZXZl
cnQgYmVjb21lcyBhbiB1bnNldC4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
Q2FzY2FkZWRQcm9wZXJ0aWVzOjpoYXNDdXN0b21Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OmN1c3RvbVByb3BlcnR5KToKKyAg
ICAgICAgSGVscGVycyB1c2VkIGJ5IGFwcGx5UHJvcGVydHkgdG8gY2hlY2sgb24gY3VzdG9tIHBy
b3BlcnRpZXMsIHNpbmNlIHRoZXkgY2FuIHJldmVydCB0b28KKyAgICAgICAganVzdCBsaWtlIGEg
cmVndWxhciBwcm9wZXJ0eSBjYW4uCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OkNhc2NhZGVkUHJvcGVydGllczo6c2V0UHJvcGVydHlJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OnNldERlZmVycmVkKToK
KyAgICAgICAgUGFzc2luZyBhbG9uZyB0aGUgQ2FzY2FkZUxldmVsIChVQSwgVXNlciwgQXV0aG9y
KSBzbyB0aGF0IGl0IGNhbiBiZSBzdG9yZWQgaW4gdGhlIFByb3BlcnR5LgorICAgICAgICBUaGlz
IHdheSB3aGVuIHdlIGRvIHByb3BlcnR5IGFwcGxpY2F0aW9uLCB3ZSBhbHdheXMga25vdyB3aGVy
ZSB0aGUgcnVsZSBjYW1lIGZyb20gc28KKyAgICAgICAgdGhhdCB0aGUgcmV2ZXJzaW9uIGNhbiBi
ZSBoYW5kbGVkIHByb3Blcmx5LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpD
YXNjYWRlZFByb3BlcnRpZXM6OmFkZFN0eWxlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpjYXNjYWRlTGV2ZWxGb3JJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjpDYXNjYWRlZFByb3BlcnRpZXM6OmFkZE1hdGNoZXMpOgorICAgICAgICBXaGVuIHN0eWxlIHBy
b3BlcnRpZXMgYXJlIGFkZGVkLCBhbHNvIGZpZ3VyZSBvdXQgdGhlIENhc2NhZGVMZXZlbCBhbmQg
cGFzcyBpdCBhbG9uZyB0byBiZQorICAgICAgICBzdG9yZWQgaW4gdGhlIFByb3BlcnR5LiBXZSB1
c2UgdGhlIE1hdGNoUmVzdWx0J3MgcmFuZ2VzIHRvIGtub3cgd2hlcmUgYSBwcm9wZXJ0eSBjb21l
cyBmcm9tLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3Bl
cnRpZXM6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHk6OmFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKToKKyAgICAg
ICAgUGFzcyBhbG9uZyB0aGUgTWF0Y2hSZXN1bHQgc28gd2Uga25vdyBob3cgdG8gYnVpbGQgdGhl
IHJvbGxiYWNrLgorCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpjYXNjYWRlTGV2ZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldENhc2NhZGVMZXZlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6YXV0aG9yUm9sbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnVzZXJSb2xsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6c2V0QXV0aG9yUm9sbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFVzZXJSb2xsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpjYXNjYWRlTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNv
bHZlcjo6c2V0Q2FzY2FkZUxldmVsKToKKyAgICAgICAgTW92ZSBDYXNjYWRlZFByb3BlcnRpZXMg
aW50byB0aGUgaGVhZGVyLiBBZGQgQ2FzY2FkZUxldmVsIHRvIFByb3BlcnR5LiBBZGQgdGhlIGxl
dmVsIGFuZAorICAgICAgICByb2xsYmFja3MgdG8gdGhlIHJlc29sdmVyJ3Mgc3RhdGUuCisKIDIw
MTUtMTAtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICB0ZCBh
bmQgdGggc2hvdWxkIHVzZSBIVE1MVGFibGVEYXRhQ2VsbEVsZW1lbnQgYW5kIEhUTUxUYWJsZUhl
YWRlckNlbGxFbGVtZW50IGludGVyZmFjZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxOTEyMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTMzNiw2ICsxMzM2LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9D
U1NQcm9wZXJ0eS5jcHAKICAgICBjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcAogICAgIGNz
cy9DU1NSZWZsZWN0VmFsdWUuY3BwCisgICAgY3NzL0NTU1JldmVydFZhbHVlLmNwcAogICAgIGNz
cy9DU1NSdWxlLmNwcAogICAgIGNzcy9DU1NSdWxlTGlzdC5jcHAKICAgICBjc3MvQ1NTU2VnbWVu
dGVkRm9udEZhY2UuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTEyMDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU0
ODksNiArNTQ4OSw4IEBACiAJCUJDNzc5RTE3MUJCMjI3Q0EwMENBQThCRiAvKiBTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM3NzlFMTUxQkIyMjZBMjAwQ0FBOEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM3
RDhGRUYxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RDhGRUQxQkQwM0I2NDAwRkZFNTQw
IC8qIENTU1Vuc2V0VmFsdWUuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07
IH07CiAJCUJDN0Q4RkYwMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdEOEZFRTFCRDAzQjY0
MDBGRkU1NDAgLyogQ1NTVW5zZXRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0g
KCk7IH07IH07CisJCUJDN0Q4RkYzMUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdEOEZG
MTFCRDFBNDc5MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0VmFsdWUuY3BwICovOyBzZXR0aW5ncyA9IHtB
U1NFVF9UQUdTID0gKCk7IH07IH07CisJCUJDN0Q4RkY0MUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NS
ZXZlcnRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM3RDhGRjIxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggKi87IHNldHRp
bmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlEMDgx
IC8qIEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM3RkE2MjAw
RDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTYxRTBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2
ZU5vZGVMaXN0LmNwcCAqLzsgfTsKIAkJQkM3RkE2MjEwRDFGMENCRDAwREIyMkE5IC8qIExpdmVO
b2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM3RkE2MUYwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5oICovOyB9OwpAQCAtMTMx
OTcsNiArMTMxOTksOCBAQAogCQlCQzdCMkFGODA0NTA4MjQxMDBBODAwMEYgLyogU2Nyb2xsYmFy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cm9sbGJhci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJQkM3RDhGRUQxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVW5zZXRWYWx1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0Q4RkVFMUJEMDNCNjQwMEZGRTU0MCAv
KiBDU1NVbnNldFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1Vu
c2V0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3RDhGRjExQkQxQTQ3
OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENTU1JldmVydFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkM3RDhGRjIxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1JldmVydFZhbHVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2Vy
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZU9ic2VydmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0ZBNjFFMEQxRjBDQkQwMERCMjJBOSAv
KiBMaXZlTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGl2ZU5vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3RkE2MUYw
RDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMaXZlTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIzMDQ3LDYgKzIzMDUxLDggQEAKIAkJCQk5MzYyNjQwQTBERTExMzdEMDA5RDVBMDAgLyogQ1NT
UmVmbGVjdGlvbkRpcmVjdGlvbi5oICovLAogCQkJCUJDNUExMkREMERDMDQxNDgwMEM5QUZBRCAv
KiBDU1NSZWZsZWN0VmFsdWUuY3BwICovLAogCQkJCUJDNUExMkRFMERDMDQxNDgwMEM5QUZBRCAv
KiBDU1NSZWZsZWN0VmFsdWUuaCAqLywKKwkJCQlCQzdEOEZGMTFCRDFBNDc5MDBGRkU1NDAgLyog
Q1NTUmV2ZXJ0VmFsdWUuY3BwICovLAorCQkJCUJDN0Q4RkYyMUJEMUE0NzkwMEZGRTU0MCAvKiBD
U1NSZXZlcnRWYWx1ZS5oICovLAogCQkJCUE4MEU2Q0RDMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NS
dWxlLmNwcCAqLywKIAkJCQlBODBFNkNFMzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUnVsZS5oICov
LAogCQkJCTE0Q0Y3QTcwMDlGNUNGOUEwMEVCMzY2NSAvKiBDU1NSdWxlLmlkbCAqLywKQEAgLTI1
NTI4LDYgKzI1NTM0LDcgQEAKIAkJCQlBODEzNjlEQTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUQwMTAwOTEyN0U2NDJBMDAx
NTAzNUYgLyogSFRNTE91dHB1dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3Q0I1
MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MUGFyYWdyYXBoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQkM3RDhGRjQxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODcxRDQ1ODBBMTI3Q0JDMDBCMTJBNjggLyogSFRNTFBhcmFtRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFMkEzMDcxMjNFOURDMDAwOUZFMTJBIC8qIEhUTUxQ
YXJzZXJJZGlvbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3M0Y0MThBMTY5Qjk1RkYwMDA2QkY2
MCAvKiBIVE1MUGFyc2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDU1OSw2ICszMDU2
Niw3IEBACiAJCQkJNDRDMzYzRjEwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrc0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCThDNkVBNjE5MTFFRjdFMDQwMEZEOEVF
MyAvKiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERDcw
ODk2MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QkM3RDhGRjMxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ5RTkxMUNBMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9wZXJh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1REZFOEY1NjBEMTY0NzdCMDA3NkU5MzcgLyog
U2NoZWR1bGVkQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNjJDN0Y0MTFGNzdFRkIw
MDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1tCShyZXZpc2lvbiAxOTEyMDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI1
LDYgKzEyNSw3IEBAIENsYXNzIGtpdENsYXNzKFdlYkNvcmU6OkNTU1ZhbHVlKiBpbXBsKQogICAg
ICAgICBjYXNlIFdlYkNvcmU6OkNTU1ZhbHVlOjpDU1NfSU5IRVJJVDoKICAgICAgICAgY2FzZSBX
ZWJDb3JlOjpDU1NWYWx1ZTo6Q1NTX0lOSVRJQUw6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6Q1NT
VmFsdWU6OkNTU19VTlNFVDoKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpDU1NWYWx1ZTo6Q1NTX1JF
VkVSVDoKICAgICAgICAgICAgIHJldHVybiBbRE9NQ1NTVmFsdWUgY2xhc3NdOwogICAgICAgICBj
YXNlIFdlYkNvcmU6OkNTU1ZhbHVlOjpDU1NfQ1VTVE9NOgogICAgICAgICAgICAgcmV0dXJuIFtE
T01DU1NWYWx1ZSBjbGFzc107CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNp
b24gMTkxMjAxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCiAjaW5jbHVkZSAiQ1NT
UmVmbGVjdFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUmV2ZXJ0VmFsdWUuaCIKICNpbmNsdWRlICJD
U1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
U3R5bGVTaGVldC5oIgpAQCAtMTE5NywxMCArMTE5OCwxMCBAQCBzdGF0aWMgQ1NTUGFyc2VyOjpQ
YXJzZVJlc3VsdCBwYXJzZUtleXdvCiAgICAgaWYgKCFpc0tleXdvcmRQcm9wZXJ0eUlEKHByb3Bl
cnR5SWQpKSB7CiAgICAgICAgIC8vIEFsbCBwcm9wZXJ0aWVzIGFjY2VwdCB0aGUgdmFsdWVzIG9m
ICJpbml0aWFsIiBhbmQgImluaGVyaXQiLgogICAgICAgICBTdHJpbmcgbG93ZXJDYXNlU3RyaW5n
ID0gc3RyaW5nLmxvd2VyKCk7Ci0gICAgICAgIGlmIChsb3dlckNhc2VTdHJpbmcgIT0gImluaXRp
YWwiICYmIGxvd2VyQ2FzZVN0cmluZyAhPSAiaW5oZXJpdCIgJiYgbG93ZXJDYXNlU3RyaW5nICE9
ICJ1bnNldCIpCisgICAgICAgIGlmIChsb3dlckNhc2VTdHJpbmcgIT0gImluaXRpYWwiICYmIGxv
d2VyQ2FzZVN0cmluZyAhPSAiaW5oZXJpdCIgJiYgbG93ZXJDYXNlU3RyaW5nICE9ICJ1bnNldCIg
JiYgbG93ZXJDYXNlU3RyaW5nICE9ICJyZXZlcnQiKQogICAgICAgICAgICAgcmV0dXJuIENTU1Bh
cnNlcjo6UGFyc2VSZXN1bHQ6OkVycm9yOwogCi0gICAgICAgIC8vIFBhcnNlIGluaXRpYWwvaW5o
ZXJpdC91bnNldCBzaG9ydGhhbmRzIHVzaW5nIHRoZSBDU1NQYXJzZXIuCisgICAgICAgIC8vIFBh
cnNlIGluaXRpYWwvaW5oZXJpdC91bnNldC9yZXZlcnQgc2hvcnRoYW5kcyB1c2luZyB0aGUgQ1NT
UGFyc2VyLgogICAgICAgICBpZiAoc2hvcnRoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJZCkubGVu
Z3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJyb3I7
CiAgICAgfQpAQCAtMTIxOSw2ICsxMjIwLDggQEAgc3RhdGljIENTU1BhcnNlcjo6UGFyc2VSZXN1
bHQgcGFyc2VLZXl3bwogICAgICAgICB2YWx1ZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCku
Y3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKTsKICAgICBlbHNlIGlmICh2YWx1ZUlEID09IENT
U1ZhbHVlVW5zZXQpCiAgICAgICAgIHZhbHVlID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVVbnNldFZhbHVlKCk7CisgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVJldmVy
dCkKKyAgICAgICAgdmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVJldmVy
dFZhbHVlKCk7CiAgICAgZWxzZSBpZiAoaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKHBy
b3BlcnR5SWQsIHZhbHVlSUQsIHBhcnNlckNvbnRleHQsIHN0eWxlU2hlZXRDb250ZW50cykpCiAg
ICAgICAgIHZhbHVlID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUodmFsdWVJRCk7CiAgICAgZWxzZQpAQCAtMTk2NSw2ICsxOTY4LDExIEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKHByb3BJZCwgY3NzVmFsdWVQ
b29sLmNyZWF0ZVVuc2V0VmFsdWUoKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVJldmVydCkgeworICAgICAgICBpZiAobnVt
ICE9IDEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZEV4cGFuZGVkUHJv
cGVydHlGb3JWYWx1ZShwcm9wSWQsIGNzc1ZhbHVlUG9vbC5jcmVhdGVSZXZlcnRWYWx1ZSgpLCBp
bXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgaWYgKHBy
b3BJZCA9PSBDU1NQcm9wZXJ0eUFsbCkKQEAgLTQyMTMsNiArNDIyMSw4IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZUN1c3RvbVByb3BlcnR5RGVjbGEKICAgICAgICAgdmFsdWUgPSBjc3NWYWx1ZVBv
b2wuY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NW
YWx1ZVVuc2V0KQogICAgICAgICB2YWx1ZSA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVVbnNldFZhbHVl
KCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXZlcnQpCisgICAgICAgIHZhbHVlID0g
Y3NzVmFsdWVQb29sLmNyZWF0ZVJldmVydFZhbHVlKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlRnJvbVBh
cnNlclZhbHVlTGlzdCgqbV92YWx1ZUxpc3QpOwogICAgICAgICBpZiAobV92YWx1ZUxpc3QtPmNv
bnRhaW5zVmFyaWFibGVzKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmV2ZXJ0VmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1ZS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmV2ZXJ0VmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NT
UmV2ZXJ0VmFsdWUuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBDU1NSZXZlcnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUmV2ZXJ0Iik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1ZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1JldmVydFZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQ1NTUmV2ZXJ0VmFsdWVfaAorI2RlZmluZSBDU1NSZXZl
cnRWYWx1ZV9oCisKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTUmV2ZXJ0VmFsdWUgOiBw
dWJsaWMgQ1NTVmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q1NTUmV2ZXJ0VmFsdWU+
IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NSZXZlcnRW
YWx1ZSk7CisgICAgfQorCisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKKworICAg
IGJvb2wgZXF1YWxzKGNvbnN0IENTU1JldmVydFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorCitwcml2YXRlOgorICAgIENTU1JldmVydFZhbHVlKCkKKyAgICAgICAgOiBDU1NWYWx1ZShS
ZXZlcnRDbGFzcykKKyAgICB7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxVRShDU1NSZXZlcnRWYWx1ZSwgaXNSZXZl
cnRWYWx1ZSgpKQorCisjZW5kaWYgLy8gQ1NTUmV2ZXJ0VmFsdWVfaApJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwCShyZXZpc2lvbiAxOTEyMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDggQEAgQ1NTVmFsdWU6OlR5
cGUgQ1NTVmFsdWU6OmNzc1ZhbHVlVHlwZSgpIAogICAgICAgICByZXR1cm4gQ1NTX0lOSVRJQUw7
CiAgICAgaWYgKGlzVW5zZXRWYWx1ZSgpKQogICAgICAgICByZXR1cm4gQ1NTX1VOU0VUOworICAg
IGlmIChpc1JldmVydFZhbHVlKCkpCisgICAgICAgIHJldHVybiBDU1NfUkVWRVJUOwogICAgIHJl
dHVybiBDU1NfQ1VTVE9NOwogfQogCkBAIC0yMDMsNiArMjA1LDggQEAgYm9vbCBDU1NWYWx1ZTo6
ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJiBvdAogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NW
YWx1ZXM8Q1NTSW5pdGlhbFZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIFVuc2V0
Q2xhc3M6CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NVbnNldFZhbHVl
PigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFJldmVydENsYXNzOgorICAgICAgICAgICAg
cmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTUmV2ZXJ0VmFsdWU+KCp0aGlzLCBvdGhlcik7CiAj
aWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKICAgICAgICAgY2FzZSBHcmlkTGluZU5hbWVzQ2xh
c3M6CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NHcmlkTGluZU5hbWVz
VmFsdWU+KCp0aGlzLCBvdGhlcik7CkBAIC0zMDUsNiArMzA5LDggQEAgU3RyaW5nIENTU1ZhbHVl
Ojpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0luaXRpYWxWYWx1
ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKICAgICBjYXNlIFVuc2V0Q2xhc3M6CiAgICAgICAg
IHJldHVybiBkb3duY2FzdDxDU1NVbnNldFZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwor
ICAgIGNhc2UgUmV2ZXJ0Q2xhc3M6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NSZXZlcnRW
YWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VU
KQogICAgIGNhc2UgR3JpZExpbmVOYW1lc0NsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8
Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwpAQCAtNDE3LDYg
KzQyMyw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgIGNhc2UgVW5zZXRDbGFzczoK
ICAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1Vuc2V0VmFsdWU+KHRoaXMpOwogICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBSZXZlcnRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENT
U1JldmVydFZhbHVlPih0aGlzKTsKKyAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShDU1NfR1JJ
RF9MQVlPVVQpCiAgICAgY2FzZSBHcmlkTGluZU5hbWVzQ2xhc3M6CiAgICAgICAgIGRlbGV0ZSBk
b3duY2FzdDxDU1NHcmlkTGluZU5hbWVzVmFsdWU+KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmgJKHJldmlzaW9uIDE5MTIwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgQ1NTX1ZB
TFVFX0xJU1QgPSAyLAogICAgICAgICBDU1NfQ1VTVE9NID0gMywKICAgICAgICAgQ1NTX0lOSVRJ
QUwgPSA0LAotICAgICAgICBDU1NfVU5TRVQgPSA1CisgICAgICAgIENTU19VTlNFVCA9IDUsCisg
ICAgICAgIENTU19SRVZFUlQgPSA2CiAgICAgfTsKIAogICAgIC8vIE92ZXJyaWRlIFJlZkNvdW50
ZWQncyBkZXJlZigpIHRvIGVuc3VyZSBvcGVyYXRvciBkZWxldGUgaXMgY2FsbGVkIG9uCkBAIC05
NCw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5oZXJpdGVkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2NsYXNzVHlwZSA9PSBJbmhlcml0ZWRDbGFzczsgfQogICAgIGJvb2wgaXNJbml0
aWFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBJbml0aWFsQ2xhc3M7IH0K
ICAgICBib29sIGlzVW5zZXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFVu
c2V0Q2xhc3M7IH0KKyAgICBib29sIGlzUmV2ZXJ0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Ns
YXNzVHlwZSA9PSBSZXZlcnRDbGFzczsgfQogICAgIGJvb2wgdHJlYXRBc0luaXRpYWxWYWx1ZShD
U1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIHRyZWF0QXNJbmhlcml0ZWRWYWx1ZShDU1NQ
cm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIGlzTGluZWFyR3JhZGllbnRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IExpbmVhckdyYWRpZW50Q2xhc3M7IH0KQEAgLTE2OSw2
ICsxNzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEluaGVyaXRlZENsYXNzLAogICAgICAgICBJ
bml0aWFsQ2xhc3MsCiAgICAgICAgIFVuc2V0Q2xhc3MsCisgICAgICAgIFJldmVydENsYXNzLAog
CiAgICAgICAgIFJlZmxlY3RDbGFzcywKICAgICAgICAgU2hhZG93Q2xhc3MsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkocmV2aXNpb24gMTkxMjAxKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQs
NiArNCw3IEBACiBpbmhlcml0CiBpbml0aWFsCiB1bnNldAorcmV2ZXJ0CiAKIC8vCiAvLyBDU1Nf
UFJPUF9PVVRMSU5FX1NUWUxFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29s
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAko
cmV2aXNpb24gMTkxMjAxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgQ1NTVmFsdWVQb29sOjpDU1NWYWx1ZVBv
b2woKQogICAgICwgbV9pbXBsaWNpdEluaXRpYWxWYWx1ZShDU1NJbml0aWFsVmFsdWU6OmNyZWF0
ZUltcGxpY2l0KCkpCiAgICAgLCBtX2V4cGxpY2l0SW5pdGlhbFZhbHVlKENTU0luaXRpYWxWYWx1
ZTo6Y3JlYXRlRXhwbGljaXQoKSkKICAgICAsIG1fdW5zZXRWYWx1ZShDU1NVbnNldFZhbHVlOjpj
cmVhdGUoKSkKKyAgICAsIG1fcmV2ZXJ0VmFsdWUoQ1NTUmV2ZXJ0VmFsdWU6OmNyZWF0ZSgpKQog
ICAgICwgbV9jb2xvclRyYW5zcGFyZW50KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihD
b2xvcjo6dHJhbnNwYXJlbnQpKQogICAgICwgbV9jb2xvcldoaXRlKENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVDb2xvcihDb2xvcjo6d2hpdGUpKQogICAgICwgbV9jb2xvckJsYWNrKENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihDb2xvcjo6YmxhY2spKQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZVBvb2wuaAkocmV2aXNpb24gMTkxMjAxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
Q1NTSW5pdGlhbFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNs
dWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTUmV2ZXJ0VmFsdWUuaCIKICNp
bmNsdWRlICJDU1NVbnNldFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgog
I2luY2x1ZGUgPHV0aWxpdHk+CkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBSZWY8Q1NT
SW5pdGlhbFZhbHVlPiBjcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIG1faW1w
bGljaXRJbml0aWFsVmFsdWUuY29weVJlZigpOyB9CiAgICAgUmVmPENTU0luaXRpYWxWYWx1ZT4g
Y3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKSB7IHJldHVybiBtX2V4cGxpY2l0SW5pdGlhbFZh
bHVlLmNvcHlSZWYoKTsgfQogICAgIFJlZjxDU1NVbnNldFZhbHVlPiBjcmVhdGVVbnNldFZhbHVl
KCkgeyByZXR1cm4gbV91bnNldFZhbHVlLmNvcHlSZWYoKTsgfQorICAgIFJlZjxDU1NSZXZlcnRW
YWx1ZT4gY3JlYXRlUmV2ZXJ0VmFsdWUoKSB7IHJldHVybiBtX3JldmVydFZhbHVlLmNvcHlSZWYo
KTsgfQogICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlSUQgaWRlbnRpZmllcik7CiAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTUHJvcGVydHlJRCBpZGVudGlmaWVyKTsKICAgICBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNyZWF0ZUNvbG9yVmFsdWUodW5zaWduZWQgcmdiVmFsdWUpOwpAQCAtNzQs
NiArNzYsNyBAQCBwcml2YXRlOgogICAgIFJlZjxDU1NJbml0aWFsVmFsdWU+IG1faW1wbGljaXRJ
bml0aWFsVmFsdWU7CiAgICAgUmVmPENTU0luaXRpYWxWYWx1ZT4gbV9leHBsaWNpdEluaXRpYWxW
YWx1ZTsKICAgICBSZWY8Q1NTVW5zZXRWYWx1ZT4gbV91bnNldFZhbHVlOworICAgIFJlZjxDU1NS
ZXZlcnRWYWx1ZT4gbV9yZXZlcnRWYWx1ZTsKIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gbV9pZGVudGlmaWVyVmFsdWVDYWNoZVtudW1DU1NWYWx1ZUtleXdvcmRzXTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcAkocmV2aXNpb24gMTkxMjAxKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNyArMzAwLDcg
QEAgYm9vbCBGb250TG9hZGVyOjpyZXNvbHZlRm9udFN0eWxlKGNvbnN0IAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgU3RyaW5nIGZvbnRWYWx1ZSA9IHBhcnNlZFN0eWxlLT5nZXRQ
cm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Rm9udCk7Ci0gICAgaWYgKGZvbnRWYWx1ZSA9PSAiaW5o
ZXJpdCIgfHwgZm9udFZhbHVlID09ICJpbml0aWFsIikKKyAgICBpZiAoZm9udFZhbHVlID09ICJp
bmhlcml0IiB8fCBmb250VmFsdWUgPT0gImluaXRpYWwiIHx8IGZvbnRWYWx1ZSA9PSAidW5zZXQi
IHx8IGZvbnRWYWx1ZSA9PSAicmV2ZXJ0IikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
UmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgJKHJldmlzaW9uIDE5MTIwMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTAy
LDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBtYXRjaGVzRm9jdXNQc2V1ZG9D
bGFzcyhjb25zdCBFbGVtZW50Kik7CiAgICAgc3RhdGljIGJvb2wgY2hlY2tFeGFjdEF0dHJpYnV0
ZShjb25zdCBFbGVtZW50KiwgY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBRdWFsaWZpZWROYW1l
JiBzZWxlY3RvckF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlKTsK
IAotICAgIGVudW0gTGlua01hdGNoTWFzayB7IE1hdGNoTGluayA9IDEsIE1hdGNoVmlzaXRlZCA9
IDIsIE1hdGNoQWxsID0gTWF0Y2hMaW5rIHwgTWF0Y2hWaXNpdGVkIH07CisgICAgZW51bSBMaW5r
TWF0Y2hNYXNrIHsgTWF0Y2hEZWZhdWx0ID0gMCwgTWF0Y2hMaW5rID0gMSwgTWF0Y2hWaXNpdGVk
ID0gMiwgTWF0Y2hBbGwgPSBNYXRjaExpbmsgfCBNYXRjaFZpc2l0ZWQgfTsKICAgICBzdGF0aWMg
dW5zaWduZWQgZGV0ZXJtaW5lTGlua01hdGNoVHlwZShjb25zdCBDU1NTZWxlY3RvciopOwogCiBw
cml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkocmV2aXNpb24g
MTkxMjAxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzMsNDIgKzE3Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBz
dGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHkgPSBDU1NQ
cm9wZXJ0eUZvbnRTeW50aGVzaXM7CiBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBmaXJzdExv
d1ByaW9yaXR5UHJvcGVydHkgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihsYXN0SGlnaFBy
aW9yaXR5UHJvcGVydHkgKyAxKTsKIAotY2xhc3MgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9w
ZXJ0aWVzIHsKLXB1YmxpYzoKLSAgICBDYXNjYWRlZFByb3BlcnRpZXMoVGV4dERpcmVjdGlvbiwg
V3JpdGluZ01vZGUpOwotCi0gICAgc3RydWN0IFByb3BlcnR5IHsKLSAgICAgICAgdm9pZCBhcHBs
eShTdHlsZVJlc29sdmVyJik7Ci0KLSAgICAgICAgQ1NTUHJvcGVydHlJRCBpZDsKLSAgICAgICAg
Q1NTVmFsdWUqIGNzc1ZhbHVlWzNdOwotICAgIH07Ci0KLSAgICBib29sIGhhc1Byb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQpIGNvbnN0OwotICAgIFByb3BlcnR5JiBwcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEKTsKLSAgICB2b2lkIGFkZE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBib29sIGltcG9y
dGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5ID0g
ZmFsc2UpOwotCi0gICAgdm9pZCBzZXQoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUmLCB1bnNpZ25l
ZCBsaW5rTWF0Y2hUeXBlKTsKLSAgICB2b2lkIHNldERlZmVycmVkKENTU1Byb3BlcnR5SUQsIENT
U1ZhbHVlJiwgdW5zaWduZWQgbGlua01hdGNoVHlwZSk7Ci0KLSAgICB2b2lkIGFwcGx5RGVmZXJy
ZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImKTsKLQotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBQcm9wZXJ0eT4mIGN1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBtX2N1c3RvbVByb3BlcnRp
ZXM7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgdm9pZCBhZGRTdHlsZVByb3BlcnRpZXMoY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzJiwgU3R5bGVSdWxlJiwgYm9vbCBpc0ltcG9ydGFudCwgYm9vbCBpbmhl
cml0ZWRPbmx5LCBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUp
OwotICAgIHN0YXRpYyB2b2lkIHNldFByb3BlcnR5SW50ZXJuYWwoUHJvcGVydHkmLCBDU1NQcm9w
ZXJ0eUlELCBDU1NWYWx1ZSYsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpOwotCi0gICAgUHJvcGVy
dHkgbV9wcm9wZXJ0aWVzW251bUNTU1Byb3BlcnRpZXMgKyAyXTsKLSAgICBzdGQ6OmJpdHNldDxu
dW1DU1NQcm9wZXJ0aWVzICsgMj4gbV9wcm9wZXJ0eUlzUHJlc2VudDsKLQotICAgIFZlY3RvcjxQ
cm9wZXJ0eSwgOD4gbV9kZWZlcnJlZFByb3BlcnRpZXM7Ci0gICAgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIFByb3BlcnR5PiBtX2N1c3RvbVByb3BlcnRpZXM7Ci0KLSAgICBUZXh0RGlyZWN0aW9uIG1f
ZGlyZWN0aW9uOwotICAgIFdyaXRpbmdNb2RlIG1fd3JpdGluZ01vZGU7Ci19OwotCiBzdGF0aWMg
dm9pZCBleHRyYWN0RGlyZWN0aW9uQW5kV3JpdGluZ01vZGUoY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBTdHlsZVJlc29sdmVyOjpNYXRjaFJlc3VsdCYsIFRleHREaXJlY3Rpb24mLCBXcml0aW5n
TW9kZSYpOwogCiBSZW5kZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6c19zdHlsZU5vdFlldEF2YWls
YWJsZTsKQEAgLTQ0MCw2ICs0MDQsOSBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0
ZTo6aW5pdEZvCiAgICAgbV9zdHlsZSA9IG51bGxwdHI7CiAgICAgbV9wZW5kaW5nSW1hZ2VQcm9w
ZXJ0aWVzLmNsZWFyKCk7CiAgICAgbV9mb250RGlydHkgPSBmYWxzZTsKKyAgICAKKyAgICBtX2F1
dGhvclJvbGxiYWNrLnJlbGVhc2UoKTsKKyAgICBtX3VzZXJSb2xsYmFjay5yZWxlYXNlKCk7CiAK
ICAgICB1cGRhdGVDb252ZXJzaW9uRGF0YSgpOwogfQpAQCAtODU0LDIwICs4MjEsMjAgQEAgUmVm
PFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcgogICAgIGNhc2NhZGUuYWRkTWF0
Y2hlcyhyZXN1bHQsIGZhbHNlLCAwLCByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXplKCkg
LSAxKTsKICAgICAKICAgICAvLyBSZXNvbHZlIGN1c3RvbSBwcm9wZXJ0aWVzIGZpcnN0LgotICAg
IGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQ
cm9wZXJ0eUN1c3RvbSk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NT
UHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmcmVzdWx0KTsKIAotICAgIGFwcGx5
Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJp
b3JpdHlQcm9wZXJ0eSk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmly
c3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCAmcmVzdWx0KTsKIAogICAg
IC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCB1cGRhdGUgaXQgbm93LgogICAgIHVwZGF0ZUZv
bnQoKTsKIAogICAgIC8vIE5vdyBkbyByZXN0IG9mIHRoZSBwcm9wZXJ0aWVzLgotICAgIGFwcGx5
Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFz
dENTU1Byb3BlcnR5KTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJz
dExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAgICAv
LyBJZiBvdXIgZm9udCBnb3QgZGlydGllZCBieSBvbmUgb2YgdGhlIG5vbi1lc3NlbnRpYWwgZm9u
dCBwcm9wcywgdXBkYXRlIGl0IGEgc2Vjb25kIHRpbWUuCiAgICAgdXBkYXRlRm9udCgpOwogCi0g
ICAgY2FzY2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcyk7CisgICAgY2FzY2FkZS5h
cHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgJnJlc3VsdCk7CiAKICAgICAvLyBTdGFydCBs
b2FkaW5nIHJlc291cmNlcyByZWZlcmVuY2VkIGJ5IHRoaXMgc3R5bGUuCiAgICAgbG9hZFBlbmRp
bmdSZXNvdXJjZXMoKTsKQEAgLTEwMjIsMTYgKzk4OSwxNiBAQCBSZWY8UmVuZGVyU3R5bGU+IFN0
eWxlUmVzb2x2ZXI6OnN0eWxlRm9yCiAgICAgY2FzY2FkZS5hZGRNYXRjaGVzKHJlc3VsdCwgZmFs
c2UsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNpemUoKSAtIDEpOwogCiAgICAgLy8g
UmVzb2x2ZSBjdXN0b20gcHJvcGVydGllcyBmaXJzdC4KLSAgICBhcHBseUNhc2NhZGVkUHJvcGVy
dGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20pOworICAg
IGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQ
cm9wZXJ0eUN1c3RvbSwgJnJlc3VsdCk7CiAKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhj
YXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHkpOworICAg
IGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxhc3RI
aWdoUHJpb3JpdHlQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAgICAvLyBJZiBvdXIgZm9udCBnb3Qg
ZGlydGllZCwgdXBkYXRlIGl0IG5vdy4KICAgICB1cGRhdGVGb250KCk7CiAKLSAgICBhcHBseUNh
c2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RD
U1NQcm9wZXJ0eSk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RM
b3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksICZyZXN1bHQpOwogCi0gICAgY2Fz
Y2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcyk7CisgICAgY2FzY2FkZS5hcHBseURl
ZmVycmVkUHJvcGVydGllcygqdGhpcywgJnJlc3VsdCk7CiAKICAgICAvLyBTdGFydCBsb2FkaW5n
IHJlc291cmNlcyByZWZlcmVuY2VkIGJ5IHRoaXMgc3R5bGUuCiAgICAgbG9hZFBlbmRpbmdSZXNv
dXJjZXMoKTsKQEAgLTE2OTcsMTcgKzE2NjQsMTcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBs
eU1hdGNoZWRQcm9wZXJ0aQogICAgICAgICBjYXNjYWRlLmFkZE1hdGNoZXMobWF0Y2hSZXN1bHQs
IGZhbHNlLCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdl
cy5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgICAgICBjYXNjYWRlLmFkZE1h
dGNoZXMobWF0Y2hSZXN1bHQsIHRydWUsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwg
bWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAKLSAg
ICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlXZWJraXRS
dWJ5UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uKTsKKyAgICAgICAgYXBw
bHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRp
b24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCAmbWF0Y2hSZXN1bHQpOwogICAgICAg
ICBhZGp1c3RTdHlsZUZvckludGVyQ2hhcmFjdGVyUnVieSgpOwogICAgIAogICAgICAgICAvLyBS
ZXNvbHZlIGN1c3RvbSB2YXJpYWJsZXMgZmlyc3QuCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9w
ZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSk7Cisg
ICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9t
LCBDU1NQcm9wZXJ0eUN1c3RvbSwgJm1hdGNoUmVzdWx0KTsKIAogICAgICAgICAvLyBTdGFydCBi
eSBhcHBseWluZyBwcm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBtYXkgZGVwZW5kIG9u
LgotICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3Bl
cnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHkpOworICAgICAgICBhcHBseUNhc2NhZGVkUHJv
cGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVy
dHksICZtYXRjaFJlc3VsdCk7CiAgICAgCiAgICAgICAgIHVwZGF0ZUZvbnQoKTsKLSAgICAgICAg
YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5
LCBsYXN0Q1NTUHJvcGVydHkpOworICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNj
YWRlLCBmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgJm1hdGNoUmVz
dWx0KTsKIAogICAgICAgICBzdGF0ZS5jYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKICAgICB9
CkBAIC0xNzE5LDE1ICsxNjg2LDE1IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVk
UHJvcGVydGkKICAgICBjYXNjYWRlLmFkZE1hdGNoZXMobWF0Y2hSZXN1bHQsIHRydWUsIG1hdGNo
UmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUs
IGFwcGx5SW5oZXJpdGVkT25seSk7CiAgICAgCiAgICAgLy8gUmVzb2x2ZSBjdXN0b20gcHJvcGVy
dGllcyBmaXJzdC4KLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9w
ZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20pOworICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0
aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSwgJm1hdGNo
UmVzdWx0KTsKIAotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3Bl
cnR5V2Via2l0UnVieVBvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbik7Cisg
ICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5
UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCAmbWF0Y2hSZXN1bHQpOwog
ICAgIAogICAgIC8vIEFkanVzdCB0aGUgZm9udCBzaXplIHRvIGJlIHNtYWxsZXIgaWYgcnVieS1w
b3NpdGlvbiBpcyBpbnRlci1jaGFyYWN0ZXIuCiAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNoYXJh
Y3RlclJ1YnkoKTsKIAogICAgIC8vIFN0YXJ0IGJ5IGFwcGx5aW5nIHByb3BlcnRpZXMgdGhhdCBv
dGhlciBwcm9wZXJ0aWVzIG1heSBkZXBlbmQgb24uCi0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRp
ZXMoY2FzY2FkZSwgZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5KTsK
KyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBs
YXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CiAKICAgICAvLyBJZiB0aGUg
ZWZmZWN0aXZlIHpvb20gdmFsdWUgY2hhbmdlcywgd2UgY2FuJ3QgdXNlIHRoZSBtYXRjaGVkIHBy
b3BlcnRpZXMgY2FjaGUuIFN0YXJ0IG92ZXIuCiAgICAgaWYgKGNhY2hlSXRlbSAmJiBjYWNoZUl0
ZW0tPnJlbmRlclN0eWxlLT5lZmZlY3RpdmVab29tKCkgIT0gc3RhdGUuc3R5bGUoKS0+ZWZmZWN0
aXZlWm9vbSgpKQpAQCAtMTc0MSwxMiArMTcwOCwxMiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5TWF0Y2hlZFByb3BlcnRpCiAgICAgICAgIHJldHVybiBhcHBseU1hdGNoZWRQcm9wZXJ0aWVz
KG1hdGNoUmVzdWx0LCBlbGVtZW50LCBEb05vdFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwog
CiAgICAgLy8gQXBwbHkgcHJvcGVydGllcyB0aGF0IG5vIG90aGVyIHByb3BlcnRpZXMgZGVwZW5k
IG9uLgotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93UHJpb3Jp
dHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5KTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGll
cyhjYXNjYWRlLCBmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgJm1h
dGNoUmVzdWx0KTsKIAogICAgIC8vIEZpbmFsbHksIHNvbWUgcHJvcGVydGllcyBtdXN0IGJlIGFw
cGxpZWQgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBwYXJzZWQuCiAgICAgLy8gVGhlcmUgYXJlIHNv
bWUgQ1NTIHByb3BlcnRpZXMgdGhhdCBhZmZlY3QgdGhlIHNhbWUgUmVuZGVyU3R5bGUgdmFsdWVz
LAogICAgIC8vIHNvIHRvIHByZXNlcnZlIGJlaGF2aW9yLCB3ZSBxdWV1ZSB0aGVtIHVwIGR1cmlu
ZyBjYXNjYWRlIGFuZCBmbHVzaCBoZXJlLgotICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3Bl
cnRpZXMoKnRoaXMpOworICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMs
ICZtYXRjaFJlc3VsdCk7CiAKICAgICAvLyBTdGFydCBsb2FkaW5nIHJlc291cmNlcyByZWZlcmVu
Y2VkIGJ5IHRoaXMgc3R5bGUuCiAgICAgbG9hZFBlbmRpbmdSZXNvdXJjZXMoKTsKQEAgLTE4NzYs
NyArMTg0Myw0NSBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OnVzZVNWR1pvb21SdWxlc0ZvckxlCiAg
ICAgcmV0dXJuIGlzPFNWR0VsZW1lbnQ+KG1fc3RhdGUuZWxlbWVudCgpKSAmJiAhKGlzPFNWR1NW
R0VsZW1lbnQ+KCptX3N0YXRlLmVsZW1lbnQoKSkgJiYgbV9zdGF0ZS5lbGVtZW50KCktPnBhcmVu
dE5vZGUoKSk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCitTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3Bl
cnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKGNvbnN0
IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCkKK3sKKyAgICBBU1NFUlQoY2FzY2FkZUxldmVsKCkg
IT0gVXNlckFnZW50TGV2ZWwpOworICAgIAorICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uOwor
ICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlOworICAgIGV4dHJhY3REaXJlY3Rpb25BbmRXcml0
aW5nTW9kZSgqc3RhdGUoKS5zdHlsZSgpLCBtYXRjaFJlc3VsdCwgZGlyZWN0aW9uLCB3cml0aW5n
TW9kZSk7CisKKyAgICBpZiAoY2FzY2FkZUxldmVsKCkgPT0gQXV0aG9yTGV2ZWwpIHsKKyAgICAg
ICAgQ2FzY2FkZWRQcm9wZXJ0aWVzKiBhdXRob3JSb2xsYmFjayA9IHN0YXRlKCkuYXV0aG9yUm9s
bGJhY2soKTsKKyAgICAgICAgaWYgKGF1dGhvclJvbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJu
IGF1dGhvclJvbGxiYWNrOworICAgICAgICBhdXRob3JSb2xsYmFjayA9IG5ldyBDYXNjYWRlZFBy
b3BlcnRpZXMoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CisgICAgICAgIAorICAgICAgICAvLyBU
aGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBVQSBydWxlcyBhbmQgdXNlciBy
dWxlcyBidXQgbm8gYXV0aG9yIHJ1bGVzLgorICAgICAgICBhdXRob3JSb2xsYmFjay0+YWRkTWF0
Y2hlcyhtYXRjaFJlc3VsdCwgZmFsc2UsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwg
bWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKKyAgICAgICAgYXV0aG9yUm9s
bGJhY2stPmFkZE1hdGNoZXMobWF0Y2hSZXN1bHQsIGZhbHNlLCBtYXRjaFJlc3VsdC5yYW5nZXMu
Zmlyc3RVc2VyUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVc2VyUnVsZSwgZmFsc2UpOwor
ICAgICAgICBhdXRob3JSb2xsYmFjay0+YWRkTWF0Y2hlcyhtYXRjaFJlc3VsdCwgdHJ1ZSwgbWF0
Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VXNl
clJ1bGUsIGZhbHNlKTsKKyAgICAgICAgYXV0aG9yUm9sbGJhY2stPmFkZE1hdGNoZXMobWF0Y2hS
ZXN1bHQsIHRydWUsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQu
cmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKKyAgICAKKyAgICAgICAgc3RhdGUoKS5zZXRBdXRo
b3JSb2xsYmFjayhhdXRob3JSb2xsYmFjayk7CisgICAgICAgIHJldHVybiBhdXRob3JSb2xsYmFj
azsKKyAgICB9IGVsc2UgaWYgKGNhc2NhZGVMZXZlbCgpID09IFVzZXJMZXZlbCkgeworICAgICAg
ICBDYXNjYWRlZFByb3BlcnRpZXMqIHVzZXJSb2xsYmFjayA9IHN0YXRlKCkudXNlclJvbGxiYWNr
KCk7CisgICAgICAgIGlmICh1c2VyUm9sbGJhY2spCisgICAgICAgICAgICByZXR1cm4gdXNlclJv
bGxiYWNrOworICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBzcGVjaWFsIHJvbGxiYWNrIGNhc2Nh
ZGUgY29udGFpbnMgb25seSBVQSBydWxlcy4KKyAgICAgICAgdXNlclJvbGxiYWNrLT5hZGRNYXRj
aGVzKG1hdGNoUmVzdWx0LCBmYWxzZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBt
YXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOworICAgICAgICB1c2VyUm9sbGJh
Y2stPmFkZE1hdGNoZXMobWF0Y2hSZXN1bHQsIHRydWUsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJz
dFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKKyAgICAKKyAg
ICAgICAgc3RhdGUoKS5zZXRVc2VyUm9sbGJhY2sodXNlclJvbGxiYWNrKTsKKyAgICAgICAgcmV0
dXJuIHVzZXJSb2xsYmFjazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NW
YWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayBsaW5rTWF0Y2hNYXNr
LCBjb25zdCBNYXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQpCiB7CiAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghaXNTaG9ydGhhbmRDU1NQcm9wZXJ0eShpZCksICJTaG9ydGhhbmQgcHJvcGVydHkgaWQg
PSAlZCB3YXNuJ3QgZXhwYW5kZWQgYXQgcGFyc2luZyB0aW1lIiwgaWQpOwogCkBAIC0xODk2LDI1
ICsxOTAxLDU5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm8KICAg
ICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkpIHsKICAgICAg
ICAgQ1NTUHJvcGVydHlJRCBuZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdh
cmVQcm9wZXJ0eShpZCwgc3RhdGUuc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0YXRlLnN0eWxlKCkt
PndyaXRpbmdNb2RlKCkpOwogICAgICAgICBBU1NFUlQobmV3SWQgIT0gaWQpOwotICAgICAgICBy
ZXR1cm4gYXBwbHlQcm9wZXJ0eShuZXdJZCwgdmFsdWVUb0FwcGx5LmdldCgpKTsKKyAgICAgICAg
cmV0dXJuIGFwcGx5UHJvcGVydHkobmV3SWQsIHZhbHVlVG9BcHBseS5nZXQoKSwgbGlua01hdGNo
TWFzaywgbWF0Y2hSZXN1bHQpOwogICAgIH0KICAgICAKICAgICBDU1NWYWx1ZSogdmFsdWVUb0No
ZWNrRm9ySW5oZXJpdEluaXRpYWwgPSB2YWx1ZVRvQXBwbHkuZ2V0KCk7CisgICAgQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZSogY3VzdG9tUHJvcGVydHlWYWx1ZSA9IG51bGxwdHI7CisgICAgCiAgICAg
aWYgKGlkID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7Ci0gICAgICAgIENTU0N1c3RvbVByb3BlcnR5
VmFsdWUqIGN1c3RvbVByb3BlcnR5ID0gJmRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+
KCp2YWx1ZVRvQXBwbHkpOwotICAgICAgICB2YWx1ZVRvQ2hlY2tGb3JJbmhlcml0SW5pdGlhbCA9
IGN1c3RvbVByb3BlcnR5LT52YWx1ZSgpLmdldCgpOworICAgICAgICBjdXN0b21Qcm9wZXJ0eVZh
bHVlID0gJmRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCp2YWx1ZVRvQXBwbHkpOwor
ICAgICAgICB2YWx1ZVRvQ2hlY2tGb3JJbmhlcml0SW5pdGlhbCA9IGN1c3RvbVByb3BlcnR5VmFs
dWUtPnZhbHVlKCkuZ2V0KCk7CiAgICAgfQogCiAgICAgYm9vbCBpc0luaGVyaXQgPSBzdGF0ZS5w
YXJlbnRTdHlsZSgpICYmIHZhbHVlVG9DaGVja0ZvckluaGVyaXRJbml0aWFsLT5pc0luaGVyaXRl
ZFZhbHVlKCk7CiAgICAgYm9vbCBpc0luaXRpYWwgPSB2YWx1ZVRvQ2hlY2tGb3JJbmhlcml0SW5p
dGlhbC0+aXNJbml0aWFsVmFsdWUoKSB8fCAoIXN0YXRlLnBhcmVudFN0eWxlKCkgJiYgdmFsdWVU
b0NoZWNrRm9ySW5oZXJpdEluaXRpYWwtPmlzSW5oZXJpdGVkVmFsdWUoKSk7CiAgICAgCi0gICAg
aWYgKHZhbHVlVG9DaGVja0ZvckluaGVyaXRJbml0aWFsLT5pc1Vuc2V0VmFsdWUoKSkgeworICAg
IGJvb2wgaXNVbnNldCA9IHZhbHVlVG9DaGVja0ZvckluaGVyaXRJbml0aWFsLT5pc1Vuc2V0VmFs
dWUoKTsKKyAgICBib29sIGlzUmV2ZXJ0ID0gdmFsdWVUb0NoZWNrRm9ySW5oZXJpdEluaXRpYWwt
PmlzUmV2ZXJ0VmFsdWUoKTsKKworICAgIGlmIChpc1JldmVydCkgeworICAgICAgICBpZiAoY2Fz
Y2FkZUxldmVsKCkgPT0gVXNlckFnZW50TGV2ZWwgfHwgIW1hdGNoUmVzdWx0KQorICAgICAgICAg
ICAgaXNVbnNldCA9IHRydWU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRmV0Y2gg
dGhlIGNvcnJlY3Qgcm9sbGJhY2sgb2JqZWN0IGZyb20gdGhlIHN0YXRlLCBidWlsZGluZyBpdCBp
ZiBuZWNlc3NhcnkuCisgICAgICAgICAgICAvLyBUaGlzIHJlcXVpcmVzIGhhdmluZyB0aGUgb3Jp
Z2luYWwgTWF0Y2hSZXN1bHQgYXZhaWxhYmxlLgorICAgICAgICAgICAgYXV0byogcm9sbGJhY2sg
PSBjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygqbWF0Y2hSZXN1bHQpOworCisgICAgICAg
ICAgICAvLyBXaXRoIHRoZSBjYXNjYWRlIGJ1aWx0LCB3ZSBuZWVkIHRvIG9idGFpbiB0aGUgcHJv
cGVydHkgYW5kIGFwcGx5IGl0LiBJZiB0aGUgcHJvcGVydHkgaXMKKyAgICAgICAgICAgIC8vIG5v
dCBwcmVzZW50LCB0aGVuIHdlIGJlaGF2ZSBsaWtlICJ1bnNldC4iIE90aGVyd2lzZSB3ZSBhcHBs
eSB0aGUgcHJvcGVydHkgaW5zdGVhZCBvZgorICAgICAgICAgICAgLy8gb3VyIG93bi4KKyAgICAg
ICAgICAgIGlmIChjdXN0b21Qcm9wZXJ0eVZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKHJv
bGxiYWNrLT5oYXNDdXN0b21Qcm9wZXJ0eShjdXN0b21Qcm9wZXJ0eVZhbHVlLT5uYW1lKCkpKSB7
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcHJvcGVydHkgPSByb2xsYmFjay0+Y3VzdG9tUHJv
cGVydHkoY3VzdG9tUHJvcGVydHlWYWx1ZS0+bmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdKQorICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwbHlQcm9wZXJ0eShwcm9wZXJ0eS5pZCwgcHJvcGVydHkuY3NzVmFsdWVbbGlua01h
dGNoTWFza10sIGxpbmtNYXRjaE1hc2ssIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAocm9s
bGJhY2stPmhhc1Byb3BlcnR5KGlkKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIHByb3BlcnR5
ID0gcm9sbGJhY2stPnByb3BlcnR5KGlkKTsKKyAgICAgICAgICAgICAgICBpZiAocHJvcGVydHku
Y3NzVmFsdWVbbGlua01hdGNoTWFza10pCisgICAgICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVy
dHkocHJvcGVydHkuaWQsIHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBsaW5rTWF0
Y2hNYXNrLCBtYXRjaFJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGlzVW5zZXQgPSB0cnVlOworICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIGlmIChpc1Vuc2V0KSB7CiAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6
aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkpCiAgICAgICAgICAgICBpc0luaGVyaXQgPSB0cnVlOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc0luaXRpYWwgPSB0cnVlOwogICAgIH0KLSAgICAK
KwogICAgIEFTU0VSVCghaXNJbmhlcml0IHx8ICFpc0luaXRpYWwpOyAvLyBpc0luaGVyaXQgLT4g
IWlzSW5pdGlhbCAmJiBpc0luaXRpYWwgLT4gIWlzSW5oZXJpdAogCiAgICAgaWYgKCFzdGF0ZS5h
cHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSAmJiAoIXN0YXRlLmFwcGx5UHJvcGVydHlUb1Zp
c2l0ZWRMaW5rU3R5bGUoKSB8fCAhaXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHkoaWQpKSkgewpA
QCAtMjU2OCwxMCArMjYwNywyMSBAQCBpbmxpbmUgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9w
ZXJ0aWVzCiAgICAgcmV0dXJuIG1fcHJvcGVydGllc1tpZF07CiB9CiAKLXZvaWQgU3R5bGVSZXNv
bHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eUludGVybmFsKFByb3BlcnR5JiBw
cm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVlLCB1bnNpZ25lZCBs
aW5rTWF0Y2hUeXBlKQoraW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0
aWVzOjpoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fY3VzdG9tUHJvcGVydGllcy5jb250YWlucyhuYW1lKTsKK30KKworaW5saW5lIFN0
eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHkgU3R5bGVSZXNvbHZlcjo6
Q2FzY2FkZWRQcm9wZXJ0aWVzOjpjdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY3VzdG9tUHJvcGVydGllcy5nZXQobmFtZSk7Cit9CisKK3Zv
aWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eUludGVybmFs
KFByb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVl
LCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxldmVsKQogewog
ICAgIEFTU0VSVChsaW5rTWF0Y2hUeXBlIDw9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hBbGwpOwog
ICAgIHByb3BlcnR5LmlkID0gaWQ7CisgICAgcHJvcGVydHkubGV2ZWwgPSBjYXNjYWRlTGV2ZWw7
CiAgICAgaWYgKGxpbmtNYXRjaFR5cGUgPT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCkgewog
ICAgICAgICBwcm9wZXJ0eS5jc3NWYWx1ZVswXSA9ICZjc3NWYWx1ZTsKICAgICAgICAgcHJvcGVy
dHkuY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmtdID0gJmNzc1ZhbHVlOwpAQCAt
MjU4MCw3ICsyNjMwLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6
OgogICAgICAgICBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hUeXBlXSA9ICZjc3NWYWx1ZTsK
IH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OnNldChDU1NQcm9w
ZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpCit2
b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6c2V0KENTU1Byb3BlcnR5SUQg
aWQsIENTU1ZhbHVlJiBjc3NWYWx1ZSwgdW5zaWduZWQgbGlua01hdGNoVHlwZSwgQ2FzY2FkZUxl
dmVsIGNhc2NhZGVMZXZlbCkKIHsKICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdh
cmVQcm9wZXJ0eShpZCkpCiAgICAgICAgIGlkID0gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rp
b25Bd2FyZVByb3BlcnR5KGlkLCBtX2RpcmVjdGlvbiwgbV93cml0aW5nTW9kZSk7CkBAIC0yNTk3
LDExICsyNjQ3LDExIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjoK
ICAgICAgICAgICAgIFByb3BlcnR5IHByb3BlcnR5OwogICAgICAgICAgICAgcHJvcGVydHkuaWQg
PSBpZDsKICAgICAgICAgICAgIG1lbXNldChwcm9wZXJ0eS5jc3NWYWx1ZSwgMCwgc2l6ZW9mKHBy
b3BlcnR5LmNzc1ZhbHVlKSk7Ci0gICAgICAgICAgICBzZXRQcm9wZXJ0eUludGVybmFsKHByb3Bl
cnR5LCBpZCwgY3NzVmFsdWUsIGxpbmtNYXRjaFR5cGUpOworICAgICAgICAgICAgc2V0UHJvcGVy
dHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBsaW5rTWF0Y2hUeXBlLCBjYXNjYWRl
TGV2ZWwpOwogICAgICAgICAgICAgY3VzdG9tUHJvcGVydGllcygpLnNldChjdXN0b21WYWx1ZS5u
YW1lKCksIHByb3BlcnR5KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFByb3BlcnR5
IHByb3BlcnR5ID0gY3VzdG9tUHJvcGVydGllcygpLmdldChjdXN0b21WYWx1ZS5uYW1lKCkpOwot
ICAgICAgICAgICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBs
aW5rTWF0Y2hUeXBlKTsKKyAgICAgICAgICAgIHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHks
IGlkLCBjc3NWYWx1ZSwgbGlua01hdGNoVHlwZSwgY2FzY2FkZUxldmVsKTsKICAgICAgICAgICAg
IGN1c3RvbVByb3BlcnRpZXMoKS5zZXQoY3VzdG9tVmFsdWUubmFtZSgpLCBwcm9wZXJ0eSk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMjYxMCwyMSArMjY2MCwyMSBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6CiAgICAgaWYgKCFtX3Byb3BlcnR5SXNQ
cmVzZW50W2lkXSkKICAgICAgICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2Yo
cHJvcGVydHkuY3NzVmFsdWUpKTsKICAgICBtX3Byb3BlcnR5SXNQcmVzZW50LnNldChpZCk7Ci0g
ICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBsaW5rTWF0Y2hU
eXBlKTsKKyAgICBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBpZCwgY3NzVmFsdWUsIGxp
bmtNYXRjaFR5cGUsIGNhc2NhZGVMZXZlbCk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6Q2Fz
Y2FkZWRQcm9wZXJ0aWVzOjpzZXREZWZlcnJlZChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYg
Y3NzVmFsdWUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OkNh
c2NhZGVkUHJvcGVydGllczo6c2V0RGVmZXJyZWQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUm
IGNzc1ZhbHVlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxl
dmVsKQogewogICAgIEFTU0VSVCghQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0
eShpZCkpOwogICAgIEFTU0VSVChzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVyKGlkKSk7
CiAKICAgICBQcm9wZXJ0eSBwcm9wZXJ0eTsKICAgICBtZW1zZXQocHJvcGVydHkuY3NzVmFsdWUs
IDAsIHNpemVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOwotICAgIHNldFByb3BlcnR5SW50ZXJuYWwo
cHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbGlua01hdGNoVHlwZSk7CisgICAgc2V0UHJvcGVydHlJ
bnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBsaW5rTWF0Y2hUeXBlLCBjYXNjYWRlTGV2
ZWwpOwogICAgIG1fZGVmZXJyZWRQcm9wZXJ0aWVzLmFwcGVuZChwcm9wZXJ0eSk7CiB9CiAKLXZv
aWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphZGRTdHlsZVByb3BlcnRpZXMo
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUmLCBib29sIGlzSW1w
b3J0YW50LCBib29sIGluaGVyaXRlZE9ubHksIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBwcm9wZXJ0
eVdoaXRlbGlzdFR5cGUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpCit2b2lkIFN0eWxlUmVzb2x2
ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YWRkU3R5bGVQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJv
cGVydGllcyYgcHJvcGVydGllcywgU3R5bGVSdWxlJiwgYm9vbCBpc0ltcG9ydGFudCwgYm9vbCBp
bmhlcml0ZWRPbmx5LCBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgcHJvcGVydHlXaGl0ZWxpc3RUeXBl
LCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxldmVsKQogewog
ICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gcHJvcGVydGllcy5wcm9wZXJ0eUNvdW50
KCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGF1dG8gY3VycmVudCA9IHByb3BlcnRpZXMu
cHJvcGVydHlBdChpKTsKQEAgLTI2NDYsMTIgKzI2OTYsMjEgQEAgdm9pZCBTdHlsZVJlc29sdmVy
OjpDYXNjYWRlZFByb3BlcnRpZXM6OgogI2VuZGlmCiAKICAgICAgICAgaWYgKHNob3VsZEFwcGx5
UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpCi0gICAgICAgICAgICBzZXREZWZlcnJl
ZChwcm9wZXJ0eUlELCAqY3VycmVudC52YWx1ZSgpLCBsaW5rTWF0Y2hUeXBlKTsKKyAgICAgICAg
ICAgIHNldERlZmVycmVkKHByb3BlcnR5SUQsICpjdXJyZW50LnZhbHVlKCksIGxpbmtNYXRjaFR5
cGUsIGNhc2NhZGVMZXZlbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldChwcm9wZXJ0
eUlELCAqY3VycmVudC52YWx1ZSgpLCBsaW5rTWF0Y2hUeXBlKTsKKyAgICAgICAgICAgIHNldChw
cm9wZXJ0eUlELCAqY3VycmVudC52YWx1ZSgpLCBsaW5rTWF0Y2hUeXBlLCBjYXNjYWRlTGV2ZWwp
OwogICAgIH0KIH0KIAorc3RhdGljIENhc2NhZGVMZXZlbCBjYXNjYWRlTGV2ZWxGb3JJbmRleChj
b25zdCBTdHlsZVJlc29sdmVyOjpNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGludCBpbmRleCkK
K3sKKyAgICBpZiAoaW5kZXggPj0gbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlICYmIGlu
ZGV4IDw9IG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlKQorICAgICAgICByZXR1cm4gVXNl
ckFnZW50TGV2ZWw7CisgICAgaWYgKGluZGV4ID49IG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVz
ZXJSdWxlICYmIGluZGV4IDw9IG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUpCisgICAg
ICAgIHJldHVybiBVc2VyTGV2ZWw7CisgICAgcmV0dXJuIEF1dGhvckxldmVsOworfQorCiB2b2lk
IFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YWRkTWF0Y2hlcyhjb25zdCBNYXRj
aFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGJvb2wgaW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50
IGVuZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkpCiB7CiAgICAgaWYgKHN0YXJ0SW5kZXggPT0g
LTEpCkBAIC0yNjU5LDI0ICsyNzE4LDI2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQ
cm9wZXJ0aWVzOjoKIAogICAgIGZvciAoaW50IGkgPSBzdGFydEluZGV4OyBpIDw9IGVuZEluZGV4
OyArK2kpIHsKICAgICAgICAgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIG1hdGNoZWRQcm9wZXJ0
aWVzID0gbWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKVtpXTsKLSAgICAgICAgYWRkU3R5
bGVQcm9wZXJ0aWVzKCptYXRjaGVkUHJvcGVydGllcy5wcm9wZXJ0aWVzLCAqbWF0Y2hSZXN1bHQu
bWF0Y2hlZFJ1bGVzW2ldLCBpbXBvcnRhbnQsIGluaGVyaXRlZE9ubHksIHN0YXRpY19jYXN0PFBy
b3BlcnR5V2hpdGVsaXN0VHlwZT4obWF0Y2hlZFByb3BlcnRpZXMud2hpdGVsaXN0VHlwZSksIG1h
dGNoZWRQcm9wZXJ0aWVzLmxpbmtNYXRjaFR5cGUpOworICAgICAgICBhZGRTdHlsZVByb3BlcnRp
ZXMoKm1hdGNoZWRQcm9wZXJ0aWVzLnByb3BlcnRpZXMsICptYXRjaFJlc3VsdC5tYXRjaGVkUnVs
ZXNbaV0sIGltcG9ydGFudCwgaW5oZXJpdGVkT25seSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlXaGl0
ZWxpc3RUeXBlPihtYXRjaGVkUHJvcGVydGllcy53aGl0ZWxpc3RUeXBlKSwgbWF0Y2hlZFByb3Bl
cnRpZXMubGlua01hdGNoVHlwZSwKKyAgICAgICAgICAgIGNhc2NhZGVMZXZlbEZvckluZGV4KG1h
dGNoUmVzdWx0LCBpKSk7CiAgICAgfQogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVk
UHJvcGVydGllczo6YXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoU3R5bGVSZXNvbHZlciYgcmVzb2x2
ZXIpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZlcnJl
ZFByb3BlcnRpZXMoU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIsIGNvbnN0IE1hdGNoUmVzdWx0KiBt
YXRjaFJlc3VsdCkKIHsKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogbV9kZWZlcnJlZFByb3Bl
cnRpZXMpCi0gICAgICAgIHByb3BlcnR5LmFwcGx5KHJlc29sdmVyKTsKKyAgICAgICAgcHJvcGVy
dHkuYXBwbHkocmVzb2x2ZXIsIG1hdGNoUmVzdWx0KTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVy
OjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNv
bHZlcikKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6
YXBwbHkoU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIsIGNvbnN0IE1hdGNoUmVzdWx0KiBtYXRjaFJl
c3VsdCkKIHsKICAgICBTdGF0ZSYgc3RhdGUgPSByZXNvbHZlci5zdGF0ZSgpOworICAgIHN0YXRl
LnNldENhc2NhZGVMZXZlbChsZXZlbCk7CiAKLSAgICBpZiAoY3NzVmFsdWVbMF0pIHsKKyAgICBp
ZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRdKSB7CiAgICAgICAgIHN0
YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKICAgICAgICAgc3RhdGUu
c2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSk7Ci0gICAgICAgIHJlc29s
dmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlWzBdKTsKKyAgICAgICAgcmVzb2x2ZXIuYXBw
bHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRdLCBT
ZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCwgbWF0Y2hSZXN1bHQpOwogICAgIH0KIAogICAg
IGlmIChzdGF0ZS5zdHlsZSgpLT5pbnNpZGVMaW5rKCkgPT0gTm90SW5zaWRlTGluaykKQEAgLTI2
ODUsMjAgKzI3NDYsMjAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6
OgogICAgIGlmIChjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlua10pIHsKICAgICAg
ICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOwogICAgICAgICBz
dGF0ZS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKLSAgICAgICAg
cmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRj
aExpbmtdKTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2Vs
ZWN0b3JDaGVja2VyOjpNYXRjaExpbmtdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGluaywgbWF0
Y2hSZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1h
dGNoVmlzaXRlZF0pIHsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0
eWxlKGZhbHNlKTsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtT
dHlsZSh0cnVlKTsKLSAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVb
U2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRdKTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQ
cm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRdLCBTZWxl
Y3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCwgbWF0Y2hSZXN1bHQpOwogICAgIH0KIAogICAgIHN0
YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRB
cHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKIH0KIAotdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmIGNhc2Nh
ZGUsIGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5KQordm9pZCBTdHlsZVJlc29s
dmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmIGNhc2NhZGUs
IGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LCBjb25zdCBNYXRjaFJlc3VsdCog
bWF0Y2hSZXN1bHQpCiB7CiAgICAgZm9yIChpbnQgaWQgPSBmaXJzdFByb3BlcnR5OyBpZCA8PSBs
YXN0UHJvcGVydHk7ICsraWQpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0g
c3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwpAQCAtMjcwNywxMiArMjc2OCwxMiBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0CiAgICAgICAgIGlmIChwcm9w
ZXJ0eUlEID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7CiAgICAgICAgICAgICBIYXNoTWFwPEF0b21p
Y1N0cmluZywgQ2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eT46Oml0ZXJhdG9yIGVuZCA9IGNh
c2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgpOwogICAgICAgICAgICAgZm9yIChIYXNoTWFw
PEF0b21pY1N0cmluZywgQ2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eT46Oml0ZXJhdG9yIGl0
ID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQot
ICAgICAgICAgICAgICAgIGl0LT52YWx1ZS5hcHBseSgqdGhpcyk7CisgICAgICAgICAgICAgICAg
aXQtPnZhbHVlLmFwcGx5KCp0aGlzLCBtYXRjaFJlc3VsdCk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICBhdXRvJiBwcm9wZXJ0eSA9IGNhc2NhZGUucHJvcGVydHko
cHJvcGVydHlJRCk7CiAgICAgICAgIEFTU0VSVCghc2hvdWxkQXBwbHlQcm9wZXJ0eUluUGFyc2VP
cmRlcihwcm9wZXJ0eUlEKSk7Ci0gICAgICAgIHByb3BlcnR5LmFwcGx5KCp0aGlzKTsKKyAgICAg
ICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIG1hdGNoUmVzdWx0KTsKICAgICB9CiAgICAgCiAgICAg
aWYgKGZpcnN0UHJvcGVydHkgPT0gQ1NTUHJvcGVydHlDdXN0b20pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDE5MTIwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNs
dWRlICJTZWxlY3RvckZpbHRlci5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgog
I2luY2x1ZGUgIlZpZXdwb3J0U3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgPGJpdHNldD4KICNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgpAQCAtMTIwLDYgKzEyMSwxMiBAQCBlbnVtIFJ1bGVNYXRjaGluZ0JlaGF2aW9y
IHsKICAgICBNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcywKIH07CiAKK2VudW0gQ2FzY2FkZUxldmVs
IHsKKyAgICBVc2VyQWdlbnRMZXZlbCwKKyAgICBBdXRob3JMZXZlbCwKKyAgICBVc2VyTGV2ZWwK
K307CisKIGNsYXNzIFBzZXVkb1N0eWxlUmVxdWVzdCB7CiBwdWJsaWM6CiAgICAgUHNldWRvU3R5
bGVSZXF1ZXN0KFBzZXVkb0lkIHBzZXVkb0lkLCBSZW5kZXJTY3JvbGxiYXIqIHNjcm9sbGJhciA9
IG51bGxwdHIsIFNjcm9sbGJhclBhcnQgc2Nyb2xsYmFyUGFydCA9IE5vUGFydCkKQEAgLTE5NCw2
ICsyMDEsOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBwc2V1ZG9T
dHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgUHNldWRvSWQsIHVuc2lnbmVkIHJ1bGVzVG9J
bmNsdWRlID0gQWxsQnV0RW1wdHlDU1NSdWxlcyk7CiAKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgTWF0
Y2hSZXN1bHQ7CisKICAgICB2b2lkIGFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1Byb3BlcnR5SUQs
IENTU1ZhbHVlKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZvaWQgYXBwbHlQcm9wZXJ0eVRvQ3Vy
cmVudFN0eWxlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7CkBAIC0yODQsNiArMjkzLDQ1IEBA
IHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBWZWN0b3I8TWF0Y2hlZFByb3BlcnRpZXMs
IDY0PiBtX21hdGNoZWRQcm9wZXJ0aWVzOwogICAgIH07CisgICAgCisgICAgY2xhc3MgQ2FzY2Fk
ZWRQcm9wZXJ0aWVzIHsKKyAgICBwdWJsaWM6CisgICAgICAgIENhc2NhZGVkUHJvcGVydGllcyhU
ZXh0RGlyZWN0aW9uLCBXcml0aW5nTW9kZSk7CisKKyAgICAgICAgc3RydWN0IFByb3BlcnR5IHsK
KyAgICAgICAgICAgIHZvaWQgYXBwbHkoU3R5bGVSZXNvbHZlciYsIGNvbnN0IE1hdGNoUmVzdWx0
Kik7CisKKyAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgaWQ7CisgICAgICAgICAgICBDYXNjYWRl
TGV2ZWwgbGV2ZWw7CisgICAgICAgICAgICBDU1NWYWx1ZSogY3NzVmFsdWVbM107CisgICAgICAg
IH07CisKKyAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKSBjb25zdDsK
KyAgICAgICAgUHJvcGVydHkmIHByb3BlcnR5KENTU1Byb3BlcnR5SUQpOworICAgICAgICB2b2lk
IGFkZE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBib29sIGltcG9ydGFudCwgaW50IHN0YXJ0
SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5ID0gZmFsc2UpOworCisgICAg
ICAgIHZvaWQgc2V0KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlJiwgdW5zaWduZWQgbGlua01hdGNo
VHlwZSwgQ2FzY2FkZUxldmVsKTsKKyAgICAgICAgdm9pZCBzZXREZWZlcnJlZChDU1NQcm9wZXJ0
eUlELCBDU1NWYWx1ZSYsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUsIENhc2NhZGVMZXZlbCk7CisK
KyAgICAgICAgdm9pZCBhcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVyJiwgY29u
c3QgTWF0Y2hSZXN1bHQqKTsKKworICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUHJvcGVy
dHk+JiBjdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9jdXN0b21Qcm9wZXJ0aWVzOyB9Cisg
ICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAg
ICAgIFByb3BlcnR5IGN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgICAg
ICAKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIGFkZFN0eWxlUHJvcGVydGllcyhjb25zdCBT
dHlsZVByb3BlcnRpZXMmLCBTdHlsZVJ1bGUmLCBib29sIGlzSW1wb3J0YW50LCBib29sIGluaGVy
aXRlZE9ubHksIFByb3BlcnR5V2hpdGVsaXN0VHlwZSwgdW5zaWduZWQgbGlua01hdGNoVHlwZSwg
Q2FzY2FkZUxldmVsKTsKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0UHJvcGVydHlJbnRlcm5hbChQ
cm9wZXJ0eSYsIENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlJiwgdW5zaWduZWQgbGlua01hdGNoVHlw
ZSwgQ2FzY2FkZUxldmVsKTsKKworICAgICAgICBQcm9wZXJ0eSBtX3Byb3BlcnRpZXNbbnVtQ1NT
UHJvcGVydGllcyArIDJdOworICAgICAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzICsg
Mj4gbV9wcm9wZXJ0eUlzUHJlc2VudDsKKworICAgICAgICBWZWN0b3I8UHJvcGVydHksIDg+IG1f
ZGVmZXJyZWRQcm9wZXJ0aWVzOworICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUHJvcGVy
dHk+IG1fY3VzdG9tUHJvcGVydGllczsKKworICAgICAgICBUZXh0RGlyZWN0aW9uIG1fZGlyZWN0
aW9uOworICAgICAgICBXcml0aW5nTW9kZSBtX3dyaXRpbmdNb2RlOworICAgIH07CiAKIHByaXZh
dGU6CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBmaXhlcyB1cCB0aGUgZGVmYXVsdCBmb250IHNpemUg
aWYgaXQgZGV0ZWN0cyB0aGF0IHRoZSBjdXJyZW50IGdlbmVyaWMgZm9udCBmYW1pbHkgaGFzIGNo
YW5nZWQuIC1kd2gKQEAgLTMwNSw5ICszNTMsNyBAQCBwcml2YXRlOgogICAgIGVudW0gU2hvdWxk
VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSB7IERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNo
ZSA9IDAsIFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgfTsKICAgICB2b2lkIGFwcGx5TWF0Y2hl
ZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50KiwgU2hvdWxkVXNl
TWF0Y2hlZFByb3BlcnRpZXNDYWNoZSA9IFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwogCi0g
ICAgY2xhc3MgQ2FzY2FkZWRQcm9wZXJ0aWVzOwotCi0gICAgdm9pZCBhcHBseUNhc2NhZGVkUHJv
cGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmLCBpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQ
cm9wZXJ0eSk7CisgICAgdm9pZCBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3Bl
cnRpZXMmLCBpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgY29uc3QgTWF0Y2hS
ZXN1bHQqKTsKICAgICB2b2lkIGNhc2NhZGVNYXRjaGVzKENhc2NhZGVkUHJvcGVydGllcyYsIGNv
bnN0IE1hdGNoUmVzdWx0JiwgYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5k
SW5kZXgsIGJvb2wgaW5oZXJpdGVkT25seSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkUmVn
aW9uU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKQEAgLTM3Niw3ICs0MjIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGJvb2wgYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGU7IH0KICAgICAgICAgYm9vbCBhcHBs
eVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseVByb3Bl
cnR5VG9WaXNpdGVkTGlua1N0eWxlOyB9CiAgICAgICAgIFBlbmRpbmdJbWFnZVByb3BlcnR5TWFw
JiBwZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0
aWVzOyB9Ci0KKyAgICAgICAgCiAgICAgICAgIFZlY3RvcjxSZWZQdHI8UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uPj4mIGZpbHRlcnNXaXRoUGVuZGluZ1NWR0RvY3VtZW50cygpIHsgcmV0dXJuIG1f
ZmlsdGVyc1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRzOyB9CiAKICAgICAgICAgdm9pZCBzZXRGb250
RGlydHkoYm9vbCBpc0RpcnR5KSB7IG1fZm9udERpcnR5ID0gaXNEaXJ0eTsgfQpAQCAtNDAyLDYg
KzQ0OCwxNSBAQCBwdWJsaWM6CiAKICAgICAgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBj
c3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jc3NUb0xlbmd0aENv
bnZlcnNpb25EYXRhOyB9CiAKKyAgICAgICAgQ2FzY2FkZUxldmVsIGNhc2NhZGVMZXZlbCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FzY2FkZUxldmVsOyB9CisgICAgICAgIHZvaWQgc2V0Q2FzY2FkZUxl
dmVsKENhc2NhZGVMZXZlbCBsZXZlbCkgeyBtX2Nhc2NhZGVMZXZlbCA9IGxldmVsOyB9CisgICAg
ICAgIAorICAgICAgICBDYXNjYWRlZFByb3BlcnRpZXMqIGF1dGhvclJvbGxiYWNrKCkgY29uc3Qg
eyByZXR1cm4gbV9hdXRob3JSb2xsYmFjay5nZXQoKTsgfQorICAgICAgICBDYXNjYWRlZFByb3Bl
cnRpZXMqIHVzZXJSb2xsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclJvbGxiYWNrLmdldCgp
OyB9CisgICAgICAgIAorICAgICAgICB2b2lkIHNldEF1dGhvclJvbGxiYWNrKENhc2NhZGVkUHJv
cGVydGllcyogcm9sbGJhY2spIHsgbV9hdXRob3JSb2xsYmFjay5yZXNldChyb2xsYmFjayk7IH0K
KyAgICAgICAgdm9pZCBzZXRVc2VyUm9sbGJhY2soQ2FzY2FkZWRQcm9wZXJ0aWVzKiByb2xsYmFj
aykgeyBtX3VzZXJSb2xsYmFjay5yZXNldChyb2xsYmFjayk7IH0KKyAgICAgICAgCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdm9pZCB1cGRhdGVDb252ZXJzaW9uRGF0YSgpOwogCkBAIC00MzQsNiAr
NDg5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CiAKICAg
ICAgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBtX2Nzc1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGE7CisgICAgICAgIAorICAgICAgICBDYXNjYWRlTGV2ZWwgbV9jYXNjYWRlTGV2ZWwgeyBVc2Vy
QWdlbnRMZXZlbCB9OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FzY2FkZWRQcm9wZXJ0aWVz
PiBtX2F1dGhvclJvbGxiYWNrOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FzY2FkZWRQcm9w
ZXJ0aWVzPiBtX3VzZXJSb2xsYmFjazsKICAgICB9OwogCiAgICAgU3RhdGUmIHN0YXRlKCkgeyBy
ZXR1cm4gbV9zdGF0ZTsgfQpAQCAtNDUxLDYgKzUxMCwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBh
cHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFwcGx5
UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpOyB9CiAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9WaXNp
dGVkTGlua1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNp
dGVkTGlua1N0eWxlKCk7IH0KIAorICAgIENhc2NhZGVMZXZlbCBjYXNjYWRlTGV2ZWwoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLmNhc2NhZGVMZXZlbCgpOyB9CisgICAgdm9pZCBzZXRDYXNjYWRl
TGV2ZWwoQ2FzY2FkZUxldmVsIGxldmVsKSB7IG1fc3RhdGUuc2V0Q2FzY2FkZUxldmVsKGxldmVs
KTsgfQorICAgIAorICAgIENhc2NhZGVkUHJvcGVydGllcyogY2FzY2FkZWRQcm9wZXJ0aWVzRm9y
Um9sbGJhY2soY29uc3QgTWF0Y2hSZXN1bHQmKTsKKwogICAgIENTU1RvU3R5bGVNYXAqIHN0eWxl
TWFwKCkgeyByZXR1cm4gJm1fc3R5bGVNYXA7IH0KICAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJz
JiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkgeyByZXR1cm4gbV9pbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzOyB9CiAgICAgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
KCkgeyByZXR1cm4gbV9zdGF0ZS5mb250RGVzY3JpcHRpb24oKTsgfQpAQCAtNDY4LDcgKzUzMiw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNhblNoYXJlU3R5bGVXaXRoQ29udHJvbChTdHlsZWRF
bGVtZW50KikgY29uc3Q7CiAKLSAgICB2b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwg
Q1NTVmFsdWUqKTsKKyAgICB2b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTVmFs
dWUqLCBTZWxlY3RvckNoZWNrZXI6OkxpbmtNYXRjaE1hc2sgbGlua01hdGNoTWFzayA9IFNlbGVj
dG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0LCBjb25zdCBNYXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQg
PSBudWxscHRyKTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc29sdmVkVmFyaWFibGVWYWx1ZShD
U1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYXJpYWJsZURlcGVuZGVudFZhbHVlJik7CiAKICAgICB2
b2lkIGFwcGx5U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqKTsKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE5MTI0OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDM5IEBACisyMDE1LTEwLTE3ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIENTUzQgJ3JldmVydCcga2V5d29yZC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTcwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3Mv
cmV2ZXJ0LWNvbG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3Jl
dmVydC1jb2xvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9yZXZlcnQtbWFyZ2lu
cy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9yZXZlcnQtbWFyZ2lu
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LWluaGVy
aXRhbmNlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxl
cy9yZXZlcnQtaW5oZXJpdGFuY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvdmFy
aWFibGVzL3JldmVydC1uby1pbmhlcml0YW5jZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LW5vLWluaGVyaXRhbmNlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtdmFyaWFibGUtcmVmZXJlbmNl
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy9yZXZl
cnQtdmFyaWFibGUtcmVmZXJlbmNlLmh0bWw6IEFkZGVkLgorCisyMDE1LTEwLTE3ICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRp
b24gKE9PUFMhKS4KKyAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3MvcmV2ZXJ0
LWNvbG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3JldmVydC1j
b2xvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9yZXZlcnQtbWFyZ2lucy1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9yZXZlcnQtbWFyZ2lucy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LWluaGVyaXRhbmNl
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy9yZXZl
cnQtaW5oZXJpdGFuY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvdmFyaWFibGVz
L3JldmVydC1uby1pbmhlcml0YW5jZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LW5vLWluaGVyaXRhbmNlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtdmFyaWFibGUtcmVmZXJlbmNlLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtdmFy
aWFibGUtcmVmZXJlbmNlLmh0bWw6IEFkZGVkLgorCiAyMDE1LTEwLTE3ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgdGQgYW5kIHRoIHNob3VsZCB1c2UgSFRNTFRh
YmxlRGF0YUNlbGxFbGVtZW50IGFuZCBIVE1MVGFibGVIZWFkZXJDZWxsRWxlbWVudCBpbnRlcmZh
Y2VzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXZlcnQtY29sb3ItZXhwZWN0ZWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXZlcnQtY29sb3ItZXhwZWN0
ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3JldmVydC1jb2xv
ci1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKKzxoZWFkPgor
PHN0eWxlPgoraHRtbCB7CisgIGZvbnQtc2l6ZTogc21hbGw7CisgIGJhY2tncm91bmQtY29sb3I6
ICNGMEYwRjA7CisgIGNvbG9yOiBibHVlOworfQorCitibG9ja3F1b3RlIHsgYmFja2dyb3VuZC1j
b2xvcjogc2t5Ymx1ZTsgfQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8YmxvY2txdW90
ZT5UaGlzIHRleHQgc2hvdWxkIGJlIGJsdWUuPC9ibG9ja3F1b3RlPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmV2ZXJ0LWNvbG9yLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmV2ZXJ0LWNvbG9yLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXZlcnQtY29sb3IuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE5IEBACis8aGVhZD4KKzxzdHlsZT4KK2h0bWwgeworICBmb250LXNpemU6
IHNtYWxsOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOworICBjb2xvcjogYmx1ZTsKK30K
KworYmxvY2txdW90ZSB7CisgIGJhY2tncm91bmQtY29sb3I6IHNreWJsdWU7CisgIGNvbG9yOiBy
ZWQ7CisgIGNvbG9yOiByZXZlcnQ7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8Ymxv
Y2txdW90ZSBpZD0icXVvdGUiPlRoaXMgdGV4dCBzaG91bGQgYmUgYmx1ZS48L2Jsb2NrcXVvdGU+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXZlcnQtbWFy
Z2lucy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3Jl
dmVydC1tYXJnaW5zLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9yZXZlcnQtbWFyZ2lucy1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTQgQEAKKzxoZWFkPgorPHN0eWxlPgorYmxvY2txdW90ZSB7CisgIG1hcmdpbi10b3A6
MDsKKyAgbWFyZ2luLWJvdHRvbTowOworICBib3JkZXI6MXB4IHNvbGlkIGJsYWNrOworfQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGJsb2NrcXVvdGUgaWQ9InF1b3RlIj5UaGlzIGJsb2Nr
cXVvdGUgc2hvdWxkIGhhdmUgdXNlciBhZ2VudCBtYXJnaW5zIGZvciB0aGUgbGVmdCBhbmQgcmln
aHQgYnV0IHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIHNob3VsZCBiZSAwLjwvYmxvY2txdW90
ZT4KKzxibG9ja3F1b3RlIGlkPSJxdW90ZSI+VGhpcyBibG9ja3F1b3RlIHNob3VsZCBoYXZlIHVz
ZXIgYWdlbnQgbWFyZ2lucyBmb3IgdGhlIGxlZnQgYW5kIHJpZ2h0IGJ1dCB0aGUgdG9wIGFuZCBi
b3R0b20gbWFyZ2lucyBzaG91bGQgYmUgMC48L2Jsb2NrcXVvdGU+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXZlcnQtbWFyZ2lucy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3JldmVydC1tYXJnaW5zLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXZlcnQtbWFyZ2lucy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKKzxoZWFkPgorPHN0eWxlPgorYmxvY2txdW90ZSB7Cisg
IG1hcmdpbjowOworICBtYXJnaW4tcmlnaHQ6cmV2ZXJ0OworICBtYXJnaW4tbGVmdDpyZXZlcnQ7
CisgIGJvcmRlcjoxcHggc29saWQgYmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
Cis8YmxvY2txdW90ZSBpZD0icXVvdGUiPlRoaXMgYmxvY2txdW90ZSBzaG91bGQgaGF2ZSB1c2Vy
IGFnZW50IG1hcmdpbnMgZm9yIHRoZSBsZWZ0IGFuZCByaWdodCBidXQgdGhlIHRvcCBhbmQgYm90
dG9tIG1hcmdpbnMgc2hvdWxkIGJlIDAuPC9ibG9ja3F1b3RlPgorPGJsb2NrcXVvdGUgaWQ9InF1
b3RlIj5UaGlzIGJsb2NrcXVvdGUgc2hvdWxkIGhhdmUgdXNlciBhZ2VudCBtYXJnaW5zIGZvciB0
aGUgbGVmdCBhbmQgcmlnaHQgYnV0IHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIHNob3VsZCBi
ZSAwLjwvYmxvY2txdW90ZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtaW5oZXJpdGFuY2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LWluaGVyaXRhbmNl
LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJp
YWJsZXMvcmV2ZXJ0LWluaGVyaXRhbmNlLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT48aHRtbD48aGVhZD48dGl0bGU+
Q1NTIFJlZnRlc3QgUmVmZXJlbmNlPC90aXRsZT4KKzxsaW5rIGhyZWY9Im1haWx0bzpjYW1AbWNj
LmlkLmF1IiByZWw9ImF1dGhvciIgdGl0bGU9IkNhbWVyb24gTWNDb3JtYWNrIj4KKzxzdHlsZT4K
K3AgeworICBjb2xvcjogZ3JlZW47Cit9Cis8L3N0eWxlPgorPC9oZWFkPjxib2R5PjxwPlRoaXMg
dGV4dCBtdXN0IGJlIGdyZWVuLjwvcD4KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1p
bmhlcml0YW5jZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3Zhcmlh
Ymxlcy9yZXZlcnQtaW5oZXJpdGFuY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtaW5oZXJpdGFuY2UuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPjxodG1sPjxoZWFkPjx0
aXRsZT5DU1MgVGVzdDogVGVzdCBkZWNsYXJpbmcgYSB2YXJpYWJsZSB3aG9zZSB2YWx1ZSBpcyAi
cmV2ZXJ0IiB3aGVyZSB0aGVyZSBpcyBhIHZhcmlhYmxlIHRvIGluaGVyaXQgZnJvbS48L3RpdGxl
PgorPHN0eWxlPgorYm9keSB7CisgIC0tYTogZ3JlZW47CisgIGNvbG9yOiBjcmltc29uOworfQor
cCB7CisgIGNvbG9yOiByZWQ7Cit9CitwIHsKKyAgY29sb3I6IG9yYW5nZTsKKyAgLS1hOiByZXZl
cnQ7CisgIGNvbG9yOiB2YXIoLS1hKTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+PHA+VGhp
cyB0ZXh0IG11c3QgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0
LW5vLWluaGVyaXRhbmNlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1uby1pbmhlcml0YW5jZS1leHBlY3RlZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1uby1p
bmhlcml0YW5jZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+PGh0bWw+PGhlYWQ+PHRpdGxlPkNTUyBSZWZ0ZXN0IFJl
ZmVyZW5jZTwvdGl0bGU+Cis8bGluayBocmVmPSJtYWlsdG86Y2FtQG1jYy5pZC5hdSIgcmVsPSJh
dXRob3IiIHRpdGxlPSJDYW1lcm9uIE1jQ29ybWFjayI+Cis8c3R5bGU+CitwIHsKKyAgY29sb3I6
IGdyZWVuOworfQorPC9zdHlsZT4KKzwvaGVhZD48Ym9keT48cD5UaGlzIHRleHQgbXVzdCBiZSBn
cmVlbi48L3A+Cis8L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtbm8taW5oZXJpdGFuY2Uu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0
LW5vLWluaGVyaXRhbmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy92YXJpYWJsZXMvcmV2ZXJ0LW5vLWluaGVyaXRhbmNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT48aHRtbD48aGVhZD48dGl0bGU+
Q1NTIFRlc3Q6IFRlc3QgZGVjbGFyaW5nIGEgdmFyaWFibGUgd2hvc2UgdmFsdWUgaXMgInJldmVy
dCIgd2hlcmUgdGhlcmUgaXMgbm8gdmFyaWFibGUgdG8gaW5oZXJpdCBmcm9tLjwvdGl0bGU+Cis8
c3R5bGU+CitwIHsKKyAgY29sb3I6IHJlZDsKK30KK3AgeworICBjb2xvcjogb3JhbmdlOworICAt
LWE6IHJldmVydDsKKyAgY29sb3I6IHZhcigtLWEsZ3JlZW4pOworfQorPC9zdHlsZT4KKzwvaGVh
ZD48Ym9keT48cD5UaGlzIHRleHQgbXVzdCBiZSBncmVlbi48L3A+Cis8L2JvZHk+PC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3Zh
cmlhYmxlcy9yZXZlcnQtdmFyaWFibGUtcmVmZXJlbmNlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC12YXJpYWJsZS1yZWZl
cmVuY2UtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L3ZhcmlhYmxlcy9yZXZlcnQtdmFyaWFibGUtcmVmZXJlbmNlLWV4cGVjdGVkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT48aHRtbD48
aGVhZD48dGl0bGU+Q1NTIFJlZnRlc3QgUmVmZXJlbmNlPC90aXRsZT4KKzxsaW5rIGhyZWY9Im1h
aWx0bzpjYW1AbWNjLmlkLmF1IiByZWw9ImF1dGhvciIgdGl0bGU9IkNhbWVyb24gTWNDb3JtYWNr
Ij4KKzxzdHlsZT4KK3AgeworICBjb2xvcjogZ3JlZW47Cit9Cis8L3N0eWxlPgorPC9oZWFkPjxi
b2R5PjxwPlRoaXMgdGV4dCBtdXN0IGJlIGdyZWVuLjwvcD4KKzwvYm9keT48L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFi
bGVzL3JldmVydC12YXJpYWJsZS1yZWZlcmVuY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LXZhcmlhYmxlLXJlZmVyZW5jZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC12YXJp
YWJsZS1yZWZlcmVuY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACis8IURP
Q1RZUEUgaHRtbD4KKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPjxodG1sPjxoZWFkPjx0aXRsZT5DU1MgVGVzdDogVGVzdCBkZWNs
YXJpbmcgYSB2YXJpYWJsZSB3aG9zZSB2YWx1ZSBjb25zaXN0cyBvZiBhIHJlZmVyZW5jZSB0byBh
IHZhcmlhYmxlIHdob3NlIHZhbHVlIGlzICJyZXZlcnQiLjwvdGl0bGU+Cis8c3R5bGU+Citib2R5
IHsKKyAgLS1iOiBncmVlbjsKKyAgY29sb3I6IHJlZDsKK30KK3AgeworICBjb2xvcjogb3Jhbmdl
OworICAtLWE6IHZhcigtLWIpOworICAtLWI6IHJldmVydDsKKyAgY29sb3I6IHZhcigtLWEpOwor
fQorPC9zdHlsZT4KKzwvaGVhZD48Ym9keT48cD5UaGlzIHRleHQgbXVzdCBiZSBncmVlbi48L3A+
Cis8L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263387</attachid>
            <date>2015-10-17 14:41:04 -0700</date>
            <delta_ts>2015-10-17 14:46:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>65173</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTI0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyOSBAQAorMjAxNS0xMC0xNyAgRGF2aWQg
SHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBDU1M0ICdy
ZXZlcnQnIGtleXdvcmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDk3MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBuZXcgdGVzdHMgaW4gZmFzdC9jc3MgYW5kIGZhc3QvY3NzL3ZhcmlhYmxl
cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENTU1JldmVydFZhbHVlIHRvIHRoZSBw
cm9qZWN0IGFuZCBtYWtlZmlsZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlS2V5d29yZFZhbHVlKToKKyAgICAgICAgTWFrZSBzdXJlIHRv
IGhhbmRsZSAicmV2ZXJ0IiBpbiB0aGUga2V5d29yZCBwYXJzaW5nIHBhdGggKGFsb25nIHdpdGgg
aW5oZXJpdC9pbml0aWFsL3Vuc2V0KS4KKworICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDdXN0b21Qcm9w
ZXJ0eURlY2xhcmF0aW9uKToKKyAgICAgICAgQXQgdGhlIHBhcnNlciBsZXZlbCwgInJldmVydCIg
aXMganVzdCBsaWtlIGluaGVyaXQvaW5pdGlhbC91bnNldCBhbmQgZ2V0cyBpdHMgb3duIHNwZWNp
YWwKKyAgICAgICAgc2luZ2xldG9uIHZhbHVlLCBDU1NSZXZlcnRWYWx1ZS4KKworICAgICAgICAq
IGNzcy9DU1NSZXZlcnRWYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmV2
ZXJ0VmFsdWU6OmN1c3RvbUNTU1RleHQpOgorICAgICAgICAqIGNzcy9DU1NSZXZlcnRWYWx1ZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1JldmVydFZhbHVlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUmV2ZXJ0VmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NSZXZlcnRWYWx1ZTo6Q1NTUmV2ZXJ0VmFsdWUpOgorICAgICAgICBUaGlzIHZhbHVlIGlz
IGlkZW50aWNhbCB0byB0aGUgaW5oZXJpdC9pbml0aWFsL3Vuc2V0IHZhbHVlcywgaS5lLiwgaXRz
IG93biBzcGVjaWFsIHZhbHVlCisgICAgICAgIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUg
YSByZXZlcnQgd2hlbiBkb2luZyBzdHlsZSByZXNvbHV0aW9uLgorCisgICAgICAgICogY3NzL0NT
U1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpjc3NWYWx1ZVR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6ZGVzdHJveSk6
CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6
aXNJbmhlcml0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNJbml0aWFs
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzVW5zZXRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNSZXZlcnRWYWx1ZSk6CisgICAgICAgIEFkZCB0aGUg
UmV2ZXJ0Q2xhc3MgdG8gQ1NTVmFsdWUgYW5kIG1ha2Ugc3VyZSBpdCBpcyBoYW5kbGVkIGluIGFs
bCB0aGUgYXBwcm9wcmlhdGUgbWV0aG9kcy4KKworICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdv
cmRzLmluOgorICAgICAgICBBZGQgdGhlICJyZXZlcnQiIGtleXdvcmQgdG8gdGhlIGxpc3Qgb2Yg
YWxsb3dlZCBDU1Mga2V5d29yZHMuCisKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29sLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Q1NTVmFsdWVQb29sKToKKyAgICAgICAg
KiBjc3MvQ1NTVmFsdWVQb29sLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBvb2w6OmNy
ZWF0ZVJldmVydFZhbHVlKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGEgQ1NTUmV2ZXJ0VmFs
dWUgc2luZ2xldG9uLCBqdXN0IGxpa2UgaW5oZXJpdC91bnNldC9pbml0aWFsLgorCisgICAgICAg
ICogY3NzL0ZvbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udExvYWRlcjo6cmVz
b2x2ZUZvbnRTdHlsZSk6CisgICAgICAgIEFkZCAidW5zZXQiIGFuZCAicmV2ZXJ0IiBhcyBzcGVj
aWFsIGtleXdvcmRzIHRvIGJlIGlnbm9yZWQuIFRoaXMgY29kZSBzZWVtcyB0byBiZSB0dXJuZWQg
b2ZmLAorICAgICAgICBidXQgcGF0Y2hpbmcgaXQgYW55d2F5LgorCisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oOgorICAgICAgICBBZGQgYSBNYXRjaERlZmF1bHQgdmFsdWUgb2YgMCB0
byB0aGUgTGlua01hdGNoTWFzay4gVGhpcyBlbmFibGVzIGl0IHRvIGJlIHVzZWQgYXMgYW4gaW5k
ZXgKKyAgICAgICAgdG8gdGhlIGNvcnJlY3QgdmFsdWUgaW4gUHJvcGVydHkgKGluIHRoZSBzdHls
ZSByZXNvbHV0aW9uIGNvZGUpLgorCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OmluaXRGb3JTdHlsZVJlc29s
dmUpOgorICAgICAgICBEZWxldGUgYW55IGxpbmdlcmluZyBvbGQgQ2FzY2FkZWRQcm9wZXJ0eSBy
b2xsYmFja3MgZm9yIFVBL3VzZXIgcnVsZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5
TWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICBQYXNzIGFsb25nIHRoZSBNYXRjaFJlc3VsdCBh
cyBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlciwgc2luY2Ugd2UgbmVlZCBpdCB0byBsYXppbHkgY29t
cHV0ZQorICAgICAgICB0aGUgY2FzY2FkZSByb2xsYmFja3MgaWYgdGhlICJyZXZlcnQiIGtleXdv
cmQgaXMgZW5jb3VudGVyZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNh
c2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKToKKyAgICAgICAgVGhpcyBtZXRob2Qgd2lsbCBs
YXppbHkgY3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgQ2FzY2FkZWRQcm9wZXJ0aWVzIHBvaW50ZXIg
dGhhdCBpcyBjYWNoZWQKKyAgICAgICAgaW4gdGhlIFN0eWxlUmVzb2x2ZXIncyBzdGF0ZS4gVGhp
cyB3aWxsIGNvbnRhaW4gb25seSBVQSBydWxlcyAoZm9yIHVzZXIgcmV2ZXJ0cykgYW5kIFVBL3Vz
ZXIKKyAgICAgICAgcnVsZXMgKGZvciBhdXRob3IgcmV2ZXJ0cykuIFRoZXNlIHdpbGwgb25seSBi
ZSBjb21wdXRlZCBhdCBtb3N0IG9uY2UgZm9yIGEgZ2l2ZW4gZWxlbWVudAorICAgICAgICB3aGVu
IGRvaW5nIGEgcmV2ZXJzaW9uLCBhbmQgdGhleSB3aWxsIGJlIGNvbXB1dGVkIGxhemlseSwgaS5l
Liwgb25seSBpZiBhIHJldmVydCBpcworICAgICAgICByZXF1ZXN0ZWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICBQYXNzIGFsb25n
IHRoZSBMaW5rTWF0Y2hNYXNrIGFuZCB0aGUgTWF0Y2hSZXN1bHQgdG8gYXBwbHlQcm9wZXJ0eS4g
VGhpcyB3YXkgd2Uga25vdyBzcGVjaWZpY2FsbHkKKyAgICAgICAgd2hpY2ggbGluayB0eXBlIHdl
IHdlcmUgY29tcHV0aW5nIGlmIHdlIGhhdmUgdG8gcmV2ZXJ0IChzbyB0aGF0IHdlIHJvbGwgYmFj
ayBhbmQgbG9vayBhdCB0aGUKKyAgICAgICAgc2FtZSBpbmRleCBpbiB0aGUgcmV2ZXJ0ZWQgdmVy
c2lvbikuIFRoZSBNYXRjaFJlc3VsdCBpcyBwYXNzZWQgYWxvbmcgYmVjYXVzZSBpdCBpcyBuZWVk
ZWQKKyAgICAgICAgdG8gYnVpbGQgdGhlIENhc2NhZGVkUHJvcGVydGllcyByb2xsYmFja3MuCisK
KyAgICAgICAgVGhlIGJhc2ljIGlkZWEgaXMgdGhhdCBpZiBhIHJldmVydCBpcyBlbmNvdW50ZXJl
ZCwgdGhlIGxldmVsIHRoYXQgdGhlIHJ1bGUgY2FtZSBmcm9tIGlzCisgICAgICAgIGNoZWNrZWQu
IElmIGl0IGlzIFVBIGxldmVsLCBqdXN0IHRyZWF0IGFzICJ1bnNldC4iIElmIGl0IGlzIGF1dGhv
ciBvciB1c2VyIGxldmVsLCBnZXQKKyAgICAgICAgdGhlIGNvcnJlY3QgQ2FzY2FkZWRQcm9wZXJ0
aWVzIHJvbGxiYWNrIGFuZCByZXBlYXQgdGhlIGFwcGx5UHJvcGVydHkgdXNpbmcgdGhlIHByb3Bl
cnR5CisgICAgICAgIGZvdW5kIGluIHRoZSByb2xsYmFjay4gSWYgdGhlIHByb3BlcnR5IGlzIG5v
dCBwcmVzZW50IGluIHRoZSBjYXNjYWRlIHJvbGxiYWNrLCB0aGVuIHRoZQorICAgICAgICByZXZl
cnQgYmVjb21lcyBhbiB1bnNldC4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
Q2FzY2FkZWRQcm9wZXJ0aWVzOjpoYXNDdXN0b21Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OmN1c3RvbVByb3BlcnR5KToKKyAg
ICAgICAgSGVscGVycyB1c2VkIGJ5IGFwcGx5UHJvcGVydHkgdG8gY2hlY2sgb24gY3VzdG9tIHBy
b3BlcnRpZXMsIHNpbmNlIHRoZXkgY2FuIHJldmVydCB0b28KKyAgICAgICAganVzdCBsaWtlIGEg
cmVndWxhciBwcm9wZXJ0eSBjYW4uCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OkNhc2NhZGVkUHJvcGVydGllczo6c2V0UHJvcGVydHlJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OnNldERlZmVycmVkKToK
KyAgICAgICAgUGFzc2luZyBhbG9uZyB0aGUgQ2FzY2FkZUxldmVsIChVQSwgVXNlciwgQXV0aG9y
KSBzbyB0aGF0IGl0IGNhbiBiZSBzdG9yZWQgaW4gdGhlIFByb3BlcnR5LgorICAgICAgICBUaGlz
IHdheSB3aGVuIHdlIGRvIHByb3BlcnR5IGFwcGxpY2F0aW9uLCB3ZSBhbHdheXMga25vdyB3aGVy
ZSB0aGUgcnVsZSBjYW1lIGZyb20gc28KKyAgICAgICAgdGhhdCB0aGUgcmV2ZXJzaW9uIGNhbiBi
ZSBoYW5kbGVkIHByb3Blcmx5LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpD
YXNjYWRlZFByb3BlcnRpZXM6OmFkZFN0eWxlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpjYXNjYWRlTGV2ZWxGb3JJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjpDYXNjYWRlZFByb3BlcnRpZXM6OmFkZE1hdGNoZXMpOgorICAgICAgICBXaGVuIHN0eWxlIHBy
b3BlcnRpZXMgYXJlIGFkZGVkLCBhbHNvIGZpZ3VyZSBvdXQgdGhlIENhc2NhZGVMZXZlbCBhbmQg
cGFzcyBpdCBhbG9uZyB0byBiZQorICAgICAgICBzdG9yZWQgaW4gdGhlIFByb3BlcnR5LiBXZSB1
c2UgdGhlIE1hdGNoUmVzdWx0J3MgcmFuZ2VzIHRvIGtub3cgd2hlcmUgYSBwcm9wZXJ0eSBjb21l
cyBmcm9tLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3Bl
cnRpZXM6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHk6OmFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKToKKyAgICAg
ICAgUGFzcyBhbG9uZyB0aGUgTWF0Y2hSZXN1bHQgc28gd2Uga25vdyBob3cgdG8gYnVpbGQgdGhl
IHJvbGxiYWNrLgorCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpjYXNjYWRlTGV2ZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldENhc2NhZGVMZXZlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6YXV0aG9yUm9sbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnVzZXJSb2xsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6c2V0QXV0aG9yUm9sbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFVzZXJSb2xsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpjYXNjYWRlTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNv
bHZlcjo6c2V0Q2FzY2FkZUxldmVsKToKKyAgICAgICAgTW92ZSBDYXNjYWRlZFByb3BlcnRpZXMg
aW50byB0aGUgaGVhZGVyLiBBZGQgQ2FzY2FkZUxldmVsIHRvIFByb3BlcnR5LiBBZGQgdGhlIGxl
dmVsIGFuZAorICAgICAgICByb2xsYmFja3MgdG8gdGhlIHJlc29sdmVyJ3Mgc3RhdGUuCisKIDIw
MTUtMTAtMTcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29j
b2FdIFN0b3AgdXNpbmcgV0tBWFJlZ2lzdGVyUmVtb3RlQXBwCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTkxMjQ5KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMzgsNiArMTMzOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
ICAgICBjc3MvQ1NTUHJvcGVydHkuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5j
cHAKICAgICBjc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAorICAgIGNzcy9DU1NSZXZlcnRWYWx1ZS5j
cHAKICAgICBjc3MvQ1NTUnVsZS5jcHAKICAgICBjc3MvQ1NTUnVsZUxpc3QuY3BwCiAgICAgY3Nz
L0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkxMjQ5KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01NDk5LDYgKzU0OTksOCBAQAogCQlCQzc3OUUxNzFCQjIyN0NBMDBDQUE4QkYgLyog
U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNzc5RTE1MUJCMjI2QTIwMENBQThCRiAvKiBTdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUJDN0Q4RkVGMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Q4RkVEMUJEMDNC
NjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmNwcCAqLzsgfTsKIAkJQkM3RDhGRjAxQkQwM0I2
NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Q4RkVFMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZh
bHVlLmggKi87IH07CisJCUJDN0Q4RkYzMUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdE
OEZGMTFCRDFBNDc5MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0VmFsdWUuY3BwICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCUJDN0Q4RkY0MUJEMUE0NzkwMEZGRTU0MCAvKiBD
U1NSZXZlcnRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM3RDhGRjIxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggKi87IHNl
dHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlE
MDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM3RkE2
MjAwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTYxRTBEMUYwQ0JEMDBEQjIyQTkgLyog
TGl2ZU5vZGVMaXN0LmNwcCAqLzsgfTsKIAkJQkM3RkE2MjEwRDFGMENCRDAwREIyMkE5IC8qIExp
dmVOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM3RkE2MUYwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5oICovOyB9OwpAQCAt
MTMyMTksNiArMTMyMjEsOCBAQAogCQlCQzdCMkFGODA0NTA4MjQxMDBBODAwMEYgLyogU2Nyb2xs
YmFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcm9sbGJhci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKIAkJQkM3RDhGRUQxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVW5zZXRWYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0Q4RkVFMUJEMDNCNjQwMEZGRTU0
MCAvKiBDU1NVbnNldFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENT
U1Vuc2V0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3RDhGRjExQkQx
QTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENTU1JldmVydFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkM3RDhGRjIxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1JldmVydFZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9i
c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZU9ic2VydmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0ZBNjFFMEQxRjBDQkQwMERCMjJB
OSAvKiBMaXZlTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTGl2ZU5vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3RkE2
MUYwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMaXZlTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIzMDgxLDYgKzIzMDg1LDggQEAKIAkJCQk5MzYyNjQwQTBERTExMzdEMDA5RDVBMDAgLyog
Q1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5oICovLAogCQkJCUJDNUExMkREMERDMDQxNDgwMEM5QUZB
RCAvKiBDU1NSZWZsZWN0VmFsdWUuY3BwICovLAogCQkJCUJDNUExMkRFMERDMDQxNDgwMEM5QUZB
RCAvKiBDU1NSZWZsZWN0VmFsdWUuaCAqLywKKwkJCQlCQzdEOEZGMTFCRDFBNDc5MDBGRkU1NDAg
LyogQ1NTUmV2ZXJ0VmFsdWUuY3BwICovLAorCQkJCUJDN0Q4RkYyMUJEMUE0NzkwMEZGRTU0MCAv
KiBDU1NSZXZlcnRWYWx1ZS5oICovLAogCQkJCUE4MEU2Q0RDMEExOTg5Q0EwMDdGQjhDNSAvKiBD
U1NSdWxlLmNwcCAqLywKIAkJCQlBODBFNkNFMzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUnVsZS5o
ICovLAogCQkJCTE0Q0Y3QTcwMDlGNUNGOUEwMEVCMzY2NSAvKiBDU1NSdWxlLmlkbCAqLywKQEAg
LTI1NTY0LDYgKzI1NTcwLDcgQEAKIAkJCQlBODEzNjlEQTA5NzM3NEY2MDBENzQ0NjMgLyogSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUQwMTAwOTEyN0U2NDJB
MDAxNTAzNUYgLyogSFRNTE91dHB1dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3
Q0I1MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MUGFyYWdyYXBoRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkM3RDhGRjQxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODcxRDQ1ODBBMTI3Q0JDMDBCMTJBNjggLyogSFRNTFBhcmFtRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFMkEzMDcxMjNFOURDMDAwOUZFMTJBIC8qIEhU
TUxQYXJzZXJJZGlvbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3M0Y0MThBMTY5Qjk1RkYwMDA2
QkY2MCAvKiBIVE1MUGFyc2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDYwMSw2ICsz
MDYwOCw3IEBACiAJCQkJNDRDMzYzRjEwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCThDNkVBNjE5MTFFRjdFMDQwMEZE
OEVFMyAvKiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNE
RDcwODk2MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQkM3RDhGRjMxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5RTkxMUNBMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9w
ZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1REZFOEY1NjBEMTY0NzdCMDA3NkU5Mzcg
LyogU2NoZWR1bGVkQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNjJDN0Y0MTFGNzdF
RkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1tCShyZXZpc2lvbiAxOTEyNDkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTI1LDYgKzEyNSw3IEBAIENsYXNzIGtpdENsYXNzKFdlYkNvcmU6OkNTU1ZhbHVlKiBpbXBsKQog
ICAgICAgICBjYXNlIFdlYkNvcmU6OkNTU1ZhbHVlOjpDU1NfSU5IRVJJVDoKICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpDU1NWYWx1ZTo6Q1NTX0lOSVRJQUw6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6
Q1NTVmFsdWU6OkNTU19VTlNFVDoKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpDU1NWYWx1ZTo6Q1NT
X1JFVkVSVDoKICAgICAgICAgICAgIHJldHVybiBbRE9NQ1NTVmFsdWUgY2xhc3NdOwogICAgICAg
ICBjYXNlIFdlYkNvcmU6OkNTU1ZhbHVlOjpDU1NfQ1VTVE9NOgogICAgICAgICAgICAgcmV0dXJu
IFtET01DU1NWYWx1ZSBjbGFzc107CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2
aXNpb24gMTkxMjQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1h
cHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCiAjaW5jbHVkZSAi
Q1NTUmVmbGVjdFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUmV2ZXJ0VmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTU3R5bGVTaGVldC5oIgpAQCAtMTE5NywxMCArMTE5OCwxMCBAQCBzdGF0aWMgQ1NTUGFyc2Vy
OjpQYXJzZVJlc3VsdCBwYXJzZUtleXdvCiAgICAgaWYgKCFpc0tleXdvcmRQcm9wZXJ0eUlEKHBy
b3BlcnR5SWQpKSB7CiAgICAgICAgIC8vIEFsbCBwcm9wZXJ0aWVzIGFjY2VwdCB0aGUgdmFsdWVz
IG9mICJpbml0aWFsIiBhbmQgImluaGVyaXQiLgogICAgICAgICBTdHJpbmcgbG93ZXJDYXNlU3Ry
aW5nID0gc3RyaW5nLmxvd2VyKCk7Ci0gICAgICAgIGlmIChsb3dlckNhc2VTdHJpbmcgIT0gImlu
aXRpYWwiICYmIGxvd2VyQ2FzZVN0cmluZyAhPSAiaW5oZXJpdCIgJiYgbG93ZXJDYXNlU3RyaW5n
ICE9ICJ1bnNldCIpCisgICAgICAgIGlmIChsb3dlckNhc2VTdHJpbmcgIT0gImluaXRpYWwiICYm
IGxvd2VyQ2FzZVN0cmluZyAhPSAiaW5oZXJpdCIgJiYgbG93ZXJDYXNlU3RyaW5nICE9ICJ1bnNl
dCIgJiYgbG93ZXJDYXNlU3RyaW5nICE9ICJyZXZlcnQiKQogICAgICAgICAgICAgcmV0dXJuIENT
U1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkVycm9yOwogCi0gICAgICAgIC8vIFBhcnNlIGluaXRpYWwv
aW5oZXJpdC91bnNldCBzaG9ydGhhbmRzIHVzaW5nIHRoZSBDU1NQYXJzZXIuCisgICAgICAgIC8v
IFBhcnNlIGluaXRpYWwvaW5oZXJpdC91bnNldC9yZXZlcnQgc2hvcnRoYW5kcyB1c2luZyB0aGUg
Q1NTUGFyc2VyLgogICAgICAgICBpZiAoc2hvcnRoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJZCku
bGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJy
b3I7CiAgICAgfQpAQCAtMTIxOSw2ICsxMjIwLDggQEAgc3RhdGljIENTU1BhcnNlcjo6UGFyc2VS
ZXN1bHQgcGFyc2VLZXl3bwogICAgICAgICB2YWx1ZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKTsKICAgICBlbHNlIGlmICh2YWx1ZUlEID09
IENTU1ZhbHVlVW5zZXQpCiAgICAgICAgIHZhbHVlID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVVbnNldFZhbHVlKCk7CisgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVJl
dmVydCkKKyAgICAgICAgdmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVJl
dmVydFZhbHVlKCk7CiAgICAgZWxzZSBpZiAoaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVl
KHByb3BlcnR5SWQsIHZhbHVlSUQsIHBhcnNlckNvbnRleHQsIHN0eWxlU2hlZXRDb250ZW50cykp
CiAgICAgICAgIHZhbHVlID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUodmFsdWVJRCk7CiAgICAgZWxzZQpAQCAtMTk2NSw2ICsxOTY4LDExIEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKHByb3BJZCwgY3NzVmFs
dWVQb29sLmNyZWF0ZVVuc2V0VmFsdWUoKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVJldmVydCkgeworICAgICAgICBpZiAo
bnVtICE9IDEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZEV4cGFuZGVk
UHJvcGVydHlGb3JWYWx1ZShwcm9wSWQsIGNzc1ZhbHVlUG9vbC5jcmVhdGVSZXZlcnRWYWx1ZSgp
LCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgaWYg
KHByb3BJZCA9PSBDU1NQcm9wZXJ0eUFsbCkKQEAgLTQyMTMsNiArNDIyMSw4IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZUN1c3RvbVByb3BlcnR5RGVjbGEKICAgICAgICAgdmFsdWUgPSBjc3NWYWx1
ZVBvb2wuY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKTsKICAgICBlbHNlIGlmIChpZCA9PSBD
U1NWYWx1ZVVuc2V0KQogICAgICAgICB2YWx1ZSA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVVbnNldFZh
bHVlKCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXZlcnQpCisgICAgICAgIHZhbHVl
ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVJldmVydFZhbHVlKCk7CiAgICAgZWxzZSB7CiAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlRnJv
bVBhcnNlclZhbHVlTGlzdCgqbV92YWx1ZUxpc3QpOwogICAgICAgICBpZiAobV92YWx1ZUxpc3Qt
PmNvbnRhaW5zVmFyaWFibGVzKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmV2ZXJ0
VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmV2ZXJ0VmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q1NTUmV2ZXJ0VmFsdWUuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBDU1NSZXZlcnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUmV2ZXJ0Iik7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1ZS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1JldmVydFZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ1NTUmV2ZXJ0VmFsdWVfaAorI2RlZmluZSBDU1NS
ZXZlcnRWYWx1ZV9oCisKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTUmV2ZXJ0VmFsdWUg
OiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q1NTUmV2ZXJ0VmFs
dWU+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NSZXZl
cnRWYWx1ZSk7CisgICAgfQorCisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKKwor
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1JldmVydFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorCitwcml2YXRlOgorICAgIENTU1JldmVydFZhbHVlKCkKKyAgICAgICAgOiBDU1NWYWx1
ZShSZXZlcnRDbGFzcykKKyAgICB7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxVRShDU1NSZXZlcnRWYWx1ZSwgaXNS
ZXZlcnRWYWx1ZSgpKQorCisjZW5kaWYgLy8gQ1NTUmV2ZXJ0VmFsdWVfaApJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuY3BwCShyZXZpc2lvbiAxOTEyNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDggQEAgQ1NTVmFsdWU6
OlR5cGUgQ1NTVmFsdWU6OmNzc1ZhbHVlVHlwZSgpIAogICAgICAgICByZXR1cm4gQ1NTX0lOSVRJ
QUw7CiAgICAgaWYgKGlzVW5zZXRWYWx1ZSgpKQogICAgICAgICByZXR1cm4gQ1NTX1VOU0VUOwor
ICAgIGlmIChpc1JldmVydFZhbHVlKCkpCisgICAgICAgIHJldHVybiBDU1NfUkVWRVJUOwogICAg
IHJldHVybiBDU1NfQ1VTVE9NOwogfQogCkBAIC0yMDMsNiArMjA1LDggQEAgYm9vbCBDU1NWYWx1
ZTo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJiBvdAogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVD
U1NWYWx1ZXM8Q1NTSW5pdGlhbFZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIFVu
c2V0Q2xhc3M6CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NVbnNldFZh
bHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFJldmVydENsYXNzOgorICAgICAgICAg
ICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTUmV2ZXJ0VmFsdWU+KCp0aGlzLCBvdGhlcik7
CiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKICAgICAgICAgY2FzZSBHcmlkTGluZU5hbWVz
Q2xhc3M6CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NHcmlkTGluZU5h
bWVzVmFsdWU+KCp0aGlzLCBvdGhlcik7CkBAIC0zMDUsNiArMzA5LDggQEAgU3RyaW5nIENTU1Zh
bHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0luaXRpYWxW
YWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKICAgICBjYXNlIFVuc2V0Q2xhc3M6CiAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxDU1NVbnNldFZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgp
OworICAgIGNhc2UgUmV2ZXJ0Q2xhc3M6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NSZXZl
cnRWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZ
T1VUKQogICAgIGNhc2UgR3JpZExpbmVOYW1lc0NsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwpAQCAtNDE3
LDYgKzQyMyw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgIGNhc2UgVW5zZXRDbGFz
czoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1Vuc2V0VmFsdWU+KHRoaXMpOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBSZXZlcnRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0
PENTU1JldmVydFZhbHVlPih0aGlzKTsKKyAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShDU1Nf
R1JJRF9MQVlPVVQpCiAgICAgY2FzZSBHcmlkTGluZU5hbWVzQ2xhc3M6CiAgICAgICAgIGRlbGV0
ZSBkb3duY2FzdDxDU1NHcmlkTGluZU5hbWVzVmFsdWU+KHRoaXMpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlLmgJKHJldmlzaW9uIDE5MTI0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgQ1NT
X1ZBTFVFX0xJU1QgPSAyLAogICAgICAgICBDU1NfQ1VTVE9NID0gMywKICAgICAgICAgQ1NTX0lO
SVRJQUwgPSA0LAotICAgICAgICBDU1NfVU5TRVQgPSA1CisgICAgICAgIENTU19VTlNFVCA9IDUs
CisgICAgICAgIENTU19SRVZFUlQgPSA2CiAgICAgfTsKIAogICAgIC8vIE92ZXJyaWRlIFJlZkNv
dW50ZWQncyBkZXJlZigpIHRvIGVuc3VyZSBvcGVyYXRvciBkZWxldGUgaXMgY2FsbGVkIG9uCkBA
IC05NCw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5oZXJpdGVkVmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBJbmhlcml0ZWRDbGFzczsgfQogICAgIGJvb2wgaXNJ
bml0aWFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBJbml0aWFsQ2xhc3M7
IH0KICAgICBib29sIGlzVW5zZXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09
IFVuc2V0Q2xhc3M7IH0KKyAgICBib29sIGlzUmV2ZXJ0VmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzVHlwZSA9PSBSZXZlcnRDbGFzczsgfQogICAgIGJvb2wgdHJlYXRBc0luaXRpYWxWYWx1
ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIHRyZWF0QXNJbmhlcml0ZWRWYWx1ZShD
U1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIGlzTGluZWFyR3JhZGllbnRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IExpbmVhckdyYWRpZW50Q2xhc3M7IH0KQEAgLTE2
OSw2ICsxNzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEluaGVyaXRlZENsYXNzLAogICAgICAg
ICBJbml0aWFsQ2xhc3MsCiAgICAgICAgIFVuc2V0Q2xhc3MsCisgICAgICAgIFJldmVydENsYXNz
LAogCiAgICAgICAgIFJlZmxlY3RDbGFzcywKICAgICAgICAgU2hhZG93Q2xhc3MsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkocmV2aXNpb24gMTkxMjQ5KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTQsNiArNCw3IEBACiBpbmhlcml0CiBpbml0aWFsCiB1bnNldAorcmV2ZXJ0CiAKIC8vCiAvLyBD
U1NfUFJPUF9PVVRMSU5FX1NUWUxFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQ
b29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNw
cAkocmV2aXNpb24gMTkxMjQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgQ1NTVmFsdWVQb29sOjpDU1NWYWx1
ZVBvb2woKQogICAgICwgbV9pbXBsaWNpdEluaXRpYWxWYWx1ZShDU1NJbml0aWFsVmFsdWU6OmNy
ZWF0ZUltcGxpY2l0KCkpCiAgICAgLCBtX2V4cGxpY2l0SW5pdGlhbFZhbHVlKENTU0luaXRpYWxW
YWx1ZTo6Y3JlYXRlRXhwbGljaXQoKSkKICAgICAsIG1fdW5zZXRWYWx1ZShDU1NVbnNldFZhbHVl
OjpjcmVhdGUoKSkKKyAgICAsIG1fcmV2ZXJ0VmFsdWUoQ1NTUmV2ZXJ0VmFsdWU6OmNyZWF0ZSgp
KQogICAgICwgbV9jb2xvclRyYW5zcGFyZW50KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnQpKQogICAgICwgbV9jb2xvcldoaXRlKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVDb2xvcihDb2xvcjo6d2hpdGUpKQogICAgICwgbV9jb2xvckJsYWNrKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihDb2xvcjo6YmxhY2spKQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZVBvb2wuaAkocmV2aXNpb24gMTkxMjQ5KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTUmV2ZXJ0VmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NVbnNldFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5o
IgogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBSZWY8
Q1NTSW5pdGlhbFZhbHVlPiBjcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIG1f
aW1wbGljaXRJbml0aWFsVmFsdWUuY29weVJlZigpOyB9CiAgICAgUmVmPENTU0luaXRpYWxWYWx1
ZT4gY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKSB7IHJldHVybiBtX2V4cGxpY2l0SW5pdGlh
bFZhbHVlLmNvcHlSZWYoKTsgfQogICAgIFJlZjxDU1NVbnNldFZhbHVlPiBjcmVhdGVVbnNldFZh
bHVlKCkgeyByZXR1cm4gbV91bnNldFZhbHVlLmNvcHlSZWYoKTsgfQorICAgIFJlZjxDU1NSZXZl
cnRWYWx1ZT4gY3JlYXRlUmV2ZXJ0VmFsdWUoKSB7IHJldHVybiBtX3JldmVydFZhbHVlLmNvcHlS
ZWYoKTsgfQogICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlSUQgaWRlbnRpZmllcik7CiAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTUHJvcGVydHlJRCBpZGVudGlmaWVyKTsKICAgICBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUNvbG9yVmFsdWUodW5zaWduZWQgcmdiVmFsdWUpOwpAQCAt
NzQsNiArNzYsNyBAQCBwcml2YXRlOgogICAgIFJlZjxDU1NJbml0aWFsVmFsdWU+IG1faW1wbGlj
aXRJbml0aWFsVmFsdWU7CiAgICAgUmVmPENTU0luaXRpYWxWYWx1ZT4gbV9leHBsaWNpdEluaXRp
YWxWYWx1ZTsKICAgICBSZWY8Q1NTVW5zZXRWYWx1ZT4gbV91bnNldFZhbHVlOworICAgIFJlZjxD
U1NSZXZlcnRWYWx1ZT4gbV9yZXZlcnRWYWx1ZTsKIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gbV9pZGVudGlmaWVyVmFsdWVDYWNoZVtudW1DU1NWYWx1ZUtleXdvcmRzXTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcAkocmV2aXNpb24gMTkxMjQ5KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNyArMzAw
LDcgQEAgYm9vbCBGb250TG9hZGVyOjpyZXNvbHZlRm9udFN0eWxlKGNvbnN0IAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgU3RyaW5nIGZvbnRWYWx1ZSA9IHBhcnNlZFN0eWxlLT5n
ZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Rm9udCk7Ci0gICAgaWYgKGZvbnRWYWx1ZSA9PSAi
aW5oZXJpdCIgfHwgZm9udFZhbHVlID09ICJpbml0aWFsIikKKyAgICBpZiAoZm9udFZhbHVlID09
ICJpbmhlcml0IiB8fCBmb250VmFsdWUgPT0gImluaXRpYWwiIHx8IGZvbnRWYWx1ZSA9PSAidW5z
ZXQiIHx8IGZvbnRWYWx1ZSA9PSAicmV2ZXJ0IikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgJKHJldmlzaW9uIDE5MTI0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBtYXRjaGVzRm9jdXNQc2V1
ZG9DbGFzcyhjb25zdCBFbGVtZW50Kik7CiAgICAgc3RhdGljIGJvb2wgY2hlY2tFeGFjdEF0dHJp
YnV0ZShjb25zdCBFbGVtZW50KiwgY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBzZWxlY3RvckF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIHZhbHVl
KTsKIAotICAgIGVudW0gTGlua01hdGNoTWFzayB7IE1hdGNoTGluayA9IDEsIE1hdGNoVmlzaXRl
ZCA9IDIsIE1hdGNoQWxsID0gTWF0Y2hMaW5rIHwgTWF0Y2hWaXNpdGVkIH07CisgICAgZW51bSBM
aW5rTWF0Y2hNYXNrIHsgTWF0Y2hEZWZhdWx0ID0gMCwgTWF0Y2hMaW5rID0gMSwgTWF0Y2hWaXNp
dGVkID0gMiwgTWF0Y2hBbGwgPSBNYXRjaExpbmsgfCBNYXRjaFZpc2l0ZWQgfTsKICAgICBzdGF0
aWMgdW5zaWduZWQgZGV0ZXJtaW5lTGlua01hdGNoVHlwZShjb25zdCBDU1NTZWxlY3RvciopOwog
CiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkocmV2aXNp
b24gMTkxMjQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzMsNDIgKzE3Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHkgPSBD
U1NQcm9wZXJ0eUZvbnRTeW50aGVzaXM7CiBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBmaXJz
dExvd1ByaW9yaXR5UHJvcGVydHkgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihsYXN0SGln
aFByaW9yaXR5UHJvcGVydHkgKyAxKTsKIAotY2xhc3MgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQ
cm9wZXJ0aWVzIHsKLXB1YmxpYzoKLSAgICBDYXNjYWRlZFByb3BlcnRpZXMoVGV4dERpcmVjdGlv
biwgV3JpdGluZ01vZGUpOwotCi0gICAgc3RydWN0IFByb3BlcnR5IHsKLSAgICAgICAgdm9pZCBh
cHBseShTdHlsZVJlc29sdmVyJik7Ci0KLSAgICAgICAgQ1NTUHJvcGVydHlJRCBpZDsKLSAgICAg
ICAgQ1NTVmFsdWUqIGNzc1ZhbHVlWzNdOwotICAgIH07Ci0KLSAgICBib29sIGhhc1Byb3BlcnR5
KENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0OwotICAgIFByb3BlcnR5JiBwcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEKTsKLSAgICB2b2lkIGFkZE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBib29sIGlt
cG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5
ID0gZmFsc2UpOwotCi0gICAgdm9pZCBzZXQoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUmLCB1bnNp
Z25lZCBsaW5rTWF0Y2hUeXBlKTsKLSAgICB2b2lkIHNldERlZmVycmVkKENTU1Byb3BlcnR5SUQs
IENTU1ZhbHVlJiwgdW5zaWduZWQgbGlua01hdGNoVHlwZSk7Ci0KLSAgICB2b2lkIGFwcGx5RGVm
ZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImKTsKLQotICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBQcm9wZXJ0eT4mIGN1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBtX2N1c3RvbVByb3Bl
cnRpZXM7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgdm9pZCBhZGRTdHlsZVByb3BlcnRpZXMoY29u
c3QgU3R5bGVQcm9wZXJ0aWVzJiwgU3R5bGVSdWxlJiwgYm9vbCBpc0ltcG9ydGFudCwgYm9vbCBp
bmhlcml0ZWRPbmx5LCBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5
cGUpOwotICAgIHN0YXRpYyB2b2lkIHNldFByb3BlcnR5SW50ZXJuYWwoUHJvcGVydHkmLCBDU1NQ
cm9wZXJ0eUlELCBDU1NWYWx1ZSYsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpOwotCi0gICAgUHJv
cGVydHkgbV9wcm9wZXJ0aWVzW251bUNTU1Byb3BlcnRpZXMgKyAyXTsKLSAgICBzdGQ6OmJpdHNl
dDxudW1DU1NQcm9wZXJ0aWVzICsgMj4gbV9wcm9wZXJ0eUlzUHJlc2VudDsKLQotICAgIFZlY3Rv
cjxQcm9wZXJ0eSwgOD4gbV9kZWZlcnJlZFByb3BlcnRpZXM7Ci0gICAgSGFzaE1hcDxBdG9taWNT
dHJpbmcsIFByb3BlcnR5PiBtX2N1c3RvbVByb3BlcnRpZXM7Ci0KLSAgICBUZXh0RGlyZWN0aW9u
IG1fZGlyZWN0aW9uOwotICAgIFdyaXRpbmdNb2RlIG1fd3JpdGluZ01vZGU7Ci19OwotCiBzdGF0
aWMgdm9pZCBleHRyYWN0RGlyZWN0aW9uQW5kV3JpdGluZ01vZGUoY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBTdHlsZVJlc29sdmVyOjpNYXRjaFJlc3VsdCYsIFRleHREaXJlY3Rpb24mLCBXcml0
aW5nTW9kZSYpOwogCiBSZW5kZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6c19zdHlsZU5vdFlldEF2
YWlsYWJsZTsKQEAgLTQ0MCw2ICs0MDQsOSBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpT
dGF0ZTo6aW5pdEZvCiAgICAgbV9zdHlsZSA9IG51bGxwdHI7CiAgICAgbV9wZW5kaW5nSW1hZ2VQ
cm9wZXJ0aWVzLmNsZWFyKCk7CiAgICAgbV9mb250RGlydHkgPSBmYWxzZTsKKyAgICAKKyAgICBt
X2F1dGhvclJvbGxiYWNrLnJlbGVhc2UoKTsKKyAgICBtX3VzZXJSb2xsYmFjay5yZWxlYXNlKCk7
CiAKICAgICB1cGRhdGVDb252ZXJzaW9uRGF0YSgpOwogfQpAQCAtODU0LDIwICs4MjEsMjAgQEAg
UmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcgogICAgIGNhc2NhZGUuYWRk
TWF0Y2hlcyhyZXN1bHQsIGZhbHNlLCAwLCByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXpl
KCkgLSAxKTsKICAgICAKICAgICAvLyBSZXNvbHZlIGN1c3RvbSBwcm9wZXJ0aWVzIGZpcnN0Lgot
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBD
U1NQcm9wZXJ0eUN1c3RvbSk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwg
Q1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmcmVzdWx0KTsKIAotICAgIGFw
cGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdo
UHJpb3JpdHlQcm9wZXJ0eSk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwg
Zmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCAmcmVzdWx0KTsKIAog
ICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCB1cGRhdGUgaXQgbm93LgogICAgIHVwZGF0
ZUZvbnQoKTsKIAogICAgIC8vIE5vdyBkbyByZXN0IG9mIHRoZSBwcm9wZXJ0aWVzLgotICAgIGFw
cGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwg
bGFzdENTU1Byb3BlcnR5KTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBm
aXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAg
ICAvLyBJZiBvdXIgZm9udCBnb3QgZGlydGllZCBieSBvbmUgb2YgdGhlIG5vbi1lc3NlbnRpYWwg
Zm9udCBwcm9wcywgdXBkYXRlIGl0IGEgc2Vjb25kIHRpbWUuCiAgICAgdXBkYXRlRm9udCgpOwog
Ci0gICAgY2FzY2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcyk7CisgICAgY2FzY2Fk
ZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgJnJlc3VsdCk7CiAKICAgICAvLyBTdGFy
dCBsb2FkaW5nIHJlc291cmNlcyByZWZlcmVuY2VkIGJ5IHRoaXMgc3R5bGUuCiAgICAgbG9hZFBl
bmRpbmdSZXNvdXJjZXMoKTsKQEAgLTEwMjIsMTYgKzk4OSwxNiBAQCBSZWY8UmVuZGVyU3R5bGU+
IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yCiAgICAgY2FzY2FkZS5hZGRNYXRjaGVzKHJlc3VsdCwg
ZmFsc2UsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNpemUoKSAtIDEpOwogCiAgICAg
Ly8gUmVzb2x2ZSBjdXN0b20gcHJvcGVydGllcyBmaXJzdC4KLSAgICBhcHBseUNhc2NhZGVkUHJv
cGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20pOwor
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBD
U1NQcm9wZXJ0eUN1c3RvbSwgJnJlc3VsdCk7CiAKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGll
cyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHkpOwor
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxh
c3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAgICAvLyBJZiBvdXIgZm9udCBn
b3QgZGlydGllZCwgdXBkYXRlIGl0IG5vdy4KICAgICB1cGRhdGVGb250KCk7CiAKLSAgICBhcHBs
eUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxh
c3RDU1NQcm9wZXJ0eSk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmly
c3RMb3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksICZyZXN1bHQpOwogCi0gICAg
Y2FzY2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcyk7CisgICAgY2FzY2FkZS5hcHBs
eURlZmVycmVkUHJvcGVydGllcygqdGhpcywgJnJlc3VsdCk7CiAKICAgICAvLyBTdGFydCBsb2Fk
aW5nIHJlc291cmNlcyByZWZlcmVuY2VkIGJ5IHRoaXMgc3R5bGUuCiAgICAgbG9hZFBlbmRpbmdS
ZXNvdXJjZXMoKTsKQEAgLTE2OTcsMTcgKzE2NjQsMTcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjph
cHBseU1hdGNoZWRQcm9wZXJ0aQogICAgICAgICBjYXNjYWRlLmFkZE1hdGNoZXMobWF0Y2hSZXN1
bHQsIGZhbHNlLCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJh
bmdlcy5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgICAgICBjYXNjYWRlLmFk
ZE1hdGNoZXMobWF0Y2hSZXN1bHQsIHRydWUsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVs
ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAK
LSAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlXZWJr
aXRSdWJ5UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uKTsKKyAgICAgICAg
YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9z
aXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCAmbWF0Y2hSZXN1bHQpOwogICAg
ICAgICBhZGp1c3RTdHlsZUZvckludGVyQ2hhcmFjdGVyUnVieSgpOwogICAgIAogICAgICAgICAv
LyBSZXNvbHZlIGN1c3RvbSB2YXJpYWJsZXMgZmlyc3QuCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRQ
cm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSk7
CisgICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3Vz
dG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSwgJm1hdGNoUmVzdWx0KTsKIAogICAgICAgICAvLyBTdGFy
dCBieSBhcHBseWluZyBwcm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBtYXkgZGVwZW5k
IG9uLgotICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1By
b3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHkpOworICAgICAgICBhcHBseUNhc2NhZGVk
UHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJv
cGVydHksICZtYXRjaFJlc3VsdCk7CiAgICAgCiAgICAgICAgIHVwZGF0ZUZvbnQoKTsKLSAgICAg
ICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3Bl
cnR5LCBsYXN0Q1NTUHJvcGVydHkpOworICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhj
YXNjYWRlLCBmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgJm1hdGNo
UmVzdWx0KTsKIAogICAgICAgICBzdGF0ZS5jYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKICAg
ICB9CkBAIC0xNzE5LDE1ICsxNjg2LDE1IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRj
aGVkUHJvcGVydGkKICAgICBjYXNjYWRlLmFkZE1hdGNoZXMobWF0Y2hSZXN1bHQsIHRydWUsIG1h
dGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1
bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAgICAgCiAgICAgLy8gUmVzb2x2ZSBjdXN0b20gcHJv
cGVydGllcyBmaXJzdC4KLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQ
cm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20pOworICAgIGFwcGx5Q2FzY2FkZWRQcm9w
ZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSwgJm1h
dGNoUmVzdWx0KTsKIAotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1By
b3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbik7
CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlXZWJraXRS
dWJ5UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCAmbWF0Y2hSZXN1bHQp
OwogICAgIAogICAgIC8vIEFkanVzdCB0aGUgZm9udCBzaXplIHRvIGJlIHNtYWxsZXIgaWYgcnVi
eS1wb3NpdGlvbiBpcyBpbnRlci1jaGFyYWN0ZXIuCiAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNo
YXJhY3RlclJ1YnkoKTsKIAogICAgIC8vIFN0YXJ0IGJ5IGFwcGx5aW5nIHByb3BlcnRpZXMgdGhh
dCBvdGhlciBwcm9wZXJ0aWVzIG1heSBkZXBlbmQgb24uCi0gICAgYXBwbHlDYXNjYWRlZFByb3Bl
cnRpZXMoY2FzY2FkZSwgZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5
KTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5
LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CiAKICAgICAvLyBJZiB0
aGUgZWZmZWN0aXZlIHpvb20gdmFsdWUgY2hhbmdlcywgd2UgY2FuJ3QgdXNlIHRoZSBtYXRjaGVk
IHByb3BlcnRpZXMgY2FjaGUuIFN0YXJ0IG92ZXIuCiAgICAgaWYgKGNhY2hlSXRlbSAmJiBjYWNo
ZUl0ZW0tPnJlbmRlclN0eWxlLT5lZmZlY3RpdmVab29tKCkgIT0gc3RhdGUuc3R5bGUoKS0+ZWZm
ZWN0aXZlWm9vbSgpKQpAQCAtMTc0MSwxMiArMTcwOCwxMiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5TWF0Y2hlZFByb3BlcnRpCiAgICAgICAgIHJldHVybiBhcHBseU1hdGNoZWRQcm9wZXJ0
aWVzKG1hdGNoUmVzdWx0LCBlbGVtZW50LCBEb05vdFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUp
OwogCiAgICAgLy8gQXBwbHkgcHJvcGVydGllcyB0aGF0IG5vIG90aGVyIHByb3BlcnRpZXMgZGVw
ZW5kIG9uLgotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93UHJp
b3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5KTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVy
dGllcyhjYXNjYWRlLCBmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwg
Jm1hdGNoUmVzdWx0KTsKIAogICAgIC8vIEZpbmFsbHksIHNvbWUgcHJvcGVydGllcyBtdXN0IGJl
IGFwcGxpZWQgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBwYXJzZWQuCiAgICAgLy8gVGhlcmUgYXJl
IHNvbWUgQ1NTIHByb3BlcnRpZXMgdGhhdCBhZmZlY3QgdGhlIHNhbWUgUmVuZGVyU3R5bGUgdmFs
dWVzLAogICAgIC8vIHNvIHRvIHByZXNlcnZlIGJlaGF2aW9yLCB3ZSBxdWV1ZSB0aGVtIHVwIGR1
cmluZyBjYXNjYWRlIGFuZCBmbHVzaCBoZXJlLgotICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFBy
b3BlcnRpZXMoKnRoaXMpOworICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKnRo
aXMsICZtYXRjaFJlc3VsdCk7CiAKICAgICAvLyBTdGFydCBsb2FkaW5nIHJlc291cmNlcyByZWZl
cmVuY2VkIGJ5IHRoaXMgc3R5bGUuCiAgICAgbG9hZFBlbmRpbmdSZXNvdXJjZXMoKTsKQEAgLTE4
NzYsNyArMTg0Myw0NSBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OnVzZVNWR1pvb21SdWxlc0Zvckxl
CiAgICAgcmV0dXJuIGlzPFNWR0VsZW1lbnQ+KG1fc3RhdGUuZWxlbWVudCgpKSAmJiAhKGlzPFNW
R1NWR0VsZW1lbnQ+KCptX3N0YXRlLmVsZW1lbnQoKSkgJiYgbV9zdGF0ZS5lbGVtZW50KCktPnBh
cmVudE5vZGUoKSk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCitTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFBy
b3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKGNv
bnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCkKK3sKKyAgICBBU1NFUlQoY2FzY2FkZUxldmVs
KCkgIT0gVXNlckFnZW50TGV2ZWwpOworICAgIAorICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
OworICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlOworICAgIGV4dHJhY3REaXJlY3Rpb25BbmRX
cml0aW5nTW9kZSgqc3RhdGUoKS5zdHlsZSgpLCBtYXRjaFJlc3VsdCwgZGlyZWN0aW9uLCB3cml0
aW5nTW9kZSk7CisKKyAgICBpZiAoY2FzY2FkZUxldmVsKCkgPT0gQXV0aG9yTGV2ZWwpIHsKKyAg
ICAgICAgQ2FzY2FkZWRQcm9wZXJ0aWVzKiBhdXRob3JSb2xsYmFjayA9IHN0YXRlKCkuYXV0aG9y
Um9sbGJhY2soKTsKKyAgICAgICAgaWYgKGF1dGhvclJvbGxiYWNrKQorICAgICAgICAgICAgcmV0
dXJuIGF1dGhvclJvbGxiYWNrOworICAgICAgICBhdXRob3JSb2xsYmFjayA9IG5ldyBDYXNjYWRl
ZFByb3BlcnRpZXMoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CisgICAgICAgIAorICAgICAgICAv
LyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBVQSBydWxlcyBhbmQgdXNl
ciBydWxlcyBidXQgbm8gYXV0aG9yIHJ1bGVzLgorICAgICAgICBhdXRob3JSb2xsYmFjay0+YWRk
TWF0Y2hlcyhtYXRjaFJlc3VsdCwgZmFsc2UsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVs
ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKKyAgICAgICAgYXV0aG9y
Um9sbGJhY2stPmFkZE1hdGNoZXMobWF0Y2hSZXN1bHQsIGZhbHNlLCBtYXRjaFJlc3VsdC5yYW5n
ZXMuZmlyc3RVc2VyUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVc2VyUnVsZSwgZmFsc2Up
OworICAgICAgICBhdXRob3JSb2xsYmFjay0+YWRkTWF0Y2hlcyhtYXRjaFJlc3VsdCwgdHJ1ZSwg
bWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0
VXNlclJ1bGUsIGZhbHNlKTsKKyAgICAgICAgYXV0aG9yUm9sbGJhY2stPmFkZE1hdGNoZXMobWF0
Y2hSZXN1bHQsIHRydWUsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1
bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKKyAgICAKKyAgICAgICAgc3RhdGUoKS5zZXRB
dXRob3JSb2xsYmFjayhhdXRob3JSb2xsYmFjayk7CisgICAgICAgIHJldHVybiBhdXRob3JSb2xs
YmFjazsKKyAgICB9IGVsc2UgaWYgKGNhc2NhZGVMZXZlbCgpID09IFVzZXJMZXZlbCkgeworICAg
ICAgICBDYXNjYWRlZFByb3BlcnRpZXMqIHVzZXJSb2xsYmFjayA9IHN0YXRlKCkudXNlclJvbGxi
YWNrKCk7CisgICAgICAgIGlmICh1c2VyUm9sbGJhY2spCisgICAgICAgICAgICByZXR1cm4gdXNl
clJvbGxiYWNrOworICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBzcGVjaWFsIHJvbGxiYWNrIGNh
c2NhZGUgY29udGFpbnMgb25seSBVQSBydWxlcy4KKyAgICAgICAgdXNlclJvbGxiYWNrLT5hZGRN
YXRjaGVzKG1hdGNoUmVzdWx0LCBmYWxzZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxl
LCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOworICAgICAgICB1c2VyUm9s
bGJhY2stPmFkZE1hdGNoZXMobWF0Y2hSZXN1bHQsIHRydWUsIG1hdGNoUmVzdWx0LnJhbmdlcy5m
aXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKKyAgICAK
KyAgICAgICAgc3RhdGUoKS5zZXRVc2VyUm9sbGJhY2sodXNlclJvbGxiYWNrKTsKKyAgICAgICAg
cmV0dXJuIHVzZXJSb2xsYmFjazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayBsaW5rTWF0Y2hN
YXNrLCBjb25zdCBNYXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQpCiB7CiAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghaXNTaG9ydGhhbmRDU1NQcm9wZXJ0eShpZCksICJTaG9ydGhhbmQgcHJvcGVydHkg
aWQgPSAlZCB3YXNuJ3QgZXhwYW5kZWQgYXQgcGFyc2luZyB0aW1lIiwgaWQpOwogCkBAIC0xODk2
LDI1ICsxOTAxLDU5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm8K
ICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkpIHsKICAg
ICAgICAgQ1NTUHJvcGVydHlJRCBuZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9u
QXdhcmVQcm9wZXJ0eShpZCwgc3RhdGUuc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0YXRlLnN0eWxl
KCktPndyaXRpbmdNb2RlKCkpOwogICAgICAgICBBU1NFUlQobmV3SWQgIT0gaWQpOwotICAgICAg
ICByZXR1cm4gYXBwbHlQcm9wZXJ0eShuZXdJZCwgdmFsdWVUb0FwcGx5LmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuIGFwcGx5UHJvcGVydHkobmV3SWQsIHZhbHVlVG9BcHBseS5nZXQoKSwgbGlua01h
dGNoTWFzaywgbWF0Y2hSZXN1bHQpOwogICAgIH0KICAgICAKICAgICBDU1NWYWx1ZSogdmFsdWVU
b0NoZWNrRm9ySW5oZXJpdEluaXRpYWwgPSB2YWx1ZVRvQXBwbHkuZ2V0KCk7CisgICAgQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZSogY3VzdG9tUHJvcGVydHlWYWx1ZSA9IG51bGxwdHI7CisgICAgCiAg
ICAgaWYgKGlkID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7Ci0gICAgICAgIENTU0N1c3RvbVByb3Bl
cnR5VmFsdWUqIGN1c3RvbVByb3BlcnR5ID0gJmRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+KCp2YWx1ZVRvQXBwbHkpOwotICAgICAgICB2YWx1ZVRvQ2hlY2tGb3JJbmhlcml0SW5pdGlh
bCA9IGN1c3RvbVByb3BlcnR5LT52YWx1ZSgpLmdldCgpOworICAgICAgICBjdXN0b21Qcm9wZXJ0
eVZhbHVlID0gJmRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCp2YWx1ZVRvQXBwbHkp
OworICAgICAgICB2YWx1ZVRvQ2hlY2tGb3JJbmhlcml0SW5pdGlhbCA9IGN1c3RvbVByb3BlcnR5
VmFsdWUtPnZhbHVlKCkuZ2V0KCk7CiAgICAgfQogCiAgICAgYm9vbCBpc0luaGVyaXQgPSBzdGF0
ZS5wYXJlbnRTdHlsZSgpICYmIHZhbHVlVG9DaGVja0ZvckluaGVyaXRJbml0aWFsLT5pc0luaGVy
aXRlZFZhbHVlKCk7CiAgICAgYm9vbCBpc0luaXRpYWwgPSB2YWx1ZVRvQ2hlY2tGb3JJbmhlcml0
SW5pdGlhbC0+aXNJbml0aWFsVmFsdWUoKSB8fCAoIXN0YXRlLnBhcmVudFN0eWxlKCkgJiYgdmFs
dWVUb0NoZWNrRm9ySW5oZXJpdEluaXRpYWwtPmlzSW5oZXJpdGVkVmFsdWUoKSk7CiAgICAgCi0g
ICAgaWYgKHZhbHVlVG9DaGVja0ZvckluaGVyaXRJbml0aWFsLT5pc1Vuc2V0VmFsdWUoKSkgewor
ICAgIGJvb2wgaXNVbnNldCA9IHZhbHVlVG9DaGVja0ZvckluaGVyaXRJbml0aWFsLT5pc1Vuc2V0
VmFsdWUoKTsKKyAgICBib29sIGlzUmV2ZXJ0ID0gdmFsdWVUb0NoZWNrRm9ySW5oZXJpdEluaXRp
YWwtPmlzUmV2ZXJ0VmFsdWUoKTsKKworICAgIGlmIChpc1JldmVydCkgeworICAgICAgICBpZiAo
Y2FzY2FkZUxldmVsKCkgPT0gVXNlckFnZW50TGV2ZWwgfHwgIW1hdGNoUmVzdWx0KQorICAgICAg
ICAgICAgaXNVbnNldCA9IHRydWU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRmV0
Y2ggdGhlIGNvcnJlY3Qgcm9sbGJhY2sgb2JqZWN0IGZyb20gdGhlIHN0YXRlLCBidWlsZGluZyBp
dCBpZiBuZWNlc3NhcnkuCisgICAgICAgICAgICAvLyBUaGlzIHJlcXVpcmVzIGhhdmluZyB0aGUg
b3JpZ2luYWwgTWF0Y2hSZXN1bHQgYXZhaWxhYmxlLgorICAgICAgICAgICAgYXV0byogcm9sbGJh
Y2sgPSBjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygqbWF0Y2hSZXN1bHQpOworCisgICAg
ICAgICAgICAvLyBXaXRoIHRoZSBjYXNjYWRlIGJ1aWx0LCB3ZSBuZWVkIHRvIG9idGFpbiB0aGUg
cHJvcGVydHkgYW5kIGFwcGx5IGl0LiBJZiB0aGUgcHJvcGVydHkgaXMKKyAgICAgICAgICAgIC8v
IG5vdCBwcmVzZW50LCB0aGVuIHdlIGJlaGF2ZSBsaWtlICJ1bnNldC4iIE90aGVyd2lzZSB3ZSBh
cHBseSB0aGUgcHJvcGVydHkgaW5zdGVhZCBvZgorICAgICAgICAgICAgLy8gb3VyIG93bi4KKyAg
ICAgICAgICAgIGlmIChjdXN0b21Qcm9wZXJ0eVZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYg
KHJvbGxiYWNrLT5oYXNDdXN0b21Qcm9wZXJ0eShjdXN0b21Qcm9wZXJ0eVZhbHVlLT5uYW1lKCkp
KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcHJvcGVydHkgPSByb2xsYmFjay0+Y3VzdG9t
UHJvcGVydHkoY3VzdG9tUHJvcGVydHlWYWx1ZS0+bmFtZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdKQorICAgICAgICAgICAgICAg
ICAgICAgICAgYXBwbHlQcm9wZXJ0eShwcm9wZXJ0eS5pZCwgcHJvcGVydHkuY3NzVmFsdWVbbGlu
a01hdGNoTWFza10sIGxpbmtNYXRjaE1hc2ssIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
cm9sbGJhY2stPmhhc1Byb3BlcnR5KGlkKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIHByb3Bl
cnR5ID0gcm9sbGJhY2stPnByb3BlcnR5KGlkKTsKKyAgICAgICAgICAgICAgICBpZiAocHJvcGVy
dHkuY3NzVmFsdWVbbGlua01hdGNoTWFza10pCisgICAgICAgICAgICAgICAgICAgIGFwcGx5UHJv
cGVydHkocHJvcGVydHkuaWQsIHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBsaW5r
TWF0Y2hNYXNrLCBtYXRjaFJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGlzVW5zZXQgPSB0cnVlOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIGlmIChpc1Vuc2V0KSB7CiAgICAgICAgIGlmIChDU1NQcm9wZXJ0
eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkpCiAgICAgICAgICAgICBpc0luaGVyaXQgPSB0cnVl
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc0luaXRpYWwgPSB0cnVlOwogICAgIH0KLSAg
ICAKKwogICAgIEFTU0VSVCghaXNJbmhlcml0IHx8ICFpc0luaXRpYWwpOyAvLyBpc0luaGVyaXQg
LT4gIWlzSW5pdGlhbCAmJiBpc0luaXRpYWwgLT4gIWlzSW5oZXJpdAogCiAgICAgaWYgKCFzdGF0
ZS5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSAmJiAoIXN0YXRlLmFwcGx5UHJvcGVydHlU
b1Zpc2l0ZWRMaW5rU3R5bGUoKSB8fCAhaXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHkoaWQpKSkg
ewpAQCAtMjU2OCwxMCArMjYwNywyMSBAQCBpbmxpbmUgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQ
cm9wZXJ0aWVzCiAgICAgcmV0dXJuIG1fcHJvcGVydGllc1tpZF07CiB9CiAKLXZvaWQgU3R5bGVS
ZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eUludGVybmFsKFByb3BlcnR5
JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVlLCB1bnNpZ25l
ZCBsaW5rTWF0Y2hUeXBlKQoraW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9w
ZXJ0aWVzOjpoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fY3VzdG9tUHJvcGVydGllcy5jb250YWlucyhuYW1lKTsKK30KKworaW5saW5l
IFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHkgU3R5bGVSZXNvbHZl
cjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpjdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3VzdG9tUHJvcGVydGllcy5nZXQobmFtZSk7Cit9CisK
K3ZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eUludGVy
bmFsKFByb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1Zh
bHVlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxldmVsKQog
ewogICAgIEFTU0VSVChsaW5rTWF0Y2hUeXBlIDw9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hBbGwp
OwogICAgIHByb3BlcnR5LmlkID0gaWQ7CisgICAgcHJvcGVydHkubGV2ZWwgPSBjYXNjYWRlTGV2
ZWw7CiAgICAgaWYgKGxpbmtNYXRjaFR5cGUgPT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCkg
ewogICAgICAgICBwcm9wZXJ0eS5jc3NWYWx1ZVswXSA9ICZjc3NWYWx1ZTsKICAgICAgICAgcHJv
cGVydHkuY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmtdID0gJmNzc1ZhbHVlOwpA
QCAtMjU4MCw3ICsyNjMwLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRp
ZXM6OgogICAgICAgICBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hUeXBlXSA9ICZjc3NWYWx1
ZTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OnNldChDU1NQ
cm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUp
Cit2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6c2V0KENTU1Byb3BlcnR5
SUQgaWQsIENTU1ZhbHVlJiBjc3NWYWx1ZSwgdW5zaWduZWQgbGlua01hdGNoVHlwZSwgQ2FzY2Fk
ZUxldmVsIGNhc2NhZGVMZXZlbCkKIHsKICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9u
QXdhcmVQcm9wZXJ0eShpZCkpCiAgICAgICAgIGlkID0gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJl
Y3Rpb25Bd2FyZVByb3BlcnR5KGlkLCBtX2RpcmVjdGlvbiwgbV93cml0aW5nTW9kZSk7CkBAIC0y
NTk3LDExICsyNjQ3LDExIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVz
OjoKICAgICAgICAgICAgIFByb3BlcnR5IHByb3BlcnR5OwogICAgICAgICAgICAgcHJvcGVydHku
aWQgPSBpZDsKICAgICAgICAgICAgIG1lbXNldChwcm9wZXJ0eS5jc3NWYWx1ZSwgMCwgc2l6ZW9m
KHByb3BlcnR5LmNzc1ZhbHVlKSk7Ci0gICAgICAgICAgICBzZXRQcm9wZXJ0eUludGVybmFsKHBy
b3BlcnR5LCBpZCwgY3NzVmFsdWUsIGxpbmtNYXRjaFR5cGUpOworICAgICAgICAgICAgc2V0UHJv
cGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBsaW5rTWF0Y2hUeXBlLCBjYXNj
YWRlTGV2ZWwpOwogICAgICAgICAgICAgY3VzdG9tUHJvcGVydGllcygpLnNldChjdXN0b21WYWx1
ZS5uYW1lKCksIHByb3BlcnR5KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFByb3Bl
cnR5IHByb3BlcnR5ID0gY3VzdG9tUHJvcGVydGllcygpLmdldChjdXN0b21WYWx1ZS5uYW1lKCkp
OwotICAgICAgICAgICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVl
LCBsaW5rTWF0Y2hUeXBlKTsKKyAgICAgICAgICAgIHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVy
dHksIGlkLCBjc3NWYWx1ZSwgbGlua01hdGNoVHlwZSwgY2FzY2FkZUxldmVsKTsKICAgICAgICAg
ICAgIGN1c3RvbVByb3BlcnRpZXMoKS5zZXQoY3VzdG9tVmFsdWUubmFtZSgpLCBwcm9wZXJ0eSk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMjYxMCwyMSArMjY2MCwyMSBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6CiAgICAgaWYgKCFtX3Byb3BlcnR5
SXNQcmVzZW50W2lkXSkKICAgICAgICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXpl
b2YocHJvcGVydHkuY3NzVmFsdWUpKTsKICAgICBtX3Byb3BlcnR5SXNQcmVzZW50LnNldChpZCk7
Ci0gICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBsaW5rTWF0
Y2hUeXBlKTsKKyAgICBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBpZCwgY3NzVmFsdWUs
IGxpbmtNYXRjaFR5cGUsIGNhc2NhZGVMZXZlbCk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6
Q2FzY2FkZWRQcm9wZXJ0aWVzOjpzZXREZWZlcnJlZChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1
ZSYgY3NzVmFsdWUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6
OkNhc2NhZGVkUHJvcGVydGllczo6c2V0RGVmZXJyZWQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFs
dWUmIGNzc1ZhbHVlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlLCBDYXNjYWRlTGV2ZWwgY2FzY2Fk
ZUxldmVsKQogewogICAgIEFTU0VSVCghQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9w
ZXJ0eShpZCkpOwogICAgIEFTU0VSVChzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVyKGlk
KSk7CiAKICAgICBQcm9wZXJ0eSBwcm9wZXJ0eTsKICAgICBtZW1zZXQocHJvcGVydHkuY3NzVmFs
dWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOwotICAgIHNldFByb3BlcnR5SW50ZXJu
YWwocHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbGlua01hdGNoVHlwZSk7CisgICAgc2V0UHJvcGVy
dHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBsaW5rTWF0Y2hUeXBlLCBjYXNjYWRl
TGV2ZWwpOwogICAgIG1fZGVmZXJyZWRQcm9wZXJ0aWVzLmFwcGVuZChwcm9wZXJ0eSk7CiB9CiAK
LXZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphZGRTdHlsZVByb3BlcnRp
ZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUmLCBib29sIGlz
SW1wb3J0YW50LCBib29sIGluaGVyaXRlZE9ubHksIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBwcm9w
ZXJ0eVdoaXRlbGlzdFR5cGUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpCit2b2lkIFN0eWxlUmVz
b2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YWRkU3R5bGVQcm9wZXJ0aWVzKGNvbnN0IFN0eWxl
UHJvcGVydGllcyYgcHJvcGVydGllcywgU3R5bGVSdWxlJiwgYm9vbCBpc0ltcG9ydGFudCwgYm9v
bCBpbmhlcml0ZWRPbmx5LCBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgcHJvcGVydHlXaGl0ZWxpc3RU
eXBlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxldmVsKQog
ewogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gcHJvcGVydGllcy5wcm9wZXJ0eUNv
dW50KCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGF1dG8gY3VycmVudCA9IHByb3BlcnRp
ZXMucHJvcGVydHlBdChpKTsKQEAgLTI2NDYsMTIgKzI2OTYsMjEgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OgogI2VuZGlmCiAKICAgICAgICAgaWYgKHNob3VsZEFw
cGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpCi0gICAgICAgICAgICBzZXREZWZl
cnJlZChwcm9wZXJ0eUlELCAqY3VycmVudC52YWx1ZSgpLCBsaW5rTWF0Y2hUeXBlKTsKKyAgICAg
ICAgICAgIHNldERlZmVycmVkKHByb3BlcnR5SUQsICpjdXJyZW50LnZhbHVlKCksIGxpbmtNYXRj
aFR5cGUsIGNhc2NhZGVMZXZlbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldChwcm9w
ZXJ0eUlELCAqY3VycmVudC52YWx1ZSgpLCBsaW5rTWF0Y2hUeXBlKTsKKyAgICAgICAgICAgIHNl
dChwcm9wZXJ0eUlELCAqY3VycmVudC52YWx1ZSgpLCBsaW5rTWF0Y2hUeXBlLCBjYXNjYWRlTGV2
ZWwpOwogICAgIH0KIH0KIAorc3RhdGljIENhc2NhZGVMZXZlbCBjYXNjYWRlTGV2ZWxGb3JJbmRl
eChjb25zdCBTdHlsZVJlc29sdmVyOjpNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGludCBpbmRl
eCkKK3sKKyAgICBpZiAoaW5kZXggPj0gbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlICYm
IGluZGV4IDw9IG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlKQorICAgICAgICByZXR1cm4g
VXNlckFnZW50TGV2ZWw7CisgICAgaWYgKGluZGV4ID49IG1hdGNoUmVzdWx0LnJhbmdlcy5maXJz
dFVzZXJSdWxlICYmIGluZGV4IDw9IG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUpCisg
ICAgICAgIHJldHVybiBVc2VyTGV2ZWw7CisgICAgcmV0dXJuIEF1dGhvckxldmVsOworfQorCiB2
b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YWRkTWF0Y2hlcyhjb25zdCBN
YXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGJvb2wgaW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwg
aW50IGVuZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkpCiB7CiAgICAgaWYgKHN0YXJ0SW5kZXgg
PT0gLTEpCkBAIC0yNjU5LDI0ICsyNzE4LDI2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2Fk
ZWRQcm9wZXJ0aWVzOjoKIAogICAgIGZvciAoaW50IGkgPSBzdGFydEluZGV4OyBpIDw9IGVuZElu
ZGV4OyArK2kpIHsKICAgICAgICAgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIG1hdGNoZWRQcm9w
ZXJ0aWVzID0gbWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKVtpXTsKLSAgICAgICAgYWRk
U3R5bGVQcm9wZXJ0aWVzKCptYXRjaGVkUHJvcGVydGllcy5wcm9wZXJ0aWVzLCAqbWF0Y2hSZXN1
bHQubWF0Y2hlZFJ1bGVzW2ldLCBpbXBvcnRhbnQsIGluaGVyaXRlZE9ubHksIHN0YXRpY19jYXN0
PFByb3BlcnR5V2hpdGVsaXN0VHlwZT4obWF0Y2hlZFByb3BlcnRpZXMud2hpdGVsaXN0VHlwZSks
IG1hdGNoZWRQcm9wZXJ0aWVzLmxpbmtNYXRjaFR5cGUpOworICAgICAgICBhZGRTdHlsZVByb3Bl
cnRpZXMoKm1hdGNoZWRQcm9wZXJ0aWVzLnByb3BlcnRpZXMsICptYXRjaFJlc3VsdC5tYXRjaGVk
UnVsZXNbaV0sIGltcG9ydGFudCwgaW5oZXJpdGVkT25seSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlX
aGl0ZWxpc3RUeXBlPihtYXRjaGVkUHJvcGVydGllcy53aGl0ZWxpc3RUeXBlKSwgbWF0Y2hlZFBy
b3BlcnRpZXMubGlua01hdGNoVHlwZSwKKyAgICAgICAgICAgIGNhc2NhZGVMZXZlbEZvckluZGV4
KG1hdGNoUmVzdWx0LCBpKSk7CiAgICAgfQogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2Nh
ZGVkUHJvcGVydGllczo6YXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoU3R5bGVSZXNvbHZlciYgcmVz
b2x2ZXIpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZl
cnJlZFByb3BlcnRpZXMoU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIsIGNvbnN0IE1hdGNoUmVzdWx0
KiBtYXRjaFJlc3VsdCkKIHsKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogbV9kZWZlcnJlZFBy
b3BlcnRpZXMpCi0gICAgICAgIHByb3BlcnR5LmFwcGx5KHJlc29sdmVyKTsKKyAgICAgICAgcHJv
cGVydHkuYXBwbHkocmVzb2x2ZXIsIG1hdGNoUmVzdWx0KTsKIH0KIAotdm9pZCBTdHlsZVJlc29s
dmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVyJiBy
ZXNvbHZlcikKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0
eTo6YXBwbHkoU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIsIGNvbnN0IE1hdGNoUmVzdWx0KiBtYXRj
aFJlc3VsdCkKIHsKICAgICBTdGF0ZSYgc3RhdGUgPSByZXNvbHZlci5zdGF0ZSgpOworICAgIHN0
YXRlLnNldENhc2NhZGVMZXZlbChsZXZlbCk7CiAKLSAgICBpZiAoY3NzVmFsdWVbMF0pIHsKKyAg
ICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRdKSB7CiAgICAgICAg
IHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKICAgICAgICAgc3Rh
dGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSk7Ci0gICAgICAgIHJl
c29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlWzBdKTsKKyAgICAgICAgcmVzb2x2ZXIu
YXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRd
LCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCwgbWF0Y2hSZXN1bHQpOwogICAgIH0KIAog
ICAgIGlmIChzdGF0ZS5zdHlsZSgpLT5pbnNpZGVMaW5rKCkgPT0gTm90SW5zaWRlTGluaykKQEAg
LTI2ODUsMjAgKzI3NDYsMjAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRp
ZXM6OgogICAgIGlmIChjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlua10pIHsKICAg
ICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOwogICAgICAg
ICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKLSAgICAg
ICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpN
YXRjaExpbmtdKTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVb
U2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmtdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGluaywg
bWF0Y2hSZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6
Ok1hdGNoVmlzaXRlZF0pIHsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxh
clN0eWxlKGZhbHNlKTsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExp
bmtTdHlsZSh0cnVlKTsKLSAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFs
dWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRdKTsKKyAgICAgICAgcmVzb2x2ZXIuYXBw
bHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRdLCBT
ZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCwgbWF0Y2hSZXN1bHQpOwogICAgIH0KIAogICAg
IHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKICAgICBzdGF0ZS5z
ZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKIH0KIAotdm9pZCBTdHls
ZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmIGNh
c2NhZGUsIGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5KQordm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmIGNhc2Nh
ZGUsIGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LCBjb25zdCBNYXRjaFJlc3Vs
dCogbWF0Y2hSZXN1bHQpCiB7CiAgICAgZm9yIChpbnQgaWQgPSBmaXJzdFByb3BlcnR5OyBpZCA8
PSBsYXN0UHJvcGVydHk7ICsraWQpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwpAQCAtMjcwNywxMiArMjc2OCwxMiBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0CiAgICAgICAgIGlmIChw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7CiAgICAgICAgICAgICBIYXNoTWFwPEF0
b21pY1N0cmluZywgQ2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eT46Oml0ZXJhdG9yIGVuZCA9
IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgpOwogICAgICAgICAgICAgZm9yIChIYXNo
TWFwPEF0b21pY1N0cmluZywgQ2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eT46Oml0ZXJhdG9y
IGl0ID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICAgICAgICAgIGl0LT52YWx1ZS5hcHBseSgqdGhpcyk7CisgICAgICAgICAgICAg
ICAgaXQtPnZhbHVlLmFwcGx5KCp0aGlzLCBtYXRjaFJlc3VsdCk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICBhdXRvJiBwcm9wZXJ0eSA9IGNhc2NhZGUucHJvcGVy
dHkocHJvcGVydHlJRCk7CiAgICAgICAgIEFTU0VSVCghc2hvdWxkQXBwbHlQcm9wZXJ0eUluUGFy
c2VPcmRlcihwcm9wZXJ0eUlEKSk7Ci0gICAgICAgIHByb3BlcnR5LmFwcGx5KCp0aGlzKTsKKyAg
ICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIG1hdGNoUmVzdWx0KTsKICAgICB9CiAgICAgCiAg
ICAgaWYgKGZpcnN0UHJvcGVydHkgPT0gQ1NTUHJvcGVydHlDdXN0b20pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDE5MTI0OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlICJTZWxlY3RvckZpbHRlci5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5o
IgogI2luY2x1ZGUgIlZpZXdwb3J0U3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgPGJpdHNldD4K
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgpAQCAtMTIwLDYgKzEyMSwxMiBAQCBlbnVtIFJ1bGVNYXRjaGluZ0JlaGF2
aW9yIHsKICAgICBNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcywKIH07CiAKK2VudW0gQ2FzY2FkZUxl
dmVsIHsKKyAgICBVc2VyQWdlbnRMZXZlbCwKKyAgICBBdXRob3JMZXZlbCwKKyAgICBVc2VyTGV2
ZWwKK307CisKIGNsYXNzIFBzZXVkb1N0eWxlUmVxdWVzdCB7CiBwdWJsaWM6CiAgICAgUHNldWRv
U3R5bGVSZXF1ZXN0KFBzZXVkb0lkIHBzZXVkb0lkLCBSZW5kZXJTY3JvbGxiYXIqIHNjcm9sbGJh
ciA9IG51bGxwdHIsIFNjcm9sbGJhclBhcnQgc2Nyb2xsYmFyUGFydCA9IE5vUGFydCkKQEAgLTE5
NCw2ICsyMDEsOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBwc2V1
ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgUHNldWRvSWQsIHVuc2lnbmVkIHJ1bGVz
VG9JbmNsdWRlID0gQWxsQnV0RW1wdHlDU1NSdWxlcyk7CiAKIHB1YmxpYzoKKyAgICBzdHJ1Y3Qg
TWF0Y2hSZXN1bHQ7CisKICAgICB2b2lkIGFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1Byb3BlcnR5
SUQsIENTU1ZhbHVlKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZvaWQgYXBwbHlQcm9wZXJ0eVRv
Q3VycmVudFN0eWxlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7CkBAIC0yODQsNiArMjkzLDQ1
IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBWZWN0b3I8TWF0Y2hlZFByb3BlcnRp
ZXMsIDY0PiBtX21hdGNoZWRQcm9wZXJ0aWVzOwogICAgIH07CisgICAgCisgICAgY2xhc3MgQ2Fz
Y2FkZWRQcm9wZXJ0aWVzIHsKKyAgICBwdWJsaWM6CisgICAgICAgIENhc2NhZGVkUHJvcGVydGll
cyhUZXh0RGlyZWN0aW9uLCBXcml0aW5nTW9kZSk7CisKKyAgICAgICAgc3RydWN0IFByb3BlcnR5
IHsKKyAgICAgICAgICAgIHZvaWQgYXBwbHkoU3R5bGVSZXNvbHZlciYsIGNvbnN0IE1hdGNoUmVz
dWx0Kik7CisKKyAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgaWQ7CisgICAgICAgICAgICBDYXNj
YWRlTGV2ZWwgbGV2ZWw7CisgICAgICAgICAgICBDU1NWYWx1ZSogY3NzVmFsdWVbM107CisgICAg
ICAgIH07CisKKyAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKSBjb25z
dDsKKyAgICAgICAgUHJvcGVydHkmIHByb3BlcnR5KENTU1Byb3BlcnR5SUQpOworICAgICAgICB2
b2lkIGFkZE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBib29sIGltcG9ydGFudCwgaW50IHN0
YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5ID0gZmFsc2UpOworCisg
ICAgICAgIHZvaWQgc2V0KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlJiwgdW5zaWduZWQgbGlua01h
dGNoVHlwZSwgQ2FzY2FkZUxldmVsKTsKKyAgICAgICAgdm9pZCBzZXREZWZlcnJlZChDU1NQcm9w
ZXJ0eUlELCBDU1NWYWx1ZSYsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUsIENhc2NhZGVMZXZlbCk7
CisKKyAgICAgICAgdm9pZCBhcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVyJiwg
Y29uc3QgTWF0Y2hSZXN1bHQqKTsKKworICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUHJv
cGVydHk+JiBjdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9jdXN0b21Qcm9wZXJ0aWVzOyB9
CisgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJikgY29uc3Q7Cisg
ICAgICAgIFByb3BlcnR5IGN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAg
ICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIGFkZFN0eWxlUHJvcGVydGllcyhjb25z
dCBTdHlsZVByb3BlcnRpZXMmLCBTdHlsZVJ1bGUmLCBib29sIGlzSW1wb3J0YW50LCBib29sIGlu
aGVyaXRlZE9ubHksIFByb3BlcnR5V2hpdGVsaXN0VHlwZSwgdW5zaWduZWQgbGlua01hdGNoVHlw
ZSwgQ2FzY2FkZUxldmVsKTsKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0UHJvcGVydHlJbnRlcm5h
bChQcm9wZXJ0eSYsIENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlJiwgdW5zaWduZWQgbGlua01hdGNo
VHlwZSwgQ2FzY2FkZUxldmVsKTsKKworICAgICAgICBQcm9wZXJ0eSBtX3Byb3BlcnRpZXNbbnVt
Q1NTUHJvcGVydGllcyArIDJdOworICAgICAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVz
ICsgMj4gbV9wcm9wZXJ0eUlzUHJlc2VudDsKKworICAgICAgICBWZWN0b3I8UHJvcGVydHksIDg+
IG1fZGVmZXJyZWRQcm9wZXJ0aWVzOworICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUHJv
cGVydHk+IG1fY3VzdG9tUHJvcGVydGllczsKKworICAgICAgICBUZXh0RGlyZWN0aW9uIG1fZGly
ZWN0aW9uOworICAgICAgICBXcml0aW5nTW9kZSBtX3dyaXRpbmdNb2RlOworICAgIH07CiAKIHBy
aXZhdGU6CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBmaXhlcyB1cCB0aGUgZGVmYXVsdCBmb250IHNp
emUgaWYgaXQgZGV0ZWN0cyB0aGF0IHRoZSBjdXJyZW50IGdlbmVyaWMgZm9udCBmYW1pbHkgaGFz
IGNoYW5nZWQuIC1kd2gKQEAgLTMwNSw5ICszNTMsNyBAQCBwcml2YXRlOgogICAgIGVudW0gU2hv
dWxkVXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSB7IERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXND
YWNoZSA9IDAsIFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgfTsKICAgICB2b2lkIGFwcGx5TWF0
Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50KiwgU2hvdWxk
VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSA9IFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwog
Ci0gICAgY2xhc3MgQ2FzY2FkZWRQcm9wZXJ0aWVzOwotCi0gICAgdm9pZCBhcHBseUNhc2NhZGVk
UHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmLCBpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxh
c3RQcm9wZXJ0eSk7CisgICAgdm9pZCBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFBy
b3BlcnRpZXMmLCBpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgY29uc3QgTWF0
Y2hSZXN1bHQqKTsKICAgICB2b2lkIGNhc2NhZGVNYXRjaGVzKENhc2NhZGVkUHJvcGVydGllcyYs
IGNvbnN0IE1hdGNoUmVzdWx0JiwgYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQg
ZW5kSW5kZXgsIGJvb2wgaW5oZXJpdGVkT25seSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlk
UmVnaW9uU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKQEAgLTM3Niw3ICs0MjIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGJvb2wgYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGU7IH0KICAgICAgICAgYm9vbCBh
cHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseVBy
b3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlOyB9CiAgICAgICAgIFBlbmRpbmdJbWFnZVByb3BlcnR5
TWFwJiBwZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9wZW5kaW5nSW1hZ2VQcm9w
ZXJ0aWVzOyB9Ci0KKyAgICAgICAgCiAgICAgICAgIFZlY3RvcjxSZWZQdHI8UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uPj4mIGZpbHRlcnNXaXRoUGVuZGluZ1NWR0RvY3VtZW50cygpIHsgcmV0dXJu
IG1fZmlsdGVyc1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRzOyB9CiAKICAgICAgICAgdm9pZCBzZXRG
b250RGlydHkoYm9vbCBpc0RpcnR5KSB7IG1fZm9udERpcnR5ID0gaXNEaXJ0eTsgfQpAQCAtNDAy
LDYgKzQ0OCwxNSBAQCBwdWJsaWM6CiAKICAgICAgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSBjc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jc3NUb0xlbmd0
aENvbnZlcnNpb25EYXRhOyB9CiAKKyAgICAgICAgQ2FzY2FkZUxldmVsIGNhc2NhZGVMZXZlbCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FzY2FkZUxldmVsOyB9CisgICAgICAgIHZvaWQgc2V0Q2FzY2Fk
ZUxldmVsKENhc2NhZGVMZXZlbCBsZXZlbCkgeyBtX2Nhc2NhZGVMZXZlbCA9IGxldmVsOyB9Cisg
ICAgICAgIAorICAgICAgICBDYXNjYWRlZFByb3BlcnRpZXMqIGF1dGhvclJvbGxiYWNrKCkgY29u
c3QgeyByZXR1cm4gbV9hdXRob3JSb2xsYmFjay5nZXQoKTsgfQorICAgICAgICBDYXNjYWRlZFBy
b3BlcnRpZXMqIHVzZXJSb2xsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclJvbGxiYWNrLmdl
dCgpOyB9CisgICAgICAgIAorICAgICAgICB2b2lkIHNldEF1dGhvclJvbGxiYWNrKENhc2NhZGVk
UHJvcGVydGllcyogcm9sbGJhY2spIHsgbV9hdXRob3JSb2xsYmFjay5yZXNldChyb2xsYmFjayk7
IH0KKyAgICAgICAgdm9pZCBzZXRVc2VyUm9sbGJhY2soQ2FzY2FkZWRQcm9wZXJ0aWVzKiByb2xs
YmFjaykgeyBtX3VzZXJSb2xsYmFjay5yZXNldChyb2xsYmFjayk7IH0KKyAgICAgICAgCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdm9pZCB1cGRhdGVDb252ZXJzaW9uRGF0YSgpOwogCkBAIC00MzQs
NiArNDg5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CiAK
ICAgICAgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBtX2Nzc1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGE7CisgICAgICAgIAorICAgICAgICBDYXNjYWRlTGV2ZWwgbV9jYXNjYWRlTGV2ZWwgeyBV
c2VyQWdlbnRMZXZlbCB9OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FzY2FkZWRQcm9wZXJ0
aWVzPiBtX2F1dGhvclJvbGxiYWNrOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FzY2FkZWRQ
cm9wZXJ0aWVzPiBtX3VzZXJSb2xsYmFjazsKICAgICB9OwogCiAgICAgU3RhdGUmIHN0YXRlKCkg
eyByZXR1cm4gbV9zdGF0ZTsgfQpAQCAtNDUxLDYgKzUxMCwxMSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFw
cGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpOyB9CiAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9W
aXNpdGVkTGlua1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5hcHBseVByb3BlcnR5VG9W
aXNpdGVkTGlua1N0eWxlKCk7IH0KIAorICAgIENhc2NhZGVMZXZlbCBjYXNjYWRlTGV2ZWwoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLmNhc2NhZGVMZXZlbCgpOyB9CisgICAgdm9pZCBzZXRDYXNj
YWRlTGV2ZWwoQ2FzY2FkZUxldmVsIGxldmVsKSB7IG1fc3RhdGUuc2V0Q2FzY2FkZUxldmVsKGxl
dmVsKTsgfQorICAgIAorICAgIENhc2NhZGVkUHJvcGVydGllcyogY2FzY2FkZWRQcm9wZXJ0aWVz
Rm9yUm9sbGJhY2soY29uc3QgTWF0Y2hSZXN1bHQmKTsKKwogICAgIENTU1RvU3R5bGVNYXAqIHN0
eWxlTWFwKCkgeyByZXR1cm4gJm1fc3R5bGVNYXA7IH0KICAgICBJbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkgeyByZXR1cm4gbV9pbnNwZWN0b3JDU1NPTVdy
YXBwZXJzOyB9CiAgICAgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0
aW9uKCkgeyByZXR1cm4gbV9zdGF0ZS5mb250RGVzY3JpcHRpb24oKTsgfQpAQCAtNDY4LDcgKzUz
Miw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNhblNoYXJlU3R5bGVXaXRoQ29udHJvbChTdHls
ZWRFbGVtZW50KikgY29uc3Q7CiAKLSAgICB2b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NT
VmFsdWUqLCBTZWxlY3RvckNoZWNrZXI6OkxpbmtNYXRjaE1hc2sgbGlua01hdGNoTWFzayA9IFNl
bGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0LCBjb25zdCBNYXRjaFJlc3VsdCogbWF0Y2hSZXN1
bHQgPSBudWxscHRyKTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc29sdmVkVmFyaWFibGVWYWx1
ZShDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYXJpYWJsZURlcGVuZGVudFZhbHVlJik7CiAKICAg
ICB2b2lkIGFwcGx5U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqKTsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE5MTI0OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE1LTEwLTE3ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIENTUzQgJ3JldmVydCcga2V5d29yZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTcwMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9j
c3MvYWxsLWtleXdvcmQtcmV2ZXJ0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3NzL2FsbC1rZXl3b3JkLXJldmVydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nz
cy9yZXZlcnQtY29sb3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mv
cmV2ZXJ0LWNvbG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3JldmVydC1tYXJn
aW5zLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3JldmVydC1tYXJn
aW5zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy9hbGwta2V5d29y
ZC1yZXZlcnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvdmFyaWFi
bGVzL2FsbC1rZXl3b3JkLXJldmVydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy92
YXJpYWJsZXMvcmV2ZXJ0LWluaGVyaXRhbmNlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtaW5oZXJpdGFuY2UuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1uby1pbmhlcml0YW5jZS1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LW5vLWlu
aGVyaXRhbmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy9yZXZl
cnQtdmFyaWFibGUtcmVmZXJlbmNlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtdmFyaWFibGUtcmVmZXJlbmNlLmh0bWw6IEFkZGVkLgor
CiAyMDE1LTEwLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
dGQgYW5kIHRoIHNob3VsZCB1c2UgSFRNTFRhYmxlRGF0YUNlbGxFbGVtZW50IGFuZCBIVE1MVGFi
bGVIZWFkZXJDZWxsRWxlbWVudCBpbnRlcmZhY2VzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9hbGwta2V5d29yZC1yZXZlcnQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9hbGwta2V5d29yZC1yZXZlcnQtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2FsbC1rZXl3b3JkLXJldmVydC1leHBlY3RlZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKKzxoZWFkPgorPHN0eWxlPgoraHRt
bCB7CisgIGZvbnQtc2l6ZTogc21hbGw7CisgIGJhY2tncm91bmQtY29sb3I6ICNGMEYwRjA7Cisg
IGNvbG9yOiBibHVlOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGJsb2NrcXVvdGUg
aWQ9InF1b3RlIj5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlz
Y2luZyBlbGl0LjwvYmxvY2txdW90ZT4gUGhhc2VsbHVzIGVnZXQgdmVsaXQgc2FnaXR0aXMuClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvYWxs
LWtleXdvcmQtcmV2ZXJ0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
YWxsLWtleXdvcmQtcmV2ZXJ0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9hbGwta2V5d29yZC1yZXZlcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4
IEBACis8aGVhZD4KKzxzdHlsZT4KK2h0bWwgeworICBmb250LXNpemU6IHNtYWxsOworICBiYWNr
Z3JvdW5kLWNvbG9yOiAjRjBGMEYwOworICBjb2xvcjogYmx1ZTsKK30KKworYmxvY2txdW90ZSB7
CisgIGRpc3BsYXk6aW5saW5lOworICBiYWNrZ3JvdW5kLWNvbG9yOiBza3libHVlOworICBjb2xv
cjogcmVkOworICBhbGw6IHJldmVydDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxi
bG9ja3F1b3RlIGlkPSJxdW90ZSI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3Rl
dHVyIGFkaXBpc2NpbmcgZWxpdC48L2Jsb2NrcXVvdGU+IFBoYXNlbGx1cyBlZ2V0IHZlbGl0IHNh
Z2l0dGlzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL3JldmVydC1jb2xvci1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY3NzL3JldmVydC1jb2xvci1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jc3MvcmV2ZXJ0LWNvbG9yLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNiBAQAorPGhlYWQ+Cis8c3R5bGU+CitodG1sIHsKKyAgZm9udC1z
aXplOiBzbWFsbDsKKyAgYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMDsKKyAgY29sb3I6IGJsdWU7
Cit9CisKK2Jsb2NrcXVvdGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBza3libHVlOyB9CisKKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxibG9ja3F1b3RlPlRoaXMgdGV4dCBzaG91bGQgYmUgYmx1
ZS48L2Jsb2NrcXVvdGU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9yZXZlcnQtY29sb3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9yZXZlcnQtY29sb3IuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L3JldmVydC1jb2xvci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKKzxoZWFk
PgorPHN0eWxlPgoraHRtbCB7CisgIGZvbnQtc2l6ZTogc21hbGw7CisgIGJhY2tncm91bmQtY29s
b3I6ICNGMEYwRjA7CisgIGNvbG9yOiBibHVlOworfQorCitibG9ja3F1b3RlIHsKKyAgYmFja2dy
b3VuZC1jb2xvcjogc2t5Ymx1ZTsKKyAgY29sb3I6IHJlZDsKKyAgY29sb3I6IHJldmVydDsKK30K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxibG9ja3F1b3RlIGlkPSJxdW90ZSI+VGhpcyB0
ZXh0IHNob3VsZCBiZSBibHVlLjwvYmxvY2txdW90ZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY3NzL3JldmVydC1tYXJnaW5zLWV4cGVjdGVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmV2ZXJ0LW1hcmdpbnMtZXhwZWN0ZWQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3JldmVydC1tYXJnaW5zLWV4
cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPGhlYWQ+Cis8c3R5
bGU+CitibG9ja3F1b3RlIHsKKyAgbWFyZ2luLXRvcDowOworICBtYXJnaW4tYm90dG9tOjA7Cisg
IGJvcmRlcjoxcHggc29saWQgYmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8
YmxvY2txdW90ZSBpZD0icXVvdGUiPlRoaXMgYmxvY2txdW90ZSBzaG91bGQgaGF2ZSB1c2VyIGFn
ZW50IG1hcmdpbnMgZm9yIHRoZSBsZWZ0IGFuZCByaWdodCBidXQgdGhlIHRvcCBhbmQgYm90dG9t
IG1hcmdpbnMgc2hvdWxkIGJlIDAuPC9ibG9ja3F1b3RlPgorPGJsb2NrcXVvdGUgaWQ9InF1b3Rl
Ij5UaGlzIGJsb2NrcXVvdGUgc2hvdWxkIGhhdmUgdXNlciBhZ2VudCBtYXJnaW5zIGZvciB0aGUg
bGVmdCBhbmQgcmlnaHQgYnV0IHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIHNob3VsZCBiZSAw
LjwvYmxvY2txdW90ZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3JldmVydC1tYXJnaW5zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MvcmV2ZXJ0LW1hcmdpbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3JldmVydC1tYXJnaW5zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAor
PGhlYWQ+Cis8c3R5bGU+CitibG9ja3F1b3RlIHsKKyAgbWFyZ2luOjA7CisgIG1hcmdpbi1yaWdo
dDpyZXZlcnQ7CisgIG1hcmdpbi1sZWZ0OnJldmVydDsKKyAgYm9yZGVyOjFweCBzb2xpZCBibGFj
azsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxibG9ja3F1b3RlIGlkPSJxdW90ZSI+
VGhpcyBibG9ja3F1b3RlIHNob3VsZCBoYXZlIHVzZXIgYWdlbnQgbWFyZ2lucyBmb3IgdGhlIGxl
ZnQgYW5kIHJpZ2h0IGJ1dCB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lucyBzaG91bGQgYmUgMC48
L2Jsb2NrcXVvdGU+Cis8YmxvY2txdW90ZSBpZD0icXVvdGUiPlRoaXMgYmxvY2txdW90ZSBzaG91
bGQgaGF2ZSB1c2VyIGFnZW50IG1hcmdpbnMgZm9yIHRoZSBsZWZ0IGFuZCByaWdodCBidXQgdGhl
IHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgc2hvdWxkIGJlIDAuPC9ibG9ja3F1b3RlPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2FsbC1rZXl3
b3JkLXJldmVydC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3ZhcmlhYmxlcy9hbGwta2V5d29yZC1yZXZlcnQtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9hbGwta2V5d29yZC1yZXZlcnQt
ZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8aGVhZD4KKzxz
dHlsZT4KK2h0bWwgeworICBmb250LXNpemU6IHNtYWxsOworICBiYWNrZ3JvdW5kLWNvbG9yOiAj
RjBGMEYwOworICBjb2xvcjogYmx1ZTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
cGFuIGlkPSJxdW90ZSI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFk
aXBpc2NpbmcgZWxpdC48L3NwYW4+IFBoYXNlbGx1cyBlZ2V0IHZlbGl0IHNhZ2l0dGlzLgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3Zhcmlh
Ymxlcy9hbGwta2V5d29yZC1yZXZlcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy92YXJpYWJsZXMvYWxsLWtleXdvcmQtcmV2ZXJ0Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvYWxsLWtleXdvcmQtcmV2ZXJ0Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorPGhlYWQ+Cis8dGl0bGU+VGVzdCBvZiBm
YWlsZWQgdmFyaWFibGUgbG9va3VwIGJlY2F1c2Ugb2YgInJldmVydCIgb24gYSBjdXN0b20gcHJv
cGVydHkgY2F1c2luZyBhbGwgdG8gcmVzZXQgZXZlcnl0aGluZy48L3RpdGxlPgorPHN0eWxlPgor
aHRtbCB7CisgIGZvbnQtc2l6ZTogc21hbGw7CisgIGJhY2tncm91bmQtY29sb3I6ICNGMEYwRjA7
CisgIGNvbG9yOiBibHVlOworICAtLWE6IHJldmVydDsKK30KKworYmxvY2txdW90ZSB7CisgIGJh
Y2tncm91bmQtY29sb3I6IHNreWJsdWU7CisgIGNvbG9yOiByZWQ7CisgIGFsbDogdmFyKC0tYSk7
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8YmxvY2txdW90ZSBpZD0icXVvdGUiPkxv
cmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuPC9i
bG9ja3F1b3RlPiBQaGFzZWxsdXMgZWdldCB2ZWxpdCBzYWdpdHRpcy4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0
LWluaGVyaXRhbmNlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdmFyaWFibGVzL3JldmVydC1pbmhlcml0YW5jZS1leHBlY3RlZC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1pbmhlcml0YW5j
ZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+PGh0bWw+PGhlYWQ+PHRpdGxlPkNTUyBSZWZ0ZXN0IFJlZmVyZW5jZTwv
dGl0bGU+Cis8bGluayBocmVmPSJtYWlsdG86Y2FtQG1jYy5pZC5hdSIgcmVsPSJhdXRob3IiIHRp
dGxlPSJDYW1lcm9uIE1jQ29ybWFjayI+Cis8c3R5bGU+CitwIHsKKyAgY29sb3I6IGdyZWVuOwor
fQorPC9zdHlsZT4KKzwvaGVhZD48Ym9keT48cD5UaGlzIHRleHQgbXVzdCBiZSBncmVlbi48L3A+
Cis8L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtaW5oZXJpdGFuY2UuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LWluaGVyaXRhbmNl
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcmV2
ZXJ0LWluaGVyaXRhbmNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT48aHRtbD48aGVhZD48dGl0bGU+Q1NTIFRlc3Q6IFRlc3QgZGVj
bGFyaW5nIGEgdmFyaWFibGUgd2hvc2UgdmFsdWUgaXMgInJldmVydCIgd2hlcmUgdGhlcmUgaXMg
YSB2YXJpYWJsZSB0byBpbmhlcml0IGZyb20uPC90aXRsZT4KKzxzdHlsZT4KK2JvZHkgeworICAt
LWE6IGdyZWVuOworICBjb2xvcjogY3JpbXNvbjsKK30KK3AgeworICBjb2xvcjogcmVkOworfQor
cCB7CisgIGNvbG9yOiBvcmFuZ2U7CisgIC0tYTogcmV2ZXJ0OworICBjb2xvcjogdmFyKC0tYSk7
Cit9Cis8L3N0eWxlPgorPC9oZWFkPjxib2R5PjxwPlRoaXMgdGV4dCBtdXN0IGJlIGdyZWVuLjwv
cD4KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1uby1pbmhlcml0YW5jZS1leHBlY3Rl
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yZXZl
cnQtbm8taW5oZXJpdGFuY2UtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtbm8taW5oZXJpdGFuY2UtZXhwZWN0ZWQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PjxodG1sPjxoZWFkPjx0aXRsZT5DU1MgUmVmdGVzdCBSZWZlcmVuY2U8L3RpdGxlPgorPGxpbmsg
aHJlZj0ibWFpbHRvOmNhbUBtY2MuaWQuYXUiIHJlbD0iYXV0aG9yIiB0aXRsZT0iQ2FtZXJvbiBN
Y0Nvcm1hY2siPgorPHN0eWxlPgorcCB7CisgIGNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+Cis8
L2hlYWQ+PGJvZHk+PHA+VGhpcyB0ZXh0IG11c3QgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PjwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy92YXJpYWJsZXMvcmV2ZXJ0LW5vLWluaGVyaXRhbmNlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1uby1pbmhlcml0YW5jZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1uby1p
bmhlcml0YW5jZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+PGh0bWw+PGhlYWQ+PHRpdGxlPkNTUyBUZXN0OiBUZXN0IGRlY2xhcmlu
ZyBhIHZhcmlhYmxlIHdob3NlIHZhbHVlIGlzICJyZXZlcnQiIHdoZXJlIHRoZXJlIGlzIG5vIHZh
cmlhYmxlIHRvIGluaGVyaXQgZnJvbS48L3RpdGxlPgorPHN0eWxlPgorcCB7CisgIGNvbG9yOiBy
ZWQ7Cit9CitwIHsKKyAgY29sb3I6IG9yYW5nZTsKKyAgLS1hOiByZXZlcnQ7CisgIGNvbG9yOiB2
YXIoLS1hLGdyZWVuKTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+PHA+VGhpcyB0ZXh0IG11
c3QgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LXZhcmlhYmxl
LXJlZmVyZW5jZS1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3ZhcmlhYmxlcy9yZXZlcnQtdmFyaWFibGUtcmVmZXJlbmNlLWV4cGVjdGVkLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LXZhcmlh
YmxlLXJlZmVyZW5jZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+PGh0bWw+PGhlYWQ+PHRpdGxlPkNTUyBSZWZ0ZXN0
IFJlZmVyZW5jZTwvdGl0bGU+Cis8bGluayBocmVmPSJtYWlsdG86Y2FtQG1jYy5pZC5hdSIgcmVs
PSJhdXRob3IiIHRpdGxlPSJDYW1lcm9uIE1jQ29ybWFjayI+Cis8c3R5bGU+CitwIHsKKyAgY29s
b3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzwvaGVhZD48Ym9keT48cD5UaGlzIHRleHQgbXVzdCBi
ZSBncmVlbi48L3A+Cis8L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtdmFyaWFibGUtcmVm
ZXJlbmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVz
L3JldmVydC12YXJpYWJsZS1yZWZlcmVuY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtdmFyaWFibGUtcmVmZXJlbmNlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT48aHRt
bD48aGVhZD48dGl0bGU+Q1NTIFRlc3Q6IFRlc3QgZGVjbGFyaW5nIGEgdmFyaWFibGUgd2hvc2Ug
dmFsdWUgY29uc2lzdHMgb2YgYSByZWZlcmVuY2UgdG8gYSB2YXJpYWJsZSB3aG9zZSB2YWx1ZSBp
cyAicmV2ZXJ0Ii48L3RpdGxlPgorPHN0eWxlPgorYm9keSB7CisgIC0tYjogZ3JlZW47CisgIGNv
bG9yOiByZWQ7Cit9CitwIHsKKyAgY29sb3I6IG9yYW5nZTsKKyAgLS1hOiB2YXIoLS1iKTsKKyAg
LS1iOiByZXZlcnQ7CisgIGNvbG9yOiB2YXIoLS1hKTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+PGJv
ZHk+PHA+VGhpcyB0ZXh0IG11c3QgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PjwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263390</attachid>
            <date>2015-10-17 14:46:04 -0700</date>
            <delta_ts>2015-10-17 14:55:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>65150</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTI0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyOSBAQAorMjAxNS0xMC0xNyAgRGF2aWQg
SHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBDU1M0ICdy
ZXZlcnQnIGtleXdvcmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDk3MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBuZXcgdGVzdHMgaW4gZmFzdC9jc3MgYW5kIGZhc3QvY3NzL3ZhcmlhYmxl
cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENTU1JldmVydFZhbHVlIHRvIHRoZSBw
cm9qZWN0IGFuZCBtYWtlZmlsZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlS2V5d29yZFZhbHVlKToKKyAgICAgICAgTWFrZSBzdXJlIHRv
IGhhbmRsZSAicmV2ZXJ0IiBpbiB0aGUga2V5d29yZCBwYXJzaW5nIHBhdGggKGFsb25nIHdpdGgg
aW5oZXJpdC9pbml0aWFsL3Vuc2V0KS4KKworICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDdXN0b21Qcm9w
ZXJ0eURlY2xhcmF0aW9uKToKKyAgICAgICAgQXQgdGhlIHBhcnNlciBsZXZlbCwgInJldmVydCIg
aXMganVzdCBsaWtlIGluaGVyaXQvaW5pdGlhbC91bnNldCBhbmQgZ2V0cyBpdHMgb3duIHNwZWNp
YWwKKyAgICAgICAgc2luZ2xldG9uIHZhbHVlLCBDU1NSZXZlcnRWYWx1ZS4KKworICAgICAgICAq
IGNzcy9DU1NSZXZlcnRWYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmV2
ZXJ0VmFsdWU6OmN1c3RvbUNTU1RleHQpOgorICAgICAgICAqIGNzcy9DU1NSZXZlcnRWYWx1ZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1JldmVydFZhbHVlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUmV2ZXJ0VmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NSZXZlcnRWYWx1ZTo6Q1NTUmV2ZXJ0VmFsdWUpOgorICAgICAgICBUaGlzIHZhbHVlIGlz
IGlkZW50aWNhbCB0byB0aGUgaW5oZXJpdC9pbml0aWFsL3Vuc2V0IHZhbHVlcywgaS5lLiwgaXRz
IG93biBzcGVjaWFsIHZhbHVlCisgICAgICAgIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUg
YSByZXZlcnQgd2hlbiBkb2luZyBzdHlsZSByZXNvbHV0aW9uLgorCisgICAgICAgICogY3NzL0NT
U1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpjc3NWYWx1ZVR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6ZGVzdHJveSk6
CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6
aXNJbmhlcml0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNJbml0aWFs
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzVW5zZXRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNSZXZlcnRWYWx1ZSk6CisgICAgICAgIEFkZCB0aGUg
UmV2ZXJ0Q2xhc3MgdG8gQ1NTVmFsdWUgYW5kIG1ha2Ugc3VyZSBpdCBpcyBoYW5kbGVkIGluIGFs
bCB0aGUgYXBwcm9wcmlhdGUgbWV0aG9kcy4KKworICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdv
cmRzLmluOgorICAgICAgICBBZGQgdGhlICJyZXZlcnQiIGtleXdvcmQgdG8gdGhlIGxpc3Qgb2Yg
YWxsb3dlZCBDU1Mga2V5d29yZHMuCisKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29sLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Q1NTVmFsdWVQb29sKToKKyAgICAgICAg
KiBjc3MvQ1NTVmFsdWVQb29sLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBvb2w6OmNy
ZWF0ZVJldmVydFZhbHVlKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGEgQ1NTUmV2ZXJ0VmFs
dWUgc2luZ2xldG9uLCBqdXN0IGxpa2UgaW5oZXJpdC91bnNldC9pbml0aWFsLgorCisgICAgICAg
ICogY3NzL0ZvbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udExvYWRlcjo6cmVz
b2x2ZUZvbnRTdHlsZSk6CisgICAgICAgIEFkZCAidW5zZXQiIGFuZCAicmV2ZXJ0IiBhcyBzcGVj
aWFsIGtleXdvcmRzIHRvIGJlIGlnbm9yZWQuIFRoaXMgY29kZSBzZWVtcyB0byBiZSB0dXJuZWQg
b2ZmLAorICAgICAgICBidXQgcGF0Y2hpbmcgaXQgYW55d2F5LgorCisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oOgorICAgICAgICBBZGQgYSBNYXRjaERlZmF1bHQgdmFsdWUgb2YgMCB0
byB0aGUgTGlua01hdGNoTWFzay4gVGhpcyBlbmFibGVzIGl0IHRvIGJlIHVzZWQgYXMgYW4gaW5k
ZXgKKyAgICAgICAgdG8gdGhlIGNvcnJlY3QgdmFsdWUgaW4gUHJvcGVydHkgKGluIHRoZSBzdHls
ZSByZXNvbHV0aW9uIGNvZGUpLgorCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OmluaXRGb3JTdHlsZVJlc29s
dmUpOgorICAgICAgICBEZWxldGUgYW55IGxpbmdlcmluZyBvbGQgQ2FzY2FkZWRQcm9wZXJ0eSBy
b2xsYmFja3MgZm9yIFVBL3VzZXIgcnVsZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5
TWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICBQYXNzIGFsb25nIHRoZSBNYXRjaFJlc3VsdCBh
cyBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlciwgc2luY2Ugd2UgbmVlZCBpdCB0byBsYXppbHkgY29t
cHV0ZQorICAgICAgICB0aGUgY2FzY2FkZSByb2xsYmFja3MgaWYgdGhlICJyZXZlcnQiIGtleXdv
cmQgaXMgZW5jb3VudGVyZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNh
c2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKToKKyAgICAgICAgVGhpcyBtZXRob2Qgd2lsbCBs
YXppbHkgY3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgQ2FzY2FkZWRQcm9wZXJ0aWVzIHBvaW50ZXIg
dGhhdCBpcyBjYWNoZWQKKyAgICAgICAgaW4gdGhlIFN0eWxlUmVzb2x2ZXIncyBzdGF0ZS4gVGhp
cyB3aWxsIGNvbnRhaW4gb25seSBVQSBydWxlcyAoZm9yIHVzZXIgcmV2ZXJ0cykgYW5kIFVBL3Vz
ZXIKKyAgICAgICAgcnVsZXMgKGZvciBhdXRob3IgcmV2ZXJ0cykuIFRoZXNlIHdpbGwgb25seSBi
ZSBjb21wdXRlZCBhdCBtb3N0IG9uY2UgZm9yIGEgZ2l2ZW4gZWxlbWVudAorICAgICAgICB3aGVu
IGRvaW5nIGEgcmV2ZXJzaW9uLCBhbmQgdGhleSB3aWxsIGJlIGNvbXB1dGVkIGxhemlseSwgaS5l
Liwgb25seSBpZiBhIHJldmVydCBpcworICAgICAgICByZXF1ZXN0ZWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICBQYXNzIGFsb25n
IHRoZSBMaW5rTWF0Y2hNYXNrIGFuZCB0aGUgTWF0Y2hSZXN1bHQgdG8gYXBwbHlQcm9wZXJ0eS4g
VGhpcyB3YXkgd2Uga25vdyBzcGVjaWZpY2FsbHkKKyAgICAgICAgd2hpY2ggbGluayB0eXBlIHdl
IHdlcmUgY29tcHV0aW5nIGlmIHdlIGhhdmUgdG8gcmV2ZXJ0IChzbyB0aGF0IHdlIHJvbGwgYmFj
ayBhbmQgbG9vayBhdCB0aGUKKyAgICAgICAgc2FtZSBpbmRleCBpbiB0aGUgcmV2ZXJ0ZWQgdmVy
c2lvbikuIFRoZSBNYXRjaFJlc3VsdCBpcyBwYXNzZWQgYWxvbmcgYmVjYXVzZSBpdCBpcyBuZWVk
ZWQKKyAgICAgICAgdG8gYnVpbGQgdGhlIENhc2NhZGVkUHJvcGVydGllcyByb2xsYmFja3MuCisK
KyAgICAgICAgVGhlIGJhc2ljIGlkZWEgaXMgdGhhdCBpZiBhIHJldmVydCBpcyBlbmNvdW50ZXJl
ZCwgdGhlIGxldmVsIHRoYXQgdGhlIHJ1bGUgY2FtZSBmcm9tIGlzCisgICAgICAgIGNoZWNrZWQu
IElmIGl0IGlzIFVBIGxldmVsLCBqdXN0IHRyZWF0IGFzICJ1bnNldC4iIElmIGl0IGlzIGF1dGhv
ciBvciB1c2VyIGxldmVsLCBnZXQKKyAgICAgICAgdGhlIGNvcnJlY3QgQ2FzY2FkZWRQcm9wZXJ0
aWVzIHJvbGxiYWNrIGFuZCByZXBlYXQgdGhlIGFwcGx5UHJvcGVydHkgdXNpbmcgdGhlIHByb3Bl
cnR5CisgICAgICAgIGZvdW5kIGluIHRoZSByb2xsYmFjay4gSWYgdGhlIHByb3BlcnR5IGlzIG5v
dCBwcmVzZW50IGluIHRoZSBjYXNjYWRlIHJvbGxiYWNrLCB0aGVuIHRoZQorICAgICAgICByZXZl
cnQgYmVjb21lcyBhbiB1bnNldC4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
Q2FzY2FkZWRQcm9wZXJ0aWVzOjpoYXNDdXN0b21Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OmN1c3RvbVByb3BlcnR5KToKKyAg
ICAgICAgSGVscGVycyB1c2VkIGJ5IGFwcGx5UHJvcGVydHkgdG8gY2hlY2sgb24gY3VzdG9tIHBy
b3BlcnRpZXMsIHNpbmNlIHRoZXkgY2FuIHJldmVydCB0b28KKyAgICAgICAganVzdCBsaWtlIGEg
cmVndWxhciBwcm9wZXJ0eSBjYW4uCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OkNhc2NhZGVkUHJvcGVydGllczo6c2V0UHJvcGVydHlJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OnNldERlZmVycmVkKToK
KyAgICAgICAgUGFzc2luZyBhbG9uZyB0aGUgQ2FzY2FkZUxldmVsIChVQSwgVXNlciwgQXV0aG9y
KSBzbyB0aGF0IGl0IGNhbiBiZSBzdG9yZWQgaW4gdGhlIFByb3BlcnR5LgorICAgICAgICBUaGlz
IHdheSB3aGVuIHdlIGRvIHByb3BlcnR5IGFwcGxpY2F0aW9uLCB3ZSBhbHdheXMga25vdyB3aGVy
ZSB0aGUgcnVsZSBjYW1lIGZyb20gc28KKyAgICAgICAgdGhhdCB0aGUgcmV2ZXJzaW9uIGNhbiBi
ZSBoYW5kbGVkIHByb3Blcmx5LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpD
YXNjYWRlZFByb3BlcnRpZXM6OmFkZFN0eWxlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpjYXNjYWRlTGV2ZWxGb3JJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjpDYXNjYWRlZFByb3BlcnRpZXM6OmFkZE1hdGNoZXMpOgorICAgICAgICBXaGVuIHN0eWxlIHBy
b3BlcnRpZXMgYXJlIGFkZGVkLCBhbHNvIGZpZ3VyZSBvdXQgdGhlIENhc2NhZGVMZXZlbCBhbmQg
cGFzcyBpdCBhbG9uZyB0byBiZQorICAgICAgICBzdG9yZWQgaW4gdGhlIFByb3BlcnR5LiBXZSB1
c2UgdGhlIE1hdGNoUmVzdWx0J3MgcmFuZ2VzIHRvIGtub3cgd2hlcmUgYSBwcm9wZXJ0eSBjb21l
cyBmcm9tLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3Bl
cnRpZXM6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHk6OmFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKToKKyAgICAg
ICAgUGFzcyBhbG9uZyB0aGUgTWF0Y2hSZXN1bHQgc28gd2Uga25vdyBob3cgdG8gYnVpbGQgdGhl
IHJvbGxiYWNrLgorCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpjYXNjYWRlTGV2ZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldENhc2NhZGVMZXZlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6YXV0aG9yUm9sbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnVzZXJSb2xsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6c2V0QXV0aG9yUm9sbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFVzZXJSb2xsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpjYXNjYWRlTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNv
bHZlcjo6c2V0Q2FzY2FkZUxldmVsKToKKyAgICAgICAgTW92ZSBDYXNjYWRlZFByb3BlcnRpZXMg
aW50byB0aGUgaGVhZGVyLiBBZGQgQ2FzY2FkZUxldmVsIHRvIFByb3BlcnR5LiBBZGQgdGhlIGxl
dmVsIGFuZAorICAgICAgICByb2xsYmFja3MgdG8gdGhlIHJlc29sdmVyJ3Mgc3RhdGUuCisKIDIw
MTUtMTAtMTcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29j
b2FdIFN0b3AgdXNpbmcgV0tBWFJlZ2lzdGVyUmVtb3RlQXBwCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTkxMjQ5KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMzgsNiArMTMzOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
ICAgICBjc3MvQ1NTUHJvcGVydHkuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5j
cHAKICAgICBjc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAorICAgIGNzcy9DU1NSZXZlcnRWYWx1ZS5j
cHAKICAgICBjc3MvQ1NTUnVsZS5jcHAKICAgICBjc3MvQ1NTUnVsZUxpc3QuY3BwCiAgICAgY3Nz
L0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkxMjQ5KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01NDk5LDYgKzU0OTksOCBAQAogCQlCQzc3OUUxNzFCQjIyN0NBMDBDQUE4QkYgLyog
U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNzc5RTE1MUJCMjI2QTIwMENBQThCRiAvKiBTdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUJDN0Q4RkVGMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Q4RkVEMUJEMDNC
NjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmNwcCAqLzsgfTsKIAkJQkM3RDhGRjAxQkQwM0I2
NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Q4RkVFMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZh
bHVlLmggKi87IH07CisJCUJDN0Q4RkYzMUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdE
OEZGMTFCRDFBNDc5MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0VmFsdWUuY3BwICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCUJDN0Q4RkY0MUJEMUE0NzkwMEZGRTU0MCAvKiBD
U1NSZXZlcnRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM3RDhGRjIxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggKi87IHNl
dHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlE
MDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM3RkE2
MjAwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTYxRTBEMUYwQ0JEMDBEQjIyQTkgLyog
TGl2ZU5vZGVMaXN0LmNwcCAqLzsgfTsKIAkJQkM3RkE2MjEwRDFGMENCRDAwREIyMkE5IC8qIExp
dmVOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM3RkE2MUYwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5oICovOyB9OwpAQCAt
MTMyMTksNiArMTMyMjEsOCBAQAogCQlCQzdCMkFGODA0NTA4MjQxMDBBODAwMEYgLyogU2Nyb2xs
YmFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcm9sbGJhci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKIAkJQkM3RDhGRUQxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVW5zZXRWYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0Q4RkVFMUJEMDNCNjQwMEZGRTU0
MCAvKiBDU1NVbnNldFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENT
U1Vuc2V0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3RDhGRjExQkQx
QTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENTU1JldmVydFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkM3RDhGRjIxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1JldmVydFZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9i
c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZU9ic2VydmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0ZBNjFFMEQxRjBDQkQwMERCMjJB
OSAvKiBMaXZlTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTGl2ZU5vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3RkE2
MUYwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMaXZlTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIzMDgxLDYgKzIzMDg1LDggQEAKIAkJCQk5MzYyNjQwQTBERTExMzdEMDA5RDVBMDAgLyog
Q1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5oICovLAogCQkJCUJDNUExMkREMERDMDQxNDgwMEM5QUZB
RCAvKiBDU1NSZWZsZWN0VmFsdWUuY3BwICovLAogCQkJCUJDNUExMkRFMERDMDQxNDgwMEM5QUZB
RCAvKiBDU1NSZWZsZWN0VmFsdWUuaCAqLywKKwkJCQlCQzdEOEZGMTFCRDFBNDc5MDBGRkU1NDAg
LyogQ1NTUmV2ZXJ0VmFsdWUuY3BwICovLAorCQkJCUJDN0Q4RkYyMUJEMUE0NzkwMEZGRTU0MCAv
KiBDU1NSZXZlcnRWYWx1ZS5oICovLAogCQkJCUE4MEU2Q0RDMEExOTg5Q0EwMDdGQjhDNSAvKiBD
U1NSdWxlLmNwcCAqLywKIAkJCQlBODBFNkNFMzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUnVsZS5o
ICovLAogCQkJCTE0Q0Y3QTcwMDlGNUNGOUEwMEVCMzY2NSAvKiBDU1NSdWxlLmlkbCAqLywKQEAg
LTI1NTY0LDYgKzI1NTcwLDcgQEAKIAkJCQlBODEzNjlEQTA5NzM3NEY2MDBENzQ0NjMgLyogSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUQwMTAwOTEyN0U2NDJB
MDAxNTAzNUYgLyogSFRNTE91dHB1dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3
Q0I1MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MUGFyYWdyYXBoRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkM3RDhGRjQxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODcxRDQ1ODBBMTI3Q0JDMDBCMTJBNjggLyogSFRNTFBhcmFtRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFMkEzMDcxMjNFOURDMDAwOUZFMTJBIC8qIEhU
TUxQYXJzZXJJZGlvbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3M0Y0MThBMTY5Qjk1RkYwMDA2
QkY2MCAvKiBIVE1MUGFyc2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDYwMSw2ICsz
MDYwOCw3IEBACiAJCQkJNDRDMzYzRjEwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCThDNkVBNjE5MTFFRjdFMDQwMEZE
OEVFMyAvKiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNE
RDcwODk2MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQkM3RDhGRjMxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5RTkxMUNBMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9w
ZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1REZFOEY1NjBEMTY0NzdCMDA3NkU5Mzcg
LyogU2NoZWR1bGVkQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNjJDN0Y0MTFGNzdF
RkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1tCShyZXZpc2lvbiAxOTEyNDkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTI1LDYgKzEyNSw3IEBAIENsYXNzIGtpdENsYXNzKFdlYkNvcmU6OkNTU1ZhbHVlKiBpbXBsKQog
ICAgICAgICBjYXNlIFdlYkNvcmU6OkNTU1ZhbHVlOjpDU1NfSU5IRVJJVDoKICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpDU1NWYWx1ZTo6Q1NTX0lOSVRJQUw6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6
Q1NTVmFsdWU6OkNTU19VTlNFVDoKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpDU1NWYWx1ZTo6Q1NT
X1JFVkVSVDoKICAgICAgICAgICAgIHJldHVybiBbRE9NQ1NTVmFsdWUgY2xhc3NdOwogICAgICAg
ICBjYXNlIFdlYkNvcmU6OkNTU1ZhbHVlOjpDU1NfQ1VTVE9NOgogICAgICAgICAgICAgcmV0dXJu
IFtET01DU1NWYWx1ZSBjbGFzc107CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2
aXNpb24gMTkxMjQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1h
cHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCiAjaW5jbHVkZSAi
Q1NTUmVmbGVjdFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUmV2ZXJ0VmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTU3R5bGVTaGVldC5oIgpAQCAtMTE5NywxMCArMTE5OCwxMCBAQCBzdGF0aWMgQ1NTUGFyc2Vy
OjpQYXJzZVJlc3VsdCBwYXJzZUtleXdvCiAgICAgaWYgKCFpc0tleXdvcmRQcm9wZXJ0eUlEKHBy
b3BlcnR5SWQpKSB7CiAgICAgICAgIC8vIEFsbCBwcm9wZXJ0aWVzIGFjY2VwdCB0aGUgdmFsdWVz
IG9mICJpbml0aWFsIiBhbmQgImluaGVyaXQiLgogICAgICAgICBTdHJpbmcgbG93ZXJDYXNlU3Ry
aW5nID0gc3RyaW5nLmxvd2VyKCk7Ci0gICAgICAgIGlmIChsb3dlckNhc2VTdHJpbmcgIT0gImlu
aXRpYWwiICYmIGxvd2VyQ2FzZVN0cmluZyAhPSAiaW5oZXJpdCIgJiYgbG93ZXJDYXNlU3RyaW5n
ICE9ICJ1bnNldCIpCisgICAgICAgIGlmIChsb3dlckNhc2VTdHJpbmcgIT0gImluaXRpYWwiICYm
IGxvd2VyQ2FzZVN0cmluZyAhPSAiaW5oZXJpdCIgJiYgbG93ZXJDYXNlU3RyaW5nICE9ICJ1bnNl
dCIgJiYgbG93ZXJDYXNlU3RyaW5nICE9ICJyZXZlcnQiKQogICAgICAgICAgICAgcmV0dXJuIENT
U1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkVycm9yOwogCi0gICAgICAgIC8vIFBhcnNlIGluaXRpYWwv
aW5oZXJpdC91bnNldCBzaG9ydGhhbmRzIHVzaW5nIHRoZSBDU1NQYXJzZXIuCisgICAgICAgIC8v
IFBhcnNlIGluaXRpYWwvaW5oZXJpdC91bnNldC9yZXZlcnQgc2hvcnRoYW5kcyB1c2luZyB0aGUg
Q1NTUGFyc2VyLgogICAgICAgICBpZiAoc2hvcnRoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJZCku
bGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJy
b3I7CiAgICAgfQpAQCAtMTIxOSw2ICsxMjIwLDggQEAgc3RhdGljIENTU1BhcnNlcjo6UGFyc2VS
ZXN1bHQgcGFyc2VLZXl3bwogICAgICAgICB2YWx1ZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKTsKICAgICBlbHNlIGlmICh2YWx1ZUlEID09
IENTU1ZhbHVlVW5zZXQpCiAgICAgICAgIHZhbHVlID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVVbnNldFZhbHVlKCk7CisgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVJl
dmVydCkKKyAgICAgICAgdmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVJl
dmVydFZhbHVlKCk7CiAgICAgZWxzZSBpZiAoaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVl
KHByb3BlcnR5SWQsIHZhbHVlSUQsIHBhcnNlckNvbnRleHQsIHN0eWxlU2hlZXRDb250ZW50cykp
CiAgICAgICAgIHZhbHVlID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUodmFsdWVJRCk7CiAgICAgZWxzZQpAQCAtMTk2NSw2ICsxOTY4LDExIEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKHByb3BJZCwgY3NzVmFs
dWVQb29sLmNyZWF0ZVVuc2V0VmFsdWUoKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVJldmVydCkgeworICAgICAgICBpZiAo
bnVtICE9IDEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZEV4cGFuZGVk
UHJvcGVydHlGb3JWYWx1ZShwcm9wSWQsIGNzc1ZhbHVlUG9vbC5jcmVhdGVSZXZlcnRWYWx1ZSgp
LCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgaWYg
KHByb3BJZCA9PSBDU1NQcm9wZXJ0eUFsbCkKQEAgLTQyMTMsNiArNDIyMSw4IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZUN1c3RvbVByb3BlcnR5RGVjbGEKICAgICAgICAgdmFsdWUgPSBjc3NWYWx1
ZVBvb2wuY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKTsKICAgICBlbHNlIGlmIChpZCA9PSBD
U1NWYWx1ZVVuc2V0KQogICAgICAgICB2YWx1ZSA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVVbnNldFZh
bHVlKCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXZlcnQpCisgICAgICAgIHZhbHVl
ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVJldmVydFZhbHVlKCk7CiAgICAgZWxzZSB7CiAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlRnJv
bVBhcnNlclZhbHVlTGlzdCgqbV92YWx1ZUxpc3QpOwogICAgICAgICBpZiAobV92YWx1ZUxpc3Qt
PmNvbnRhaW5zVmFyaWFibGVzKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmV2ZXJ0
VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmV2ZXJ0VmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q1NTUmV2ZXJ0VmFsdWUuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBDU1NSZXZlcnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUmV2ZXJ0Iik7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1ZS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1JldmVydFZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ1NTUmV2ZXJ0VmFsdWVfaAorI2RlZmluZSBDU1NS
ZXZlcnRWYWx1ZV9oCisKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTUmV2ZXJ0VmFsdWUg
OiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q1NTUmV2ZXJ0VmFs
dWU+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NSZXZl
cnRWYWx1ZSk7CisgICAgfQorCisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKKwor
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1JldmVydFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorCitwcml2YXRlOgorICAgIENTU1JldmVydFZhbHVlKCkKKyAgICAgICAgOiBDU1NWYWx1
ZShSZXZlcnRDbGFzcykKKyAgICB7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxVRShDU1NSZXZlcnRWYWx1ZSwgaXNS
ZXZlcnRWYWx1ZSgpKQorCisjZW5kaWYgLy8gQ1NTUmV2ZXJ0VmFsdWVfaApJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuY3BwCShyZXZpc2lvbiAxOTEyNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDggQEAgQ1NTVmFsdWU6
OlR5cGUgQ1NTVmFsdWU6OmNzc1ZhbHVlVHlwZSgpIAogICAgICAgICByZXR1cm4gQ1NTX0lOSVRJ
QUw7CiAgICAgaWYgKGlzVW5zZXRWYWx1ZSgpKQogICAgICAgICByZXR1cm4gQ1NTX1VOU0VUOwor
ICAgIGlmIChpc1JldmVydFZhbHVlKCkpCisgICAgICAgIHJldHVybiBDU1NfUkVWRVJUOwogICAg
IHJldHVybiBDU1NfQ1VTVE9NOwogfQogCkBAIC0yMDMsNiArMjA1LDggQEAgYm9vbCBDU1NWYWx1
ZTo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJiBvdAogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVD
U1NWYWx1ZXM8Q1NTSW5pdGlhbFZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIFVu
c2V0Q2xhc3M6CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NVbnNldFZh
bHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFJldmVydENsYXNzOgorICAgICAgICAg
ICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTUmV2ZXJ0VmFsdWU+KCp0aGlzLCBvdGhlcik7
CiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKICAgICAgICAgY2FzZSBHcmlkTGluZU5hbWVz
Q2xhc3M6CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NHcmlkTGluZU5h
bWVzVmFsdWU+KCp0aGlzLCBvdGhlcik7CkBAIC0zMDUsNiArMzA5LDggQEAgU3RyaW5nIENTU1Zh
bHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0luaXRpYWxW
YWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKICAgICBjYXNlIFVuc2V0Q2xhc3M6CiAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxDU1NVbnNldFZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgp
OworICAgIGNhc2UgUmV2ZXJ0Q2xhc3M6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NSZXZl
cnRWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZ
T1VUKQogICAgIGNhc2UgR3JpZExpbmVOYW1lc0NsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwpAQCAtNDE3
LDYgKzQyMyw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgIGNhc2UgVW5zZXRDbGFz
czoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1Vuc2V0VmFsdWU+KHRoaXMpOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBSZXZlcnRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0
PENTU1JldmVydFZhbHVlPih0aGlzKTsKKyAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShDU1Nf
R1JJRF9MQVlPVVQpCiAgICAgY2FzZSBHcmlkTGluZU5hbWVzQ2xhc3M6CiAgICAgICAgIGRlbGV0
ZSBkb3duY2FzdDxDU1NHcmlkTGluZU5hbWVzVmFsdWU+KHRoaXMpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlLmgJKHJldmlzaW9uIDE5MTI0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgQ1NT
X1ZBTFVFX0xJU1QgPSAyLAogICAgICAgICBDU1NfQ1VTVE9NID0gMywKICAgICAgICAgQ1NTX0lO
SVRJQUwgPSA0LAotICAgICAgICBDU1NfVU5TRVQgPSA1CisgICAgICAgIENTU19VTlNFVCA9IDUs
CisgICAgICAgIENTU19SRVZFUlQgPSA2CiAgICAgfTsKIAogICAgIC8vIE92ZXJyaWRlIFJlZkNv
dW50ZWQncyBkZXJlZigpIHRvIGVuc3VyZSBvcGVyYXRvciBkZWxldGUgaXMgY2FsbGVkIG9uCkBA
IC05NCw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5oZXJpdGVkVmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBJbmhlcml0ZWRDbGFzczsgfQogICAgIGJvb2wgaXNJ
bml0aWFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBJbml0aWFsQ2xhc3M7
IH0KICAgICBib29sIGlzVW5zZXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09
IFVuc2V0Q2xhc3M7IH0KKyAgICBib29sIGlzUmV2ZXJ0VmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzVHlwZSA9PSBSZXZlcnRDbGFzczsgfQogICAgIGJvb2wgdHJlYXRBc0luaXRpYWxWYWx1
ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIHRyZWF0QXNJbmhlcml0ZWRWYWx1ZShD
U1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIGlzTGluZWFyR3JhZGllbnRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IExpbmVhckdyYWRpZW50Q2xhc3M7IH0KQEAgLTE2
OSw2ICsxNzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEluaGVyaXRlZENsYXNzLAogICAgICAg
ICBJbml0aWFsQ2xhc3MsCiAgICAgICAgIFVuc2V0Q2xhc3MsCisgICAgICAgIFJldmVydENsYXNz
LAogCiAgICAgICAgIFJlZmxlY3RDbGFzcywKICAgICAgICAgU2hhZG93Q2xhc3MsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkocmV2aXNpb24gMTkxMjQ5KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTQsNiArNCw3IEBACiBpbmhlcml0CiBpbml0aWFsCiB1bnNldAorcmV2ZXJ0CiAKIC8vCiAvLyBD
U1NfUFJPUF9PVVRMSU5FX1NUWUxFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQ
b29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNw
cAkocmV2aXNpb24gMTkxMjQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgQ1NTVmFsdWVQb29sOjpDU1NWYWx1
ZVBvb2woKQogICAgICwgbV9pbXBsaWNpdEluaXRpYWxWYWx1ZShDU1NJbml0aWFsVmFsdWU6OmNy
ZWF0ZUltcGxpY2l0KCkpCiAgICAgLCBtX2V4cGxpY2l0SW5pdGlhbFZhbHVlKENTU0luaXRpYWxW
YWx1ZTo6Y3JlYXRlRXhwbGljaXQoKSkKICAgICAsIG1fdW5zZXRWYWx1ZShDU1NVbnNldFZhbHVl
OjpjcmVhdGUoKSkKKyAgICAsIG1fcmV2ZXJ0VmFsdWUoQ1NTUmV2ZXJ0VmFsdWU6OmNyZWF0ZSgp
KQogICAgICwgbV9jb2xvclRyYW5zcGFyZW50KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnQpKQogICAgICwgbV9jb2xvcldoaXRlKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVDb2xvcihDb2xvcjo6d2hpdGUpKQogICAgICwgbV9jb2xvckJsYWNrKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihDb2xvcjo6YmxhY2spKQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZVBvb2wuaAkocmV2aXNpb24gMTkxMjQ5KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTUmV2ZXJ0VmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NVbnNldFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5o
IgogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBSZWY8
Q1NTSW5pdGlhbFZhbHVlPiBjcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIG1f
aW1wbGljaXRJbml0aWFsVmFsdWUuY29weVJlZigpOyB9CiAgICAgUmVmPENTU0luaXRpYWxWYWx1
ZT4gY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKSB7IHJldHVybiBtX2V4cGxpY2l0SW5pdGlh
bFZhbHVlLmNvcHlSZWYoKTsgfQogICAgIFJlZjxDU1NVbnNldFZhbHVlPiBjcmVhdGVVbnNldFZh
bHVlKCkgeyByZXR1cm4gbV91bnNldFZhbHVlLmNvcHlSZWYoKTsgfQorICAgIFJlZjxDU1NSZXZl
cnRWYWx1ZT4gY3JlYXRlUmV2ZXJ0VmFsdWUoKSB7IHJldHVybiBtX3JldmVydFZhbHVlLmNvcHlS
ZWYoKTsgfQogICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlSUQgaWRlbnRpZmllcik7CiAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTUHJvcGVydHlJRCBpZGVudGlmaWVyKTsKICAgICBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUNvbG9yVmFsdWUodW5zaWduZWQgcmdiVmFsdWUpOwpAQCAt
NzQsNiArNzYsNyBAQCBwcml2YXRlOgogICAgIFJlZjxDU1NJbml0aWFsVmFsdWU+IG1faW1wbGlj
aXRJbml0aWFsVmFsdWU7CiAgICAgUmVmPENTU0luaXRpYWxWYWx1ZT4gbV9leHBsaWNpdEluaXRp
YWxWYWx1ZTsKICAgICBSZWY8Q1NTVW5zZXRWYWx1ZT4gbV91bnNldFZhbHVlOworICAgIFJlZjxD
U1NSZXZlcnRWYWx1ZT4gbV9yZXZlcnRWYWx1ZTsKIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gbV9pZGVudGlmaWVyVmFsdWVDYWNoZVtudW1DU1NWYWx1ZUtleXdvcmRzXTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcAkocmV2aXNpb24gMTkxMjQ5KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNyArMzAw
LDcgQEAgYm9vbCBGb250TG9hZGVyOjpyZXNvbHZlRm9udFN0eWxlKGNvbnN0IAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgU3RyaW5nIGZvbnRWYWx1ZSA9IHBhcnNlZFN0eWxlLT5n
ZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Rm9udCk7Ci0gICAgaWYgKGZvbnRWYWx1ZSA9PSAi
aW5oZXJpdCIgfHwgZm9udFZhbHVlID09ICJpbml0aWFsIikKKyAgICBpZiAoZm9udFZhbHVlID09
ICJpbmhlcml0IiB8fCBmb250VmFsdWUgPT0gImluaXRpYWwiIHx8IGZvbnRWYWx1ZSA9PSAidW5z
ZXQiIHx8IGZvbnRWYWx1ZSA9PSAicmV2ZXJ0IikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgJKHJldmlzaW9uIDE5MTI0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBtYXRjaGVzRm9jdXNQc2V1
ZG9DbGFzcyhjb25zdCBFbGVtZW50Kik7CiAgICAgc3RhdGljIGJvb2wgY2hlY2tFeGFjdEF0dHJp
YnV0ZShjb25zdCBFbGVtZW50KiwgY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBzZWxlY3RvckF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIHZhbHVl
KTsKIAotICAgIGVudW0gTGlua01hdGNoTWFzayB7IE1hdGNoTGluayA9IDEsIE1hdGNoVmlzaXRl
ZCA9IDIsIE1hdGNoQWxsID0gTWF0Y2hMaW5rIHwgTWF0Y2hWaXNpdGVkIH07CisgICAgZW51bSBM
aW5rTWF0Y2hNYXNrIHsgTWF0Y2hEZWZhdWx0ID0gMCwgTWF0Y2hMaW5rID0gMSwgTWF0Y2hWaXNp
dGVkID0gMiwgTWF0Y2hBbGwgPSBNYXRjaExpbmsgfCBNYXRjaFZpc2l0ZWQgfTsKICAgICBzdGF0
aWMgdW5zaWduZWQgZGV0ZXJtaW5lTGlua01hdGNoVHlwZShjb25zdCBDU1NTZWxlY3RvciopOwog
CiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkocmV2aXNp
b24gMTkxMjQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzMsNDIgKzE3Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHkgPSBD
U1NQcm9wZXJ0eUZvbnRTeW50aGVzaXM7CiBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBmaXJz
dExvd1ByaW9yaXR5UHJvcGVydHkgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihsYXN0SGln
aFByaW9yaXR5UHJvcGVydHkgKyAxKTsKIAotY2xhc3MgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQ
cm9wZXJ0aWVzIHsKLXB1YmxpYzoKLSAgICBDYXNjYWRlZFByb3BlcnRpZXMoVGV4dERpcmVjdGlv
biwgV3JpdGluZ01vZGUpOwotCi0gICAgc3RydWN0IFByb3BlcnR5IHsKLSAgICAgICAgdm9pZCBh
cHBseShTdHlsZVJlc29sdmVyJik7Ci0KLSAgICAgICAgQ1NTUHJvcGVydHlJRCBpZDsKLSAgICAg
ICAgQ1NTVmFsdWUqIGNzc1ZhbHVlWzNdOwotICAgIH07Ci0KLSAgICBib29sIGhhc1Byb3BlcnR5
KENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0OwotICAgIFByb3BlcnR5JiBwcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEKTsKLSAgICB2b2lkIGFkZE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBib29sIGlt
cG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5
ID0gZmFsc2UpOwotCi0gICAgdm9pZCBzZXQoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUmLCB1bnNp
Z25lZCBsaW5rTWF0Y2hUeXBlKTsKLSAgICB2b2lkIHNldERlZmVycmVkKENTU1Byb3BlcnR5SUQs
IENTU1ZhbHVlJiwgdW5zaWduZWQgbGlua01hdGNoVHlwZSk7Ci0KLSAgICB2b2lkIGFwcGx5RGVm
ZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImKTsKLQotICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBQcm9wZXJ0eT4mIGN1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBtX2N1c3RvbVByb3Bl
cnRpZXM7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgdm9pZCBhZGRTdHlsZVByb3BlcnRpZXMoY29u
c3QgU3R5bGVQcm9wZXJ0aWVzJiwgU3R5bGVSdWxlJiwgYm9vbCBpc0ltcG9ydGFudCwgYm9vbCBp
bmhlcml0ZWRPbmx5LCBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5
cGUpOwotICAgIHN0YXRpYyB2b2lkIHNldFByb3BlcnR5SW50ZXJuYWwoUHJvcGVydHkmLCBDU1NQ
cm9wZXJ0eUlELCBDU1NWYWx1ZSYsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpOwotCi0gICAgUHJv
cGVydHkgbV9wcm9wZXJ0aWVzW251bUNTU1Byb3BlcnRpZXMgKyAyXTsKLSAgICBzdGQ6OmJpdHNl
dDxudW1DU1NQcm9wZXJ0aWVzICsgMj4gbV9wcm9wZXJ0eUlzUHJlc2VudDsKLQotICAgIFZlY3Rv
cjxQcm9wZXJ0eSwgOD4gbV9kZWZlcnJlZFByb3BlcnRpZXM7Ci0gICAgSGFzaE1hcDxBdG9taWNT
dHJpbmcsIFByb3BlcnR5PiBtX2N1c3RvbVByb3BlcnRpZXM7Ci0KLSAgICBUZXh0RGlyZWN0aW9u
IG1fZGlyZWN0aW9uOwotICAgIFdyaXRpbmdNb2RlIG1fd3JpdGluZ01vZGU7Ci19OwotCiBzdGF0
aWMgdm9pZCBleHRyYWN0RGlyZWN0aW9uQW5kV3JpdGluZ01vZGUoY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBTdHlsZVJlc29sdmVyOjpNYXRjaFJlc3VsdCYsIFRleHREaXJlY3Rpb24mLCBXcml0
aW5nTW9kZSYpOwogCiBSZW5kZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6c19zdHlsZU5vdFlldEF2
YWlsYWJsZTsKQEAgLTQ0MCw2ICs0MDQsOSBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpT
dGF0ZTo6aW5pdEZvCiAgICAgbV9zdHlsZSA9IG51bGxwdHI7CiAgICAgbV9wZW5kaW5nSW1hZ2VQ
cm9wZXJ0aWVzLmNsZWFyKCk7CiAgICAgbV9mb250RGlydHkgPSBmYWxzZTsKKyAgICAKKyAgICBt
X2F1dGhvclJvbGxiYWNrLnJlbGVhc2UoKTsKKyAgICBtX3VzZXJSb2xsYmFjay5yZWxlYXNlKCk7
CiAKICAgICB1cGRhdGVDb252ZXJzaW9uRGF0YSgpOwogfQpAQCAtODU0LDIwICs4MjEsMjAgQEAg
UmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcgogICAgIGNhc2NhZGUuYWRk
TWF0Y2hlcyhyZXN1bHQsIGZhbHNlLCAwLCByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXpl
KCkgLSAxKTsKICAgICAKICAgICAvLyBSZXNvbHZlIGN1c3RvbSBwcm9wZXJ0aWVzIGZpcnN0Lgot
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBD
U1NQcm9wZXJ0eUN1c3RvbSk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwg
Q1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmcmVzdWx0KTsKIAotICAgIGFw
cGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdo
UHJpb3JpdHlQcm9wZXJ0eSk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwg
Zmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCAmcmVzdWx0KTsKIAog
ICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCB1cGRhdGUgaXQgbm93LgogICAgIHVwZGF0
ZUZvbnQoKTsKIAogICAgIC8vIE5vdyBkbyByZXN0IG9mIHRoZSBwcm9wZXJ0aWVzLgotICAgIGFw
cGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwg
bGFzdENTU1Byb3BlcnR5KTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBm
aXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAg
ICAvLyBJZiBvdXIgZm9udCBnb3QgZGlydGllZCBieSBvbmUgb2YgdGhlIG5vbi1lc3NlbnRpYWwg
Zm9udCBwcm9wcywgdXBkYXRlIGl0IGEgc2Vjb25kIHRpbWUuCiAgICAgdXBkYXRlRm9udCgpOwog
Ci0gICAgY2FzY2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcyk7CisgICAgY2FzY2Fk
ZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgJnJlc3VsdCk7CiAKICAgICAvLyBTdGFy
dCBsb2FkaW5nIHJlc291cmNlcyByZWZlcmVuY2VkIGJ5IHRoaXMgc3R5bGUuCiAgICAgbG9hZFBl
bmRpbmdSZXNvdXJjZXMoKTsKQEAgLTEwMjIsMTYgKzk4OSwxNiBAQCBSZWY8UmVuZGVyU3R5bGU+
IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yCiAgICAgY2FzY2FkZS5hZGRNYXRjaGVzKHJlc3VsdCwg
ZmFsc2UsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNpemUoKSAtIDEpOwogCiAgICAg
Ly8gUmVzb2x2ZSBjdXN0b20gcHJvcGVydGllcyBmaXJzdC4KLSAgICBhcHBseUNhc2NhZGVkUHJv
cGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20pOwor
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBD
U1NQcm9wZXJ0eUN1c3RvbSwgJnJlc3VsdCk7CiAKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGll
cyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHkpOwor
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxh
c3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAgICAvLyBJZiBvdXIgZm9udCBn
b3QgZGlydGllZCwgdXBkYXRlIGl0IG5vdy4KICAgICB1cGRhdGVGb250KCk7CiAKLSAgICBhcHBs
eUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxh
c3RDU1NQcm9wZXJ0eSk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmly
c3RMb3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksICZyZXN1bHQpOwogCi0gICAg
Y2FzY2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcyk7CisgICAgY2FzY2FkZS5hcHBs
eURlZmVycmVkUHJvcGVydGllcygqdGhpcywgJnJlc3VsdCk7CiAKICAgICAvLyBTdGFydCBsb2Fk
aW5nIHJlc291cmNlcyByZWZlcmVuY2VkIGJ5IHRoaXMgc3R5bGUuCiAgICAgbG9hZFBlbmRpbmdS
ZXNvdXJjZXMoKTsKQEAgLTE2OTcsMTcgKzE2NjQsMTcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjph
cHBseU1hdGNoZWRQcm9wZXJ0aQogICAgICAgICBjYXNjYWRlLmFkZE1hdGNoZXMobWF0Y2hSZXN1
bHQsIGZhbHNlLCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJh
bmdlcy5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgICAgICBjYXNjYWRlLmFk
ZE1hdGNoZXMobWF0Y2hSZXN1bHQsIHRydWUsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVs
ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAK
LSAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlXZWJr
aXRSdWJ5UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uKTsKKyAgICAgICAg
YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9z
aXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCAmbWF0Y2hSZXN1bHQpOwogICAg
ICAgICBhZGp1c3RTdHlsZUZvckludGVyQ2hhcmFjdGVyUnVieSgpOwogICAgIAogICAgICAgICAv
LyBSZXNvbHZlIGN1c3RvbSB2YXJpYWJsZXMgZmlyc3QuCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRQ
cm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSk7
CisgICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3Vz
dG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSwgJm1hdGNoUmVzdWx0KTsKIAogICAgICAgICAvLyBTdGFy
dCBieSBhcHBseWluZyBwcm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBtYXkgZGVwZW5k
IG9uLgotICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1By
b3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHkpOworICAgICAgICBhcHBseUNhc2NhZGVk
UHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJv
cGVydHksICZtYXRjaFJlc3VsdCk7CiAgICAgCiAgICAgICAgIHVwZGF0ZUZvbnQoKTsKLSAgICAg
ICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3Bl
cnR5LCBsYXN0Q1NTUHJvcGVydHkpOworICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhj
YXNjYWRlLCBmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgJm1hdGNo
UmVzdWx0KTsKIAogICAgICAgICBzdGF0ZS5jYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKICAg
ICB9CkBAIC0xNzE5LDE1ICsxNjg2LDE1IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRj
aGVkUHJvcGVydGkKICAgICBjYXNjYWRlLmFkZE1hdGNoZXMobWF0Y2hSZXN1bHQsIHRydWUsIG1h
dGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1
bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAgICAgCiAgICAgLy8gUmVzb2x2ZSBjdXN0b20gcHJv
cGVydGllcyBmaXJzdC4KLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQ
cm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20pOworICAgIGFwcGx5Q2FzY2FkZWRQcm9w
ZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSwgJm1h
dGNoUmVzdWx0KTsKIAotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1By
b3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbik7
CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlXZWJraXRS
dWJ5UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCAmbWF0Y2hSZXN1bHQp
OwogICAgIAogICAgIC8vIEFkanVzdCB0aGUgZm9udCBzaXplIHRvIGJlIHNtYWxsZXIgaWYgcnVi
eS1wb3NpdGlvbiBpcyBpbnRlci1jaGFyYWN0ZXIuCiAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNo
YXJhY3RlclJ1YnkoKTsKIAogICAgIC8vIFN0YXJ0IGJ5IGFwcGx5aW5nIHByb3BlcnRpZXMgdGhh
dCBvdGhlciBwcm9wZXJ0aWVzIG1heSBkZXBlbmQgb24uCi0gICAgYXBwbHlDYXNjYWRlZFByb3Bl
cnRpZXMoY2FzY2FkZSwgZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5
KTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5
LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CiAKICAgICAvLyBJZiB0
aGUgZWZmZWN0aXZlIHpvb20gdmFsdWUgY2hhbmdlcywgd2UgY2FuJ3QgdXNlIHRoZSBtYXRjaGVk
IHByb3BlcnRpZXMgY2FjaGUuIFN0YXJ0IG92ZXIuCiAgICAgaWYgKGNhY2hlSXRlbSAmJiBjYWNo
ZUl0ZW0tPnJlbmRlclN0eWxlLT5lZmZlY3RpdmVab29tKCkgIT0gc3RhdGUuc3R5bGUoKS0+ZWZm
ZWN0aXZlWm9vbSgpKQpAQCAtMTc0MSwxMiArMTcwOCwxMiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5TWF0Y2hlZFByb3BlcnRpCiAgICAgICAgIHJldHVybiBhcHBseU1hdGNoZWRQcm9wZXJ0
aWVzKG1hdGNoUmVzdWx0LCBlbGVtZW50LCBEb05vdFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUp
OwogCiAgICAgLy8gQXBwbHkgcHJvcGVydGllcyB0aGF0IG5vIG90aGVyIHByb3BlcnRpZXMgZGVw
ZW5kIG9uLgotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93UHJp
b3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5KTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVy
dGllcyhjYXNjYWRlLCBmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwg
Jm1hdGNoUmVzdWx0KTsKIAogICAgIC8vIEZpbmFsbHksIHNvbWUgcHJvcGVydGllcyBtdXN0IGJl
IGFwcGxpZWQgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBwYXJzZWQuCiAgICAgLy8gVGhlcmUgYXJl
IHNvbWUgQ1NTIHByb3BlcnRpZXMgdGhhdCBhZmZlY3QgdGhlIHNhbWUgUmVuZGVyU3R5bGUgdmFs
dWVzLAogICAgIC8vIHNvIHRvIHByZXNlcnZlIGJlaGF2aW9yLCB3ZSBxdWV1ZSB0aGVtIHVwIGR1
cmluZyBjYXNjYWRlIGFuZCBmbHVzaCBoZXJlLgotICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFBy
b3BlcnRpZXMoKnRoaXMpOworICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKnRo
aXMsICZtYXRjaFJlc3VsdCk7CiAKICAgICAvLyBTdGFydCBsb2FkaW5nIHJlc291cmNlcyByZWZl
cmVuY2VkIGJ5IHRoaXMgc3R5bGUuCiAgICAgbG9hZFBlbmRpbmdSZXNvdXJjZXMoKTsKQEAgLTE4
NzYsNyArMTg0Myw0NyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OnVzZVNWR1pvb21SdWxlc0Zvckxl
CiAgICAgcmV0dXJuIGlzPFNWR0VsZW1lbnQ+KG1fc3RhdGUuZWxlbWVudCgpKSAmJiAhKGlzPFNW
R1NWR0VsZW1lbnQ+KCptX3N0YXRlLmVsZW1lbnQoKSkgJiYgbV9zdGF0ZS5lbGVtZW50KCktPnBh
cmVudE5vZGUoKSk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCitTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFBy
b3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKGNv
bnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCkKK3sKKyAgICBBU1NFUlQoY2FzY2FkZUxldmVs
KCkgIT0gVXNlckFnZW50TGV2ZWwpOworICAgIAorICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
OworICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlOworICAgIGV4dHJhY3REaXJlY3Rpb25BbmRX
cml0aW5nTW9kZSgqc3RhdGUoKS5zdHlsZSgpLCBtYXRjaFJlc3VsdCwgZGlyZWN0aW9uLCB3cml0
aW5nTW9kZSk7CisKKyAgICBpZiAoY2FzY2FkZUxldmVsKCkgPT0gQXV0aG9yTGV2ZWwpIHsKKyAg
ICAgICAgQ2FzY2FkZWRQcm9wZXJ0aWVzKiBhdXRob3JSb2xsYmFjayA9IHN0YXRlKCkuYXV0aG9y
Um9sbGJhY2soKTsKKyAgICAgICAgaWYgKGF1dGhvclJvbGxiYWNrKQorICAgICAgICAgICAgcmV0
dXJuIGF1dGhvclJvbGxiYWNrOworICAgICAgICBhdXRob3JSb2xsYmFjayA9IG5ldyBDYXNjYWRl
ZFByb3BlcnRpZXMoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CisgICAgICAgIAorICAgICAgICAv
LyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBVQSBydWxlcyBhbmQgdXNl
ciBydWxlcyBidXQgbm8gYXV0aG9yIHJ1bGVzLgorICAgICAgICBhdXRob3JSb2xsYmFjay0+YWRk
TWF0Y2hlcyhtYXRjaFJlc3VsdCwgZmFsc2UsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVs
ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKKyAgICAgICAgYXV0aG9y
Um9sbGJhY2stPmFkZE1hdGNoZXMobWF0Y2hSZXN1bHQsIGZhbHNlLCBtYXRjaFJlc3VsdC5yYW5n
ZXMuZmlyc3RVc2VyUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVc2VyUnVsZSwgZmFsc2Up
OworICAgICAgICBhdXRob3JSb2xsYmFjay0+YWRkTWF0Y2hlcyhtYXRjaFJlc3VsdCwgdHJ1ZSwg
bWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0
VXNlclJ1bGUsIGZhbHNlKTsKKyAgICAgICAgYXV0aG9yUm9sbGJhY2stPmFkZE1hdGNoZXMobWF0
Y2hSZXN1bHQsIHRydWUsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1
bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKKyAgICAKKyAgICAgICAgc3RhdGUoKS5zZXRB
dXRob3JSb2xsYmFjayhhdXRob3JSb2xsYmFjayk7CisgICAgICAgIHJldHVybiBhdXRob3JSb2xs
YmFjazsKKyAgICB9CisgICAgCisgICAgaWYgKGNhc2NhZGVMZXZlbCgpID09IFVzZXJMZXZlbCkg
eworICAgICAgICBDYXNjYWRlZFByb3BlcnRpZXMqIHVzZXJSb2xsYmFjayA9IHN0YXRlKCkudXNl
clJvbGxiYWNrKCk7CisgICAgICAgIGlmICh1c2VyUm9sbGJhY2spCisgICAgICAgICAgICByZXR1
cm4gdXNlclJvbGxiYWNrOworICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBzcGVjaWFsIHJvbGxi
YWNrIGNhc2NhZGUgY29udGFpbnMgb25seSBVQSBydWxlcy4KKyAgICAgICAgdXNlclJvbGxiYWNr
LT5hZGRNYXRjaGVzKG1hdGNoUmVzdWx0LCBmYWxzZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0
VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOworICAgICAgICB1
c2VyUm9sbGJhY2stPmFkZE1hdGNoZXMobWF0Y2hSZXN1bHQsIHRydWUsIG1hdGNoUmVzdWx0LnJh
bmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsK
KyAgICAKKyAgICAgICAgc3RhdGUoKS5zZXRVc2VyUm9sbGJhY2sodXNlclJvbGxiYWNrKTsKKyAg
ICAgICAgcmV0dXJuIHVzZXJSb2xsYmFjazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
IGlkLCBDU1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayBsaW5r
TWF0Y2hNYXNrLCBjb25zdCBNYXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQpCiB7CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghaXNTaG9ydGhhbmRDU1NQcm9wZXJ0eShpZCksICJTaG9ydGhhbmQgcHJv
cGVydHkgaWQgPSAlZCB3YXNuJ3QgZXhwYW5kZWQgYXQgcGFyc2luZyB0aW1lIiwgaWQpOwogCkBA
IC0xODk2LDI1ICsxOTAzLDU5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShD
U1NQcm8KICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkp
IHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBuZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGly
ZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgc3RhdGUuc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0YXRl
LnN0eWxlKCktPndyaXRpbmdNb2RlKCkpOwogICAgICAgICBBU1NFUlQobmV3SWQgIT0gaWQpOwot
ICAgICAgICByZXR1cm4gYXBwbHlQcm9wZXJ0eShuZXdJZCwgdmFsdWVUb0FwcGx5LmdldCgpKTsK
KyAgICAgICAgcmV0dXJuIGFwcGx5UHJvcGVydHkobmV3SWQsIHZhbHVlVG9BcHBseS5nZXQoKSwg
bGlua01hdGNoTWFzaywgbWF0Y2hSZXN1bHQpOwogICAgIH0KICAgICAKICAgICBDU1NWYWx1ZSog
dmFsdWVUb0NoZWNrRm9ySW5oZXJpdEluaXRpYWwgPSB2YWx1ZVRvQXBwbHkuZ2V0KCk7CisgICAg
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSogY3VzdG9tUHJvcGVydHlWYWx1ZSA9IG51bGxwdHI7Cisg
ICAgCiAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7Ci0gICAgICAgIENTU0N1c3Rv
bVByb3BlcnR5VmFsdWUqIGN1c3RvbVByb3BlcnR5ID0gJmRvd25jYXN0PENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+KCp2YWx1ZVRvQXBwbHkpOwotICAgICAgICB2YWx1ZVRvQ2hlY2tGb3JJbmhlcml0
SW5pdGlhbCA9IGN1c3RvbVByb3BlcnR5LT52YWx1ZSgpLmdldCgpOworICAgICAgICBjdXN0b21Q
cm9wZXJ0eVZhbHVlID0gJmRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCp2YWx1ZVRv
QXBwbHkpOworICAgICAgICB2YWx1ZVRvQ2hlY2tGb3JJbmhlcml0SW5pdGlhbCA9IGN1c3RvbVBy
b3BlcnR5VmFsdWUtPnZhbHVlKCkuZ2V0KCk7CiAgICAgfQogCiAgICAgYm9vbCBpc0luaGVyaXQg
PSBzdGF0ZS5wYXJlbnRTdHlsZSgpICYmIHZhbHVlVG9DaGVja0ZvckluaGVyaXRJbml0aWFsLT5p
c0luaGVyaXRlZFZhbHVlKCk7CiAgICAgYm9vbCBpc0luaXRpYWwgPSB2YWx1ZVRvQ2hlY2tGb3JJ
bmhlcml0SW5pdGlhbC0+aXNJbml0aWFsVmFsdWUoKSB8fCAoIXN0YXRlLnBhcmVudFN0eWxlKCkg
JiYgdmFsdWVUb0NoZWNrRm9ySW5oZXJpdEluaXRpYWwtPmlzSW5oZXJpdGVkVmFsdWUoKSk7CiAg
ICAgCi0gICAgaWYgKHZhbHVlVG9DaGVja0ZvckluaGVyaXRJbml0aWFsLT5pc1Vuc2V0VmFsdWUo
KSkgeworICAgIGJvb2wgaXNVbnNldCA9IHZhbHVlVG9DaGVja0ZvckluaGVyaXRJbml0aWFsLT5p
c1Vuc2V0VmFsdWUoKTsKKyAgICBib29sIGlzUmV2ZXJ0ID0gdmFsdWVUb0NoZWNrRm9ySW5oZXJp
dEluaXRpYWwtPmlzUmV2ZXJ0VmFsdWUoKTsKKworICAgIGlmIChpc1JldmVydCkgeworICAgICAg
ICBpZiAoY2FzY2FkZUxldmVsKCkgPT0gVXNlckFnZW50TGV2ZWwgfHwgIW1hdGNoUmVzdWx0KQor
ICAgICAgICAgICAgaXNVbnNldCA9IHRydWU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
Ly8gRmV0Y2ggdGhlIGNvcnJlY3Qgcm9sbGJhY2sgb2JqZWN0IGZyb20gdGhlIHN0YXRlLCBidWls
ZGluZyBpdCBpZiBuZWNlc3NhcnkuCisgICAgICAgICAgICAvLyBUaGlzIHJlcXVpcmVzIGhhdmlu
ZyB0aGUgb3JpZ2luYWwgTWF0Y2hSZXN1bHQgYXZhaWxhYmxlLgorICAgICAgICAgICAgYXV0byog
cm9sbGJhY2sgPSBjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygqbWF0Y2hSZXN1bHQpOwor
CisgICAgICAgICAgICAvLyBXaXRoIHRoZSBjYXNjYWRlIGJ1aWx0LCB3ZSBuZWVkIHRvIG9idGFp
biB0aGUgcHJvcGVydHkgYW5kIGFwcGx5IGl0LiBJZiB0aGUgcHJvcGVydHkgaXMKKyAgICAgICAg
ICAgIC8vIG5vdCBwcmVzZW50LCB0aGVuIHdlIGJlaGF2ZSBsaWtlICJ1bnNldC4iIE90aGVyd2lz
ZSB3ZSBhcHBseSB0aGUgcHJvcGVydHkgaW5zdGVhZCBvZgorICAgICAgICAgICAgLy8gb3VyIG93
bi4KKyAgICAgICAgICAgIGlmIChjdXN0b21Qcm9wZXJ0eVZhbHVlKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHJvbGxiYWNrLT5oYXNDdXN0b21Qcm9wZXJ0eShjdXN0b21Qcm9wZXJ0eVZhbHVlLT5u
YW1lKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcHJvcGVydHkgPSByb2xsYmFjay0+
Y3VzdG9tUHJvcGVydHkoY3VzdG9tUHJvcGVydHlWYWx1ZS0+bmFtZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdKQorICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShwcm9wZXJ0eS5pZCwgcHJvcGVydHkuY3NzVmFs
dWVbbGlua01hdGNoTWFza10sIGxpbmtNYXRjaE1hc2ssIG1hdGNoUmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAocm9sbGJhY2stPmhhc1Byb3BlcnR5KGlkKSkgeworICAgICAgICAgICAgICAgIGF1dG8m
IHByb3BlcnR5ID0gcm9sbGJhY2stPnByb3BlcnR5KGlkKTsKKyAgICAgICAgICAgICAgICBpZiAo
cHJvcGVydHkuY3NzVmFsdWVbbGlua01hdGNoTWFza10pCisgICAgICAgICAgICAgICAgICAgIGFw
cGx5UHJvcGVydHkocHJvcGVydHkuaWQsIHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2td
LCBsaW5rTWF0Y2hNYXNrLCBtYXRjaFJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGlzVW5zZXQgPSB0cnVlOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChpc1Vuc2V0KSB7CiAgICAgICAgIGlmIChDU1NQ
cm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkpCiAgICAgICAgICAgICBpc0luaGVyaXQg
PSB0cnVlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc0luaXRpYWwgPSB0cnVlOwogICAg
IH0KLSAgICAKKwogICAgIEFTU0VSVCghaXNJbmhlcml0IHx8ICFpc0luaXRpYWwpOyAvLyBpc0lu
aGVyaXQgLT4gIWlzSW5pdGlhbCAmJiBpc0luaXRpYWwgLT4gIWlzSW5oZXJpdAogCiAgICAgaWYg
KCFzdGF0ZS5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSAmJiAoIXN0YXRlLmFwcGx5UHJv
cGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSB8fCAhaXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHko
aWQpKSkgewpAQCAtMjU2OCwxMCArMjYwOSwyMSBAQCBpbmxpbmUgU3R5bGVSZXNvbHZlcjo6Q2Fz
Y2FkZWRQcm9wZXJ0aWVzCiAgICAgcmV0dXJuIG1fcHJvcGVydGllc1tpZF07CiB9CiAKLXZvaWQg
U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eUludGVybmFsKFBy
b3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVlLCB1
bnNpZ25lZCBsaW5rTWF0Y2hUeXBlKQoraW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Q2FzY2Fk
ZWRQcm9wZXJ0aWVzOjpoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY3VzdG9tUHJvcGVydGllcy5jb250YWlucyhuYW1lKTsKK30KKwor
aW5saW5lIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHkgU3R5bGVS
ZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpjdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcm
IG5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3VzdG9tUHJvcGVydGllcy5nZXQobmFtZSk7
Cit9CisKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0
eUludGVybmFsKFByb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUm
IGNzc1ZhbHVlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxl
dmVsKQogewogICAgIEFTU0VSVChsaW5rTWF0Y2hUeXBlIDw9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0
Y2hBbGwpOwogICAgIHByb3BlcnR5LmlkID0gaWQ7CisgICAgcHJvcGVydHkubGV2ZWwgPSBjYXNj
YWRlTGV2ZWw7CiAgICAgaWYgKGxpbmtNYXRjaFR5cGUgPT0gU2VsZWN0b3JDaGVja2VyOjpNYXRj
aEFsbCkgewogICAgICAgICBwcm9wZXJ0eS5jc3NWYWx1ZVswXSA9ICZjc3NWYWx1ZTsKICAgICAg
ICAgcHJvcGVydHkuY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmtdID0gJmNzc1Zh
bHVlOwpAQCAtMjU4MCw3ICsyNjMyLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFBy
b3BlcnRpZXM6OgogICAgICAgICBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hUeXBlXSA9ICZj
c3NWYWx1ZTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OnNl
dChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUsIHVuc2lnbmVkIGxpbmtNYXRj
aFR5cGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6c2V0KENTU1By
b3BlcnR5SUQgaWQsIENTU1ZhbHVlJiBjc3NWYWx1ZSwgdW5zaWduZWQgbGlua01hdGNoVHlwZSwg
Q2FzY2FkZUxldmVsIGNhc2NhZGVMZXZlbCkKIHsKICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGly
ZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkpCiAgICAgICAgIGlkID0gQ1NTUHJvcGVydHk6OnJlc29s
dmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGlkLCBtX2RpcmVjdGlvbiwgbV93cml0aW5nTW9kZSk7
CkBAIC0yNTk3LDExICsyNjQ5LDExIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9w
ZXJ0aWVzOjoKICAgICAgICAgICAgIFByb3BlcnR5IHByb3BlcnR5OwogICAgICAgICAgICAgcHJv
cGVydHkuaWQgPSBpZDsKICAgICAgICAgICAgIG1lbXNldChwcm9wZXJ0eS5jc3NWYWx1ZSwgMCwg
c2l6ZW9mKHByb3BlcnR5LmNzc1ZhbHVlKSk7Ci0gICAgICAgICAgICBzZXRQcm9wZXJ0eUludGVy
bmFsKHByb3BlcnR5LCBpZCwgY3NzVmFsdWUsIGxpbmtNYXRjaFR5cGUpOworICAgICAgICAgICAg
c2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBsaW5rTWF0Y2hUeXBl
LCBjYXNjYWRlTGV2ZWwpOwogICAgICAgICAgICAgY3VzdG9tUHJvcGVydGllcygpLnNldChjdXN0
b21WYWx1ZS5uYW1lKCksIHByb3BlcnR5KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IFByb3BlcnR5IHByb3BlcnR5ID0gY3VzdG9tUHJvcGVydGllcygpLmdldChjdXN0b21WYWx1ZS5u
YW1lKCkpOwotICAgICAgICAgICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNz
c1ZhbHVlLCBsaW5rTWF0Y2hUeXBlKTsKKyAgICAgICAgICAgIHNldFByb3BlcnR5SW50ZXJuYWwo
cHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbGlua01hdGNoVHlwZSwgY2FzY2FkZUxldmVsKTsKICAg
ICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMoKS5zZXQoY3VzdG9tVmFsdWUubmFtZSgpLCBwcm9w
ZXJ0eSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMjYxMCwyMSArMjY2MiwyMSBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6CiAgICAgaWYgKCFtX3By
b3BlcnR5SXNQcmVzZW50W2lkXSkKICAgICAgICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAw
LCBzaXplb2YocHJvcGVydHkuY3NzVmFsdWUpKTsKICAgICBtX3Byb3BlcnR5SXNQcmVzZW50LnNl
dChpZCk7Ci0gICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBs
aW5rTWF0Y2hUeXBlKTsKKyAgICBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBpZCwgY3Nz
VmFsdWUsIGxpbmtNYXRjaFR5cGUsIGNhc2NhZGVMZXZlbCk7CiB9CiAKLXZvaWQgU3R5bGVSZXNv
bHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpzZXREZWZlcnJlZChDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSYgY3NzVmFsdWUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpCit2b2lkIFN0eWxlUmVz
b2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6c2V0RGVmZXJyZWQoQ1NTUHJvcGVydHlJRCBpZCwg
Q1NTVmFsdWUmIGNzc1ZhbHVlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlLCBDYXNjYWRlTGV2ZWwg
Y2FzY2FkZUxldmVsKQogewogICAgIEFTU0VSVCghQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdh
cmVQcm9wZXJ0eShpZCkpOwogICAgIEFTU0VSVChzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9y
ZGVyKGlkKSk7CiAKICAgICBQcm9wZXJ0eSBwcm9wZXJ0eTsKICAgICBtZW1zZXQocHJvcGVydHku
Y3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOwotICAgIHNldFByb3BlcnR5
SW50ZXJuYWwocHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbGlua01hdGNoVHlwZSk7CisgICAgc2V0
UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBsaW5rTWF0Y2hUeXBlLCBj
YXNjYWRlTGV2ZWwpOwogICAgIG1fZGVmZXJyZWRQcm9wZXJ0aWVzLmFwcGVuZChwcm9wZXJ0eSk7
CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphZGRTdHlsZVBy
b3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUmLCBi
b29sIGlzSW1wb3J0YW50LCBib29sIGluaGVyaXRlZE9ubHksIFByb3BlcnR5V2hpdGVsaXN0VHlw
ZSBwcm9wZXJ0eVdoaXRlbGlzdFR5cGUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpCit2b2lkIFN0
eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YWRkU3R5bGVQcm9wZXJ0aWVzKGNvbnN0
IFN0eWxlUHJvcGVydGllcyYgcHJvcGVydGllcywgU3R5bGVSdWxlJiwgYm9vbCBpc0ltcG9ydGFu
dCwgYm9vbCBpbmhlcml0ZWRPbmx5LCBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgcHJvcGVydHlXaGl0
ZWxpc3RUeXBlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxl
dmVsKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gcHJvcGVydGllcy5wcm9w
ZXJ0eUNvdW50KCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGF1dG8gY3VycmVudCA9IHBy
b3BlcnRpZXMucHJvcGVydHlBdChpKTsKQEAgLTI2NDYsMTIgKzI2OTgsMjEgQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OgogI2VuZGlmCiAKICAgICAgICAgaWYgKHNo
b3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpCi0gICAgICAgICAgICBz
ZXREZWZlcnJlZChwcm9wZXJ0eUlELCAqY3VycmVudC52YWx1ZSgpLCBsaW5rTWF0Y2hUeXBlKTsK
KyAgICAgICAgICAgIHNldERlZmVycmVkKHByb3BlcnR5SUQsICpjdXJyZW50LnZhbHVlKCksIGxp
bmtNYXRjaFR5cGUsIGNhc2NhZGVMZXZlbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNl
dChwcm9wZXJ0eUlELCAqY3VycmVudC52YWx1ZSgpLCBsaW5rTWF0Y2hUeXBlKTsKKyAgICAgICAg
ICAgIHNldChwcm9wZXJ0eUlELCAqY3VycmVudC52YWx1ZSgpLCBsaW5rTWF0Y2hUeXBlLCBjYXNj
YWRlTGV2ZWwpOwogICAgIH0KIH0KIAorc3RhdGljIENhc2NhZGVMZXZlbCBjYXNjYWRlTGV2ZWxG
b3JJbmRleChjb25zdCBTdHlsZVJlc29sdmVyOjpNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGlu
dCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPj0gbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFS
dWxlICYmIGluZGV4IDw9IG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlKQorICAgICAgICBy
ZXR1cm4gVXNlckFnZW50TGV2ZWw7CisgICAgaWYgKGluZGV4ID49IG1hdGNoUmVzdWx0LnJhbmdl
cy5maXJzdFVzZXJSdWxlICYmIGluZGV4IDw9IG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1
bGUpCisgICAgICAgIHJldHVybiBVc2VyTGV2ZWw7CisgICAgcmV0dXJuIEF1dGhvckxldmVsOwor
fQorCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YWRkTWF0Y2hlcyhj
b25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGJvb2wgaW1wb3J0YW50LCBpbnQgc3RhcnRJ
bmRleCwgaW50IGVuZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkpCiB7CiAgICAgaWYgKHN0YXJ0
SW5kZXggPT0gLTEpCkBAIC0yNjU5LDI0ICsyNzIwLDI2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
Q2FzY2FkZWRQcm9wZXJ0aWVzOjoKIAogICAgIGZvciAoaW50IGkgPSBzdGFydEluZGV4OyBpIDw9
IGVuZEluZGV4OyArK2kpIHsKICAgICAgICAgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIG1hdGNo
ZWRQcm9wZXJ0aWVzID0gbWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKVtpXTsKLSAgICAg
ICAgYWRkU3R5bGVQcm9wZXJ0aWVzKCptYXRjaGVkUHJvcGVydGllcy5wcm9wZXJ0aWVzLCAqbWF0
Y2hSZXN1bHQubWF0Y2hlZFJ1bGVzW2ldLCBpbXBvcnRhbnQsIGluaGVyaXRlZE9ubHksIHN0YXRp
Y19jYXN0PFByb3BlcnR5V2hpdGVsaXN0VHlwZT4obWF0Y2hlZFByb3BlcnRpZXMud2hpdGVsaXN0
VHlwZSksIG1hdGNoZWRQcm9wZXJ0aWVzLmxpbmtNYXRjaFR5cGUpOworICAgICAgICBhZGRTdHls
ZVByb3BlcnRpZXMoKm1hdGNoZWRQcm9wZXJ0aWVzLnByb3BlcnRpZXMsICptYXRjaFJlc3VsdC5t
YXRjaGVkUnVsZXNbaV0sIGltcG9ydGFudCwgaW5oZXJpdGVkT25seSwgc3RhdGljX2Nhc3Q8UHJv
cGVydHlXaGl0ZWxpc3RUeXBlPihtYXRjaGVkUHJvcGVydGllcy53aGl0ZWxpc3RUeXBlKSwgbWF0
Y2hlZFByb3BlcnRpZXMubGlua01hdGNoVHlwZSwKKyAgICAgICAgICAgIGNhc2NhZGVMZXZlbEZv
ckluZGV4KG1hdGNoUmVzdWx0LCBpKSk7CiAgICAgfQogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6
OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoU3R5bGVSZXNvbHZl
ciYgcmVzb2x2ZXIpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBw
bHlEZWZlcnJlZFByb3BlcnRpZXMoU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIsIGNvbnN0IE1hdGNo
UmVzdWx0KiBtYXRjaFJlc3VsdCkKIHsKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogbV9kZWZl
cnJlZFByb3BlcnRpZXMpCi0gICAgICAgIHByb3BlcnR5LmFwcGx5KHJlc29sdmVyKTsKKyAgICAg
ICAgcHJvcGVydHkuYXBwbHkocmVzb2x2ZXIsIG1hdGNoUmVzdWx0KTsKIH0KIAotdm9pZCBTdHls
ZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29s
dmVyJiByZXNvbHZlcikKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQ
cm9wZXJ0eTo6YXBwbHkoU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIsIGNvbnN0IE1hdGNoUmVzdWx0
KiBtYXRjaFJlc3VsdCkKIHsKICAgICBTdGF0ZSYgc3RhdGUgPSByZXNvbHZlci5zdGF0ZSgpOwor
ICAgIHN0YXRlLnNldENhc2NhZGVMZXZlbChsZXZlbCk7CiAKLSAgICBpZiAoY3NzVmFsdWVbMF0p
IHsKKyAgICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRdKSB7CiAg
ICAgICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKICAgICAg
ICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSk7Ci0gICAg
ICAgIHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlWzBdKTsKKyAgICAgICAgcmVz
b2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERl
ZmF1bHRdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCwgbWF0Y2hSZXN1bHQpOwogICAg
IH0KIAogICAgIGlmIChzdGF0ZS5zdHlsZSgpLT5pbnNpZGVMaW5rKCkgPT0gTm90SW5zaWRlTGlu
aykKQEAgLTI2ODUsMjAgKzI3NDgsMjAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFBy
b3BlcnRpZXM6OgogICAgIGlmIChjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlua10p
IHsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOwog
ICAgICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsK
LSAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVj
a2VyOjpNYXRjaExpbmtdKTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3Nz
VmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmtdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNo
TGluaywgbWF0Y2hSZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChjc3NWYWx1ZVtTZWxlY3RvckNo
ZWNrZXI6Ok1hdGNoVmlzaXRlZF0pIHsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRv
UmVndWxhclN0eWxlKGZhbHNlKTsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlz
aXRlZExpbmtTdHlsZSh0cnVlKTsKLSAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwg
Y3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRdKTsKKyAgICAgICAgcmVzb2x2
ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0
ZWRdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCwgbWF0Y2hSZXN1bHQpOwogICAgIH0K
IAogICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKICAgICBz
dGF0ZS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKIH0KIAotdm9p
ZCBTdHlsZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRp
ZXMmIGNhc2NhZGUsIGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5KQordm9pZCBT
dHlsZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMm
IGNhc2NhZGUsIGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LCBjb25zdCBNYXRj
aFJlc3VsdCogbWF0Y2hSZXN1bHQpCiB7CiAgICAgZm9yIChpbnQgaWQgPSBmaXJzdFByb3BlcnR5
OyBpZCA8PSBsYXN0UHJvcGVydHk7ICsraWQpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwpAQCAtMjcwNywxMiArMjc3
MCwxMiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0CiAgICAgICAg
IGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7CiAgICAgICAgICAgICBIYXNo
TWFwPEF0b21pY1N0cmluZywgQ2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eT46Oml0ZXJhdG9y
IGVuZCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgpOwogICAgICAgICAgICAgZm9y
IChIYXNoTWFwPEF0b21pY1N0cmluZywgQ2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eT46Oml0
ZXJhdG9yIGl0ID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQotICAgICAgICAgICAgICAgIGl0LT52YWx1ZS5hcHBseSgqdGhpcyk7CisgICAgICAg
ICAgICAgICAgaXQtPnZhbHVlLmFwcGx5KCp0aGlzLCBtYXRjaFJlc3VsdCk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBhdXRvJiBwcm9wZXJ0eSA9IGNhc2NhZGUu
cHJvcGVydHkocHJvcGVydHlJRCk7CiAgICAgICAgIEFTU0VSVCghc2hvdWxkQXBwbHlQcm9wZXJ0
eUluUGFyc2VPcmRlcihwcm9wZXJ0eUlEKSk7Ci0gICAgICAgIHByb3BlcnR5LmFwcGx5KCp0aGlz
KTsKKyAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIG1hdGNoUmVzdWx0KTsKICAgICB9CiAg
ICAgCiAgICAgaWYgKGZpcnN0UHJvcGVydHkgPT0gQ1NTUHJvcGVydHlDdXN0b20pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDE5MTI0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVk
RGF0YS5oIgogI2luY2x1ZGUgIlZpZXdwb3J0U3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgPGJp
dHNldD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTIwLDYgKzEyMSwxMiBAQCBlbnVtIFJ1bGVNYXRjaGlu
Z0JlaGF2aW9yIHsKICAgICBNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcywKIH07CiAKK2VudW0gQ2Fz
Y2FkZUxldmVsIHsKKyAgICBVc2VyQWdlbnRMZXZlbCwKKyAgICBBdXRob3JMZXZlbCwKKyAgICBV
c2VyTGV2ZWwKK307CisKIGNsYXNzIFBzZXVkb1N0eWxlUmVxdWVzdCB7CiBwdWJsaWM6CiAgICAg
UHNldWRvU3R5bGVSZXF1ZXN0KFBzZXVkb0lkIHBzZXVkb0lkLCBSZW5kZXJTY3JvbGxiYXIqIHNj
cm9sbGJhciA9IG51bGxwdHIsIFNjcm9sbGJhclBhcnQgc2Nyb2xsYmFyUGFydCA9IE5vUGFydCkK
QEAgLTE5NCw2ICsyMDEsOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+
PiBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgUHNldWRvSWQsIHVuc2lnbmVk
IHJ1bGVzVG9JbmNsdWRlID0gQWxsQnV0RW1wdHlDU1NSdWxlcyk7CiAKIHB1YmxpYzoKKyAgICBz
dHJ1Y3QgTWF0Y2hSZXN1bHQ7CisKICAgICB2b2lkIGFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1By
b3BlcnR5SUQsIENTU1ZhbHVlKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZvaWQgYXBwbHlQcm9w
ZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7CkBAIC0yODQsNiAr
MjkzLDQ1IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBWZWN0b3I8TWF0Y2hlZFBy
b3BlcnRpZXMsIDY0PiBtX21hdGNoZWRQcm9wZXJ0aWVzOwogICAgIH07CisgICAgCisgICAgY2xh
c3MgQ2FzY2FkZWRQcm9wZXJ0aWVzIHsKKyAgICBwdWJsaWM6CisgICAgICAgIENhc2NhZGVkUHJv
cGVydGllcyhUZXh0RGlyZWN0aW9uLCBXcml0aW5nTW9kZSk7CisKKyAgICAgICAgc3RydWN0IFBy
b3BlcnR5IHsKKyAgICAgICAgICAgIHZvaWQgYXBwbHkoU3R5bGVSZXNvbHZlciYsIGNvbnN0IE1h
dGNoUmVzdWx0Kik7CisKKyAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgaWQ7CisgICAgICAgICAg
ICBDYXNjYWRlTGV2ZWwgbGV2ZWw7CisgICAgICAgICAgICBDU1NWYWx1ZSogY3NzVmFsdWVbM107
CisgICAgICAgIH07CisKKyAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBj
b25zdDsKKyAgICAgICAgUHJvcGVydHkmIHByb3BlcnR5KENTU1Byb3BlcnR5SUQpOworICAgICAg
ICB2b2lkIGFkZE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBib29sIGltcG9ydGFudCwgaW50
IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5ID0gZmFsc2UpOwor
CisgICAgICAgIHZvaWQgc2V0KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlJiwgdW5zaWduZWQgbGlu
a01hdGNoVHlwZSwgQ2FzY2FkZUxldmVsKTsKKyAgICAgICAgdm9pZCBzZXREZWZlcnJlZChDU1NQ
cm9wZXJ0eUlELCBDU1NWYWx1ZSYsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUsIENhc2NhZGVMZXZl
bCk7CisKKyAgICAgICAgdm9pZCBhcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVy
JiwgY29uc3QgTWF0Y2hSZXN1bHQqKTsKKworICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywg
UHJvcGVydHk+JiBjdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9jdXN0b21Qcm9wZXJ0aWVz
OyB9CisgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJikgY29uc3Q7
CisgICAgICAgIFByb3BlcnR5IGN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0Owor
ICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIGFkZFN0eWxlUHJvcGVydGllcyhj
b25zdCBTdHlsZVByb3BlcnRpZXMmLCBTdHlsZVJ1bGUmLCBib29sIGlzSW1wb3J0YW50LCBib29s
IGluaGVyaXRlZE9ubHksIFByb3BlcnR5V2hpdGVsaXN0VHlwZSwgdW5zaWduZWQgbGlua01hdGNo
VHlwZSwgQ2FzY2FkZUxldmVsKTsKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0UHJvcGVydHlJbnRl
cm5hbChQcm9wZXJ0eSYsIENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlJiwgdW5zaWduZWQgbGlua01h
dGNoVHlwZSwgQ2FzY2FkZUxldmVsKTsKKworICAgICAgICBQcm9wZXJ0eSBtX3Byb3BlcnRpZXNb
bnVtQ1NTUHJvcGVydGllcyArIDJdOworICAgICAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0
aWVzICsgMj4gbV9wcm9wZXJ0eUlzUHJlc2VudDsKKworICAgICAgICBWZWN0b3I8UHJvcGVydHks
IDg+IG1fZGVmZXJyZWRQcm9wZXJ0aWVzOworICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywg
UHJvcGVydHk+IG1fY3VzdG9tUHJvcGVydGllczsKKworICAgICAgICBUZXh0RGlyZWN0aW9uIG1f
ZGlyZWN0aW9uOworICAgICAgICBXcml0aW5nTW9kZSBtX3dyaXRpbmdNb2RlOworICAgIH07CiAK
IHByaXZhdGU6CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBmaXhlcyB1cCB0aGUgZGVmYXVsdCBmb250
IHNpemUgaWYgaXQgZGV0ZWN0cyB0aGF0IHRoZSBjdXJyZW50IGdlbmVyaWMgZm9udCBmYW1pbHkg
aGFzIGNoYW5nZWQuIC1kd2gKQEAgLTMwNSw5ICszNTMsNyBAQCBwcml2YXRlOgogICAgIGVudW0g
U2hvdWxkVXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSB7IERvTm90VXNlTWF0Y2hlZFByb3BlcnRp
ZXNDYWNoZSA9IDAsIFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgfTsKICAgICB2b2lkIGFwcGx5
TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50KiwgU2hv
dWxkVXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSA9IFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUp
OwogCi0gICAgY2xhc3MgQ2FzY2FkZWRQcm9wZXJ0aWVzOwotCi0gICAgdm9pZCBhcHBseUNhc2Nh
ZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmLCBpbnQgZmlyc3RQcm9wZXJ0eSwgaW50
IGxhc3RQcm9wZXJ0eSk7CisgICAgdm9pZCBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRl
ZFByb3BlcnRpZXMmLCBpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgY29uc3Qg
TWF0Y2hSZXN1bHQqKTsKICAgICB2b2lkIGNhc2NhZGVNYXRjaGVzKENhc2NhZGVkUHJvcGVydGll
cyYsIGNvbnN0IE1hdGNoUmVzdWx0JiwgYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBp
bnQgZW5kSW5kZXgsIGJvb2wgaW5oZXJpdGVkT25seSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc1Zh
bGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKQEAgLTM3Niw3ICs0MjIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGJvb2wgYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGU7IH0KICAgICAgICAgYm9v
bCBhcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBs
eVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlOyB9CiAgICAgICAgIFBlbmRpbmdJbWFnZVByb3Bl
cnR5TWFwJiBwZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9wZW5kaW5nSW1hZ2VQ
cm9wZXJ0aWVzOyB9Ci0KKyAgICAgICAgCiAgICAgICAgIFZlY3RvcjxSZWZQdHI8UmVmZXJlbmNl
RmlsdGVyT3BlcmF0aW9uPj4mIGZpbHRlcnNXaXRoUGVuZGluZ1NWR0RvY3VtZW50cygpIHsgcmV0
dXJuIG1fZmlsdGVyc1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRzOyB9CiAKICAgICAgICAgdm9pZCBz
ZXRGb250RGlydHkoYm9vbCBpc0RpcnR5KSB7IG1fZm9udERpcnR5ID0gaXNEaXJ0eTsgfQpAQCAt
NDAyLDYgKzQ0OCwxNSBAQCBwdWJsaWM6CiAKICAgICAgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSBjc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jc3NUb0xl
bmd0aENvbnZlcnNpb25EYXRhOyB9CiAKKyAgICAgICAgQ2FzY2FkZUxldmVsIGNhc2NhZGVMZXZl
bCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FzY2FkZUxldmVsOyB9CisgICAgICAgIHZvaWQgc2V0Q2Fz
Y2FkZUxldmVsKENhc2NhZGVMZXZlbCBsZXZlbCkgeyBtX2Nhc2NhZGVMZXZlbCA9IGxldmVsOyB9
CisgICAgICAgIAorICAgICAgICBDYXNjYWRlZFByb3BlcnRpZXMqIGF1dGhvclJvbGxiYWNrKCkg
Y29uc3QgeyByZXR1cm4gbV9hdXRob3JSb2xsYmFjay5nZXQoKTsgfQorICAgICAgICBDYXNjYWRl
ZFByb3BlcnRpZXMqIHVzZXJSb2xsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclJvbGxiYWNr
LmdldCgpOyB9CisgICAgICAgIAorICAgICAgICB2b2lkIHNldEF1dGhvclJvbGxiYWNrKENhc2Nh
ZGVkUHJvcGVydGllcyogcm9sbGJhY2spIHsgbV9hdXRob3JSb2xsYmFjay5yZXNldChyb2xsYmFj
ayk7IH0KKyAgICAgICAgdm9pZCBzZXRVc2VyUm9sbGJhY2soQ2FzY2FkZWRQcm9wZXJ0aWVzKiBy
b2xsYmFjaykgeyBtX3VzZXJSb2xsYmFjay5yZXNldChyb2xsYmFjayk7IH0KKyAgICAgICAgCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCB1cGRhdGVDb252ZXJzaW9uRGF0YSgpOwogCkBAIC00
MzQsNiArNDg5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7
CiAKICAgICAgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBtX2Nzc1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGE7CisgICAgICAgIAorICAgICAgICBDYXNjYWRlTGV2ZWwgbV9jYXNjYWRlTGV2ZWwg
eyBVc2VyQWdlbnRMZXZlbCB9OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FzY2FkZWRQcm9w
ZXJ0aWVzPiBtX2F1dGhvclJvbGxiYWNrOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FzY2Fk
ZWRQcm9wZXJ0aWVzPiBtX3VzZXJSb2xsYmFjazsKICAgICB9OwogCiAgICAgU3RhdGUmIHN0YXRl
KCkgeyByZXR1cm4gbV9zdGF0ZTsgfQpAQCAtNDUxLDYgKzUxMCwxMSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpOyB9CiAgICAgYm9vbCBhcHBseVByb3BlcnR5
VG9WaXNpdGVkTGlua1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5hcHBseVByb3BlcnR5
VG9WaXNpdGVkTGlua1N0eWxlKCk7IH0KIAorICAgIENhc2NhZGVMZXZlbCBjYXNjYWRlTGV2ZWwo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmNhc2NhZGVMZXZlbCgpOyB9CisgICAgdm9pZCBzZXRD
YXNjYWRlTGV2ZWwoQ2FzY2FkZUxldmVsIGxldmVsKSB7IG1fc3RhdGUuc2V0Q2FzY2FkZUxldmVs
KGxldmVsKTsgfQorICAgIAorICAgIENhc2NhZGVkUHJvcGVydGllcyogY2FzY2FkZWRQcm9wZXJ0
aWVzRm9yUm9sbGJhY2soY29uc3QgTWF0Y2hSZXN1bHQmKTsKKwogICAgIENTU1RvU3R5bGVNYXAq
IHN0eWxlTWFwKCkgeyByZXR1cm4gJm1fc3R5bGVNYXA7IH0KICAgICBJbnNwZWN0b3JDU1NPTVdy
YXBwZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkgeyByZXR1cm4gbV9pbnNwZWN0b3JDU1NP
TVdyYXBwZXJzOyB9CiAgICAgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2Ny
aXB0aW9uKCkgeyByZXR1cm4gbV9zdGF0ZS5mb250RGVzY3JpcHRpb24oKTsgfQpAQCAtNDY4LDcg
KzUzMiw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNhblNoYXJlU3R5bGVXaXRoQ29udHJvbChT
dHlsZWRFbGVtZW50KikgY29uc3Q7CiAKLSAgICB2b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwg
Q1NTVmFsdWUqLCBTZWxlY3RvckNoZWNrZXI6OkxpbmtNYXRjaE1hc2sgPSBTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoRGVmYXVsdCwgY29uc3QgTWF0Y2hSZXN1bHQqID0gbnVsbHB0cik7CiAgICAgUmVm
UHRyPENTU1ZhbHVlPiByZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJvcGVydHlJRCwgY29uc3Qg
Q1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1ZSYpOwogCiAgICAgdm9pZCBhcHBseVNWR1Byb3BlcnR5
KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTEyNDkpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAor
MjAxNS0xMC0xNyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IHRoZSBDU1M0ICdyZXZlcnQnIGtleXdvcmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk3MDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL2FsbC1rZXl3b3JkLXJldmVydC1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9hbGwta2V5d29yZC1yZXZl
cnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvcmV2ZXJ0LWNvbG9yLWV4cGVjdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3JldmVydC1jb2xvci5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9yZXZlcnQtbWFyZ2lucy1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9yZXZlcnQtbWFyZ2lucy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy92YXJpYWJsZXMvYWxsLWtleXdvcmQtcmV2ZXJ0LWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy9hbGwta2V5d29yZC1yZXZlcnQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1pbmhlcml0
YW5jZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy92YXJpYWJsZXMv
cmV2ZXJ0LWluaGVyaXRhbmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3Zhcmlh
Ymxlcy9yZXZlcnQtbm8taW5oZXJpdGFuY2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1uby1pbmhlcml0YW5jZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LXZhcmlhYmxlLXJlZmVyZW5jZS1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0
LXZhcmlhYmxlLXJlZmVyZW5jZS5odG1sOiBBZGRlZC4KKwogMjAxNS0xMC0xNyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHRkIGFuZCB0aCBzaG91bGQgdXNlIEhU
TUxUYWJsZURhdGFDZWxsRWxlbWVudCBhbmQgSFRNTFRhYmxlSGVhZGVyQ2VsbEVsZW1lbnQgaW50
ZXJmYWNlcwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvYWxsLWtleXdvcmQtcmV2ZXJ0LWV4
cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvYWxsLWtleXdv
cmQtcmV2ZXJ0LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9hbGwta2V5d29yZC1yZXZlcnQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDExIEBACis8aGVhZD4KKzxzdHlsZT4KK2h0bWwgeworICBmb250LXNpemU6IHNtYWxs
OworICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOworICBjb2xvcjogYmx1ZTsKK30KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxibG9ja3F1b3RlIGlkPSJxdW90ZSI+TG9yZW0gaXBzdW0g
ZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC48L2Jsb2NrcXVvdGU+
IFBoYXNlbGx1cyBlZ2V0IHZlbGl0IHNhZ2l0dGlzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2FsbC1rZXl3b3JkLXJldmVydC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2FsbC1rZXl3b3JkLXJldmVydC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvYWxsLWtleXdvcmQtcmV2ZXJ0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorPGhlYWQ+Cis8c3R5bGU+Cito
dG1sIHsKKyAgZm9udC1zaXplOiBzbWFsbDsKKyAgYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMDsK
KyAgY29sb3I6IGJsdWU7Cit9CisKK2Jsb2NrcXVvdGUgeworICBkaXNwbGF5OmlubGluZTsKKyAg
YmFja2dyb3VuZC1jb2xvcjogc2t5Ymx1ZTsKKyAgY29sb3I6IHJlZDsKKyAgYWxsOiByZXZlcnQ7
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8YmxvY2txdW90ZSBpZD0icXVvdGUiPkxv
cmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuPC9i
bG9ja3F1b3RlPiBQaGFzZWxsdXMgZWdldCB2ZWxpdCBzYWdpdHRpcy4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXZlcnQtY29sb3ItZXhw
ZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXZlcnQtY29s
b3ItZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3Jl
dmVydC1jb2xvci1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAK
KzxoZWFkPgorPHN0eWxlPgoraHRtbCB7CisgIGZvbnQtc2l6ZTogc21hbGw7CisgIGJhY2tncm91
bmQtY29sb3I6ICNGMEYwRjA7CisgIGNvbG9yOiBibHVlOworfQorCitibG9ja3F1b3RlIHsgYmFj
a2dyb3VuZC1jb2xvcjogc2t5Ymx1ZTsgfQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8
YmxvY2txdW90ZT5UaGlzIHRleHQgc2hvdWxkIGJlIGJsdWUuPC9ibG9ja3F1b3RlPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmV2ZXJ0LWNvbG9yLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmV2ZXJ0LWNvbG9yLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXZlcnQtY29sb3IuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACis8aGVhZD4KKzxzdHlsZT4KK2h0bWwgeworICBm
b250LXNpemU6IHNtYWxsOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOworICBjb2xvcjog
Ymx1ZTsKK30KKworYmxvY2txdW90ZSB7CisgIGJhY2tncm91bmQtY29sb3I6IHNreWJsdWU7Cisg
IGNvbG9yOiByZWQ7CisgIGNvbG9yOiByZXZlcnQ7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+Cis8YmxvY2txdW90ZSBpZD0icXVvdGUiPlRoaXMgdGV4dCBzaG91bGQgYmUgYmx1ZS48L2Js
b2NrcXVvdGU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9y
ZXZlcnQtbWFyZ2lucy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY3NzL3JldmVydC1tYXJnaW5zLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9yZXZlcnQtbWFyZ2lucy1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQgQEAKKzxoZWFkPgorPHN0eWxlPgorYmxvY2txdW90ZSB7CisgIG1h
cmdpbi10b3A6MDsKKyAgbWFyZ2luLWJvdHRvbTowOworICBib3JkZXI6MXB4IHNvbGlkIGJsYWNr
OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGJsb2NrcXVvdGUgaWQ9InF1b3RlIj5U
aGlzIGJsb2NrcXVvdGUgc2hvdWxkIGhhdmUgdXNlciBhZ2VudCBtYXJnaW5zIGZvciB0aGUgbGVm
dCBhbmQgcmlnaHQgYnV0IHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIHNob3VsZCBiZSAwLjwv
YmxvY2txdW90ZT4KKzxibG9ja3F1b3RlIGlkPSJxdW90ZSI+VGhpcyBibG9ja3F1b3RlIHNob3Vs
ZCBoYXZlIHVzZXIgYWdlbnQgbWFyZ2lucyBmb3IgdGhlIGxlZnQgYW5kIHJpZ2h0IGJ1dCB0aGUg
dG9wIGFuZCBib3R0b20gbWFyZ2lucyBzaG91bGQgYmUgMC48L2Jsb2NrcXVvdGU+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXZlcnQtbWFyZ2lucy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3JldmVydC1tYXJnaW5zLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXZlcnQtbWFyZ2lucy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKKzxoZWFkPgorPHN0eWxlPgorYmxvY2tx
dW90ZSB7CisgIG1hcmdpbjowOworICBtYXJnaW4tcmlnaHQ6cmV2ZXJ0OworICBtYXJnaW4tbGVm
dDpyZXZlcnQ7CisgIGJvcmRlcjoxcHggc29saWQgYmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+Cis8YmxvY2txdW90ZSBpZD0icXVvdGUiPlRoaXMgYmxvY2txdW90ZSBzaG91bGQg
aGF2ZSB1c2VyIGFnZW50IG1hcmdpbnMgZm9yIHRoZSBsZWZ0IGFuZCByaWdodCBidXQgdGhlIHRv
cCBhbmQgYm90dG9tIG1hcmdpbnMgc2hvdWxkIGJlIDAuPC9ibG9ja3F1b3RlPgorPGJsb2NrcXVv
dGUgaWQ9InF1b3RlIj5UaGlzIGJsb2NrcXVvdGUgc2hvdWxkIGhhdmUgdXNlciBhZ2VudCBtYXJn
aW5zIGZvciB0aGUgbGVmdCBhbmQgcmlnaHQgYnV0IHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5z
IHNob3VsZCBiZSAwLjwvYmxvY2txdW90ZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9hbGwta2V5d29yZC1yZXZlcnQtZXhwZWN0ZWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvYWxsLWtleXdv
cmQtcmV2ZXJ0LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy92YXJpYWJsZXMvYWxsLWtleXdvcmQtcmV2ZXJ0LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMSBAQAorPGhlYWQ+Cis8c3R5bGU+CitodG1sIHsKKyAgZm9udC1z
aXplOiBzbWFsbDsKKyAgYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMDsKKyAgY29sb3I6IGJsdWU7
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8c3BhbiBpZD0icXVvdGUiPkxvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuPC9zcGFuPiBQ
aGFzZWxsdXMgZWdldCB2ZWxpdCBzYWdpdHRpcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvYWxsLWtleXdvcmQtcmV2ZXJ0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2FsbC1r
ZXl3b3JkLXJldmVydC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
dmFyaWFibGVzL2FsbC1rZXl3b3JkLXJldmVydC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTkgQEAKKzxoZWFkPgorPHRpdGxlPlRlc3Qgb2YgZmFpbGVkIHZhcmlhYmxlIGxvb2t1cCBi
ZWNhdXNlIG9mICJyZXZlcnQiIG9uIGEgY3VzdG9tIHByb3BlcnR5IGNhdXNpbmcgYWxsIHRvIHJl
c2V0IGV2ZXJ5dGhpbmcuPC90aXRsZT4KKzxzdHlsZT4KK2h0bWwgeworICBmb250LXNpemU6IHNt
YWxsOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOworICBjb2xvcjogYmx1ZTsKKyAgLS1h
OiByZXZlcnQ7Cit9CisKK2Jsb2NrcXVvdGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiBza3libHVl
OworICBjb2xvcjogcmVkOworICBhbGw6IHZhcigtLWEpOworfQorPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPGJsb2NrcXVvdGUgaWQ9InF1b3RlIj5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1l
dCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LjwvYmxvY2txdW90ZT4gUGhhc2VsbHVzIGVn
ZXQgdmVsaXQgc2FnaXR0aXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1pbmhlcml0YW5jZS1leHBlY3RlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQt
aW5oZXJpdGFuY2UtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtaW5oZXJpdGFuY2UtZXhwZWN0ZWQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPjxodG1sPjxo
ZWFkPjx0aXRsZT5DU1MgUmVmdGVzdCBSZWZlcmVuY2U8L3RpdGxlPgorPGxpbmsgaHJlZj0ibWFp
bHRvOmNhbUBtY2MuaWQuYXUiIHJlbD0iYXV0aG9yIiB0aXRsZT0iQ2FtZXJvbiBNY0Nvcm1hY2si
PgorPHN0eWxlPgorcCB7CisgIGNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+PGJv
ZHk+PHA+VGhpcyB0ZXh0IG11c3QgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PjwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJs
ZXMvcmV2ZXJ0LWluaGVyaXRhbmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdmFyaWFibGVzL3JldmVydC1pbmhlcml0YW5jZS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1pbmhlcml0YW5jZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+PGh0
bWw+PGhlYWQ+PHRpdGxlPkNTUyBUZXN0OiBUZXN0IGRlY2xhcmluZyBhIHZhcmlhYmxlIHdob3Nl
IHZhbHVlIGlzICJyZXZlcnQiIHdoZXJlIHRoZXJlIGlzIGEgdmFyaWFibGUgdG8gaW5oZXJpdCBm
cm9tLjwvdGl0bGU+Cis8c3R5bGU+Citib2R5IHsKKyAgLS1hOiBncmVlbjsKKyAgY29sb3I6IGNy
aW1zb247Cit9CitwIHsKKyAgY29sb3I6IHJlZDsKK30KK3AgeworICBjb2xvcjogb3JhbmdlOwor
ICAtLWE6IHJldmVydDsKKyAgY29sb3I6IHZhcigtLWEpOworfQorPC9zdHlsZT4KKzwvaGVhZD48
Ym9keT48cD5UaGlzIHRleHQgbXVzdCBiZSBncmVlbi48L3A+Cis8L2JvZHk+PC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3Zhcmlh
Ymxlcy9yZXZlcnQtbm8taW5oZXJpdGFuY2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LW5vLWluaGVyaXRhbmNlLWV4cGVj
dGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMv
cmV2ZXJ0LW5vLWluaGVyaXRhbmNlLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT48aHRtbD48aGVhZD48dGl0bGU+Q1NT
IFJlZnRlc3QgUmVmZXJlbmNlPC90aXRsZT4KKzxsaW5rIGhyZWY9Im1haWx0bzpjYW1AbWNjLmlk
LmF1IiByZWw9ImF1dGhvciIgdGl0bGU9IkNhbWVyb24gTWNDb3JtYWNrIj4KKzxzdHlsZT4KK3Ag
eworICBjb2xvcjogZ3JlZW47Cit9Cis8L3N0eWxlPgorPC9oZWFkPjxib2R5PjxwPlRoaXMgdGV4
dCBtdXN0IGJlIGdyZWVuLjwvcD4KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC1uby1p
bmhlcml0YW5jZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3Zhcmlh
Ymxlcy9yZXZlcnQtbm8taW5oZXJpdGFuY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtbm8taW5oZXJpdGFuY2UuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPjxodG1sPjxo
ZWFkPjx0aXRsZT5DU1MgVGVzdDogVGVzdCBkZWNsYXJpbmcgYSB2YXJpYWJsZSB3aG9zZSB2YWx1
ZSBpcyAicmV2ZXJ0IiB3aGVyZSB0aGVyZSBpcyBubyB2YXJpYWJsZSB0byBpbmhlcml0IGZyb20u
PC90aXRsZT4KKzxzdHlsZT4KK3AgeworICBjb2xvcjogcmVkOworfQorcCB7CisgIGNvbG9yOiBv
cmFuZ2U7CisgIC0tYTogcmV2ZXJ0OworICBjb2xvcjogdmFyKC0tYSxncmVlbik7Cit9Cis8L3N0
eWxlPgorPC9oZWFkPjxib2R5PjxwPlRoaXMgdGV4dCBtdXN0IGJlIGdyZWVuLjwvcD4KKzwvYm9k
eT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC12YXJpYWJsZS1yZWZlcmVuY2UtZXhwZWN0ZWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LXZh
cmlhYmxlLXJlZmVyZW5jZS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jc3MvdmFyaWFibGVzL3JldmVydC12YXJpYWJsZS1yZWZlcmVuY2UtZXhwZWN0ZWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPjxodG1sPjxoZWFkPjx0aXRsZT5DU1MgUmVmdGVzdCBSZWZlcmVuY2U8L3RpdGxlPgorPGxp
bmsgaHJlZj0ibWFpbHRvOmNhbUBtY2MuaWQuYXUiIHJlbD0iYXV0aG9yIiB0aXRsZT0iQ2FtZXJv
biBNY0Nvcm1hY2siPgorPHN0eWxlPgorcCB7CisgIGNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+
Cis8L2hlYWQ+PGJvZHk+PHA+VGhpcyB0ZXh0IG11c3QgYmUgZ3JlZW4uPC9wPgorPC9ib2R5Pjwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy92YXJpYWJsZXMvcmV2ZXJ0LXZhcmlhYmxlLXJlZmVyZW5jZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yZXZlcnQtdmFyaWFibGUtcmVmZXJl
bmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMv
cmV2ZXJ0LXZhcmlhYmxlLXJlZmVyZW5jZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+PGh0bWw+PGhlYWQ+PHRpdGxlPkNTUyBUZXN0
OiBUZXN0IGRlY2xhcmluZyBhIHZhcmlhYmxlIHdob3NlIHZhbHVlIGNvbnNpc3RzIG9mIGEgcmVm
ZXJlbmNlIHRvIGEgdmFyaWFibGUgd2hvc2UgdmFsdWUgaXMgInJldmVydCIuPC90aXRsZT4KKzxz
dHlsZT4KK2JvZHkgeworICAtLWI6IGdyZWVuOworICBjb2xvcjogcmVkOworfQorcCB7CisgIGNv
bG9yOiBvcmFuZ2U7CisgIC0tYTogdmFyKC0tYik7CisgIC0tYjogcmV2ZXJ0OworICBjb2xvcjog
dmFyKC0tYSk7Cit9Cis8L3N0eWxlPgorPC9oZWFkPjxib2R5PjxwPlRoaXMgdGV4dCBtdXN0IGJl
IGdyZWVuLjwvcD4KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="288546"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>