<?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>162078</bug_id>
          
          <creation_ts>2016-09-16 11:40:43 -0700</creation_ts>
          <short_desc>[CSS Parser] Get CSSPropertyParserHelpers.cpp compiling</short_desc>
          <delta_ts>2016-09-22 13:36:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>46591</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1230510</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-16 11:40:43 -0700</bug_when>
    <thetext>[CSS Parser] Get CSSPropertyParserHelpers.cpp compiling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230525</commentid>
    <comment_count>1</comment_count>
      <attachid>289087</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-16 12:03:04 -0700</bug_when>
    <thetext>Created attachment 289087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230528</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-16 12:05:09 -0700</bug_when>
    <thetext>Attachment 289087 did not pass style-queue:


ERROR: Source/WebCore/css/CSSCalculationValue.cpp:609:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/css/parser/CSSParserIdioms.h:69:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/css/CSSPrimitiveValue.h:159:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/css/CSSPrimitiveValue.h:165:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:579:  &apos;result&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedNullptr&apos;.  [readability/naming/protected] [4]
ERROR: Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:998:  &apos;result&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedNullptr&apos;.  [readability/naming/protected] [4]
Total errors found: 6 in 21 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>1230532</commentid>
    <comment_count>3</comment_count>
      <attachid>289090</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-16 12:08:15 -0700</bug_when>
    <thetext>Created attachment 289090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230533</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-16 12:10:41 -0700</bug_when>
    <thetext>Attachment 289090 did not pass style-queue:


ERROR: Source/WebCore/css/CSSPrimitiveValue.h:159:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/css/CSSPrimitiveValue.h:165:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 2 in 21 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>1230537</commentid>
    <comment_count>5</comment_count>
      <attachid>289092</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-16 12:11:57 -0700</bug_when>
    <thetext>Created attachment 289092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230538</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-16 12:13:33 -0700</bug_when>
    <thetext>Attachment 289092 did not pass style-queue:


ERROR: Source/WebCore/css/CSSPrimitiveValue.h:159:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/css/CSSPrimitiveValue.h:165:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 2 in 21 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>1230544</commentid>
    <comment_count>7</comment_count>
      <attachid>289094</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-16 12:39:01 -0700</bug_when>
    <thetext>Created attachment 289094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230546</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-16 12:41:12 -0700</bug_when>
    <thetext>Attachment 289094 did not pass style-queue:


ERROR: Source/WebCore/css/CSSPrimitiveValue.h:159:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/css/CSSPrimitiveValue.h:165:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 2 in 23 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>1230553</commentid>
    <comment_count>9</comment_count>
      <attachid>289094</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-16 12:55:42 -0700</bug_when>
    <thetext>Comment on attachment 289094
Patch

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

&gt; Source/WebCore/css/CSSCalculationValue.cpp:900
&gt; +    return expression ? adoptRef(new CSSCalcValue(expression.releaseNonNull(), range != ValueRangeAll)) : nullptr;
&gt; +
&gt; +}

Nit: extra blank line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230569</commentid>
    <comment_count>10</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-16 13:26:43 -0700</bug_when>
    <thetext>Landed in r206043.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289087</attachid>
            <date>2016-09-16 12:03:04 -0700</date>
            <delta_ts>2016-09-16 12:08:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>87310</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMiBAQAorMjAxNi0wOS0xNiAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBbQ1NTIFBhcnNlcl0gR2V0IENTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAgY29tcGlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwNzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Omhhc0RvdWJsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNo
ZWNrRGVwdGhBbmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjRXhwcmVzc2lvbk5v
ZGVQYXJzZXI6OnBhcnNlQ2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjRXhwcmVzc2lv
bk5vZGVQYXJzZXI6Om9wZXJhdG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0V4
cHJlc3Npb25Ob2RlUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nh
bGNFeHByZXNzaW9uTm9kZVBhcnNlcjo6cGFyc2VWYWx1ZVRlcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyOjpwYXJzZVZhbHVlTXVsdGlwbGljYXRpdmVF
eHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNFeHByZXNzaW9uTm9kZVBhcnNl
cjo6cGFyc2VBZGRpdGl2ZVZhbHVlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
YWxjRXhwcmVzc2lvbk5vZGVQYXJzZXI6OnBhcnNlVmFsdWVFeHByZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmNoZWNrRGVwdGhBbmRJbmRleERlcHJlY2F0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyRGVwcmVjYXRlZDo6cGFyc2VWYWx1ZVRlcm0p
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyRGVwcmVjYXRl
ZDo6cGFyc2VWYWx1ZU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXJEZXByZWNhdGVkOjpwYXJzZUFkZGl0aXZlVmFs
dWVFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ2FsY1ZhbHVlOjpjcmVhdGVDYWxjdWxhdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NhbGNWYWx1ZTo6c2V0UGVybWl0dGVkVmFsdWVSYW5nZSk6CisgICAgICAgIFN3aXRjaCBv
ZmYgdGhlIHBlcm1pdHRlZCBjYWxjIHZhbHVlIHJhbmdlIGVudW0sIHNpbmNlIHdlIGNhbiBqdXN0
IHVzZSB0aGUgaWRlbnRpY2FsIFZhbHVlUmFuZ2UgZW51bS4KKyAgICAgICAgRGVwcmVjYXRlIHRo
ZSBDU1NQYXJzZXJWYWx1ZUxpc3QtYmFzZWQgcGFyc2VyIGJ5IHJlbmFtaW5nIGl0LCBhbmQgYWRk
IGEgbmV3IHBhcnNlciB0aGF0IG9wZXJhdGVzCisgICAgICAgIG9uIHRva2Vucy4KKworICAgICAg
ICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
Q1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU3Ry
aW5nVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y2xlYW51cCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5n
dGhEb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51
bWJlckZvckN1c3RvbUNTU1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6YnVpbGRQYXJz
ZXJWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBDU1NfUVVJUktZX0VNUyBhcyBhIHVuaXQgdHlwZS4gVGhpcyB3aWxsIGxl
dCB1cyBlbGltaW5hdGUgdGhlIGV4dHJhIG1faXNRdWlya1ZhbHVlIGJvb2xlYW4KKyAgICAgICAg
ZXZlbnR1YWxseS4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6dmFsaWRhdGVDYWxjdWxhdGlvblVuaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNhbGN1bGF0aW9uKToKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1BhcnNlci5oOgorICAgICAgICBTd2l0Y2ggdG8gVmFsdWVSYW5nZS4KKworICAg
ICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXBsZXRlVVJMKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOgor
ICAgICAgICBNYWtlIHRoZSBVUkwgY29tcGxldGlvbiBmdW5jdGlvbiBmcm9tIENTU1BhcnNlci5j
cHAgYXZhaWxhYmxlIHRvIGFsbC4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyTW9k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6aXNVbml0TGVzc1ZhbHVlUGFyc2luZ0VuYWJsZWRGb3JN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVW5pdExlc3NMZW5ndGhQYXJzaW5nRW5hYmxlZEZv
ck1vZGUpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdGhpcyB0byB2YWx1ZSwgc2luY2UgZm9y
IG5vdyB3ZSdyZSBub3Qgc3VwcG9ydGluZyBCbGluaydzIFVzZXJVbml0cy4gVGhpcyBtZWFucyB3
ZSBuZWVkIHRvIHN1cHBvcnQKKyAgICAgICAgdW5pdGxlc3MgcGFyc2luZyBmb3IgdGltZXMgYW5k
IGFuZ2xlcyBpbiBhZGRpdGlvbiB0byBsZW5ndGhzLCBtYWtpbmcgdGhlIG5hbWUgb2YgdGhlIGZ1
bmN0aW9uIGluYXBwcm9wcmlhdGUuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclRv
a2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNzc1ByaW1pdGl2ZVZhbHVlVW5pdEZyb21Ucmll
KToKKyAgICAgICAgVHVybiBxdWlya3kgZW1zIHN1cHBvcnQgYmFjayBvbi4KKworICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSk6CisgICAgICAgIFN1cHBvcnQgcXVpcmt5IGVtcy4K
KworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Q2FsY1BhcnNlcjo6Y29u
c3VtZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6
Q2FsY1BhcnNlcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVBvc2l0aXZlSW50ZWdlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpzaG91bGRBY2NlcHRVbml0bGVz
c1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OmNvbnN1bWVQZXJjZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVs
cGVyczo6Y2FuQ29uc3VtZUNhbGNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVMZW5ndGhPclBlcmNlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQW5nbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJZGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJZGVudFJhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUN1c3Rv
bUlkZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OmNvbnN1bWVVcmwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OjpwYXJzZVJHQlBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzOjpwYXJzZUhTTFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUG9zaXRpb25Db21wb25lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwb3NpdGlvbkZyb21PbmVWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBvc2l0aW9u
RnJvbVR3b1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnM6OnBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFsdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU9uZU9y
VHdvVmFsdWVkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50U3Rv
cENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZFJh
ZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6Y29uc3VtZVJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
UGFyc2VySGVscGVyczo6Y29uc3VtZUxpbmVhckdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUltYWdlT3JOb25lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUNyb3NzRmFkZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVHZW5lcmF0
ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNv
bnN1bWVJbWFnZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNvbnN1bWVJbWFnZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6
aXNDU1NXaWRlS2V5d29yZCk6CisgICAgICAgIExvdHMgb2YgY2hhbmdlcyBoZXJlLiBUaGUgbW9z
dCBpbXBvcnRhbnQgaXMgc3dpdGNoaW5nIG92ZXIgdG8gUmVmUHRycyBhbmQgUmVmcyB3aGVyZSBh
cHByb3ByaWF0ZSwgd2l0aCB0aGUKKyAgICAgICAgcmVxdWlzaXRlIFdURk1vdmVzLiBVbml0IHR5
cGVzIGFsc28gaGF2ZSB0byBiZSBjb252ZXJ0ZWQgYmFjayB0byBvdXIgdmFsdWVzLCBhbmQgdW5p
dGxlc3MgcGFyc2luZyBoYXMKKyAgICAgICAgdG8gd29yayB3aXRoIGNvbnN1bWVUaW1lIGFuZCBj
b25zdW1lQW5nbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRp
b25WYWx1ZTo6Q2FsY3VsYXRpb25WYWx1ZSk6CisgICAgICAgIFVzZSBWYWx1ZVJhbmdlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OnBhcnNlSGV4Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICBBZGQgYSBTdHJp
bmdWaWV3LWJhc2VkIHBhcnNlSGV4Q29sb3IgZnVuY3Rpb24uCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUNl
bnRlckNvb3JkaW5hdGU6OnVwZGF0ZUNvbXB1dGVkTGVuZ3RoKToKKyAgICAgICAgVXNlIFZhbHVl
UmFuZ2UKKwogMjAxNi0wOS0xNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWVkaWEtc291cmNlXSBGaXggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtdGltZXN0YW1wLW9mZnNldC5odG1sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCShyZXZpc2lvbiAyMDU5
OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVl
LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJh
bmdlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMTQyLDYg
KzE0Myw3IEBAIHN0YXRpYyBib29sIGhhc0RvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVYKICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FOgogICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19TSEFQRToKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UVVBRDoKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUVVJUktZX0VNUzoKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19M
RU5HVEhfUkVQRUFUOgogI2VuZGlmCkBAIC01NTksNyArNTYxLDEzNiBAQCBwcml2YXRlOgogICAg
IGNvbnN0IENhbGNPcGVyYXRvciBtX29wZXJhdG9yOwogfTsKIAotc3RhdGljIFBhcnNlU3RhdGUg
Y2hlY2tEZXB0aEFuZEluZGV4KGludCogZGVwdGgsIHVuc2lnbmVkIGluZGV4LCBDU1NQYXJzZXJW
YWx1ZUxpc3QqIHRva2VucykKK3N0YXRpYyBQYXJzZVN0YXRlIGNoZWNrRGVwdGhBbmRJbmRleChp
bnQqIGRlcHRoLCBDU1NQYXJzZXJUb2tlblJhbmdlIHRva2VucykKK3sKKyAgICAoKmRlcHRoKSsr
OworICAgIGlmICh0b2tlbnMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIE5vTW9yZVRva2VuczsK
KyAgICBpZiAoKmRlcHRoID4gbWF4RXhwcmVzc2lvbkRlcHRoKQorICAgICAgICByZXR1cm4gVG9v
RGVlcDsKKyAgICByZXR1cm4gT0s7Cit9CisKK2NsYXNzIENTU0NhbGNFeHByZXNzaW9uTm9kZVBh
cnNlciB7CitwdWJsaWM6CisgICAgUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcGFyc2VD
YWxjKENTU1BhcnNlclRva2VuUmFuZ2UgdG9rZW5zKQorICAgIHsKKyAgICAgICAgVmFsdWUgcmVz
dWx0OworICAgICAgICB0b2tlbnMuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICAgICAgYm9vbCBv
ayA9IHBhcnNlVmFsdWVFeHByZXNzaW9uKHRva2VucywgMCwgJnJlc3VsdCk7CisgICAgICAgIGlm
ICghb2sgfHwgIXRva2Vucy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiByZXN1bHQudmFsdWU7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBz
dHJ1Y3QgVmFsdWUgeworICAgICAgICBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1
ZTsKKyAgICB9OworICAgIAorICAgIGNoYXIgb3BlcmF0b3JWYWx1ZShjb25zdCBDU1NQYXJzZXJU
b2tlbiYgdG9rZW4pCisgICAgeworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IERlbGltaXRl
clRva2VuKQorICAgICAgICAgICAgcmV0dXJuIHRva2VuLmRlbGltaXRlcigpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgYm9vbCBwYXJzZVZhbHVlKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHRva2VucywgVmFsdWUqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIENTU1BhcnNlclRv
a2VuIHRva2VuID0gdG9rZW5zLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAg
IGlmICghKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gUGVy
Y2VudGFnZVRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzIHR5cGUgPSB0b2tlbi51bml0VHlwZSgpOworICAgICAgICBpZiAodW5pdENhdGVn
b3J5KHR5cGUpID09IENhbGNPdGhlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIHJlc3VsdC0+dmFsdWUgPSBDU1NDYWxjUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodG9rZW4ubnVtZXJpY1ZhbHVlKCksIHR5cGUpLCB0
b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgPT0gSW50ZWdlclZhbHVlVHlwZSk7CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBwYXJzZVZhbHVlVGVy
bShDU1NQYXJzZXJUb2tlblJhbmdlJiB0b2tlbnMsIGludCBkZXB0aCwgVmFsdWUqIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIGlmIChjaGVja0RlcHRoQW5kSW5kZXgoJmRlcHRoLCB0b2tlbnMpICE9
IE9LKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgaWYgKHRv
a2Vucy5wZWVrKCkudHlwZSgpID09IExlZnRQYXJlbnRoZXNpc1Rva2VuIHx8IHRva2Vucy5wZWVr
KCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlQ2FsYykgeworICAgICAgICAgICAgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBpbm5lclJhbmdlID0gdG9rZW5zLmNvbnN1bWVCbG9jaygpOworICAgICAgICAg
ICAgdG9rZW5zLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICBpbm5lclJhbmdlLmNv
bnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICByZXR1cm4gcGFyc2VWYWx1ZUV4cHJlc3Np
b24oaW5uZXJSYW5nZSwgZGVwdGgsIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHJldHVybiBwYXJzZVZhbHVlKHRva2VucywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBwYXJzZVZhbHVlTXVsdGlwbGljYXRpdmVFeHByZXNzaW9uKENTU1BhcnNlclRva2VuUmFu
Z2UmIHRva2VucywgaW50IGRlcHRoLCBWYWx1ZSogcmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYg
KGNoZWNrRGVwdGhBbmRJbmRleCgmZGVwdGgsIHRva2VucykgIT0gT0spCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBpZiAoIXBhcnNlVmFsdWVUZXJtKHRva2Vu
cywgZGVwdGgsIHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAor
ICAgICAgICB3aGlsZSAoIXRva2Vucy5hdEVuZCgpKSB7CisgICAgICAgICAgICBjaGFyIG9wZXJh
dG9yQ2hhcmFjdGVyID0gb3BlcmF0b3JWYWx1ZSh0b2tlbnMucGVlaygpKTsKKyAgICAgICAgICAg
IGlmIChvcGVyYXRvckNoYXJhY3RlciAhPSBDYWxjTXVsdGlwbHkgJiYgb3BlcmF0b3JDaGFyYWN0
ZXIgIT0gQ2FsY0RpdmlkZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHRv
a2Vucy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBWYWx1ZSByaHM7CisgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWVUZXJtKHRva2Vucywg
ZGVwdGgsICZyaHMpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgcmVzdWx0LT52YWx1ZSA9IENTU0NhbGNCaW5hcnlPcGVyYXRpb246OmNy
ZWF0ZVNpbXBsaWZpZWQoc3RhdGljX2Nhc3Q8Q2FsY09wZXJhdG9yPihvcGVyYXRvckNoYXJhY3Rl
ciksIHJlc3VsdC0+dmFsdWUsIHJocy52YWx1ZSk7CisKKyAgICAgICAgICAgIGlmICghcmVzdWx0
LT52YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBib29sIHBhcnNlQWRk
aXRpdmVWYWx1ZUV4cHJlc3Npb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5zLCBpbnQgZGVw
dGgsIFZhbHVlKiByZXN1bHQpCisgICAgeworICAgICAgICBpZiAoY2hlY2tEZXB0aEFuZEluZGV4
KCZkZXB0aCwgdG9rZW5zKSAhPSBPSykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIGlmICghcGFyc2VWYWx1ZU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbih0b2tl
bnMsIGRlcHRoLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAK
KyAgICAgICAgd2hpbGUgKCF0b2tlbnMuYXRFbmQoKSkgeworICAgICAgICAgICAgY2hhciBvcGVy
YXRvckNoYXJhY3RlciA9IG9wZXJhdG9yVmFsdWUodG9rZW5zLnBlZWsoKSk7CisgICAgICAgICAg
ICBpZiAob3BlcmF0b3JDaGFyYWN0ZXIgIT0gQ2FsY0FkZCAmJiBvcGVyYXRvckNoYXJhY3RlciAh
PSBDYWxjU3VidHJhY3QpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAo
KCZ0b2tlbnMucGVlaygpIC0gMSktPnR5cGUoKSAhPSBXaGl0ZXNwYWNlVG9rZW4pCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBjYWxjKDFweCsgMnB4KSBpcyBpbnZhbGlkCisgICAg
ICAgICAgICB0b2tlbnMuY29uc3VtZSgpOworICAgICAgICAgICAgaWYgKHRva2Vucy5wZWVrKCku
dHlwZSgpICE9IFdoaXRlc3BhY2VUb2tlbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
IC8vIGNhbGMoMXB4ICsycHgpIGlzIGludmFsaWQKKyAgICAgICAgICAgIHRva2Vucy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBWYWx1ZSBy
aHM7CisgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWVNdWx0aXBsaWNhdGl2ZUV4cHJlc3Npb24o
dG9rZW5zLCBkZXB0aCwgJnJocykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgCisgICAgICAgICAgICByZXN1bHQtPnZhbHVlID0gQ1NTQ2FsY0JpbmFyeU9wZXJh
dGlvbjo6Y3JlYXRlU2ltcGxpZmllZChzdGF0aWNfY2FzdDxDYWxjT3BlcmF0b3I+KG9wZXJhdG9y
Q2hhcmFjdGVyKSwgcmVzdWx0LT52YWx1ZSwgcmhzLnZhbHVlKTsKKyAgICAgICAgICAgIGlmICgh
cmVzdWx0LT52YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBib29sIHBh
cnNlVmFsdWVFeHByZXNzaW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHRva2VucywgaW50IGRlcHRo
LCBWYWx1ZSogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlQWRkaXRpdmVWYWx1
ZUV4cHJlc3Npb24odG9rZW5zLCBkZXB0aCwgcmVzdWx0KTsKKyAgICB9Cit9OworICAgIAorc3Rh
dGljIFBhcnNlU3RhdGUgY2hlY2tEZXB0aEFuZEluZGV4RGVwcmVjYXRlZChpbnQqIGRlcHRoLCB1
bnNpZ25lZCBpbmRleCwgQ1NTUGFyc2VyVmFsdWVMaXN0KiB0b2tlbnMpCiB7CiAgICAgKCpkZXB0
aCkrKzsKICAgICBpZiAoKmRlcHRoID4gbWF4RXhwcmVzc2lvbkRlcHRoKQpAQCAtNTY5LDcgKzcw
MCw3IEBAIHN0YXRpYyBQYXJzZVN0YXRlIGNoZWNrRGVwdGhBbmRJbmRleChpbnQKICAgICByZXR1
cm4gT0s7CiB9CiAKLWNsYXNzIENTU0NhbGNFeHByZXNzaW9uTm9kZVBhcnNlciB7CitjbGFzcyBD
U1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXJEZXByZWNhdGVkIHsKIHB1YmxpYzoKICAgICBSZWZQ
dHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBwYXJzZUNhbGMoQ1NTUGFyc2VyVmFsdWVMaXN0KiB0
b2tlbnMpCiAgICAgewpAQCAtNjE2LDcgKzc0Nyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHBh
cnNlVmFsdWVUZXJtKENTU1BhcnNlclZhbHVlTGlzdCogdG9rZW5zLCBpbnQgZGVwdGgsIHVuc2ln
bmVkKiBpbmRleCwgVmFsdWUqIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIGlmIChjaGVja0RlcHRo
QW5kSW5kZXgoJmRlcHRoLCAqaW5kZXgsIHRva2VucykgIT0gT0spCisgICAgICAgIGlmIChjaGVj
a0RlcHRoQW5kSW5kZXhEZXByZWNhdGVkKCZkZXB0aCwgKmluZGV4LCB0b2tlbnMpICE9IE9LKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmIChvcGVyYXRvclZhbHVlKHRv
a2VucywgKmluZGV4KSA9PSAnKCcpIHsKQEAgLTYzNSw3ICs3NjYsNyBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBwYXJzZVZhbHVlTXVsdGlwbGljYXRpdmVFeHByZXNzaW9uKENTU1BhcnNlclZhbHVl
TGlzdCogdG9rZW5zLCBpbnQgZGVwdGgsIHVuc2lnbmVkKiBpbmRleCwgVmFsdWUqIHJlc3VsdCkK
ICAgICB7Ci0gICAgICAgIGlmIChjaGVja0RlcHRoQW5kSW5kZXgoJmRlcHRoLCAqaW5kZXgsIHRv
a2VucykgIT0gT0spCisgICAgICAgIGlmIChjaGVja0RlcHRoQW5kSW5kZXhEZXByZWNhdGVkKCZk
ZXB0aCwgKmluZGV4LCB0b2tlbnMpICE9IE9LKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgICAgIGlmICghcGFyc2VWYWx1ZVRlcm0odG9rZW5zLCBkZXB0aCwgaW5kZXgsIHJlc3Vs
dCkpCkBAIC02NjIsNyArNzkzLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGFyc2VBZGRpdGl2
ZVZhbHVlRXhwcmVzc2lvbihDU1NQYXJzZXJWYWx1ZUxpc3QqIHRva2VucywgaW50IGRlcHRoLCB1
bnNpZ25lZCogaW5kZXgsIFZhbHVlKiByZXN1bHQpCiAgICAgewotICAgICAgICBpZiAoY2hlY2tE
ZXB0aEFuZEluZGV4KCZkZXB0aCwgKmluZGV4LCB0b2tlbnMpICE9IE9LKQorICAgICAgICBpZiAo
Y2hlY2tEZXB0aEFuZEluZGV4RGVwcmVjYXRlZCgmZGVwdGgsICppbmRleCwgdG9rZW5zKSAhPSBP
SykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoIXBhcnNlVmFsdWVN
dWx0aXBsaWNhdGl2ZUV4cHJlc3Npb24odG9rZW5zLCBkZXB0aCwgaW5kZXgsIHJlc3VsdCkpCkBA
IC03NTAsMTcgKzg4MSwyNSBAQCBzdGF0aWMgUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4g
Y3JlCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDU1NDYWxjVmFsdWU+IENTU0Nh
bGNWYWx1ZTo6Y3JlYXRlKENTU1BhcnNlclN0cmluZyBuYW1lLCBDU1NQYXJzZXJWYWx1ZUxpc3Qm
IHBhcnNlclZhbHVlTGlzdCwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQor
UmVmUHRyPENTU0NhbGNWYWx1ZT4gQ1NTQ2FsY1ZhbHVlOjpjcmVhdGUoQ1NTUGFyc2VyU3RyaW5n
IG5hbWUsIENTU1BhcnNlclZhbHVlTGlzdCYgcGFyc2VyVmFsdWVMaXN0LCBWYWx1ZVJhbmdlIHJh
bmdlKQogewotICAgIENTU0NhbGNFeHByZXNzaW9uTm9kZVBhcnNlciBwYXJzZXI7CisgICAgQ1NT
Q2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyRGVwcmVjYXRlZCBwYXJzZXI7CiAgICAgUmVmUHRyPENT
U0NhbGNFeHByZXNzaW9uTm9kZT4gZXhwcmVzc2lvbjsKIAogICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiY2FsYygiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCAiLXdlYmtpdC1jYWxjKCIpKQogICAgICAgICBleHByZXNzaW9uID0gcGFy
c2VyLnBhcnNlQ2FsYygmcGFyc2VyVmFsdWVMaXN0KTsKIAotICAgIHJldHVybiBleHByZXNzaW9u
ID8gYWRvcHRSZWYobmV3IENTU0NhbGNWYWx1ZShleHByZXNzaW9uLnJlbGVhc2VOb25OdWxsKCks
IHJhbmdlICE9IENhbGN1bGF0aW9uUmFuZ2VBbGwpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGV4
cHJlc3Npb24gPyBhZG9wdFJlZihuZXcgQ1NTQ2FsY1ZhbHVlKGV4cHJlc3Npb24ucmVsZWFzZU5v
bk51bGwoKSwgcmFuZ2UgIT0gVmFsdWVSYW5nZUFsbCkpIDogbnVsbHB0cjsKIH0KIAorUmVmUHRy
PENTU0NhbGNWYWx1ZT4gQ1NTQ2FsY1ZhbHVlOjpjcmVhdGUoY29uc3QgQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgdG9rZW5zLCBWYWx1ZVJhbmdlIHJhbmdlKQoreworICAgIENTU0NhbGNFeHByZXNzaW9u
Tm9kZVBhcnNlciBwYXJzZXI7CisgICAgUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gZXhw
cmVzc2lvbiA9IHBhcnNlci5wYXJzZUNhbGModG9rZW5zKTsKKyAgICByZXR1cm4gZXhwcmVzc2lv
biA/IGFkb3B0UmVmKG5ldyBDU1NDYWxjVmFsdWUoZXhwcmVzc2lvbi5yZWxlYXNlTm9uTnVsbCgp
LCByYW5nZSAhPSBWYWx1ZVJhbmdlQWxsKSkgOiBudWxscHRyOworCit9CisgICAgCiBSZWZQdHI8
Q1NTQ2FsY1ZhbHVlPiBDU1NDYWxjVmFsdWU6OmNyZWF0ZShjb25zdCBDYWxjdWxhdGlvblZhbHVl
JiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIFJlZlB0cjxDU1NDYWxj
RXhwcmVzc2lvbk5vZGU+IGV4cHJlc3Npb24gPSBjcmVhdGVDU1ModmFsdWUuZXhwcmVzc2lvbigp
LCBzdHlsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgJ
KHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBDU1NQYXJzZXJUb2tlblJhbmdlOwogY2xhc3MgQ1NTUGFyc2VyVmFsdWVM
aXN0OwogY2xhc3MgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YTsKIGNsYXNzIFJlbmRlclN0eWxl
OwpAQCAtODcsMTggKzg4LDIyIEBAIHByaXZhdGU6CiAKIGNsYXNzIENTU0NhbGNWYWx1ZSBmaW5h
bCA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDU1NDYWxj
VmFsdWU+IGNyZWF0ZShDU1NQYXJzZXJTdHJpbmcgbmFtZSwgQ1NTUGFyc2VyVmFsdWVMaXN0JiBh
cmd1bWVudHMsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CisgICAgLy8gRklYTUUt
TkVXUEFSU0VSOiBSZW1vdmUgdGhlIENTU1BhcnNlclN0cmluZyBjcmVhdGUgd2hlbiBvbGQgcGFy
c2VyIGdvZXMgYXdheS4KKyAgICBzdGF0aWMgUmVmUHRyPENTU0NhbGNWYWx1ZT4gY3JlYXRlKENT
U1BhcnNlclN0cmluZyBuYW1lLCBDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3VtZW50cywgVmFsdWVS
YW5nZSk7CisgICAgc3RhdGljIFJlZlB0cjxDU1NDYWxjVmFsdWU+IGNyZWF0ZShjb25zdCBDU1NQ
YXJzZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5nZSk7CisgICAgCiAgICAgc3RhdGljIFJlZlB0cjxD
U1NDYWxjVmFsdWU+IGNyZWF0ZShjb25zdCBDYWxjdWxhdGlvblZhbHVlJiwgY29uc3QgUmVuZGVy
U3R5bGUmKTsKIAogICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkoKSBjb25zdCB7IHJl
dHVybiBtX2V4cHJlc3Npb24tPmNhdGVnb3J5KCk7IH0KICAgICBib29sIGlzSW50KCkgY29uc3Qg
eyByZXR1cm4gbV9leHByZXNzaW9uLT5pc0ludGVnZXIoKTsgfQogICAgIGRvdWJsZSBkb3VibGVW
YWx1ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNQb3NpdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhw
cmVzc2lvbi0+ZG91YmxlVmFsdWUoKSA+IDA7IH0KKyAgICBib29sIGlzTmVnYXRpdmUoKSBjb25z
dCB7IHJldHVybiBtX2V4cHJlc3Npb24tPmRvdWJsZVZhbHVlKCkgPCAwOyB9CiAgICAgZG91Ymxl
IGNvbXB1dGVMZW5ndGhQeChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29uc3Q7
CiAgICAgdW5zaWduZWQgc2hvcnQgcHJpbWl0aXZlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhw
cmVzc2lvbi0+cHJpbWl0aXZlVHlwZSgpOyB9CiAKICAgICBSZWY8Q2FsY3VsYXRpb25WYWx1ZT4g
Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRQZXJtaXR0ZWRWYWx1ZVJhbmdlKENhbGN1bGF0aW9uUGVybWl0
dGVkVmFsdWVSYW5nZSk7CisgICAgdm9pZCBzZXRQZXJtaXR0ZWRWYWx1ZVJhbmdlKFZhbHVlUmFu
Z2UpOwogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKICAgICBib29sIGVxdWFs
cyhjb25zdCBDU1NDYWxjVmFsdWUmKSBjb25zdDsKQEAgLTEyMiwxMiArMTI3LDEyIEBAIGlubGlu
ZSBDU1NDYWxjVmFsdWU6OkNTU0NhbGNWYWx1ZShSZWY8Q1MKIGlubGluZSBSZWY8Q2FsY3VsYXRp
b25WYWx1ZT4gQ1NTQ2FsY1ZhbHVlOjpjcmVhdGVDYWxjdWxhdGlvblZhbHVlKGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhKSBjb25zdAogewogICAgIHJldHVy
biBDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUobV9leHByZXNzaW9uLT5jcmVhdGVDYWxjRXhwcmVz
c2lvbihjb252ZXJzaW9uRGF0YSksCi0gICAgICAgIG1fc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZl
ID8gQ2FsY3VsYXRpb25SYW5nZU5vbk5lZ2F0aXZlIDogQ2FsY3VsYXRpb25SYW5nZUFsbCk7Cisg
ICAgICAgIG1fc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlID8gVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
IDogVmFsdWVSYW5nZUFsbCk7CiB9CiAKLWlubGluZSB2b2lkIENTU0NhbGNWYWx1ZTo6c2V0UGVy
bWl0dGVkVmFsdWVSYW5nZShDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UgcmFuZ2UpCitp
bmxpbmUgdm9pZCBDU1NDYWxjVmFsdWU6OnNldFBlcm1pdHRlZFZhbHVlUmFuZ2UoVmFsdWVSYW5n
ZSByYW5nZSkKIHsKLSAgICBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZSA9IHJhbmdlICE9IENh
bGN1bGF0aW9uUmFuZ2VBbGw7CisgICAgbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUgPSByYW5n
ZSAhPSBWYWx1ZVJhbmdlQWxsOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHJldmlzaW9uIDIwNTk5MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDYgKzcxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRDU1NVbml0VHlw
ZUZvcgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUc6CiAgICAgY2FzZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0RJTUVOU0lPTjoKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfRU1TOgorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19RVUlSS1lfRU1TOgog
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM6CiAgICAgY2FzZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0ZSOgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19HUkFEOgpA
QCAtMTYwLDYgKzE2MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1N0cmluZ1R5cGUoQ1NTUHJp
bWkKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBJOgogICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19EUFBYOgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19F
TVM6CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1FVSVJLWV9FTVM6CiAgICAgY2Fz
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzoKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfRk9OVF9GQU1JTFk6CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0ZSOgpA
QCAtNTc2LDYgKzU3OCw3IEBAIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNsZWFudXAoKQogICAg
IGNhc2UgQ1NTX1BBUlNFUl9JTlRFR0VSOgogICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6CiAgICAg
Y2FzZSBDU1NfRU1TOgorICAgIGNhc2UgQ1NTX1FVSVJLWV9FTVM6CiAgICAgY2FzZSBDU1NfRVhT
OgogICAgIGNhc2UgQ1NTX1JFTVM6CiAgICAgY2FzZSBDU1NfQ0hTOgpAQCAtNjg1LDYgKzY4OCw3
IEBAIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGMKIAogICAgIHN3aXRj
aCAocHJpbWl0aXZlVHlwZSkgewogICAgIGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENTU19RVUlS
S1lfRU1TOgogICAgICAgICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7CiAgICAgICAg
IGZhY3RvciA9IGNvbnZlcnNpb25EYXRhLmNvbXB1dGluZ0ZvbnRTaXplKCkgPyBjb252ZXJzaW9u
RGF0YS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkgOiBjb252ZXJz
aW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0xMDcxLDYgKzEwNzUsNyBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBDU1NQ
cmltaXRpdmVWYWx1ZTo6CiAgICAgY2FzZSBDU1NfUEVSQ0VOVEFHRToKICAgICAgICAgcmV0dXJu
IGZvcm1hdE51bWJlclZhbHVlKCIlIik7CiAgICAgY2FzZSBDU1NfRU1TOgorICAgIGNhc2UgQ1NT
X1FVSVJLWV9FTVM6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJWYWx1ZSgiZW0iKTsKICAg
ICBjYXNlIENTU19FWFM6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJWYWx1ZSgiZXgiKTsK
QEAgLTExNzQsNyArMTE3OSw3IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjoKICAgICBjYXNlIENTU19QQVJTRVJfSEVYQ09MT1I6IHsKICAgICAgICAgUkdCQTMyIHJn
YkNvbG9yID0gbV92YWx1ZS5yZ2Jjb2xvcjsKICAgICAgICAgaWYgKG1fcHJpbWl0aXZlVW5pdFR5
cGUgPT0gQ1NTX1BBUlNFUl9IRVhDT0xPUikKLSAgICAgICAgICAgIENvbG9yOjpwYXJzZUhleENv
bG9yKG1fdmFsdWUuc3RyaW5nLCByZ2JDb2xvcik7CisgICAgICAgICAgICBDb2xvcjo6cGFyc2VI
ZXhDb2xvcigoU3RyaW5nKW1fdmFsdWUuc3RyaW5nLCByZ2JDb2xvcik7CiAgICAgICAgIHJldHVy
biBDb2xvcihyZ2JDb2xvcikuY3NzVGV4dCgpOwogICAgIH0KICAgICBjYXNlIENTU19QQUlSOgpA
QCAtMTMxNSw2ICsxMzIwLDcgQEAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpdmVW
YWx1ZQogICAgIGNhc2UgQ1NTX1BBUlNFUl9JTlRFR0VSOgogICAgIGNhc2UgQ1NTX1BFUkNFTlRB
R0U6CiAgICAgY2FzZSBDU1NfRU1TOgorICAgIGNhc2UgQ1NTX1FVSVJLWV9FTVM6CiAgICAgY2Fz
ZSBDU1NfRVhTOgogICAgIGNhc2UgQ1NTX1JFTVM6CiAgICAgY2FzZSBDU1NfQ0hTOgpAQCAtMTM3
OSw2ICsxMzg1LDcgQEAgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTUwog
ICAgIGNhc2UgQ1NTX1BBUlNFUl9JTlRFR0VSOgogICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6CiAg
ICAgY2FzZSBDU1NfRU1TOgorICAgIGNhc2UgQ1NTX1FVSVJLWV9FTVM6CiAgICAgY2FzZSBDU1Nf
RVhTOgogICAgIGNhc2UgQ1NTX1JFTVM6CiAgICAgY2FzZSBDU1NfUFg6CkBAIC0xNDY0LDYgKzE0
NzEsNyBAQCBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjpidWlsZFBhcnNlclZhbHVlCiAgICAgY2Fz
ZSBDU1NfTlVNQkVSOgogICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6CiAgICAgY2FzZSBDU1NfRU1T
OgorICAgIGNhc2UgQ1NTX1FVSVJLWV9FTVM6CiAgICAgY2FzZSBDU1NfRVhTOgogICAgIGNhc2Ug
Q1NTX1JFTVM6CiAgICAgY2FzZSBDU1NfUFg6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuaAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsMTMgQEAgcHVi
bGljOgogICAgICAgICBDU1NfVkFMVUVfSUQgPSAxMTgsCiAgICAgICAgIAogICAgICAgICAvLyBN
b3JlIGludGVybmFsIHBhcnNlIHN0dWZmIGZvciBDU1MgdmFyaWFibGVzCi0gICAgICAgIENTU19Q
QVJTRVJfV0hJVEVTUEFDRSA9IDExOQorICAgICAgICBDU1NfUEFSU0VSX1dISVRFU1BBQ0UgPSAx
MTksCisgICAgICAgIAorICAgICAgICAvLyBUaGlzIHZhbHVlIGlzIHVzZWQgdG8gaGFuZGxlIHF1
aXJreSBtYXJnaW5zIGluIHJlZmxvdyByb290cyAoYm9keSwgdGQsIGFuZCB0aCkgbGlrZSBXaW5J
RS4KKyAgICAgICAgLy8gVGhlIGJhc2ljIGlkZWEgaXMgdGhhdCBhIHN0eWxlc2hlZXQgY2FuIHVz
ZSB0aGUgdmFsdWUgX19xZW0gKGZvciBxdWlya3kgZW0pIGluc3RlYWQgb2YgZW0uCisgICAgICAg
IC8vIFdoZW4gdGhlIHF1aXJreSB2YWx1ZSBpcyB1c2VkLCBpZiB5b3UncmUgaW4gcXVpcmtzIG1v
ZGUsIHRoZSBtYXJnaW4gd2lsbCBjb2xsYXBzZSBhd2F5CisgICAgICAgIC8vIGluc2lkZSBhIHRh
YmxlIGNlbGwuIFRoaXMgcXVpcmsgaXMgc3BlY2lmaWVkIGluIHRoZSBIVE1MIHNwZWMgYnV0IG91
ciBpbXBsIGlzIGRpZmZlcmVudC4KKyAgICAgICAgQ1NTX1FVSVJLWV9FTVMgPSAxMjAKICAgICB9
OwogCiAgICAgLy8gVGhpcyBlbnVtIGZvbGxvd3MgdGhlIENTU1BhcnNlcjo6VW5pdHMgZW51bSBh
dWdtZW50ZWQgd2l0aCBVTklUX0ZSRVFVRU5DWSBmb3IgZnJlcXVlbmNpZXMuCkBAIC0xODksMTYg
KzE5NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwcmltaXRpdmVVbml0VHlwZSA9PSBD
U1NfRU1TCiAgICAgICAgICAgICB8fCBwcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfRVhTCiAgICAg
ICAgICAgICB8fCBwcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfUkVNUwotICAgICAgICAgICAgfHwg
cHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0NIUzsKKyAgICAgICAgICAgIHx8IHByaW1pdGl2ZVVu
aXRUeXBlID09IENTU19DSFMKKyAgICAgICAgICAgIHx8IHByaW1pdGl2ZVVuaXRUeXBlID09IENT
U19RVUlSS1lfRU1TOwogICAgIH0KICAgICBib29sIGlzRm9udFJlbGF0aXZlTGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gaXNGb250UmVsYXRpdmVMZW5ndGgobV9wcmltaXRpdmVVbml0VHlwZSk7IH0K
KyAgICAKKyAgICBib29sIGlzUXVpcmt5RW1zKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlw
ZSgpID09IFVuaXRUeXBlczo6Q1NTX1FVSVJLWV9FTVM7IH0KIAogICAgIHN0YXRpYyBib29sIGlz
Vmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKHVuc2lnbmVkIHNob3J0IHR5cGUpIHsgcmV0dXJuIHR5
cGUgPj0gQ1NTX1ZXICYmIHR5cGUgPD0gQ1NTX1ZNQVg7IH0KICAgICBib29sIGlzVmlld3BvcnRQ
ZXJjZW50YWdlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5n
dGgobV9wcmltaXRpdmVVbml0VHlwZSk7IH0KIAogICAgIHN0YXRpYyBib29sIGlzTGVuZ3RoKHVu
c2lnbmVkIHNob3J0IHR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gKHR5cGUgPj0gQ1NTX0VN
UyAmJiB0eXBlIDw9IENTU19QQykgfHwgdHlwZSA9PSBDU1NfUkVNUyB8fCB0eXBlID09IENTU19D
SFMgfHwgaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgodHlwZSk7CisgICAgICAgIHJldHVybiAo
dHlwZSA+PSBDU1NfRU1TICYmIHR5cGUgPD0gQ1NTX1BDKSB8fCB0eXBlID09IENTU19SRU1TIHx8
IHR5cGUgPT0gQ1NTX0NIUyB8fCBpc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCh0eXBlKSB8fCB0
eXBlID09IENTU19RVUlSS1lfRU1TOwogICAgIH0KIAogICAgIGJvb2wgaXNMZW5ndGgoKSBjb25z
dCB7IHJldHVybiBpc0xlbmd0aChwcmltaXRpdmVUeXBlKCkpOyB9CkBAIC0zNjksNyArMzc4LDgg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIGJv
b2wgaXNRdWlya1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pc1F1aXJrVmFsdWU7IH0KKyAgICAv
LyBGSVhNRS1ORVdQQVJTRVI6IENhbiBkaXRjaCB0aGUgYm9vbGVhbiBhbmQganVzdCB1c2UgdGhl
IHVuaXQgdHlwZSBvbmNlIG9sZCBwYXJzZXIgaXMgZ29uZS4KKyAgICBib29sIGlzUXVpcmtWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNRdWlya1ZhbHVlIHx8IHByaW1pdGl2ZVR5cGUoKSA9PSBD
U1NfUVVJUktZX0VNUzsgfQogCiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0
SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHJldmlzaW9uIDIw
NTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzE4LDcgKzMxOCw3IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb24KICAgICBhdXRvIGxocyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJl
c3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKTsKICAgICBhdXRvIHJocyA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0aCk7CiAgICAgYXV0byBvcCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24+KFdURk1vdmUo
bGhzKSwgV1RGTW92ZShyaHMpLCBDYWxjU3VidHJhY3QpOwotICAgIHJldHVybiBMZW5ndGgoQ2Fs
Y3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBDYWxjdWxhdGlvblJhbmdlQWxsKSk7
CisgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCks
IFZhbHVlUmFuZ2VBbGwpKTsKIH0KIAogaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MjAsOSArMTYy
MCw5IEBAIGJvb2wgQ1NTUGFyc2VyOjp2YWxpZGF0ZUNhbGN1bGF0aW9uVW5pdCgKICAgICBpZiAo
dmFsdWVXaXRoQ2FsY3VsYXRpb24uY2FsY3VsYXRpb24oKSkgewogICAgICAgICAvLyBUaGUgY2Fs
Y3VsYXRpb24gdmFsdWUgd2FzIGFscmVhZHkgcGFyc2VkIHNvIHdlIHJldXNlIGl0LiBIb3dldmVy
LCB3ZSBtYXkgbmVlZCB0byB1cGRhdGUgaXRzIHJhbmdlLgogICAgICAgICBjYWxjdWxhdGlvbiA9
IHZhbHVlV2l0aENhbGN1bGF0aW9uLmNhbGN1bGF0aW9uKCk7Ci0gICAgICAgIGNhbGN1bGF0aW9u
LT5zZXRQZXJtaXR0ZWRWYWx1ZVJhbmdlKG11c3RCZU5vbk5lZ2F0aXZlID8gQ2FsY3VsYXRpb25S
YW5nZU5vbk5lZ2F0aXZlIDogQ2FsY3VsYXRpb25SYW5nZUFsbCk7CisgICAgICAgIGNhbGN1bGF0
aW9uLT5zZXRQZXJtaXR0ZWRWYWx1ZVJhbmdlKG11c3RCZU5vbk5lZ2F0aXZlID8gVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlIDogVmFsdWVSYW5nZUFsbCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdmFs
dWVXaXRoQ2FsY3VsYXRpb24uc2V0Q2FsY3VsYXRpb24ocGFyc2VDYWxjdWxhdGlvbih2YWx1ZVdp
dGhDYWxjdWxhdGlvbiwgbXVzdEJlTm9uTmVnYXRpdmUgPyBDYWxjdWxhdGlvblJhbmdlTm9uTmVn
YXRpdmUgOiBDYWxjdWxhdGlvblJhbmdlQWxsKSk7CisgICAgICAgIHZhbHVlV2l0aENhbGN1bGF0
aW9uLnNldENhbGN1bGF0aW9uKHBhcnNlQ2FsY3VsYXRpb24odmFsdWVXaXRoQ2FsY3VsYXRpb24s
IG11c3RCZU5vbk5lZ2F0aXZlID8gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlIDogVmFsdWVSYW5nZUFs
bCkpOwogICAgICAgICBjYWxjdWxhdGlvbiA9IHZhbHVlV2l0aENhbGN1bGF0aW9uLmNhbGN1bGF0
aW9uKCk7CiAgICAgICAgIGlmICghY2FsY3VsYXRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMTA0Miw3ICsxMTA0Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVdpbGxDaGFu
Z2UoYm9vbCBpbXAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPENTU0NhbGNWYWx1ZT4g
Q1NTUGFyc2VyOjpwYXJzZUNhbGN1bGF0aW9uKENTU1BhcnNlclZhbHVlJiB2YWx1ZSwgQ2FsY3Vs
YXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQorUmVmUHRyPENTU0NhbGNWYWx1ZT4gQ1NT
UGFyc2VyOjpwYXJzZUNhbGN1bGF0aW9uKENTU1BhcnNlclZhbHVlJiB2YWx1ZSwgVmFsdWVSYW5n
ZSByYW5nZSkKIHsKICAgICBBU1NFUlQoaXNDYWxjdWxhdGlvbih2YWx1ZSkpOwogICAgIApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCShyZXZpc2lvbiAyMDU5OTApCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTksNyArMzU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgcGFyc2VIYW5naW5nUHVuY3R1YXRp
b24oYm9vbCBpbXBvcnRhbnQpOwogCiAgICAgYm9vbCBwYXJzZUxpbmVCb3hDb250YWluKGJvb2wg
aW1wb3J0YW50KTsKLSAgICBSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBwYXJzZUNhbGN1bGF0aW9uKENT
U1BhcnNlclZhbHVlJiwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKKyAgICBSZWZQ
dHI8Q1NTQ2FsY1ZhbHVlPiBwYXJzZUNhbGN1bGF0aW9uKENTU1BhcnNlclZhbHVlJiwgVmFsdWVS
YW5nZSk7CiAKICAgICBib29sIHBhcnNlRm9udEZlYXR1cmVUYWcoQ1NTVmFsdWVMaXN0Jik7CiAg
ICAgYm9vbCBwYXJzZUZvbnRGZWF0dXJlU2V0dGluZ3MoYm9vbCBpbXBvcnRhbnQpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcAkocmV2aXNp
b24gMjA2MDA3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTYxLDQgKzYyLDEzIEBAIGJvb2wgaXNWYWx1ZUFsbG93ZWRJbk1vZGUodW5zaWduZWQgc2hv
cnQKICAgICB9CiB9CiAKK1VSTCBjb21wbGV0ZVVSTChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gVVJMKCk7CisgICAgaWYgKGNvbnRleHQuY2hhcnNldC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBVUkwoY29udGV4dC5iYXNlVVJMLCB1cmwpOworICAgIHJldHVybiBVUkwo
Y29udGV4dC5iYXNlVVJMLCB1cmwsIGNvbnRleHQuY2hhcnNldCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRp
b21zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
ZGlvbXMuaAkocmV2aXNpb24gMjA2MDA3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJJZGlvbXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFVSTDsKKyAgICAKIC8vIFNwYWNlIGNoYXJhY3RlcnMg
YXMgZGVmaW5lZCBieSB0aGUgQ1NTIHNwZWNpZmljYXRpb24uCiAvLyBodHRwOi8vd3d3LnczLm9y
Zy9UUi9jc3MzLXN5bnRheC8jd2hpdGVzcGFjZQogaW5saW5lIGJvb2wgaXNDU1NTcGFjZShVQ2hh
ciBjKQpAQCAtNjIsNyArNjQsOSBAQCBib29sIGlzTmFtZUNvZGVQb2ludChDaGFyYWN0ZXJUeXBl
IGMpCiB2b2lkIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlSW5QbGFjZShTdHJpbmdWaWV3Jik7CiAK
IGJvb2wgaXNWYWx1ZUFsbG93ZWRJbk1vZGUodW5zaWduZWQgc2hvcnQsIENTU1BhcnNlck1vZGUp
OwotICAgIAorCitVUkwgY29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsIGNvbnN0
IFN0cmluZyYgdXJsKTsKKyAgIAogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyTW9kZS5oCShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyAr
NjIsNyBAQCBpbmxpbmUgYm9vbCBpc1VBU2hlZXRCZWhhdmlvcihDU1NQYXJzZXJNCiAgICAgcmV0
dXJuIG1vZGUgPT0gVUFTaGVldE1vZGU7CiB9CiAKLWlubGluZSBib29sIGlzVW5pdExlc3NMZW5n
dGhQYXJzaW5nRW5hYmxlZEZvck1vZGUoQ1NTUGFyc2VyTW9kZSBtb2RlKQoraW5saW5lIGJvb2wg
aXNVbml0TGVzc1ZhbHVlUGFyc2luZ0VuYWJsZWRGb3JNb2RlKENTU1BhcnNlck1vZGUgbW9kZSkK
IHsKICAgICByZXR1cm4gbW9kZSA9PSBIVE1MQXR0cmlidXRlTW9kZSB8fCBtb2RlID09IFNWR0F0
dHJpYnV0ZU1vZGU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
clRva2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmNwcAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJUb2tlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw3ICsxODksNyBA
QCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIGNzc1ByaW1pdGl2CiAgICAgICAgIHN3aXRj
aCAodG9BU0NJSUxvd2VyKGRhdGFbMF0pKSB7CiAgICAgICAgIGNhc2UgJ18nOgogICAgICAgICAg
ICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAnXycgJiYgdG9BU0NJSUxvd2VyKGRhdGFb
Ml0pID09ICdxJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVszXSkgPT0gJ2UnICYmIHRvQVNDSUlMb3dl
cihkYXRhWzRdKSA9PSAnbScpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXM6OkNTU19FTVM7IC8vIEZJWE1FLU5FV1BBUlNFUjogTmVlZCBxdWlya3kg
ZW1zLgorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfUVVJUktZX0VNUzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFs
dWVzLmNwcAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQwogICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHJpbmcsIHByaW1pdGl2ZVVuaXQpOwogICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOgogICAgIGNhc2UgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19FTVM6CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1FVSVJLWV9F
TVM6CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzoKICAgICBjYXNlIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUFg6CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NN
OgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmNwcAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSwyMCArMzEsMTcgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCIK
IAogI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKLS8vIEZJWE1FLU5FV1BBUlNFUjog
I2luY2x1ZGUgIkNTU0NvbG9yVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDcm9zc2ZhZGVWYWx1ZS5o
IgogI2luY2x1ZGUgIkNTU0dyYWRpZW50VmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZVNldFZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgotLy8gRklYTUUtTkVXUEFSU0VSOiAj
aW5jbHVkZSAiQ1NTUGFpbnRWYWx1ZS5oIgotLy8gRklYTUVfTkVXUEFSU0VSOiAjaW5jbHVkZSAi
Q1NTU3RyaW5nVmFsdWUuaCIKLS8vIEZJWE1FLU5FV1BBUlNFUjogI2luY2x1ZGUgIkNTU1VSSVZh
bHVlLmgiCi0vLyBGSVhNRV9ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKKyNp
bmNsdWRlICJDU1NQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKKyNp
bmNsdWRlICJQYWlyLmgiCisjaW5jbHVkZSAiU3R5bGVDb2xvci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLS8qIEZJWE1FLU5FV1BBUlNFUjogRGlzYWJsZSBmb3Igbm93LgotIAogbmFtZXNw
YWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVycyB7CiAKIGJvb2wgY29uc3VtZUNvbW1hSW5jbHVk
aW5nV2hpdGVzcGFjZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAgLTg4LDE5ICs4NSwx
OSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgY29uc3QgQ1NTQ2FsY1ZhbHVlKiB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsY1ZhbHVlLmdldCgpOyB9Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IGNvbnN1bWVWYWx1ZSgpCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lVmFs
dWUoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9jYWxjVmFsdWUucmVsZWFzZSgpKTsKICAg
ICB9Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVOdW1iZXIoKQorICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcigpCiAgICAgewogICAgICAgICBpZiAoIW1f
Y2FsY1ZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fc291cmNl
UmFuZ2UgPSBtX3JhbmdlOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGUgdW5p
dFR5cGUgPSBtX2NhbGNWYWx1ZS0+aXNJbnQoKSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZTo6SW50ZWdlciA6IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyOworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXRUeXBlID0gbV9jYWxjVmFsdWUtPmlz
SW50KCkgPyBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEFSU0VSX0lOVEVHRVIg
OiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTlVNQkVSOwogICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKSwg
dW5pdFR5cGUpOwogICAgIH0KIApAQCAtMTE2LDE2ICsxMTMsMTYgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBDU1NQYXJzZXJUb2tlblJhbmdlJiBtX3NvdXJjZVJhbmdlOwogICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgbV9yYW5nZTsKLSAgICBNZW1iZXI8Q1NTQ2FsY1ZhbHVlPiBtX2NhbGNWYWx1
ZTsKKyAgICBSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBtX2NhbGNWYWx1ZTsKIH07CiAKLUNTU1ByaW1p
dGl2ZVZhbHVlKiBjb25zdW1lSW50ZWdlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgZG91
YmxlIG1pbmltdW1WYWx1ZSkKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUludGVn
ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGRvdWJsZSBtaW5pbXVtVmFsdWUpCiB7CiAg
ICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwogICAgIGlmICh0
b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsKICAgICAgICAgaWYgKHRva2VuLm51bWVyaWNW
YWx1ZVR5cGUoKSA9PSBOdW1iZXJWYWx1ZVR5cGUgfHwgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCBt
aW5pbXVtVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKS5udW1lcmljVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpJbnRlZ2Vy
KTsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlczo6Q1NTX1BBUlNFUl9JTlRFR0VSKTsKICAgICB9CiAgICAgQ2FsY1BhcnNlciBj
YWxjUGFyc2VyKHJhbmdlKTsKICAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlv
biA9IGNhbGNQYXJzZXIudmFsdWUoKSkgewpAQCAtMTM5LDcgKzEzNiw3IEBAIENTU1ByaW1pdGl2
ZVZhbHVlKiBjb25zdW1lSW50ZWdlcihDU1NQYXIKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
Q1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQb3NpdGl2ZUlu
dGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgcmV0dXJuIGNvbnN1bWVJ
bnRlZ2VyKHJhbmdlLCAxKTsKIH0KQEAgLTE1NSw3ICsxNTIsNyBAQCBib29sIGNvbnN1bWVOdW1i
ZXJSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nCiB9CiAKIC8vIEZJWE1FOiBXb3JrIG91dCBpZiB0aGlz
IGNhbiBqdXN0IGNhbGwgY29uc3VtZU51bWJlclJhdwotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1
bWVOdW1iZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5n
ZSkKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcihDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlKQogewogICAgIGNvbnN0IENTU1Bh
cnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09
IE51bWJlclRva2VuKSB7CkBAIC0xNzQsMzggKzE3MSwzNyBAQCBDU1NQcmltaXRpdmVWYWx1ZSog
Y29uc3VtZU51bWJlcihDU1NQYXJzCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWlubGluZSBi
b29sIHNob3VsZEFjY2VwdFVuaXRsZXNzTGVuZ3RoKGRvdWJsZSB2YWx1ZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQoraW5saW5lIGJvb2wgc2hv
dWxkQWNjZXB0VW5pdGxlc3NWYWx1ZShkb3VibGUgdmFsdWUsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKIHsKICAgICAvLyBGSVhNRTogUHJlc2Vu
dGF0aW9uYWwgSFRNTCBhdHRyaWJ1dGVzIHNob3VsZG4ndCB1c2UgdGhlIENTUyBwYXJzZXIgZm9y
IGxlbmd0aHMKICAgICByZXR1cm4gdmFsdWUgPT0gMAotICAgICAgICB8fCBpc1VuaXRMZXNzTGVu
Z3RoUGFyc2luZ0VuYWJsZWRGb3JNb2RlKGNzc1BhcnNlck1vZGUpCisgICAgICAgIHx8IGlzVW5p
dExlc3NWYWx1ZVBhcnNpbmdFbmFibGVkRm9yTW9kZShjc3NQYXJzZXJNb2RlKQogICAgICAgICB8
fCAoY3NzUGFyc2VyTW9kZSA9PSBIVE1MUXVpcmtzTW9kZSAmJiB1bml0bGVzcyA9PSBVbml0bGVz
c1F1aXJrOjpBbGxvdyk7CiB9CiAKLUNTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTGVuZ3RoKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZh
bHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY29uc3VtZUxlbmd0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRs
ZXNzUXVpcmsgdW5pdGxlc3MpCiB7CiAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0g
cmFuZ2UucGVlaygpOwogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsK
ICAgICAgICAgc3dpdGNoICh0b2tlbi51bml0VHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpRdWlya3lFbXM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1FVSVJLWV9FTVM6CiAgICAgICAgICAgICBpZiAoY3Nz
UGFyc2VyTW9kZSAhPSBVQVNoZWV0TW9kZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6RW1zOgotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6UmVtczoKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNo
czoKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkV4czoKLSAgICAg
ICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVsczoKLSAgICAgICAgY2Fz
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNlbnRpbWV0ZXJzOgotICAgICAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TWlsbGltZXRlcnM6Ci0gICAgICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpJbmNoZXM6Ci0gICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQb2ludHM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpQaWNhczoKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGU6OlVzZXJVbml0czoKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OlZpZXdwb3J0V2lkdGg6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpWaWV3cG9ydEhlaWdodDoKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGU6OlZpZXdwb3J0TWluOgotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZTo6Vmlld3BvcnRNYXg6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6Q1NTX0VNUzoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGVzOjpDU1NfUkVNUzoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfQ0hTOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNT
U19FWFM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BY
OgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19DTToKKyAg
ICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTU06CisgICAgICAg
IGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0lOOgorICAgICAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19QVDoKKyAgICAgICAgY2FzZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1ZXOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXM6OkNTU19WSDoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzOjpDU1NfVk1JTjoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzOjpDU1NfVk1BWDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTUsMTIgKzIxMSwxMCBAQCBDU1NQcmlt
aXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQYXJzCiAgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVt
ZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOwogICAgIH0KICAgICBpZiAodG9rZW4udHlw
ZSgpID09IE51bWJlclRva2VuKSB7Ci0gICAgICAgIGlmICghc2hvdWxkQWNjZXB0VW5pdGxlc3NM
ZW5ndGgodG9rZW4ubnVtZXJpY1ZhbHVlKCksIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKQorICAg
ICAgICBpZiAoIXNob3VsZEFjY2VwdFVuaXRsZXNzVmFsdWUodG9rZW4ubnVtZXJpY1ZhbHVlKCks
IGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKQogICAgICAgICAgICAgfHwgKHZhbHVlUmFuZ2UgPT0g
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlIHVuaXRUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHM7Ci0gICAg
ICAgIGlmIChjc3NQYXJzZXJNb2RlID09IFNWR0F0dHJpYnV0ZU1vZGUpCi0gICAgICAgICAgICB1
bml0VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6VXNlclVuaXRzOworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXRUeXBlID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlczo6Q1NTX1BYOwogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgp
LCB1bml0VHlwZSk7CiAgICAgfQogICAgIGlmIChjc3NQYXJzZXJNb2RlID09IFNWR0F0dHJpYnV0
ZU1vZGUpCkBAIC0yMzEsMTMgKzIyNSwxMyBAQCBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxl
bmd0aChDU1NQYXJzCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUNTU1ByaW1pdGl2ZVZhbHVl
KiBjb25zdW1lUGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2
YWx1ZVJhbmdlKQorUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUGVyY2VudChDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlKQogewogICAgIGNv
bnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4u
dHlwZSgpID09IFBlcmNlbnRhZ2VUb2tlbikgewogICAgICAgICBpZiAodmFsdWVSYW5nZSA9PSBW
YWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19Q
RVJDRU5UQUdFKTsKICAgICB9CiAgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCB2YWx1
ZVJhbmdlKTsKICAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQ
YXJzZXIudmFsdWUoKSkgewpAQCAtMjQ3LDcgKzI0MSw3IEBAIENTU1ByaW1pdGl2ZVZhbHVlKiBj
b25zdW1lUGVyY2VudChDU1NQYXIKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBjYW5D
b25zdW1lQ2FsY1ZhbHVlKENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnksIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSkKK3N0YXRpYyBib29sIGNhbkNvbnN1bWVDYWxjVmFsdWUoQ2FsY3Vs
YXRpb25DYXRlZ29yeSBjYXRlZ29yeSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogewog
ICAgIGlmIChjYXRlZ29yeSA9PSBDYWxjTGVuZ3RoIHx8IGNhdGVnb3J5ID09IENhbGNQZXJjZW50
IHx8IGNhdGVnb3J5ID09IENhbGNQZXJjZW50TGVuZ3RoKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTI1NSwxMyArMjQ5LDEzIEBAIGJvb2wgY2FuQ29uc3VtZUNhbGNWYWx1ZShDYWxjdWxhdGlv
bkNhdGUKICAgICBpZiAoY3NzUGFyc2VyTW9kZSAhPSBTVkdBdHRyaWJ1dGVNb2RlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoY2F0ZWdvcnkgPT0gQ2FsY051bWJlciB8fCBjYXRl
Z29yeSA9PSBDYWxjUGVyY2VudE51bWJlciB8fCBjYXRlZ29yeSA9PSBDYWxjTGVuZ3RoTnVtYmVy
IHx8IGNhdGVnb3J5ID09IENhbGNQZXJjZW50TGVuZ3RoTnVtYmVyKQorICAgIGlmIChjYXRlZ29y
eSA9PSBDYWxjTnVtYmVyIHx8IGNhdGVnb3J5ID09IENhbGNQZXJjZW50TnVtYmVyKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQ1NTUHJpbWl0aXZlVmFs
dWUqIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlLCBVbml0bGVz
c1F1aXJrIHVuaXRsZXNzKQorUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykK
IHsKICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAg
aWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gTnVt
YmVyVG9rZW4pCkBAIC0yNzYsMjQgKzI3MCwyNSBAQCBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3Vt
ZUxlbmd0aE9yUGVyY2VuCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUNTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lQW5nbGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVBbmdsZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQogewog
ICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAo
dG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuKSB7CiAgICAgICAgIHN3aXRjaCAodG9rZW4u
dW5pdFR5cGUoKSkgewotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6
RGVncmVlczoKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlJhZGlh
bnM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpHcmFkaWFuczoK
LSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlR1cm5zOgorICAgICAg
ICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19ERUc6CisgICAgICAgIGNh
c2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1JBRDoKKyAgICAgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfR1JBRDoKKyAgICAgICAgY2FzZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfVFVSTjoKICAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHRv
a2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA9PSAwKSB7
CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiAmJiBzaG91bGRBY2NlcHRVbml0
bGVzc1ZhbHVlKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcykp
IHsKICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKLSAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpEZWdyZWVzKTsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0RFRyk7CiAgICAgfQorCiAg
ICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKICAgICBpZiAo
Y29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgewog
ICAgICAgICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgPT0gQ2FsY0FuZ2xlKQpAQCAtMzAy
LDE0ICsyOTcsMTcgQEAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVBbmdsZShDU1NQYXJzZQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVRpbWUo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKK1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVRpbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlLCBV
bml0bGVzc1F1aXJrIHVuaXRsZXNzKQogewogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tl
biA9IHJhbmdlLnBlZWsoKTsKLSAgICBpZiAodG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2Vu
KSB7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0ID0gdG9rZW4udW5pdFR5
cGUoKTsKKyAgICBib29sIGFjY2VwdFVuaXRsZXNzID0gdG9rZW4udHlwZSgpID09IE51bWJlclRv
a2VuICYmIHNob3VsZEFjY2VwdFVuaXRsZXNzVmFsdWUodG9rZW4ubnVtZXJpY1ZhbHVlKCksIGNz
c1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBpZiAoYWNjZXB0VW5pdGxlc3MpCisgICAgICAg
IHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTVM7CisgICAgaWYgKHRv
a2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbiB8fCBhY2NlcHRVbml0bGVzcykgewogICAgICAg
ICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJp
Y1ZhbHVlKCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZSB1bml0ID0gdG9rZW4udW5pdFR5cGUoKTsKLSAgICAgICAg
aWYgKHVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpNaWxsaXNlY29uZHMgfHwg
dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlNlY29uZHMpCisgICAgICAgIGlm
ICh1bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19NUyB8fCB1bml0ID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19TKQogICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKS5udW1lcmljVmFsdWUoKSwgdG9rZW4udW5pdFR5cGUoKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KQEAgLTMyMSwzMiArMzE5LDMyIEBAIENTU1ByaW1pdGl2ZVZhbHVlKiBj
b25zdW1lVGltZShDU1NQYXJzZXIKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUlkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQogewogICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkpOwogfQog
Ci1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUlkZW50UmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1ZhbHVlSUQgbG93ZXIsIENTU1ZhbHVlSUQgdXBwZXIpCitSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJZGVudFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NWYWx1ZUlEIGxvd2VyLCBDU1NWYWx1ZUlEIHVwcGVyKQogewogICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA8IGxvd2VyIHx8IHJhbmdlLnBlZWsoKS5pZCgpID4gdXBwZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwogfQog
Ci1DU1NDdXN0b21JZGVudFZhbHVlKiBjb25zdW1lQ3VzdG9tSWRlbnQoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCitSZWZQdHI8Q1NTQ3VzdG9tSWRlbnRWYWx1ZT4gY29uc3VtZUN1c3RvbUlk
ZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChyYW5nZS5wZWVrKCku
dHlwZSgpICE9IElkZW50VG9rZW4gfHwgaXNDU1NXaWRlS2V5d29yZChyYW5nZS5wZWVrKCkuaWQo
KSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBDU1NDdXN0b21JZGVudFZh
bHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRv
U3RyaW5nKCkpOwogfQogCi1DU1NTdHJpbmdWYWx1ZSogY29uc3VtZVN0cmluZyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVN0cmlu
ZyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5
cGUoKSAhPSBTdHJpbmdUb2tlbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IENTU1N0cmluZ1ZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS52YWx1ZSgpLnRvU3RyaW5nKCkpOworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfU1RSSU5HKTsKIH0KIAogU3RyaW5n
VmlldyBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpA
QCAtMzcxLDEyICszNjksMTIgQEAgU3RyaW5nVmlldyBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KENT
U1BhcgogICAgIHJldHVybiBTdHJpbmdWaWV3KCk7CiB9CiAKLUNTU1VSSVZhbHVlKiBjb25zdW1l
VXJsKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb25zdW1lVXJsKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIFN0cmluZ1Zp
ZXcgdXJsID0gY29uc3VtZVVybEFzU3RyaW5nVmlldyhyYW5nZSk7CiAgICAgaWYgKHVybC5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENTU1VSSVZhbHVlOjpj
cmVhdGUodXJsLnRvU3RyaW5nKCkpOworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHVybC50b1N0cmluZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfVVJJ
KTsKIH0KIAogc3RhdGljIGludCBjbGFtcFJHQkNvbXBvbmVudChjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSYgdmFsdWUpCkBAIC0zOTIsNyArMzkwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VSR0JQYXJh
bWV0ZXJzKENTU1BhcnNlcgogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgp
ID09IENTU1ZhbHVlUmdiIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVS
Z2JhKTsKICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFu
Z2UpOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb2xvclBhcmFtZXRlciA9IGNvbnN1bWVJbnRl
Z2VyKGFyZ3MpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29sb3JQYXJhbWV0ZXIg
PSBjb25zdW1lSW50ZWdlcihhcmdzKTsKICAgICBpZiAoIWNvbG9yUGFyYW1ldGVyKQogICAgICAg
ICBjb2xvclBhcmFtZXRlciA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOwog
ICAgIGlmICghY29sb3JQYXJhbWV0ZXIpCkBAIC00MjgsNyArNDI2LDcgQEAgc3RhdGljIGJvb2wg
cGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNlcgogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCku
ZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlSHNsIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkg
PT0gQ1NTVmFsdWVIc2xhKTsKICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1l
RnVuY3Rpb24ocmFuZ2UpOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBoc2xWYWx1ZSA9IGNvbnN1
bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBoc2xWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CiAgICAg
aWYgKCFoc2xWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRvdWJsZSBjb2xvckFy
cmF5WzNdOwpAQCAtNTAwLDcgKzQ5OCw3IEBAIHN0YXRpYyBib29sIHBhcnNlQ29sb3JGdW5jdGlv
bihDU1NQYXJzZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ1NTVmFsdWUqIGNvbnN1bWVDb2xv
cihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
LCBib29sIGFjY2VwdFF1aXJreUNvbG9ycykKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29u
c3VtZUNvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUsIGJvb2wgYWNjZXB0UXVpcmt5Q29sb3JzKQogewogICAgIENTU1ZhbHVlSUQgaWQg
PSByYW5nZS5wZWVrKCkuaWQoKTsKICAgICBpZiAoU3R5bGVDb2xvcjo6aXNDb2xvcktleXdvcmQo
aWQpKSB7CkBAIC01MTEsMTAgKzUwOSwxMCBAQCBDU1NWYWx1ZSogY29uc3VtZUNvbG9yKENTU1Bh
cnNlclRva2VuUmFuCiAgICAgUkdCQTMyIGNvbG9yID0gQ29sb3I6OnRyYW5zcGFyZW50OwogICAg
IGlmICghcGFyc2VIZXhDb2xvcihyYW5nZSwgY29sb3IsIGFjY2VwdFF1aXJreUNvbG9ycykgJiYg
IXBhcnNlQ29sb3JGdW5jdGlvbihyYW5nZSwgY29sb3IpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gQ1NTQ29sb3JWYWx1ZTo6Y3JlYXRlKGNvbG9yKTsKKyAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKGNvbG9yKTsKIH0KIAotc3RhdGljIENTU1By
aW1pdGl2ZVZhbHVlKiBjb25zdW1lUG9zaXRpb25Db21wb25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0
bGVzcykKK3N0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQb3NpdGlvbkNv
bXBvbmVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQogewogICAgIGlmIChyYW5nZS5wZWVrKCku
dHlwZSgpID09IElkZW50VG9rZW4pCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVMZWZ0LCBDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVCb3R0b20sIENTU1ZhbHVlUmlnaHQsIENTU1Zh
bHVlQ2VudGVyPihyYW5nZSk7CkBAIC01MzEsMzEgKzUyOSwzOCBAQCBzdGF0aWMgYm9vbCBpc1Zl
cnRpY2FsUG9zaXRpb25LZXl3b3JkT25sCiAgICAgcmV0dXJuIHZhbHVlLmlzVmFsdWVJRCgpICYm
ICh2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVUb3AgfHwgdmFsdWUuZ2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlQm90dG9tKTsKIH0KIAotc3RhdGljIHZvaWQgcG9zaXRpb25Gcm9tT25lVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVl
KiYgcmVzdWx0WSkKK3N0YXRpYyB2b2lkIHBvc2l0aW9uRnJvbU9uZVZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlJiB2YWx1ZSwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WCwgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkKIHsKLSAgICBib29sIHZhbHVlQXBwbGllc1Rv
WUF4aXNPbmx5ID0gaXNWZXJ0aWNhbFBvc2l0aW9uS2V5d29yZE9ubHkoKnZhbHVlKTsKLSAgICBy
ZXN1bHRYID0gdmFsdWU7CisgICAgYm9vbCB2YWx1ZUFwcGxpZXNUb1lBeGlzT25seSA9IGlzVmVy
dGljYWxQb3NpdGlvbktleXdvcmRPbmx5KHZhbHVlKTsKKyAgICByZXN1bHRYID0gJnZhbHVlOwog
ICAgIHJlc3VsdFkgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZUNlbnRlcik7CiAgICAgaWYgKHZhbHVlQXBwbGllc1RvWUF4aXNPbmx5KQogICAgICAgICBzdGQ6
OnN3YXAocmVzdWx0WCwgcmVzdWx0WSk7CiB9CiAKLXN0YXRpYyBib29sIHBvc2l0aW9uRnJvbVR3
b1ZhbHVlcyhDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUxLCBDU1NQcmltaXRpdmVWYWx1ZSogdmFs
dWUyLAotICAgIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiByZXN1bHRZKQorc3RhdGlj
IGJvb2wgcG9zaXRpb25Gcm9tVHdvVmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZTEsIENT
U1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZTIsCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYg
cmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkKIHsKLSAgICBib29s
IG11c3RPcmRlckFzWFkgPSBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTEp
IHx8IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTIpCi0gICAgICAgIHx8ICF2
YWx1ZTEtPmlzVmFsdWVJRCgpIHx8ICF2YWx1ZTItPmlzVmFsdWVJRCgpOwotICAgIGJvb2wgbXVz
dE9yZGVyQXNZWCA9IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTEpIHx8IGlz
SG9yaXpvbnRhbFBvc2l0aW9uS2V5d29yZE9ubHkoKnZhbHVlMik7CisgICAgYm9vbCBtdXN0T3Jk
ZXJBc1hZID0gaXNIb3Jpem9udGFsUG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZTEpIHx8IGlzVmVy
dGljYWxQb3NpdGlvbktleXdvcmRPbmx5KHZhbHVlMikKKyAgICAgICAgfHwgIXZhbHVlMS5pc1Zh
bHVlSUQoKSB8fCAhdmFsdWUyLmlzVmFsdWVJRCgpOworICAgIGJvb2wgbXVzdE9yZGVyQXNZWCA9
IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KHZhbHVlMSkgfHwgaXNIb3Jpem9udGFsUG9z
aXRpb25LZXl3b3JkT25seSh2YWx1ZTIpOwogICAgIGlmIChtdXN0T3JkZXJBc1hZICYmIG11c3RP
cmRlckFzWVgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHRYID0gdmFsdWUxOwot
ICAgIHJlc3VsdFkgPSB2YWx1ZTI7CisgICAgcmVzdWx0WCA9ICZ2YWx1ZTE7CisgICAgcmVzdWx0
WSA9ICZ2YWx1ZTI7CiAgICAgaWYgKG11c3RPcmRlckFzWVgpCiAgICAgICAgIHN0ZDo6c3dhcChy
ZXN1bHRYLCByZXN1bHRZKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcG9z
aXRpb25Gcm9tVGhyZWVPckZvdXJWYWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqKiB2YWx1ZXMsIENT
U1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiByZXN1bHRZKQorICAgIAordGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4KK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1p
dGl2ZVZhbHVlUGFpcihBcmdzJiYuLi4gYXJncykKK3sKKyAgICByZXR1cm4gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKSk7Cit9CisKK3N0YXRpYyBib29sIHBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFs
dWVzKENTU1ByaW1pdGl2ZVZhbHVlKiogdmFsdWVzLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
JiByZXN1bHRYLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiByZXN1bHRZKQogewogICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBjZW50ZXIgPSBudWxscHRyOwogICAgIGZvciAoaW50IGkgPSAwOyB2
YWx1ZXNbaV07IGkrKykgewpAQCAtNTcxLDEyICs1NzYsMTEgQEAgc3RhdGljIGJvb2wgcG9zaXRp
b25Gcm9tVGhyZWVPckZvdXJWYWx1ZQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IAotICAgICAgICBDU1NWYWx1ZSogcmVzdWx0ID0gbnVsbHB0cjsKLSAgICAgICAgaWYgKHZhbHVl
c1tpICsgMV0gJiYgIXZhbHVlc1tpICsgMV0tPmlzVmFsdWVJRCgpKSB7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShjdXJyZW50VmFsdWUsIHZhbHVlc1srK2ldLCBD
U1NWYWx1ZVBhaXI6OktlZXBJZGVudGljYWxWYWx1ZXMpOwotICAgICAgICB9IGVsc2UgeworICAg
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdCA9IG51bGxwdHI7CisgICAgICAg
IGlmICh2YWx1ZXNbaSArIDFdICYmICF2YWx1ZXNbaSArIDFdLT5pc1ZhbHVlSUQoKSkKKyAgICAg
ICAgICAgIHJlc3VsdCA9IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihjdXJyZW50VmFsdWUsIHZh
bHVlc1srK2ldKTsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVudFZh
bHVlOwotICAgICAgICB9CiAKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9
PSBDU1NWYWx1ZVJpZ2h0KSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0WCkKQEAgLTYwNiw3NCAr
NjEwLDc0IEBAIHN0YXRpYyBib29sIHBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFsdWUKIAogLy8g
RklYTUU6IFRoaXMgbWF5IGNvbnN1bWUgZnJvbSB0aGUgcmFuZ2UgdXBvbiBmYWlsdXJlLiBUaGUg
YmFja2dyb3VuZAogLy8gc2hvcnRoYW5kIHdvcmtzIGFyb3VuZCBpdCwgYnV0IHdlIHNob3VsZCBq
dXN0IGZpeCBpdCBoZXJlLgotYm9vbCBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0
bGVzcywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpCitib29sIGNvbnN1
bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+JiByZXN1bHRYLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiByZXN1bHRZKQogewotICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHZhbHVlMSA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9k
ZSwgdW5pdGxlc3MpOwogICAgIGlmICghdmFsdWUxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50
KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiB2YWx1ZTIgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIHVuaXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMikgewotICAgICAgICBwb3NpdGlvbkZy
b21PbmVWYWx1ZSh2YWx1ZTEsIHJlc3VsdFgsIHJlc3VsdFkpOworICAgICAgICBwb3NpdGlvbkZy
b21PbmVWYWx1ZSgqdmFsdWUxLCByZXN1bHRYLCByZXN1bHRZKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMyA9IGNvbnN1bWVQb3Np
dGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWUzID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJh
bmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgaWYgKCF2YWx1ZTMpCi0gICAgICAg
IHJldHVybiBwb3NpdGlvbkZyb21Ud29WYWx1ZXModmFsdWUxLCB2YWx1ZTIsIHJlc3VsdFgsIHJl
c3VsdFkpOworICAgICAgICByZXR1cm4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKCp2YWx1ZTEsICp2
YWx1ZTIsIHJlc3VsdFgsIHJlc3VsdFkpOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVl
NCA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxl
c3MpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWU0ID0gY29uc3VtZVBvc2l0
aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHZhbHVlc1s1XTsKLSAgICB2YWx1ZXNbMF0gPSB2YWx1ZTE7Ci0gICAgdmFs
dWVzWzFdID0gdmFsdWUyOwotICAgIHZhbHVlc1syXSA9IHZhbHVlMzsKLSAgICB2YWx1ZXNbM10g
PSB2YWx1ZTQ7CisgICAgdmFsdWVzWzBdID0gdmFsdWUxLmdldCgpOworICAgIHZhbHVlc1sxXSA9
IHZhbHVlMi5nZXQoKTsKKyAgICB2YWx1ZXNbMl0gPSB2YWx1ZTMuZ2V0KCk7CisgICAgdmFsdWVz
WzNdID0gdmFsdWU0LmdldCgpOwogICAgIHZhbHVlc1s0XSA9IG51bGxwdHI7CiAgICAgcmV0dXJu
IHBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFsdWVzKHZhbHVlcywgcmVzdWx0WCwgcmVzdWx0WSk7
CiB9CiAKLUNTU1ZhbHVlUGFpciogY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxl
c3MpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1
aXJrIHVuaXRsZXNzKQogewotICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKLSAgICBD
U1NWYWx1ZSogcmVzdWx0WSA9IG51bGxwdHI7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiByZXN1bHRYOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0WTsKICAgICBp
ZiAoY29uc3VtZVBvc2l0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcywgcmVzdWx0
WCwgcmVzdWx0WSkpCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShyZXN1bHRY
LCByZXN1bHRZLCBDU1NWYWx1ZVBhaXI6OktlZXBJZGVudGljYWxWYWx1ZXMpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHJlc3VsdFgucmVsZWFzZU5vbk51bGwoKSwg
cmVzdWx0WS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9v
bCBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBD
U1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK2Jvb2wgY29uc3VtZU9uZU9y
VHdvVmFsdWVkUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiYgcmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkK
IHsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUxID0gY29uc3VtZVBvc2l0aW9uQ29tcG9u
ZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1Bh
cnNlck1vZGUsIHVuaXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTIgPSBjb25zdW1lUG9zaXRpb25Db21w
b25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHZhbHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3Nz
UGFyc2VyTW9kZSwgdW5pdGxlc3MpOwogICAgIGlmICghdmFsdWUyKSB7Ci0gICAgICAgIHBvc2l0
aW9uRnJvbU9uZVZhbHVlKHZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7CisgICAgICAgIHBvc2l0
aW9uRnJvbU9uZVZhbHVlKCp2YWx1ZTEsIHJlc3VsdFgsIHJlc3VsdFkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9Ci0gICAgcmV0dXJuIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyh2YWx1ZTEs
IHZhbHVlMiwgcmVzdWx0WCwgcmVzdWx0WSk7CisgICAgcmV0dXJuIHBvc2l0aW9uRnJvbVR3b1Zh
bHVlcygqdmFsdWUxLCAqdmFsdWUyLCByZXN1bHRYLCByZXN1bHRZKTsKIH0KIAogLy8gVGhpcyBz
aG91bGQgZ28gYXdheSBvbmNlIHdlIGRyb3Agc3VwcG9ydCBmb3IgLXdlYmtpdC1ncmFkaWVudAot
c3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgYm9vbCBob3Jpem9udGFsKQorc3RhdGljIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KENTU1Bh
cnNlclRva2VuUmFuZ2UmIGFyZ3MsIGJvb2wgaG9yaXpvbnRhbCkKIHsKICAgICBpZiAoYXJncy5w
ZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pIHsKICAgICAgICAgaWYgKChob3Jpem9udGFsICYm
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQ+KGFyZ3MpKSB8fCAoIWhvcml6b250YWwgJiYgY29u
c3VtZUlkZW50PENTU1ZhbHVlVG9wPihhcmdzKSkpCi0gICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZSgwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJj
ZW50YWdlKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAu
LCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAg
IGlmICgoaG9yaXpvbnRhbCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSaWdodD4oYXJncykpIHx8
ICghaG9yaXpvbnRhbCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVCb3R0b20+KGFyZ3MpKSkKLSAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEwMC4sIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxMDAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDZW50
ZXI+KGFyZ3MpKQotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
NTAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoNTAuLCBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmVzdWx0ID0gY29uc3VtZVBlcmNlbnQoYXJn
cywgVmFsdWVSYW5nZUFsbCk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQg
PSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKICAgICBpZiAoIXJlc3VsdCkK
ICAgICAgICAgcmVzdWx0ID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiAvLyBVc2VkIHRvIHBhcnNlIGNvbG9ycyBmb3IgLXdlYmtp
dC1ncmFkaWVudCguLi4pLgotc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRp
ZW50U3RvcENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSkKK3N0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVEZXBy
ZWNhdGVkR3JhZGllbnRTdG9wQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogewogICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpID09IENT
U1ZhbHVlQ3VycmVudGNvbG9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY5MSw3ICs2
OTUsNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50Q29sCiAgICAgaWYg
KGlkID09IENTU1ZhbHVlRnJvbSB8fCBpZCA9PSBDU1NWYWx1ZVRvKSB7CiAgICAgICAgIHBvc2l0
aW9uID0gKGlkID09IENTU1ZhbHVlRnJvbSkgPyAwIDogMTsKICAgICB9IGVsc2UgewotICAgICAg
ICBEQ0hFQ0soaWQgPT0gQ1NTVmFsdWVDb2xvclN0b3ApOworICAgICAgICBBU1NFUlQoaWQgPT0g
Q1NTVmFsdWVDb2xvclN0b3ApOwogICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgYXJnID0g
YXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoYXJnLnR5cGUo
KSA9PSBQZXJjZW50YWdlVG9rZW4pCiAgICAgICAgICAgICBwb3NpdGlvbiA9IGFyZy5udW1lcmlj
VmFsdWUoKSAvIDEwMC4wOwpAQCAtNzA0LDE0ICs3MDgsMTQgQEAgc3RhdGljIGJvb2wgY29uc3Vt
ZURlcHJlY2F0ZWRHcmFkaWVudENvbAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIHN0b3AubV9wb3NpdGlvbiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocG9zaXRp
b24sIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICBzdG9wLm1fcG9z
aXRpb24gPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHBvc2l0aW9uLCBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGVzOjpDU1NfTlVNQkVSKTsKICAgICBzdG9wLm1fY29sb3IgPSBjb25zdW1l
RGVwcmVjYXRlZEdyYWRpZW50U3RvcENvbG9yKGFyZ3MsIGNzc1BhcnNlck1vZGUpOwogICAgIHJl
dHVybiBzdG9wLm1fY29sb3IgJiYgYXJncy5hdEVuZCgpOwogfQogCi1zdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3Vt
ZURlcHJlY2F0ZWRHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUpCiB7Ci0gICAgQ1NTR3JhZGllbnRWYWx1ZSogcmVzdWx0ID0gbnVs
bHB0cjsKKyAgICBSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gcmVzdWx0OwogICAgIENTU1ZhbHVl
SUQgaWQgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKICAgICBib29s
IGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50ID0gKGlkID09IENTU1ZhbHVlUmFkaWFsKTsKICAg
ICBpZiAoaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpCkBAIC03MjEsNDMgKzcyNSw0MyBAQCBz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllCiAgICAgaWYgKCFyZXN1bHQg
fHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBvaW50ID0gY29uc3VtZURlcHJl
Y2F0ZWRHcmFkaWVudFBvaW50KGFyZ3MsIHRydWUpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gcG9pbnQgPSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoYXJncywgdHJ1ZSk7
CiAgICAgaWYgKCFwb2ludCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmVzdWx0LT5z
ZXRGaXJzdFgocG9pbnQpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RYKFdURk1vdmUocG9pbnQpKTsK
ICAgICBwb2ludCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChhcmdzLCBmYWxzZSk7
CiAgICAgaWYgKCFwb2ludCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmVzdWx0LT5z
ZXRGaXJzdFkocG9pbnQpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RZKFdURk1vdmUocG9pbnQpKTsK
IAogICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBGb3IgcmFkaWFsIGdyYWRpZW50cyBvbmx5LCB3
ZSBub3cgZXhwZWN0IGEgbnVtZXJpYyByYWRpdXMuCiAgICAgaWYgKGlzRGVwcmVjYXRlZFJhZGlh
bEdyYWRpZW50KSB7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMgPSBjb25zdW1l
TnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHJhZGl1cyA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CiAgICAg
ICAgIGlmICghcmFkaXVzIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3Mp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHRvQ1NTUmFkaWFsR3JhZGll
bnRWYWx1ZShyZXN1bHQpLT5zZXRGaXJzdFJhZGl1cyhyYWRpdXMpOworICAgICAgICBkb3duY2Fz
dDxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPihyZXN1bHQuZ2V0KCkpLT5zZXRGaXJzdFJhZGl1cyhX
VEZNb3ZlKHJhZGl1cykpOwogICAgIH0KIAogICAgIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRH
cmFkaWVudFBvaW50KGFyZ3MsIHRydWUpOwogICAgIGlmICghcG9pbnQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJlc3VsdC0+c2V0U2Vjb25kWChwb2ludCk7CisgICAgcmVzdWx0LT5z
ZXRTZWNvbmRYKFdURk1vdmUocG9pbnQpKTsKICAgICBwb2ludCA9IGNvbnN1bWVEZXByZWNhdGVk
R3JhZGllbnRQb2ludChhcmdzLCBmYWxzZSk7CiAgICAgaWYgKCFwb2ludCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRZKHBvaW50KTsKKyAgICByZXN1bHQt
PnNldFNlY29uZFkoV1RGTW92ZShwb2ludCkpOwogCiAgICAgLy8gRm9yIHJhZGlhbCBncmFkaWVu
dHMgb25seSwgd2Ugbm93IGV4cGVjdCB0aGUgc2Vjb25kIHJhZGl1cy4KICAgICBpZiAoaXNEZXBy
ZWNhdGVkUmFkaWFsR3JhZGllbnQpIHsKICAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFu
Z2VBbGwpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cyA9IGNvbnN1
bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgIGlmICghcmFkaXVzKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHRvQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZShyZXN1bHQpLT5zZXRTZWNvbmRSYWRpdXMocmFkaXVzKTsKKyAgICAgICAgZG93bmNhc3Q8Q1NT
UmFkaWFsR3JhZGllbnRWYWx1ZT4ocmVzdWx0LmdldCgpKS0+c2V0U2Vjb25kUmFkaXVzKFdURk1v
dmUocmFkaXVzKSk7CiAgICAgfQogCiAgICAgQ1NTR3JhZGllbnRDb2xvclN0b3Agc3RvcDsKQEAg
LTc5Nyw1NiArODAxLDU2IEBAIHN0YXRpYyBib29sIGNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMo
Q1MKICAgICByZXR1cm4gZ3JhZGllbnQtPnN0b3BDb3VudCgpID49IDI7CiB9CiAKLXN0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJh
bmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0
IHJlcGVhdGluZykKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkUmFk
aWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlLCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcpCiB7Ci0gICAgQ1NTUmFkaWFs
R3JhZGllbnRWYWx1ZSogcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJl
cGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCk7Ci0gICAgQ1NTVmFsdWUqIGNlbnRl
clggPSBudWxscHRyOwotICAgIENTU1ZhbHVlKiBjZW50ZXJZID0gbnVsbHB0cjsKKyAgICBSZWZQ
dHI8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCk7CisgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50ZXJYOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gY2VudGVyWTsKICAgICBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihhcmdzLCBj
c3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIGNlbnRlclgsIGNlbnRlclkpOwog
ICAgIGlmICgoY2VudGVyWCB8fCBjZW50ZXJZKSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hp
dGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQtPnNl
dEZpcnN0WCh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclgpKTsKLSAgICByZXN1bHQtPnNldFNl
Y29uZFgodG9DU1NQcmltaXRpdmVWYWx1ZShjZW50ZXJYKSk7Ci0gICAgcmVzdWx0LT5zZXRGaXJz
dFkodG9DU1NQcmltaXRpdmVWYWx1ZShjZW50ZXJZKSk7Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRZ
KHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWSkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RYKFdU
Rk1vdmUoY2VudGVyWCkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RZKFdURk1vdmUoY2VudGVyWSkp
OworICAgIHJlc3VsdC0+c2V0U2Vjb25kWChXVEZNb3ZlKGNlbnRlclgpKTsKKyAgICByZXN1bHQt
PnNldFNlY29uZFkoV1RGTW92ZShjZW50ZXJZKSk7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSog
c2hhcGUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDaXJjbGUsIENTU1ZhbHVlRWxsaXBzZT4oYXJn
cyk7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNpemVLZXl3b3JkID0gY29uc3VtZUlkZW50PENT
U1ZhbHVlQ2xvc2VzdFNpZGUsIENTU1ZhbHVlQ2xvc2VzdENvcm5lciwgQ1NTVmFsdWVGYXJ0aGVz
dFNpZGUsIENTU1ZhbHVlRmFydGhlc3RDb3JuZXIsIENTU1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVD
b3Zlcj4oYXJncyk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzaGFwZSA9IGNvbnN1
bWVJZGVudDxDU1NWYWx1ZUNpcmNsZSwgQ1NTVmFsdWVFbGxpcHNlPihhcmdzKTsKKyAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNpemVLZXl3b3JkID0gY29uc3VtZUlkZW50PENTU1ZhbHVl
Q2xvc2VzdFNpZGUsIENTU1ZhbHVlQ2xvc2VzdENvcm5lciwgQ1NTVmFsdWVGYXJ0aGVzdFNpZGUs
IENTU1ZhbHVlRmFydGhlc3RDb3JuZXIsIENTU1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4o
YXJncyk7CiAgICAgaWYgKCFzaGFwZSkKICAgICAgICAgc2hhcGUgPSBjb25zdW1lSWRlbnQ8Q1NT
VmFsdWVDaXJjbGUsIENTU1ZhbHVlRWxsaXBzZT4oYXJncyk7Ci0gICAgcmVzdWx0LT5zZXRTaGFw
ZShzaGFwZSk7Ci0gICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihzaXplS2V5d29yZCk7Cisg
ICAgcmVzdWx0LT5zZXRTaGFwZShzaGFwZS5nZXQoKSk7CisgICAgcmVzdWx0LT5zZXRTaXppbmdC
ZWhhdmlvcihzaXplS2V5d29yZC5nZXQoKSk7CiAKICAgICAvLyBPciwgdHdvIGxlbmd0aHMgb3Ig
cGVyY2VudGFnZXMKICAgICBpZiAoIXNoYXBlICYmICFzaXplS2V5d29yZCkgewotICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFNpemUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50
KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOwotICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogdmVydGljYWxTaXplID0gbnVsbHB0cjsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBob3Jpem9udGFsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gdmVydGljYWxTaXplOwogICAgICAgICBpZiAoaG9yaXpvbnRhbFNpemUpIHsKICAg
ICAgICAgICAgIHZlcnRpY2FsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgICAgICBpZiAoIXZlcnRpY2FsU2l6
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncyk7Ci0gICAgICAgICAgICByZXN1bHQtPnNldEVu
ZEhvcml6b250YWxTaXplKGhvcml6b250YWxTaXplKTsKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0
RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7CisgICAgICAgICAgICByZXN1bHQtPnNldEVu
ZEhvcml6b250YWxTaXplKGhvcml6b250YWxTaXplLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3Vs
dC0+c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZS5nZXQoKSk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3Mp
OwogICAgIH0KLSAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFy
c2VyTW9kZSwgcmVzdWx0KSkKKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJn
cywgY3NzUGFyc2VyTW9kZSwgcmVzdWx0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVSYWRp
YWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKK3N0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykK
IHsKLSAgICBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVu
dFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBDU1NSYWRpYWxHcmFkaWVudCk7CisgICAgUmVmUHRy
PENTU1JhZGlhbEdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6
OmNyZWF0ZShyZXBlYXRpbmcsIENTU1JhZGlhbEdyYWRpZW50KTsKIAotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBzaGFwZSA9IG51bGxwdHI7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNpemVLZXl3
b3JkID0gbnVsbHB0cjsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFNpemUgPSBu
dWxscHRyOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFNpemUgPSBudWxscHRyOwor
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2hhcGU7CisgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBzaXplS2V5d29yZDsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGhv
cml6b250YWxTaXplOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmVydGljYWxTaXpl
OwogCiAgICAgLy8gRmlyc3QgcGFydCBvZiBncmFtbWFyLCB0aGUgc2l6ZS9zaGFwZSBjbGF1c2U6
CiAgICAgLy8gWyBjaXJjbGUgfHwgPGxlbmd0aD4gXSB8CkBAIC04NjcsNyArODcxLDcgQEAgc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgICAgICBpZiAoIWNlbnRlcikKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChob3Jpem9udGFsU2l6ZSkKQEAgLTg5Nyw0MyAr
OTAxLDQ1IEBAIHN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVJhZGlhbEdyYWRpZW50KEMKICAgICAg
ICAgfHwgKHZlcnRpY2FsU2l6ZSAmJiB2ZXJ0aWNhbFNpemUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRh
Z2VXaXRoTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC0+
c2V0U2hhcGUoc2hhcGUpOwotICAgIHJlc3VsdC0+c2V0U2l6aW5nQmVoYXZpb3Ioc2l6ZUtleXdv
cmQpOwotICAgIHJlc3VsdC0+c2V0RW5kSG9yaXpvbnRhbFNpemUoaG9yaXpvbnRhbFNpemUpOwot
ICAgIHJlc3VsdC0+c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7CisgICAgcmVzdWx0
LT5zZXRTaGFwZShzaGFwZS5nZXQoKSk7CisgICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihz
aXplS2V5d29yZC5nZXQoKSk7CisgICAgcmVzdWx0LT5zZXRFbmRIb3Jpem9udGFsU2l6ZShob3Jp
em9udGFsU2l6ZS5nZXQoKSk7CisgICAgcmVzdWx0LT5zZXRFbmRWZXJ0aWNhbFNpemUodmVydGlj
YWxTaXplLmdldCgpKTsKIAotICAgIENTU1ZhbHVlKiBjZW50ZXJYID0gbnVsbHB0cjsKLSAgICBD
U1NWYWx1ZSogY2VudGVyWSA9IG51bGxwdHI7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjZW50ZXJYOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWTsKICAgICBp
ZiAoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF0KSB7CiAgICAgICAgIGFyZ3MuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgY29uc3VtZVBvc2l0aW9uKGFyZ3MsIGNz
c1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgY2VudGVyWCwgY2VudGVyWSk7CiAg
ICAgICAgIGlmICghKGNlbnRlclggJiYgY2VudGVyWSkpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoY2VudGVyWCk7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0Rmlyc3RZKGNlbnRlclkpOworICAgICAgICAKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJz
dFgoV1RGTW92ZShjZW50ZXJYKSk7CisgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZKFdURk1vdmUo
Y2VudGVyWSkpOworICAgICAgICAKICAgICAgICAgLy8gUmlnaHQgbm93LCBDU1MgcmFkaWFsIGdy
YWRpZW50cyBoYXZlIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgY2VudGVycy4KLSAgICAgICAgcmVz
dWx0LT5zZXRTZWNvbmRYKGNlbnRlclgpOwotICAgICAgICByZXN1bHQtPnNldFNlY29uZFkoY2Vu
dGVyWSk7CisgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25kWChXVEZNb3ZlKGNlbnRlclgpKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRTZWNvbmRZKFdURk1vdmUoY2VudGVyWSkpOwogICAgIH0KIAogICAg
IGlmICgoc2hhcGUgfHwgc2l6ZUtleXdvcmQgfHwgaG9yaXpvbnRhbFNpemUgfHwgY2VudGVyWCB8
fCBjZW50ZXJZKSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3Bz
KGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdCkpCisgICAgaWYgKCFjb25zdW1lR3JhZGllbnRD
b2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdC5nZXQoKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNl
ck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nLCBDU1NHcmFk
aWVudFR5cGUgZ3JhZGllbnRUeXBlKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUxp
bmVhckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nLCBDU1NHcmFkaWVudFR5cGUg
Z3JhZGllbnRUeXBlKQogewotICAgIENTU0xpbmVhckdyYWRpZW50VmFsdWUqIHJlc3VsdCA9IENT
U0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIGdyYWRpZW50VHlwZSk7Cisg
ICAgUmVmUHRyPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU0xpbmVhckdyYWRp
ZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIGdyYWRpZW50VHlwZSk7CiAKICAgICBib29sIGV4
cGVjdENvbW1hID0gdHJ1ZTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogYW5nbGUgPSBjb25zdW1l
QW5nbGUoYXJncyk7Ci0gICAgaWYgKGFuZ2xlKSB7Ci0gICAgICAgIHJlc3VsdC0+c2V0QW5nbGUo
YW5nbGUpOwotICAgIH0gZWxzZSBpZiAoZ3JhZGllbnRUeXBlID09IENTU1ByZWZpeGVkTGluZWFy
R3JhZGllbnQgfHwgY29uc3VtZUlkZW50PENTU1ZhbHVlVG8+KGFyZ3MpKSB7Ci0gICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBlbmRYID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFs
dWVSaWdodD4oYXJncyk7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBlbmRZID0gY29uc3Vt
ZUlkZW50PENTU1ZhbHVlQm90dG9tLCBDU1NWYWx1ZVRvcD4oYXJncyk7CisgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjc3NQYXJzZXJNb2Rl
LCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGlmIChhbmdsZSkKKyAgICAgICAgcmVzdWx0
LT5zZXRBbmdsZShhbmdsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBlbHNlIGlmIChncmFkaWVu
dFR5cGUgPT0gQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCB8fCBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVUbz4oYXJncykpIHsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBlbmRYID0g
Y29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4oYXJncyk7CisgICAgICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW5kWSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUJv
dHRvbSwgQ1NTVmFsdWVUb3A+KGFyZ3MpOwogICAgICAgICBpZiAoIWVuZFggJiYgIWVuZFkpIHsK
ICAgICAgICAgICAgIGlmIChncmFkaWVudFR5cGUgPT0gQ1NTTGluZWFyR3JhZGllbnQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05NDMsMTI1ICs5NDksOTEgQEAgc3RhdGlj
IENTU1ZhbHVlKiBjb25zdW1lTGluZWFyR3JhZGllbnQoQwogICAgICAgICAgICAgZW5kWCA9IGNv
bnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGFyZ3MpOwogICAgICAgICB9
CiAKLSAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoZW5kWCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0
Rmlyc3RZKGVuZFkpOworICAgICAgICByZXN1bHQtPnNldEZpcnN0WChXVEZNb3ZlKGVuZFgpKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFkoV1RGTW92ZShlbmRZKSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgZXhwZWN0Q29tbWEgPSBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoZXhwZWN0Q29t
bWEgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBj
c3NQYXJzZXJNb2RlLCByZXN1bHQpKQorICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JTdG9w
cyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1DU1NWYWx1ZSogY29uc3VtZUltYWdlT3JO
b25lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQp
CitSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQogewogICAgIGlmIChyYW5nZS5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFu
Z2UpOwogICAgIHJldHVybiBjb25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQpOwogfQogCi1zdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVDcm9zc0ZhZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywg
Q1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3Vt
ZUNyb3NzRmFkZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJDb250ZXh0IGNv
bnRleHQpCiB7Ci0gICAgQ1NTVmFsdWUqIGZyb21JbWFnZVZhbHVlID0gY29uc3VtZUltYWdlT3JO
b25lKGFyZ3MsIGNvbnRleHQpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gZnJvbUltYWdlVmFsdWUg
PSBjb25zdW1lSW1hZ2VPck5vbmUoYXJncywgY29udGV4dCk7CiAgICAgaWYgKCFmcm9tSW1hZ2VW
YWx1ZSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgQ1NTVmFsdWUqIHRvSW1hZ2VWYWx1ZSA9IGNvbnN1bWVJbWFn
ZU9yTm9uZShhcmdzLCBjb250ZXh0KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvSW1hZ2VWYWx1
ZSA9IGNvbnN1bWVJbWFnZU9yTm9uZShhcmdzLCBjb250ZXh0KTsKICAgICBpZiAoIXRvSW1hZ2VW
YWx1ZSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGVyY2VudGFnZSA9IG51
bGxwdHI7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwZXJjZW50YWdlOwogICAgIGNv
bnN0IENTU1BhcnNlclRva2VuJiBwZXJjZW50YWdlQXJnID0gYXJncy5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpOwogICAgIGlmIChwZXJjZW50YWdlQXJnLnR5cGUoKSA9PSBQZXJjZW50YWdl
VG9rZW4pCi0gICAgICAgIHBlcmNlbnRhZ2UgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGNs
YW1wVG88ZG91YmxlPihwZXJjZW50YWdlQXJnLm51bWVyaWNWYWx1ZSgpIC8gMTAwLCAwLCAxKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpOworICAgICAgICBwZXJjZW50YWdl
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGRvdWJsZT4ocGVyY2VudGFnZUFy
Zy5udW1lcmljVmFsdWUoKSAvIDEwMCwgMCwgMSksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXM6OkNTU19OVU1CRVIpOwogICAgIGVsc2UgaWYgKHBlcmNlbnRhZ2VBcmcudHlwZSgpID09IE51
bWJlclRva2VuKQotICAgICAgICBwZXJjZW50YWdlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShjbGFtcFRvPGRvdWJsZT4ocGVyY2VudGFnZUFyZy5udW1lcmljVmFsdWUoKSwgMCwgMSksIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICAgICAgcGVyY2VudGFnZSA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxkb3VibGU+KHBlcmNlbnRhZ2VBcmcu
bnVtZXJpY1ZhbHVlKCksIDAsIDEpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1Nf
TlVNQkVSKTsKIAogICAgIGlmICghcGVyY2VudGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIENTU0Nyb3NzZmFkZVZhbHVlOjpjcmVhdGUoZnJvbUltYWdlVmFsdWUsIHRv
SW1hZ2VWYWx1ZSwgcGVyY2VudGFnZSk7CisgICAgcmV0dXJuIENTU0Nyb3NzZmFkZVZhbHVlOjpj
cmVhdGUoZnJvbUltYWdlVmFsdWUucmVsZWFzZU5vbk51bGwoKSwgdG9JbWFnZVZhbHVlLnJlbGVh
c2VOb25OdWxsKCksIHBlcmNlbnRhZ2UucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKLXN0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZVBhaW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNl
ckNvbnRleHQgY29udGV4dCkKLXsKLSAgICBEQ0hFQ0soUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Y3NzUGFpbnRBUElFbmFibGVkKCkpOwotCi0gICAgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogbmFtZSA9
IGNvbnN1bWVDdXN0b21JZGVudChhcmdzKTsKLSAgICBpZiAoIW5hbWUpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcmV0dXJuIENTU1BhaW50VmFsdWU6OmNyZWF0ZShuYW1lKTsKLX0K
LQotc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR2VuZXJhdGVkSW1hZ2UoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVHZW5lcmF0ZWRJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQogewogICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5w
ZWVrKCkuZnVuY3Rpb25JZCgpOwogICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0g
cmFuZ2U7CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJh
bmdlQ29weSk7Ci0gICAgQ1NTVmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7Ci0gICAgaWYgKGlkID09
IENTU1ZhbHVlUmFkaWFsR3JhZGllbnQpIHsKLSAgICAgICAgcmVzdWx0ID0gY29uc3VtZVJhZGlh
bEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcpOwotICAgIH0gZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCkgewotICAgICAgICBy
ZXN1bHQgPSBjb25zdW1lUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJlcGVh
dGluZyk7Ci0gICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdExpbmVhckdyYWRpZW50
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBzZW5kIGEgZGVwcmVjYXRpb24gbWVz
c2FnZS4KLSAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQotICAgICAgICAgICAgY29u
dGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJLaXRMaW5l
YXJHcmFkaWVudCk7Ci0gICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdz
LCBjb250ZXh0Lm1vZGUoKSwgTm9uUmVwZWF0aW5nLCBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50
KTsKLSAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nTGluZWFyR3Jh
ZGllbnQpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNlbmQgYSBkZXByZWNhdGlv
biBtZXNzYWdlLgotICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkpCi0gICAgICAgICAg
ICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6RGVwcmVjYXRlZFdlYktp
dFJlcGVhdGluZ0xpbmVhckdyYWRpZW50KTsKLSAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVh
ckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBSZXBlYXRpbmcsIENTU1ByZWZpeGVkTGlu
ZWFyR3JhZGllbnQpOwotICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdMaW5l
YXJHcmFkaWVudCkgewotICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJn
cywgY29udGV4dC5tb2RlKCksIFJlcGVhdGluZywgQ1NTTGluZWFyR3JhZGllbnQpOwotICAgIH0g
ZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVMaW5lYXJHcmFkaWVudCkgewotICAgICAgICByZXN1bHQg
PSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIE5vblJlcGVhdGlu
ZywgQ1NTTGluZWFyR3JhZGllbnQpOwotICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJr
aXRHcmFkaWVudCkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgc2VuZCBhIGRlcHJl
Y2F0aW9uIG1lc3NhZ2UuCi0gICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkKLSAgICAg
ICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpEZXByZWNhdGVk
V2ViS2l0R3JhZGllbnQpOwotICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZEdyYWRp
ZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpKTsKLSAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVl
V2Via2l0UmFkaWFsR3JhZGllbnQpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNl
bmQgYSBkZXByZWNhdGlvbiBtZXNzYWdlLgotICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVy
KCkpCi0gICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6
RGVwcmVjYXRlZFdlYktpdFJhZGlhbEdyYWRpZW50KTsKLSAgICAgICAgcmVzdWx0ID0gY29uc3Vt
ZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgTm9uUmVwZWF0
aW5nKTsKLSAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nUmFkaWFs
R3JhZGllbnQpIHsKLSAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQotICAgICAgICAg
ICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJL
aXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCk7Ci0gICAgICAgIHJlc3VsdCA9IGNvbnN1bWVEZXBy
ZWNhdGVkUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJlcGVhdGluZyk7Ci0g
ICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSkgeworICAgIFJlZlB0
cjxDU1NWYWx1ZT4gcmVzdWx0ID0gbnVsbHB0cjsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVSYWRp
YWxHcmFkaWVudCkKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZVJhZGlhbEdyYWRpZW50KGFyZ3Ms
IGNvbnRleHQubW9kZSwgTm9uUmVwZWF0aW5nKTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1
ZVJlcGVhdGluZ1JhZGlhbEdyYWRpZW50KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lUmFkaWFs
R3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlLCBSZXBlYXRpbmcpOworICAgIGVsc2UgaWYgKGlk
ID09IENTU1ZhbHVlV2Via2l0TGluZWFyR3JhZGllbnQpCisgICAgICAgIHJlc3VsdCA9IGNvbnN1
bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUsIE5vblJlcGVhdGluZywgQ1NTUHJl
Zml4ZWRMaW5lYXJHcmFkaWVudCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRS
ZXBlYXRpbmdMaW5lYXJHcmFkaWVudCkKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVhckdy
YWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgUmVwZWF0aW5nLCBDU1NQcmVmaXhlZExpbmVhckdy
YWRpZW50KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ0xpbmVhckdyYWRp
ZW50KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4
dC5tb2RlLCBSZXBlYXRpbmcsIENTU0xpbmVhckdyYWRpZW50KTsKKyAgICBlbHNlIGlmIChpZCA9
PSBDU1NWYWx1ZUxpbmVhckdyYWRpZW50KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFy
R3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlLCBOb25SZXBlYXRpbmcsIENTU0xpbmVhckdyYWRp
ZW50KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdEdyYWRpZW50KQorICAgICAg
ICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSk7
CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRSYWRpYWxHcmFkaWVudCkKKyAgICAg
ICAgcmVzdWx0ID0gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0
Lm1vZGUsIE5vblJlcGVhdGluZyk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRS
ZXBlYXRpbmdSYWRpYWxHcmFkaWVudCkKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZURlcHJlY2F0
ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUsIFJlcGVhdGluZyk7CisgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRDcm9zc0ZhZGUpCiAgICAgICAgIHJlc3VsdCA9IGNv
bnN1bWVDcm9zc0ZhZGUoYXJncywgY29udGV4dCk7Ci0gICAgfSBlbHNlIGlmIChpZCA9PSBDU1NW
YWx1ZVBhaW50KSB7Ci0gICAgICAgIHJlc3VsdCA9IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNz
c1BhaW50QVBJRW5hYmxlZCgpID8gY29uc3VtZVBhaW50KGFyZ3MsIGNvbnRleHQpIDogbnVsbHB0
cjsKLSAgICB9CisKICAgICBpZiAoIXJlc3VsdCB8fCAhYXJncy5hdEVuZCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICByYW5nZSA9IHJhbmdlQ29weTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1zdGF0aWMgQ1NTVmFsdWUqIGNyZWF0ZUNTU0ltYWdlVmFsdWVXaXRoUmVmZXJyZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiByYXdWYWx1ZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGV4dCkKLXsKLSAgICBDU1NWYWx1ZSogaW1hZ2VWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0
ZShyYXdWYWx1ZSwgY29udGV4dC5jb21wbGV0ZVVSTChyYXdWYWx1ZSkpOwotICAgIHRvQ1NTSW1h
Z2VWYWx1ZShpbWFnZVZhbHVlKS0+c2V0UmVmZXJyZXIoY29udGV4dC5yZWZlcnJlcigpKTsKLSAg
ICByZXR1cm4gaW1hZ2VWYWx1ZTsKLX0KLQotc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lSW1hZ2VT
ZXQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lSW1hZ2VTZXQoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAg
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKICAgICBDU1NQYXJzZXJU
b2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKLSAgICBDU1NJbWFn
ZVNldFZhbHVlKiBpbWFnZVNldCA9IENTU0ltYWdlU2V0VmFsdWU6OmNyZWF0ZSgpOworICAgIFJl
ZlB0cjxDU1NJbWFnZVNldFZhbHVlPiBpbWFnZVNldCA9IENTU0ltYWdlU2V0VmFsdWU6OmNyZWF0
ZSgpOwogICAgIGRvIHsKICAgICAgICAgQXRvbWljU3RyaW5nIHVybFZhbHVlID0gY29uc3VtZVVy
bEFzU3RyaW5nVmlldyhhcmdzKS50b0F0b21pY1N0cmluZygpOwogICAgICAgICBpZiAodXJsVmFs
dWUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBDU1NW
YWx1ZSogaW1hZ2UgPSBjcmVhdGVDU1NJbWFnZVZhbHVlV2l0aFJlZmVycmVyKHVybFZhbHVlLCBj
b250ZXh0KTsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBpbWFnZSA9IENTU0ltYWdlVmFsdWU6
OmNyZWF0ZShjb21wbGV0ZVVSTChjb250ZXh0LCB1cmxWYWx1ZSkpOwogICAgICAgICBpbWFnZVNl
dC0+YXBwZW5kKCppbWFnZSk7CiAKICAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2Vu
ID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwpAQCAtMTA2OSwxMSArMTA0MSwx
MSBAQCBzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZVNldChDU1NQYXJzCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKHRva2VuLnZhbHVlKCkgIT0gIngiKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIERDSEVDSyh0b2tlbi51bml0VHlwZSgp
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6VW5rbm93bik7CisgICAgICAgIEFTU0VS
VCh0b2tlbi51bml0VHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19V
TktOT1dOKTsKICAgICAgICAgZG91YmxlIGltYWdlU2NhbGVGYWN0b3IgPSB0b2tlbi5udW1lcmlj
VmFsdWUoKTsKICAgICAgICAgaWYgKGltYWdlU2NhbGVGYWN0b3IgPD0gMCkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICBpbWFnZVNldC0+YXBwZW5kKCpDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKGltYWdlU2NhbGVGYWN0b3IsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZTo6TnVtYmVyKSk7CisgICAgICAgIGltYWdlU2V0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShpbWFnZVNjYWxlRmFjdG9yLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpD
U1NfTlVNQkVSKSk7CiAgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSk7CiAgICAgaWYgKCFhcmdzLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTA5MCwxMSArMTA2MiwxMSBAQCBzdGF0aWMgYm9vbCBpc0dlbmVyYXRlZEltYWdlKENT
U1ZhbHVlSUQgCiAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0R3JhZGllbnQgfHwgaWQg
PT0gQ1NTVmFsdWVXZWJraXRDcm9zc0ZhZGUgfHwgaWQgPT0gQ1NTVmFsdWVQYWludDsKIH0KIAot
Q1NTVmFsdWUqIGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFy
c2VyQ29udGV4dCBjb250ZXh0LCBDb25zdW1lR2VuZXJhdGVkSW1hZ2UgZ2VuZXJhdGVkSW1hZ2Up
CitSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0LCBDb25zdW1lR2VuZXJhdGVkSW1hZ2UgZ2VuZXJh
dGVkSW1hZ2UpCiB7CiAgICAgQXRvbWljU3RyaW5nIHVyaSA9IGNvbnN1bWVVcmxBc1N0cmluZ1Zp
ZXcocmFuZ2UpLnRvQXRvbWljU3RyaW5nKCk7CiAgICAgaWYgKCF1cmkuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBjcmVhdGVDU1NJbWFnZVZhbHVlV2l0aFJlZmVycmVyKHVyaSwgY29udGV4dCk7
CisgICAgICAgIHJldHVybiBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoY29tcGxldGVVUkwoY29udGV4
dCwgdXJpKSk7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gRnVuY3Rpb25Ub2tlbikg
ewogICAgICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKICAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0SW1hZ2VTZXQpCkBAIC0xMTA2LDYgKzEwNzgs
NSBAQCBDU1NWYWx1ZSogY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuCiB9CiAKIH0gLy8g
bmFtZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVycwotKi8KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5oCShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIENTU1Byb3BlcnR5UGFyc2VySGVscGVyc19oCiAjZGVm
aW5lIENTU1Byb3BlcnR5UGFyc2VySGVscGVyc19oCiAKLS8vIEZJWE1FLU5FV1BBUlNFUiAjaW5j
bHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1c3RvbUlkZW50VmFs
dWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVG9r
ZW5SYW5nZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCkBAIC0zOSwxMCArMzks
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENTU1N0cmluZ1ZhbHVlOwotY2xh
c3MgQ1NTVVJJVmFsdWU7Ci1jbGFzcyBDU1NWYWx1ZVBhaXI7Ci0KIC8vIFdoZW4gdGhlc2UgZnVu
Y3Rpb25zIGFyZSBzdWNjZXNzZnVsLCB0aGV5IHdpbGwgY29uc3VtZSBhbGwgdGhlIHJlbGV2YW50
CiAvLyB0b2tlbnMgZnJvbSB0aGUgcmFuZ2UgYW5kIGFsc28gY29uc3VtZSBhbnkgd2hpdGVzcGFj
ZSB3aGljaCBmb2xsb3dzLiBXaGVuCiAvLyB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlIGRvZXNuJ3Qg
bWF0Y2ggdGhlIHR5cGUgd2UncmUgbG9va2luZyBmb3IsIHRoZSByYW5nZQpAQCAtNjAsMzkgKzU2
LDM5IEBAIGVudW0gY2xhc3MgVW5pdGxlc3NRdWlyayB7CiAgICAgRm9yYmlkCiB9OwogCi1DU1NQ
cmltaXRpdmVWYWx1ZSogY29uc3VtZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGRvdWJs
ZSBtaW5pbXVtVmFsdWUgPSAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7Ci1D
U1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVBvc2l0aXZlSW50ZWdlcihDU1NQYXJzZXJUb2tlblJh
bmdlJik7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJbnRlZ2VyKENTU1BhcnNl
clRva2VuUmFuZ2UmLCBkb3VibGUgbWluaW11bVZhbHVlID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6bWF4KCkpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRp
dmVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKIGJvb2wgY29uc3VtZU51bWJlclJhdyhD
U1NQYXJzZXJUb2tlblJhbmdlJiwgZG91YmxlJiByZXN1bHQpOwotQ1NTUHJpbWl0aXZlVmFsdWUq
IGNvbnN1bWVOdW1iZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOwotQ1NTUHJp
bWl0aXZlVmFsdWUqIGNvbnN1bWVMZW5ndGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQp
OwotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
LCBWYWx1ZVJhbmdlKTsKLUNTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50
KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlLCBVbml0bGVz
c1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKLUNTU1ByaW1pdGl2ZVZhbHVlKiBjb25z
dW1lQW5nbGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1
bWVUaW1lKENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlKTsKK1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcihDU1NQYXJzZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5n
ZSk7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVMZW5ndGgoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgPSBVbml0
bGVzc1F1aXJrOjpGb3JiaWQpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUGVy
Y2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5nZSk7CitSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENT
U1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpG
b3JiaWQpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQW5nbGUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJr
OjpGb3JiaWQpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lVGltZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9
IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CiAKLUNTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRl
bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJZGVu
dFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NWYWx1ZUlEIGxvd2VyLCBDU1NWYWx1ZUlE
IHVwcGVyKTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUlkZW50KENTU1BhcnNl
clRva2VuUmFuZ2UmKTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUlkZW50UmFu
Z2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1ZhbHVlSUQgbG93ZXIsIENTU1ZhbHVlSUQgdXBw
ZXIpOwogdGVtcGxhdGU8Q1NTVmFsdWVJRCwgQ1NTVmFsdWVJRC4uLj4gaW5saW5lIGJvb2wgaWRl
bnRNYXRjaGVzKENTU1ZhbHVlSUQgaWQpOwotdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2Vk
SWRlbnRzPiBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUlkZW50KENTU1BhcnNlclRva2VuUmFu
Z2UmKTsKK3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogCi0vLyBG
SVhNRS1ORVdQQVJTRVIgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3RvbUlkZW50KENT
U1BhcnNlclRva2VuUmFuZ2UmKTsKLUNTU1N0cmluZ1ZhbHVlKiBjb25zdW1lU3RyaW5nKENTU1Bh
cnNlclRva2VuUmFuZ2UmKTsKK1JlZlB0cjxDU1NDdXN0b21JZGVudFZhbHVlPiBjb25zdW1lQ3Vz
dG9tSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb25zdW1lU3RyaW5nKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKIFN0cmluZ1ZpZXcgY29uc3Vt
ZVVybEFzU3RyaW5nVmlldyhDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci1DU1NVUklWYWx1ZSogY29u
c3VtZVVybChDU1NQYXJzZXJUb2tlblJhbmdlJik7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGNvbnN1bWVVcmwoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogCi1DU1NWYWx1ZSogY29uc3VtZUNv
bG9yKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBib29sIGFjY2VwdFF1aXJr
eUNvbG9ycyA9IGZhbHNlKTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUNvbG9y
KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBib29sIGFjY2VwdFF1aXJreUNv
bG9ycyA9IGZhbHNlKTsKIAotQ1NTVmFsdWVQYWlyKiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmspOwotYm9vbCBjb25zdW1l
UG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVp
cmssIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiByZXN1bHRZKTsKLWJvb2wgY29uc3Vt
ZU9uZU9yVHdvVmFsdWVkUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1v
ZGUsIFVuaXRsZXNzUXVpcmssIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiByZXN1bHRZ
KTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRv
a2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrKTsKK2Jvb2wgY29uc3VtZVBv
c2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJr
LCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiByZXN1bHRYLCBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+JiByZXN1bHRZKTsKK2Jvb2wgY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb24oQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmssIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFgsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJl
c3VsdFkpOwogCiBlbnVtIGNsYXNzIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSB7CiAgICAgQWxsb3cs
CiAgICAgRm9yYmlkCiB9OwogCi1DU1NWYWx1ZSogY29uc3VtZUltYWdlKENTU1BhcnNlclRva2Vu
UmFuZ2UmLCBDU1NQYXJzZXJDb250ZXh0LCBDb25zdW1lR2VuZXJhdGVkSW1hZ2UgPSBDb25zdW1l
R2VuZXJhdGVkSW1hZ2U6OkFsbG93KTsKLUNTU1ZhbHVlKiBjb25zdW1lSW1hZ2VPck5vbmUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlckNvbnRleHQpOworUmVmUHRyPENTU1ZhbHVlPiBj
b25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlckNvbnRleHQsIENvbnN1
bWVHZW5lcmF0ZWRJbWFnZSA9IENvbnN1bWVHZW5lcmF0ZWRJbWFnZTo6QWxsb3cpOworUmVmUHRy
PENTU1ZhbHVlPiBjb25zdW1lSW1hZ2VPck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1Bh
cnNlckNvbnRleHQpOwogCiAvLyBUZW1wbGF0ZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGF0IHRoZSBi
b3R0b20gb2YgdGhlIGZpbGUgZm9yIHJlYWRhYmlsaXR5LgogCkBAIC0xMTIsNyArMTA4LDcgQEAg
dGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBuYW1lcz4gUmVmUHRyPENTUwogCiBzdGF0aWMgaW5saW5l
IGJvb2wgaXNDU1NXaWRlS2V5d29yZChjb25zdCBDU1NWYWx1ZUlEJiBpZCkKIHsKLSAgICByZXR1
cm4gaWQgPT0gQ1NTVmFsdWVJbml0aWFsIHx8IGlkID09IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9
PSBDU1NWYWx1ZVVuc2V0IHx8IGlkID09IENTU1ZhbHVlRGVmYXVsdDsKKyAgICByZXR1cm4gaWQg
PT0gQ1NTVmFsdWVJbml0aWFsIHx8IGlkID09IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9PSBDU1NW
YWx1ZVVuc2V0IHx8IGlkID09IENTU1ZhbHVlUmV2ZXJ0IHx8IGlkID09IENTU1ZhbHVlRGVmYXVs
dDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcAkocmV2aXNpb24g
MjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWY8Q2FsY3VsYXRpb25WYWx1ZT4gQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKHN0ZDo6dW5p
cXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHZhbHVlLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZh
bHVlUmFuZ2UgcmFuZ2UpCitSZWY8Q2FsY3VsYXRpb25WYWx1ZT4gQ2FsY3VsYXRpb25WYWx1ZTo6
Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHZhbHVlLCBWYWx1ZVJh
bmdlIHJhbmdlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhbGN1bGF0aW9uVmFsdWUo
V1RGTW92ZSh2YWx1ZSksIHJhbmdlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DYWxjdWxhdGlvblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ2FsY3VsYXRpb25WYWx1ZS5oCShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDExICs0
Niw2IEBAIGVudW0gQ2FsY09wZXJhdG9yIHsKICAgICBDYWxjRGl2aWRlID0gJy8nCiB9OwogCi1l
bnVtIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSB7Ci0gICAgQ2FsY3VsYXRpb25SYW5n
ZUFsbCwKLSAgICBDYWxjdWxhdGlvblJhbmdlTm9uTmVnYXRpdmUKLX07Ci0KIGVudW0gQ2FsY0V4
cHJlc3Npb25Ob2RlVHlwZSB7CiAgICAgQ2FsY0V4cHJlc3Npb25Ob2RlVW5kZWZpbmVkLAogICAg
IENhbGNFeHByZXNzaW9uTm9kZU51bWJlciwKQEAgLTEzNiwxNCArMTMxLDE0IEBAIHByaXZhdGU6
CiAKIGNsYXNzIENhbGN1bGF0aW9uVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxjdWxhdGlv
blZhbHVlPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxDYWxjdWxh
dGlvblZhbHVlPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4sIENh
bGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxDYWxjdWxhdGlvblZhbHVlPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNz
aW9uTm9kZT4sIFZhbHVlUmFuZ2UpOwogICAgIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVl
KSBjb25zdDsKIAogICAgIGJvb2wgc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmU7IH0KICAgICBjb25zdCBDYWxjRXhwcmVz
c2lvbk5vZGUmIGV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiAqbV9leHByZXNzaW9uOyB9CiAK
IHByaXZhdGU6Ci0gICAgQ2FsY3VsYXRpb25WYWx1ZShzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJl
c3Npb25Ob2RlPiwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKKyAgICBDYWxjdWxh
dGlvblZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+LCBWYWx1ZVJhbmdl
KTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IG1fZXhwcmVzc2lv
bjsKICAgICBib29sIG1fc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlOwpAQCAtMTU0LDkgKzE0OSw5
IEBAIGlubGluZSBDYWxjRXhwcmVzc2lvbk5vZGU6OkNhbGNFeHByZXNzaW8KIHsKIH0KIAotaW5s
aW5lIENhbGN1bGF0aW9uVmFsdWU6OkNhbGN1bGF0aW9uVmFsdWUoc3RkOjp1bmlxdWVfcHRyPENh
bGNFeHByZXNzaW9uTm9kZT4gZXhwcmVzc2lvbiwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJh
bmdlIHJhbmdlKQoraW5saW5lIENhbGN1bGF0aW9uVmFsdWU6OkNhbGN1bGF0aW9uVmFsdWUoc3Rk
Ojp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gZXhwcmVzc2lvbiwgVmFsdWVSYW5nZSBy
YW5nZSkKICAgICA6IG1fZXhwcmVzc2lvbihXVEZNb3ZlKGV4cHJlc3Npb24pKQotICAgICwgbV9z
aG91bGRDbGFtcFRvTm9uTmVnYXRpdmUocmFuZ2UgPT0gQ2FsY3VsYXRpb25SYW5nZU5vbk5lZ2F0
aXZlKQorICAgICwgbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUocmFuZ2UgPT0gVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAJ
KHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgTGVuZ3RoIGJsZW5kTWl4
ZWRUeXBlcyhjb25zdCBMZW5nCiAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgCiAgICAgYXV0
byBibGVuZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aD4oZnJv
bSwgdG8sIHByb2dyZXNzKTsKLSAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6OmNy
ZWF0ZShXVEZNb3ZlKGJsZW5kKSwgQ2FsY3VsYXRpb25SYW5nZUFsbCkpOworICAgIHJldHVybiBM
ZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUoYmxlbmQpLCBWYWx1ZVJhbmdl
QWxsKSk7CiB9CiAKIExlbmd0aCBibGVuZChjb25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0
aCYgdG8sIGRvdWJsZSBwcm9ncmVzcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCwx
NiBAQCBib29sIENvbG9yOjpwYXJzZUhleENvbG9yKGNvbnN0IFN0cmluZyYgCiAgICAgcmV0dXJu
IHBhcnNlSGV4Q29sb3IobmFtZS5jaGFyYWN0ZXJzMTYoKSwgbmFtZS5sZW5ndGgoKSwgcmdiKTsK
IH0KIAorYm9vbCBDb2xvcjo6cGFyc2VIZXhDb2xvcihjb25zdCBTdHJpbmdWaWV3JiBuYW1lLCBS
R0JBMzImIHJnYikKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBuYW1lLmxlbmd0aCgpOworICAg
IGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG5hbWUuaXM4Qml0
KCkpCisgICAgICAgIHJldHVybiBwYXJzZUhleENvbG9yKG5hbWUuY2hhcmFjdGVyczgoKSwgbmFt
ZS5sZW5ndGgoKSwgcmdiKTsKKyAgICByZXR1cm4gcGFyc2VIZXhDb2xvcihuYW1lLmNoYXJhY3Rl
cnMxNigpLCBuYW1lLmxlbmd0aCgpLCByZ2IpOworfQorCiBpbnQgZGlmZmVyZW5jZVNxdWFyZWQo
Y29uc3QgQ29sb3ImIGMxLCBjb25zdCBDb2xvciYgYzIpCiB7CiAgICAgaW50IGRSID0gYzEucmVk
KCkgLSBjMi5yZWQoKTsKQEAgLTIyNiw3ICsyMzYsNyBAQCBDb2xvcjo6Q29sb3IoY29uc3QgU3Ry
aW5nJiBuYW1lKQogQ29sb3I6OkNvbG9yKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgaWYgKG5h
bWVbMF0gPT0gJyMnKQotICAgICAgICBtX3ZhbGlkID0gcGFyc2VIZXhDb2xvcigmbmFtZVsxXSwg
bV9jb2xvcik7CisgICAgICAgIG1fdmFsaWQgPSBwYXJzZUhleENvbG9yKChTdHJpbmcpJm5hbWVb
MV0sIG1fY29sb3IpOwogICAgIGVsc2UgewogICAgICAgICBjb25zdCBOYW1lZENvbG9yKiBmb3Vu
ZENvbG9yID0gZmluZENvbG9yKG5hbWUsIHN0cmxlbihuYW1lKSk7CiAgICAgICAgIG1fY29sb3Ig
PSBmb3VuZENvbG9yID8gZm91bmRDb2xvci0+QVJHQlZhbHVlIDogMDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkocmV2aXNpb24gMjA1OTkwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MTc1LDYgKzE3NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgcGFyc2VI
ZXhDb2xvcihjb25zdCBTdHJpbmcmLCBSR0JBMzImKTsKKyAgICBzdGF0aWMgYm9vbCBwYXJzZUhl
eENvbG9yKGNvbnN0IFN0cmluZ1ZpZXcmLCBSR0JBMzImKTsKICAgICBzdGF0aWMgYm9vbCBwYXJz
ZUhleENvbG9yKGNvbnN0IExDaGFyKiwgdW5zaWduZWQsIFJHQkEzMiYpOwogICAgIHN0YXRpYyBi
b29sIHBhcnNlSGV4Q29sb3IoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCwgUkdCQTMyJik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAko
cmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2lj
U2hhcGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEJhc2ljU2hh
cGVDZW50ZXJDb29yZGluYXRlOjp1cGRhdGVDCiAgICAgYXV0byBsaHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSk7CiAgICAgYXV0
byByaHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihtX2xlbmd0aCk7
CiAgICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25CaW5hcnlPcGVy
YXRpb24+KFdURk1vdmUobGhzKSwgV1RGTW92ZShyaHMpLCBDYWxjU3VidHJhY3QpOwotICAgIG1f
Y29tcHV0ZWRMZW5ndGggPSBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUo
b3ApLCBDYWxjdWxhdGlvblJhbmdlQWxsKSk7CisgICAgbV9jb21wdXRlZExlbmd0aCA9IExlbmd0
aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsK
IH0KIAogc3RydWN0IFNWR1BhdGhUcmFuc2xhdGVkQnl0ZVN0cmVhbSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289090</attachid>
            <date>2016-09-16 12:08:15 -0700</date>
            <delta_ts>2016-09-16 12:11:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>87231</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMiBAQAorMjAxNi0wOS0xNiAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBbQ1NTIFBhcnNlcl0gR2V0IENTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAgY29tcGlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwNzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Omhhc0RvdWJsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNo
ZWNrRGVwdGhBbmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjRXhwcmVzc2lvbk5v
ZGVQYXJzZXI6OnBhcnNlQ2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjRXhwcmVzc2lv
bk5vZGVQYXJzZXI6Om9wZXJhdG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0V4
cHJlc3Npb25Ob2RlUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nh
bGNFeHByZXNzaW9uTm9kZVBhcnNlcjo6cGFyc2VWYWx1ZVRlcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyOjpwYXJzZVZhbHVlTXVsdGlwbGljYXRpdmVF
eHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNFeHByZXNzaW9uTm9kZVBhcnNl
cjo6cGFyc2VBZGRpdGl2ZVZhbHVlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
YWxjRXhwcmVzc2lvbk5vZGVQYXJzZXI6OnBhcnNlVmFsdWVFeHByZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmNoZWNrRGVwdGhBbmRJbmRleERlcHJlY2F0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyRGVwcmVjYXRlZDo6cGFyc2VWYWx1ZVRlcm0p
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyRGVwcmVjYXRl
ZDo6cGFyc2VWYWx1ZU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXJEZXByZWNhdGVkOjpwYXJzZUFkZGl0aXZlVmFs
dWVFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ2FsY1ZhbHVlOjpjcmVhdGVDYWxjdWxhdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NhbGNWYWx1ZTo6c2V0UGVybWl0dGVkVmFsdWVSYW5nZSk6CisgICAgICAgIFN3aXRjaCBv
ZmYgdGhlIHBlcm1pdHRlZCBjYWxjIHZhbHVlIHJhbmdlIGVudW0sIHNpbmNlIHdlIGNhbiBqdXN0
IHVzZSB0aGUgaWRlbnRpY2FsIFZhbHVlUmFuZ2UgZW51bS4KKyAgICAgICAgRGVwcmVjYXRlIHRo
ZSBDU1NQYXJzZXJWYWx1ZUxpc3QtYmFzZWQgcGFyc2VyIGJ5IHJlbmFtaW5nIGl0LCBhbmQgYWRk
IGEgbmV3IHBhcnNlciB0aGF0IG9wZXJhdGVzCisgICAgICAgIG9uIHRva2Vucy4KKworICAgICAg
ICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
Q1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU3Ry
aW5nVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y2xlYW51cCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5n
dGhEb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51
bWJlckZvckN1c3RvbUNTU1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6YnVpbGRQYXJz
ZXJWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBDU1NfUVVJUktZX0VNUyBhcyBhIHVuaXQgdHlwZS4gVGhpcyB3aWxsIGxl
dCB1cyBlbGltaW5hdGUgdGhlIGV4dHJhIG1faXNRdWlya1ZhbHVlIGJvb2xlYW4KKyAgICAgICAg
ZXZlbnR1YWxseS4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6dmFsaWRhdGVDYWxjdWxhdGlvblVuaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNhbGN1bGF0aW9uKToKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1BhcnNlci5oOgorICAgICAgICBTd2l0Y2ggdG8gVmFsdWVSYW5nZS4KKworICAg
ICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXBsZXRlVVJMKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOgor
ICAgICAgICBNYWtlIHRoZSBVUkwgY29tcGxldGlvbiBmdW5jdGlvbiBmcm9tIENTU1BhcnNlci5j
cHAgYXZhaWxhYmxlIHRvIGFsbC4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyTW9k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6aXNVbml0TGVzc1ZhbHVlUGFyc2luZ0VuYWJsZWRGb3JN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVW5pdExlc3NMZW5ndGhQYXJzaW5nRW5hYmxlZEZv
ck1vZGUpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdGhpcyB0byB2YWx1ZSwgc2luY2UgZm9y
IG5vdyB3ZSdyZSBub3Qgc3VwcG9ydGluZyBCbGluaydzIFVzZXJVbml0cy4gVGhpcyBtZWFucyB3
ZSBuZWVkIHRvIHN1cHBvcnQKKyAgICAgICAgdW5pdGxlc3MgcGFyc2luZyBmb3IgdGltZXMgYW5k
IGFuZ2xlcyBpbiBhZGRpdGlvbiB0byBsZW5ndGhzLCBtYWtpbmcgdGhlIG5hbWUgb2YgdGhlIGZ1
bmN0aW9uIGluYXBwcm9wcmlhdGUuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclRv
a2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNzc1ByaW1pdGl2ZVZhbHVlVW5pdEZyb21Ucmll
KToKKyAgICAgICAgVHVybiBxdWlya3kgZW1zIHN1cHBvcnQgYmFjayBvbi4KKworICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSk6CisgICAgICAgIFN1cHBvcnQgcXVpcmt5IGVtcy4K
KworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Q2FsY1BhcnNlcjo6Y29u
c3VtZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6
Q2FsY1BhcnNlcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVBvc2l0aXZlSW50ZWdlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpzaG91bGRBY2NlcHRVbml0bGVz
c1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OmNvbnN1bWVQZXJjZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVs
cGVyczo6Y2FuQ29uc3VtZUNhbGNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVMZW5ndGhPclBlcmNlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQW5nbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJZGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJZGVudFJhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUN1c3Rv
bUlkZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OmNvbnN1bWVVcmwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OjpwYXJzZVJHQlBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzOjpwYXJzZUhTTFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUG9zaXRpb25Db21wb25lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwb3NpdGlvbkZyb21PbmVWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBvc2l0aW9u
RnJvbVR3b1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnM6OnBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFsdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU9uZU9y
VHdvVmFsdWVkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50U3Rv
cENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZFJh
ZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6Y29uc3VtZVJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
UGFyc2VySGVscGVyczo6Y29uc3VtZUxpbmVhckdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUltYWdlT3JOb25lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUNyb3NzRmFkZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVHZW5lcmF0
ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNv
bnN1bWVJbWFnZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNvbnN1bWVJbWFnZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6
aXNDU1NXaWRlS2V5d29yZCk6CisgICAgICAgIExvdHMgb2YgY2hhbmdlcyBoZXJlLiBUaGUgbW9z
dCBpbXBvcnRhbnQgaXMgc3dpdGNoaW5nIG92ZXIgdG8gUmVmUHRycyBhbmQgUmVmcyB3aGVyZSBh
cHByb3ByaWF0ZSwgd2l0aCB0aGUKKyAgICAgICAgcmVxdWlzaXRlIFdURk1vdmVzLiBVbml0IHR5
cGVzIGFsc28gaGF2ZSB0byBiZSBjb252ZXJ0ZWQgYmFjayB0byBvdXIgdmFsdWVzLCBhbmQgdW5p
dGxlc3MgcGFyc2luZyBoYXMKKyAgICAgICAgdG8gd29yayB3aXRoIGNvbnN1bWVUaW1lIGFuZCBj
b25zdW1lQW5nbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRp
b25WYWx1ZTo6Q2FsY3VsYXRpb25WYWx1ZSk6CisgICAgICAgIFVzZSBWYWx1ZVJhbmdlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OnBhcnNlSGV4Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICBBZGQgYSBTdHJp
bmdWaWV3LWJhc2VkIHBhcnNlSGV4Q29sb3IgZnVuY3Rpb24uCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUNl
bnRlckNvb3JkaW5hdGU6OnVwZGF0ZUNvbXB1dGVkTGVuZ3RoKToKKyAgICAgICAgVXNlIFZhbHVl
UmFuZ2UKKwogMjAxNi0wOS0xNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWVkaWEtc291cmNlXSBGaXggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtdGltZXN0YW1wLW9mZnNldC5odG1sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCShyZXZpc2lvbiAyMDU5
OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVl
LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJh
bmdlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMTQyLDYg
KzE0Myw3IEBAIHN0YXRpYyBib29sIGhhc0RvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVYKICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FOgogICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19TSEFQRToKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UVVBRDoKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUVVJUktZX0VNUzoKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19M
RU5HVEhfUkVQRUFUOgogI2VuZGlmCkBAIC01NTksNyArNTYxLDEzNSBAQCBwcml2YXRlOgogICAg
IGNvbnN0IENhbGNPcGVyYXRvciBtX29wZXJhdG9yOwogfTsKIAotc3RhdGljIFBhcnNlU3RhdGUg
Y2hlY2tEZXB0aEFuZEluZGV4KGludCogZGVwdGgsIHVuc2lnbmVkIGluZGV4LCBDU1NQYXJzZXJW
YWx1ZUxpc3QqIHRva2VucykKK3N0YXRpYyBQYXJzZVN0YXRlIGNoZWNrRGVwdGhBbmRJbmRleChp
bnQqIGRlcHRoLCBDU1NQYXJzZXJUb2tlblJhbmdlIHRva2VucykKK3sKKyAgICAoKmRlcHRoKSsr
OworICAgIGlmICh0b2tlbnMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIE5vTW9yZVRva2VuczsK
KyAgICBpZiAoKmRlcHRoID4gbWF4RXhwcmVzc2lvbkRlcHRoKQorICAgICAgICByZXR1cm4gVG9v
RGVlcDsKKyAgICByZXR1cm4gT0s7Cit9CisKK2NsYXNzIENTU0NhbGNFeHByZXNzaW9uTm9kZVBh
cnNlciB7CitwdWJsaWM6CisgICAgUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcGFyc2VD
YWxjKENTU1BhcnNlclRva2VuUmFuZ2UgdG9rZW5zKQorICAgIHsKKyAgICAgICAgVmFsdWUgcmVz
dWx0OworICAgICAgICB0b2tlbnMuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICAgICAgYm9vbCBv
ayA9IHBhcnNlVmFsdWVFeHByZXNzaW9uKHRva2VucywgMCwgJnJlc3VsdCk7CisgICAgICAgIGlm
ICghb2sgfHwgIXRva2Vucy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiByZXN1bHQudmFsdWU7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBz
dHJ1Y3QgVmFsdWUgeworICAgICAgICBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1
ZTsKKyAgICB9OworICAgIAorICAgIGNoYXIgb3BlcmF0b3JWYWx1ZShjb25zdCBDU1NQYXJzZXJU
b2tlbiYgdG9rZW4pCisgICAgeworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IERlbGltaXRl
clRva2VuKQorICAgICAgICAgICAgcmV0dXJuIHRva2VuLmRlbGltaXRlcigpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgYm9vbCBwYXJzZVZhbHVlKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHRva2VucywgVmFsdWUqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIENTU1BhcnNlclRv
a2VuIHRva2VuID0gdG9rZW5zLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAg
IGlmICghKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gUGVy
Y2VudGFnZVRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzIHR5cGUgPSB0b2tlbi51bml0VHlwZSgpOworICAgICAgICBpZiAodW5pdENhdGVn
b3J5KHR5cGUpID09IENhbGNPdGhlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIHJlc3VsdC0+dmFsdWUgPSBDU1NDYWxjUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRva2VuLm51bWVyaWNWYWx1ZSgpLCB0eXBlKSwg
dG9rZW4ubnVtZXJpY1ZhbHVlVHlwZSgpID09IEludGVnZXJWYWx1ZVR5cGUpOworICAgICAgICAK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGJvb2wgcGFyc2VWYWx1ZVRl
cm0oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5zLCBpbnQgZGVwdGgsIFZhbHVlKiByZXN1bHQp
CisgICAgeworICAgICAgICBpZiAoY2hlY2tEZXB0aEFuZEluZGV4KCZkZXB0aCwgdG9rZW5zKSAh
PSBPSykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmICh0
b2tlbnMucGVlaygpLnR5cGUoKSA9PSBMZWZ0UGFyZW50aGVzaXNUb2tlbiB8fCB0b2tlbnMucGVl
aygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUNhbGMpIHsKKyAgICAgICAgICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgaW5uZXJSYW5nZSA9IHRva2Vucy5jb25zdW1lQmxvY2soKTsKKyAgICAgICAg
ICAgIHRva2Vucy5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICAgICAgaW5uZXJSYW5nZS5j
b25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICAgICAgcmV0dXJuIHBhcnNlVmFsdWVFeHByZXNz
aW9uKGlubmVyUmFuZ2UsIGRlcHRoLCByZXN1bHQpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gcGFyc2VWYWx1ZSh0b2tlbnMsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IGJvb2wgcGFyc2VWYWx1ZU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbihDU1NQYXJzZXJUb2tlblJh
bmdlJiB0b2tlbnMsIGludCBkZXB0aCwgVmFsdWUqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGlm
IChjaGVja0RlcHRoQW5kSW5kZXgoJmRlcHRoLCB0b2tlbnMpICE9IE9LKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgaWYgKCFwYXJzZVZhbHVlVGVybSh0b2tl
bnMsIGRlcHRoLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAK
KyAgICAgICAgd2hpbGUgKCF0b2tlbnMuYXRFbmQoKSkgeworICAgICAgICAgICAgY2hhciBvcGVy
YXRvckNoYXJhY3RlciA9IG9wZXJhdG9yVmFsdWUodG9rZW5zLnBlZWsoKSk7CisgICAgICAgICAg
ICBpZiAob3BlcmF0b3JDaGFyYWN0ZXIgIT0gQ2FsY011bHRpcGx5ICYmIG9wZXJhdG9yQ2hhcmFj
dGVyICE9IENhbGNEaXZpZGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB0
b2tlbnMuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgVmFsdWUgcmhzOworICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlVGVybSh0b2tlbnMs
IGRlcHRoLCAmcmhzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHJlc3VsdC0+dmFsdWUgPSBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uOjpj
cmVhdGVTaW1wbGlmaWVkKHN0YXRpY19jYXN0PENhbGNPcGVyYXRvcj4ob3BlcmF0b3JDaGFyYWN0
ZXIpLCByZXN1bHQtPnZhbHVlLCByaHMudmFsdWUpOworCisgICAgICAgICAgICBpZiAoIXJlc3Vs
dC0+dmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBwYXJzZUFk
ZGl0aXZlVmFsdWVFeHByZXNzaW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHRva2VucywgaW50IGRl
cHRoLCBWYWx1ZSogcmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKGNoZWNrRGVwdGhBbmRJbmRl
eCgmZGVwdGgsIHRva2VucykgIT0gT0spCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIAorICAgICAgICBpZiAoIXBhcnNlVmFsdWVNdWx0aXBsaWNhdGl2ZUV4cHJlc3Npb24odG9r
ZW5zLCBkZXB0aCwgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
CisgICAgICAgIHdoaWxlICghdG9rZW5zLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGNoYXIgb3Bl
cmF0b3JDaGFyYWN0ZXIgPSBvcGVyYXRvclZhbHVlKHRva2Vucy5wZWVrKCkpOworICAgICAgICAg
ICAgaWYgKG9wZXJhdG9yQ2hhcmFjdGVyICE9IENhbGNBZGQgJiYgb3BlcmF0b3JDaGFyYWN0ZXIg
IT0gQ2FsY1N1YnRyYWN0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYg
KCgmdG9rZW5zLnBlZWsoKSAtIDEpLT50eXBlKCkgIT0gV2hpdGVzcGFjZVRva2VuKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gY2FsYygxcHgrIDJweCkgaXMgaW52YWxpZAorICAg
ICAgICAgICAgdG9rZW5zLmNvbnN1bWUoKTsKKyAgICAgICAgICAgIGlmICh0b2tlbnMucGVlaygp
LnR5cGUoKSAhPSBXaGl0ZXNwYWNlVG9rZW4pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OyAvLyBjYWxjKDFweCArMnB4KSBpcyBpbnZhbGlkCisgICAgICAgICAgICB0b2tlbnMuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVmFsdWUg
cmhzOworICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlTXVsdGlwbGljYXRpdmVFeHByZXNzaW9u
KHRva2VucywgZGVwdGgsICZyaHMpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgcmVzdWx0LT52YWx1ZSA9IENTU0NhbGNCaW5hcnlPcGVy
YXRpb246OmNyZWF0ZVNpbXBsaWZpZWQoc3RhdGljX2Nhc3Q8Q2FsY09wZXJhdG9yPihvcGVyYXRv
ckNoYXJhY3RlciksIHJlc3VsdC0+dmFsdWUsIHJocy52YWx1ZSk7CisgICAgICAgICAgICBpZiAo
IXJlc3VsdC0+dmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBw
YXJzZVZhbHVlRXhwcmVzc2lvbihDU1NQYXJzZXJUb2tlblJhbmdlJiB0b2tlbnMsIGludCBkZXB0
aCwgVmFsdWUqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBwYXJzZUFkZGl0aXZlVmFs
dWVFeHByZXNzaW9uKHRva2VucywgZGVwdGgsIHJlc3VsdCk7CisgICAgfQorfTsKKyAgICAKK3N0
YXRpYyBQYXJzZVN0YXRlIGNoZWNrRGVwdGhBbmRJbmRleERlcHJlY2F0ZWQoaW50KiBkZXB0aCwg
dW5zaWduZWQgaW5kZXgsIENTU1BhcnNlclZhbHVlTGlzdCogdG9rZW5zKQogewogICAgICgqZGVw
dGgpKys7CiAgICAgaWYgKCpkZXB0aCA+IG1heEV4cHJlc3Npb25EZXB0aCkKQEAgLTU2OSw3ICs2
OTksNyBAQCBzdGF0aWMgUGFyc2VTdGF0ZSBjaGVja0RlcHRoQW5kSW5kZXgoaW50CiAgICAgcmV0
dXJuIE9LOwogfQogCi1jbGFzcyBDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXIgeworY2xhc3Mg
Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyRGVwcmVjYXRlZCB7CiBwdWJsaWM6CiAgICAgUmVm
UHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcGFyc2VDYWxjKENTU1BhcnNlclZhbHVlTGlzdCog
dG9rZW5zKQogICAgIHsKQEAgLTYxNiw3ICs3NDYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBw
YXJzZVZhbHVlVGVybShDU1NQYXJzZXJWYWx1ZUxpc3QqIHRva2VucywgaW50IGRlcHRoLCB1bnNp
Z25lZCogaW5kZXgsIFZhbHVlKiByZXN1bHQpCiAgICAgewotICAgICAgICBpZiAoY2hlY2tEZXB0
aEFuZEluZGV4KCZkZXB0aCwgKmluZGV4LCB0b2tlbnMpICE9IE9LKQorICAgICAgICBpZiAoY2hl
Y2tEZXB0aEFuZEluZGV4RGVwcmVjYXRlZCgmZGVwdGgsICppbmRleCwgdG9rZW5zKSAhPSBPSykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAob3BlcmF0b3JWYWx1ZSh0
b2tlbnMsICppbmRleCkgPT0gJygnKSB7CkBAIC02MzUsNyArNzY1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgcGFyc2VWYWx1ZU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbihDU1NQYXJzZXJWYWx1
ZUxpc3QqIHRva2VucywgaW50IGRlcHRoLCB1bnNpZ25lZCogaW5kZXgsIFZhbHVlKiByZXN1bHQp
CiAgICAgewotICAgICAgICBpZiAoY2hlY2tEZXB0aEFuZEluZGV4KCZkZXB0aCwgKmluZGV4LCB0
b2tlbnMpICE9IE9LKQorICAgICAgICBpZiAoY2hlY2tEZXB0aEFuZEluZGV4RGVwcmVjYXRlZCgm
ZGVwdGgsICppbmRleCwgdG9rZW5zKSAhPSBPSykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICBpZiAoIXBhcnNlVmFsdWVUZXJtKHRva2VucywgZGVwdGgsIGluZGV4LCByZXN1
bHQpKQpAQCAtNjYyLDcgKzc5Miw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHBhcnNlQWRkaXRp
dmVWYWx1ZUV4cHJlc3Npb24oQ1NTUGFyc2VyVmFsdWVMaXN0KiB0b2tlbnMsIGludCBkZXB0aCwg
dW5zaWduZWQqIGluZGV4LCBWYWx1ZSogcmVzdWx0KQogICAgIHsKLSAgICAgICAgaWYgKGNoZWNr
RGVwdGhBbmRJbmRleCgmZGVwdGgsICppbmRleCwgdG9rZW5zKSAhPSBPSykKKyAgICAgICAgaWYg
KGNoZWNrRGVwdGhBbmRJbmRleERlcHJlY2F0ZWQoJmRlcHRoLCAqaW5kZXgsIHRva2VucykgIT0g
T0spCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaWYgKCFwYXJzZVZhbHVl
TXVsdGlwbGljYXRpdmVFeHByZXNzaW9uKHRva2VucywgZGVwdGgsIGluZGV4LCByZXN1bHQpKQpA
QCAtNzUwLDE3ICs4ODAsMjUgQEAgc3RhdGljIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+
IGNyZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBDU1ND
YWxjVmFsdWU6OmNyZWF0ZShDU1NQYXJzZXJTdHJpbmcgbmFtZSwgQ1NTUGFyc2VyVmFsdWVMaXN0
JiBwYXJzZXJWYWx1ZUxpc3QsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkK
K1JlZlB0cjxDU1NDYWxjVmFsdWU+IENTU0NhbGNWYWx1ZTo6Y3JlYXRlKENTU1BhcnNlclN0cmlu
ZyBuYW1lLCBDU1NQYXJzZXJWYWx1ZUxpc3QmIHBhcnNlclZhbHVlTGlzdCwgVmFsdWVSYW5nZSBy
YW5nZSkKIHsKLSAgICBDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXIgcGFyc2VyOworICAgIENT
U0NhbGNFeHByZXNzaW9uTm9kZVBhcnNlckRlcHJlY2F0ZWQgcGFyc2VyOwogICAgIFJlZlB0cjxD
U1NDYWxjRXhwcmVzc2lvbk5vZGU+IGV4cHJlc3Npb247CiAKICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImNhbGMoIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobmFtZSwgIi13ZWJraXQtY2FsYygiKSkKICAgICAgICAgZXhwcmVzc2lvbiA9IHBh
cnNlci5wYXJzZUNhbGMoJnBhcnNlclZhbHVlTGlzdCk7CiAKLSAgICByZXR1cm4gZXhwcmVzc2lv
biA/IGFkb3B0UmVmKG5ldyBDU1NDYWxjVmFsdWUoZXhwcmVzc2lvbi5yZWxlYXNlTm9uTnVsbCgp
LCByYW5nZSAhPSBDYWxjdWxhdGlvblJhbmdlQWxsKSkgOiBudWxscHRyOworICAgIHJldHVybiBl
eHByZXNzaW9uID8gYWRvcHRSZWYobmV3IENTU0NhbGNWYWx1ZShleHByZXNzaW9uLnJlbGVhc2VO
b25OdWxsKCksIHJhbmdlICE9IFZhbHVlUmFuZ2VBbGwpKSA6IG51bGxwdHI7CiB9CiAKK1JlZlB0
cjxDU1NDYWxjVmFsdWU+IENTU0NhbGNWYWx1ZTo6Y3JlYXRlKGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmIHRva2VucywgVmFsdWVSYW5nZSByYW5nZSkKK3sKKyAgICBDU1NDYWxjRXhwcmVzc2lv
bk5vZGVQYXJzZXIgcGFyc2VyOworICAgIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGV4
cHJlc3Npb24gPSBwYXJzZXIucGFyc2VDYWxjKHRva2Vucyk7CisgICAgcmV0dXJuIGV4cHJlc3Np
b24gPyBhZG9wdFJlZihuZXcgQ1NTQ2FsY1ZhbHVlKGV4cHJlc3Npb24ucmVsZWFzZU5vbk51bGwo
KSwgcmFuZ2UgIT0gVmFsdWVSYW5nZUFsbCkpIDogbnVsbHB0cjsKKworfQorICAgIAogUmVmUHRy
PENTU0NhbGNWYWx1ZT4gQ1NTQ2FsY1ZhbHVlOjpjcmVhdGUoY29uc3QgQ2FsY3VsYXRpb25WYWx1
ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBSZWZQdHI8Q1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlPiBleHByZXNzaW9uID0gY3JlYXRlQ1NTKHZhbHVlLmV4cHJlc3Npb24o
KSwgc3R5bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5o
CShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ1NTUGFyc2VyVG9rZW5SYW5nZTsKIGNsYXNzIENTU1BhcnNlclZhbHVl
TGlzdDsKIGNsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CiBjbGFzcyBSZW5kZXJTdHls
ZTsKQEAgLTg3LDE4ICs4OCwyMiBAQCBwcml2YXRlOgogCiBjbGFzcyBDU1NDYWxjVmFsdWUgZmlu
YWwgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2Fs
Y1ZhbHVlPiBjcmVhdGUoQ1NTUGFyc2VyU3RyaW5nIG5hbWUsIENTU1BhcnNlclZhbHVlTGlzdCYg
YXJndW1lbnRzLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOworICAgIC8vIEZJWE1F
LU5FV1BBUlNFUjogUmVtb3ZlIHRoZSBDU1NQYXJzZXJTdHJpbmcgY3JlYXRlIHdoZW4gb2xkIHBh
cnNlciBnb2VzIGF3YXkuCisgICAgc3RhdGljIFJlZlB0cjxDU1NDYWxjVmFsdWU+IGNyZWF0ZShD
U1NQYXJzZXJTdHJpbmcgbmFtZSwgQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmd1bWVudHMsIFZhbHVl
UmFuZ2UpOworICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoY29uc3QgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOworICAgIAogICAgIHN0YXRpYyBSZWZQdHI8
Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoY29uc3QgQ2FsY3VsYXRpb25WYWx1ZSYsIGNvbnN0IFJlbmRl
clN0eWxlJik7CiAKICAgICBDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9leHByZXNzaW9uLT5jYXRlZ29yeSgpOyB9CiAgICAgYm9vbCBpc0ludCgpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwcmVzc2lvbi0+aXNJbnRlZ2VyKCk7IH0KICAgICBkb3VibGUgZG91Ymxl
VmFsdWUoKSBjb25zdDsKICAgICBib29sIGlzUG9zaXRpdmUoKSBjb25zdCB7IHJldHVybiBtX2V4
cHJlc3Npb24tPmRvdWJsZVZhbHVlKCkgPiAwOyB9CisgICAgYm9vbCBpc05lZ2F0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9leHByZXNzaW9uLT5kb3VibGVWYWx1ZSgpIDwgMDsgfQogICAgIGRvdWJs
ZSBjb21wdXRlTGVuZ3RoUHgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYpIGNvbnN0
OwogICAgIHVuc2lnbmVkIHNob3J0IHByaW1pdGl2ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2V4
cHJlc3Npb24tPnByaW1pdGl2ZVR5cGUoKTsgfQogCiAgICAgUmVmPENhbGN1bGF0aW9uVmFsdWU+
IGNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYp
IGNvbnN0OwotICAgIHZvaWQgc2V0UGVybWl0dGVkVmFsdWVSYW5nZShDYWxjdWxhdGlvblBlcm1p
dHRlZFZhbHVlUmFuZ2UpOworICAgIHZvaWQgc2V0UGVybWl0dGVkVmFsdWVSYW5nZShWYWx1ZVJh
bmdlKTsKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTQ2FsY1ZhbHVlJikgY29uc3Q7CkBAIC0xMjIsMTIgKzEyNywxMiBAQCBpbmxp
bmUgQ1NTQ2FsY1ZhbHVlOjpDU1NDYWxjVmFsdWUoUmVmPENTCiBpbmxpbmUgUmVmPENhbGN1bGF0
aW9uVmFsdWU+IENTU0NhbGNWYWx1ZTo6Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSkgY29uc3QKIHsKICAgICByZXR1
cm4gQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKG1fZXhwcmVzc2lvbi0+Y3JlYXRlQ2FsY0V4cHJl
c3Npb24oY29udmVyc2lvbkRhdGEpLAotICAgICAgICBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2
ZSA/IENhbGN1bGF0aW9uUmFuZ2VOb25OZWdhdGl2ZSA6IENhbGN1bGF0aW9uUmFuZ2VBbGwpOwor
ICAgICAgICBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZSA/IFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSA6IFZhbHVlUmFuZ2VBbGwpOwogfQogCi1pbmxpbmUgdm9pZCBDU1NDYWxjVmFsdWU6OnNldFBl
cm1pdHRlZFZhbHVlUmFuZ2UoQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQor
aW5saW5lIHZvaWQgQ1NTQ2FsY1ZhbHVlOjpzZXRQZXJtaXR0ZWRWYWx1ZVJhbmdlKFZhbHVlUmFu
Z2UgcmFuZ2UpCiB7Ci0gICAgbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUgPSByYW5nZSAhPSBD
YWxjdWxhdGlvblJhbmdlQWxsOworICAgIG1fc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlID0gcmFu
Z2UgIT0gVmFsdWVSYW5nZUFsbDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCShyZXZpc2lvbiAyMDU5OTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw2ICs3MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTVW5pdFR5
cGVGb3IKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHOgogICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT046CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0VNUzoKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUVVJUktZX0VNUzoK
ICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTOgogICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19GUjoKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRDoK
QEAgLTE2MCw2ICsxNjEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJpbmdUeXBlKENTU1By
aW1pCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQSToKICAgICBjYXNlIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRFBQWDoKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RU1TOgorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19RVUlSS1lfRU1TOgogICAgIGNh
c2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM6CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0ZPTlRfRkFNSUxZOgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19GUjoK
QEAgLTU3Niw2ICs1NzgsNyBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKCkKICAg
ICBjYXNlIENTU19QQVJTRVJfSU5URUdFUjoKICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgogICAg
IGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgogICAgIGNhc2UgQ1NTX0VY
UzoKICAgICBjYXNlIENTU19SRU1TOgogICAgIGNhc2UgQ1NTX0NIUzoKQEAgLTY4NSw2ICs2ODgs
NyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjCiAKICAgICBzd2l0
Y2ggKHByaW1pdGl2ZVR5cGUpIHsKICAgICBjYXNlIENTU19FTVM6CisgICAgY2FzZSBDU1NfUVVJ
UktZX0VNUzoKICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkpOwogICAgICAg
ICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgpID8gY29udmVyc2lv
bkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpIDogY29udmVy
c2lvbkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTA3MSw2ICsxMDc1LDcgQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgQ1NT
UHJpbWl0aXZlVmFsdWU6OgogICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6CiAgICAgICAgIHJldHVy
biBmb3JtYXROdW1iZXJWYWx1ZSgiJSIpOwogICAgIGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENT
U19RVUlSS1lfRU1TOgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoImVtIik7CiAg
ICAgY2FzZSBDU1NfRVhTOgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoImV4Iik7
CkBAIC0xMTc0LDcgKzExNzksNyBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVW
YWx1ZTo6CiAgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOiB7CiAgICAgICAgIFJHQkEzMiBy
Z2JDb2xvciA9IG1fdmFsdWUucmdiY29sb3I7CiAgICAgICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRU
eXBlID09IENTU19QQVJTRVJfSEVYQ09MT1IpCi0gICAgICAgICAgICBDb2xvcjo6cGFyc2VIZXhD
b2xvcihtX3ZhbHVlLnN0cmluZywgcmdiQ29sb3IpOworICAgICAgICAgICAgQ29sb3I6OnBhcnNl
SGV4Q29sb3IoKFN0cmluZyltX3ZhbHVlLnN0cmluZywgcmdiQ29sb3IpOwogICAgICAgICByZXR1
cm4gQ29sb3IocmdiQ29sb3IpLmNzc1RleHQoKTsKICAgICB9CiAgICAgY2FzZSBDU1NfUEFJUjoK
QEAgLTEzMTUsNiArMTMyMCw3IEBAIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZl
VmFsdWUKICAgICBjYXNlIENTU19QQVJTRVJfSU5URUdFUjoKICAgICBjYXNlIENTU19QRVJDRU5U
QUdFOgogICAgIGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgogICAgIGNh
c2UgQ1NTX0VYUzoKICAgICBjYXNlIENTU19SRU1TOgogICAgIGNhc2UgQ1NTX0NIUzoKQEAgLTEz
NzksNiArMTM4NSw3IEBAIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFscyhjb25zdCBDU1MK
ICAgICBjYXNlIENTU19QQVJTRVJfSU5URUdFUjoKICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgog
ICAgIGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgogICAgIGNhc2UgQ1NT
X0VYUzoKICAgICBjYXNlIENTU19SRU1TOgogICAgIGNhc2UgQ1NTX1BYOgpAQCAtMTQ2NCw2ICsx
NDcxLDcgQEAgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6YnVpbGRQYXJzZXJWYWx1ZQogICAgIGNh
c2UgQ1NTX05VTUJFUjoKICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgogICAgIGNhc2UgQ1NTX0VN
UzoKKyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgogICAgIGNhc2UgQ1NTX0VYUzoKICAgICBjYXNl
IENTU19SRU1TOgogICAgIGNhc2UgQ1NTX1BYOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmgJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgQ1NTX1ZBTFVFX0lEID0gMTE4LAogICAgICAgICAKICAgICAgICAgLy8g
TW9yZSBpbnRlcm5hbCBwYXJzZSBzdHVmZiBmb3IgQ1NTIHZhcmlhYmxlcwotICAgICAgICBDU1Nf
UEFSU0VSX1dISVRFU1BBQ0UgPSAxMTkKKyAgICAgICAgQ1NTX1BBUlNFUl9XSElURVNQQUNFID0g
MTE5LAorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyB2YWx1ZSBpcyB1c2VkIHRvIGhhbmRsZSBx
dWlya3kgbWFyZ2lucyBpbiByZWZsb3cgcm9vdHMgKGJvZHksIHRkLCBhbmQgdGgpIGxpa2UgV2lu
SUUuCisgICAgICAgIC8vIFRoZSBiYXNpYyBpZGVhIGlzIHRoYXQgYSBzdHlsZXNoZWV0IGNhbiB1
c2UgdGhlIHZhbHVlIF9fcWVtIChmb3IgcXVpcmt5IGVtKSBpbnN0ZWFkIG9mIGVtLgorICAgICAg
ICAvLyBXaGVuIHRoZSBxdWlya3kgdmFsdWUgaXMgdXNlZCwgaWYgeW91J3JlIGluIHF1aXJrcyBt
b2RlLCB0aGUgbWFyZ2luIHdpbGwgY29sbGFwc2UgYXdheQorICAgICAgICAvLyBpbnNpZGUgYSB0
YWJsZSBjZWxsLiBUaGlzIHF1aXJrIGlzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBzcGVjIGJ1dCBv
dXIgaW1wbCBpcyBkaWZmZXJlbnQuCisgICAgICAgIENTU19RVUlSS1lfRU1TID0gMTIwCiAgICAg
fTsKIAogICAgIC8vIFRoaXMgZW51bSBmb2xsb3dzIHRoZSBDU1NQYXJzZXI6OlVuaXRzIGVudW0g
YXVnbWVudGVkIHdpdGggVU5JVF9GUkVRVUVOQ1kgZm9yIGZyZXF1ZW5jaWVzLgpAQCAtMTg5LDE2
ICsxOTUsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUgPT0g
Q1NTX0VNUwogICAgICAgICAgICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0VYUwogICAg
ICAgICAgICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1JFTVMKLSAgICAgICAgICAgIHx8
IHByaW1pdGl2ZVVuaXRUeXBlID09IENTU19DSFM7CisgICAgICAgICAgICB8fCBwcmltaXRpdmVV
bml0VHlwZSA9PSBDU1NfQ0hTCisgICAgICAgICAgICB8fCBwcmltaXRpdmVVbml0VHlwZSA9PSBD
U1NfUVVJUktZX0VNUzsKICAgICB9CiAgICAgYm9vbCBpc0ZvbnRSZWxhdGl2ZUxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIGlzRm9udFJlbGF0aXZlTGVuZ3RoKG1fcHJpbWl0aXZlVW5pdFR5cGUpOyB9
CisgICAgCisgICAgYm9vbCBpc1F1aXJreUVtcygpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5
cGUoKSA9PSBVbml0VHlwZXM6OkNTU19RVUlSS1lfRU1TOyB9CiAKICAgICBzdGF0aWMgYm9vbCBp
c1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCh1bnNpZ25lZCBzaG9ydCB0eXBlKSB7IHJldHVybiB0
eXBlID49IENTU19WVyAmJiB0eXBlIDw9IENTU19WTUFYOyB9CiAgICAgYm9vbCBpc1ZpZXdwb3J0
UGVyY2VudGFnZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGlzVmlld3BvcnRQZXJjZW50YWdlTGVu
Z3RoKG1fcHJpbWl0aXZlVW5pdFR5cGUpOyB9CiAKICAgICBzdGF0aWMgYm9vbCBpc0xlbmd0aCh1
bnNpZ25lZCBzaG9ydCB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuICh0eXBlID49IENTU19F
TVMgJiYgdHlwZSA8PSBDU1NfUEMpIHx8IHR5cGUgPT0gQ1NTX1JFTVMgfHwgdHlwZSA9PSBDU1Nf
Q0hTIHx8IGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKHR5cGUpOworICAgICAgICByZXR1cm4g
KHR5cGUgPj0gQ1NTX0VNUyAmJiB0eXBlIDw9IENTU19QQykgfHwgdHlwZSA9PSBDU1NfUkVNUyB8
fCB0eXBlID09IENTU19DSFMgfHwgaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgodHlwZSkgfHwg
dHlwZSA9PSBDU1NfUVVJUktZX0VNUzsKICAgICB9CiAKICAgICBib29sIGlzTGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gaXNMZW5ndGgocHJpbWl0aXZlVHlwZSgpKTsgfQpAQCAtMzY5LDcgKzM3OCw4
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKLSAgICBi
b29sIGlzUXVpcmtWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNRdWlya1ZhbHVlOyB9CisgICAg
Ly8gRklYTUUtTkVXUEFSU0VSOiBDYW4gZGl0Y2ggdGhlIGJvb2xlYW4gYW5kIGp1c3QgdXNlIHRo
ZSB1bml0IHR5cGUgb25jZSBvbGQgcGFyc2VyIGlzIGdvbmUuCisgICAgYm9vbCBpc1F1aXJrVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2lzUXVpcmtWYWx1ZSB8fCBwcmltaXRpdmVUeXBlKCkgPT0g
Q1NTX1FVSVJLWV9FTVM7IH0KIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCShyZXZpc2lvbiAy
MDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxOCw3ICszMTgsNyBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29uCiAgICAgYXV0byBsaHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHBy
ZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSk7CiAgICAgYXV0byByaHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpOwogICAgIGF1dG8gb3Ag
PSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uPihXVEZNb3Zl
KGxocyksIFdURk1vdmUocmhzKSwgQ2FsY1N1YnRyYWN0KTsKLSAgICByZXR1cm4gTGVuZ3RoKENh
bGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwgQ2FsY3VsYXRpb25SYW5nZUFsbCkp
OworICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3Ap
LCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIwLDkgKzE2
MjAsOSBAQCBib29sIENTU1BhcnNlcjo6dmFsaWRhdGVDYWxjdWxhdGlvblVuaXQoCiAgICAgaWYg
KHZhbHVlV2l0aENhbGN1bGF0aW9uLmNhbGN1bGF0aW9uKCkpIHsKICAgICAgICAgLy8gVGhlIGNh
bGN1bGF0aW9uIHZhbHVlIHdhcyBhbHJlYWR5IHBhcnNlZCBzbyB3ZSByZXVzZSBpdC4gSG93ZXZl
ciwgd2UgbWF5IG5lZWQgdG8gdXBkYXRlIGl0cyByYW5nZS4KICAgICAgICAgY2FsY3VsYXRpb24g
PSB2YWx1ZVdpdGhDYWxjdWxhdGlvbi5jYWxjdWxhdGlvbigpOwotICAgICAgICBjYWxjdWxhdGlv
bi0+c2V0UGVybWl0dGVkVmFsdWVSYW5nZShtdXN0QmVOb25OZWdhdGl2ZSA/IENhbGN1bGF0aW9u
UmFuZ2VOb25OZWdhdGl2ZSA6IENhbGN1bGF0aW9uUmFuZ2VBbGwpOworICAgICAgICBjYWxjdWxh
dGlvbi0+c2V0UGVybWl0dGVkVmFsdWVSYW5nZShtdXN0QmVOb25OZWdhdGl2ZSA/IFZhbHVlUmFu
Z2VOb25OZWdhdGl2ZSA6IFZhbHVlUmFuZ2VBbGwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHZh
bHVlV2l0aENhbGN1bGF0aW9uLnNldENhbGN1bGF0aW9uKHBhcnNlQ2FsY3VsYXRpb24odmFsdWVX
aXRoQ2FsY3VsYXRpb24sIG11c3RCZU5vbk5lZ2F0aXZlID8gQ2FsY3VsYXRpb25SYW5nZU5vbk5l
Z2F0aXZlIDogQ2FsY3VsYXRpb25SYW5nZUFsbCkpOworICAgICAgICB2YWx1ZVdpdGhDYWxjdWxh
dGlvbi5zZXRDYWxjdWxhdGlvbihwYXJzZUNhbGN1bGF0aW9uKHZhbHVlV2l0aENhbGN1bGF0aW9u
LCBtdXN0QmVOb25OZWdhdGl2ZSA/IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSA6IFZhbHVlUmFuZ2VB
bGwpKTsKICAgICAgICAgY2FsY3VsYXRpb24gPSB2YWx1ZVdpdGhDYWxjdWxhdGlvbi5jYWxjdWxh
dGlvbigpOwogICAgICAgICBpZiAoIWNhbGN1bGF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTEwNDIsNyArMTEwNDIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VXaWxsQ2hh
bmdlKGJvb2wgaW1wCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxDU1NDYWxjVmFsdWU+
IENTU1BhcnNlcjo6cGFyc2VDYWxjdWxhdGlvbihDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIENhbGN1
bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKK1JlZlB0cjxDU1NDYWxjVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VDYWxjdWxhdGlvbihDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIFZhbHVlUmFu
Z2UgcmFuZ2UpCiB7CiAgICAgQVNTRVJUKGlzQ2FsY3VsYXRpb24odmFsdWUpKTsKICAgICAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAkocmV2aXNpb24gMjA1OTkwKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzU5LDcgKzM1OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlSGFuZ2luZ1B1bmN0dWF0
aW9uKGJvb2wgaW1wb3J0YW50KTsKIAogICAgIGJvb2wgcGFyc2VMaW5lQm94Q29udGFpbihib29s
IGltcG9ydGFudCk7Ci0gICAgUmVmUHRyPENTU0NhbGNWYWx1ZT4gcGFyc2VDYWxjdWxhdGlvbihD
U1NQYXJzZXJWYWx1ZSYsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CisgICAgUmVm
UHRyPENTU0NhbGNWYWx1ZT4gcGFyc2VDYWxjdWxhdGlvbihDU1NQYXJzZXJWYWx1ZSYsIFZhbHVl
UmFuZ2UpOwogCiAgICAgYm9vbCBwYXJzZUZvbnRGZWF0dXJlVGFnKENTU1ZhbHVlTGlzdCYpOwog
ICAgIGJvb2wgcGFyc2VGb250RmVhdHVyZVNldHRpbmdzKGJvb2wgaW1wb3J0YW50KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5jcHAJKHJldmlz
aW9uIDIwNjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02MSw0ICs2MiwxMyBAQCBib29sIGlzVmFsdWVBbGxvd2VkSW5Nb2RlKHVuc2lnbmVkIHNo
b3J0CiAgICAgfQogfQogCitVUkwgY29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgaWYgKHVybC5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIFVSTCgpOworICAgIGlmIChjb250ZXh0LmNoYXJzZXQuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gVVJMKGNvbnRleHQuYmFzZVVSTCwgdXJsKTsKKyAgICByZXR1cm4gVVJM
KGNvbnRleHQuYmFzZVVSTCwgdXJsLCBjb250ZXh0LmNoYXJzZXQpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklk
aW9tcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
SWRpb21zLmgJKHJldmlzaW9uIDIwNjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VySWRpb21zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBVUkw7CisgICAgCiAvLyBTcGFjZSBjaGFyYWN0ZXJz
IGFzIGRlZmluZWQgYnkgdGhlIENTUyBzcGVjaWZpY2F0aW9uLgogLy8gaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1zeW50YXgvI3doaXRlc3BhY2UKIGlubGluZSBib29sIGlzQ1NTU3BhY2UoVUNo
YXIgYykKQEAgLTYyLDcgKzY0LDkgQEAgYm9vbCBpc05hbWVDb2RlUG9pbnQoQ2hhcmFjdGVyVHlw
ZSBjKQogdm9pZCBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZUluUGxhY2UoU3RyaW5nVmlldyYpOwog
CiBib29sIGlzVmFsdWVBbGxvd2VkSW5Nb2RlKHVuc2lnbmVkIHNob3J0LCBDU1NQYXJzZXJNb2Rl
KTsKLSAgICAKKworVVJMIGNvbXBsZXRlVVJMKGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBjb25z
dCBTdHJpbmcmIHVybCk7CisKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlck1vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlck1vZGUuaAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYy
LDcgQEAgaW5saW5lIGJvb2wgaXNVQVNoZWV0QmVoYXZpb3IoQ1NTUGFyc2VyTQogICAgIHJldHVy
biBtb2RlID09IFVBU2hlZXRNb2RlOwogfQogCi1pbmxpbmUgYm9vbCBpc1VuaXRMZXNzTGVuZ3Ro
UGFyc2luZ0VuYWJsZWRGb3JNb2RlKENTU1BhcnNlck1vZGUgbW9kZSkKK2lubGluZSBib29sIGlz
VW5pdExlc3NWYWx1ZVBhcnNpbmdFbmFibGVkRm9yTW9kZShDU1NQYXJzZXJNb2RlIG1vZGUpCiB7
CiAgICAgcmV0dXJuIG1vZGUgPT0gSFRNTEF0dHJpYnV0ZU1vZGUgfHwgbW9kZSA9PSBTVkdBdHRy
aWJ1dGVNb2RlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJU
b2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJUb2tlbi5jcHAJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDcgQEAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBjc3NQcmltaXRpdgogICAgICAgICBzd2l0Y2gg
KHRvQVNDSUlMb3dlcihkYXRhWzBdKSkgewogICAgICAgICBjYXNlICdfJzoKICAgICAgICAgICAg
IGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ18nICYmIHRvQVNDSUlMb3dlcihkYXRhWzJd
KSA9PSAncScgJiYgdG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICdlJyAmJiB0b0FTQ0lJTG93ZXIo
ZGF0YVs0XSkgPT0gJ20nKQotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpDU1NfRU1TOyAvLyBGSVhNRS1ORVdQQVJTRVI6IE5lZWQgcXVpcmt5IGVt
cy4KKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX1FVSVJLWV9FTVM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVl
cy5jcHAJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyVmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUMKICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3RyaW5nLCBwcmltaXRpdmVVbml0KTsKICAgICBjYXNlIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRToKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfRU1TOgorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19RVUlSS1lfRU1T
OgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM6CiAgICAgY2FzZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYOgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTToK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VySGVscGVycy5jcHAJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMjAgKzMxLDE3IEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgiCiAK
ICNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCi0vLyBGSVhNRS1ORVdQQVJTRVI6ICNp
bmNsdWRlICJDU1NDb2xvclZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Jvc3NmYWRlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1
ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKLS8vIEZJWE1FLU5FV1BBUlNFUjogI2lu
Y2x1ZGUgIkNTU1BhaW50VmFsdWUuaCIKLS8vIEZJWE1FX05FV1BBUlNFUjogI2luY2x1ZGUgIkNT
U1N0cmluZ1ZhbHVlLmgiCi0vLyBGSVhNRS1ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NVUklWYWx1
ZS5oIgotLy8gRklYTUVfTkVXUEFSU0VSOiAjaW5jbHVkZSAiQ1NTVmFsdWVQYWlyLmgiCisjaW5j
bHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCisjaW5j
bHVkZSAiUGFpci5oIgorI2luY2x1ZGUgIlN0eWxlQ29sb3IuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0vKiBGSVhNRS1ORVdQQVJTRVI6IERpc2FibGUgZm9yIG5vdy4KLSAKIG5hbWVzcGFj
ZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMgewogCiBib29sIGNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC04OCwxOSArODUsMTkg
QEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IENTU0NhbGNWYWx1ZSogdmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2NhbGNWYWx1ZS5nZXQoKTsgfQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBj
b25zdW1lVmFsdWUoKQorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVZhbHVl
KCkKICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFuZ2U7CiAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fY2FsY1ZhbHVlLnJlbGVhc2UoKSk7CiAgICAg
fQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTnVtYmVyKCkKKyAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVOdW1iZXIoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2Nh
bGNWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBtX3NvdXJjZVJh
bmdlID0gbV9yYW5nZTsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlIHVuaXRU
eXBlID0gbV9jYWxjVmFsdWUtPmlzSW50KCkgPyBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6
OkludGVnZXIgOiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcjsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0VHlwZSA9IG1fY2FsY1ZhbHVlLT5pc0lu
dCgpID8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BBUlNFUl9JTlRFR0VSIDog
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX05VTUJFUjsKICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCksIHVu
aXRUeXBlKTsKICAgICB9CiAKQEAgLTExNiwxNiArMTEzLDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgbV9zb3VyY2VSYW5nZTsKICAgICBDU1NQYXJzZXJU
b2tlblJhbmdlIG1fcmFuZ2U7Ci0gICAgTWVtYmVyPENTU0NhbGNWYWx1ZT4gbV9jYWxjVmFsdWU7
CisgICAgUmVmUHRyPENTU0NhbGNWYWx1ZT4gbV9jYWxjVmFsdWU7CiB9OwogCi1DU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGRvdWJs
ZSBtaW5pbXVtVmFsdWUpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJbnRlZ2Vy
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQogewogICAg
IGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9r
ZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CiAgICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFs
dWVUeXBlKCkgPT0gTnVtYmVyVmFsdWVUeXBlIHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgbWlu
aW11bVZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW50ZWdlcik7
CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXM6OkNTU19QQVJTRVJfSU5URUdFUik7CiAgICAgfQogICAgIENhbGNQYXJzZXIgY2Fs
Y1BhcnNlcihyYW5nZSk7CiAgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24g
PSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKQEAgLTEzOSw3ICsxMzYsNyBAQCBDU1NQcmltaXRpdmVW
YWx1ZSogY29uc3VtZUludGVnZXIoQ1NTUGFyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUNT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQorUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRpdmVJbnRl
Z2VyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIHJldHVybiBjb25zdW1lSW50
ZWdlcihyYW5nZSwgMSk7CiB9CkBAIC0xNTUsNyArMTUyLDcgQEAgYm9vbCBjb25zdW1lTnVtYmVy
UmF3KENTU1BhcnNlclRva2VuUmFuZwogfQogCiAvLyBGSVhNRTogV29yayBvdXQgaWYgdGhpcyBj
YW4ganVzdCBjYWxsIGNvbnN1bWVOdW1iZXJSYXcKLUNTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1l
TnVtYmVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2Up
CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVOdW1iZXIoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKIHsKICAgICBjb25zdCBDU1NQYXJz
ZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBO
dW1iZXJUb2tlbikgewpAQCAtMTc0LDM4ICsxNzEsMzcgQEAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVOdW1iZXIoQ1NTUGFycwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1pbmxpbmUgYm9v
bCBzaG91bGRBY2NlcHRVbml0bGVzc0xlbmd0aChkb3VibGUgdmFsdWUsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK2lubGluZSBib29sIHNob3Vs
ZEFjY2VwdFVuaXRsZXNzVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCiB7CiAgICAgLy8gRklYTUU6IFByZXNlbnRh
dGlvbmFsIEhUTUwgYXR0cmlidXRlcyBzaG91bGRuJ3QgdXNlIHRoZSBDU1MgcGFyc2VyIGZvciBs
ZW5ndGhzCiAgICAgcmV0dXJuIHZhbHVlID09IDAKLSAgICAgICAgfHwgaXNVbml0TGVzc0xlbmd0
aFBhcnNpbmdFbmFibGVkRm9yTW9kZShjc3NQYXJzZXJNb2RlKQorICAgICAgICB8fCBpc1VuaXRM
ZXNzVmFsdWVQYXJzaW5nRW5hYmxlZEZvck1vZGUoY3NzUGFyc2VyTW9kZSkKICAgICAgICAgfHwg
KGNzc1BhcnNlck1vZGUgPT0gSFRNTFF1aXJrc01vZGUgJiYgdW5pdGxlc3MgPT0gVW5pdGxlc3NR
dWlyazo6QWxsb3cpOwogfQogCi1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCitSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNvbnN1bWVMZW5ndGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlLCBVbml0bGVz
c1F1aXJrIHVuaXRsZXNzKQogewogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJh
bmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuKSB7CiAg
ICAgICAgIHN3aXRjaCAodG9rZW4udW5pdFR5cGUoKSkgewotICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6UXVpcmt5RW1zOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19RVUlSS1lfRU1TOgogICAgICAgICAgICAgaWYgKGNzc1Bh
cnNlck1vZGUgIT0gVUFTaGVldE1vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6OkVtczoKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OlJlbXM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpDaHM6
Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpFeHM6Ci0gICAgICAg
IGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHM6Ci0gICAgICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpDZW50aW1ldGVyczoKLSAgICAgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok1pbGxpbWV0ZXJzOgotICAgICAgICBjYXNlIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW5jaGVzOgotICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6UG9pbnRzOgotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6UGljYXM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpVc2VyVW5pdHM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpWaWV3cG9ydFdpZHRoOgotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6Vmlld3BvcnRIZWlnaHQ6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpWaWV3cG9ydE1pbjoKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OlZpZXdwb3J0TWF4OgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OkNTU19FTVM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
czo6Q1NTX1JFTVM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX0NIUzoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1Nf
RVhTOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19QWDoK
KyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfQ006CisgICAg
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX01NOgorICAgICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19JTjoKKyAgICAgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFQ6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BDOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19WVzoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpDU1NfVkg6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6Q1NTX1ZNSU46CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlczo6Q1NTX1ZNQVg6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjE1LDEyICsyMTEsMTAgQEAgQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVMZW5ndGgoQ1NTUGFycwogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVy
aWNWYWx1ZSgpLCB0b2tlbi51bml0VHlwZSgpKTsKICAgICB9CiAgICAgaWYgKHRva2VuLnR5cGUo
KSA9PSBOdW1iZXJUb2tlbikgewotICAgICAgICBpZiAoIXNob3VsZEFjY2VwdFVuaXRsZXNzTGVu
Z3RoKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcykKKyAgICAg
ICAgaWYgKCFzaG91bGRBY2NlcHRVbml0bGVzc1ZhbHVlKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBj
c3NQYXJzZXJNb2RlLCB1bml0bGVzcykKICAgICAgICAgICAgIHx8ICh2YWx1ZVJhbmdlID09IFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZSB1bml0VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxzOwotICAgICAg
ICBpZiAoY3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlKQotICAgICAgICAgICAgdW5p
dFR5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlVzZXJVbml0czsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM6OkNTU19QWDsKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwg
dW5pdFR5cGUpOwogICAgIH0KICAgICBpZiAoY3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVN
b2RlKQpAQCAtMjMxLDEzICsyMjUsMTMgQEAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMZW5n
dGgoQ1NTUGFycwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1DU1NQcmltaXRpdmVWYWx1ZSog
Y29uc3VtZVBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFs
dWVSYW5nZSkKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBlcmNlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKIHsKICAgICBjb25z
dCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRva2VuLnR5
cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pIHsKICAgICAgICAgaWYgKHZhbHVlUmFuZ2UgPT0gVmFs
dWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLm51bWVyaWNWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVS
Q0VOVEFHRSk7CiAgICAgfQogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgdmFsdWVS
YW5nZSk7CiAgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFy
c2VyLnZhbHVlKCkpIHsKQEAgLTI0Nyw3ICsyNDEsNyBAQCBDU1NQcmltaXRpdmVWYWx1ZSogY29u
c3VtZVBlcmNlbnQoQ1NTUGFyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wgY2FuQ29u
c3VtZUNhbGNWYWx1ZShDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5LCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUpCitzdGF0aWMgYm9vbCBjYW5Db25zdW1lQ2FsY1ZhbHVlKENhbGN1bGF0
aW9uQ2F0ZWdvcnkgY2F0ZWdvcnksIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAg
ICBpZiAoY2F0ZWdvcnkgPT0gQ2FsY0xlbmd0aCB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudCB8
fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudExlbmd0aCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0yNTUsMTMgKzI0OSwxMyBAQCBib29sIGNhbkNvbnN1bWVDYWxjVmFsdWUoQ2FsY3VsYXRpb25D
YXRlCiAgICAgaWYgKGNzc1BhcnNlck1vZGUgIT0gU1ZHQXR0cmlidXRlTW9kZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGNhdGVnb3J5ID09IENhbGNOdW1iZXIgfHwgY2F0ZWdv
cnkgPT0gQ2FsY1BlcmNlbnROdW1iZXIgfHwgY2F0ZWdvcnkgPT0gQ2FsY0xlbmd0aE51bWJlciB8
fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudExlbmd0aE51bWJlcikKKyAgICBpZiAoY2F0ZWdvcnkg
PT0gQ2FsY051bWJlciB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudE51bWJlcikKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUNTU1ByaW1pdGl2ZVZhbHVl
KiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NR
dWlyayB1bml0bGVzcykKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUxlbmd0aE9y
UGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCiB7
CiAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwogICAgIGlm
ICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4gfHwgdG9rZW4udHlwZSgpID09IE51bWJl
clRva2VuKQpAQCAtMjc2LDI0ICsyNzAsMjUgQEAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVM
ZW5ndGhPclBlcmNlbgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1DU1NQcmltaXRpdmVWYWx1
ZSogY29uc3VtZUFuZ2xlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lQW5nbGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKIHsKICAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRv
a2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikgewogICAgICAgICBzd2l0Y2ggKHRva2VuLnVu
aXRUeXBlKCkpIHsKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkRl
Z3JlZXM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpSYWRpYW5z
OgotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6R3JhZGlhbnM6Ci0g
ICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpUdXJuczoKKyAgICAgICAg
Y2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfREVHOgorICAgICAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19SQUQ6CisgICAgICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0dSQUQ6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1RVUk46CiAgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgp
Lm51bWVyaWNWYWx1ZSgpLCB0b2tlbi51bml0VHlwZSgpKTsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gTnVtYmVyVG9rZW4gJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPT0gMCkgewor
ICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4gJiYgc2hvdWxkQWNjZXB0VW5pdGxl
c3NWYWx1ZSh0b2tlbi5udW1lcmljVmFsdWUoKSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpKSB7
CiAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7Ci0gICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6RGVncmVlcyk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19ERUcpOwogICAgIH0KKwogICAg
IENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgaWYgKGNv
bnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKICAg
ICAgICAgaWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgpID09IENhbGNBbmdsZSkKQEAgLTMwMiwx
NCArMjk3LDE3IEBAIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQW5nbGUoQ1NTUGFyc2UKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVUaW1lKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCitSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVUaW1lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5p
dGxlc3NRdWlyayB1bml0bGVzcykKIHsKICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4g
PSByYW5nZS5wZWVrKCk7Ci0gICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikg
eworICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdCA9IHRva2VuLnVuaXRUeXBl
KCk7CisgICAgYm9vbCBhY2NlcHRVbml0bGVzcyA9IHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tl
biAmJiBzaG91bGRBY2NlcHRVbml0bGVzc1ZhbHVlKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBjc3NQ
YXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgaWYgKGFjY2VwdFVuaXRsZXNzKQorICAgICAgICB1
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX01TOworICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4gfHwgYWNjZXB0VW5pdGxlc3MpIHsKICAgICAgICAg
aWYgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNW
YWx1ZSgpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGUgdW5pdCA9IHRva2VuLnVuaXRUeXBlKCk7Ci0gICAgICAgIGlm
ICh1bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TWlsbGlzZWNvbmRzIHx8IHVu
aXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpTZWNvbmRzKQorICAgICAgICBpZiAo
dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTVMgfHwgdW5pdCA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUykKICAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CkBAIC0zMjEsMzIgKzMxOSwzMiBAQCBDU1NQcmltaXRpdmVWYWx1ZSogY29u
c3VtZVRpbWUoQ1NTUGFyc2VyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUNTU1ByaW1pdGl2
ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlk
ZW50aWZpZXIocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpKTsKIH0KIAot
Q1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJZGVudFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NWYWx1ZUlEIGxvd2VyLCBDU1NWYWx1ZUlEIHVwcGVyKQorUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnRSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcikKIHsKICAgICBpZiAocmFuZ2Uu
cGVlaygpLmlkKCkgPCBsb3dlciB8fCByYW5nZS5wZWVrKCkuaWQoKSA+IHVwcGVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKIH0KIAot
Q1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3RvbUlkZW50KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQorUmVmUHRyPENTU0N1c3RvbUlkZW50VmFsdWU+IGNvbnN1bWVDdXN0b21JZGVu
dChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5
cGUoKSAhPSBJZGVudFRva2VuIHx8IGlzQ1NTV2lkZUtleXdvcmQocmFuZ2UucGVlaygpLmlkKCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gQ1NTQ3VzdG9tSWRlbnRWYWx1
ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0
cmluZygpKTsKIH0KIAotQ1NTU3RyaW5nVmFsdWUqIGNvbnN1bWVTdHJpbmcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVTdHJpbmco
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBl
KCkgIT0gU3RyaW5nVG9rZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBD
U1NTdHJpbmdWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
dmFsdWUoKS50b1N0cmluZygpKTsKKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1NUUklORyk7CiB9CiAKIFN0cmluZ1Zp
ZXcgY29uc3VtZVVybEFzU3RyaW5nVmlldyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAg
LTM3MSwxMiArMzY5LDEyIEBAIFN0cmluZ1ZpZXcgY29uc3VtZVVybEFzU3RyaW5nVmlldyhDU1NQ
YXIKICAgICByZXR1cm4gU3RyaW5nVmlldygpOwogfQogCi1DU1NVUklWYWx1ZSogY29uc3VtZVVy
bChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y29uc3VtZVVybChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBTdHJpbmdWaWV3
IHVybCA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcocmFuZ2UpOwogICAgIGlmICh1cmwuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBDU1NVUklWYWx1ZTo6Y3Jl
YXRlKHVybC50b1N0cmluZygpKTsKKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh1cmwudG9TdHJpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1VSSSk7
CiB9CiAKIHN0YXRpYyBpbnQgY2xhbXBSR0JDb21wb25lbnQoY29uc3QgQ1NTUHJpbWl0aXZlVmFs
dWUmIHZhbHVlKQpAQCAtMzkyLDcgKzM5MCw3IEBAIHN0YXRpYyBib29sIHBhcnNlUkdCUGFyYW1l
dGVycyhDU1NQYXJzZXIKIHsKICAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9
PSBDU1NWYWx1ZVJnYiB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmdi
YSk7CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdl
KTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29sb3JQYXJhbWV0ZXIgPSBjb25zdW1lSW50ZWdl
cihhcmdzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbG9yUGFyYW1ldGVyID0g
Y29uc3VtZUludGVnZXIoYXJncyk7CiAgICAgaWYgKCFjb2xvclBhcmFtZXRlcikKICAgICAgICAg
Y29sb3JQYXJhbWV0ZXIgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKICAg
ICBpZiAoIWNvbG9yUGFyYW1ldGVyKQpAQCAtNDI4LDcgKzQyNiw3IEBAIHN0YXRpYyBib29sIHBh
cnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXIKIHsKICAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1
bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUhzbCB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09
IENTU1ZhbHVlSHNsYSk7CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1
bmN0aW9uKHJhbmdlKTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogaHNsVmFsdWUgPSBjb25zdW1l
TnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gaHNsVmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOwogICAgIGlm
ICghaHNsVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkb3VibGUgY29sb3JBcnJh
eVszXTsKQEAgLTUwMCw3ICs0OTgsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUNvbG9yRnVuY3Rpb24o
Q1NTUGFyc2VyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNTU1ZhbHVlKiBjb25zdW1lQ29sb3Io
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
Ym9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1
bWVDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlLCBib29sIGFjY2VwdFF1aXJreUNvbG9ycykKIHsKICAgICBDU1NWYWx1ZUlEIGlkID0g
cmFuZ2UucGVlaygpLmlkKCk7CiAgICAgaWYgKFN0eWxlQ29sb3I6OmlzQ29sb3JLZXl3b3JkKGlk
KSkgewpAQCAtNTExLDEwICs1MDksMTAgQEAgQ1NTVmFsdWUqIGNvbnN1bWVDb2xvcihDU1NQYXJz
ZXJUb2tlblJhbgogICAgIFJHQkEzMiBjb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKICAgICBp
ZiAoIXBhcnNlSGV4Q29sb3IocmFuZ2UsIGNvbG9yLCBhY2NlcHRRdWlya3lDb2xvcnMpICYmICFw
YXJzZUNvbG9yRnVuY3Rpb24ocmFuZ2UsIGNvbG9yKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIENTU0NvbG9yVmFsdWU6OmNyZWF0ZShjb2xvcik7CisgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihjb2xvcik7CiB9CiAKLXN0YXRpYyBDU1NQcmlt
aXRpdmVWYWx1ZSogY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxl
c3MpCitzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRpb25Db21w
b25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5
cGUoKSA9PSBJZGVudFRva2VuKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVl
TGVmdCwgQ1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tLCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1
ZUNlbnRlcj4ocmFuZ2UpOwpAQCAtNTMxLDMxICs1MjksMzggQEAgc3RhdGljIGJvb2wgaXNWZXJ0
aWNhbFBvc2l0aW9uS2V5d29yZE9ubAogICAgIHJldHVybiB2YWx1ZS5pc1ZhbHVlSUQoKSAmJiAo
dmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlVG9wIHx8IHZhbHVlLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUJvdHRvbSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBvc2l0aW9uRnJvbU9uZVZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSom
IHJlc3VsdFkpCitzdGF0aWMgdm9pZCBwb3NpdGlvbkZyb21PbmVWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZSYgdmFsdWUsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFgsIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFkpCiB7Ci0gICAgYm9vbCB2YWx1ZUFwcGxpZXNUb1lB
eGlzT25seSA9IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZSk7Ci0gICAgcmVz
dWx0WCA9IHZhbHVlOworICAgIGJvb2wgdmFsdWVBcHBsaWVzVG9ZQXhpc09ubHkgPSBpc1ZlcnRp
Y2FsUG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZSk7CisgICAgcmVzdWx0WCA9ICZ2YWx1ZTsKICAg
ICByZXN1bHRZID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVD
ZW50ZXIpOwogICAgIGlmICh2YWx1ZUFwcGxpZXNUb1lBeGlzT25seSkKICAgICAgICAgc3RkOjpz
d2FwKHJlc3VsdFgsIHJlc3VsdFkpOwogfQogCi1zdGF0aWMgYm9vbCBwb3NpdGlvbkZyb21Ud29W
YWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVl
MiwKLSAgICBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3N0YXRpYyBi
b29sIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyhDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUxLCBDU1NQ
cmltaXRpdmVWYWx1ZSYgdmFsdWUyLAorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJl
c3VsdFgsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFkpCiB7Ci0gICAgYm9vbCBt
dXN0T3JkZXJBc1hZID0gaXNIb3Jpem9udGFsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUxKSB8
fCBpc1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUyKQotICAgICAgICB8fCAhdmFs
dWUxLT5pc1ZhbHVlSUQoKSB8fCAhdmFsdWUyLT5pc1ZhbHVlSUQoKTsKLSAgICBib29sIG11c3RP
cmRlckFzWVggPSBpc1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUxKSB8fCBpc0hv
cml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTIpOworICAgIGJvb2wgbXVzdE9yZGVy
QXNYWSA9IGlzSG9yaXpvbnRhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUxKSB8fCBpc1ZlcnRp
Y2FsUG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZTIpCisgICAgICAgIHx8ICF2YWx1ZTEuaXNWYWx1
ZUlEKCkgfHwgIXZhbHVlMi5pc1ZhbHVlSUQoKTsKKyAgICBib29sIG11c3RPcmRlckFzWVggPSBp
c1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZTEpIHx8IGlzSG9yaXpvbnRhbFBvc2l0
aW9uS2V5d29yZE9ubHkodmFsdWUyKTsKICAgICBpZiAobXVzdE9yZGVyQXNYWSAmJiBtdXN0T3Jk
ZXJBc1lYKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0WCA9IHZhbHVlMTsKLSAg
ICByZXN1bHRZID0gdmFsdWUyOworICAgIHJlc3VsdFggPSAmdmFsdWUxOworICAgIHJlc3VsdFkg
PSAmdmFsdWUyOwogICAgIGlmIChtdXN0T3JkZXJBc1lYKQogICAgICAgICBzdGQ6OnN3YXAocmVz
dWx0WCwgcmVzdWx0WSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHBvc2l0
aW9uRnJvbVRocmVlT3JGb3VyVmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVlKiogdmFsdWVzLCBDU1NW
YWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKKyAgICAKK3RlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3M+CitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRp
dmVWYWx1ZVBhaXIoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLikpOworfQorCitzdGF0aWMgYm9vbCBwb3NpdGlvbkZyb21UaHJlZU9yRm91clZhbHVl
cyhDU1NQcmltaXRpdmVWYWx1ZSoqIHZhbHVlcywgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYg
cmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkKIHsKICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogY2VudGVyID0gbnVsbHB0cjsKICAgICBmb3IgKGludCBpID0gMDsgdmFs
dWVzW2ldOyBpKyspIHsKQEAgLTU3MSwxMiArNTc2LDExIEBAIHN0YXRpYyBib29sIHBvc2l0aW9u
RnJvbVRocmVlT3JGb3VyVmFsdWUKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
LSAgICAgICAgQ1NTVmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7Ci0gICAgICAgIGlmICh2YWx1ZXNb
aSArIDFdICYmICF2YWx1ZXNbaSArIDFdLT5pc1ZhbHVlSUQoKSkgewotICAgICAgICAgICAgcmVz
dWx0ID0gQ1NTVmFsdWVQYWlyOjpjcmVhdGUoY3VycmVudFZhbHVlLCB2YWx1ZXNbKytpXSwgQ1NT
VmFsdWVQYWlyOjpLZWVwSWRlbnRpY2FsVmFsdWVzKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQ7CisgICAgICAgIGlmICh2YWx1ZXNb
aSArIDFdICYmICF2YWx1ZXNbaSArIDFdLT5pc1ZhbHVlSUQoKSkKKyAgICAgICAgICAgIHJlc3Vs
dCA9IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihjdXJyZW50VmFsdWUsIHZhbHVlc1srK2ldKTsK
KyAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVudFZhbHVlOwotICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJp
Z2h0KSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0WCkKQEAgLTYwNiw3NCArNjEwLDc0IEBAIHN0
YXRpYyBib29sIHBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFsdWUKIAogLy8gRklYTUU6IFRoaXMg
bWF5IGNvbnN1bWUgZnJvbSB0aGUgcmFuZ2UgdXBvbiBmYWlsdXJlLiBUaGUgYmFja2dyb3VuZAog
Ly8gc2hvcnRoYW5kIHdvcmtzIGFyb3VuZCBpdCwgYnV0IHdlIHNob3VsZCBqdXN0IGZpeCBpdCBo
ZXJlLgotYm9vbCBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgQ1NTVmFs
dWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpCitib29sIGNvbnN1bWVQb3NpdGlvbihD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBV
bml0bGVzc1F1aXJrIHVuaXRsZXNzLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiByZXN1bHRY
LCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiByZXN1bHRZKQogewotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIHVuaXRsZXNzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlMSA9
IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3Mp
OwogICAgIGlmICghdmFsdWUxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogdmFsdWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZTIgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRs
ZXNzKTsKICAgICBpZiAoIXZhbHVlMikgewotICAgICAgICBwb3NpdGlvbkZyb21PbmVWYWx1ZSh2
YWx1ZTEsIHJlc3VsdFgsIHJlc3VsdFkpOworICAgICAgICBwb3NpdGlvbkZyb21PbmVWYWx1ZSgq
dmFsdWUxLCByZXN1bHRYLCByZXN1bHRZKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMyA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVu
dChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gdmFsdWUzID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgaWYgKCF2YWx1ZTMpCi0gICAgICAgIHJldHVybiBwb3Np
dGlvbkZyb21Ud29WYWx1ZXModmFsdWUxLCB2YWx1ZTIsIHJlc3VsdFgsIHJlc3VsdFkpOworICAg
ICAgICByZXR1cm4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKCp2YWx1ZTEsICp2YWx1ZTIsIHJlc3Vs
dFgsIHJlc3VsdFkpOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlNCA9IGNvbnN1bWVQ
b3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWU0ID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50
KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHZhbHVlc1s1XTsKLSAgICB2YWx1ZXNbMF0gPSB2YWx1ZTE7Ci0gICAgdmFsdWVzWzFdID0gdmFs
dWUyOwotICAgIHZhbHVlc1syXSA9IHZhbHVlMzsKLSAgICB2YWx1ZXNbM10gPSB2YWx1ZTQ7Cisg
ICAgdmFsdWVzWzBdID0gdmFsdWUxLmdldCgpOworICAgIHZhbHVlc1sxXSA9IHZhbHVlMi5nZXQo
KTsKKyAgICB2YWx1ZXNbMl0gPSB2YWx1ZTMuZ2V0KCk7CisgICAgdmFsdWVzWzNdID0gdmFsdWU0
LmdldCgpOwogICAgIHZhbHVlc1s0XSA9IG51bGxwdHI7CiAgICAgcmV0dXJuIHBvc2l0aW9uRnJv
bVRocmVlT3JGb3VyVmFsdWVzKHZhbHVlcywgcmVzdWx0WCwgcmVzdWx0WSk7CiB9CiAKLUNTU1Zh
bHVlUGFpciogY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCitSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNz
KQogewotICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKLSAgICBDU1NWYWx1ZSogcmVz
dWx0WSA9IG51bGxwdHI7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHRYOwor
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0WTsKICAgICBpZiAoY29uc3VtZVBv
c2l0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcywgcmVzdWx0WCwgcmVzdWx0WSkp
Ci0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShyZXN1bHRYLCByZXN1bHRZLCBD
U1NWYWx1ZVBhaXI6OktlZXBJZGVudGljYWxWYWx1ZXMpOworICAgICAgICByZXR1cm4gY3JlYXRl
UHJpbWl0aXZlVmFsdWVQYWlyKHJlc3VsdFgucmVsZWFzZU5vbk51bGwoKSwgcmVzdWx0WS5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBjb25zdW1lT25l
T3JUd29WYWx1ZWRQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBDU1NWYWx1ZSomIHJl
c3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK2Jvb2wgY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9z
aXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYg
cmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkKIHsKLSAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogdmFsdWUxID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBj
c3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2
YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVu
aXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTIgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2Us
IGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZhbHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
dW5pdGxlc3MpOwogICAgIGlmICghdmFsdWUyKSB7Ci0gICAgICAgIHBvc2l0aW9uRnJvbU9uZVZh
bHVlKHZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7CisgICAgICAgIHBvc2l0aW9uRnJvbU9uZVZh
bHVlKCp2YWx1ZTEsIHJlc3VsdFgsIHJlc3VsdFkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9Ci0gICAgcmV0dXJuIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyh2YWx1ZTEsIHZhbHVlMiwgcmVz
dWx0WCwgcmVzdWx0WSk7CisgICAgcmV0dXJuIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcygqdmFsdWUx
LCAqdmFsdWUyLCByZXN1bHRYLCByZXN1bHRZKTsKIH0KIAogLy8gVGhpcyBzaG91bGQgZ28gYXdh
eSBvbmNlIHdlIGRyb3Agc3VwcG9ydCBmb3IgLXdlYmtpdC1ncmFkaWVudAotc3RhdGljIENTU1By
aW1pdGl2ZVZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgYXJncywgYm9vbCBob3Jpem9udGFsKQorc3RhdGljIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KENTU1BhcnNlclRva2VuUmFu
Z2UmIGFyZ3MsIGJvb2wgaG9yaXpvbnRhbCkKIHsKICAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgp
ID09IElkZW50VG9rZW4pIHsKICAgICAgICAgaWYgKChob3Jpem9udGFsICYmIGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUxlZnQ+KGFyZ3MpKSB8fCAoIWhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENT
U1ZhbHVlVG9wPihhcmdzKSkpCi0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZSgwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJjZW50YWdlKTsKKyAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuLCBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIGlmICgoaG9yaXpv
bnRhbCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSaWdodD4oYXJncykpIHx8ICghaG9yaXpvbnRh
bCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVCb3R0b20+KGFyZ3MpKSkKLSAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEwMC4sIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSgxMDAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVSQ0VO
VEFHRSk7CiAgICAgICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDZW50ZXI+KGFyZ3MpKQot
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoNTAuLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoNTAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcmVzdWx0ID0gY29uc3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5n
ZUFsbCk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQgPSBjb25zdW1lUGVy
Y2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmVz
dWx0ID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCiAvLyBVc2VkIHRvIHBhcnNlIGNvbG9ycyBmb3IgLXdlYmtpdC1ncmFkaWVudCgu
Li4pLgotc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50U3RvcENvbG9y
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkK
K3N0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkR3JhZGll
bnRTdG9wQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQogewogICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQ3VycmVu
dGNvbG9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY5MSw3ICs2OTUsNyBAQCBzdGF0
aWMgYm9vbCBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50Q29sCiAgICAgaWYgKGlkID09IENTU1Zh
bHVlRnJvbSB8fCBpZCA9PSBDU1NWYWx1ZVRvKSB7CiAgICAgICAgIHBvc2l0aW9uID0gKGlkID09
IENTU1ZhbHVlRnJvbSkgPyAwIDogMTsKICAgICB9IGVsc2UgewotICAgICAgICBEQ0hFQ0soaWQg
PT0gQ1NTVmFsdWVDb2xvclN0b3ApOworICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVDb2xv
clN0b3ApOwogICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgYXJnID0gYXJncy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoYXJnLnR5cGUoKSA9PSBQZXJjZW50
YWdlVG9rZW4pCiAgICAgICAgICAgICBwb3NpdGlvbiA9IGFyZy5udW1lcmljVmFsdWUoKSAvIDEw
MC4wOwpAQCAtNzA0LDE0ICs3MDgsMTQgQEAgc3RhdGljIGJvb2wgY29uc3VtZURlcHJlY2F0ZWRH
cmFkaWVudENvbAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHN0b3Au
bV9wb3NpdGlvbiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocG9zaXRpb24sIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICBzdG9wLm1fcG9zaXRpb24gPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHBvc2l0aW9uLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGVzOjpDU1NfTlVNQkVSKTsKICAgICBzdG9wLm1fY29sb3IgPSBjb25zdW1lRGVwcmVjYXRlZEdy
YWRpZW50U3RvcENvbG9yKGFyZ3MsIGNzc1BhcnNlck1vZGUpOwogICAgIHJldHVybiBzdG9wLm1f
Y29sb3IgJiYgYXJncy5hdEVuZCgpOwogfQogCi1zdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVEZXBy
ZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRH
cmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpCiB7Ci0gICAgQ1NTR3JhZGllbnRWYWx1ZSogcmVzdWx0ID0gbnVsbHB0cjsKKyAgICBS
ZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gcmVzdWx0OwogICAgIENTU1ZhbHVlSUQgaWQgPSBhcmdz
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKICAgICBib29sIGlzRGVwcmVjYXRl
ZFJhZGlhbEdyYWRpZW50ID0gKGlkID09IENTU1ZhbHVlUmFkaWFsKTsKICAgICBpZiAoaXNEZXBy
ZWNhdGVkUmFkaWFsR3JhZGllbnQpCkBAIC03MjEsNDMgKzcyNSw0MyBAQCBzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllCiAgICAgaWYgKCFyZXN1bHQgfHwgIWNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVu
dFBvaW50KGFyZ3MsIHRydWUpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcG9pbnQg
PSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoYXJncywgdHJ1ZSk7CiAgICAgaWYgKCFw
b2ludCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmVzdWx0LT5zZXRGaXJzdFgocG9p
bnQpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RYKFdURk1vdmUocG9pbnQpKTsKICAgICBwb2ludCA9
IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChhcmdzLCBmYWxzZSk7CiAgICAgaWYgKCFw
b2ludCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmVzdWx0LT5zZXRGaXJzdFkocG9p
bnQpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RZKFdURk1vdmUocG9pbnQpKTsKIAogICAgIGlmICgh
Y29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAvLyBGb3IgcmFkaWFsIGdyYWRpZW50cyBvbmx5LCB3ZSBub3cgZXhwZWN0
IGEgbnVtZXJpYyByYWRpdXMuCiAgICAgaWYgKGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KSB7
Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMgPSBjb25zdW1lTnVtYmVyKGFyZ3Ms
IFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1
cyA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgIGlmICghcmFk
aXVzIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHRvQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXN1
bHQpLT5zZXRGaXJzdFJhZGl1cyhyYWRpdXMpOworICAgICAgICBkb3duY2FzdDxDU1NSYWRpYWxH
cmFkaWVudFZhbHVlPihyZXN1bHQuZ2V0KCkpLT5zZXRGaXJzdFJhZGl1cyhXVEZNb3ZlKHJhZGl1
cykpOwogICAgIH0KIAogICAgIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50
KGFyZ3MsIHRydWUpOwogICAgIGlmICghcG9pbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJlc3VsdC0+c2V0U2Vjb25kWChwb2ludCk7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRYKFdU
Rk1vdmUocG9pbnQpKTsKICAgICBwb2ludCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2lu
dChhcmdzLCBmYWxzZSk7CiAgICAgaWYgKCFwb2ludCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRZKHBvaW50KTsKKyAgICByZXN1bHQtPnNldFNlY29uZFko
V1RGTW92ZShwb2ludCkpOwogCiAgICAgLy8gRm9yIHJhZGlhbCBncmFkaWVudHMgb25seSwgd2Ug
bm93IGV4cGVjdCB0aGUgc2Vjb25kIHJhZGl1cy4KICAgICBpZiAoaXNEZXByZWNhdGVkUmFkaWFs
R3JhZGllbnQpIHsKICAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiByYWRpdXMgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAg
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cyA9IGNvbnN1bWVOdW1iZXIoYXJn
cywgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgIGlmICghcmFkaXVzKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIHRvQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXN1bHQpLT5z
ZXRTZWNvbmRSYWRpdXMocmFkaXVzKTsKKyAgICAgICAgZG93bmNhc3Q8Q1NTUmFkaWFsR3JhZGll
bnRWYWx1ZT4ocmVzdWx0LmdldCgpKS0+c2V0U2Vjb25kUmFkaXVzKFdURk1vdmUocmFkaXVzKSk7
CiAgICAgfQogCiAgICAgQ1NTR3JhZGllbnRDb2xvclN0b3Agc3RvcDsKQEAgLTc5Nyw1NiArODAx
LDU2IEBAIHN0YXRpYyBib29sIGNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoQ1MKICAgICByZXR1
cm4gZ3JhZGllbnQtPnN0b3BDb3VudCgpID49IDI7CiB9CiAKLXN0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykK
K3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBD
U1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcpCiB7Ci0gICAgQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZSogcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NT
UHJlZml4ZWRSYWRpYWxHcmFkaWVudCk7Ci0gICAgQ1NTVmFsdWUqIGNlbnRlclggPSBudWxscHRy
OwotICAgIENTU1ZhbHVlKiBjZW50ZXJZID0gbnVsbHB0cjsKKyAgICBSZWZQdHI8Q1NTUmFkaWFs
R3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJl
cGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCk7CisgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBjZW50ZXJYOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVy
WTsKICAgICBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihhcmdzLCBjc3NQYXJzZXJNb2Rl
LCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIGNlbnRlclgsIGNlbnRlclkpOwogICAgIGlmICgoY2Vu
dGVyWCB8fCBjZW50ZXJZKSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQtPnNldEZpcnN0WCh0b0NT
U1ByaW1pdGl2ZVZhbHVlKGNlbnRlclgpKTsKLSAgICByZXN1bHQtPnNldFNlY29uZFgodG9DU1NQ
cmltaXRpdmVWYWx1ZShjZW50ZXJYKSk7Ci0gICAgcmVzdWx0LT5zZXRGaXJzdFkodG9DU1NQcmlt
aXRpdmVWYWx1ZShjZW50ZXJZKSk7Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRZKHRvQ1NTUHJpbWl0
aXZlVmFsdWUoY2VudGVyWSkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RYKFdURk1vdmUoY2VudGVy
WCkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RZKFdURk1vdmUoY2VudGVyWSkpOworICAgIHJlc3Vs
dC0+c2V0U2Vjb25kWChXVEZNb3ZlKGNlbnRlclgpKTsKKyAgICByZXN1bHQtPnNldFNlY29uZFko
V1RGTW92ZShjZW50ZXJZKSk7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2hhcGUgPSBjb25z
dW1lSWRlbnQ8Q1NTVmFsdWVDaXJjbGUsIENTU1ZhbHVlRWxsaXBzZT4oYXJncyk7Ci0gICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHNpemVLZXl3b3JkID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ2xvc2Vz
dFNpZGUsIENTU1ZhbHVlQ2xvc2VzdENvcm5lciwgQ1NTVmFsdWVGYXJ0aGVzdFNpZGUsIENTU1Zh
bHVlRmFydGhlc3RDb3JuZXIsIENTU1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4oYXJncyk7
CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzaGFwZSA9IGNvbnN1bWVJZGVudDxDU1NW
YWx1ZUNpcmNsZSwgQ1NTVmFsdWVFbGxpcHNlPihhcmdzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHNpemVLZXl3b3JkID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ2xvc2VzdFNpZGUs
IENTU1ZhbHVlQ2xvc2VzdENvcm5lciwgQ1NTVmFsdWVGYXJ0aGVzdFNpZGUsIENTU1ZhbHVlRmFy
dGhlc3RDb3JuZXIsIENTU1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4oYXJncyk7CiAgICAg
aWYgKCFzaGFwZSkKICAgICAgICAgc2hhcGUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDaXJjbGUs
IENTU1ZhbHVlRWxsaXBzZT4oYXJncyk7Ci0gICAgcmVzdWx0LT5zZXRTaGFwZShzaGFwZSk7Ci0g
ICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihzaXplS2V5d29yZCk7CisgICAgcmVzdWx0LT5z
ZXRTaGFwZShzaGFwZS5nZXQoKSk7CisgICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihzaXpl
S2V5d29yZC5nZXQoKSk7CiAKICAgICAvLyBPciwgdHdvIGxlbmd0aHMgb3IgcGVyY2VudGFnZXMK
ICAgICBpZiAoIXNoYXBlICYmICFzaXplS2V5d29yZCkgewotICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogaG9yaXpvbnRhbFNpemUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1Bh
cnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVy
dGljYWxTaXplID0gbnVsbHB0cjsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBo
b3Jpem9udGFsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmVy
dGljYWxTaXplOwogICAgICAgICBpZiAoaG9yaXpvbnRhbFNpemUpIHsKICAgICAgICAgICAgIHZl
cnRpY2FsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZUFsbCk7CiAgICAgICAgICAgICBpZiAoIXZlcnRpY2FsU2l6ZSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoYXJncyk7Ci0gICAgICAgICAgICByZXN1bHQtPnNldEVuZEhvcml6b250YWxT
aXplKGhvcml6b250YWxTaXplKTsKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0RW5kVmVydGljYWxT
aXplKHZlcnRpY2FsU2l6ZSk7CisgICAgICAgICAgICByZXN1bHQtPnNldEVuZEhvcml6b250YWxT
aXplKGhvcml6b250YWxTaXplLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0RW5kVmVy
dGljYWxTaXplKHZlcnRpY2FsU2l6ZS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ugewog
ICAgICAgICBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpOwogICAgIH0KLSAg
ICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFyc2VyTW9kZSwgcmVz
dWx0KSkKKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFyc2Vy
TW9kZSwgcmVzdWx0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVSYWRpYWxHcmFkaWVudChD
U1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENT
U0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKIHsKLSAgICBDU1NS
YWRpYWxHcmFkaWVudFZhbHVlKiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVh
dGUocmVwZWF0aW5nLCBDU1NSYWRpYWxHcmFkaWVudCk7CisgICAgUmVmUHRyPENTU1JhZGlhbEdy
YWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBl
YXRpbmcsIENTU1JhZGlhbEdyYWRpZW50KTsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzaGFw
ZSA9IG51bGxwdHI7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNpemVLZXl3b3JkID0gbnVsbHB0
cjsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFNpemUgPSBudWxscHRyOwotICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFNpemUgPSBudWxscHRyOworICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gc2hhcGU7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBz
aXplS2V5d29yZDsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGhvcml6b250YWxTaXpl
OworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmVydGljYWxTaXplOwogCiAgICAgLy8g
Rmlyc3QgcGFydCBvZiBncmFtbWFyLCB0aGUgc2l6ZS9zaGFwZSBjbGF1c2U6CiAgICAgLy8gWyBj
aXJjbGUgfHwgPGxlbmd0aD4gXSB8CkBAIC04NjcsNyArODcxLDcgQEAgc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFs
dWVSYW5nZUFsbCk7CisgICAgICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRl
ciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5n
ZUFsbCk7CiAgICAgICAgICAgICBpZiAoIWNlbnRlcikKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGlmIChob3Jpem9udGFsU2l6ZSkKQEAgLTg5Nyw0MyArOTAxLDQ1IEBAIHN0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVJhZGlhbEdyYWRpZW50KEMKICAgICAgICAgfHwgKHZlcnRp
Y2FsU2l6ZSAmJiB2ZXJ0aWNhbFNpemUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3Ro
KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC0+c2V0U2hhcGUoc2hh
cGUpOwotICAgIHJlc3VsdC0+c2V0U2l6aW5nQmVoYXZpb3Ioc2l6ZUtleXdvcmQpOwotICAgIHJl
c3VsdC0+c2V0RW5kSG9yaXpvbnRhbFNpemUoaG9yaXpvbnRhbFNpemUpOwotICAgIHJlc3VsdC0+
c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7CisgICAgcmVzdWx0LT5zZXRTaGFwZShz
aGFwZS5nZXQoKSk7CisgICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihzaXplS2V5d29yZC5n
ZXQoKSk7CisgICAgcmVzdWx0LT5zZXRFbmRIb3Jpem9udGFsU2l6ZShob3Jpem9udGFsU2l6ZS5n
ZXQoKSk7CisgICAgcmVzdWx0LT5zZXRFbmRWZXJ0aWNhbFNpemUodmVydGljYWxTaXplLmdldCgp
KTsKIAotICAgIENTU1ZhbHVlKiBjZW50ZXJYID0gbnVsbHB0cjsKLSAgICBDU1NWYWx1ZSogY2Vu
dGVyWSA9IG51bGxwdHI7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50ZXJYOwor
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWTsKICAgICBpZiAoYXJncy5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZUF0KSB7CiAgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKTsKICAgICAgICAgY29uc3VtZVBvc2l0aW9uKGFyZ3MsIGNzc1BhcnNlck1vZGUs
IFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgY2VudGVyWCwgY2VudGVyWSk7CiAgICAgICAgIGlmICgh
KGNlbnRlclggJiYgY2VudGVyWSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgcmVzdWx0LT5zZXRGaXJzdFgoY2VudGVyWCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZ
KGNlbnRlclkpOworICAgICAgICAKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoV1RGTW92ZShj
ZW50ZXJYKSk7CisgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZKFdURk1vdmUoY2VudGVyWSkpOwor
ICAgICAgICAKICAgICAgICAgLy8gUmlnaHQgbm93LCBDU1MgcmFkaWFsIGdyYWRpZW50cyBoYXZl
IHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgY2VudGVycy4KLSAgICAgICAgcmVzdWx0LT5zZXRTZWNv
bmRYKGNlbnRlclgpOwotICAgICAgICByZXN1bHQtPnNldFNlY29uZFkoY2VudGVyWSk7CisgICAg
ICAgIHJlc3VsdC0+c2V0U2Vjb25kWChXVEZNb3ZlKGNlbnRlclgpKTsKKyAgICAgICAgcmVzdWx0
LT5zZXRTZWNvbmRZKFdURk1vdmUoY2VudGVyWSkpOwogICAgIH0KIAogICAgIGlmICgoc2hhcGUg
fHwgc2l6ZUtleXdvcmQgfHwgaG9yaXpvbnRhbFNpemUgfHwgY2VudGVyWCB8fCBjZW50ZXJZKSAm
JiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNzc1Bh
cnNlck1vZGUsIHJlc3VsdCkpCisgICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFy
Z3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUxpbmVh
ckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nLCBDU1NHcmFkaWVudFR5cGUgZ3Jh
ZGllbnRUeXBlKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUxpbmVhckdyYWRpZW50
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
Q1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nLCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBl
KQogewotICAgIENTU0xpbmVhckdyYWRpZW50VmFsdWUqIHJlc3VsdCA9IENTU0xpbmVhckdyYWRp
ZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIGdyYWRpZW50VHlwZSk7CisgICAgUmVmUHRyPENT
U0xpbmVhckdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNy
ZWF0ZShyZXBlYXRpbmcsIGdyYWRpZW50VHlwZSk7CiAKICAgICBib29sIGV4cGVjdENvbW1hID0g
dHJ1ZTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogYW5nbGUgPSBjb25zdW1lQW5nbGUoYXJncyk7
Ci0gICAgaWYgKGFuZ2xlKSB7Ci0gICAgICAgIHJlc3VsdC0+c2V0QW5nbGUoYW5nbGUpOwotICAg
IH0gZWxzZSBpZiAoZ3JhZGllbnRUeXBlID09IENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQgfHwg
Y29uc3VtZUlkZW50PENTU1ZhbHVlVG8+KGFyZ3MpKSB7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBlbmRYID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4oYXJn
cyk7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBlbmRZID0gY29uc3VtZUlkZW50PENTU1Zh
bHVlQm90dG9tLCBDU1NWYWx1ZVRvcD4oYXJncyk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1
aXJrOjpGb3JiaWQpOworICAgIGlmIChhbmdsZSkKKyAgICAgICAgcmVzdWx0LT5zZXRBbmdsZShh
bmdsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBlbHNlIGlmIChncmFkaWVudFR5cGUgPT0gQ1NT
UHJlZml4ZWRMaW5lYXJHcmFkaWVudCB8fCBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVUbz4oYXJncykp
IHsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBlbmRYID0gY29uc3VtZUlkZW50
PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4oYXJncyk7CisgICAgICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gZW5kWSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUJvdHRvbSwgQ1NTVmFs
dWVUb3A+KGFyZ3MpOwogICAgICAgICBpZiAoIWVuZFggJiYgIWVuZFkpIHsKICAgICAgICAgICAg
IGlmIChncmFkaWVudFR5cGUgPT0gQ1NTTGluZWFyR3JhZGllbnQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC05NDMsMTI1ICs5NDksOTEgQEAgc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lTGluZWFyR3JhZGllbnQoQwogICAgICAgICAgICAgZW5kWCA9IGNvbnN1bWVJZGVudDxD
U1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGFyZ3MpOwogICAgICAgICB9CiAKLSAgICAgICAg
cmVzdWx0LT5zZXRGaXJzdFgoZW5kWCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZKGVuZFkp
OworICAgICAgICByZXN1bHQtPnNldEZpcnN0WChXVEZNb3ZlKGVuZFgpKTsKKyAgICAgICAgcmVz
dWx0LT5zZXRGaXJzdFkoV1RGTW92ZShlbmRZKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZXhw
ZWN0Q29tbWEgPSBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoZXhwZWN0Q29tbWEgJiYgIWNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2Rl
LCByZXN1bHQpKQorICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQ
YXJzZXJNb2RlLCByZXN1bHQuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1DU1NWYWx1ZSogY29uc3VtZUltYWdlT3JOb25lKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCitSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyQ29udGV4dCBjb250ZXh0KQogewogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBD
U1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwogICAgIHJl
dHVybiBjb25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVDcm9zc0ZhZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyQ29u
dGV4dCBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNyb3NzRmFkZShD
U1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCiB7Ci0g
ICAgQ1NTVmFsdWUqIGZyb21JbWFnZVZhbHVlID0gY29uc3VtZUltYWdlT3JOb25lKGFyZ3MsIGNv
bnRleHQpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gZnJvbUltYWdlVmFsdWUgPSBjb25zdW1lSW1h
Z2VPck5vbmUoYXJncywgY29udGV4dCk7CiAgICAgaWYgKCFmcm9tSW1hZ2VWYWx1ZSB8fCAhY29u
c3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgQ1NTVmFsdWUqIHRvSW1hZ2VWYWx1ZSA9IGNvbnN1bWVJbWFnZU9yTm9uZShhcmdz
LCBjb250ZXh0KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvSW1hZ2VWYWx1ZSA9IGNvbnN1bWVJ
bWFnZU9yTm9uZShhcmdzLCBjb250ZXh0KTsKICAgICBpZiAoIXRvSW1hZ2VWYWx1ZSB8fCAhY29u
c3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGVyY2VudGFnZSA9IG51bGxwdHI7CisgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwZXJjZW50YWdlOwogICAgIGNvbnN0IENTU1BhcnNl
clRva2VuJiBwZXJjZW50YWdlQXJnID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgp
OwogICAgIGlmIChwZXJjZW50YWdlQXJnLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pCi0gICAg
ICAgIHBlcmNlbnRhZ2UgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGNsYW1wVG88ZG91Ymxl
PihwZXJjZW50YWdlQXJnLm51bWVyaWNWYWx1ZSgpIC8gMTAwLCAwLCAxKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpOworICAgICAgICBwZXJjZW50YWdlID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGRvdWJsZT4ocGVyY2VudGFnZUFyZy5udW1lcmljVmFs
dWUoKSAvIDEwMCwgMCwgMSksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19OVU1C
RVIpOwogICAgIGVsc2UgaWYgKHBlcmNlbnRhZ2VBcmcudHlwZSgpID09IE51bWJlclRva2VuKQot
ICAgICAgICBwZXJjZW50YWdlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGRv
dWJsZT4ocGVyY2VudGFnZUFyZy5udW1lcmljVmFsdWUoKSwgMCwgMSksIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICAgICAgcGVyY2VudGFnZSA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxkb3VibGU+KHBlcmNlbnRhZ2VBcmcubnVtZXJpY1ZhbHVl
KCksIDAsIDEpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTlVNQkVSKTsKIAog
ICAgIGlmICghcGVyY2VudGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IENTU0Nyb3NzZmFkZVZhbHVlOjpjcmVhdGUoZnJvbUltYWdlVmFsdWUsIHRvSW1hZ2VWYWx1ZSwg
cGVyY2VudGFnZSk7CisgICAgcmV0dXJuIENTU0Nyb3NzZmFkZVZhbHVlOjpjcmVhdGUoZnJvbUlt
YWdlVmFsdWUucmVsZWFzZU5vbk51bGwoKSwgdG9JbWFnZVZhbHVlLnJlbGVhc2VOb25OdWxsKCks
IHBlcmNlbnRhZ2UucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKLXN0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZVBhaW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlckNvbnRleHQgY29u
dGV4dCkKLXsKLSAgICBEQ0hFQ0soUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzUGFpbnRBUElF
bmFibGVkKCkpOwotCi0gICAgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogbmFtZSA9IGNvbnN1bWVDdXN0
b21JZGVudChhcmdzKTsKLSAgICBpZiAoIW5hbWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgcmV0dXJuIENTU1BhaW50VmFsdWU6OmNyZWF0ZShuYW1lKTsKLX0KLQotc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lR2VuZXJhdGVkSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVHZW5lcmF0ZWRJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29u
dGV4dCBjb250ZXh0KQogewogICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rp
b25JZCgpOwogICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CiAgICAg
Q1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlQ29weSk7Ci0g
ICAgQ1NTVmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7Ci0gICAgaWYgKGlkID09IENTU1ZhbHVlUmFk
aWFsR3JhZGllbnQpIHsKLSAgICAgICAgcmVzdWx0ID0gY29uc3VtZVJhZGlhbEdyYWRpZW50KGFy
Z3MsIGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcpOwotICAgIH0gZWxzZSBpZiAoaWQgPT0g
Q1NTVmFsdWVSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCkgewotICAgICAgICByZXN1bHQgPSBjb25z
dW1lUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJlcGVhdGluZyk7Ci0gICAg
fSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdExpbmVhckdyYWRpZW50KSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBzZW5kIGEgZGVwcmVjYXRpb24gbWVzc2FnZS4KLSAgICAg
ICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQotICAgICAgICAgICAgY29udGV4dC51c2VDb3Vu
dGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJLaXRMaW5lYXJHcmFkaWVudCk7
Ci0gICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1v
ZGUoKSwgTm9uUmVwZWF0aW5nLCBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50KTsKLSAgICB9IGVs
c2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nTGluZWFyR3JhZGllbnQpIHsKLSAg
ICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNlbmQgYSBkZXByZWNhdGlvbiBtZXNzYWdlLgot
ICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkpCi0gICAgICAgICAgICBjb250ZXh0LnVz
ZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6RGVwcmVjYXRlZFdlYktpdFJlcGVhdGluZ0xp
bmVhckdyYWRpZW50KTsKLSAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVhckdyYWRpZW50KGFy
Z3MsIGNvbnRleHQubW9kZSgpLCBSZXBlYXRpbmcsIENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQp
OwotICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdMaW5lYXJHcmFkaWVudCkg
ewotICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5t
b2RlKCksIFJlcGVhdGluZywgQ1NTTGluZWFyR3JhZGllbnQpOwotICAgIH0gZWxzZSBpZiAoaWQg
PT0gQ1NTVmFsdWVMaW5lYXJHcmFkaWVudCkgewotICAgICAgICByZXN1bHQgPSBjb25zdW1lTGlu
ZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIE5vblJlcGVhdGluZywgQ1NTTGluZWFy
R3JhZGllbnQpOwotICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRHcmFkaWVudCkg
ewotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgc2VuZCBhIGRlcHJlY2F0aW9uIG1lc3Nh
Z2UuCi0gICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkKLSAgICAgICAgICAgIGNvbnRl
eHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpEZXByZWNhdGVkV2ViS2l0R3JhZGll
bnQpOwotICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50KGFyZ3MsIGNv
bnRleHQubW9kZSgpKTsKLSAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmFkaWFs
R3JhZGllbnQpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNlbmQgYSBkZXByZWNh
dGlvbiBtZXNzYWdlLgotICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkpCi0gICAgICAg
ICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6RGVwcmVjYXRlZFdl
YktpdFJhZGlhbEdyYWRpZW50KTsKLSAgICAgICAgcmVzdWx0ID0gY29uc3VtZURlcHJlY2F0ZWRS
YWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgTm9uUmVwZWF0aW5nKTsKLSAgICB9
IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nUmFkaWFsR3JhZGllbnQpIHsK
LSAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQotICAgICAgICAgICAgY29udGV4dC51
c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJLaXRSZXBlYXRpbmdS
YWRpYWxHcmFkaWVudCk7Ci0gICAgICAgIHJlc3VsdCA9IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFs
R3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJlcGVhdGluZyk7Ci0gICAgfSBlbHNlIGlm
IChpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSkgeworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
cmVzdWx0OworICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJhZGlhbEdyYWRpZW50KQorICAgICAgICBy
ZXN1bHQgPSBjb25zdW1lUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlLCBOb25SZXBl
YXRpbmcpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUmVwZWF0aW5nUmFkaWFsR3JhZGll
bnQpCisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0
Lm1vZGUsIFJlcGVhdGluZyk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRMaW5l
YXJHcmFkaWVudCkKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3Ms
IGNvbnRleHQubW9kZSwgTm9uUmVwZWF0aW5nLCBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50KTsK
KyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFJlcGVhdGluZ0xpbmVhckdyYWRpZW50
KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5t
b2RlLCBSZXBlYXRpbmcsIENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQpOworICAgIGVsc2UgaWYg
KGlkID09IENTU1ZhbHVlUmVwZWF0aW5nTGluZWFyR3JhZGllbnQpCisgICAgICAgIHJlc3VsdCA9
IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUsIFJlcGVhdGluZywgQ1NT
TGluZWFyR3JhZGllbnQpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlTGluZWFyR3JhZGll
bnQpCisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0
Lm1vZGUsIE5vblJlcGVhdGluZywgQ1NTTGluZWFyR3JhZGllbnQpOworICAgIGVsc2UgaWYgKGlk
ID09IENTU1ZhbHVlV2Via2l0R3JhZGllbnQpCisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVEZXBy
ZWNhdGVkR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKTsKKyAgICBlbHNlIGlmIChpZCA9PSBD
U1NWYWx1ZVdlYmtpdFJhZGlhbEdyYWRpZW50KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVw
cmVjYXRlZFJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgTm9uUmVwZWF0aW5nKTsK
KyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFJlcGVhdGluZ1JhZGlhbEdyYWRpZW50
KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KGFyZ3Ms
IGNvbnRleHQubW9kZSwgUmVwZWF0aW5nKTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdl
YmtpdENyb3NzRmFkZSkKICAgICAgICAgcmVzdWx0ID0gY29uc3VtZUNyb3NzRmFkZShhcmdzLCBj
b250ZXh0KTsKLSAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUGFpbnQpIHsKLSAgICAgICAg
cmVzdWx0ID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzUGFpbnRBUElFbmFibGVkKCkgPyBj
b25zdW1lUGFpbnQoYXJncywgY29udGV4dCkgOiBudWxscHRyOwotICAgIH0KKwogICAgIGlmICgh
cmVzdWx0IHx8ICFhcmdzLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJh
bmdlID0gcmFuZ2VDb3B5OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBDU1NWYWx1
ZSogY3JlYXRlQ1NTSW1hZ2VWYWx1ZVdpdGhSZWZlcnJlcihjb25zdCBBdG9taWNTdHJpbmcmIHJh
d1ZhbHVlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQotewotICAgIENTU1ZhbHVl
KiBpbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKHJhd1ZhbHVlLCBjb250ZXh0LmNv
bXBsZXRlVVJMKHJhd1ZhbHVlKSk7Ci0gICAgdG9DU1NJbWFnZVZhbHVlKGltYWdlVmFsdWUpLT5z
ZXRSZWZlcnJlcihjb250ZXh0LnJlZmVycmVyKCkpOwotICAgIHJldHVybiBpbWFnZVZhbHVlOwot
fQotCi1zdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZVNldChDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8
Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZVNldChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBDU1NQYXJzZXJUb2tlblJhbmdl
IHJhbmdlQ29weSA9IHJhbmdlOwogICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1
bWVGdW5jdGlvbihyYW5nZUNvcHkpOwotICAgIENTU0ltYWdlU2V0VmFsdWUqIGltYWdlU2V0ID0g
Q1NTSW1hZ2VTZXRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPENTU0ltYWdlU2V0VmFsdWU+
IGltYWdlU2V0ID0gQ1NTSW1hZ2VTZXRWYWx1ZTo6Y3JlYXRlKCk7CiAgICAgZG8gewogICAgICAg
ICBBdG9taWNTdHJpbmcgdXJsVmFsdWUgPSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KGFyZ3MpLnRv
QXRvbWljU3RyaW5nKCk7CiAgICAgICAgIGlmICh1cmxWYWx1ZS5pc051bGwoKSkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIENTU1ZhbHVlKiBpbWFnZSA9IGNyZWF0ZUNT
U0ltYWdlVmFsdWVXaXRoUmVmZXJyZXIodXJsVmFsdWUsIGNvbnRleHQpOworICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IGltYWdlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGNvbXBsZXRlVVJMKGNv
bnRleHQsIHVybFZhbHVlKSk7CiAgICAgICAgIGltYWdlU2V0LT5hcHBlbmQoKmltYWdlKTsKIAog
ICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSBhcmdzLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCk7CkBAIC0xMDY5LDExICsxMDQxLDExIEBAIHN0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUltYWdlU2V0KENTU1BhcnMKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICBpZiAodG9rZW4udmFsdWUoKSAhPSAieCIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgRENIRUNLKHRva2VuLnVuaXRUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlOjpVbmtub3duKTsKKyAgICAgICAgQVNTRVJUKHRva2VuLnVuaXRUeXBlKCkgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1VOS05PV04pOwogICAgICAgICBkb3Vi
bGUgaW1hZ2VTY2FsZUZhY3RvciA9IHRva2VuLm51bWVyaWNWYWx1ZSgpOwogICAgICAgICBpZiAo
aW1hZ2VTY2FsZUZhY3RvciA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIGltYWdlU2V0LT5hcHBlbmQoKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoaW1hZ2VTY2Fs
ZUZhY3RvciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpKTsKKyAgICAgICAg
aW1hZ2VTZXQtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGltYWdlU2NhbGVGYWN0
b3IsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19OVU1CRVIpKTsKICAgICB9IHdo
aWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKTsKICAgICBpZiAoIWFy
Z3MuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDkwLDExICsxMDYyLDEx
IEBAIHN0YXRpYyBib29sIGlzR2VuZXJhdGVkSW1hZ2UoQ1NTVmFsdWVJRCAKICAgICAgICAgfHwg
aWQgPT0gQ1NTVmFsdWVXZWJraXRHcmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3Nz
RmFkZSB8fCBpZCA9PSBDU1NWYWx1ZVBhaW50OwogfQogCi1DU1NWYWx1ZSogY29uc3VtZUltYWdl
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQsIENv
bnN1bWVHZW5lcmF0ZWRJbWFnZSBnZW5lcmF0ZWRJbWFnZSkKK1JlZlB0cjxDU1NWYWx1ZT4gY29u
c3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250ZXh0IGNv
bnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSBnZW5lcmF0ZWRJbWFnZSkKIHsKICAgICBBdG9t
aWNTdHJpbmcgdXJpID0gY29uc3VtZVVybEFzU3RyaW5nVmlldyhyYW5nZSkudG9BdG9taWNTdHJp
bmcoKTsKICAgICBpZiAoIXVyaS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUNTU0lt
YWdlVmFsdWVXaXRoUmVmZXJyZXIodXJpLCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIENTU0lt
YWdlVmFsdWU6OmNyZWF0ZShjb21wbGV0ZVVSTChjb250ZXh0LCB1cmkpKTsKICAgICBpZiAocmFu
Z2UucGVlaygpLnR5cGUoKSA9PSBGdW5jdGlvblRva2VuKSB7CiAgICAgICAgIENTU1ZhbHVlSUQg
aWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOwogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVXZWJraXRJbWFnZVNldCkKQEAgLTExMDYsNiArMTA3OCw1IEBAIENTU1ZhbHVlKiBjb25zdW1l
SW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW4KIH0KIAogfSAvLyBuYW1lc3BhY2UgQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzCi0qLwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgJ
KHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5k
ZWYgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzX2gKICNkZWZpbmUgQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzX2gKIAotLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NDdXN0b21JZGVudFZh
bHVlLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Bh
cnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCiAjaW5jbHVkZSAi
Q1NTUHJpbWl0aXZlVmFsdWUuaCIKQEAgLTM5LDEwICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQ1NTU3RyaW5nVmFsdWU7Ci1jbGFzcyBDU1NVUklWYWx1ZTsKLWNsYXNz
IENTU1ZhbHVlUGFpcjsKLQogLy8gV2hlbiB0aGVzZSBmdW5jdGlvbnMgYXJlIHN1Y2Nlc3NmdWws
IHRoZXkgd2lsbCBjb25zdW1lIGFsbCB0aGUgcmVsZXZhbnQKIC8vIHRva2VucyBmcm9tIHRoZSBy
YW5nZSBhbmQgYWxzbyBjb25zdW1lIGFueSB3aGl0ZXNwYWNlIHdoaWNoIGZvbGxvd3MuIFdoZW4K
IC8vIHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgZG9lc24ndCBtYXRjaCB0aGUgdHlwZSB3ZSdyZSBs
b29raW5nIGZvciwgdGhlIHJhbmdlCkBAIC02MCwzOSArNTYsMzkgQEAgZW51bSBjbGFzcyBVbml0
bGVzc1F1aXJrIHsKICAgICBGb3JiaWQKIH07CiAKLUNTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1l
SW50ZWdlcihDU1NQYXJzZXJUb2tlblJhbmdlJiwgZG91YmxlIG1pbmltdW1WYWx1ZSA9IC1zdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKLUNTU1ByaW1pdGl2ZVZhbHVlKiBjb25z
dW1lUG9zaXRpdmVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY29uc3VtZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGRvdWJsZSBt
aW5pbXVtVmFsdWUgPSAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CitSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYpOwogYm9vbCBjb25zdW1lTnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBk
b3VibGUmIHJlc3VsdCk7Ci1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZU51bWJlcihDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5nZSk7Ci1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxl
bmd0aChDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5p
dGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7Ci1DU1NQcmltaXRpdmVWYWx1ZSog
Y29uc3VtZVBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOwotQ1NTUHJp
bWl0aXZlVmFsdWUqIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYs
IENTU1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJr
OjpGb3JiaWQpOwotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVBbmdsZShDU1NQYXJzZXJUb2tl
blJhbmdlJik7Ci1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVRpbWUoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYsIFZhbHVlUmFuZ2UpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTnVt
YmVyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlKTsKK1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY29uc3VtZUxlbmd0aChDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CitS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQZXJjZW50KENTU1BhcnNlclRva2VuUmFu
Z2UmLCBWYWx1ZVJhbmdlKTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUxlbmd0
aE9yUGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5n
ZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CitSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNvbnN1bWVBbmdsZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CitSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVUaW1lKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJz
ZXJNb2RlLCBWYWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlk
KTsKIAotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdl
Jik7Ci1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUlkZW50UmFuZ2UoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYsIENTU1ZhbHVlSUQgbG93ZXIsIENTU1ZhbHVlSUQgdXBwZXIpOworUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnRSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdl
JiwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcik7CiB0ZW1wbGF0ZTxDU1NWYWx1
ZUlELCBDU1NWYWx1ZUlELi4uPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCBp
ZCk7Ci10ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IENTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwordGVtcGxhdGU8Q1NTVmFs
dWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJ
ZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAKLS8vIEZJWE1FLU5FV1BBUlNFUiBDU1NDdXN0
b21JZGVudFZhbHVlKiBjb25zdW1lQ3VzdG9tSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwot
Q1NTU3RyaW5nVmFsdWUqIGNvbnN1bWVTdHJpbmcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworUmVm
UHRyPENTU0N1c3RvbUlkZW50VmFsdWU+IGNvbnN1bWVDdXN0b21JZGVudChDU1NQYXJzZXJUb2tl
blJhbmdlJik7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVTdHJpbmcoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYpOwogU3RyaW5nVmlldyBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KENTU1Bh
cnNlclRva2VuUmFuZ2UmKTsKLUNTU1VSSVZhbHVlKiBjb25zdW1lVXJsKENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVVybChDU1NQYXJzZXJU
b2tlblJhbmdlJik7CiAKLUNTU1ZhbHVlKiBjb25zdW1lQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYsIENTU1BhcnNlck1vZGUsIGJvb2wgYWNjZXB0UXVpcmt5Q29sb3JzID0gZmFsc2UpOworUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYs
IENTU1BhcnNlck1vZGUsIGJvb2wgYWNjZXB0UXVpcmt5Q29sb3JzID0gZmFsc2UpOwogCi1DU1NW
YWx1ZVBhaXIqIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyayk7Ci1ib29sIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tl
blJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgQ1NTVmFsdWUqJiByZXN1bHRY
LCBDU1NWYWx1ZSomIHJlc3VsdFkpOwotYm9vbCBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlv
bihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgQ1NT
VmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpOworUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1v
ZGUsIFVuaXRsZXNzUXVpcmspOworYm9vbCBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5S
YW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmssIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4mIHJlc3VsdFgsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFkpOworYm9v
bCBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NT
UGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVz
dWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSk7CiAKIGVudW0gY2xhc3Mg
Q29uc3VtZUdlbmVyYXRlZEltYWdlIHsKICAgICBBbGxvdywKICAgICBGb3JiaWQKIH07CiAKLUNT
U1ZhbHVlKiBjb25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlckNvbnRl
eHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSA9IENvbnN1bWVHZW5lcmF0ZWRJbWFnZTo6QWxsb3cp
OwotQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NT
UGFyc2VyQ29udGV4dCk7CitSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZShDU1NQYXJzZXJU
b2tlblJhbmdlJiwgQ1NTUGFyc2VyQ29udGV4dCwgQ29uc3VtZUdlbmVyYXRlZEltYWdlID0gQ29u
c3VtZUdlbmVyYXRlZEltYWdlOjpBbGxvdyk7CitSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFn
ZU9yTm9uZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyQ29udGV4dCk7CiAKIC8vIFRl
bXBsYXRlIGltcGxlbWVudGF0aW9ucyBhcmUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZmlsZSBmb3Ig
cmVhZGFiaWxpdHkuCiAKQEAgLTExMiw3ICsxMDgsNyBAQCB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4u
IG5hbWVzPiBSZWZQdHI8Q1NTCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NTU1dpZGVLZXl3b3Jk
KGNvbnN0IENTU1ZhbHVlSUQmIGlkKQogewotICAgIHJldHVybiBpZCA9PSBDU1NWYWx1ZUluaXRp
YWwgfHwgaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlVW5zZXQgfHwgaWQg
PT0gQ1NTVmFsdWVEZWZhdWx0OworICAgIHJldHVybiBpZCA9PSBDU1NWYWx1ZUluaXRpYWwgfHwg
aWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NT
VmFsdWVSZXZlcnQgfHwgaWQgPT0gQ1NTVmFsdWVEZWZhdWx0OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NhbGN1bGF0aW9uVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxDYWxjdWxhdGlvblZhbHVl
PiBDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9u
Tm9kZT4gdmFsdWUsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKK1JlZjxD
YWxjdWxhdGlvblZhbHVlPiBDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRy
PENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIFZhbHVlUmFuZ2UgcmFuZ2UpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ2FsY3VsYXRpb25WYWx1ZShXVEZNb3ZlKHZhbHVlKSwgcmFuZ2Up
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgJ
KHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9u
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEgKzQ2LDYgQEAgZW51bSBDYWxjT3BlcmF0
b3IgewogICAgIENhbGNEaXZpZGUgPSAnLycKIH07CiAKLWVudW0gQ2FsY3VsYXRpb25QZXJtaXR0
ZWRWYWx1ZVJhbmdlIHsKLSAgICBDYWxjdWxhdGlvblJhbmdlQWxsLAotICAgIENhbGN1bGF0aW9u
UmFuZ2VOb25OZWdhdGl2ZQotfTsKLQogZW51bSBDYWxjRXhwcmVzc2lvbk5vZGVUeXBlIHsKICAg
ICBDYWxjRXhwcmVzc2lvbk5vZGVVbmRlZmluZWQsCiAgICAgQ2FsY0V4cHJlc3Npb25Ob2RlTnVt
YmVyLApAQCAtMTM2LDE0ICsxMzEsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ2FsY3VsYXRpb25W
YWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGN1bGF0aW9uVmFsdWU+IHsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPENhbGN1bGF0aW9uVmFsdWU+IGNyZWF0ZShzdGQ6
OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1
ZVJhbmdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPENhbGN1bGF0aW9uVmFsdWU+
IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiwgVmFsdWVSYW5nZSk7
CiAgICAgZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0OwogCiAgICAgYm9vbCBz
aG91bGRDbGFtcFRvTm9uTmVnYXRpdmUoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENsYW1wVG9O
b25OZWdhdGl2ZTsgfQogICAgIGNvbnN0IENhbGNFeHByZXNzaW9uTm9kZSYgZXhwcmVzc2lvbigp
IGNvbnN0IHsgcmV0dXJuICptX2V4cHJlc3Npb247IH0KIAogcHJpdmF0ZToKLSAgICBDYWxjdWxh
dGlvblZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+LCBDYWxjdWxhdGlv
blBlcm1pdHRlZFZhbHVlUmFuZ2UpOworICAgIENhbGN1bGF0aW9uVmFsdWUoc3RkOjp1bmlxdWVf
cHRyPENhbGNFeHByZXNzaW9uTm9kZT4sIFZhbHVlUmFuZ2UpOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbV9leHByZXNzaW9uOwogICAgIGJvb2wgbV9zaG91bGRD
bGFtcFRvTm9uTmVnYXRpdmU7CkBAIC0xNTQsOSArMTQ5LDkgQEAgaW5saW5lIENhbGNFeHByZXNz
aW9uTm9kZTo6Q2FsY0V4cHJlc3NpbwogewogfQogCi1pbmxpbmUgQ2FsY3VsYXRpb25WYWx1ZTo6
Q2FsY3VsYXRpb25WYWx1ZShzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBleHBy
ZXNzaW9uLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UgcmFuZ2UpCitpbmxpbmUgQ2Fs
Y3VsYXRpb25WYWx1ZTo6Q2FsY3VsYXRpb25WYWx1ZShzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJl
c3Npb25Ob2RlPiBleHByZXNzaW9uLCBWYWx1ZVJhbmdlIHJhbmdlKQogICAgIDogbV9leHByZXNz
aW9uKFdURk1vdmUoZXhwcmVzc2lvbikpCi0gICAgLCBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2
ZShyYW5nZSA9PSBDYWxjdWxhdGlvblJhbmdlTm9uTmVnYXRpdmUpCisgICAgLCBtX3Nob3VsZENs
YW1wVG9Ob25OZWdhdGl2ZShyYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpCiB7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAkocmV2aXNpb24gMjA1OTkwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkz
LDcgKzI5Myw3IEBAIHN0YXRpYyBMZW5ndGggYmxlbmRNaXhlZFR5cGVzKGNvbnN0IExlbmcKICAg
ICAgICAgcmV0dXJuIHRvOwogICAgICAgICAKICAgICBhdXRvIGJsZW5kID0gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJvZ3Jlc3MpOwotICAg
IHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUoYmxlbmQpLCBD
YWxjdWxhdGlvblJhbmdlQWxsKSk7CisgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVl
OjpjcmVhdGUoV1RGTW92ZShibGVuZCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIAogTGVuZ3RoIGJs
ZW5kKGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyZXNz
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2
aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDE2IEBAIGJvb2wgQ29sb3I6OnBhcnNl
SGV4Q29sb3IoY29uc3QgU3RyaW5nJiAKICAgICByZXR1cm4gcGFyc2VIZXhDb2xvcihuYW1lLmNo
YXJhY3RlcnMxNigpLCBuYW1lLmxlbmd0aCgpLCByZ2IpOwogfQogCitib29sIENvbG9yOjpwYXJz
ZUhleENvbG9yKGNvbnN0IFN0cmluZ1ZpZXcmIG5hbWUsIFJHQkEzMiYgcmdiKQoreworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IG5hbWUubGVuZ3RoKCk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobmFtZS5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIHBh
cnNlSGV4Q29sb3IobmFtZS5jaGFyYWN0ZXJzOCgpLCBuYW1lLmxlbmd0aCgpLCByZ2IpOworICAg
IHJldHVybiBwYXJzZUhleENvbG9yKG5hbWUuY2hhcmFjdGVyczE2KCksIG5hbWUubGVuZ3RoKCks
IHJnYik7Cit9CisKIGludCBkaWZmZXJlbmNlU3F1YXJlZChjb25zdCBDb2xvciYgYzEsIGNvbnN0
IENvbG9yJiBjMikKIHsKICAgICBpbnQgZFIgPSBjMS5yZWQoKSAtIGMyLnJlZCgpOwpAQCAtMjI2
LDcgKzIzNiw3IEBAIENvbG9yOjpDb2xvcihjb25zdCBTdHJpbmcmIG5hbWUpCiBDb2xvcjo6Q29s
b3IoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpZiAobmFtZVswXSA9PSAnIycpCi0gICAgICAg
IG1fdmFsaWQgPSBwYXJzZUhleENvbG9yKCZuYW1lWzFdLCBtX2NvbG9yKTsKKyAgICAgICAgbV92
YWxpZCA9IHBhcnNlSGV4Q29sb3IoKFN0cmluZykmbmFtZVsxXSwgbV9jb2xvcik7CiAgICAgZWxz
ZSB7CiAgICAgICAgIGNvbnN0IE5hbWVkQ29sb3IqIGZvdW5kQ29sb3IgPSBmaW5kQ29sb3IobmFt
ZSwgc3RybGVuKG5hbWUpKTsKICAgICAgICAgbV9jb2xvciA9IGZvdW5kQ29sb3IgPyBmb3VuZENv
bG9yLT5BUkdCVmFsdWUgOiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5oCShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNiArMTc1LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBwYXJzZUhleENvbG9yKGNvbnN0IFN0cmluZyYs
IFJHQkEzMiYpOworICAgIHN0YXRpYyBib29sIHBhcnNlSGV4Q29sb3IoY29uc3QgU3RyaW5nVmll
dyYsIFJHQkEzMiYpOwogICAgIHN0YXRpYyBib29sIHBhcnNlSGV4Q29sb3IoY29uc3QgTENoYXIq
LCB1bnNpZ25lZCwgUkdCQTMyJik7CiAgICAgc3RhdGljIGJvb2wgcGFyc2VIZXhDb2xvcihjb25z
dCBVQ2hhciosIHVuc2lnbmVkLCBSR0JBMzImKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCShyZXZpc2lvbiAyMDU5OTApCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGU6OnVw
ZGF0ZUMKICAgICBhdXRvIGxocyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5n
dGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKTsKICAgICBhdXRvIHJocyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fbGVuZ3RoKTsKICAgICBhdXRvIG9wID0gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbj4oV1RGTW92ZShsaHMpLCBX
VEZNb3ZlKHJocyksIENhbGNTdWJ0cmFjdCk7Ci0gICAgbV9jb21wdXRlZExlbmd0aCA9IExlbmd0
aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIENhbGN1bGF0aW9uUmFuZ2VB
bGwpKTsKKyAgICBtX2NvbXB1dGVkTGVuZ3RoID0gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6OmNy
ZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkpOwogfQogCiBzdHJ1Y3QgU1ZHUGF0aFRy
YW5zbGF0ZWRCeXRlU3RyZWFtIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289092</attachid>
            <date>2016-09-16 12:11:57 -0700</date>
            <delta_ts>2016-09-16 12:39:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>87255</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMiBAQAorMjAxNi0wOS0xNiAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBbQ1NTIFBhcnNlcl0gR2V0IENTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAgY29tcGlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwNzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Omhhc0RvdWJsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNo
ZWNrRGVwdGhBbmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjRXhwcmVzc2lvbk5v
ZGVQYXJzZXI6OnBhcnNlQ2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjRXhwcmVzc2lv
bk5vZGVQYXJzZXI6Om9wZXJhdG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0V4
cHJlc3Npb25Ob2RlUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nh
bGNFeHByZXNzaW9uTm9kZVBhcnNlcjo6cGFyc2VWYWx1ZVRlcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyOjpwYXJzZVZhbHVlTXVsdGlwbGljYXRpdmVF
eHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNFeHByZXNzaW9uTm9kZVBhcnNl
cjo6cGFyc2VBZGRpdGl2ZVZhbHVlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
YWxjRXhwcmVzc2lvbk5vZGVQYXJzZXI6OnBhcnNlVmFsdWVFeHByZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmNoZWNrRGVwdGhBbmRJbmRleERlcHJlY2F0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyRGVwcmVjYXRlZDo6cGFyc2VWYWx1ZVRlcm0p
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyRGVwcmVjYXRl
ZDo6cGFyc2VWYWx1ZU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXJEZXByZWNhdGVkOjpwYXJzZUFkZGl0aXZlVmFs
dWVFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ2FsY1ZhbHVlOjpjcmVhdGVDYWxjdWxhdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NhbGNWYWx1ZTo6c2V0UGVybWl0dGVkVmFsdWVSYW5nZSk6CisgICAgICAgIFN3aXRjaCBv
ZmYgdGhlIHBlcm1pdHRlZCBjYWxjIHZhbHVlIHJhbmdlIGVudW0sIHNpbmNlIHdlIGNhbiBqdXN0
IHVzZSB0aGUgaWRlbnRpY2FsIFZhbHVlUmFuZ2UgZW51bS4KKyAgICAgICAgRGVwcmVjYXRlIHRo
ZSBDU1NQYXJzZXJWYWx1ZUxpc3QtYmFzZWQgcGFyc2VyIGJ5IHJlbmFtaW5nIGl0LCBhbmQgYWRk
IGEgbmV3IHBhcnNlciB0aGF0IG9wZXJhdGVzCisgICAgICAgIG9uIHRva2Vucy4KKworICAgICAg
ICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
Q1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU3Ry
aW5nVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y2xlYW51cCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5n
dGhEb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51
bWJlckZvckN1c3RvbUNTU1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6YnVpbGRQYXJz
ZXJWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBDU1NfUVVJUktZX0VNUyBhcyBhIHVuaXQgdHlwZS4gVGhpcyB3aWxsIGxl
dCB1cyBlbGltaW5hdGUgdGhlIGV4dHJhIG1faXNRdWlya1ZhbHVlIGJvb2xlYW4KKyAgICAgICAg
ZXZlbnR1YWxseS4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6dmFsaWRhdGVDYWxjdWxhdGlvblVuaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNhbGN1bGF0aW9uKToKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1BhcnNlci5oOgorICAgICAgICBTd2l0Y2ggdG8gVmFsdWVSYW5nZS4KKworICAg
ICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXBsZXRlVVJMKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOgor
ICAgICAgICBNYWtlIHRoZSBVUkwgY29tcGxldGlvbiBmdW5jdGlvbiBmcm9tIENTU1BhcnNlci5j
cHAgYXZhaWxhYmxlIHRvIGFsbC4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyTW9k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6aXNVbml0TGVzc1ZhbHVlUGFyc2luZ0VuYWJsZWRGb3JN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVW5pdExlc3NMZW5ndGhQYXJzaW5nRW5hYmxlZEZv
ck1vZGUpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdGhpcyB0byB2YWx1ZSwgc2luY2UgZm9y
IG5vdyB3ZSdyZSBub3Qgc3VwcG9ydGluZyBCbGluaydzIFVzZXJVbml0cy4gVGhpcyBtZWFucyB3
ZSBuZWVkIHRvIHN1cHBvcnQKKyAgICAgICAgdW5pdGxlc3MgcGFyc2luZyBmb3IgdGltZXMgYW5k
IGFuZ2xlcyBpbiBhZGRpdGlvbiB0byBsZW5ndGhzLCBtYWtpbmcgdGhlIG5hbWUgb2YgdGhlIGZ1
bmN0aW9uIGluYXBwcm9wcmlhdGUuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclRv
a2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNzc1ByaW1pdGl2ZVZhbHVlVW5pdEZyb21Ucmll
KToKKyAgICAgICAgVHVybiBxdWlya3kgZW1zIHN1cHBvcnQgYmFjayBvbi4KKworICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSk6CisgICAgICAgIFN1cHBvcnQgcXVpcmt5IGVtcy4K
KworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Q2FsY1BhcnNlcjo6Y29u
c3VtZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6
Q2FsY1BhcnNlcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVBvc2l0aXZlSW50ZWdlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpzaG91bGRBY2NlcHRVbml0bGVz
c1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OmNvbnN1bWVQZXJjZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVs
cGVyczo6Y2FuQ29uc3VtZUNhbGNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVMZW5ndGhPclBlcmNlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQW5nbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJZGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJZGVudFJhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUN1c3Rv
bUlkZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OmNvbnN1bWVVcmwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OjpwYXJzZVJHQlBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzOjpwYXJzZUhTTFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUG9zaXRpb25Db21wb25lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwb3NpdGlvbkZyb21PbmVWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBvc2l0aW9u
RnJvbVR3b1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnM6OnBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFsdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU9uZU9y
VHdvVmFsdWVkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50U3Rv
cENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZFJh
ZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6Y29uc3VtZVJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
UGFyc2VySGVscGVyczo6Y29uc3VtZUxpbmVhckdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUltYWdlT3JOb25lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUNyb3NzRmFkZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVHZW5lcmF0
ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNv
bnN1bWVJbWFnZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNvbnN1bWVJbWFnZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6
aXNDU1NXaWRlS2V5d29yZCk6CisgICAgICAgIExvdHMgb2YgY2hhbmdlcyBoZXJlLiBUaGUgbW9z
dCBpbXBvcnRhbnQgaXMgc3dpdGNoaW5nIG92ZXIgdG8gUmVmUHRycyBhbmQgUmVmcyB3aGVyZSBh
cHByb3ByaWF0ZSwgd2l0aCB0aGUKKyAgICAgICAgcmVxdWlzaXRlIFdURk1vdmVzLiBVbml0IHR5
cGVzIGFsc28gaGF2ZSB0byBiZSBjb252ZXJ0ZWQgYmFjayB0byBvdXIgdmFsdWVzLCBhbmQgdW5p
dGxlc3MgcGFyc2luZyBoYXMKKyAgICAgICAgdG8gd29yayB3aXRoIGNvbnN1bWVUaW1lIGFuZCBj
b25zdW1lQW5nbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRp
b25WYWx1ZTo6Q2FsY3VsYXRpb25WYWx1ZSk6CisgICAgICAgIFVzZSBWYWx1ZVJhbmdlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OnBhcnNlSGV4Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICBBZGQgYSBTdHJp
bmdWaWV3LWJhc2VkIHBhcnNlSGV4Q29sb3IgZnVuY3Rpb24uCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUNl
bnRlckNvb3JkaW5hdGU6OnVwZGF0ZUNvbXB1dGVkTGVuZ3RoKToKKyAgICAgICAgVXNlIFZhbHVl
UmFuZ2UKKwogMjAxNi0wOS0xNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWVkaWEtc291cmNlXSBGaXggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtdGltZXN0YW1wLW9mZnNldC5odG1sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCShyZXZpc2lvbiAyMDU5
OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVl
LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJh
bmdlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMTQyLDYg
KzE0Myw3IEBAIHN0YXRpYyBib29sIGhhc0RvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVYKICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FOgogICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19TSEFQRToKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UVVBRDoKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUVVJUktZX0VNUzoKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19M
RU5HVEhfUkVQRUFUOgogI2VuZGlmCkBAIC01NTksNyArNTYxLDEzNSBAQCBwcml2YXRlOgogICAg
IGNvbnN0IENhbGNPcGVyYXRvciBtX29wZXJhdG9yOwogfTsKIAotc3RhdGljIFBhcnNlU3RhdGUg
Y2hlY2tEZXB0aEFuZEluZGV4KGludCogZGVwdGgsIHVuc2lnbmVkIGluZGV4LCBDU1NQYXJzZXJW
YWx1ZUxpc3QqIHRva2VucykKK3N0YXRpYyBQYXJzZVN0YXRlIGNoZWNrRGVwdGhBbmRJbmRleChp
bnQqIGRlcHRoLCBDU1NQYXJzZXJUb2tlblJhbmdlIHRva2VucykKK3sKKyAgICAoKmRlcHRoKSsr
OworICAgIGlmICh0b2tlbnMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIE5vTW9yZVRva2VuczsK
KyAgICBpZiAoKmRlcHRoID4gbWF4RXhwcmVzc2lvbkRlcHRoKQorICAgICAgICByZXR1cm4gVG9v
RGVlcDsKKyAgICByZXR1cm4gT0s7Cit9CisKK2NsYXNzIENTU0NhbGNFeHByZXNzaW9uTm9kZVBh
cnNlciB7CitwdWJsaWM6CisgICAgUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcGFyc2VD
YWxjKENTU1BhcnNlclRva2VuUmFuZ2UgdG9rZW5zKQorICAgIHsKKyAgICAgICAgVmFsdWUgcmVz
dWx0OworICAgICAgICB0b2tlbnMuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICAgICAgYm9vbCBv
ayA9IHBhcnNlVmFsdWVFeHByZXNzaW9uKHRva2VucywgMCwgJnJlc3VsdCk7CisgICAgICAgIGlm
ICghb2sgfHwgIXRva2Vucy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiByZXN1bHQudmFsdWU7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBz
dHJ1Y3QgVmFsdWUgeworICAgICAgICBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1
ZTsKKyAgICB9OworICAgIAorICAgIGNoYXIgb3BlcmF0b3JWYWx1ZShjb25zdCBDU1NQYXJzZXJU
b2tlbiYgdG9rZW4pCisgICAgeworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IERlbGltaXRl
clRva2VuKQorICAgICAgICAgICAgcmV0dXJuIHRva2VuLmRlbGltaXRlcigpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgYm9vbCBwYXJzZVZhbHVlKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHRva2VucywgVmFsdWUqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIENTU1BhcnNlclRv
a2VuIHRva2VuID0gdG9rZW5zLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAg
IGlmICghKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gUGVy
Y2VudGFnZVRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzIHR5cGUgPSB0b2tlbi51bml0VHlwZSgpOworICAgICAgICBpZiAodW5pdENhdGVn
b3J5KHR5cGUpID09IENhbGNPdGhlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIHJlc3VsdC0+dmFsdWUgPSBDU1NDYWxjUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRva2VuLm51bWVyaWNWYWx1ZSgpLCB0eXBlKSwg
dG9rZW4ubnVtZXJpY1ZhbHVlVHlwZSgpID09IEludGVnZXJWYWx1ZVR5cGUpOworICAgICAgICAK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGJvb2wgcGFyc2VWYWx1ZVRl
cm0oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5zLCBpbnQgZGVwdGgsIFZhbHVlKiByZXN1bHQp
CisgICAgeworICAgICAgICBpZiAoY2hlY2tEZXB0aEFuZEluZGV4KCZkZXB0aCwgdG9rZW5zKSAh
PSBPSykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmICh0
b2tlbnMucGVlaygpLnR5cGUoKSA9PSBMZWZ0UGFyZW50aGVzaXNUb2tlbiB8fCB0b2tlbnMucGVl
aygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUNhbGMpIHsKKyAgICAgICAgICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgaW5uZXJSYW5nZSA9IHRva2Vucy5jb25zdW1lQmxvY2soKTsKKyAgICAgICAg
ICAgIHRva2Vucy5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICAgICAgaW5uZXJSYW5nZS5j
b25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICAgICAgcmV0dXJuIHBhcnNlVmFsdWVFeHByZXNz
aW9uKGlubmVyUmFuZ2UsIGRlcHRoLCByZXN1bHQpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gcGFyc2VWYWx1ZSh0b2tlbnMsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IGJvb2wgcGFyc2VWYWx1ZU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbihDU1NQYXJzZXJUb2tlblJh
bmdlJiB0b2tlbnMsIGludCBkZXB0aCwgVmFsdWUqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGlm
IChjaGVja0RlcHRoQW5kSW5kZXgoJmRlcHRoLCB0b2tlbnMpICE9IE9LKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgaWYgKCFwYXJzZVZhbHVlVGVybSh0b2tl
bnMsIGRlcHRoLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAK
KyAgICAgICAgd2hpbGUgKCF0b2tlbnMuYXRFbmQoKSkgeworICAgICAgICAgICAgY2hhciBvcGVy
YXRvckNoYXJhY3RlciA9IG9wZXJhdG9yVmFsdWUodG9rZW5zLnBlZWsoKSk7CisgICAgICAgICAg
ICBpZiAob3BlcmF0b3JDaGFyYWN0ZXIgIT0gQ2FsY011bHRpcGx5ICYmIG9wZXJhdG9yQ2hhcmFj
dGVyICE9IENhbGNEaXZpZGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB0
b2tlbnMuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgVmFsdWUgcmhzOworICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlVGVybSh0b2tlbnMs
IGRlcHRoLCAmcmhzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHJlc3VsdC0+dmFsdWUgPSBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uOjpj
cmVhdGVTaW1wbGlmaWVkKHN0YXRpY19jYXN0PENhbGNPcGVyYXRvcj4ob3BlcmF0b3JDaGFyYWN0
ZXIpLCByZXN1bHQtPnZhbHVlLCByaHMudmFsdWUpOworCisgICAgICAgICAgICBpZiAoIXJlc3Vs
dC0+dmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBwYXJzZUFk
ZGl0aXZlVmFsdWVFeHByZXNzaW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHRva2VucywgaW50IGRl
cHRoLCBWYWx1ZSogcmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKGNoZWNrRGVwdGhBbmRJbmRl
eCgmZGVwdGgsIHRva2VucykgIT0gT0spCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIAorICAgICAgICBpZiAoIXBhcnNlVmFsdWVNdWx0aXBsaWNhdGl2ZUV4cHJlc3Npb24odG9r
ZW5zLCBkZXB0aCwgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
CisgICAgICAgIHdoaWxlICghdG9rZW5zLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGNoYXIgb3Bl
cmF0b3JDaGFyYWN0ZXIgPSBvcGVyYXRvclZhbHVlKHRva2Vucy5wZWVrKCkpOworICAgICAgICAg
ICAgaWYgKG9wZXJhdG9yQ2hhcmFjdGVyICE9IENhbGNBZGQgJiYgb3BlcmF0b3JDaGFyYWN0ZXIg
IT0gQ2FsY1N1YnRyYWN0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYg
KCgmdG9rZW5zLnBlZWsoKSAtIDEpLT50eXBlKCkgIT0gV2hpdGVzcGFjZVRva2VuKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gY2FsYygxcHgrIDJweCkgaXMgaW52YWxpZAorICAg
ICAgICAgICAgdG9rZW5zLmNvbnN1bWUoKTsKKyAgICAgICAgICAgIGlmICh0b2tlbnMucGVlaygp
LnR5cGUoKSAhPSBXaGl0ZXNwYWNlVG9rZW4pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OyAvLyBjYWxjKDFweCArMnB4KSBpcyBpbnZhbGlkCisgICAgICAgICAgICB0b2tlbnMuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVmFsdWUg
cmhzOworICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlTXVsdGlwbGljYXRpdmVFeHByZXNzaW9u
KHRva2VucywgZGVwdGgsICZyaHMpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgcmVzdWx0LT52YWx1ZSA9IENTU0NhbGNCaW5hcnlPcGVy
YXRpb246OmNyZWF0ZVNpbXBsaWZpZWQoc3RhdGljX2Nhc3Q8Q2FsY09wZXJhdG9yPihvcGVyYXRv
ckNoYXJhY3RlciksIHJlc3VsdC0+dmFsdWUsIHJocy52YWx1ZSk7CisgICAgICAgICAgICBpZiAo
IXJlc3VsdC0+dmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBw
YXJzZVZhbHVlRXhwcmVzc2lvbihDU1NQYXJzZXJUb2tlblJhbmdlJiB0b2tlbnMsIGludCBkZXB0
aCwgVmFsdWUqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBwYXJzZUFkZGl0aXZlVmFs
dWVFeHByZXNzaW9uKHRva2VucywgZGVwdGgsIHJlc3VsdCk7CisgICAgfQorfTsKKyAgICAKK3N0
YXRpYyBQYXJzZVN0YXRlIGNoZWNrRGVwdGhBbmRJbmRleERlcHJlY2F0ZWQoaW50KiBkZXB0aCwg
dW5zaWduZWQgaW5kZXgsIENTU1BhcnNlclZhbHVlTGlzdCogdG9rZW5zKQogewogICAgICgqZGVw
dGgpKys7CiAgICAgaWYgKCpkZXB0aCA+IG1heEV4cHJlc3Npb25EZXB0aCkKQEAgLTU2OSw3ICs2
OTksNyBAQCBzdGF0aWMgUGFyc2VTdGF0ZSBjaGVja0RlcHRoQW5kSW5kZXgoaW50CiAgICAgcmV0
dXJuIE9LOwogfQogCi1jbGFzcyBDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXIgeworY2xhc3Mg
Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyRGVwcmVjYXRlZCB7CiBwdWJsaWM6CiAgICAgUmVm
UHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcGFyc2VDYWxjKENTU1BhcnNlclZhbHVlTGlzdCog
dG9rZW5zKQogICAgIHsKQEAgLTYxNiw3ICs3NDYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBw
YXJzZVZhbHVlVGVybShDU1NQYXJzZXJWYWx1ZUxpc3QqIHRva2VucywgaW50IGRlcHRoLCB1bnNp
Z25lZCogaW5kZXgsIFZhbHVlKiByZXN1bHQpCiAgICAgewotICAgICAgICBpZiAoY2hlY2tEZXB0
aEFuZEluZGV4KCZkZXB0aCwgKmluZGV4LCB0b2tlbnMpICE9IE9LKQorICAgICAgICBpZiAoY2hl
Y2tEZXB0aEFuZEluZGV4RGVwcmVjYXRlZCgmZGVwdGgsICppbmRleCwgdG9rZW5zKSAhPSBPSykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAob3BlcmF0b3JWYWx1ZSh0
b2tlbnMsICppbmRleCkgPT0gJygnKSB7CkBAIC02MzUsNyArNzY1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgcGFyc2VWYWx1ZU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbihDU1NQYXJzZXJWYWx1
ZUxpc3QqIHRva2VucywgaW50IGRlcHRoLCB1bnNpZ25lZCogaW5kZXgsIFZhbHVlKiByZXN1bHQp
CiAgICAgewotICAgICAgICBpZiAoY2hlY2tEZXB0aEFuZEluZGV4KCZkZXB0aCwgKmluZGV4LCB0
b2tlbnMpICE9IE9LKQorICAgICAgICBpZiAoY2hlY2tEZXB0aEFuZEluZGV4RGVwcmVjYXRlZCgm
ZGVwdGgsICppbmRleCwgdG9rZW5zKSAhPSBPSykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICBpZiAoIXBhcnNlVmFsdWVUZXJtKHRva2VucywgZGVwdGgsIGluZGV4LCByZXN1
bHQpKQpAQCAtNjYyLDcgKzc5Miw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHBhcnNlQWRkaXRp
dmVWYWx1ZUV4cHJlc3Npb24oQ1NTUGFyc2VyVmFsdWVMaXN0KiB0b2tlbnMsIGludCBkZXB0aCwg
dW5zaWduZWQqIGluZGV4LCBWYWx1ZSogcmVzdWx0KQogICAgIHsKLSAgICAgICAgaWYgKGNoZWNr
RGVwdGhBbmRJbmRleCgmZGVwdGgsICppbmRleCwgdG9rZW5zKSAhPSBPSykKKyAgICAgICAgaWYg
KGNoZWNrRGVwdGhBbmRJbmRleERlcHJlY2F0ZWQoJmRlcHRoLCAqaW5kZXgsIHRva2VucykgIT0g
T0spCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaWYgKCFwYXJzZVZhbHVl
TXVsdGlwbGljYXRpdmVFeHByZXNzaW9uKHRva2VucywgZGVwdGgsIGluZGV4LCByZXN1bHQpKQpA
QCAtNzUwLDE3ICs4ODAsMjUgQEAgc3RhdGljIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+
IGNyZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBDU1ND
YWxjVmFsdWU6OmNyZWF0ZShDU1NQYXJzZXJTdHJpbmcgbmFtZSwgQ1NTUGFyc2VyVmFsdWVMaXN0
JiBwYXJzZXJWYWx1ZUxpc3QsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkK
K1JlZlB0cjxDU1NDYWxjVmFsdWU+IENTU0NhbGNWYWx1ZTo6Y3JlYXRlKENTU1BhcnNlclN0cmlu
ZyBuYW1lLCBDU1NQYXJzZXJWYWx1ZUxpc3QmIHBhcnNlclZhbHVlTGlzdCwgVmFsdWVSYW5nZSBy
YW5nZSkKIHsKLSAgICBDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXIgcGFyc2VyOworICAgIENT
U0NhbGNFeHByZXNzaW9uTm9kZVBhcnNlckRlcHJlY2F0ZWQgcGFyc2VyOwogICAgIFJlZlB0cjxD
U1NDYWxjRXhwcmVzc2lvbk5vZGU+IGV4cHJlc3Npb247CiAKICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImNhbGMoIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobmFtZSwgIi13ZWJraXQtY2FsYygiKSkKICAgICAgICAgZXhwcmVzc2lvbiA9IHBh
cnNlci5wYXJzZUNhbGMoJnBhcnNlclZhbHVlTGlzdCk7CiAKLSAgICByZXR1cm4gZXhwcmVzc2lv
biA/IGFkb3B0UmVmKG5ldyBDU1NDYWxjVmFsdWUoZXhwcmVzc2lvbi5yZWxlYXNlTm9uTnVsbCgp
LCByYW5nZSAhPSBDYWxjdWxhdGlvblJhbmdlQWxsKSkgOiBudWxscHRyOworICAgIHJldHVybiBl
eHByZXNzaW9uID8gYWRvcHRSZWYobmV3IENTU0NhbGNWYWx1ZShleHByZXNzaW9uLnJlbGVhc2VO
b25OdWxsKCksIHJhbmdlICE9IFZhbHVlUmFuZ2VBbGwpKSA6IG51bGxwdHI7CiB9CiAKK1JlZlB0
cjxDU1NDYWxjVmFsdWU+IENTU0NhbGNWYWx1ZTo6Y3JlYXRlKGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmIHRva2VucywgVmFsdWVSYW5nZSByYW5nZSkKK3sKKyAgICBDU1NDYWxjRXhwcmVzc2lv
bk5vZGVQYXJzZXIgcGFyc2VyOworICAgIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGV4
cHJlc3Npb24gPSBwYXJzZXIucGFyc2VDYWxjKHRva2Vucyk7CisgICAgcmV0dXJuIGV4cHJlc3Np
b24gPyBhZG9wdFJlZihuZXcgQ1NTQ2FsY1ZhbHVlKGV4cHJlc3Npb24ucmVsZWFzZU5vbk51bGwo
KSwgcmFuZ2UgIT0gVmFsdWVSYW5nZUFsbCkpIDogbnVsbHB0cjsKKworfQorICAgIAogUmVmUHRy
PENTU0NhbGNWYWx1ZT4gQ1NTQ2FsY1ZhbHVlOjpjcmVhdGUoY29uc3QgQ2FsY3VsYXRpb25WYWx1
ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBSZWZQdHI8Q1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlPiBleHByZXNzaW9uID0gY3JlYXRlQ1NTKHZhbHVlLmV4cHJlc3Npb24o
KSwgc3R5bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5o
CShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ1NTUGFyc2VyVG9rZW5SYW5nZTsKIGNsYXNzIENTU1BhcnNlclZhbHVl
TGlzdDsKIGNsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CiBjbGFzcyBSZW5kZXJTdHls
ZTsKQEAgLTg3LDE4ICs4OCwyMiBAQCBwcml2YXRlOgogCiBjbGFzcyBDU1NDYWxjVmFsdWUgZmlu
YWwgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2Fs
Y1ZhbHVlPiBjcmVhdGUoQ1NTUGFyc2VyU3RyaW5nIG5hbWUsIENTU1BhcnNlclZhbHVlTGlzdCYg
YXJndW1lbnRzLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOworICAgIC8vIEZJWE1F
LU5FV1BBUlNFUjogUmVtb3ZlIHRoZSBDU1NQYXJzZXJTdHJpbmcgY3JlYXRlIHdoZW4gb2xkIHBh
cnNlciBnb2VzIGF3YXkuCisgICAgc3RhdGljIFJlZlB0cjxDU1NDYWxjVmFsdWU+IGNyZWF0ZShD
U1NQYXJzZXJTdHJpbmcgbmFtZSwgQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmd1bWVudHMsIFZhbHVl
UmFuZ2UpOworICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoY29uc3QgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOworICAgIAogICAgIHN0YXRpYyBSZWZQdHI8
Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoY29uc3QgQ2FsY3VsYXRpb25WYWx1ZSYsIGNvbnN0IFJlbmRl
clN0eWxlJik7CiAKICAgICBDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9leHByZXNzaW9uLT5jYXRlZ29yeSgpOyB9CiAgICAgYm9vbCBpc0ludCgpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwcmVzc2lvbi0+aXNJbnRlZ2VyKCk7IH0KICAgICBkb3VibGUgZG91Ymxl
VmFsdWUoKSBjb25zdDsKICAgICBib29sIGlzUG9zaXRpdmUoKSBjb25zdCB7IHJldHVybiBtX2V4
cHJlc3Npb24tPmRvdWJsZVZhbHVlKCkgPiAwOyB9CisgICAgYm9vbCBpc05lZ2F0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9leHByZXNzaW9uLT5kb3VibGVWYWx1ZSgpIDwgMDsgfQogICAgIGRvdWJs
ZSBjb21wdXRlTGVuZ3RoUHgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYpIGNvbnN0
OwogICAgIHVuc2lnbmVkIHNob3J0IHByaW1pdGl2ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2V4
cHJlc3Npb24tPnByaW1pdGl2ZVR5cGUoKTsgfQogCiAgICAgUmVmPENhbGN1bGF0aW9uVmFsdWU+
IGNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYp
IGNvbnN0OwotICAgIHZvaWQgc2V0UGVybWl0dGVkVmFsdWVSYW5nZShDYWxjdWxhdGlvblBlcm1p
dHRlZFZhbHVlUmFuZ2UpOworICAgIHZvaWQgc2V0UGVybWl0dGVkVmFsdWVSYW5nZShWYWx1ZVJh
bmdlKTsKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTQ2FsY1ZhbHVlJikgY29uc3Q7CkBAIC0xMjIsMTIgKzEyNywxMiBAQCBpbmxp
bmUgQ1NTQ2FsY1ZhbHVlOjpDU1NDYWxjVmFsdWUoUmVmPENTCiBpbmxpbmUgUmVmPENhbGN1bGF0
aW9uVmFsdWU+IENTU0NhbGNWYWx1ZTo6Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSkgY29uc3QKIHsKICAgICByZXR1
cm4gQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKG1fZXhwcmVzc2lvbi0+Y3JlYXRlQ2FsY0V4cHJl
c3Npb24oY29udmVyc2lvbkRhdGEpLAotICAgICAgICBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2
ZSA/IENhbGN1bGF0aW9uUmFuZ2VOb25OZWdhdGl2ZSA6IENhbGN1bGF0aW9uUmFuZ2VBbGwpOwor
ICAgICAgICBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZSA/IFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSA6IFZhbHVlUmFuZ2VBbGwpOwogfQogCi1pbmxpbmUgdm9pZCBDU1NDYWxjVmFsdWU6OnNldFBl
cm1pdHRlZFZhbHVlUmFuZ2UoQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQor
aW5saW5lIHZvaWQgQ1NTQ2FsY1ZhbHVlOjpzZXRQZXJtaXR0ZWRWYWx1ZVJhbmdlKFZhbHVlUmFu
Z2UgcmFuZ2UpCiB7Ci0gICAgbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUgPSByYW5nZSAhPSBD
YWxjdWxhdGlvblJhbmdlQWxsOworICAgIG1fc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlID0gcmFu
Z2UgIT0gVmFsdWVSYW5nZUFsbDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCShyZXZpc2lvbiAyMDU5OTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw2ICs3MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTVW5pdFR5
cGVGb3IKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHOgogICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT046CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0VNUzoKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUVVJUktZX0VNUzoK
ICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTOgogICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19GUjoKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRDoK
QEAgLTE2MCw2ICsxNjEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJpbmdUeXBlKENTU1By
aW1pCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQSToKICAgICBjYXNlIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRFBQWDoKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RU1TOgorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19RVUlSS1lfRU1TOgogICAgIGNh
c2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM6CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0ZPTlRfRkFNSUxZOgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19GUjoK
QEAgLTU3Niw2ICs1NzgsNyBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKCkKICAg
ICBjYXNlIENTU19QQVJTRVJfSU5URUdFUjoKICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgogICAg
IGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgogICAgIGNhc2UgQ1NTX0VY
UzoKICAgICBjYXNlIENTU19SRU1TOgogICAgIGNhc2UgQ1NTX0NIUzoKQEAgLTY4NSw2ICs2ODgs
NyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjCiAKICAgICBzd2l0
Y2ggKHByaW1pdGl2ZVR5cGUpIHsKICAgICBjYXNlIENTU19FTVM6CisgICAgY2FzZSBDU1NfUVVJ
UktZX0VNUzoKICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkpOwogICAgICAg
ICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgpID8gY29udmVyc2lv
bkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpIDogY29udmVy
c2lvbkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTA3MSw2ICsxMDc1LDcgQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgQ1NT
UHJpbWl0aXZlVmFsdWU6OgogICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6CiAgICAgICAgIHJldHVy
biBmb3JtYXROdW1iZXJWYWx1ZSgiJSIpOwogICAgIGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENT
U19RVUlSS1lfRU1TOgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoImVtIik7CiAg
ICAgY2FzZSBDU1NfRVhTOgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoImV4Iik7
CkBAIC0xMTc0LDcgKzExNzksNyBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVW
YWx1ZTo6CiAgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOiB7CiAgICAgICAgIFJHQkEzMiBy
Z2JDb2xvciA9IG1fdmFsdWUucmdiY29sb3I7CiAgICAgICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRU
eXBlID09IENTU19QQVJTRVJfSEVYQ09MT1IpCi0gICAgICAgICAgICBDb2xvcjo6cGFyc2VIZXhD
b2xvcihtX3ZhbHVlLnN0cmluZywgcmdiQ29sb3IpOworICAgICAgICAgICAgQ29sb3I6OnBhcnNl
SGV4Q29sb3IoKFN0cmluZyltX3ZhbHVlLnN0cmluZywgcmdiQ29sb3IpOwogICAgICAgICByZXR1
cm4gQ29sb3IocmdiQ29sb3IpLmNzc1RleHQoKTsKICAgICB9CiAgICAgY2FzZSBDU1NfUEFJUjoK
QEAgLTEzMTUsNiArMTMyMCw3IEBAIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZl
VmFsdWUKICAgICBjYXNlIENTU19QQVJTRVJfSU5URUdFUjoKICAgICBjYXNlIENTU19QRVJDRU5U
QUdFOgogICAgIGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgogICAgIGNh
c2UgQ1NTX0VYUzoKICAgICBjYXNlIENTU19SRU1TOgogICAgIGNhc2UgQ1NTX0NIUzoKQEAgLTEz
NzksNiArMTM4NSw3IEBAIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFscyhjb25zdCBDU1MK
ICAgICBjYXNlIENTU19QQVJTRVJfSU5URUdFUjoKICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgog
ICAgIGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgogICAgIGNhc2UgQ1NT
X0VYUzoKICAgICBjYXNlIENTU19SRU1TOgogICAgIGNhc2UgQ1NTX1BYOgpAQCAtMTQ2NCw2ICsx
NDcxLDcgQEAgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6YnVpbGRQYXJzZXJWYWx1ZQogICAgIGNh
c2UgQ1NTX05VTUJFUjoKICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgogICAgIGNhc2UgQ1NTX0VN
UzoKKyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgogICAgIGNhc2UgQ1NTX0VYUzoKICAgICBjYXNl
IENTU19SRU1TOgogICAgIGNhc2UgQ1NTX1BYOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmgJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgQ1NTX1ZBTFVFX0lEID0gMTE4LAogICAgICAgICAKICAgICAgICAgLy8g
TW9yZSBpbnRlcm5hbCBwYXJzZSBzdHVmZiBmb3IgQ1NTIHZhcmlhYmxlcwotICAgICAgICBDU1Nf
UEFSU0VSX1dISVRFU1BBQ0UgPSAxMTkKKyAgICAgICAgQ1NTX1BBUlNFUl9XSElURVNQQUNFID0g
MTE5LAorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyB2YWx1ZSBpcyB1c2VkIHRvIGhhbmRsZSBx
dWlya3kgbWFyZ2lucyBpbiByZWZsb3cgcm9vdHMgKGJvZHksIHRkLCBhbmQgdGgpIGxpa2UgV2lu
SUUuCisgICAgICAgIC8vIFRoZSBiYXNpYyBpZGVhIGlzIHRoYXQgYSBzdHlsZXNoZWV0IGNhbiB1
c2UgdGhlIHZhbHVlIF9fcWVtIChmb3IgcXVpcmt5IGVtKSBpbnN0ZWFkIG9mIGVtLgorICAgICAg
ICAvLyBXaGVuIHRoZSBxdWlya3kgdmFsdWUgaXMgdXNlZCwgaWYgeW91J3JlIGluIHF1aXJrcyBt
b2RlLCB0aGUgbWFyZ2luIHdpbGwgY29sbGFwc2UgYXdheQorICAgICAgICAvLyBpbnNpZGUgYSB0
YWJsZSBjZWxsLiBUaGlzIHF1aXJrIGlzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBzcGVjIGJ1dCBv
dXIgaW1wbCBpcyBkaWZmZXJlbnQuCisgICAgICAgIENTU19RVUlSS1lfRU1TID0gMTIwCiAgICAg
fTsKIAogICAgIC8vIFRoaXMgZW51bSBmb2xsb3dzIHRoZSBDU1NQYXJzZXI6OlVuaXRzIGVudW0g
YXVnbWVudGVkIHdpdGggVU5JVF9GUkVRVUVOQ1kgZm9yIGZyZXF1ZW5jaWVzLgpAQCAtMTg5LDE2
ICsxOTUsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUgPT0g
Q1NTX0VNUwogICAgICAgICAgICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0VYUwogICAg
ICAgICAgICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1JFTVMKLSAgICAgICAgICAgIHx8
IHByaW1pdGl2ZVVuaXRUeXBlID09IENTU19DSFM7CisgICAgICAgICAgICB8fCBwcmltaXRpdmVV
bml0VHlwZSA9PSBDU1NfQ0hTCisgICAgICAgICAgICB8fCBwcmltaXRpdmVVbml0VHlwZSA9PSBD
U1NfUVVJUktZX0VNUzsKICAgICB9CiAgICAgYm9vbCBpc0ZvbnRSZWxhdGl2ZUxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIGlzRm9udFJlbGF0aXZlTGVuZ3RoKG1fcHJpbWl0aXZlVW5pdFR5cGUpOyB9
CisgICAgCisgICAgYm9vbCBpc1F1aXJreUVtcygpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5
cGUoKSA9PSBVbml0VHlwZXM6OkNTU19RVUlSS1lfRU1TOyB9CiAKICAgICBzdGF0aWMgYm9vbCBp
c1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCh1bnNpZ25lZCBzaG9ydCB0eXBlKSB7IHJldHVybiB0
eXBlID49IENTU19WVyAmJiB0eXBlIDw9IENTU19WTUFYOyB9CiAgICAgYm9vbCBpc1ZpZXdwb3J0
UGVyY2VudGFnZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGlzVmlld3BvcnRQZXJjZW50YWdlTGVu
Z3RoKG1fcHJpbWl0aXZlVW5pdFR5cGUpOyB9CiAKICAgICBzdGF0aWMgYm9vbCBpc0xlbmd0aCh1
bnNpZ25lZCBzaG9ydCB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuICh0eXBlID49IENTU19F
TVMgJiYgdHlwZSA8PSBDU1NfUEMpIHx8IHR5cGUgPT0gQ1NTX1JFTVMgfHwgdHlwZSA9PSBDU1Nf
Q0hTIHx8IGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKHR5cGUpOworICAgICAgICByZXR1cm4g
KHR5cGUgPj0gQ1NTX0VNUyAmJiB0eXBlIDw9IENTU19QQykgfHwgdHlwZSA9PSBDU1NfUkVNUyB8
fCB0eXBlID09IENTU19DSFMgfHwgaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgodHlwZSkgfHwg
dHlwZSA9PSBDU1NfUVVJUktZX0VNUzsKICAgICB9CiAKICAgICBib29sIGlzTGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gaXNMZW5ndGgocHJpbWl0aXZlVHlwZSgpKTsgfQpAQCAtMzY5LDcgKzM3OCw4
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKLSAgICBi
b29sIGlzUXVpcmtWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNRdWlya1ZhbHVlOyB9CisgICAg
Ly8gRklYTUUtTkVXUEFSU0VSOiBDYW4gZGl0Y2ggdGhlIGJvb2xlYW4gYW5kIGp1c3QgdXNlIHRo
ZSB1bml0IHR5cGUgb25jZSBvbGQgcGFyc2VyIGlzIGdvbmUuCisgICAgYm9vbCBpc1F1aXJrVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2lzUXVpcmtWYWx1ZSB8fCBwcmltaXRpdmVUeXBlKCkgPT0g
Q1NTX1FVSVJLWV9FTVM7IH0KIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCShyZXZpc2lvbiAy
MDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxOCw3ICszMTgsNyBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29uCiAgICAgYXV0byBsaHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHBy
ZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSk7CiAgICAgYXV0byByaHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpOwogICAgIGF1dG8gb3Ag
PSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uPihXVEZNb3Zl
KGxocyksIFdURk1vdmUocmhzKSwgQ2FsY1N1YnRyYWN0KTsKLSAgICByZXR1cm4gTGVuZ3RoKENh
bGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwgQ2FsY3VsYXRpb25SYW5nZUFsbCkp
OworICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3Ap
LCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIwLDkgKzE2
MjAsOSBAQCBib29sIENTU1BhcnNlcjo6dmFsaWRhdGVDYWxjdWxhdGlvblVuaXQoCiAgICAgaWYg
KHZhbHVlV2l0aENhbGN1bGF0aW9uLmNhbGN1bGF0aW9uKCkpIHsKICAgICAgICAgLy8gVGhlIGNh
bGN1bGF0aW9uIHZhbHVlIHdhcyBhbHJlYWR5IHBhcnNlZCBzbyB3ZSByZXVzZSBpdC4gSG93ZXZl
ciwgd2UgbWF5IG5lZWQgdG8gdXBkYXRlIGl0cyByYW5nZS4KICAgICAgICAgY2FsY3VsYXRpb24g
PSB2YWx1ZVdpdGhDYWxjdWxhdGlvbi5jYWxjdWxhdGlvbigpOwotICAgICAgICBjYWxjdWxhdGlv
bi0+c2V0UGVybWl0dGVkVmFsdWVSYW5nZShtdXN0QmVOb25OZWdhdGl2ZSA/IENhbGN1bGF0aW9u
UmFuZ2VOb25OZWdhdGl2ZSA6IENhbGN1bGF0aW9uUmFuZ2VBbGwpOworICAgICAgICBjYWxjdWxh
dGlvbi0+c2V0UGVybWl0dGVkVmFsdWVSYW5nZShtdXN0QmVOb25OZWdhdGl2ZSA/IFZhbHVlUmFu
Z2VOb25OZWdhdGl2ZSA6IFZhbHVlUmFuZ2VBbGwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHZh
bHVlV2l0aENhbGN1bGF0aW9uLnNldENhbGN1bGF0aW9uKHBhcnNlQ2FsY3VsYXRpb24odmFsdWVX
aXRoQ2FsY3VsYXRpb24sIG11c3RCZU5vbk5lZ2F0aXZlID8gQ2FsY3VsYXRpb25SYW5nZU5vbk5l
Z2F0aXZlIDogQ2FsY3VsYXRpb25SYW5nZUFsbCkpOworICAgICAgICB2YWx1ZVdpdGhDYWxjdWxh
dGlvbi5zZXRDYWxjdWxhdGlvbihwYXJzZUNhbGN1bGF0aW9uKHZhbHVlV2l0aENhbGN1bGF0aW9u
LCBtdXN0QmVOb25OZWdhdGl2ZSA/IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSA6IFZhbHVlUmFuZ2VB
bGwpKTsKICAgICAgICAgY2FsY3VsYXRpb24gPSB2YWx1ZVdpdGhDYWxjdWxhdGlvbi5jYWxjdWxh
dGlvbigpOwogICAgICAgICBpZiAoIWNhbGN1bGF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTEwNDIsNyArMTEwNDIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VXaWxsQ2hh
bmdlKGJvb2wgaW1wCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxDU1NDYWxjVmFsdWU+
IENTU1BhcnNlcjo6cGFyc2VDYWxjdWxhdGlvbihDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIENhbGN1
bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKK1JlZlB0cjxDU1NDYWxjVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VDYWxjdWxhdGlvbihDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIFZhbHVlUmFu
Z2UgcmFuZ2UpCiB7CiAgICAgQVNTRVJUKGlzQ2FsY3VsYXRpb24odmFsdWUpKTsKICAgICAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAkocmV2aXNpb24gMjA1OTkwKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzU5LDcgKzM1OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlSGFuZ2luZ1B1bmN0dWF0
aW9uKGJvb2wgaW1wb3J0YW50KTsKIAogICAgIGJvb2wgcGFyc2VMaW5lQm94Q29udGFpbihib29s
IGltcG9ydGFudCk7Ci0gICAgUmVmUHRyPENTU0NhbGNWYWx1ZT4gcGFyc2VDYWxjdWxhdGlvbihD
U1NQYXJzZXJWYWx1ZSYsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CisgICAgUmVm
UHRyPENTU0NhbGNWYWx1ZT4gcGFyc2VDYWxjdWxhdGlvbihDU1NQYXJzZXJWYWx1ZSYsIFZhbHVl
UmFuZ2UpOwogCiAgICAgYm9vbCBwYXJzZUZvbnRGZWF0dXJlVGFnKENTU1ZhbHVlTGlzdCYpOwog
ICAgIGJvb2wgcGFyc2VGb250RmVhdHVyZVNldHRpbmdzKGJvb2wgaW1wb3J0YW50KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5jcHAJKHJldmlz
aW9uIDIwNjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02MSw0ICs2MiwxMyBAQCBib29sIGlzVmFsdWVBbGxvd2VkSW5Nb2RlKHVuc2lnbmVkIHNo
b3J0CiAgICAgfQogfQogCitVUkwgY29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgaWYgKHVybC5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIFVSTCgpOworICAgIGlmIChjb250ZXh0LmNoYXJzZXQuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gVVJMKGNvbnRleHQuYmFzZVVSTCwgdXJsKTsKKyAgICByZXR1cm4gVVJM
KGNvbnRleHQuYmFzZVVSTCwgdXJsLCBjb250ZXh0LmNoYXJzZXQpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklk
aW9tcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
SWRpb21zLmgJKHJldmlzaW9uIDIwNjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VySWRpb21zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBVUkw7CisgICAgCiAvLyBTcGFjZSBjaGFyYWN0ZXJz
IGFzIGRlZmluZWQgYnkgdGhlIENTUyBzcGVjaWZpY2F0aW9uLgogLy8gaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1zeW50YXgvI3doaXRlc3BhY2UKIGlubGluZSBib29sIGlzQ1NTU3BhY2UoVUNo
YXIgYykKQEAgLTYyLDcgKzY0LDkgQEAgYm9vbCBpc05hbWVDb2RlUG9pbnQoQ2hhcmFjdGVyVHlw
ZSBjKQogdm9pZCBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZUluUGxhY2UoU3RyaW5nVmlldyYpOwog
CiBib29sIGlzVmFsdWVBbGxvd2VkSW5Nb2RlKHVuc2lnbmVkIHNob3J0LCBDU1NQYXJzZXJNb2Rl
KTsKLSAgICAKKworVVJMIGNvbXBsZXRlVVJMKGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBjb25z
dCBTdHJpbmcmIHVybCk7CisKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlck1vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlck1vZGUuaAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYy
LDcgQEAgaW5saW5lIGJvb2wgaXNVQVNoZWV0QmVoYXZpb3IoQ1NTUGFyc2VyTQogICAgIHJldHVy
biBtb2RlID09IFVBU2hlZXRNb2RlOwogfQogCi1pbmxpbmUgYm9vbCBpc1VuaXRMZXNzTGVuZ3Ro
UGFyc2luZ0VuYWJsZWRGb3JNb2RlKENTU1BhcnNlck1vZGUgbW9kZSkKK2lubGluZSBib29sIGlz
VW5pdExlc3NWYWx1ZVBhcnNpbmdFbmFibGVkRm9yTW9kZShDU1NQYXJzZXJNb2RlIG1vZGUpCiB7
CiAgICAgcmV0dXJuIG1vZGUgPT0gSFRNTEF0dHJpYnV0ZU1vZGUgfHwgbW9kZSA9PSBTVkdBdHRy
aWJ1dGVNb2RlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJU
b2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJUb2tlbi5jcHAJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDcgQEAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBjc3NQcmltaXRpdgogICAgICAgICBzd2l0Y2gg
KHRvQVNDSUlMb3dlcihkYXRhWzBdKSkgewogICAgICAgICBjYXNlICdfJzoKICAgICAgICAgICAg
IGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ18nICYmIHRvQVNDSUlMb3dlcihkYXRhWzJd
KSA9PSAncScgJiYgdG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICdlJyAmJiB0b0FTQ0lJTG93ZXIo
ZGF0YVs0XSkgPT0gJ20nKQotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpDU1NfRU1TOyAvLyBGSVhNRS1ORVdQQVJTRVI6IE5lZWQgcXVpcmt5IGVt
cy4KKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX1FVSVJLWV9FTVM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVl
cy5jcHAJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyVmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUMKICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3RyaW5nLCBwcmltaXRpdmVVbml0KTsKICAgICBjYXNlIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRToKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfRU1TOgorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19RVUlSS1lfRU1T
OgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM6CiAgICAgY2FzZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYOgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTToK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VySGVscGVycy5jcHAJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMjAgKzMxLDE3IEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgiCiAK
ICNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCi0vLyBGSVhNRS1ORVdQQVJTRVI6ICNp
bmNsdWRlICJDU1NDb2xvclZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Jvc3NmYWRlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1
ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKLS8vIEZJWE1FLU5FV1BBUlNFUjogI2lu
Y2x1ZGUgIkNTU1BhaW50VmFsdWUuaCIKLS8vIEZJWE1FX05FV1BBUlNFUjogI2luY2x1ZGUgIkNT
U1N0cmluZ1ZhbHVlLmgiCi0vLyBGSVhNRS1ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NVUklWYWx1
ZS5oIgotLy8gRklYTUVfTkVXUEFSU0VSOiAjaW5jbHVkZSAiQ1NTVmFsdWVQYWlyLmgiCisjaW5j
bHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCisjaW5j
bHVkZSAiUGFpci5oIgorI2luY2x1ZGUgIlN0eWxlQ29sb3IuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0vKiBGSVhNRS1ORVdQQVJTRVI6IERpc2FibGUgZm9yIG5vdy4KLSAKIG5hbWVzcGFj
ZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMgewogCiBib29sIGNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC04OCwxOSArODUsMTkg
QEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IENTU0NhbGNWYWx1ZSogdmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2NhbGNWYWx1ZS5nZXQoKTsgfQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBj
b25zdW1lVmFsdWUoKQorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVZhbHVl
KCkKICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFuZ2U7CiAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fY2FsY1ZhbHVlLnJlbGVhc2UoKSk7CiAgICAg
fQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTnVtYmVyKCkKKyAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVOdW1iZXIoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2Nh
bGNWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBtX3NvdXJjZVJh
bmdlID0gbV9yYW5nZTsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlIHVuaXRU
eXBlID0gbV9jYWxjVmFsdWUtPmlzSW50KCkgPyBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6
OkludGVnZXIgOiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcjsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0VHlwZSA9IG1fY2FsY1ZhbHVlLT5pc0lu
dCgpID8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BBUlNFUl9JTlRFR0VSIDog
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX05VTUJFUjsKICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCksIHVu
aXRUeXBlKTsKICAgICB9CiAKQEAgLTExNiwxNiArMTEzLDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgbV9zb3VyY2VSYW5nZTsKICAgICBDU1NQYXJzZXJU
b2tlblJhbmdlIG1fcmFuZ2U7Ci0gICAgTWVtYmVyPENTU0NhbGNWYWx1ZT4gbV9jYWxjVmFsdWU7
CisgICAgUmVmUHRyPENTU0NhbGNWYWx1ZT4gbV9jYWxjVmFsdWU7CiB9OwogCi1DU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGRvdWJs
ZSBtaW5pbXVtVmFsdWUpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJbnRlZ2Vy
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQogewogICAg
IGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9r
ZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CiAgICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFs
dWVUeXBlKCkgPT0gTnVtYmVyVmFsdWVUeXBlIHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgbWlu
aW11bVZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW50ZWdlcik7
CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXM6OkNTU19QQVJTRVJfSU5URUdFUik7CiAgICAgfQogICAgIENhbGNQYXJzZXIgY2Fs
Y1BhcnNlcihyYW5nZSk7CiAgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24g
PSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKQEAgLTEzOSw3ICsxMzYsNyBAQCBDU1NQcmltaXRpdmVW
YWx1ZSogY29uc3VtZUludGVnZXIoQ1NTUGFyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUNT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQorUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRpdmVJbnRl
Z2VyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIHJldHVybiBjb25zdW1lSW50
ZWdlcihyYW5nZSwgMSk7CiB9CkBAIC0xNTUsNyArMTUyLDcgQEAgYm9vbCBjb25zdW1lTnVtYmVy
UmF3KENTU1BhcnNlclRva2VuUmFuZwogfQogCiAvLyBGSVhNRTogV29yayBvdXQgaWYgdGhpcyBj
YW4ganVzdCBjYWxsIGNvbnN1bWVOdW1iZXJSYXcKLUNTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1l
TnVtYmVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2Up
CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVOdW1iZXIoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKIHsKICAgICBjb25zdCBDU1NQYXJz
ZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBO
dW1iZXJUb2tlbikgewpAQCAtMTc0LDM4ICsxNzEsMzcgQEAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVOdW1iZXIoQ1NTUGFycwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1pbmxpbmUgYm9v
bCBzaG91bGRBY2NlcHRVbml0bGVzc0xlbmd0aChkb3VibGUgdmFsdWUsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK2lubGluZSBib29sIHNob3Vs
ZEFjY2VwdFVuaXRsZXNzVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCiB7CiAgICAgLy8gRklYTUU6IFByZXNlbnRh
dGlvbmFsIEhUTUwgYXR0cmlidXRlcyBzaG91bGRuJ3QgdXNlIHRoZSBDU1MgcGFyc2VyIGZvciBs
ZW5ndGhzCiAgICAgcmV0dXJuIHZhbHVlID09IDAKLSAgICAgICAgfHwgaXNVbml0TGVzc0xlbmd0
aFBhcnNpbmdFbmFibGVkRm9yTW9kZShjc3NQYXJzZXJNb2RlKQorICAgICAgICB8fCBpc1VuaXRM
ZXNzVmFsdWVQYXJzaW5nRW5hYmxlZEZvck1vZGUoY3NzUGFyc2VyTW9kZSkKICAgICAgICAgfHwg
KGNzc1BhcnNlck1vZGUgPT0gSFRNTFF1aXJrc01vZGUgJiYgdW5pdGxlc3MgPT0gVW5pdGxlc3NR
dWlyazo6QWxsb3cpOwogfQogCi1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCitSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNvbnN1bWVMZW5ndGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlLCBVbml0bGVz
c1F1aXJrIHVuaXRsZXNzKQogewogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJh
bmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuKSB7CiAg
ICAgICAgIHN3aXRjaCAodG9rZW4udW5pdFR5cGUoKSkgewotICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6UXVpcmt5RW1zOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19RVUlSS1lfRU1TOgogICAgICAgICAgICAgaWYgKGNzc1Bh
cnNlck1vZGUgIT0gVUFTaGVldE1vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6OkVtczoKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OlJlbXM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpDaHM6
Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpFeHM6Ci0gICAgICAg
IGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHM6Ci0gICAgICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpDZW50aW1ldGVyczoKLSAgICAgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok1pbGxpbWV0ZXJzOgotICAgICAgICBjYXNlIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW5jaGVzOgotICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6UG9pbnRzOgotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6UGljYXM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpVc2VyVW5pdHM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpWaWV3cG9ydFdpZHRoOgotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6Vmlld3BvcnRIZWlnaHQ6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpWaWV3cG9ydE1pbjoKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OlZpZXdwb3J0TWF4OgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OkNTU19FTVM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
czo6Q1NTX1JFTVM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX0NIUzoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1Nf
RVhTOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19QWDoK
KyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfQ006CisgICAg
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX01NOgorICAgICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19JTjoKKyAgICAgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFQ6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BDOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19WVzoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpDU1NfVkg6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6Q1NTX1ZNSU46CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlczo6Q1NTX1ZNQVg6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjE1LDEyICsyMTEsMTAgQEAgQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVMZW5ndGgoQ1NTUGFycwogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVy
aWNWYWx1ZSgpLCB0b2tlbi51bml0VHlwZSgpKTsKICAgICB9CiAgICAgaWYgKHRva2VuLnR5cGUo
KSA9PSBOdW1iZXJUb2tlbikgewotICAgICAgICBpZiAoIXNob3VsZEFjY2VwdFVuaXRsZXNzTGVu
Z3RoKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcykKKyAgICAg
ICAgaWYgKCFzaG91bGRBY2NlcHRVbml0bGVzc1ZhbHVlKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBj
c3NQYXJzZXJNb2RlLCB1bml0bGVzcykKICAgICAgICAgICAgIHx8ICh2YWx1ZVJhbmdlID09IFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZSB1bml0VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxzOwotICAgICAg
ICBpZiAoY3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlKQotICAgICAgICAgICAgdW5p
dFR5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlVzZXJVbml0czsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM6OkNTU19QWDsKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwg
dW5pdFR5cGUpOwogICAgIH0KICAgICBpZiAoY3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVN
b2RlKQpAQCAtMjMxLDEzICsyMjUsMTMgQEAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMZW5n
dGgoQ1NTUGFycwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1DU1NQcmltaXRpdmVWYWx1ZSog
Y29uc3VtZVBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFs
dWVSYW5nZSkKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBlcmNlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKIHsKICAgICBjb25z
dCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRva2VuLnR5
cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pIHsKICAgICAgICAgaWYgKHZhbHVlUmFuZ2UgPT0gVmFs
dWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLm51bWVyaWNWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVS
Q0VOVEFHRSk7CiAgICAgfQogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgdmFsdWVS
YW5nZSk7CiAgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFy
c2VyLnZhbHVlKCkpIHsKQEAgLTI0Nyw3ICsyNDEsNyBAQCBDU1NQcmltaXRpdmVWYWx1ZSogY29u
c3VtZVBlcmNlbnQoQ1NTUGFyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wgY2FuQ29u
c3VtZUNhbGNWYWx1ZShDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5LCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUpCitzdGF0aWMgYm9vbCBjYW5Db25zdW1lQ2FsY1ZhbHVlKENhbGN1bGF0
aW9uQ2F0ZWdvcnkgY2F0ZWdvcnksIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAg
ICBpZiAoY2F0ZWdvcnkgPT0gQ2FsY0xlbmd0aCB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudCB8
fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudExlbmd0aCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0yNTUsMTMgKzI0OSwxMyBAQCBib29sIGNhbkNvbnN1bWVDYWxjVmFsdWUoQ2FsY3VsYXRpb25D
YXRlCiAgICAgaWYgKGNzc1BhcnNlck1vZGUgIT0gU1ZHQXR0cmlidXRlTW9kZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGNhdGVnb3J5ID09IENhbGNOdW1iZXIgfHwgY2F0ZWdv
cnkgPT0gQ2FsY1BlcmNlbnROdW1iZXIgfHwgY2F0ZWdvcnkgPT0gQ2FsY0xlbmd0aE51bWJlciB8
fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudExlbmd0aE51bWJlcikKKyAgICBpZiAoY2F0ZWdvcnkg
PT0gQ2FsY051bWJlciB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudE51bWJlcikKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUNTU1ByaW1pdGl2ZVZhbHVl
KiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NR
dWlyayB1bml0bGVzcykKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUxlbmd0aE9y
UGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCiB7
CiAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwogICAgIGlm
ICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4gfHwgdG9rZW4udHlwZSgpID09IE51bWJl
clRva2VuKQpAQCAtMjc2LDI0ICsyNzAsMjUgQEAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVM
ZW5ndGhPclBlcmNlbgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1DU1NQcmltaXRpdmVWYWx1
ZSogY29uc3VtZUFuZ2xlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lQW5nbGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKIHsKICAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRv
a2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikgewogICAgICAgICBzd2l0Y2ggKHRva2VuLnVu
aXRUeXBlKCkpIHsKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkRl
Z3JlZXM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpSYWRpYW5z
OgotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6R3JhZGlhbnM6Ci0g
ICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpUdXJuczoKKyAgICAgICAg
Y2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfREVHOgorICAgICAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19SQUQ6CisgICAgICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0dSQUQ6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1RVUk46CiAgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgp
Lm51bWVyaWNWYWx1ZSgpLCB0b2tlbi51bml0VHlwZSgpKTsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gTnVtYmVyVG9rZW4gJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPT0gMCkgewor
ICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4gJiYgc2hvdWxkQWNjZXB0VW5pdGxl
c3NWYWx1ZSh0b2tlbi5udW1lcmljVmFsdWUoKSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpKSB7
CiAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7Ci0gICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6RGVncmVlcyk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19ERUcpOwogICAgIH0KKwogICAg
IENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgaWYgKGNv
bnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKICAg
ICAgICAgaWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgpID09IENhbGNBbmdsZSkKQEAgLTMwMiwx
NCArMjk3LDE3IEBAIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQW5nbGUoQ1NTUGFyc2UKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVUaW1lKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCitSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVUaW1lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5p
dGxlc3NRdWlyayB1bml0bGVzcykKIHsKICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4g
PSByYW5nZS5wZWVrKCk7Ci0gICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikg
eworICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdCA9IHRva2VuLnVuaXRUeXBl
KCk7CisgICAgYm9vbCBhY2NlcHRVbml0bGVzcyA9IHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tl
biAmJiBzaG91bGRBY2NlcHRVbml0bGVzc1ZhbHVlKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBjc3NQ
YXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgaWYgKGFjY2VwdFVuaXRsZXNzKQorICAgICAgICB1
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX01TOworICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4gfHwgYWNjZXB0VW5pdGxlc3MpIHsKICAgICAgICAg
aWYgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNW
YWx1ZSgpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGUgdW5pdCA9IHRva2VuLnVuaXRUeXBlKCk7Ci0gICAgICAgIGlm
ICh1bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TWlsbGlzZWNvbmRzIHx8IHVu
aXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpTZWNvbmRzKQorICAgICAgICBpZiAo
dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTVMgfHwgdW5pdCA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUykKICAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CkBAIC0zMjEsMzIgKzMxOSwzMiBAQCBDU1NQcmltaXRpdmVWYWx1ZSogY29u
c3VtZVRpbWUoQ1NTUGFyc2VyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUNTU1ByaW1pdGl2
ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlk
ZW50aWZpZXIocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpKTsKIH0KIAot
Q1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJZGVudFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NWYWx1ZUlEIGxvd2VyLCBDU1NWYWx1ZUlEIHVwcGVyKQorUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnRSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcikKIHsKICAgICBpZiAocmFuZ2Uu
cGVlaygpLmlkKCkgPCBsb3dlciB8fCByYW5nZS5wZWVrKCkuaWQoKSA+IHVwcGVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKIH0KIAot
Q1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3RvbUlkZW50KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQorUmVmUHRyPENTU0N1c3RvbUlkZW50VmFsdWU+IGNvbnN1bWVDdXN0b21JZGVu
dChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5
cGUoKSAhPSBJZGVudFRva2VuIHx8IGlzQ1NTV2lkZUtleXdvcmQocmFuZ2UucGVlaygpLmlkKCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gQ1NTQ3VzdG9tSWRlbnRWYWx1
ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0
cmluZygpKTsKIH0KIAotQ1NTU3RyaW5nVmFsdWUqIGNvbnN1bWVTdHJpbmcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVTdHJpbmco
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBl
KCkgIT0gU3RyaW5nVG9rZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBD
U1NTdHJpbmdWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
dmFsdWUoKS50b1N0cmluZygpKTsKKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1NUUklORyk7CiB9CiAKIFN0cmluZ1Zp
ZXcgY29uc3VtZVVybEFzU3RyaW5nVmlldyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAg
LTM3MSwxMiArMzY5LDEyIEBAIFN0cmluZ1ZpZXcgY29uc3VtZVVybEFzU3RyaW5nVmlldyhDU1NQ
YXIKICAgICByZXR1cm4gU3RyaW5nVmlldygpOwogfQogCi1DU1NVUklWYWx1ZSogY29uc3VtZVVy
bChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y29uc3VtZVVybChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBTdHJpbmdWaWV3
IHVybCA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcocmFuZ2UpOwogICAgIGlmICh1cmwuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBDU1NVUklWYWx1ZTo6Y3Jl
YXRlKHVybC50b1N0cmluZygpKTsKKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh1cmwudG9TdHJpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1VSSSk7
CiB9CiAKIHN0YXRpYyBpbnQgY2xhbXBSR0JDb21wb25lbnQoY29uc3QgQ1NTUHJpbWl0aXZlVmFs
dWUmIHZhbHVlKQpAQCAtMzkyLDcgKzM5MCw3IEBAIHN0YXRpYyBib29sIHBhcnNlUkdCUGFyYW1l
dGVycyhDU1NQYXJzZXIKIHsKICAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9
PSBDU1NWYWx1ZVJnYiB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmdi
YSk7CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdl
KTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29sb3JQYXJhbWV0ZXIgPSBjb25zdW1lSW50ZWdl
cihhcmdzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbG9yUGFyYW1ldGVyID0g
Y29uc3VtZUludGVnZXIoYXJncyk7CiAgICAgaWYgKCFjb2xvclBhcmFtZXRlcikKICAgICAgICAg
Y29sb3JQYXJhbWV0ZXIgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKICAg
ICBpZiAoIWNvbG9yUGFyYW1ldGVyKQpAQCAtNDI4LDcgKzQyNiw3IEBAIHN0YXRpYyBib29sIHBh
cnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXIKIHsKICAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1
bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUhzbCB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09
IENTU1ZhbHVlSHNsYSk7CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1
bmN0aW9uKHJhbmdlKTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogaHNsVmFsdWUgPSBjb25zdW1l
TnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gaHNsVmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOwogICAgIGlm
ICghaHNsVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkb3VibGUgY29sb3JBcnJh
eVszXTsKQEAgLTUwMCw3ICs0OTgsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUNvbG9yRnVuY3Rpb24o
Q1NTUGFyc2VyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNTU1ZhbHVlKiBjb25zdW1lQ29sb3Io
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
Ym9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1
bWVDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlLCBib29sIGFjY2VwdFF1aXJreUNvbG9ycykKIHsKICAgICBDU1NWYWx1ZUlEIGlkID0g
cmFuZ2UucGVlaygpLmlkKCk7CiAgICAgaWYgKFN0eWxlQ29sb3I6OmlzQ29sb3JLZXl3b3JkKGlk
KSkgewpAQCAtNTExLDEwICs1MDksMTAgQEAgQ1NTVmFsdWUqIGNvbnN1bWVDb2xvcihDU1NQYXJz
ZXJUb2tlblJhbgogICAgIFJHQkEzMiBjb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKICAgICBp
ZiAoIXBhcnNlSGV4Q29sb3IocmFuZ2UsIGNvbG9yLCBhY2NlcHRRdWlya3lDb2xvcnMpICYmICFw
YXJzZUNvbG9yRnVuY3Rpb24ocmFuZ2UsIGNvbG9yKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIENTU0NvbG9yVmFsdWU6OmNyZWF0ZShjb2xvcik7CisgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihjb2xvcik7CiB9CiAKLXN0YXRpYyBDU1NQcmlt
aXRpdmVWYWx1ZSogY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxl
c3MpCitzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRpb25Db21w
b25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5
cGUoKSA9PSBJZGVudFRva2VuKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVl
TGVmdCwgQ1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tLCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1
ZUNlbnRlcj4ocmFuZ2UpOwpAQCAtNTMxLDMxICs1MjksMzggQEAgc3RhdGljIGJvb2wgaXNWZXJ0
aWNhbFBvc2l0aW9uS2V5d29yZE9ubAogICAgIHJldHVybiB2YWx1ZS5pc1ZhbHVlSUQoKSAmJiAo
dmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlVG9wIHx8IHZhbHVlLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUJvdHRvbSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBvc2l0aW9uRnJvbU9uZVZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSom
IHJlc3VsdFkpCitzdGF0aWMgdm9pZCBwb3NpdGlvbkZyb21PbmVWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZSYgdmFsdWUsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFgsIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFkpCiB7Ci0gICAgYm9vbCB2YWx1ZUFwcGxpZXNUb1lB
eGlzT25seSA9IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZSk7Ci0gICAgcmVz
dWx0WCA9IHZhbHVlOworICAgIGJvb2wgdmFsdWVBcHBsaWVzVG9ZQXhpc09ubHkgPSBpc1ZlcnRp
Y2FsUG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZSk7CisgICAgcmVzdWx0WCA9ICZ2YWx1ZTsKICAg
ICByZXN1bHRZID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVD
ZW50ZXIpOwogICAgIGlmICh2YWx1ZUFwcGxpZXNUb1lBeGlzT25seSkKICAgICAgICAgc3RkOjpz
d2FwKHJlc3VsdFgsIHJlc3VsdFkpOwogfQogCi1zdGF0aWMgYm9vbCBwb3NpdGlvbkZyb21Ud29W
YWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVl
MiwKLSAgICBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3N0YXRpYyBi
b29sIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyhDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUxLCBDU1NQ
cmltaXRpdmVWYWx1ZSYgdmFsdWUyLAorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJl
c3VsdFgsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFkpCiB7Ci0gICAgYm9vbCBt
dXN0T3JkZXJBc1hZID0gaXNIb3Jpem9udGFsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUxKSB8
fCBpc1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUyKQotICAgICAgICB8fCAhdmFs
dWUxLT5pc1ZhbHVlSUQoKSB8fCAhdmFsdWUyLT5pc1ZhbHVlSUQoKTsKLSAgICBib29sIG11c3RP
cmRlckFzWVggPSBpc1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUxKSB8fCBpc0hv
cml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTIpOworICAgIGJvb2wgbXVzdE9yZGVy
QXNYWSA9IGlzSG9yaXpvbnRhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUxKSB8fCBpc1ZlcnRp
Y2FsUG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZTIpCisgICAgICAgIHx8ICF2YWx1ZTEuaXNWYWx1
ZUlEKCkgfHwgIXZhbHVlMi5pc1ZhbHVlSUQoKTsKKyAgICBib29sIG11c3RPcmRlckFzWVggPSBp
c1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZTEpIHx8IGlzSG9yaXpvbnRhbFBvc2l0
aW9uS2V5d29yZE9ubHkodmFsdWUyKTsKICAgICBpZiAobXVzdE9yZGVyQXNYWSAmJiBtdXN0T3Jk
ZXJBc1lYKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0WCA9IHZhbHVlMTsKLSAg
ICByZXN1bHRZID0gdmFsdWUyOworICAgIHJlc3VsdFggPSAmdmFsdWUxOworICAgIHJlc3VsdFkg
PSAmdmFsdWUyOwogICAgIGlmIChtdXN0T3JkZXJBc1lYKQogICAgICAgICBzdGQ6OnN3YXAocmVz
dWx0WCwgcmVzdWx0WSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHBvc2l0
aW9uRnJvbVRocmVlT3JGb3VyVmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVlKiogdmFsdWVzLCBDU1NW
YWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKKyAgICAKK3RlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3M+CitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRp
dmVWYWx1ZVBhaXIoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLikpOworfQorCitzdGF0aWMgYm9vbCBwb3NpdGlvbkZyb21UaHJlZU9yRm91clZhbHVl
cyhDU1NQcmltaXRpdmVWYWx1ZSoqIHZhbHVlcywgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYg
cmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkKIHsKICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogY2VudGVyID0gbnVsbHB0cjsKICAgICBmb3IgKGludCBpID0gMDsgdmFs
dWVzW2ldOyBpKyspIHsKQEAgLTU3MSwxMiArNTc2LDExIEBAIHN0YXRpYyBib29sIHBvc2l0aW9u
RnJvbVRocmVlT3JGb3VyVmFsdWUKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
LSAgICAgICAgQ1NTVmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7Ci0gICAgICAgIGlmICh2YWx1ZXNb
aSArIDFdICYmICF2YWx1ZXNbaSArIDFdLT5pc1ZhbHVlSUQoKSkgewotICAgICAgICAgICAgcmVz
dWx0ID0gQ1NTVmFsdWVQYWlyOjpjcmVhdGUoY3VycmVudFZhbHVlLCB2YWx1ZXNbKytpXSwgQ1NT
VmFsdWVQYWlyOjpLZWVwSWRlbnRpY2FsVmFsdWVzKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQ7CisgICAgICAgIGlmICh2YWx1ZXNb
aSArIDFdICYmICF2YWx1ZXNbaSArIDFdLT5pc1ZhbHVlSUQoKSkKKyAgICAgICAgICAgIHJlc3Vs
dCA9IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihjdXJyZW50VmFsdWUsIHZhbHVlc1srK2ldKTsK
KyAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVudFZhbHVlOwotICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJp
Z2h0KSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0WCkKQEAgLTYwNiw3NCArNjEwLDc0IEBAIHN0
YXRpYyBib29sIHBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFsdWUKIAogLy8gRklYTUU6IFRoaXMg
bWF5IGNvbnN1bWUgZnJvbSB0aGUgcmFuZ2UgdXBvbiBmYWlsdXJlLiBUaGUgYmFja2dyb3VuZAog
Ly8gc2hvcnRoYW5kIHdvcmtzIGFyb3VuZCBpdCwgYnV0IHdlIHNob3VsZCBqdXN0IGZpeCBpdCBo
ZXJlLgotYm9vbCBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgQ1NTVmFs
dWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpCitib29sIGNvbnN1bWVQb3NpdGlvbihD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBV
bml0bGVzc1F1aXJrIHVuaXRsZXNzLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiByZXN1bHRY
LCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiByZXN1bHRZKQogewotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIHVuaXRsZXNzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlMSA9
IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3Mp
OwogICAgIGlmICghdmFsdWUxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogdmFsdWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZTIgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRs
ZXNzKTsKICAgICBpZiAoIXZhbHVlMikgewotICAgICAgICBwb3NpdGlvbkZyb21PbmVWYWx1ZSh2
YWx1ZTEsIHJlc3VsdFgsIHJlc3VsdFkpOworICAgICAgICBwb3NpdGlvbkZyb21PbmVWYWx1ZSgq
dmFsdWUxLCByZXN1bHRYLCByZXN1bHRZKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMyA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVu
dChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gdmFsdWUzID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgaWYgKCF2YWx1ZTMpCi0gICAgICAgIHJldHVybiBwb3Np
dGlvbkZyb21Ud29WYWx1ZXModmFsdWUxLCB2YWx1ZTIsIHJlc3VsdFgsIHJlc3VsdFkpOworICAg
ICAgICByZXR1cm4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKCp2YWx1ZTEsICp2YWx1ZTIsIHJlc3Vs
dFgsIHJlc3VsdFkpOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlNCA9IGNvbnN1bWVQ
b3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWU0ID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50
KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHZhbHVlc1s1XTsKLSAgICB2YWx1ZXNbMF0gPSB2YWx1ZTE7Ci0gICAgdmFsdWVzWzFdID0gdmFs
dWUyOwotICAgIHZhbHVlc1syXSA9IHZhbHVlMzsKLSAgICB2YWx1ZXNbM10gPSB2YWx1ZTQ7Cisg
ICAgdmFsdWVzWzBdID0gdmFsdWUxLmdldCgpOworICAgIHZhbHVlc1sxXSA9IHZhbHVlMi5nZXQo
KTsKKyAgICB2YWx1ZXNbMl0gPSB2YWx1ZTMuZ2V0KCk7CisgICAgdmFsdWVzWzNdID0gdmFsdWU0
LmdldCgpOwogICAgIHZhbHVlc1s0XSA9IG51bGxwdHI7CiAgICAgcmV0dXJuIHBvc2l0aW9uRnJv
bVRocmVlT3JGb3VyVmFsdWVzKHZhbHVlcywgcmVzdWx0WCwgcmVzdWx0WSk7CiB9CiAKLUNTU1Zh
bHVlUGFpciogY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCitSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNz
KQogewotICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKLSAgICBDU1NWYWx1ZSogcmVz
dWx0WSA9IG51bGxwdHI7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHRYOwor
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0WTsKICAgICBpZiAoY29uc3VtZVBv
c2l0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcywgcmVzdWx0WCwgcmVzdWx0WSkp
Ci0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShyZXN1bHRYLCByZXN1bHRZLCBD
U1NWYWx1ZVBhaXI6OktlZXBJZGVudGljYWxWYWx1ZXMpOworICAgICAgICByZXR1cm4gY3JlYXRl
UHJpbWl0aXZlVmFsdWVQYWlyKHJlc3VsdFgucmVsZWFzZU5vbk51bGwoKSwgcmVzdWx0WS5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBjb25zdW1lT25l
T3JUd29WYWx1ZWRQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBDU1NWYWx1ZSomIHJl
c3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK2Jvb2wgY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9z
aXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYg
cmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkKIHsKLSAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogdmFsdWUxID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBj
c3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2
YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVu
aXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTIgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2Us
IGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZhbHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
dW5pdGxlc3MpOwogICAgIGlmICghdmFsdWUyKSB7Ci0gICAgICAgIHBvc2l0aW9uRnJvbU9uZVZh
bHVlKHZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7CisgICAgICAgIHBvc2l0aW9uRnJvbU9uZVZh
bHVlKCp2YWx1ZTEsIHJlc3VsdFgsIHJlc3VsdFkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9Ci0gICAgcmV0dXJuIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyh2YWx1ZTEsIHZhbHVlMiwgcmVz
dWx0WCwgcmVzdWx0WSk7CisgICAgcmV0dXJuIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcygqdmFsdWUx
LCAqdmFsdWUyLCByZXN1bHRYLCByZXN1bHRZKTsKIH0KIAogLy8gVGhpcyBzaG91bGQgZ28gYXdh
eSBvbmNlIHdlIGRyb3Agc3VwcG9ydCBmb3IgLXdlYmtpdC1ncmFkaWVudAotc3RhdGljIENTU1By
aW1pdGl2ZVZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgYXJncywgYm9vbCBob3Jpem9udGFsKQorc3RhdGljIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KENTU1BhcnNlclRva2VuUmFu
Z2UmIGFyZ3MsIGJvb2wgaG9yaXpvbnRhbCkKIHsKICAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgp
ID09IElkZW50VG9rZW4pIHsKICAgICAgICAgaWYgKChob3Jpem9udGFsICYmIGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUxlZnQ+KGFyZ3MpKSB8fCAoIWhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENT
U1ZhbHVlVG9wPihhcmdzKSkpCi0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZSgwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJjZW50YWdlKTsKKyAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuLCBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIGlmICgoaG9yaXpv
bnRhbCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSaWdodD4oYXJncykpIHx8ICghaG9yaXpvbnRh
bCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVCb3R0b20+KGFyZ3MpKSkKLSAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEwMC4sIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSgxMDAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVSQ0VO
VEFHRSk7CiAgICAgICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDZW50ZXI+KGFyZ3MpKQot
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoNTAuLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoNTAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcmVzdWx0ID0gY29uc3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5n
ZUFsbCk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQgPSBjb25zdW1lUGVy
Y2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmVz
dWx0ID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCiAvLyBVc2VkIHRvIHBhcnNlIGNvbG9ycyBmb3IgLXdlYmtpdC1ncmFkaWVudCgu
Li4pLgotc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50U3RvcENvbG9y
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkK
K3N0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkR3JhZGll
bnRTdG9wQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQogewogICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQ3VycmVu
dGNvbG9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY5MSw3ICs2OTUsNyBAQCBzdGF0
aWMgYm9vbCBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50Q29sCiAgICAgaWYgKGlkID09IENTU1Zh
bHVlRnJvbSB8fCBpZCA9PSBDU1NWYWx1ZVRvKSB7CiAgICAgICAgIHBvc2l0aW9uID0gKGlkID09
IENTU1ZhbHVlRnJvbSkgPyAwIDogMTsKICAgICB9IGVsc2UgewotICAgICAgICBEQ0hFQ0soaWQg
PT0gQ1NTVmFsdWVDb2xvclN0b3ApOworICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVDb2xv
clN0b3ApOwogICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgYXJnID0gYXJncy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoYXJnLnR5cGUoKSA9PSBQZXJjZW50
YWdlVG9rZW4pCiAgICAgICAgICAgICBwb3NpdGlvbiA9IGFyZy5udW1lcmljVmFsdWUoKSAvIDEw
MC4wOwpAQCAtNzA0LDE0ICs3MDgsMTQgQEAgc3RhdGljIGJvb2wgY29uc3VtZURlcHJlY2F0ZWRH
cmFkaWVudENvbAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHN0b3Au
bV9wb3NpdGlvbiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocG9zaXRpb24sIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICBzdG9wLm1fcG9zaXRpb24gPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHBvc2l0aW9uLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGVzOjpDU1NfTlVNQkVSKTsKICAgICBzdG9wLm1fY29sb3IgPSBjb25zdW1lRGVwcmVjYXRlZEdy
YWRpZW50U3RvcENvbG9yKGFyZ3MsIGNzc1BhcnNlck1vZGUpOwogICAgIHJldHVybiBzdG9wLm1f
Y29sb3IgJiYgYXJncy5hdEVuZCgpOwogfQogCi1zdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVEZXBy
ZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRH
cmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpCiB7Ci0gICAgQ1NTR3JhZGllbnRWYWx1ZSogcmVzdWx0ID0gbnVsbHB0cjsKKyAgICBS
ZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gcmVzdWx0OwogICAgIENTU1ZhbHVlSUQgaWQgPSBhcmdz
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKICAgICBib29sIGlzRGVwcmVjYXRl
ZFJhZGlhbEdyYWRpZW50ID0gKGlkID09IENTU1ZhbHVlUmFkaWFsKTsKICAgICBpZiAoaXNEZXBy
ZWNhdGVkUmFkaWFsR3JhZGllbnQpCkBAIC03MjEsNDMgKzcyNSw0MyBAQCBzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllCiAgICAgaWYgKCFyZXN1bHQgfHwgIWNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVu
dFBvaW50KGFyZ3MsIHRydWUpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcG9pbnQg
PSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoYXJncywgdHJ1ZSk7CiAgICAgaWYgKCFw
b2ludCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmVzdWx0LT5zZXRGaXJzdFgocG9p
bnQpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RYKFdURk1vdmUocG9pbnQpKTsKICAgICBwb2ludCA9
IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChhcmdzLCBmYWxzZSk7CiAgICAgaWYgKCFw
b2ludCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmVzdWx0LT5zZXRGaXJzdFkocG9p
bnQpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RZKFdURk1vdmUocG9pbnQpKTsKIAogICAgIGlmICgh
Y29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAvLyBGb3IgcmFkaWFsIGdyYWRpZW50cyBvbmx5LCB3ZSBub3cgZXhwZWN0
IGEgbnVtZXJpYyByYWRpdXMuCiAgICAgaWYgKGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KSB7
Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMgPSBjb25zdW1lTnVtYmVyKGFyZ3Ms
IFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1
cyA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgIGlmICghcmFk
aXVzIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHRvQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXN1
bHQpLT5zZXRGaXJzdFJhZGl1cyhyYWRpdXMpOworICAgICAgICBkb3duY2FzdDxDU1NSYWRpYWxH
cmFkaWVudFZhbHVlPihyZXN1bHQuZ2V0KCkpLT5zZXRGaXJzdFJhZGl1cyhXVEZNb3ZlKHJhZGl1
cykpOwogICAgIH0KIAogICAgIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50
KGFyZ3MsIHRydWUpOwogICAgIGlmICghcG9pbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJlc3VsdC0+c2V0U2Vjb25kWChwb2ludCk7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRYKFdU
Rk1vdmUocG9pbnQpKTsKICAgICBwb2ludCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2lu
dChhcmdzLCBmYWxzZSk7CiAgICAgaWYgKCFwb2ludCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRZKHBvaW50KTsKKyAgICByZXN1bHQtPnNldFNlY29uZFko
V1RGTW92ZShwb2ludCkpOwogCiAgICAgLy8gRm9yIHJhZGlhbCBncmFkaWVudHMgb25seSwgd2Ug
bm93IGV4cGVjdCB0aGUgc2Vjb25kIHJhZGl1cy4KICAgICBpZiAoaXNEZXByZWNhdGVkUmFkaWFs
R3JhZGllbnQpIHsKICAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiByYWRpdXMgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAg
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cyA9IGNvbnN1bWVOdW1iZXIoYXJn
cywgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgIGlmICghcmFkaXVzKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIHRvQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXN1bHQpLT5z
ZXRTZWNvbmRSYWRpdXMocmFkaXVzKTsKKyAgICAgICAgZG93bmNhc3Q8Q1NTUmFkaWFsR3JhZGll
bnRWYWx1ZT4ocmVzdWx0LmdldCgpKS0+c2V0U2Vjb25kUmFkaXVzKFdURk1vdmUocmFkaXVzKSk7
CiAgICAgfQogCiAgICAgQ1NTR3JhZGllbnRDb2xvclN0b3Agc3RvcDsKQEAgLTc5Nyw1NiArODAx
LDU2IEBAIHN0YXRpYyBib29sIGNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoQ1MKICAgICByZXR1
cm4gZ3JhZGllbnQtPnN0b3BDb3VudCgpID49IDI7CiB9CiAKLXN0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykK
K3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBD
U1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcpCiB7Ci0gICAgQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZSogcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NT
UHJlZml4ZWRSYWRpYWxHcmFkaWVudCk7Ci0gICAgQ1NTVmFsdWUqIGNlbnRlclggPSBudWxscHRy
OwotICAgIENTU1ZhbHVlKiBjZW50ZXJZID0gbnVsbHB0cjsKKyAgICBSZWZQdHI8Q1NTUmFkaWFs
R3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJl
cGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCk7CisgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBjZW50ZXJYOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVy
WTsKICAgICBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihhcmdzLCBjc3NQYXJzZXJNb2Rl
LCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIGNlbnRlclgsIGNlbnRlclkpOwogICAgIGlmICgoY2Vu
dGVyWCB8fCBjZW50ZXJZKSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQtPnNldEZpcnN0WCh0b0NT
U1ByaW1pdGl2ZVZhbHVlKGNlbnRlclgpKTsKLSAgICByZXN1bHQtPnNldFNlY29uZFgodG9DU1NQ
cmltaXRpdmVWYWx1ZShjZW50ZXJYKSk7Ci0gICAgcmVzdWx0LT5zZXRGaXJzdFkodG9DU1NQcmlt
aXRpdmVWYWx1ZShjZW50ZXJZKSk7Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRZKHRvQ1NTUHJpbWl0
aXZlVmFsdWUoY2VudGVyWSkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RYKFdURk1vdmUoY2VudGVy
WCkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RZKFdURk1vdmUoY2VudGVyWSkpOworICAgIHJlc3Vs
dC0+c2V0U2Vjb25kWChXVEZNb3ZlKGNlbnRlclgpKTsKKyAgICByZXN1bHQtPnNldFNlY29uZFko
V1RGTW92ZShjZW50ZXJZKSk7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2hhcGUgPSBjb25z
dW1lSWRlbnQ8Q1NTVmFsdWVDaXJjbGUsIENTU1ZhbHVlRWxsaXBzZT4oYXJncyk7Ci0gICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHNpemVLZXl3b3JkID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ2xvc2Vz
dFNpZGUsIENTU1ZhbHVlQ2xvc2VzdENvcm5lciwgQ1NTVmFsdWVGYXJ0aGVzdFNpZGUsIENTU1Zh
bHVlRmFydGhlc3RDb3JuZXIsIENTU1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4oYXJncyk7
CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzaGFwZSA9IGNvbnN1bWVJZGVudDxDU1NW
YWx1ZUNpcmNsZSwgQ1NTVmFsdWVFbGxpcHNlPihhcmdzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHNpemVLZXl3b3JkID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ2xvc2VzdFNpZGUs
IENTU1ZhbHVlQ2xvc2VzdENvcm5lciwgQ1NTVmFsdWVGYXJ0aGVzdFNpZGUsIENTU1ZhbHVlRmFy
dGhlc3RDb3JuZXIsIENTU1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4oYXJncyk7CiAgICAg
aWYgKCFzaGFwZSkKICAgICAgICAgc2hhcGUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDaXJjbGUs
IENTU1ZhbHVlRWxsaXBzZT4oYXJncyk7Ci0gICAgcmVzdWx0LT5zZXRTaGFwZShzaGFwZSk7Ci0g
ICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihzaXplS2V5d29yZCk7CisgICAgcmVzdWx0LT5z
ZXRTaGFwZShXVEZNb3ZlKHNoYXBlKSk7CisgICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihX
VEZNb3ZlKHNpemVLZXl3b3JkKSk7CiAKICAgICAvLyBPciwgdHdvIGxlbmd0aHMgb3IgcGVyY2Vu
dGFnZXMKICAgICBpZiAoIXNoYXBlICYmICFzaXplS2V5d29yZCkgewotICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogaG9yaXpvbnRhbFNpemUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3Ms
IGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogdmVydGljYWxTaXplID0gbnVsbHB0cjsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBob3Jpem9udGFsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gdmVydGljYWxTaXplOwogICAgICAgICBpZiAoaG9yaXpvbnRhbFNpemUpIHsKICAgICAgICAg
ICAgIHZlcnRpY2FsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2Vy
TW9kZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgICAgICBpZiAoIXZlcnRpY2FsU2l6ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UoYXJncyk7Ci0gICAgICAgICAgICByZXN1bHQtPnNldEVuZEhvcml6
b250YWxTaXplKGhvcml6b250YWxTaXplKTsKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0RW5kVmVy
dGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7CisgICAgICAgICAgICByZXN1bHQtPnNldEVuZEhvcml6
b250YWxTaXplKFdURk1vdmUoaG9yaXpvbnRhbFNpemUpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+
c2V0RW5kVmVydGljYWxTaXplKFdURk1vdmUodmVydGljYWxTaXplKSk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3Mp
OwogICAgIH0KLSAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFy
c2VyTW9kZSwgcmVzdWx0KSkKKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJn
cywgY3NzUGFyc2VyTW9kZSwgcmVzdWx0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVSYWRp
YWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKK3N0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykK
IHsKLSAgICBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVu
dFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBDU1NSYWRpYWxHcmFkaWVudCk7CisgICAgUmVmUHRy
PENTU1JhZGlhbEdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6
OmNyZWF0ZShyZXBlYXRpbmcsIENTU1JhZGlhbEdyYWRpZW50KTsKIAotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBzaGFwZSA9IG51bGxwdHI7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNpemVLZXl3
b3JkID0gbnVsbHB0cjsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFNpemUgPSBu
dWxscHRyOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFNpemUgPSBudWxscHRyOwor
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2hhcGU7CisgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBzaXplS2V5d29yZDsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGhv
cml6b250YWxTaXplOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmVydGljYWxTaXpl
OwogCiAgICAgLy8gRmlyc3QgcGFydCBvZiBncmFtbWFyLCB0aGUgc2l6ZS9zaGFwZSBjbGF1c2U6
CiAgICAgLy8gWyBjaXJjbGUgfHwgPGxlbmd0aD4gXSB8CkBAIC04NjcsNyArODcxLDcgQEAgc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgICAgICBpZiAoIWNlbnRlcikKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChob3Jpem9udGFsU2l6ZSkKQEAgLTg5Nyw0MyAr
OTAxLDQ1IEBAIHN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVJhZGlhbEdyYWRpZW50KEMKICAgICAg
ICAgfHwgKHZlcnRpY2FsU2l6ZSAmJiB2ZXJ0aWNhbFNpemUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRh
Z2VXaXRoTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC0+
c2V0U2hhcGUoc2hhcGUpOwotICAgIHJlc3VsdC0+c2V0U2l6aW5nQmVoYXZpb3Ioc2l6ZUtleXdv
cmQpOwotICAgIHJlc3VsdC0+c2V0RW5kSG9yaXpvbnRhbFNpemUoaG9yaXpvbnRhbFNpemUpOwot
ICAgIHJlc3VsdC0+c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7CisgICAgcmVzdWx0
LT5zZXRTaGFwZShXVEZNb3ZlKHNoYXBlKSk7CisgICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlv
cihXVEZNb3ZlKHNpemVLZXl3b3JkKSk7CisgICAgcmVzdWx0LT5zZXRFbmRIb3Jpem9udGFsU2l6
ZShXVEZNb3ZlKGhvcml6b250YWxTaXplKSk7CisgICAgcmVzdWx0LT5zZXRFbmRWZXJ0aWNhbFNp
emUoV1RGTW92ZSh2ZXJ0aWNhbFNpemUpKTsKIAotICAgIENTU1ZhbHVlKiBjZW50ZXJYID0gbnVs
bHB0cjsKLSAgICBDU1NWYWx1ZSogY2VudGVyWSA9IG51bGxwdHI7CisgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjZW50ZXJYOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2Vu
dGVyWTsKICAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF0KSB7CiAgICAgICAg
IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgY29uc3VtZVBvc2l0
aW9uKGFyZ3MsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgY2VudGVyWCwg
Y2VudGVyWSk7CiAgICAgICAgIGlmICghKGNlbnRlclggJiYgY2VudGVyWSkpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoY2VudGVyWCk7Ci0g
ICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZKGNlbnRlclkpOworICAgICAgICAKKyAgICAgICAgcmVz
dWx0LT5zZXRGaXJzdFgoV1RGTW92ZShjZW50ZXJYKSk7CisgICAgICAgIHJlc3VsdC0+c2V0Rmly
c3RZKFdURk1vdmUoY2VudGVyWSkpOworICAgICAgICAKICAgICAgICAgLy8gUmlnaHQgbm93LCBD
U1MgcmFkaWFsIGdyYWRpZW50cyBoYXZlIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgY2VudGVycy4K
LSAgICAgICAgcmVzdWx0LT5zZXRTZWNvbmRYKGNlbnRlclgpOwotICAgICAgICByZXN1bHQtPnNl
dFNlY29uZFkoY2VudGVyWSk7CisgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25kWChXVEZNb3ZlKGNl
bnRlclgpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTZWNvbmRZKFdURk1vdmUoY2VudGVyWSkpOwog
ICAgIH0KIAogICAgIGlmICgoc2hhcGUgfHwgc2l6ZUtleXdvcmQgfHwgaG9yaXpvbnRhbFNpemUg
fHwgY2VudGVyWCB8fCBjZW50ZXJZKSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFjb25zdW1lR3JhZGll
bnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdCkpCisgICAgaWYgKCFjb25z
dW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdC5nZXQoKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0
aW5nLCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nLCBDU1NH
cmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQogewotICAgIENTU0xpbmVhckdyYWRpZW50VmFsdWUq
IHJlc3VsdCA9IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIGdyYWRp
ZW50VHlwZSk7CisgICAgUmVmUHRyPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENT
U0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIGdyYWRpZW50VHlwZSk7CiAK
ICAgICBib29sIGV4cGVjdENvbW1hID0gdHJ1ZTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogYW5n
bGUgPSBjb25zdW1lQW5nbGUoYXJncyk7Ci0gICAgaWYgKGFuZ2xlKSB7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0QW5nbGUoYW5nbGUpOwotICAgIH0gZWxzZSBpZiAoZ3JhZGllbnRUeXBlID09IENTU1By
ZWZpeGVkTGluZWFyR3JhZGllbnQgfHwgY29uc3VtZUlkZW50PENTU1ZhbHVlVG8+KGFyZ3MpKSB7
Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBlbmRYID0gY29uc3VtZUlkZW50PENTU1ZhbHVl
TGVmdCwgQ1NTVmFsdWVSaWdodD4oYXJncyk7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBl
bmRZID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQm90dG9tLCBDU1NWYWx1ZVRvcD4oYXJncyk7Cisg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBj
c3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGlmIChhbmdsZSkKKyAg
ICAgICAgcmVzdWx0LT5zZXRBbmdsZShhbmdsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBlbHNl
IGlmIChncmFkaWVudFR5cGUgPT0gQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCB8fCBjb25zdW1l
SWRlbnQ8Q1NTVmFsdWVUbz4oYXJncykpIHsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBlbmRYID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4oYXJn
cyk7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW5kWSA9IGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUJvdHRvbSwgQ1NTVmFsdWVUb3A+KGFyZ3MpOwogICAgICAgICBpZiAoIWVuZFgg
JiYgIWVuZFkpIHsKICAgICAgICAgICAgIGlmIChncmFkaWVudFR5cGUgPT0gQ1NTTGluZWFyR3Jh
ZGllbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05NDMsMTI1ICs5NDks
OTEgQEAgc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTGluZWFyR3JhZGllbnQoQwogICAgICAgICAg
ICAgZW5kWCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGFyZ3Mp
OwogICAgICAgICB9CiAKLSAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoZW5kWCk7Ci0gICAgICAg
IHJlc3VsdC0+c2V0Rmlyc3RZKGVuZFkpOworICAgICAgICByZXN1bHQtPnNldEZpcnN0WChXVEZN
b3ZlKGVuZFgpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFkoV1RGTW92ZShlbmRZKSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgZXhwZWN0Q29tbWEgPSBmYWxzZTsKICAgICB9CiAKICAgICBp
ZiAoZXhwZWN0Q29tbWEgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JT
dG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQpKQorICAgIGlmICghY29uc3VtZUdyYWRp
ZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQuZ2V0KCkpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1DU1NWYWx1ZSogY29u
c3VtZUltYWdlT3JOb25lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250
ZXh0IGNvbnRleHQpCitSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQogewogICAgIGlm
IChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiBjb25z
dW1lSWRlbnQocmFuZ2UpOwogICAgIHJldHVybiBjb25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQp
OwogfQogCi1zdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDcm9zc0ZhZGUoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncywgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZT4gY29uc3VtZUNyb3NzRmFkZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJz
ZXJDb250ZXh0IGNvbnRleHQpCiB7Ci0gICAgQ1NTVmFsdWUqIGZyb21JbWFnZVZhbHVlID0gY29u
c3VtZUltYWdlT3JOb25lKGFyZ3MsIGNvbnRleHQpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gZnJv
bUltYWdlVmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUoYXJncywgY29udGV4dCk7CiAgICAgaWYg
KCFmcm9tSW1hZ2VWYWx1ZSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgQ1NTVmFsdWUqIHRvSW1hZ2VWYWx1ZSA9
IGNvbnN1bWVJbWFnZU9yTm9uZShhcmdzLCBjb250ZXh0KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+
IHRvSW1hZ2VWYWx1ZSA9IGNvbnN1bWVJbWFnZU9yTm9uZShhcmdzLCBjb250ZXh0KTsKICAgICBp
ZiAoIXRvSW1hZ2VWYWx1ZSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGVy
Y2VudGFnZSA9IG51bGxwdHI7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwZXJjZW50
YWdlOwogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBwZXJjZW50YWdlQXJnID0gYXJncy5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgIGlmIChwZXJjZW50YWdlQXJnLnR5cGUoKSA9
PSBQZXJjZW50YWdlVG9rZW4pCi0gICAgICAgIHBlcmNlbnRhZ2UgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKGNsYW1wVG88ZG91YmxlPihwZXJjZW50YWdlQXJnLm51bWVyaWNWYWx1ZSgpIC8g
MTAwLCAwLCAxKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpOworICAgICAg
ICBwZXJjZW50YWdlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGRvdWJsZT4o
cGVyY2VudGFnZUFyZy5udW1lcmljVmFsdWUoKSAvIDEwMCwgMCwgMSksIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXM6OkNTU19OVU1CRVIpOwogICAgIGVsc2UgaWYgKHBlcmNlbnRhZ2VBcmcu
dHlwZSgpID09IE51bWJlclRva2VuKQotICAgICAgICBwZXJjZW50YWdlID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShjbGFtcFRvPGRvdWJsZT4ocGVyY2VudGFnZUFyZy5udW1lcmljVmFsdWUo
KSwgMCwgMSksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICAgICAg
cGVyY2VudGFnZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxkb3VibGU+KHBl
cmNlbnRhZ2VBcmcubnVtZXJpY1ZhbHVlKCksIDAsIDEpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzOjpDU1NfTlVNQkVSKTsKIAogICAgIGlmICghcGVyY2VudGFnZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENTU0Nyb3NzZmFkZVZhbHVlOjpjcmVhdGUoZnJvbUlt
YWdlVmFsdWUsIHRvSW1hZ2VWYWx1ZSwgcGVyY2VudGFnZSk7CisgICAgcmV0dXJuIENTU0Nyb3Nz
ZmFkZVZhbHVlOjpjcmVhdGUoZnJvbUltYWdlVmFsdWUucmVsZWFzZU5vbk51bGwoKSwgdG9JbWFn
ZVZhbHVlLnJlbGVhc2VOb25OdWxsKCksIHBlcmNlbnRhZ2UucmVsZWFzZU5vbk51bGwoKSk7CiB9
CiAKLXN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhaW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKLXsKLSAgICBEQ0hFQ0soUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6Y3NzUGFpbnRBUElFbmFibGVkKCkpOwotCi0gICAgQ1NTQ3VzdG9tSWRlbnRW
YWx1ZSogbmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudChhcmdzKTsKLSAgICBpZiAoIW5hbWUpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIENTU1BhaW50VmFsdWU6OmNyZWF0
ZShuYW1lKTsKLX0KLQotc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR2VuZXJhdGVkSW1hZ2UoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKK3N0YXRp
YyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHZW5lcmF0ZWRJbWFnZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQogewogICAgIENTU1ZhbHVlSUQg
aWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOwogICAgIENTU1BhcnNlclRva2VuUmFuZ2Ug
cmFuZ2VDb3B5ID0gcmFuZ2U7CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3Vt
ZUZ1bmN0aW9uKHJhbmdlQ29weSk7Ci0gICAgQ1NTVmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7Ci0g
ICAgaWYgKGlkID09IENTU1ZhbHVlUmFkaWFsR3JhZGllbnQpIHsKLSAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZVJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcp
OwotICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCkg
ewotICAgICAgICByZXN1bHQgPSBjb25zdW1lUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5t
b2RlKCksIFJlcGVhdGluZyk7Ci0gICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdExp
bmVhckdyYWRpZW50KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBzZW5kIGEgZGVw
cmVjYXRpb24gbWVzc2FnZS4KLSAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQotICAg
ICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0
ZWRXZWJLaXRMaW5lYXJHcmFkaWVudCk7Ci0gICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJH
cmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgTm9uUmVwZWF0aW5nLCBDU1NQcmVmaXhlZExp
bmVhckdyYWRpZW50KTsKLSAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0
aW5nTGluZWFyR3JhZGllbnQpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNlbmQg
YSBkZXByZWNhdGlvbiBtZXNzYWdlLgotICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkp
Ci0gICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6RGVw
cmVjYXRlZFdlYktpdFJlcGVhdGluZ0xpbmVhckdyYWRpZW50KTsKLSAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBSZXBlYXRpbmcsIENT
U1ByZWZpeGVkTGluZWFyR3JhZGllbnQpOwotICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVS
ZXBlYXRpbmdMaW5lYXJHcmFkaWVudCkgewotICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFy
R3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJlcGVhdGluZywgQ1NTTGluZWFyR3JhZGll
bnQpOwotICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVMaW5lYXJHcmFkaWVudCkgewotICAg
ICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCks
IE5vblJlcGVhdGluZywgQ1NTTGluZWFyR3JhZGllbnQpOwotICAgIH0gZWxzZSBpZiAoaWQgPT0g
Q1NTVmFsdWVXZWJraXRHcmFkaWVudCkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
c2VuZCBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuCi0gICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50
ZXIoKSkKLSAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVy
OjpEZXByZWNhdGVkV2ViS2l0R3JhZGllbnQpOwotICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVw
cmVjYXRlZEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpKTsKLSAgICB9IGVsc2UgaWYgKGlk
ID09IENTU1ZhbHVlV2Via2l0UmFkaWFsR3JhZGllbnQpIHsKLSAgICAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHNlbmQgYSBkZXByZWNhdGlvbiBtZXNzYWdlLgotICAgICAgICBpZiAoY29udGV4
dC51c2VDb3VudGVyKCkpCi0gICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQo
VXNlQ291bnRlcjo6RGVwcmVjYXRlZFdlYktpdFJhZGlhbEdyYWRpZW50KTsKLSAgICAgICAgcmVz
dWx0ID0gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUo
KSwgTm9uUmVwZWF0aW5nKTsKLSAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVw
ZWF0aW5nUmFkaWFsR3JhZGllbnQpIHsKLSAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigp
KQotICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRl
cHJlY2F0ZWRXZWJLaXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCk7Ci0gICAgICAgIHJlc3VsdCA9
IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJl
cGVhdGluZyk7Ci0gICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSkg
eworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzdWx0OworICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJh
ZGlhbEdyYWRpZW50KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lUmFkaWFsR3JhZGllbnQoYXJn
cywgY29udGV4dC5tb2RlLCBOb25SZXBlYXRpbmcpOworICAgIGVsc2UgaWYgKGlkID09IENTU1Zh
bHVlUmVwZWF0aW5nUmFkaWFsR3JhZGllbnQpCisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVSYWRp
YWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUsIFJlcGVhdGluZyk7CisgICAgZWxzZSBpZiAo
aWQgPT0gQ1NTVmFsdWVXZWJraXRMaW5lYXJHcmFkaWVudCkKKyAgICAgICAgcmVzdWx0ID0gY29u
c3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgTm9uUmVwZWF0aW5nLCBDU1NQ
cmVmaXhlZExpbmVhckdyYWRpZW50KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtp
dFJlcGVhdGluZ0xpbmVhckdyYWRpZW50KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFy
R3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlLCBSZXBlYXRpbmcsIENTU1ByZWZpeGVkTGluZWFy
R3JhZGllbnQpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUmVwZWF0aW5nTGluZWFyR3Jh
ZGllbnQpCisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250
ZXh0Lm1vZGUsIFJlcGVhdGluZywgQ1NTTGluZWFyR3JhZGllbnQpOworICAgIGVsc2UgaWYgKGlk
ID09IENTU1ZhbHVlTGluZWFyR3JhZGllbnQpCisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5l
YXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUsIE5vblJlcGVhdGluZywgQ1NTTGluZWFyR3Jh
ZGllbnQpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0R3JhZGllbnQpCisgICAg
ICAgIHJlc3VsdCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQoYXJncywgY29udGV4dC5tb2Rl
KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFJhZGlhbEdyYWRpZW50KQorICAg
ICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRl
eHQubW9kZSwgTm9uUmVwZWF0aW5nKTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtp
dFJlcGVhdGluZ1JhZGlhbEdyYWRpZW50KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVj
YXRlZFJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgUmVwZWF0aW5nKTsKKyAgICBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSkKICAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZUNyb3NzRmFkZShhcmdzLCBjb250ZXh0KTsKLSAgICB9IGVsc2UgaWYgKGlkID09IENT
U1ZhbHVlUGFpbnQpIHsKLSAgICAgICAgcmVzdWx0ID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Y3NzUGFpbnRBUElFbmFibGVkKCkgPyBjb25zdW1lUGFpbnQoYXJncywgY29udGV4dCkgOiBudWxs
cHRyOwotICAgIH0KKwogICAgIGlmICghcmVzdWx0IHx8ICFhcmdzLmF0RW5kKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHJhbmdlID0gcmFuZ2VDb3B5OwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXN0YXRpYyBDU1NWYWx1ZSogY3JlYXRlQ1NTSW1hZ2VWYWx1ZVdpdGhSZWZlcnJl
cihjb25zdCBBdG9taWNTdHJpbmcmIHJhd1ZhbHVlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0KQotewotICAgIENTU1ZhbHVlKiBpbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3Jl
YXRlKHJhd1ZhbHVlLCBjb250ZXh0LmNvbXBsZXRlVVJMKHJhd1ZhbHVlKSk7Ci0gICAgdG9DU1NJ
bWFnZVZhbHVlKGltYWdlVmFsdWUpLT5zZXRSZWZlcnJlcihjb250ZXh0LnJlZmVycmVyKCkpOwot
ICAgIHJldHVybiBpbWFnZVZhbHVlOwotfQotCi1zdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVJbWFn
ZVNldChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZVNldChDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOwogICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOwotICAgIENTU0lt
YWdlU2V0VmFsdWUqIGltYWdlU2V0ID0gQ1NTSW1hZ2VTZXRWYWx1ZTo6Y3JlYXRlKCk7CisgICAg
UmVmUHRyPENTU0ltYWdlU2V0VmFsdWU+IGltYWdlU2V0ID0gQ1NTSW1hZ2VTZXRWYWx1ZTo6Y3Jl
YXRlKCk7CiAgICAgZG8gewogICAgICAgICBBdG9taWNTdHJpbmcgdXJsVmFsdWUgPSBjb25zdW1l
VXJsQXNTdHJpbmdWaWV3KGFyZ3MpLnRvQXRvbWljU3RyaW5nKCk7CiAgICAgICAgIGlmICh1cmxW
YWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIENT
U1ZhbHVlKiBpbWFnZSA9IGNyZWF0ZUNTU0ltYWdlVmFsdWVXaXRoUmVmZXJyZXIodXJsVmFsdWUs
IGNvbnRleHQpOworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IGltYWdlID0gQ1NTSW1hZ2VWYWx1
ZTo6Y3JlYXRlKGNvbXBsZXRlVVJMKGNvbnRleHQsIHVybFZhbHVlKSk7CiAgICAgICAgIGltYWdl
U2V0LT5hcHBlbmQoKmltYWdlKTsKIAogICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9r
ZW4gPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CkBAIC0xMDY5LDExICsxMDQx
LDExIEBAIHN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUltYWdlU2V0KENTU1BhcnMKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAodG9rZW4udmFsdWUoKSAhPSAieCIpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgRENIRUNLKHRva2VuLnVuaXRUeXBl
KCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpVbmtub3duKTsKKyAgICAgICAgQVNT
RVJUKHRva2VuLnVuaXRUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NT
X1VOS05PV04pOwogICAgICAgICBkb3VibGUgaW1hZ2VTY2FsZUZhY3RvciA9IHRva2VuLm51bWVy
aWNWYWx1ZSgpOwogICAgICAgICBpZiAoaW1hZ2VTY2FsZUZhY3RvciA8PSAwKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGltYWdlU2V0LT5hcHBlbmQoKkNTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoaW1hZ2VTY2FsZUZhY3RvciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpOdW1iZXIpKTsKKyAgICAgICAgaW1hZ2VTZXQtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKGltYWdlU2NhbGVGYWN0b3IsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6
OkNTU19OVU1CRVIpKTsKICAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKTsKICAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xMDkwLDExICsxMDYyLDExIEBAIHN0YXRpYyBib29sIGlzR2VuZXJhdGVkSW1hZ2Uo
Q1NTVmFsdWVJRCAKICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRHcmFkaWVudCB8fCBp
ZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSB8fCBpZCA9PSBDU1NWYWx1ZVBhaW50OwogfQog
Ci1DU1NWYWx1ZSogY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJDb250ZXh0IGNvbnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSBnZW5lcmF0ZWRJbWFn
ZSkKK1JlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSBnZW5l
cmF0ZWRJbWFnZSkKIHsKICAgICBBdG9taWNTdHJpbmcgdXJpID0gY29uc3VtZVVybEFzU3RyaW5n
VmlldyhyYW5nZSkudG9BdG9taWNTdHJpbmcoKTsKICAgICBpZiAoIXVyaS5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZUNTU0ltYWdlVmFsdWVXaXRoUmVmZXJyZXIodXJpLCBjb250ZXh0
KTsKKyAgICAgICAgcmV0dXJuIENTU0ltYWdlVmFsdWU6OmNyZWF0ZShjb21wbGV0ZVVSTChjb250
ZXh0LCB1cmkpKTsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBGdW5jdGlvblRva2Vu
KSB7CiAgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOwog
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRJbWFnZVNldCkKQEAgLTExMDYsNiArMTA3
OCw1IEBAIENTU1ZhbHVlKiBjb25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW4KIH0KIAogfSAv
LyBuYW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzCi0qLwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzLmgJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzX2gKICNk
ZWZpbmUgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzX2gKIAotLy8gRklYTUUtTkVXUEFSU0VSICNp
bmNsdWRlICJDU1NDdXN0b21JZGVudFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJU
b2tlblJhbmdlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKQEAgLTM5LDEwICsz
OSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NTU3RyaW5nVmFsdWU7Ci1j
bGFzcyBDU1NVUklWYWx1ZTsKLWNsYXNzIENTU1ZhbHVlUGFpcjsKLQogLy8gV2hlbiB0aGVzZSBm
dW5jdGlvbnMgYXJlIHN1Y2Nlc3NmdWwsIHRoZXkgd2lsbCBjb25zdW1lIGFsbCB0aGUgcmVsZXZh
bnQKIC8vIHRva2VucyBmcm9tIHRoZSByYW5nZSBhbmQgYWxzbyBjb25zdW1lIGFueSB3aGl0ZXNw
YWNlIHdoaWNoIGZvbGxvd3MuIFdoZW4KIC8vIHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgZG9lc24n
dCBtYXRjaCB0aGUgdHlwZSB3ZSdyZSBsb29raW5nIGZvciwgdGhlIHJhbmdlCkBAIC02MCwzOSAr
NTYsMzkgQEAgZW51bSBjbGFzcyBVbml0bGVzc1F1aXJrIHsKICAgICBGb3JiaWQKIH07CiAKLUNT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSW50ZWdlcihDU1NQYXJzZXJUb2tlblJhbmdlJiwgZG91
YmxlIG1pbmltdW1WYWx1ZSA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsK
LUNTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUludGVnZXIoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYsIGRvdWJsZSBtaW5pbXVtVmFsdWUgPSAtc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjptYXgoKSk7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQb3Np
dGl2ZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogYm9vbCBjb25zdW1lTnVtYmVyUmF3
KENTU1BhcnNlclRva2VuUmFuZ2UmLCBkb3VibGUmIHJlc3VsdCk7Ci1DU1NQcmltaXRpdmVWYWx1
ZSogY29uc3VtZU51bWJlcihDU1NQYXJzZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5nZSk7Ci1DU1NQ
cmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCk7Ci1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYsIFZhbHVlUmFuZ2UpOwotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UsIFVuaXRs
ZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwotQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVBbmdsZShDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci1DU1NQcmltaXRpdmVWYWx1ZSogY29u
c3VtZVRpbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOworUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lTnVtYmVyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJh
bmdlKTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUxlbmd0aChDU1NQYXJzZXJU
b2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVu
aXRsZXNzUXVpcms6OkZvcmJpZCk7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQ
ZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlKTsKK1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiwg
Q1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6
OkZvcmJpZCk7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVBbmdsZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVp
cms6OkZvcmJpZCk7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVUaW1lKENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJr
ID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKIAotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJ
ZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUlk
ZW50UmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1ZhbHVlSUQgbG93ZXIsIENTU1ZhbHVl
SUQgdXBwZXIpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnRS
YW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1
cHBlcik7CiB0ZW1wbGF0ZTxDU1NWYWx1ZUlELCBDU1NWYWx1ZUlELi4uPiBpbmxpbmUgYm9vbCBp
ZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCBpZCk7Ci10ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93
ZWRJZGVudHM+IENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYpOwordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAKLS8v
IEZJWE1FLU5FV1BBUlNFUiBDU1NDdXN0b21JZGVudFZhbHVlKiBjb25zdW1lQ3VzdG9tSWRlbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotQ1NTU3RyaW5nVmFsdWUqIGNvbnN1bWVTdHJpbmcoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOworUmVmUHRyPENTU0N1c3RvbUlkZW50VmFsdWU+IGNvbnN1bWVD
dXN0b21JZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJik7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNvbnN1bWVTdHJpbmcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogU3RyaW5nVmlldyBjb25z
dW1lVXJsQXNTdHJpbmdWaWV3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLUNTU1VSSVZhbHVlKiBj
b25zdW1lVXJsKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gY29uc3VtZVVybChDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAKLUNTU1ZhbHVlKiBjb25zdW1l
Q29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIGJvb2wgYWNjZXB0UXVp
cmt5Q29sb3JzID0gZmFsc2UpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQ29s
b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIGJvb2wgYWNjZXB0UXVpcmt5
Q29sb3JzID0gZmFsc2UpOwogCi1DU1NWYWx1ZVBhaXIqIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayk7Ci1ib29sIGNvbnN1
bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NR
dWlyaywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpOwotYm9vbCBjb25z
dW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyaywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3Vs
dFkpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmspOworYm9vbCBjb25zdW1l
UG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVp
cmssIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFgsIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4mIHJlc3VsdFkpOworYm9vbCBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihD
U1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYg
cmVzdWx0WSk7CiAKIGVudW0gY2xhc3MgQ29uc3VtZUdlbmVyYXRlZEltYWdlIHsKICAgICBBbGxv
dywKICAgICBGb3JiaWQKIH07CiAKLUNTU1ZhbHVlKiBjb25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYsIENTU1BhcnNlckNvbnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSA9IENvbnN1
bWVHZW5lcmF0ZWRJbWFnZTo6QWxsb3cpOwotQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZU9yTm9uZShD
U1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyQ29udGV4dCk7CitSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyQ29udGV4dCwgQ29u
c3VtZUdlbmVyYXRlZEltYWdlID0gQ29uc3VtZUdlbmVyYXRlZEltYWdlOjpBbGxvdyk7CitSZWZQ
dHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NT
UGFyc2VyQ29udGV4dCk7CiAKIC8vIFRlbXBsYXRlIGltcGxlbWVudGF0aW9ucyBhcmUgYXQgdGhl
IGJvdHRvbSBvZiB0aGUgZmlsZSBmb3IgcmVhZGFiaWxpdHkuCiAKQEAgLTExMiw3ICsxMDgsNyBA
QCB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIG5hbWVzPiBSZWZQdHI8Q1NTCiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0NTU1dpZGVLZXl3b3JkKGNvbnN0IENTU1ZhbHVlSUQmIGlkKQogewotICAgIHJl
dHVybiBpZCA9PSBDU1NWYWx1ZUluaXRpYWwgfHwgaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlk
ID09IENTU1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NTVmFsdWVEZWZhdWx0OworICAgIHJldHVybiBp
ZCA9PSBDU1NWYWx1ZUluaXRpYWwgfHwgaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENT
U1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnQgfHwgaWQgPT0gQ1NTVmFsdWVEZWZh
dWx0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCShyZXZpc2lv
biAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZjxDYWxjdWxhdGlvblZhbHVlPiBDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoc3RkOjp1
bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIENhbGN1bGF0aW9uUGVybWl0dGVk
VmFsdWVSYW5nZSByYW5nZSkKK1JlZjxDYWxjdWxhdGlvblZhbHVlPiBDYWxjdWxhdGlvblZhbHVl
OjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIFZhbHVl
UmFuZ2UgcmFuZ2UpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FsY3VsYXRpb25WYWx1
ZShXVEZNb3ZlKHZhbHVlKSwgcmFuZ2UpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NhbGN1bGF0aW9uVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEg
KzQ2LDYgQEAgZW51bSBDYWxjT3BlcmF0b3IgewogICAgIENhbGNEaXZpZGUgPSAnLycKIH07CiAK
LWVudW0gQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHsKLSAgICBDYWxjdWxhdGlvblJh
bmdlQWxsLAotICAgIENhbGN1bGF0aW9uUmFuZ2VOb25OZWdhdGl2ZQotfTsKLQogZW51bSBDYWxj
RXhwcmVzc2lvbk5vZGVUeXBlIHsKICAgICBDYWxjRXhwcmVzc2lvbk5vZGVVbmRlZmluZWQsCiAg
ICAgQ2FsY0V4cHJlc3Npb25Ob2RlTnVtYmVyLApAQCAtMTM2LDE0ICsxMzEsMTQgQEAgcHJpdmF0
ZToKIAogY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGN1bGF0
aW9uVmFsdWU+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPENhbGN1
bGF0aW9uVmFsdWU+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiwg
Q2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPENhbGN1bGF0aW9uVmFsdWU+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJl
c3Npb25Ob2RlPiwgVmFsdWVSYW5nZSk7CiAgICAgZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFs
dWUpIGNvbnN0OwogCiAgICAgYm9vbCBzaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZTsgfQogICAgIGNvbnN0IENhbGNFeHBy
ZXNzaW9uTm9kZSYgZXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuICptX2V4cHJlc3Npb247IH0K
IAogcHJpdmF0ZToKLSAgICBDYWxjdWxhdGlvblZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhw
cmVzc2lvbk5vZGU+LCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOworICAgIENhbGN1
bGF0aW9uVmFsdWUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4sIFZhbHVlUmFu
Z2UpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbV9leHByZXNz
aW9uOwogICAgIGJvb2wgbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmU7CkBAIC0xNTQsOSArMTQ5
LDkgQEAgaW5saW5lIENhbGNFeHByZXNzaW9uTm9kZTo6Q2FsY0V4cHJlc3NpbwogewogfQogCi1p
bmxpbmUgQ2FsY3VsYXRpb25WYWx1ZTo6Q2FsY3VsYXRpb25WYWx1ZShzdGQ6OnVuaXF1ZV9wdHI8
Q2FsY0V4cHJlc3Npb25Ob2RlPiBleHByZXNzaW9uLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVl
UmFuZ2UgcmFuZ2UpCitpbmxpbmUgQ2FsY3VsYXRpb25WYWx1ZTo6Q2FsY3VsYXRpb25WYWx1ZShz
dGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBleHByZXNzaW9uLCBWYWx1ZVJhbmdl
IHJhbmdlKQogICAgIDogbV9leHByZXNzaW9uKFdURk1vdmUoZXhwcmVzc2lvbikpCi0gICAgLCBt
X3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZShyYW5nZSA9PSBDYWxjdWxhdGlvblJhbmdlTm9uTmVn
YXRpdmUpCisgICAgLCBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZShyYW5nZSA9PSBWYWx1ZVJh
bmdlTm9uTmVnYXRpdmUpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNw
cAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDcgKzI5Myw3IEBAIHN0YXRpYyBMZW5ndGggYmxlbmRN
aXhlZFR5cGVzKGNvbnN0IExlbmcKICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAKICAgICBh
dXRvIGJsZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihm
cm9tLCB0bywgcHJvZ3Jlc3MpOwotICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6
Y3JlYXRlKFdURk1vdmUoYmxlbmQpLCBDYWxjdWxhdGlvblJhbmdlQWxsKSk7CisgICAgcmV0dXJu
IExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShibGVuZCksIFZhbHVlUmFu
Z2VBbGwpKTsKIH0KIAogTGVuZ3RoIGJsZW5kKGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVu
Z3RoJiB0bywgZG91YmxlIHByb2dyZXNzKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0
LDE2IEBAIGJvb2wgQ29sb3I6OnBhcnNlSGV4Q29sb3IoY29uc3QgU3RyaW5nJiAKICAgICByZXR1
cm4gcGFyc2VIZXhDb2xvcihuYW1lLmNoYXJhY3RlcnMxNigpLCBuYW1lLmxlbmd0aCgpLCByZ2Ip
OwogfQogCitib29sIENvbG9yOjpwYXJzZUhleENvbG9yKGNvbnN0IFN0cmluZ1ZpZXcmIG5hbWUs
IFJHQkEzMiYgcmdiKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG5hbWUubGVuZ3RoKCk7Cisg
ICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobmFtZS5pczhC
aXQoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlSGV4Q29sb3IobmFtZS5jaGFyYWN0ZXJzOCgpLCBu
YW1lLmxlbmd0aCgpLCByZ2IpOworICAgIHJldHVybiBwYXJzZUhleENvbG9yKG5hbWUuY2hhcmFj
dGVyczE2KCksIG5hbWUubGVuZ3RoKCksIHJnYik7Cit9CisKIGludCBkaWZmZXJlbmNlU3F1YXJl
ZChjb25zdCBDb2xvciYgYzEsIGNvbnN0IENvbG9yJiBjMikKIHsKICAgICBpbnQgZFIgPSBjMS5y
ZWQoKSAtIGMyLnJlZCgpOwpAQCAtMjI2LDcgKzIzNiw3IEBAIENvbG9yOjpDb2xvcihjb25zdCBT
dHJpbmcmIG5hbWUpCiBDb2xvcjo6Q29sb3IoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpZiAo
bmFtZVswXSA9PSAnIycpCi0gICAgICAgIG1fdmFsaWQgPSBwYXJzZUhleENvbG9yKCZuYW1lWzFd
LCBtX2NvbG9yKTsKKyAgICAgICAgbV92YWxpZCA9IHBhcnNlSGV4Q29sb3IoKFN0cmluZykmbmFt
ZVsxXSwgbV9jb2xvcik7CiAgICAgZWxzZSB7CiAgICAgICAgIGNvbnN0IE5hbWVkQ29sb3IqIGZv
dW5kQ29sb3IgPSBmaW5kQ29sb3IobmFtZSwgc3RybGVuKG5hbWUpKTsKICAgICAgICAgbV9jb2xv
ciA9IGZvdW5kQ29sb3IgPyBmb3VuZENvbG9yLT5BUkdCVmFsdWUgOiAwOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyMDU5OTApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzUsNiArMTc1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBwYXJz
ZUhleENvbG9yKGNvbnN0IFN0cmluZyYsIFJHQkEzMiYpOworICAgIHN0YXRpYyBib29sIHBhcnNl
SGV4Q29sb3IoY29uc3QgU3RyaW5nVmlldyYsIFJHQkEzMiYpOwogICAgIHN0YXRpYyBib29sIHBh
cnNlSGV4Q29sb3IoY29uc3QgTENoYXIqLCB1bnNpZ25lZCwgUkdCQTMyJik7CiAgICAgc3RhdGlj
IGJvb2wgcGFyc2VIZXhDb2xvcihjb25zdCBVQ2hhciosIHVuc2lnbmVkLCBSR0JBMzImKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3Bw
CShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFz
aWNTaGFwZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgQmFzaWNT
aGFwZUNlbnRlckNvb3JkaW5hdGU6OnVwZGF0ZUMKICAgICBhdXRvIGxocyA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKTsKICAgICBh
dXRvIHJocyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fbGVuZ3Ro
KTsKICAgICBhdXRvIG9wID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJpbmFyeU9w
ZXJhdGlvbj4oV1RGTW92ZShsaHMpLCBXVEZNb3ZlKHJocyksIENhbGNTdWJ0cmFjdCk7Ci0gICAg
bV9jb21wdXRlZExlbmd0aCA9IExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92
ZShvcCksIENhbGN1bGF0aW9uUmFuZ2VBbGwpKTsKKyAgICBtX2NvbXB1dGVkTGVuZ3RoID0gTGVu
Z3RoKENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkp
OwogfQogCiBzdHJ1Y3QgU1ZHUGF0aFRyYW5zbGF0ZWRCeXRlU3RyZWFtIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289094</attachid>
            <date>2016-09-16 12:39:01 -0700</date>
            <delta_ts>2016-09-16 12:55:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>88580</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjAzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMiBAQAorMjAxNi0wOS0xNiAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBbQ1NTIFBhcnNlcl0gR2V0IENTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAgY29tcGlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwNzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Omhhc0RvdWJsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNo
ZWNrRGVwdGhBbmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjRXhwcmVzc2lvbk5v
ZGVQYXJzZXI6OnBhcnNlQ2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjRXhwcmVzc2lv
bk5vZGVQYXJzZXI6Om9wZXJhdG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0V4
cHJlc3Npb25Ob2RlUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nh
bGNFeHByZXNzaW9uTm9kZVBhcnNlcjo6cGFyc2VWYWx1ZVRlcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyOjpwYXJzZVZhbHVlTXVsdGlwbGljYXRpdmVF
eHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNFeHByZXNzaW9uTm9kZVBhcnNl
cjo6cGFyc2VBZGRpdGl2ZVZhbHVlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
YWxjRXhwcmVzc2lvbk5vZGVQYXJzZXI6OnBhcnNlVmFsdWVFeHByZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmNoZWNrRGVwdGhBbmRJbmRleERlcHJlY2F0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyRGVwcmVjYXRlZDo6cGFyc2VWYWx1ZVRlcm0p
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyRGVwcmVjYXRl
ZDo6cGFyc2VWYWx1ZU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXJEZXByZWNhdGVkOjpwYXJzZUFkZGl0aXZlVmFs
dWVFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ2FsY1ZhbHVlOjpjcmVhdGVDYWxjdWxhdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NhbGNWYWx1ZTo6c2V0UGVybWl0dGVkVmFsdWVSYW5nZSk6CisgICAgICAgIFN3aXRjaCBv
ZmYgdGhlIHBlcm1pdHRlZCBjYWxjIHZhbHVlIHJhbmdlIGVudW0sIHNpbmNlIHdlIGNhbiBqdXN0
IHVzZSB0aGUgaWRlbnRpY2FsIFZhbHVlUmFuZ2UgZW51bS4KKyAgICAgICAgRGVwcmVjYXRlIHRo
ZSBDU1NQYXJzZXJWYWx1ZUxpc3QtYmFzZWQgcGFyc2VyIGJ5IHJlbmFtaW5nIGl0LCBhbmQgYWRk
IGEgbmV3IHBhcnNlciB0aGF0IG9wZXJhdGVzCisgICAgICAgIG9uIHRva2Vucy4KKworICAgICAg
ICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
Q1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU3Ry
aW5nVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y2xlYW51cCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5n
dGhEb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51
bWJlckZvckN1c3RvbUNTU1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6YnVpbGRQYXJz
ZXJWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBDU1NfUVVJUktZX0VNUyBhcyBhIHVuaXQgdHlwZS4gVGhpcyB3aWxsIGxl
dCB1cyBlbGltaW5hdGUgdGhlIGV4dHJhIG1faXNRdWlya1ZhbHVlIGJvb2xlYW4KKyAgICAgICAg
ZXZlbnR1YWxseS4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6dmFsaWRhdGVDYWxjdWxhdGlvblVuaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNhbGN1bGF0aW9uKToKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1BhcnNlci5oOgorICAgICAgICBTd2l0Y2ggdG8gVmFsdWVSYW5nZS4KKworICAg
ICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXBsZXRlVVJMKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOgor
ICAgICAgICBNYWtlIHRoZSBVUkwgY29tcGxldGlvbiBmdW5jdGlvbiBmcm9tIENTU1BhcnNlci5j
cHAgYXZhaWxhYmxlIHRvIGFsbC4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyTW9k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6aXNVbml0TGVzc1ZhbHVlUGFyc2luZ0VuYWJsZWRGb3JN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVW5pdExlc3NMZW5ndGhQYXJzaW5nRW5hYmxlZEZv
ck1vZGUpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdGhpcyB0byB2YWx1ZSwgc2luY2UgZm9y
IG5vdyB3ZSdyZSBub3Qgc3VwcG9ydGluZyBCbGluaydzIFVzZXJVbml0cy4gVGhpcyBtZWFucyB3
ZSBuZWVkIHRvIHN1cHBvcnQKKyAgICAgICAgdW5pdGxlc3MgcGFyc2luZyBmb3IgdGltZXMgYW5k
IGFuZ2xlcyBpbiBhZGRpdGlvbiB0byBsZW5ndGhzLCBtYWtpbmcgdGhlIG5hbWUgb2YgdGhlIGZ1
bmN0aW9uIGluYXBwcm9wcmlhdGUuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclRv
a2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNzc1ByaW1pdGl2ZVZhbHVlVW5pdEZyb21Ucmll
KToKKyAgICAgICAgVHVybiBxdWlya3kgZW1zIHN1cHBvcnQgYmFjayBvbi4KKworICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSk6CisgICAgICAgIFN1cHBvcnQgcXVpcmt5IGVtcy4K
KworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Q2FsY1BhcnNlcjo6Y29u
c3VtZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6
Q2FsY1BhcnNlcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVBvc2l0aXZlSW50ZWdlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpzaG91bGRBY2NlcHRVbml0bGVz
c1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OmNvbnN1bWVQZXJjZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVs
cGVyczo6Y2FuQ29uc3VtZUNhbGNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVMZW5ndGhPclBlcmNlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQW5nbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJZGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJZGVudFJhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUN1c3Rv
bUlkZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OmNvbnN1bWVVcmwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OjpwYXJzZVJHQlBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzOjpwYXJzZUhTTFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUG9zaXRpb25Db21wb25lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwb3NpdGlvbkZyb21PbmVWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBvc2l0aW9u
RnJvbVR3b1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnM6OnBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFsdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU9uZU9y
VHdvVmFsdWVkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50U3Rv
cENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZFJh
ZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6Y29uc3VtZVJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
UGFyc2VySGVscGVyczo6Y29uc3VtZUxpbmVhckdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUltYWdlT3JOb25lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUNyb3NzRmFkZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVHZW5lcmF0
ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNv
bnN1bWVJbWFnZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNvbnN1bWVJbWFnZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6
aXNDU1NXaWRlS2V5d29yZCk6CisgICAgICAgIExvdHMgb2YgY2hhbmdlcyBoZXJlLiBUaGUgbW9z
dCBpbXBvcnRhbnQgaXMgc3dpdGNoaW5nIG92ZXIgdG8gUmVmUHRycyBhbmQgUmVmcyB3aGVyZSBh
cHByb3ByaWF0ZSwgd2l0aCB0aGUKKyAgICAgICAgcmVxdWlzaXRlIFdURk1vdmVzLiBVbml0IHR5
cGVzIGFsc28gaGF2ZSB0byBiZSBjb252ZXJ0ZWQgYmFjayB0byBvdXIgdmFsdWVzLCBhbmQgdW5p
dGxlc3MgcGFyc2luZyBoYXMKKyAgICAgICAgdG8gd29yayB3aXRoIGNvbnN1bWVUaW1lIGFuZCBj
b25zdW1lQW5nbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRp
b25WYWx1ZTo6Q2FsY3VsYXRpb25WYWx1ZSk6CisgICAgICAgIFVzZSBWYWx1ZVJhbmdlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OnBhcnNlSGV4Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICBBZGQgYSBTdHJp
bmdWaWV3LWJhc2VkIHBhcnNlSGV4Q29sb3IgZnVuY3Rpb24uCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUNl
bnRlckNvb3JkaW5hdGU6OnVwZGF0ZUNvbXB1dGVkTGVuZ3RoKToKKyAgICAgICAgVXNlIFZhbHVl
UmFuZ2UKKwogMjAxNi0wOS0xNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWVkaWEtc291cmNlXSBGaXggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtdGltZXN0YW1wLW9mZnNldC5odG1sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCShyZXZpc2lvbiAyMDU5
OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVl
LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJh
bmdlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMTQyLDYg
KzE0Myw3IEBAIHN0YXRpYyBib29sIGhhc0RvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVYKICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FOgogICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19TSEFQRToKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UVVBRDoKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUVVJUktZX0VNUzoKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19M
RU5HVEhfUkVQRUFUOgogI2VuZGlmCkBAIC01NTksNyArNTYxLDEzNSBAQCBwcml2YXRlOgogICAg
IGNvbnN0IENhbGNPcGVyYXRvciBtX29wZXJhdG9yOwogfTsKIAotc3RhdGljIFBhcnNlU3RhdGUg
Y2hlY2tEZXB0aEFuZEluZGV4KGludCogZGVwdGgsIHVuc2lnbmVkIGluZGV4LCBDU1NQYXJzZXJW
YWx1ZUxpc3QqIHRva2VucykKK3N0YXRpYyBQYXJzZVN0YXRlIGNoZWNrRGVwdGhBbmRJbmRleChp
bnQqIGRlcHRoLCBDU1NQYXJzZXJUb2tlblJhbmdlIHRva2VucykKK3sKKyAgICAoKmRlcHRoKSsr
OworICAgIGlmICh0b2tlbnMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIE5vTW9yZVRva2VuczsK
KyAgICBpZiAoKmRlcHRoID4gbWF4RXhwcmVzc2lvbkRlcHRoKQorICAgICAgICByZXR1cm4gVG9v
RGVlcDsKKyAgICByZXR1cm4gT0s7Cit9CisKK2NsYXNzIENTU0NhbGNFeHByZXNzaW9uTm9kZVBh
cnNlciB7CitwdWJsaWM6CisgICAgUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcGFyc2VD
YWxjKENTU1BhcnNlclRva2VuUmFuZ2UgdG9rZW5zKQorICAgIHsKKyAgICAgICAgVmFsdWUgcmVz
dWx0OworICAgICAgICB0b2tlbnMuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICAgICAgYm9vbCBv
ayA9IHBhcnNlVmFsdWVFeHByZXNzaW9uKHRva2VucywgMCwgJnJlc3VsdCk7CisgICAgICAgIGlm
ICghb2sgfHwgIXRva2Vucy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiByZXN1bHQudmFsdWU7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBz
dHJ1Y3QgVmFsdWUgeworICAgICAgICBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1
ZTsKKyAgICB9OworICAgIAorICAgIGNoYXIgb3BlcmF0b3JWYWx1ZShjb25zdCBDU1NQYXJzZXJU
b2tlbiYgdG9rZW4pCisgICAgeworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IERlbGltaXRl
clRva2VuKQorICAgICAgICAgICAgcmV0dXJuIHRva2VuLmRlbGltaXRlcigpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgYm9vbCBwYXJzZVZhbHVlKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHRva2VucywgVmFsdWUqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIENTU1BhcnNlclRv
a2VuIHRva2VuID0gdG9rZW5zLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAg
IGlmICghKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gUGVy
Y2VudGFnZVRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzIHR5cGUgPSB0b2tlbi51bml0VHlwZSgpOworICAgICAgICBpZiAodW5pdENhdGVn
b3J5KHR5cGUpID09IENhbGNPdGhlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIHJlc3VsdC0+dmFsdWUgPSBDU1NDYWxjUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRva2VuLm51bWVyaWNWYWx1ZSgpLCB0eXBlKSwg
dG9rZW4ubnVtZXJpY1ZhbHVlVHlwZSgpID09IEludGVnZXJWYWx1ZVR5cGUpOworICAgICAgICAK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGJvb2wgcGFyc2VWYWx1ZVRl
cm0oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5zLCBpbnQgZGVwdGgsIFZhbHVlKiByZXN1bHQp
CisgICAgeworICAgICAgICBpZiAoY2hlY2tEZXB0aEFuZEluZGV4KCZkZXB0aCwgdG9rZW5zKSAh
PSBPSykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmICh0
b2tlbnMucGVlaygpLnR5cGUoKSA9PSBMZWZ0UGFyZW50aGVzaXNUb2tlbiB8fCB0b2tlbnMucGVl
aygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUNhbGMpIHsKKyAgICAgICAgICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgaW5uZXJSYW5nZSA9IHRva2Vucy5jb25zdW1lQmxvY2soKTsKKyAgICAgICAg
ICAgIHRva2Vucy5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICAgICAgaW5uZXJSYW5nZS5j
b25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICAgICAgcmV0dXJuIHBhcnNlVmFsdWVFeHByZXNz
aW9uKGlubmVyUmFuZ2UsIGRlcHRoLCByZXN1bHQpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gcGFyc2VWYWx1ZSh0b2tlbnMsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IGJvb2wgcGFyc2VWYWx1ZU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbihDU1NQYXJzZXJUb2tlblJh
bmdlJiB0b2tlbnMsIGludCBkZXB0aCwgVmFsdWUqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGlm
IChjaGVja0RlcHRoQW5kSW5kZXgoJmRlcHRoLCB0b2tlbnMpICE9IE9LKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgaWYgKCFwYXJzZVZhbHVlVGVybSh0b2tl
bnMsIGRlcHRoLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAK
KyAgICAgICAgd2hpbGUgKCF0b2tlbnMuYXRFbmQoKSkgeworICAgICAgICAgICAgY2hhciBvcGVy
YXRvckNoYXJhY3RlciA9IG9wZXJhdG9yVmFsdWUodG9rZW5zLnBlZWsoKSk7CisgICAgICAgICAg
ICBpZiAob3BlcmF0b3JDaGFyYWN0ZXIgIT0gQ2FsY011bHRpcGx5ICYmIG9wZXJhdG9yQ2hhcmFj
dGVyICE9IENhbGNEaXZpZGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB0
b2tlbnMuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgVmFsdWUgcmhzOworICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlVGVybSh0b2tlbnMs
IGRlcHRoLCAmcmhzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHJlc3VsdC0+dmFsdWUgPSBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uOjpj
cmVhdGVTaW1wbGlmaWVkKHN0YXRpY19jYXN0PENhbGNPcGVyYXRvcj4ob3BlcmF0b3JDaGFyYWN0
ZXIpLCByZXN1bHQtPnZhbHVlLCByaHMudmFsdWUpOworCisgICAgICAgICAgICBpZiAoIXJlc3Vs
dC0+dmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBwYXJzZUFk
ZGl0aXZlVmFsdWVFeHByZXNzaW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHRva2VucywgaW50IGRl
cHRoLCBWYWx1ZSogcmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKGNoZWNrRGVwdGhBbmRJbmRl
eCgmZGVwdGgsIHRva2VucykgIT0gT0spCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIAorICAgICAgICBpZiAoIXBhcnNlVmFsdWVNdWx0aXBsaWNhdGl2ZUV4cHJlc3Npb24odG9r
ZW5zLCBkZXB0aCwgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
CisgICAgICAgIHdoaWxlICghdG9rZW5zLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGNoYXIgb3Bl
cmF0b3JDaGFyYWN0ZXIgPSBvcGVyYXRvclZhbHVlKHRva2Vucy5wZWVrKCkpOworICAgICAgICAg
ICAgaWYgKG9wZXJhdG9yQ2hhcmFjdGVyICE9IENhbGNBZGQgJiYgb3BlcmF0b3JDaGFyYWN0ZXIg
IT0gQ2FsY1N1YnRyYWN0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYg
KCgmdG9rZW5zLnBlZWsoKSAtIDEpLT50eXBlKCkgIT0gV2hpdGVzcGFjZVRva2VuKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gY2FsYygxcHgrIDJweCkgaXMgaW52YWxpZAorICAg
ICAgICAgICAgdG9rZW5zLmNvbnN1bWUoKTsKKyAgICAgICAgICAgIGlmICh0b2tlbnMucGVlaygp
LnR5cGUoKSAhPSBXaGl0ZXNwYWNlVG9rZW4pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OyAvLyBjYWxjKDFweCArMnB4KSBpcyBpbnZhbGlkCisgICAgICAgICAgICB0b2tlbnMuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVmFsdWUg
cmhzOworICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlTXVsdGlwbGljYXRpdmVFeHByZXNzaW9u
KHRva2VucywgZGVwdGgsICZyaHMpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgcmVzdWx0LT52YWx1ZSA9IENTU0NhbGNCaW5hcnlPcGVy
YXRpb246OmNyZWF0ZVNpbXBsaWZpZWQoc3RhdGljX2Nhc3Q8Q2FsY09wZXJhdG9yPihvcGVyYXRv
ckNoYXJhY3RlciksIHJlc3VsdC0+dmFsdWUsIHJocy52YWx1ZSk7CisgICAgICAgICAgICBpZiAo
IXJlc3VsdC0+dmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBw
YXJzZVZhbHVlRXhwcmVzc2lvbihDU1NQYXJzZXJUb2tlblJhbmdlJiB0b2tlbnMsIGludCBkZXB0
aCwgVmFsdWUqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBwYXJzZUFkZGl0aXZlVmFs
dWVFeHByZXNzaW9uKHRva2VucywgZGVwdGgsIHJlc3VsdCk7CisgICAgfQorfTsKKyAgICAKK3N0
YXRpYyBQYXJzZVN0YXRlIGNoZWNrRGVwdGhBbmRJbmRleERlcHJlY2F0ZWQoaW50KiBkZXB0aCwg
dW5zaWduZWQgaW5kZXgsIENTU1BhcnNlclZhbHVlTGlzdCogdG9rZW5zKQogewogICAgICgqZGVw
dGgpKys7CiAgICAgaWYgKCpkZXB0aCA+IG1heEV4cHJlc3Npb25EZXB0aCkKQEAgLTU2OSw3ICs2
OTksNyBAQCBzdGF0aWMgUGFyc2VTdGF0ZSBjaGVja0RlcHRoQW5kSW5kZXgoaW50CiAgICAgcmV0
dXJuIE9LOwogfQogCi1jbGFzcyBDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXIgeworY2xhc3Mg
Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyRGVwcmVjYXRlZCB7CiBwdWJsaWM6CiAgICAgUmVm
UHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcGFyc2VDYWxjKENTU1BhcnNlclZhbHVlTGlzdCog
dG9rZW5zKQogICAgIHsKQEAgLTYxNiw3ICs3NDYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBw
YXJzZVZhbHVlVGVybShDU1NQYXJzZXJWYWx1ZUxpc3QqIHRva2VucywgaW50IGRlcHRoLCB1bnNp
Z25lZCogaW5kZXgsIFZhbHVlKiByZXN1bHQpCiAgICAgewotICAgICAgICBpZiAoY2hlY2tEZXB0
aEFuZEluZGV4KCZkZXB0aCwgKmluZGV4LCB0b2tlbnMpICE9IE9LKQorICAgICAgICBpZiAoY2hl
Y2tEZXB0aEFuZEluZGV4RGVwcmVjYXRlZCgmZGVwdGgsICppbmRleCwgdG9rZW5zKSAhPSBPSykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAob3BlcmF0b3JWYWx1ZSh0
b2tlbnMsICppbmRleCkgPT0gJygnKSB7CkBAIC02MzUsNyArNzY1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgcGFyc2VWYWx1ZU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbihDU1NQYXJzZXJWYWx1
ZUxpc3QqIHRva2VucywgaW50IGRlcHRoLCB1bnNpZ25lZCogaW5kZXgsIFZhbHVlKiByZXN1bHQp
CiAgICAgewotICAgICAgICBpZiAoY2hlY2tEZXB0aEFuZEluZGV4KCZkZXB0aCwgKmluZGV4LCB0
b2tlbnMpICE9IE9LKQorICAgICAgICBpZiAoY2hlY2tEZXB0aEFuZEluZGV4RGVwcmVjYXRlZCgm
ZGVwdGgsICppbmRleCwgdG9rZW5zKSAhPSBPSykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICBpZiAoIXBhcnNlVmFsdWVUZXJtKHRva2VucywgZGVwdGgsIGluZGV4LCByZXN1
bHQpKQpAQCAtNjYyLDcgKzc5Miw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHBhcnNlQWRkaXRp
dmVWYWx1ZUV4cHJlc3Npb24oQ1NTUGFyc2VyVmFsdWVMaXN0KiB0b2tlbnMsIGludCBkZXB0aCwg
dW5zaWduZWQqIGluZGV4LCBWYWx1ZSogcmVzdWx0KQogICAgIHsKLSAgICAgICAgaWYgKGNoZWNr
RGVwdGhBbmRJbmRleCgmZGVwdGgsICppbmRleCwgdG9rZW5zKSAhPSBPSykKKyAgICAgICAgaWYg
KGNoZWNrRGVwdGhBbmRJbmRleERlcHJlY2F0ZWQoJmRlcHRoLCAqaW5kZXgsIHRva2VucykgIT0g
T0spCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaWYgKCFwYXJzZVZhbHVl
TXVsdGlwbGljYXRpdmVFeHByZXNzaW9uKHRva2VucywgZGVwdGgsIGluZGV4LCByZXN1bHQpKQpA
QCAtNzUwLDE3ICs4ODAsMjUgQEAgc3RhdGljIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+
IGNyZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBDU1ND
YWxjVmFsdWU6OmNyZWF0ZShDU1NQYXJzZXJTdHJpbmcgbmFtZSwgQ1NTUGFyc2VyVmFsdWVMaXN0
JiBwYXJzZXJWYWx1ZUxpc3QsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkK
K1JlZlB0cjxDU1NDYWxjVmFsdWU+IENTU0NhbGNWYWx1ZTo6Y3JlYXRlKENTU1BhcnNlclN0cmlu
ZyBuYW1lLCBDU1NQYXJzZXJWYWx1ZUxpc3QmIHBhcnNlclZhbHVlTGlzdCwgVmFsdWVSYW5nZSBy
YW5nZSkKIHsKLSAgICBDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXIgcGFyc2VyOworICAgIENT
U0NhbGNFeHByZXNzaW9uTm9kZVBhcnNlckRlcHJlY2F0ZWQgcGFyc2VyOwogICAgIFJlZlB0cjxD
U1NDYWxjRXhwcmVzc2lvbk5vZGU+IGV4cHJlc3Npb247CiAKICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImNhbGMoIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobmFtZSwgIi13ZWJraXQtY2FsYygiKSkKICAgICAgICAgZXhwcmVzc2lvbiA9IHBh
cnNlci5wYXJzZUNhbGMoJnBhcnNlclZhbHVlTGlzdCk7CiAKLSAgICByZXR1cm4gZXhwcmVzc2lv
biA/IGFkb3B0UmVmKG5ldyBDU1NDYWxjVmFsdWUoZXhwcmVzc2lvbi5yZWxlYXNlTm9uTnVsbCgp
LCByYW5nZSAhPSBDYWxjdWxhdGlvblJhbmdlQWxsKSkgOiBudWxscHRyOworICAgIHJldHVybiBl
eHByZXNzaW9uID8gYWRvcHRSZWYobmV3IENTU0NhbGNWYWx1ZShleHByZXNzaW9uLnJlbGVhc2VO
b25OdWxsKCksIHJhbmdlICE9IFZhbHVlUmFuZ2VBbGwpKSA6IG51bGxwdHI7CiB9CiAKK1JlZlB0
cjxDU1NDYWxjVmFsdWU+IENTU0NhbGNWYWx1ZTo6Y3JlYXRlKGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmIHRva2VucywgVmFsdWVSYW5nZSByYW5nZSkKK3sKKyAgICBDU1NDYWxjRXhwcmVzc2lv
bk5vZGVQYXJzZXIgcGFyc2VyOworICAgIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGV4
cHJlc3Npb24gPSBwYXJzZXIucGFyc2VDYWxjKHRva2Vucyk7CisgICAgcmV0dXJuIGV4cHJlc3Np
b24gPyBhZG9wdFJlZihuZXcgQ1NTQ2FsY1ZhbHVlKGV4cHJlc3Npb24ucmVsZWFzZU5vbk51bGwo
KSwgcmFuZ2UgIT0gVmFsdWVSYW5nZUFsbCkpIDogbnVsbHB0cjsKKworfQorICAgIAogUmVmUHRy
PENTU0NhbGNWYWx1ZT4gQ1NTQ2FsY1ZhbHVlOjpjcmVhdGUoY29uc3QgQ2FsY3VsYXRpb25WYWx1
ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBSZWZQdHI8Q1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlPiBleHByZXNzaW9uID0gY3JlYXRlQ1NTKHZhbHVlLmV4cHJlc3Npb24o
KSwgc3R5bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5o
CShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ1NTUGFyc2VyVG9rZW5SYW5nZTsKIGNsYXNzIENTU1BhcnNlclZhbHVl
TGlzdDsKIGNsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CiBjbGFzcyBSZW5kZXJTdHls
ZTsKQEAgLTg3LDE4ICs4OCwyMiBAQCBwcml2YXRlOgogCiBjbGFzcyBDU1NDYWxjVmFsdWUgZmlu
YWwgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2Fs
Y1ZhbHVlPiBjcmVhdGUoQ1NTUGFyc2VyU3RyaW5nIG5hbWUsIENTU1BhcnNlclZhbHVlTGlzdCYg
YXJndW1lbnRzLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOworICAgIC8vIEZJWE1F
LU5FV1BBUlNFUjogUmVtb3ZlIHRoZSBDU1NQYXJzZXJTdHJpbmcgY3JlYXRlIHdoZW4gb2xkIHBh
cnNlciBnb2VzIGF3YXkuCisgICAgc3RhdGljIFJlZlB0cjxDU1NDYWxjVmFsdWU+IGNyZWF0ZShD
U1NQYXJzZXJTdHJpbmcgbmFtZSwgQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmd1bWVudHMsIFZhbHVl
UmFuZ2UpOworICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoY29uc3QgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOworICAgIAogICAgIHN0YXRpYyBSZWZQdHI8
Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoY29uc3QgQ2FsY3VsYXRpb25WYWx1ZSYsIGNvbnN0IFJlbmRl
clN0eWxlJik7CiAKICAgICBDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9leHByZXNzaW9uLT5jYXRlZ29yeSgpOyB9CiAgICAgYm9vbCBpc0ludCgpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwcmVzc2lvbi0+aXNJbnRlZ2VyKCk7IH0KICAgICBkb3VibGUgZG91Ymxl
VmFsdWUoKSBjb25zdDsKICAgICBib29sIGlzUG9zaXRpdmUoKSBjb25zdCB7IHJldHVybiBtX2V4
cHJlc3Npb24tPmRvdWJsZVZhbHVlKCkgPiAwOyB9CisgICAgYm9vbCBpc05lZ2F0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9leHByZXNzaW9uLT5kb3VibGVWYWx1ZSgpIDwgMDsgfQogICAgIGRvdWJs
ZSBjb21wdXRlTGVuZ3RoUHgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYpIGNvbnN0
OwogICAgIHVuc2lnbmVkIHNob3J0IHByaW1pdGl2ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2V4
cHJlc3Npb24tPnByaW1pdGl2ZVR5cGUoKTsgfQogCiAgICAgUmVmPENhbGN1bGF0aW9uVmFsdWU+
IGNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYp
IGNvbnN0OwotICAgIHZvaWQgc2V0UGVybWl0dGVkVmFsdWVSYW5nZShDYWxjdWxhdGlvblBlcm1p
dHRlZFZhbHVlUmFuZ2UpOworICAgIHZvaWQgc2V0UGVybWl0dGVkVmFsdWVSYW5nZShWYWx1ZVJh
bmdlKTsKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTQ2FsY1ZhbHVlJikgY29uc3Q7CkBAIC0xMjIsMTIgKzEyNywxMiBAQCBpbmxp
bmUgQ1NTQ2FsY1ZhbHVlOjpDU1NDYWxjVmFsdWUoUmVmPENTCiBpbmxpbmUgUmVmPENhbGN1bGF0
aW9uVmFsdWU+IENTU0NhbGNWYWx1ZTo6Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSkgY29uc3QKIHsKICAgICByZXR1
cm4gQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKG1fZXhwcmVzc2lvbi0+Y3JlYXRlQ2FsY0V4cHJl
c3Npb24oY29udmVyc2lvbkRhdGEpLAotICAgICAgICBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2
ZSA/IENhbGN1bGF0aW9uUmFuZ2VOb25OZWdhdGl2ZSA6IENhbGN1bGF0aW9uUmFuZ2VBbGwpOwor
ICAgICAgICBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZSA/IFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSA6IFZhbHVlUmFuZ2VBbGwpOwogfQogCi1pbmxpbmUgdm9pZCBDU1NDYWxjVmFsdWU6OnNldFBl
cm1pdHRlZFZhbHVlUmFuZ2UoQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQor
aW5saW5lIHZvaWQgQ1NTQ2FsY1ZhbHVlOjpzZXRQZXJtaXR0ZWRWYWx1ZVJhbmdlKFZhbHVlUmFu
Z2UgcmFuZ2UpCiB7Ci0gICAgbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUgPSByYW5nZSAhPSBD
YWxjdWxhdGlvblJhbmdlQWxsOworICAgIG1fc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlID0gcmFu
Z2UgIT0gVmFsdWVSYW5nZUFsbDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCShyZXZpc2lvbiAyMDU5OTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw2ICs3MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTVW5pdFR5
cGVGb3IKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHOgogICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT046CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0VNUzoKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUVVJUktZX0VNUzoK
ICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTOgogICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19GUjoKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRDoK
QEAgLTE2MCw2ICsxNjEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJpbmdUeXBlKENTU1By
aW1pCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQSToKICAgICBjYXNlIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRFBQWDoKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RU1TOgorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19RVUlSS1lfRU1TOgogICAgIGNh
c2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM6CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0ZPTlRfRkFNSUxZOgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19GUjoK
QEAgLTU3Niw2ICs1NzgsNyBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKCkKICAg
ICBjYXNlIENTU19QQVJTRVJfSU5URUdFUjoKICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgogICAg
IGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgogICAgIGNhc2UgQ1NTX0VY
UzoKICAgICBjYXNlIENTU19SRU1TOgogICAgIGNhc2UgQ1NTX0NIUzoKQEAgLTY4NSw2ICs2ODgs
NyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjCiAKICAgICBzd2l0
Y2ggKHByaW1pdGl2ZVR5cGUpIHsKICAgICBjYXNlIENTU19FTVM6CisgICAgY2FzZSBDU1NfUVVJ
UktZX0VNUzoKICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkpOwogICAgICAg
ICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgpID8gY29udmVyc2lv
bkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpIDogY29udmVy
c2lvbkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTA3MSw2ICsxMDc1LDcgQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgQ1NT
UHJpbWl0aXZlVmFsdWU6OgogICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6CiAgICAgICAgIHJldHVy
biBmb3JtYXROdW1iZXJWYWx1ZSgiJSIpOwogICAgIGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENT
U19RVUlSS1lfRU1TOgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoImVtIik7CiAg
ICAgY2FzZSBDU1NfRVhTOgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoImV4Iik7
CkBAIC0xMTc0LDcgKzExNzksNyBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVW
YWx1ZTo6CiAgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOiB7CiAgICAgICAgIFJHQkEzMiBy
Z2JDb2xvciA9IG1fdmFsdWUucmdiY29sb3I7CiAgICAgICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRU
eXBlID09IENTU19QQVJTRVJfSEVYQ09MT1IpCi0gICAgICAgICAgICBDb2xvcjo6cGFyc2VIZXhD
b2xvcihtX3ZhbHVlLnN0cmluZywgcmdiQ29sb3IpOworICAgICAgICAgICAgQ29sb3I6OnBhcnNl
SGV4Q29sb3IoKFN0cmluZyltX3ZhbHVlLnN0cmluZywgcmdiQ29sb3IpOwogICAgICAgICByZXR1
cm4gQ29sb3IocmdiQ29sb3IpLmNzc1RleHQoKTsKICAgICB9CiAgICAgY2FzZSBDU1NfUEFJUjoK
QEAgLTEzMTUsNiArMTMyMCw3IEBAIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZl
VmFsdWUKICAgICBjYXNlIENTU19QQVJTRVJfSU5URUdFUjoKICAgICBjYXNlIENTU19QRVJDRU5U
QUdFOgogICAgIGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgogICAgIGNh
c2UgQ1NTX0VYUzoKICAgICBjYXNlIENTU19SRU1TOgogICAgIGNhc2UgQ1NTX0NIUzoKQEAgLTEz
NzksNiArMTM4NSw3IEBAIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFscyhjb25zdCBDU1MK
ICAgICBjYXNlIENTU19QQVJTRVJfSU5URUdFUjoKICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgog
ICAgIGNhc2UgQ1NTX0VNUzoKKyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgogICAgIGNhc2UgQ1NT
X0VYUzoKICAgICBjYXNlIENTU19SRU1TOgogICAgIGNhc2UgQ1NTX1BYOgpAQCAtMTQ2NCw2ICsx
NDcxLDcgQEAgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6YnVpbGRQYXJzZXJWYWx1ZQogICAgIGNh
c2UgQ1NTX05VTUJFUjoKICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgogICAgIGNhc2UgQ1NTX0VN
UzoKKyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgogICAgIGNhc2UgQ1NTX0VYUzoKICAgICBjYXNl
IENTU19SRU1TOgogICAgIGNhc2UgQ1NTX1BYOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmgJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgQ1NTX1ZBTFVFX0lEID0gMTE4LAogICAgICAgICAKICAgICAgICAgLy8g
TW9yZSBpbnRlcm5hbCBwYXJzZSBzdHVmZiBmb3IgQ1NTIHZhcmlhYmxlcwotICAgICAgICBDU1Nf
UEFSU0VSX1dISVRFU1BBQ0UgPSAxMTkKKyAgICAgICAgQ1NTX1BBUlNFUl9XSElURVNQQUNFID0g
MTE5LAorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyB2YWx1ZSBpcyB1c2VkIHRvIGhhbmRsZSBx
dWlya3kgbWFyZ2lucyBpbiByZWZsb3cgcm9vdHMgKGJvZHksIHRkLCBhbmQgdGgpIGxpa2UgV2lu
SUUuCisgICAgICAgIC8vIFRoZSBiYXNpYyBpZGVhIGlzIHRoYXQgYSBzdHlsZXNoZWV0IGNhbiB1
c2UgdGhlIHZhbHVlIF9fcWVtIChmb3IgcXVpcmt5IGVtKSBpbnN0ZWFkIG9mIGVtLgorICAgICAg
ICAvLyBXaGVuIHRoZSBxdWlya3kgdmFsdWUgaXMgdXNlZCwgaWYgeW91J3JlIGluIHF1aXJrcyBt
b2RlLCB0aGUgbWFyZ2luIHdpbGwgY29sbGFwc2UgYXdheQorICAgICAgICAvLyBpbnNpZGUgYSB0
YWJsZSBjZWxsLiBUaGlzIHF1aXJrIGlzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBzcGVjIGJ1dCBv
dXIgaW1wbCBpcyBkaWZmZXJlbnQuCisgICAgICAgIENTU19RVUlSS1lfRU1TID0gMTIwCiAgICAg
fTsKIAogICAgIC8vIFRoaXMgZW51bSBmb2xsb3dzIHRoZSBDU1NQYXJzZXI6OlVuaXRzIGVudW0g
YXVnbWVudGVkIHdpdGggVU5JVF9GUkVRVUVOQ1kgZm9yIGZyZXF1ZW5jaWVzLgpAQCAtMTg5LDE2
ICsxOTUsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUgPT0g
Q1NTX0VNUwogICAgICAgICAgICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0VYUwogICAg
ICAgICAgICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1JFTVMKLSAgICAgICAgICAgIHx8
IHByaW1pdGl2ZVVuaXRUeXBlID09IENTU19DSFM7CisgICAgICAgICAgICB8fCBwcmltaXRpdmVV
bml0VHlwZSA9PSBDU1NfQ0hTCisgICAgICAgICAgICB8fCBwcmltaXRpdmVVbml0VHlwZSA9PSBD
U1NfUVVJUktZX0VNUzsKICAgICB9CiAgICAgYm9vbCBpc0ZvbnRSZWxhdGl2ZUxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIGlzRm9udFJlbGF0aXZlTGVuZ3RoKG1fcHJpbWl0aXZlVW5pdFR5cGUpOyB9
CisgICAgCisgICAgYm9vbCBpc1F1aXJreUVtcygpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5
cGUoKSA9PSBVbml0VHlwZXM6OkNTU19RVUlSS1lfRU1TOyB9CiAKICAgICBzdGF0aWMgYm9vbCBp
c1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCh1bnNpZ25lZCBzaG9ydCB0eXBlKSB7IHJldHVybiB0
eXBlID49IENTU19WVyAmJiB0eXBlIDw9IENTU19WTUFYOyB9CiAgICAgYm9vbCBpc1ZpZXdwb3J0
UGVyY2VudGFnZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGlzVmlld3BvcnRQZXJjZW50YWdlTGVu
Z3RoKG1fcHJpbWl0aXZlVW5pdFR5cGUpOyB9CiAKICAgICBzdGF0aWMgYm9vbCBpc0xlbmd0aCh1
bnNpZ25lZCBzaG9ydCB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuICh0eXBlID49IENTU19F
TVMgJiYgdHlwZSA8PSBDU1NfUEMpIHx8IHR5cGUgPT0gQ1NTX1JFTVMgfHwgdHlwZSA9PSBDU1Nf
Q0hTIHx8IGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKHR5cGUpOworICAgICAgICByZXR1cm4g
KHR5cGUgPj0gQ1NTX0VNUyAmJiB0eXBlIDw9IENTU19QQykgfHwgdHlwZSA9PSBDU1NfUkVNUyB8
fCB0eXBlID09IENTU19DSFMgfHwgaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgodHlwZSkgfHwg
dHlwZSA9PSBDU1NfUVVJUktZX0VNUzsKICAgICB9CiAKICAgICBib29sIGlzTGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gaXNMZW5ndGgocHJpbWl0aXZlVHlwZSgpKTsgfQpAQCAtMzY5LDcgKzM3OCw4
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKLSAgICBi
b29sIGlzUXVpcmtWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNRdWlya1ZhbHVlOyB9CisgICAg
Ly8gRklYTUUtTkVXUEFSU0VSOiBDYW4gZGl0Y2ggdGhlIGJvb2xlYW4gYW5kIGp1c3QgdXNlIHRo
ZSB1bml0IHR5cGUgb25jZSBvbGQgcGFyc2VyIGlzIGdvbmUuCisgICAgYm9vbCBpc1F1aXJrVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2lzUXVpcmtWYWx1ZSB8fCBwcmltaXRpdmVUeXBlKCkgPT0g
Q1NTX1FVSVJLWV9FTVM7IH0KIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCShyZXZpc2lvbiAy
MDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxOCw3ICszMTgsNyBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29uCiAgICAgYXV0byBsaHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHBy
ZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSk7CiAgICAgYXV0byByaHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpOwogICAgIGF1dG8gb3Ag
PSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uPihXVEZNb3Zl
KGxocyksIFdURk1vdmUocmhzKSwgQ2FsY1N1YnRyYWN0KTsKLSAgICByZXR1cm4gTGVuZ3RoKENh
bGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwgQ2FsY3VsYXRpb25SYW5nZUFsbCkp
OworICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3Ap
LCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIwLDkgKzE2
MjAsOSBAQCBib29sIENTU1BhcnNlcjo6dmFsaWRhdGVDYWxjdWxhdGlvblVuaXQoCiAgICAgaWYg
KHZhbHVlV2l0aENhbGN1bGF0aW9uLmNhbGN1bGF0aW9uKCkpIHsKICAgICAgICAgLy8gVGhlIGNh
bGN1bGF0aW9uIHZhbHVlIHdhcyBhbHJlYWR5IHBhcnNlZCBzbyB3ZSByZXVzZSBpdC4gSG93ZXZl
ciwgd2UgbWF5IG5lZWQgdG8gdXBkYXRlIGl0cyByYW5nZS4KICAgICAgICAgY2FsY3VsYXRpb24g
PSB2YWx1ZVdpdGhDYWxjdWxhdGlvbi5jYWxjdWxhdGlvbigpOwotICAgICAgICBjYWxjdWxhdGlv
bi0+c2V0UGVybWl0dGVkVmFsdWVSYW5nZShtdXN0QmVOb25OZWdhdGl2ZSA/IENhbGN1bGF0aW9u
UmFuZ2VOb25OZWdhdGl2ZSA6IENhbGN1bGF0aW9uUmFuZ2VBbGwpOworICAgICAgICBjYWxjdWxh
dGlvbi0+c2V0UGVybWl0dGVkVmFsdWVSYW5nZShtdXN0QmVOb25OZWdhdGl2ZSA/IFZhbHVlUmFu
Z2VOb25OZWdhdGl2ZSA6IFZhbHVlUmFuZ2VBbGwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHZh
bHVlV2l0aENhbGN1bGF0aW9uLnNldENhbGN1bGF0aW9uKHBhcnNlQ2FsY3VsYXRpb24odmFsdWVX
aXRoQ2FsY3VsYXRpb24sIG11c3RCZU5vbk5lZ2F0aXZlID8gQ2FsY3VsYXRpb25SYW5nZU5vbk5l
Z2F0aXZlIDogQ2FsY3VsYXRpb25SYW5nZUFsbCkpOworICAgICAgICB2YWx1ZVdpdGhDYWxjdWxh
dGlvbi5zZXRDYWxjdWxhdGlvbihwYXJzZUNhbGN1bGF0aW9uKHZhbHVlV2l0aENhbGN1bGF0aW9u
LCBtdXN0QmVOb25OZWdhdGl2ZSA/IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSA6IFZhbHVlUmFuZ2VB
bGwpKTsKICAgICAgICAgY2FsY3VsYXRpb24gPSB2YWx1ZVdpdGhDYWxjdWxhdGlvbi5jYWxjdWxh
dGlvbigpOwogICAgICAgICBpZiAoIWNhbGN1bGF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTEwNDIsNyArMTEwNDIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VXaWxsQ2hh
bmdlKGJvb2wgaW1wCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxDU1NDYWxjVmFsdWU+
IENTU1BhcnNlcjo6cGFyc2VDYWxjdWxhdGlvbihDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIENhbGN1
bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKK1JlZlB0cjxDU1NDYWxjVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VDYWxjdWxhdGlvbihDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIFZhbHVlUmFu
Z2UgcmFuZ2UpCiB7CiAgICAgQVNTRVJUKGlzQ2FsY3VsYXRpb24odmFsdWUpKTsKICAgICAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAkocmV2aXNpb24gMjA1OTkwKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzU5LDcgKzM1OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlSGFuZ2luZ1B1bmN0dWF0
aW9uKGJvb2wgaW1wb3J0YW50KTsKIAogICAgIGJvb2wgcGFyc2VMaW5lQm94Q29udGFpbihib29s
IGltcG9ydGFudCk7Ci0gICAgUmVmUHRyPENTU0NhbGNWYWx1ZT4gcGFyc2VDYWxjdWxhdGlvbihD
U1NQYXJzZXJWYWx1ZSYsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CisgICAgUmVm
UHRyPENTU0NhbGNWYWx1ZT4gcGFyc2VDYWxjdWxhdGlvbihDU1NQYXJzZXJWYWx1ZSYsIFZhbHVl
UmFuZ2UpOwogCiAgICAgYm9vbCBwYXJzZUZvbnRGZWF0dXJlVGFnKENTU1ZhbHVlTGlzdCYpOwog
ICAgIGJvb2wgcGFyc2VGb250RmVhdHVyZVNldHRpbmdzKGJvb2wgaW1wb3J0YW50KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5jcHAJKHJldmlz
aW9uIDIwNjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02MSw0ICs2MiwxMyBAQCBib29sIGlzVmFsdWVBbGxvd2VkSW5Nb2RlKHVuc2lnbmVkIHNo
b3J0CiAgICAgfQogfQogCitVUkwgY29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgaWYgKHVybC5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIFVSTCgpOworICAgIGlmIChjb250ZXh0LmNoYXJzZXQuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gVVJMKGNvbnRleHQuYmFzZVVSTCwgdXJsKTsKKyAgICByZXR1cm4gVVJM
KGNvbnRleHQuYmFzZVVSTCwgdXJsLCBjb250ZXh0LmNoYXJzZXQpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklk
aW9tcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
SWRpb21zLmgJKHJldmlzaW9uIDIwNjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VySWRpb21zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBVUkw7CisgICAgCiAvLyBTcGFjZSBjaGFyYWN0ZXJz
IGFzIGRlZmluZWQgYnkgdGhlIENTUyBzcGVjaWZpY2F0aW9uLgogLy8gaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1zeW50YXgvI3doaXRlc3BhY2UKIGlubGluZSBib29sIGlzQ1NTU3BhY2UoVUNo
YXIgYykKQEAgLTYyLDcgKzY0LDkgQEAgYm9vbCBpc05hbWVDb2RlUG9pbnQoQ2hhcmFjdGVyVHlw
ZSBjKQogdm9pZCBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZUluUGxhY2UoU3RyaW5nVmlldyYpOwog
CiBib29sIGlzVmFsdWVBbGxvd2VkSW5Nb2RlKHVuc2lnbmVkIHNob3J0LCBDU1NQYXJzZXJNb2Rl
KTsKLSAgICAKKworVVJMIGNvbXBsZXRlVVJMKGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBjb25z
dCBTdHJpbmcmIHVybCk7CisKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlck1vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlck1vZGUuaAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYy
LDcgQEAgaW5saW5lIGJvb2wgaXNVQVNoZWV0QmVoYXZpb3IoQ1NTUGFyc2VyTQogICAgIHJldHVy
biBtb2RlID09IFVBU2hlZXRNb2RlOwogfQogCi1pbmxpbmUgYm9vbCBpc1VuaXRMZXNzTGVuZ3Ro
UGFyc2luZ0VuYWJsZWRGb3JNb2RlKENTU1BhcnNlck1vZGUgbW9kZSkKK2lubGluZSBib29sIGlz
VW5pdExlc3NWYWx1ZVBhcnNpbmdFbmFibGVkRm9yTW9kZShDU1NQYXJzZXJNb2RlIG1vZGUpCiB7
CiAgICAgcmV0dXJuIG1vZGUgPT0gSFRNTEF0dHJpYnV0ZU1vZGUgfHwgbW9kZSA9PSBTVkdBdHRy
aWJ1dGVNb2RlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJU
b2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJUb2tlbi5jcHAJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDcgQEAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBjc3NQcmltaXRpdgogICAgICAgICBzd2l0Y2gg
KHRvQVNDSUlMb3dlcihkYXRhWzBdKSkgewogICAgICAgICBjYXNlICdfJzoKICAgICAgICAgICAg
IGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ18nICYmIHRvQVNDSUlMb3dlcihkYXRhWzJd
KSA9PSAncScgJiYgdG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICdlJyAmJiB0b0FTQ0lJTG93ZXIo
ZGF0YVs0XSkgPT0gJ20nKQotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpDU1NfRU1TOyAvLyBGSVhNRS1ORVdQQVJTRVI6IE5lZWQgcXVpcmt5IGVt
cy4KKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX1FVSVJLWV9FTVM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVl
cy5jcHAJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyVmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUMKICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3RyaW5nLCBwcmltaXRpdmVVbml0KTsKICAgICBjYXNlIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRToKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfRU1TOgorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19RVUlSS1lfRU1T
OgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM6CiAgICAgY2FzZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYOgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTToK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VySGVscGVycy5jcHAJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMjAgKzMxLDE3IEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgiCiAK
ICNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCi0vLyBGSVhNRS1ORVdQQVJTRVI6ICNp
bmNsdWRlICJDU1NDb2xvclZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Jvc3NmYWRlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1
ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKLS8vIEZJWE1FLU5FV1BBUlNFUjogI2lu
Y2x1ZGUgIkNTU1BhaW50VmFsdWUuaCIKLS8vIEZJWE1FX05FV1BBUlNFUjogI2luY2x1ZGUgIkNT
U1N0cmluZ1ZhbHVlLmgiCi0vLyBGSVhNRS1ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NVUklWYWx1
ZS5oIgotLy8gRklYTUVfTkVXUEFSU0VSOiAjaW5jbHVkZSAiQ1NTVmFsdWVQYWlyLmgiCisjaW5j
bHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCisjaW5j
bHVkZSAiUGFpci5oIgorI2luY2x1ZGUgIlN0eWxlQ29sb3IuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0vKiBGSVhNRS1ORVdQQVJTRVI6IERpc2FibGUgZm9yIG5vdy4KLSAKIG5hbWVzcGFj
ZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMgewogCiBib29sIGNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC04OCwxOSArODUsMTkg
QEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IENTU0NhbGNWYWx1ZSogdmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2NhbGNWYWx1ZS5nZXQoKTsgfQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBj
b25zdW1lVmFsdWUoKQorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVZhbHVl
KCkKICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFuZ2U7CiAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fY2FsY1ZhbHVlLnJlbGVhc2UoKSk7CiAgICAg
fQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTnVtYmVyKCkKKyAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVOdW1iZXIoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2Nh
bGNWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBtX3NvdXJjZVJh
bmdlID0gbV9yYW5nZTsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlIHVuaXRU
eXBlID0gbV9jYWxjVmFsdWUtPmlzSW50KCkgPyBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6
OkludGVnZXIgOiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcjsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0VHlwZSA9IG1fY2FsY1ZhbHVlLT5pc0lu
dCgpID8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BBUlNFUl9JTlRFR0VSIDog
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX05VTUJFUjsKICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCksIHVu
aXRUeXBlKTsKICAgICB9CiAKQEAgLTExNiwxNiArMTEzLDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgbV9zb3VyY2VSYW5nZTsKICAgICBDU1NQYXJzZXJU
b2tlblJhbmdlIG1fcmFuZ2U7Ci0gICAgTWVtYmVyPENTU0NhbGNWYWx1ZT4gbV9jYWxjVmFsdWU7
CisgICAgUmVmUHRyPENTU0NhbGNWYWx1ZT4gbV9jYWxjVmFsdWU7CiB9OwogCi1DU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGRvdWJs
ZSBtaW5pbXVtVmFsdWUpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJbnRlZ2Vy
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQogewogICAg
IGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9r
ZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CiAgICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFs
dWVUeXBlKCkgPT0gTnVtYmVyVmFsdWVUeXBlIHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgbWlu
aW11bVZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW50ZWdlcik7
CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXM6OkNTU19QQVJTRVJfSU5URUdFUik7CiAgICAgfQogICAgIENhbGNQYXJzZXIgY2Fs
Y1BhcnNlcihyYW5nZSk7CiAgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24g
PSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKQEAgLTEzOSw3ICsxMzYsNyBAQCBDU1NQcmltaXRpdmVW
YWx1ZSogY29uc3VtZUludGVnZXIoQ1NTUGFyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUNT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQorUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRpdmVJbnRl
Z2VyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIHJldHVybiBjb25zdW1lSW50
ZWdlcihyYW5nZSwgMSk7CiB9CkBAIC0xNTUsNyArMTUyLDcgQEAgYm9vbCBjb25zdW1lTnVtYmVy
UmF3KENTU1BhcnNlclRva2VuUmFuZwogfQogCiAvLyBGSVhNRTogV29yayBvdXQgaWYgdGhpcyBj
YW4ganVzdCBjYWxsIGNvbnN1bWVOdW1iZXJSYXcKLUNTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1l
TnVtYmVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2Up
CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVOdW1iZXIoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKIHsKICAgICBjb25zdCBDU1NQYXJz
ZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBO
dW1iZXJUb2tlbikgewpAQCAtMTc0LDM4ICsxNzEsMzcgQEAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVOdW1iZXIoQ1NTUGFycwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1pbmxpbmUgYm9v
bCBzaG91bGRBY2NlcHRVbml0bGVzc0xlbmd0aChkb3VibGUgdmFsdWUsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK2lubGluZSBib29sIHNob3Vs
ZEFjY2VwdFVuaXRsZXNzVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCiB7CiAgICAgLy8gRklYTUU6IFByZXNlbnRh
dGlvbmFsIEhUTUwgYXR0cmlidXRlcyBzaG91bGRuJ3QgdXNlIHRoZSBDU1MgcGFyc2VyIGZvciBs
ZW5ndGhzCiAgICAgcmV0dXJuIHZhbHVlID09IDAKLSAgICAgICAgfHwgaXNVbml0TGVzc0xlbmd0
aFBhcnNpbmdFbmFibGVkRm9yTW9kZShjc3NQYXJzZXJNb2RlKQorICAgICAgICB8fCBpc1VuaXRM
ZXNzVmFsdWVQYXJzaW5nRW5hYmxlZEZvck1vZGUoY3NzUGFyc2VyTW9kZSkKICAgICAgICAgfHwg
KGNzc1BhcnNlck1vZGUgPT0gSFRNTFF1aXJrc01vZGUgJiYgdW5pdGxlc3MgPT0gVW5pdGxlc3NR
dWlyazo6QWxsb3cpOwogfQogCi1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCitSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNvbnN1bWVMZW5ndGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlLCBVbml0bGVz
c1F1aXJrIHVuaXRsZXNzKQogewogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJh
bmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuKSB7CiAg
ICAgICAgIHN3aXRjaCAodG9rZW4udW5pdFR5cGUoKSkgewotICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6UXVpcmt5RW1zOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19RVUlSS1lfRU1TOgogICAgICAgICAgICAgaWYgKGNzc1Bh
cnNlck1vZGUgIT0gVUFTaGVldE1vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6OkVtczoKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OlJlbXM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpDaHM6
Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpFeHM6Ci0gICAgICAg
IGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHM6Ci0gICAgICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpDZW50aW1ldGVyczoKLSAgICAgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok1pbGxpbWV0ZXJzOgotICAgICAgICBjYXNlIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW5jaGVzOgotICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6UG9pbnRzOgotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6UGljYXM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpVc2VyVW5pdHM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpWaWV3cG9ydFdpZHRoOgotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6Vmlld3BvcnRIZWlnaHQ6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpWaWV3cG9ydE1pbjoKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OlZpZXdwb3J0TWF4OgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OkNTU19FTVM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
czo6Q1NTX1JFTVM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX0NIUzoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1Nf
RVhTOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19QWDoK
KyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfQ006CisgICAg
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX01NOgorICAgICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19JTjoKKyAgICAgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFQ6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BDOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19WVzoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpDU1NfVkg6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6Q1NTX1ZNSU46CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlczo6Q1NTX1ZNQVg6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjE1LDEyICsyMTEsMTAgQEAgQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVMZW5ndGgoQ1NTUGFycwogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVy
aWNWYWx1ZSgpLCB0b2tlbi51bml0VHlwZSgpKTsKICAgICB9CiAgICAgaWYgKHRva2VuLnR5cGUo
KSA9PSBOdW1iZXJUb2tlbikgewotICAgICAgICBpZiAoIXNob3VsZEFjY2VwdFVuaXRsZXNzTGVu
Z3RoKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcykKKyAgICAg
ICAgaWYgKCFzaG91bGRBY2NlcHRVbml0bGVzc1ZhbHVlKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBj
c3NQYXJzZXJNb2RlLCB1bml0bGVzcykKICAgICAgICAgICAgIHx8ICh2YWx1ZVJhbmdlID09IFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZSB1bml0VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxzOwotICAgICAg
ICBpZiAoY3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlKQotICAgICAgICAgICAgdW5p
dFR5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlVzZXJVbml0czsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM6OkNTU19QWDsKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwg
dW5pdFR5cGUpOwogICAgIH0KICAgICBpZiAoY3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVN
b2RlKQpAQCAtMjMxLDEzICsyMjUsMTMgQEAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMZW5n
dGgoQ1NTUGFycwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1DU1NQcmltaXRpdmVWYWx1ZSog
Y29uc3VtZVBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFs
dWVSYW5nZSkKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBlcmNlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKIHsKICAgICBjb25z
dCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRva2VuLnR5
cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pIHsKICAgICAgICAgaWYgKHZhbHVlUmFuZ2UgPT0gVmFs
dWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLm51bWVyaWNWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVS
Q0VOVEFHRSk7CiAgICAgfQogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgdmFsdWVS
YW5nZSk7CiAgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFy
c2VyLnZhbHVlKCkpIHsKQEAgLTI0Nyw3ICsyNDEsNyBAQCBDU1NQcmltaXRpdmVWYWx1ZSogY29u
c3VtZVBlcmNlbnQoQ1NTUGFyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wgY2FuQ29u
c3VtZUNhbGNWYWx1ZShDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5LCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUpCitzdGF0aWMgYm9vbCBjYW5Db25zdW1lQ2FsY1ZhbHVlKENhbGN1bGF0
aW9uQ2F0ZWdvcnkgY2F0ZWdvcnksIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAg
ICBpZiAoY2F0ZWdvcnkgPT0gQ2FsY0xlbmd0aCB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudCB8
fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudExlbmd0aCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0yNTUsMTMgKzI0OSwxMyBAQCBib29sIGNhbkNvbnN1bWVDYWxjVmFsdWUoQ2FsY3VsYXRpb25D
YXRlCiAgICAgaWYgKGNzc1BhcnNlck1vZGUgIT0gU1ZHQXR0cmlidXRlTW9kZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGNhdGVnb3J5ID09IENhbGNOdW1iZXIgfHwgY2F0ZWdv
cnkgPT0gQ2FsY1BlcmNlbnROdW1iZXIgfHwgY2F0ZWdvcnkgPT0gQ2FsY0xlbmd0aE51bWJlciB8
fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudExlbmd0aE51bWJlcikKKyAgICBpZiAoY2F0ZWdvcnkg
PT0gQ2FsY051bWJlciB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudE51bWJlcikKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUNTU1ByaW1pdGl2ZVZhbHVl
KiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NR
dWlyayB1bml0bGVzcykKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUxlbmd0aE9y
UGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCiB7
CiAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwogICAgIGlm
ICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4gfHwgdG9rZW4udHlwZSgpID09IE51bWJl
clRva2VuKQpAQCAtMjc2LDI0ICsyNzAsMjUgQEAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVM
ZW5ndGhPclBlcmNlbgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1DU1NQcmltaXRpdmVWYWx1
ZSogY29uc3VtZUFuZ2xlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lQW5nbGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKIHsKICAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRv
a2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikgewogICAgICAgICBzd2l0Y2ggKHRva2VuLnVu
aXRUeXBlKCkpIHsKLSAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkRl
Z3JlZXM6Ci0gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpSYWRpYW5z
OgotICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6R3JhZGlhbnM6Ci0g
ICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpUdXJuczoKKyAgICAgICAg
Y2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfREVHOgorICAgICAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19SQUQ6CisgICAgICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0dSQUQ6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1RVUk46CiAgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgp
Lm51bWVyaWNWYWx1ZSgpLCB0b2tlbi51bml0VHlwZSgpKTsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gTnVtYmVyVG9rZW4gJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPT0gMCkgewor
ICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4gJiYgc2hvdWxkQWNjZXB0VW5pdGxl
c3NWYWx1ZSh0b2tlbi5udW1lcmljVmFsdWUoKSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpKSB7
CiAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7Ci0gICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6RGVncmVlcyk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19ERUcpOwogICAgIH0KKwogICAg
IENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgaWYgKGNv
bnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKICAg
ICAgICAgaWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgpID09IENhbGNBbmdsZSkKQEAgLTMwMiwx
NCArMjk3LDE3IEBAIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQW5nbGUoQ1NTUGFyc2UKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVUaW1lKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCitSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVUaW1lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5p
dGxlc3NRdWlyayB1bml0bGVzcykKIHsKICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4g
PSByYW5nZS5wZWVrKCk7Ci0gICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikg
eworICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdCA9IHRva2VuLnVuaXRUeXBl
KCk7CisgICAgYm9vbCBhY2NlcHRVbml0bGVzcyA9IHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tl
biAmJiBzaG91bGRBY2NlcHRVbml0bGVzc1ZhbHVlKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBjc3NQ
YXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgaWYgKGFjY2VwdFVuaXRsZXNzKQorICAgICAgICB1
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX01TOworICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4gfHwgYWNjZXB0VW5pdGxlc3MpIHsKICAgICAgICAg
aWYgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNW
YWx1ZSgpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGUgdW5pdCA9IHRva2VuLnVuaXRUeXBlKCk7Ci0gICAgICAgIGlm
ICh1bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TWlsbGlzZWNvbmRzIHx8IHVu
aXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpTZWNvbmRzKQorICAgICAgICBpZiAo
dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTVMgfHwgdW5pdCA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUykKICAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CkBAIC0zMjEsMzIgKzMxOSwzMiBAQCBDU1NQcmltaXRpdmVWYWx1ZSogY29u
c3VtZVRpbWUoQ1NTUGFyc2VyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUNTU1ByaW1pdGl2
ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlk
ZW50aWZpZXIocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpKTsKIH0KIAot
Q1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJZGVudFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NWYWx1ZUlEIGxvd2VyLCBDU1NWYWx1ZUlEIHVwcGVyKQorUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnRSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcikKIHsKICAgICBpZiAocmFuZ2Uu
cGVlaygpLmlkKCkgPCBsb3dlciB8fCByYW5nZS5wZWVrKCkuaWQoKSA+IHVwcGVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKIH0KIAot
Q1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3RvbUlkZW50KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQorUmVmUHRyPENTU0N1c3RvbUlkZW50VmFsdWU+IGNvbnN1bWVDdXN0b21JZGVu
dChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5
cGUoKSAhPSBJZGVudFRva2VuIHx8IGlzQ1NTV2lkZUtleXdvcmQocmFuZ2UucGVlaygpLmlkKCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gQ1NTQ3VzdG9tSWRlbnRWYWx1
ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0
cmluZygpKTsKIH0KIAotQ1NTU3RyaW5nVmFsdWUqIGNvbnN1bWVTdHJpbmcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVTdHJpbmco
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBl
KCkgIT0gU3RyaW5nVG9rZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBD
U1NTdHJpbmdWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
dmFsdWUoKS50b1N0cmluZygpKTsKKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1NUUklORyk7CiB9CiAKIFN0cmluZ1Zp
ZXcgY29uc3VtZVVybEFzU3RyaW5nVmlldyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAg
LTM3MSwxMiArMzY5LDEyIEBAIFN0cmluZ1ZpZXcgY29uc3VtZVVybEFzU3RyaW5nVmlldyhDU1NQ
YXIKICAgICByZXR1cm4gU3RyaW5nVmlldygpOwogfQogCi1DU1NVUklWYWx1ZSogY29uc3VtZVVy
bChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y29uc3VtZVVybChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBTdHJpbmdWaWV3
IHVybCA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcocmFuZ2UpOwogICAgIGlmICh1cmwuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBDU1NVUklWYWx1ZTo6Y3Jl
YXRlKHVybC50b1N0cmluZygpKTsKKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh1cmwudG9TdHJpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1VSSSk7
CiB9CiAKIHN0YXRpYyBpbnQgY2xhbXBSR0JDb21wb25lbnQoY29uc3QgQ1NTUHJpbWl0aXZlVmFs
dWUmIHZhbHVlKQpAQCAtMzkyLDcgKzM5MCw3IEBAIHN0YXRpYyBib29sIHBhcnNlUkdCUGFyYW1l
dGVycyhDU1NQYXJzZXIKIHsKICAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9
PSBDU1NWYWx1ZVJnYiB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmdi
YSk7CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdl
KTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29sb3JQYXJhbWV0ZXIgPSBjb25zdW1lSW50ZWdl
cihhcmdzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbG9yUGFyYW1ldGVyID0g
Y29uc3VtZUludGVnZXIoYXJncyk7CiAgICAgaWYgKCFjb2xvclBhcmFtZXRlcikKICAgICAgICAg
Y29sb3JQYXJhbWV0ZXIgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKICAg
ICBpZiAoIWNvbG9yUGFyYW1ldGVyKQpAQCAtNDI4LDcgKzQyNiw3IEBAIHN0YXRpYyBib29sIHBh
cnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXIKIHsKICAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1
bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUhzbCB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09
IENTU1ZhbHVlSHNsYSk7CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1
bmN0aW9uKHJhbmdlKTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogaHNsVmFsdWUgPSBjb25zdW1l
TnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gaHNsVmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOwogICAgIGlm
ICghaHNsVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkb3VibGUgY29sb3JBcnJh
eVszXTsKQEAgLTUwMCw3ICs0OTgsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUNvbG9yRnVuY3Rpb24o
Q1NTUGFyc2VyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNTU1ZhbHVlKiBjb25zdW1lQ29sb3Io
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
Ym9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1
bWVDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlLCBib29sIGFjY2VwdFF1aXJreUNvbG9ycykKIHsKICAgICBDU1NWYWx1ZUlEIGlkID0g
cmFuZ2UucGVlaygpLmlkKCk7CiAgICAgaWYgKFN0eWxlQ29sb3I6OmlzQ29sb3JLZXl3b3JkKGlk
KSkgewpAQCAtNTExLDEwICs1MDksMTAgQEAgQ1NTVmFsdWUqIGNvbnN1bWVDb2xvcihDU1NQYXJz
ZXJUb2tlblJhbgogICAgIFJHQkEzMiBjb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKICAgICBp
ZiAoIXBhcnNlSGV4Q29sb3IocmFuZ2UsIGNvbG9yLCBhY2NlcHRRdWlya3lDb2xvcnMpICYmICFw
YXJzZUNvbG9yRnVuY3Rpb24ocmFuZ2UsIGNvbG9yKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIENTU0NvbG9yVmFsdWU6OmNyZWF0ZShjb2xvcik7CisgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihjb2xvcik7CiB9CiAKLXN0YXRpYyBDU1NQcmlt
aXRpdmVWYWx1ZSogY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxl
c3MpCitzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRpb25Db21w
b25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5
cGUoKSA9PSBJZGVudFRva2VuKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVl
TGVmdCwgQ1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tLCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1
ZUNlbnRlcj4ocmFuZ2UpOwpAQCAtNTMxLDMxICs1MjksMzggQEAgc3RhdGljIGJvb2wgaXNWZXJ0
aWNhbFBvc2l0aW9uS2V5d29yZE9ubAogICAgIHJldHVybiB2YWx1ZS5pc1ZhbHVlSUQoKSAmJiAo
dmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlVG9wIHx8IHZhbHVlLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUJvdHRvbSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBvc2l0aW9uRnJvbU9uZVZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSom
IHJlc3VsdFkpCitzdGF0aWMgdm9pZCBwb3NpdGlvbkZyb21PbmVWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZSYgdmFsdWUsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFgsIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFkpCiB7Ci0gICAgYm9vbCB2YWx1ZUFwcGxpZXNUb1lB
eGlzT25seSA9IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZSk7Ci0gICAgcmVz
dWx0WCA9IHZhbHVlOworICAgIGJvb2wgdmFsdWVBcHBsaWVzVG9ZQXhpc09ubHkgPSBpc1ZlcnRp
Y2FsUG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZSk7CisgICAgcmVzdWx0WCA9ICZ2YWx1ZTsKICAg
ICByZXN1bHRZID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVD
ZW50ZXIpOwogICAgIGlmICh2YWx1ZUFwcGxpZXNUb1lBeGlzT25seSkKICAgICAgICAgc3RkOjpz
d2FwKHJlc3VsdFgsIHJlc3VsdFkpOwogfQogCi1zdGF0aWMgYm9vbCBwb3NpdGlvbkZyb21Ud29W
YWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVl
MiwKLSAgICBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3N0YXRpYyBi
b29sIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyhDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUxLCBDU1NQ
cmltaXRpdmVWYWx1ZSYgdmFsdWUyLAorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJl
c3VsdFgsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFkpCiB7Ci0gICAgYm9vbCBt
dXN0T3JkZXJBc1hZID0gaXNIb3Jpem9udGFsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUxKSB8
fCBpc1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUyKQotICAgICAgICB8fCAhdmFs
dWUxLT5pc1ZhbHVlSUQoKSB8fCAhdmFsdWUyLT5pc1ZhbHVlSUQoKTsKLSAgICBib29sIG11c3RP
cmRlckFzWVggPSBpc1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUxKSB8fCBpc0hv
cml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTIpOworICAgIGJvb2wgbXVzdE9yZGVy
QXNYWSA9IGlzSG9yaXpvbnRhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUxKSB8fCBpc1ZlcnRp
Y2FsUG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZTIpCisgICAgICAgIHx8ICF2YWx1ZTEuaXNWYWx1
ZUlEKCkgfHwgIXZhbHVlMi5pc1ZhbHVlSUQoKTsKKyAgICBib29sIG11c3RPcmRlckFzWVggPSBp
c1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZTEpIHx8IGlzSG9yaXpvbnRhbFBvc2l0
aW9uS2V5d29yZE9ubHkodmFsdWUyKTsKICAgICBpZiAobXVzdE9yZGVyQXNYWSAmJiBtdXN0T3Jk
ZXJBc1lYKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0WCA9IHZhbHVlMTsKLSAg
ICByZXN1bHRZID0gdmFsdWUyOworICAgIHJlc3VsdFggPSAmdmFsdWUxOworICAgIHJlc3VsdFkg
PSAmdmFsdWUyOwogICAgIGlmIChtdXN0T3JkZXJBc1lYKQogICAgICAgICBzdGQ6OnN3YXAocmVz
dWx0WCwgcmVzdWx0WSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHBvc2l0
aW9uRnJvbVRocmVlT3JGb3VyVmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVlKiogdmFsdWVzLCBDU1NW
YWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKKyAgICAKK3RlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3M+CitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRp
dmVWYWx1ZVBhaXIoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLikpOworfQorCitzdGF0aWMgYm9vbCBwb3NpdGlvbkZyb21UaHJlZU9yRm91clZhbHVl
cyhDU1NQcmltaXRpdmVWYWx1ZSoqIHZhbHVlcywgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYg
cmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkKIHsKICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogY2VudGVyID0gbnVsbHB0cjsKICAgICBmb3IgKGludCBpID0gMDsgdmFs
dWVzW2ldOyBpKyspIHsKQEAgLTU3MSwxMiArNTc2LDExIEBAIHN0YXRpYyBib29sIHBvc2l0aW9u
RnJvbVRocmVlT3JGb3VyVmFsdWUKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
LSAgICAgICAgQ1NTVmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7Ci0gICAgICAgIGlmICh2YWx1ZXNb
aSArIDFdICYmICF2YWx1ZXNbaSArIDFdLT5pc1ZhbHVlSUQoKSkgewotICAgICAgICAgICAgcmVz
dWx0ID0gQ1NTVmFsdWVQYWlyOjpjcmVhdGUoY3VycmVudFZhbHVlLCB2YWx1ZXNbKytpXSwgQ1NT
VmFsdWVQYWlyOjpLZWVwSWRlbnRpY2FsVmFsdWVzKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQ7CisgICAgICAgIGlmICh2YWx1ZXNb
aSArIDFdICYmICF2YWx1ZXNbaSArIDFdLT5pc1ZhbHVlSUQoKSkKKyAgICAgICAgICAgIHJlc3Vs
dCA9IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihjdXJyZW50VmFsdWUsIHZhbHVlc1srK2ldKTsK
KyAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVudFZhbHVlOwotICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJp
Z2h0KSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0WCkKQEAgLTYwNiw3NCArNjEwLDc0IEBAIHN0
YXRpYyBib29sIHBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFsdWUKIAogLy8gRklYTUU6IFRoaXMg
bWF5IGNvbnN1bWUgZnJvbSB0aGUgcmFuZ2UgdXBvbiBmYWlsdXJlLiBUaGUgYmFja2dyb3VuZAog
Ly8gc2hvcnRoYW5kIHdvcmtzIGFyb3VuZCBpdCwgYnV0IHdlIHNob3VsZCBqdXN0IGZpeCBpdCBo
ZXJlLgotYm9vbCBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgQ1NTVmFs
dWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpCitib29sIGNvbnN1bWVQb3NpdGlvbihD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBV
bml0bGVzc1F1aXJrIHVuaXRsZXNzLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiByZXN1bHRY
LCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiByZXN1bHRZKQogewotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIHVuaXRsZXNzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlMSA9
IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3Mp
OwogICAgIGlmICghdmFsdWUxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogdmFsdWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZTIgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRs
ZXNzKTsKICAgICBpZiAoIXZhbHVlMikgewotICAgICAgICBwb3NpdGlvbkZyb21PbmVWYWx1ZSh2
YWx1ZTEsIHJlc3VsdFgsIHJlc3VsdFkpOworICAgICAgICBwb3NpdGlvbkZyb21PbmVWYWx1ZSgq
dmFsdWUxLCByZXN1bHRYLCByZXN1bHRZKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMyA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVu
dChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gdmFsdWUzID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgaWYgKCF2YWx1ZTMpCi0gICAgICAgIHJldHVybiBwb3Np
dGlvbkZyb21Ud29WYWx1ZXModmFsdWUxLCB2YWx1ZTIsIHJlc3VsdFgsIHJlc3VsdFkpOworICAg
ICAgICByZXR1cm4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKCp2YWx1ZTEsICp2YWx1ZTIsIHJlc3Vs
dFgsIHJlc3VsdFkpOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlNCA9IGNvbnN1bWVQ
b3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWU0ID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50
KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHZhbHVlc1s1XTsKLSAgICB2YWx1ZXNbMF0gPSB2YWx1ZTE7Ci0gICAgdmFsdWVzWzFdID0gdmFs
dWUyOwotICAgIHZhbHVlc1syXSA9IHZhbHVlMzsKLSAgICB2YWx1ZXNbM10gPSB2YWx1ZTQ7Cisg
ICAgdmFsdWVzWzBdID0gdmFsdWUxLmdldCgpOworICAgIHZhbHVlc1sxXSA9IHZhbHVlMi5nZXQo
KTsKKyAgICB2YWx1ZXNbMl0gPSB2YWx1ZTMuZ2V0KCk7CisgICAgdmFsdWVzWzNdID0gdmFsdWU0
LmdldCgpOwogICAgIHZhbHVlc1s0XSA9IG51bGxwdHI7CiAgICAgcmV0dXJuIHBvc2l0aW9uRnJv
bVRocmVlT3JGb3VyVmFsdWVzKHZhbHVlcywgcmVzdWx0WCwgcmVzdWx0WSk7CiB9CiAKLUNTU1Zh
bHVlUGFpciogY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCitSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNz
KQogewotICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKLSAgICBDU1NWYWx1ZSogcmVz
dWx0WSA9IG51bGxwdHI7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHRYOwor
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0WTsKICAgICBpZiAoY29uc3VtZVBv
c2l0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcywgcmVzdWx0WCwgcmVzdWx0WSkp
Ci0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShyZXN1bHRYLCByZXN1bHRZLCBD
U1NWYWx1ZVBhaXI6OktlZXBJZGVudGljYWxWYWx1ZXMpOworICAgICAgICByZXR1cm4gY3JlYXRl
UHJpbWl0aXZlVmFsdWVQYWlyKHJlc3VsdFgucmVsZWFzZU5vbk51bGwoKSwgcmVzdWx0WS5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBjb25zdW1lT25l
T3JUd29WYWx1ZWRQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBDU1NWYWx1ZSomIHJl
c3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK2Jvb2wgY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9z
aXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYg
cmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkKIHsKLSAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogdmFsdWUxID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBj
c3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2
YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVu
aXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTIgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2Us
IGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZhbHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
dW5pdGxlc3MpOwogICAgIGlmICghdmFsdWUyKSB7Ci0gICAgICAgIHBvc2l0aW9uRnJvbU9uZVZh
bHVlKHZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7CisgICAgICAgIHBvc2l0aW9uRnJvbU9uZVZh
bHVlKCp2YWx1ZTEsIHJlc3VsdFgsIHJlc3VsdFkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9Ci0gICAgcmV0dXJuIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyh2YWx1ZTEsIHZhbHVlMiwgcmVz
dWx0WCwgcmVzdWx0WSk7CisgICAgcmV0dXJuIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcygqdmFsdWUx
LCAqdmFsdWUyLCByZXN1bHRYLCByZXN1bHRZKTsKIH0KIAogLy8gVGhpcyBzaG91bGQgZ28gYXdh
eSBvbmNlIHdlIGRyb3Agc3VwcG9ydCBmb3IgLXdlYmtpdC1ncmFkaWVudAotc3RhdGljIENTU1By
aW1pdGl2ZVZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgYXJncywgYm9vbCBob3Jpem9udGFsKQorc3RhdGljIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KENTU1BhcnNlclRva2VuUmFu
Z2UmIGFyZ3MsIGJvb2wgaG9yaXpvbnRhbCkKIHsKICAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgp
ID09IElkZW50VG9rZW4pIHsKICAgICAgICAgaWYgKChob3Jpem9udGFsICYmIGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUxlZnQ+KGFyZ3MpKSB8fCAoIWhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENT
U1ZhbHVlVG9wPihhcmdzKSkpCi0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZSgwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJjZW50YWdlKTsKKyAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuLCBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIGlmICgoaG9yaXpv
bnRhbCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSaWdodD4oYXJncykpIHx8ICghaG9yaXpvbnRh
bCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVCb3R0b20+KGFyZ3MpKSkKLSAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEwMC4sIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSgxMDAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVSQ0VO
VEFHRSk7CiAgICAgICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDZW50ZXI+KGFyZ3MpKQot
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoNTAuLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoNTAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcmVzdWx0ID0gY29uc3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5n
ZUFsbCk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQgPSBjb25zdW1lUGVy
Y2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmVz
dWx0ID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCiAvLyBVc2VkIHRvIHBhcnNlIGNvbG9ycyBmb3IgLXdlYmtpdC1ncmFkaWVudCgu
Li4pLgotc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50U3RvcENvbG9y
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkK
K3N0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkR3JhZGll
bnRTdG9wQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQogewogICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQ3VycmVu
dGNvbG9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY5MSw3ICs2OTUsNyBAQCBzdGF0
aWMgYm9vbCBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50Q29sCiAgICAgaWYgKGlkID09IENTU1Zh
bHVlRnJvbSB8fCBpZCA9PSBDU1NWYWx1ZVRvKSB7CiAgICAgICAgIHBvc2l0aW9uID0gKGlkID09
IENTU1ZhbHVlRnJvbSkgPyAwIDogMTsKICAgICB9IGVsc2UgewotICAgICAgICBEQ0hFQ0soaWQg
PT0gQ1NTVmFsdWVDb2xvclN0b3ApOworICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVDb2xv
clN0b3ApOwogICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgYXJnID0gYXJncy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoYXJnLnR5cGUoKSA9PSBQZXJjZW50
YWdlVG9rZW4pCiAgICAgICAgICAgICBwb3NpdGlvbiA9IGFyZy5udW1lcmljVmFsdWUoKSAvIDEw
MC4wOwpAQCAtNzA0LDE0ICs3MDgsMTQgQEAgc3RhdGljIGJvb2wgY29uc3VtZURlcHJlY2F0ZWRH
cmFkaWVudENvbAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHN0b3Au
bV9wb3NpdGlvbiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocG9zaXRpb24sIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICBzdG9wLm1fcG9zaXRpb24gPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHBvc2l0aW9uLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGVzOjpDU1NfTlVNQkVSKTsKICAgICBzdG9wLm1fY29sb3IgPSBjb25zdW1lRGVwcmVjYXRlZEdy
YWRpZW50U3RvcENvbG9yKGFyZ3MsIGNzc1BhcnNlck1vZGUpOwogICAgIHJldHVybiBzdG9wLm1f
Y29sb3IgJiYgYXJncy5hdEVuZCgpOwogfQogCi1zdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVEZXBy
ZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRH
cmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpCiB7Ci0gICAgQ1NTR3JhZGllbnRWYWx1ZSogcmVzdWx0ID0gbnVsbHB0cjsKKyAgICBS
ZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gcmVzdWx0OwogICAgIENTU1ZhbHVlSUQgaWQgPSBhcmdz
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKICAgICBib29sIGlzRGVwcmVjYXRl
ZFJhZGlhbEdyYWRpZW50ID0gKGlkID09IENTU1ZhbHVlUmFkaWFsKTsKICAgICBpZiAoaXNEZXBy
ZWNhdGVkUmFkaWFsR3JhZGllbnQpCkBAIC03MjEsNDMgKzcyNSw0MyBAQCBzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllCiAgICAgaWYgKCFyZXN1bHQgfHwgIWNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVu
dFBvaW50KGFyZ3MsIHRydWUpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcG9pbnQg
PSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoYXJncywgdHJ1ZSk7CiAgICAgaWYgKCFw
b2ludCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmVzdWx0LT5zZXRGaXJzdFgocG9p
bnQpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RYKFdURk1vdmUocG9pbnQpKTsKICAgICBwb2ludCA9
IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChhcmdzLCBmYWxzZSk7CiAgICAgaWYgKCFw
b2ludCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmVzdWx0LT5zZXRGaXJzdFkocG9p
bnQpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RZKFdURk1vdmUocG9pbnQpKTsKIAogICAgIGlmICgh
Y29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAvLyBGb3IgcmFkaWFsIGdyYWRpZW50cyBvbmx5LCB3ZSBub3cgZXhwZWN0
IGEgbnVtZXJpYyByYWRpdXMuCiAgICAgaWYgKGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KSB7
Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMgPSBjb25zdW1lTnVtYmVyKGFyZ3Ms
IFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1
cyA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgIGlmICghcmFk
aXVzIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHRvQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXN1
bHQpLT5zZXRGaXJzdFJhZGl1cyhyYWRpdXMpOworICAgICAgICBkb3duY2FzdDxDU1NSYWRpYWxH
cmFkaWVudFZhbHVlPihyZXN1bHQuZ2V0KCkpLT5zZXRGaXJzdFJhZGl1cyhXVEZNb3ZlKHJhZGl1
cykpOwogICAgIH0KIAogICAgIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50
KGFyZ3MsIHRydWUpOwogICAgIGlmICghcG9pbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJlc3VsdC0+c2V0U2Vjb25kWChwb2ludCk7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRYKFdU
Rk1vdmUocG9pbnQpKTsKICAgICBwb2ludCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2lu
dChhcmdzLCBmYWxzZSk7CiAgICAgaWYgKCFwb2ludCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRZKHBvaW50KTsKKyAgICByZXN1bHQtPnNldFNlY29uZFko
V1RGTW92ZShwb2ludCkpOwogCiAgICAgLy8gRm9yIHJhZGlhbCBncmFkaWVudHMgb25seSwgd2Ug
bm93IGV4cGVjdCB0aGUgc2Vjb25kIHJhZGl1cy4KICAgICBpZiAoaXNEZXByZWNhdGVkUmFkaWFs
R3JhZGllbnQpIHsKICAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiByYWRpdXMgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAg
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cyA9IGNvbnN1bWVOdW1iZXIoYXJn
cywgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgIGlmICghcmFkaXVzKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIHRvQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXN1bHQpLT5z
ZXRTZWNvbmRSYWRpdXMocmFkaXVzKTsKKyAgICAgICAgZG93bmNhc3Q8Q1NTUmFkaWFsR3JhZGll
bnRWYWx1ZT4ocmVzdWx0LmdldCgpKS0+c2V0U2Vjb25kUmFkaXVzKFdURk1vdmUocmFkaXVzKSk7
CiAgICAgfQogCiAgICAgQ1NTR3JhZGllbnRDb2xvclN0b3Agc3RvcDsKQEAgLTc5Nyw1NiArODAx
LDU2IEBAIHN0YXRpYyBib29sIGNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoQ1MKICAgICByZXR1
cm4gZ3JhZGllbnQtPnN0b3BDb3VudCgpID49IDI7CiB9CiAKLXN0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykK
K3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBD
U1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcpCiB7Ci0gICAgQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZSogcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NT
UHJlZml4ZWRSYWRpYWxHcmFkaWVudCk7Ci0gICAgQ1NTVmFsdWUqIGNlbnRlclggPSBudWxscHRy
OwotICAgIENTU1ZhbHVlKiBjZW50ZXJZID0gbnVsbHB0cjsKKyAgICBSZWZQdHI8Q1NTUmFkaWFs
R3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJl
cGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCk7CisgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBjZW50ZXJYOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVy
WTsKICAgICBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihhcmdzLCBjc3NQYXJzZXJNb2Rl
LCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIGNlbnRlclgsIGNlbnRlclkpOwogICAgIGlmICgoY2Vu
dGVyWCB8fCBjZW50ZXJZKSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQtPnNldEZpcnN0WCh0b0NT
U1ByaW1pdGl2ZVZhbHVlKGNlbnRlclgpKTsKLSAgICByZXN1bHQtPnNldFNlY29uZFgodG9DU1NQ
cmltaXRpdmVWYWx1ZShjZW50ZXJYKSk7Ci0gICAgcmVzdWx0LT5zZXRGaXJzdFkodG9DU1NQcmlt
aXRpdmVWYWx1ZShjZW50ZXJZKSk7Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRZKHRvQ1NTUHJpbWl0
aXZlVmFsdWUoY2VudGVyWSkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RYKFdURk1vdmUoY2VudGVy
WCkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RZKFdURk1vdmUoY2VudGVyWSkpOworICAgIHJlc3Vs
dC0+c2V0U2Vjb25kWChXVEZNb3ZlKGNlbnRlclgpKTsKKyAgICByZXN1bHQtPnNldFNlY29uZFko
V1RGTW92ZShjZW50ZXJZKSk7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2hhcGUgPSBjb25z
dW1lSWRlbnQ8Q1NTVmFsdWVDaXJjbGUsIENTU1ZhbHVlRWxsaXBzZT4oYXJncyk7Ci0gICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHNpemVLZXl3b3JkID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ2xvc2Vz
dFNpZGUsIENTU1ZhbHVlQ2xvc2VzdENvcm5lciwgQ1NTVmFsdWVGYXJ0aGVzdFNpZGUsIENTU1Zh
bHVlRmFydGhlc3RDb3JuZXIsIENTU1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4oYXJncyk7
CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzaGFwZSA9IGNvbnN1bWVJZGVudDxDU1NW
YWx1ZUNpcmNsZSwgQ1NTVmFsdWVFbGxpcHNlPihhcmdzKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHNpemVLZXl3b3JkID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ2xvc2VzdFNpZGUs
IENTU1ZhbHVlQ2xvc2VzdENvcm5lciwgQ1NTVmFsdWVGYXJ0aGVzdFNpZGUsIENTU1ZhbHVlRmFy
dGhlc3RDb3JuZXIsIENTU1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4oYXJncyk7CiAgICAg
aWYgKCFzaGFwZSkKICAgICAgICAgc2hhcGUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDaXJjbGUs
IENTU1ZhbHVlRWxsaXBzZT4oYXJncyk7Ci0gICAgcmVzdWx0LT5zZXRTaGFwZShzaGFwZSk7Ci0g
ICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihzaXplS2V5d29yZCk7CisgICAgcmVzdWx0LT5z
ZXRTaGFwZShXVEZNb3ZlKHNoYXBlKSk7CisgICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihX
VEZNb3ZlKHNpemVLZXl3b3JkKSk7CiAKICAgICAvLyBPciwgdHdvIGxlbmd0aHMgb3IgcGVyY2Vu
dGFnZXMKICAgICBpZiAoIXNoYXBlICYmICFzaXplS2V5d29yZCkgewotICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogaG9yaXpvbnRhbFNpemUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3Ms
IGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogdmVydGljYWxTaXplID0gbnVsbHB0cjsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBob3Jpem9udGFsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gdmVydGljYWxTaXplOwogICAgICAgICBpZiAoaG9yaXpvbnRhbFNpemUpIHsKICAgICAgICAg
ICAgIHZlcnRpY2FsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2Vy
TW9kZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgICAgICBpZiAoIXZlcnRpY2FsU2l6ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UoYXJncyk7Ci0gICAgICAgICAgICByZXN1bHQtPnNldEVuZEhvcml6
b250YWxTaXplKGhvcml6b250YWxTaXplKTsKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0RW5kVmVy
dGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7CisgICAgICAgICAgICByZXN1bHQtPnNldEVuZEhvcml6
b250YWxTaXplKFdURk1vdmUoaG9yaXpvbnRhbFNpemUpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+
c2V0RW5kVmVydGljYWxTaXplKFdURk1vdmUodmVydGljYWxTaXplKSk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3Mp
OwogICAgIH0KLSAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFy
c2VyTW9kZSwgcmVzdWx0KSkKKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJn
cywgY3NzUGFyc2VyTW9kZSwgcmVzdWx0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVSYWRp
YWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKK3N0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykK
IHsKLSAgICBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVu
dFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBDU1NSYWRpYWxHcmFkaWVudCk7CisgICAgUmVmUHRy
PENTU1JhZGlhbEdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6
OmNyZWF0ZShyZXBlYXRpbmcsIENTU1JhZGlhbEdyYWRpZW50KTsKIAotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBzaGFwZSA9IG51bGxwdHI7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNpemVLZXl3
b3JkID0gbnVsbHB0cjsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFNpemUgPSBu
dWxscHRyOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFNpemUgPSBudWxscHRyOwor
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2hhcGU7CisgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBzaXplS2V5d29yZDsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGhv
cml6b250YWxTaXplOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmVydGljYWxTaXpl
OwogCiAgICAgLy8gRmlyc3QgcGFydCBvZiBncmFtbWFyLCB0aGUgc2l6ZS9zaGFwZSBjbGF1c2U6
CiAgICAgLy8gWyBjaXJjbGUgfHwgPGxlbmd0aD4gXSB8CkBAIC04NjcsNyArODcxLDcgQEAgc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgICAgICBpZiAoIWNlbnRlcikKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChob3Jpem9udGFsU2l6ZSkKQEAgLTg5Nyw0MyAr
OTAxLDQ1IEBAIHN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVJhZGlhbEdyYWRpZW50KEMKICAgICAg
ICAgfHwgKHZlcnRpY2FsU2l6ZSAmJiB2ZXJ0aWNhbFNpemUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRh
Z2VXaXRoTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC0+
c2V0U2hhcGUoc2hhcGUpOwotICAgIHJlc3VsdC0+c2V0U2l6aW5nQmVoYXZpb3Ioc2l6ZUtleXdv
cmQpOwotICAgIHJlc3VsdC0+c2V0RW5kSG9yaXpvbnRhbFNpemUoaG9yaXpvbnRhbFNpemUpOwot
ICAgIHJlc3VsdC0+c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7CisgICAgcmVzdWx0
LT5zZXRTaGFwZShXVEZNb3ZlKHNoYXBlKSk7CisgICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlv
cihXVEZNb3ZlKHNpemVLZXl3b3JkKSk7CisgICAgcmVzdWx0LT5zZXRFbmRIb3Jpem9udGFsU2l6
ZShXVEZNb3ZlKGhvcml6b250YWxTaXplKSk7CisgICAgcmVzdWx0LT5zZXRFbmRWZXJ0aWNhbFNp
emUoV1RGTW92ZSh2ZXJ0aWNhbFNpemUpKTsKIAotICAgIENTU1ZhbHVlKiBjZW50ZXJYID0gbnVs
bHB0cjsKLSAgICBDU1NWYWx1ZSogY2VudGVyWSA9IG51bGxwdHI7CisgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjZW50ZXJYOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2Vu
dGVyWTsKICAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF0KSB7CiAgICAgICAg
IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgY29uc3VtZVBvc2l0
aW9uKGFyZ3MsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgY2VudGVyWCwg
Y2VudGVyWSk7CiAgICAgICAgIGlmICghKGNlbnRlclggJiYgY2VudGVyWSkpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoY2VudGVyWCk7Ci0g
ICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZKGNlbnRlclkpOworICAgICAgICAKKyAgICAgICAgcmVz
dWx0LT5zZXRGaXJzdFgoV1RGTW92ZShjZW50ZXJYKSk7CisgICAgICAgIHJlc3VsdC0+c2V0Rmly
c3RZKFdURk1vdmUoY2VudGVyWSkpOworICAgICAgICAKICAgICAgICAgLy8gUmlnaHQgbm93LCBD
U1MgcmFkaWFsIGdyYWRpZW50cyBoYXZlIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgY2VudGVycy4K
LSAgICAgICAgcmVzdWx0LT5zZXRTZWNvbmRYKGNlbnRlclgpOwotICAgICAgICByZXN1bHQtPnNl
dFNlY29uZFkoY2VudGVyWSk7CisgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25kWChXVEZNb3ZlKGNl
bnRlclgpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTZWNvbmRZKFdURk1vdmUoY2VudGVyWSkpOwog
ICAgIH0KIAogICAgIGlmICgoc2hhcGUgfHwgc2l6ZUtleXdvcmQgfHwgaG9yaXpvbnRhbFNpemUg
fHwgY2VudGVyWCB8fCBjZW50ZXJZKSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFjb25zdW1lR3JhZGll
bnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdCkpCisgICAgaWYgKCFjb25z
dW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdC5nZXQoKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0
aW5nLCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nLCBDU1NH
cmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQogewotICAgIENTU0xpbmVhckdyYWRpZW50VmFsdWUq
IHJlc3VsdCA9IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIGdyYWRp
ZW50VHlwZSk7CisgICAgUmVmUHRyPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENT
U0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIGdyYWRpZW50VHlwZSk7CiAK
ICAgICBib29sIGV4cGVjdENvbW1hID0gdHJ1ZTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogYW5n
bGUgPSBjb25zdW1lQW5nbGUoYXJncyk7Ci0gICAgaWYgKGFuZ2xlKSB7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0QW5nbGUoYW5nbGUpOwotICAgIH0gZWxzZSBpZiAoZ3JhZGllbnRUeXBlID09IENTU1By
ZWZpeGVkTGluZWFyR3JhZGllbnQgfHwgY29uc3VtZUlkZW50PENTU1ZhbHVlVG8+KGFyZ3MpKSB7
Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBlbmRYID0gY29uc3VtZUlkZW50PENTU1ZhbHVl
TGVmdCwgQ1NTVmFsdWVSaWdodD4oYXJncyk7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBl
bmRZID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQm90dG9tLCBDU1NWYWx1ZVRvcD4oYXJncyk7Cisg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBj
c3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGlmIChhbmdsZSkKKyAg
ICAgICAgcmVzdWx0LT5zZXRBbmdsZShhbmdsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBlbHNl
IGlmIChncmFkaWVudFR5cGUgPT0gQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCB8fCBjb25zdW1l
SWRlbnQ8Q1NTVmFsdWVUbz4oYXJncykpIHsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBlbmRYID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4oYXJn
cyk7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW5kWSA9IGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUJvdHRvbSwgQ1NTVmFsdWVUb3A+KGFyZ3MpOwogICAgICAgICBpZiAoIWVuZFgg
JiYgIWVuZFkpIHsKICAgICAgICAgICAgIGlmIChncmFkaWVudFR5cGUgPT0gQ1NTTGluZWFyR3Jh
ZGllbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05NDMsMTI1ICs5NDks
OTEgQEAgc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTGluZWFyR3JhZGllbnQoQwogICAgICAgICAg
ICAgZW5kWCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGFyZ3Mp
OwogICAgICAgICB9CiAKLSAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoZW5kWCk7Ci0gICAgICAg
IHJlc3VsdC0+c2V0Rmlyc3RZKGVuZFkpOworICAgICAgICByZXN1bHQtPnNldEZpcnN0WChXVEZN
b3ZlKGVuZFgpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFkoV1RGTW92ZShlbmRZKSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgZXhwZWN0Q29tbWEgPSBmYWxzZTsKICAgICB9CiAKICAgICBp
ZiAoZXhwZWN0Q29tbWEgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JT
dG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQpKQorICAgIGlmICghY29uc3VtZUdyYWRp
ZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQuZ2V0KCkpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1DU1NWYWx1ZSogY29u
c3VtZUltYWdlT3JOb25lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250
ZXh0IGNvbnRleHQpCitSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQogewogICAgIGlm
IChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiBjb25z
dW1lSWRlbnQocmFuZ2UpOwogICAgIHJldHVybiBjb25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQp
OwogfQogCi1zdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDcm9zc0ZhZGUoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncywgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZT4gY29uc3VtZUNyb3NzRmFkZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJz
ZXJDb250ZXh0IGNvbnRleHQpCiB7Ci0gICAgQ1NTVmFsdWUqIGZyb21JbWFnZVZhbHVlID0gY29u
c3VtZUltYWdlT3JOb25lKGFyZ3MsIGNvbnRleHQpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gZnJv
bUltYWdlVmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUoYXJncywgY29udGV4dCk7CiAgICAgaWYg
KCFmcm9tSW1hZ2VWYWx1ZSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgQ1NTVmFsdWUqIHRvSW1hZ2VWYWx1ZSA9
IGNvbnN1bWVJbWFnZU9yTm9uZShhcmdzLCBjb250ZXh0KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+
IHRvSW1hZ2VWYWx1ZSA9IGNvbnN1bWVJbWFnZU9yTm9uZShhcmdzLCBjb250ZXh0KTsKICAgICBp
ZiAoIXRvSW1hZ2VWYWx1ZSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGVy
Y2VudGFnZSA9IG51bGxwdHI7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwZXJjZW50
YWdlOwogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBwZXJjZW50YWdlQXJnID0gYXJncy5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgIGlmIChwZXJjZW50YWdlQXJnLnR5cGUoKSA9
PSBQZXJjZW50YWdlVG9rZW4pCi0gICAgICAgIHBlcmNlbnRhZ2UgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKGNsYW1wVG88ZG91YmxlPihwZXJjZW50YWdlQXJnLm51bWVyaWNWYWx1ZSgpIC8g
MTAwLCAwLCAxKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpOworICAgICAg
ICBwZXJjZW50YWdlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGRvdWJsZT4o
cGVyY2VudGFnZUFyZy5udW1lcmljVmFsdWUoKSAvIDEwMCwgMCwgMSksIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXM6OkNTU19OVU1CRVIpOwogICAgIGVsc2UgaWYgKHBlcmNlbnRhZ2VBcmcu
dHlwZSgpID09IE51bWJlclRva2VuKQotICAgICAgICBwZXJjZW50YWdlID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShjbGFtcFRvPGRvdWJsZT4ocGVyY2VudGFnZUFyZy5udW1lcmljVmFsdWUo
KSwgMCwgMSksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICAgICAg
cGVyY2VudGFnZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxkb3VibGU+KHBl
cmNlbnRhZ2VBcmcubnVtZXJpY1ZhbHVlKCksIDAsIDEpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzOjpDU1NfTlVNQkVSKTsKIAogICAgIGlmICghcGVyY2VudGFnZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENTU0Nyb3NzZmFkZVZhbHVlOjpjcmVhdGUoZnJvbUlt
YWdlVmFsdWUsIHRvSW1hZ2VWYWx1ZSwgcGVyY2VudGFnZSk7CisgICAgcmV0dXJuIENTU0Nyb3Nz
ZmFkZVZhbHVlOjpjcmVhdGUoZnJvbUltYWdlVmFsdWUucmVsZWFzZU5vbk51bGwoKSwgdG9JbWFn
ZVZhbHVlLnJlbGVhc2VOb25OdWxsKCksIHBlcmNlbnRhZ2UucmVsZWFzZU5vbk51bGwoKSk7CiB9
CiAKLXN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhaW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKLXsKLSAgICBEQ0hFQ0soUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6Y3NzUGFpbnRBUElFbmFibGVkKCkpOwotCi0gICAgQ1NTQ3VzdG9tSWRlbnRW
YWx1ZSogbmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudChhcmdzKTsKLSAgICBpZiAoIW5hbWUpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIENTU1BhaW50VmFsdWU6OmNyZWF0
ZShuYW1lKTsKLX0KLQotc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR2VuZXJhdGVkSW1hZ2UoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKK3N0YXRp
YyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHZW5lcmF0ZWRJbWFnZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQogewogICAgIENTU1ZhbHVlSUQg
aWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOwogICAgIENTU1BhcnNlclRva2VuUmFuZ2Ug
cmFuZ2VDb3B5ID0gcmFuZ2U7CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3Vt
ZUZ1bmN0aW9uKHJhbmdlQ29weSk7Ci0gICAgQ1NTVmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7Ci0g
ICAgaWYgKGlkID09IENTU1ZhbHVlUmFkaWFsR3JhZGllbnQpIHsKLSAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZVJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcp
OwotICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCkg
ewotICAgICAgICByZXN1bHQgPSBjb25zdW1lUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5t
b2RlKCksIFJlcGVhdGluZyk7Ci0gICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdExp
bmVhckdyYWRpZW50KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBzZW5kIGEgZGVw
cmVjYXRpb24gbWVzc2FnZS4KLSAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQotICAg
ICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0
ZWRXZWJLaXRMaW5lYXJHcmFkaWVudCk7Ci0gICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJH
cmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgTm9uUmVwZWF0aW5nLCBDU1NQcmVmaXhlZExp
bmVhckdyYWRpZW50KTsKLSAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0
aW5nTGluZWFyR3JhZGllbnQpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNlbmQg
YSBkZXByZWNhdGlvbiBtZXNzYWdlLgotICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkp
Ci0gICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6RGVw
cmVjYXRlZFdlYktpdFJlcGVhdGluZ0xpbmVhckdyYWRpZW50KTsKLSAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBSZXBlYXRpbmcsIENT
U1ByZWZpeGVkTGluZWFyR3JhZGllbnQpOwotICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVS
ZXBlYXRpbmdMaW5lYXJHcmFkaWVudCkgewotICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFy
R3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJlcGVhdGluZywgQ1NTTGluZWFyR3JhZGll
bnQpOwotICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVMaW5lYXJHcmFkaWVudCkgewotICAg
ICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCks
IE5vblJlcGVhdGluZywgQ1NTTGluZWFyR3JhZGllbnQpOwotICAgIH0gZWxzZSBpZiAoaWQgPT0g
Q1NTVmFsdWVXZWJraXRHcmFkaWVudCkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
c2VuZCBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuCi0gICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50
ZXIoKSkKLSAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVy
OjpEZXByZWNhdGVkV2ViS2l0R3JhZGllbnQpOwotICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVw
cmVjYXRlZEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpKTsKLSAgICB9IGVsc2UgaWYgKGlk
ID09IENTU1ZhbHVlV2Via2l0UmFkaWFsR3JhZGllbnQpIHsKLSAgICAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHNlbmQgYSBkZXByZWNhdGlvbiBtZXNzYWdlLgotICAgICAgICBpZiAoY29udGV4
dC51c2VDb3VudGVyKCkpCi0gICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQo
VXNlQ291bnRlcjo6RGVwcmVjYXRlZFdlYktpdFJhZGlhbEdyYWRpZW50KTsKLSAgICAgICAgcmVz
dWx0ID0gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUo
KSwgTm9uUmVwZWF0aW5nKTsKLSAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVw
ZWF0aW5nUmFkaWFsR3JhZGllbnQpIHsKLSAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigp
KQotICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRl
cHJlY2F0ZWRXZWJLaXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCk7Ci0gICAgICAgIHJlc3VsdCA9
IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJl
cGVhdGluZyk7Ci0gICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSkg
eworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzdWx0OworICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJh
ZGlhbEdyYWRpZW50KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lUmFkaWFsR3JhZGllbnQoYXJn
cywgY29udGV4dC5tb2RlLCBOb25SZXBlYXRpbmcpOworICAgIGVsc2UgaWYgKGlkID09IENTU1Zh
bHVlUmVwZWF0aW5nUmFkaWFsR3JhZGllbnQpCisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVSYWRp
YWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUsIFJlcGVhdGluZyk7CisgICAgZWxzZSBpZiAo
aWQgPT0gQ1NTVmFsdWVXZWJraXRMaW5lYXJHcmFkaWVudCkKKyAgICAgICAgcmVzdWx0ID0gY29u
c3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgTm9uUmVwZWF0aW5nLCBDU1NQ
cmVmaXhlZExpbmVhckdyYWRpZW50KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtp
dFJlcGVhdGluZ0xpbmVhckdyYWRpZW50KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFy
R3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlLCBSZXBlYXRpbmcsIENTU1ByZWZpeGVkTGluZWFy
R3JhZGllbnQpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUmVwZWF0aW5nTGluZWFyR3Jh
ZGllbnQpCisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250
ZXh0Lm1vZGUsIFJlcGVhdGluZywgQ1NTTGluZWFyR3JhZGllbnQpOworICAgIGVsc2UgaWYgKGlk
ID09IENTU1ZhbHVlTGluZWFyR3JhZGllbnQpCisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5l
YXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUsIE5vblJlcGVhdGluZywgQ1NTTGluZWFyR3Jh
ZGllbnQpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0R3JhZGllbnQpCisgICAg
ICAgIHJlc3VsdCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQoYXJncywgY29udGV4dC5tb2Rl
KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFJhZGlhbEdyYWRpZW50KQorICAg
ICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRl
eHQubW9kZSwgTm9uUmVwZWF0aW5nKTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtp
dFJlcGVhdGluZ1JhZGlhbEdyYWRpZW50KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVj
YXRlZFJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgUmVwZWF0aW5nKTsKKyAgICBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSkKICAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZUNyb3NzRmFkZShhcmdzLCBjb250ZXh0KTsKLSAgICB9IGVsc2UgaWYgKGlkID09IENT
U1ZhbHVlUGFpbnQpIHsKLSAgICAgICAgcmVzdWx0ID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Y3NzUGFpbnRBUElFbmFibGVkKCkgPyBjb25zdW1lUGFpbnQoYXJncywgY29udGV4dCkgOiBudWxs
cHRyOwotICAgIH0KKwogICAgIGlmICghcmVzdWx0IHx8ICFhcmdzLmF0RW5kKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHJhbmdlID0gcmFuZ2VDb3B5OwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXN0YXRpYyBDU1NWYWx1ZSogY3JlYXRlQ1NTSW1hZ2VWYWx1ZVdpdGhSZWZlcnJl
cihjb25zdCBBdG9taWNTdHJpbmcmIHJhd1ZhbHVlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0KQotewotICAgIENTU1ZhbHVlKiBpbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3Jl
YXRlKHJhd1ZhbHVlLCBjb250ZXh0LmNvbXBsZXRlVVJMKHJhd1ZhbHVlKSk7Ci0gICAgdG9DU1NJ
bWFnZVZhbHVlKGltYWdlVmFsdWUpLT5zZXRSZWZlcnJlcihjb250ZXh0LnJlZmVycmVyKCkpOwot
ICAgIHJldHVybiBpbWFnZVZhbHVlOwotfQotCi1zdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVJbWFn
ZVNldChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZVNldChDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOwogICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOwotICAgIENTU0lt
YWdlU2V0VmFsdWUqIGltYWdlU2V0ID0gQ1NTSW1hZ2VTZXRWYWx1ZTo6Y3JlYXRlKCk7CisgICAg
UmVmUHRyPENTU0ltYWdlU2V0VmFsdWU+IGltYWdlU2V0ID0gQ1NTSW1hZ2VTZXRWYWx1ZTo6Y3Jl
YXRlKCk7CiAgICAgZG8gewogICAgICAgICBBdG9taWNTdHJpbmcgdXJsVmFsdWUgPSBjb25zdW1l
VXJsQXNTdHJpbmdWaWV3KGFyZ3MpLnRvQXRvbWljU3RyaW5nKCk7CiAgICAgICAgIGlmICh1cmxW
YWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIENT
U1ZhbHVlKiBpbWFnZSA9IGNyZWF0ZUNTU0ltYWdlVmFsdWVXaXRoUmVmZXJyZXIodXJsVmFsdWUs
IGNvbnRleHQpOworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IGltYWdlID0gQ1NTSW1hZ2VWYWx1
ZTo6Y3JlYXRlKGNvbXBsZXRlVVJMKGNvbnRleHQsIHVybFZhbHVlKSk7CiAgICAgICAgIGltYWdl
U2V0LT5hcHBlbmQoKmltYWdlKTsKIAogICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9r
ZW4gPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CkBAIC0xMDY5LDExICsxMDQx
LDExIEBAIHN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUltYWdlU2V0KENTU1BhcnMKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAodG9rZW4udmFsdWUoKSAhPSAieCIpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgRENIRUNLKHRva2VuLnVuaXRUeXBl
KCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpVbmtub3duKTsKKyAgICAgICAgQVNT
RVJUKHRva2VuLnVuaXRUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NT
X1VOS05PV04pOwogICAgICAgICBkb3VibGUgaW1hZ2VTY2FsZUZhY3RvciA9IHRva2VuLm51bWVy
aWNWYWx1ZSgpOwogICAgICAgICBpZiAoaW1hZ2VTY2FsZUZhY3RvciA8PSAwKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGltYWdlU2V0LT5hcHBlbmQoKkNTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoaW1hZ2VTY2FsZUZhY3RvciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpOdW1iZXIpKTsKKyAgICAgICAgaW1hZ2VTZXQtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKGltYWdlU2NhbGVGYWN0b3IsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6
OkNTU19OVU1CRVIpKTsKICAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKTsKICAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xMDkwLDExICsxMDYyLDExIEBAIHN0YXRpYyBib29sIGlzR2VuZXJhdGVkSW1hZ2Uo
Q1NTVmFsdWVJRCAKICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRHcmFkaWVudCB8fCBp
ZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSB8fCBpZCA9PSBDU1NWYWx1ZVBhaW50OwogfQog
Ci1DU1NWYWx1ZSogY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJDb250ZXh0IGNvbnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSBnZW5lcmF0ZWRJbWFn
ZSkKK1JlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSBnZW5l
cmF0ZWRJbWFnZSkKIHsKICAgICBBdG9taWNTdHJpbmcgdXJpID0gY29uc3VtZVVybEFzU3RyaW5n
VmlldyhyYW5nZSkudG9BdG9taWNTdHJpbmcoKTsKICAgICBpZiAoIXVyaS5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZUNTU0ltYWdlVmFsdWVXaXRoUmVmZXJyZXIodXJpLCBjb250ZXh0
KTsKKyAgICAgICAgcmV0dXJuIENTU0ltYWdlVmFsdWU6OmNyZWF0ZShjb21wbGV0ZVVSTChjb250
ZXh0LCB1cmkpKTsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBGdW5jdGlvblRva2Vu
KSB7CiAgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOwog
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRJbWFnZVNldCkKQEAgLTExMDYsNiArMTA3
OCw1IEBAIENTU1ZhbHVlKiBjb25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW4KIH0KIAogfSAv
LyBuYW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzCi0qLwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzLmgJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzX2gKICNk
ZWZpbmUgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzX2gKIAotLy8gRklYTUUtTkVXUEFSU0VSICNp
bmNsdWRlICJDU1NDdXN0b21JZGVudFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJU
b2tlblJhbmdlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKQEAgLTM5LDEwICsz
OSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NTU3RyaW5nVmFsdWU7Ci1j
bGFzcyBDU1NVUklWYWx1ZTsKLWNsYXNzIENTU1ZhbHVlUGFpcjsKLQogLy8gV2hlbiB0aGVzZSBm
dW5jdGlvbnMgYXJlIHN1Y2Nlc3NmdWwsIHRoZXkgd2lsbCBjb25zdW1lIGFsbCB0aGUgcmVsZXZh
bnQKIC8vIHRva2VucyBmcm9tIHRoZSByYW5nZSBhbmQgYWxzbyBjb25zdW1lIGFueSB3aGl0ZXNw
YWNlIHdoaWNoIGZvbGxvd3MuIFdoZW4KIC8vIHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgZG9lc24n
dCBtYXRjaCB0aGUgdHlwZSB3ZSdyZSBsb29raW5nIGZvciwgdGhlIHJhbmdlCkBAIC02MCwzOSAr
NTYsMzkgQEAgZW51bSBjbGFzcyBVbml0bGVzc1F1aXJrIHsKICAgICBGb3JiaWQKIH07CiAKLUNT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSW50ZWdlcihDU1NQYXJzZXJUb2tlblJhbmdlJiwgZG91
YmxlIG1pbmltdW1WYWx1ZSA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsK
LUNTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUludGVnZXIoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYsIGRvdWJsZSBtaW5pbXVtVmFsdWUgPSAtc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjptYXgoKSk7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQb3Np
dGl2ZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogYm9vbCBjb25zdW1lTnVtYmVyUmF3
KENTU1BhcnNlclRva2VuUmFuZ2UmLCBkb3VibGUmIHJlc3VsdCk7Ci1DU1NQcmltaXRpdmVWYWx1
ZSogY29uc3VtZU51bWJlcihDU1NQYXJzZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5nZSk7Ci1DU1NQ
cmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCk7Ci1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYsIFZhbHVlUmFuZ2UpOwotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UsIFVuaXRs
ZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwotQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVBbmdsZShDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci1DU1NQcmltaXRpdmVWYWx1ZSogY29u
c3VtZVRpbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOworUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lTnVtYmVyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJh
bmdlKTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUxlbmd0aChDU1NQYXJzZXJU
b2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVu
aXRsZXNzUXVpcms6OkZvcmJpZCk7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQ
ZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlKTsKK1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiwg
Q1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6
OkZvcmJpZCk7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVBbmdsZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVp
cms6OkZvcmJpZCk7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVUaW1lKENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJr
ID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKIAotQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJ
ZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci1DU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUlk
ZW50UmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1ZhbHVlSUQgbG93ZXIsIENTU1ZhbHVl
SUQgdXBwZXIpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnRS
YW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1
cHBlcik7CiB0ZW1wbGF0ZTxDU1NWYWx1ZUlELCBDU1NWYWx1ZUlELi4uPiBpbmxpbmUgYm9vbCBp
ZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCBpZCk7Ci10ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93
ZWRJZGVudHM+IENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYpOwordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAKLS8v
IEZJWE1FLU5FV1BBUlNFUiBDU1NDdXN0b21JZGVudFZhbHVlKiBjb25zdW1lQ3VzdG9tSWRlbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotQ1NTU3RyaW5nVmFsdWUqIGNvbnN1bWVTdHJpbmcoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOworUmVmUHRyPENTU0N1c3RvbUlkZW50VmFsdWU+IGNvbnN1bWVD
dXN0b21JZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJik7CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNvbnN1bWVTdHJpbmcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogU3RyaW5nVmlldyBjb25z
dW1lVXJsQXNTdHJpbmdWaWV3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLUNTU1VSSVZhbHVlKiBj
b25zdW1lVXJsKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gY29uc3VtZVVybChDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAKLUNTU1ZhbHVlKiBjb25zdW1l
Q29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIGJvb2wgYWNjZXB0UXVp
cmt5Q29sb3JzID0gZmFsc2UpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQ29s
b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIGJvb2wgYWNjZXB0UXVpcmt5
Q29sb3JzID0gZmFsc2UpOwogCi1DU1NWYWx1ZVBhaXIqIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayk7Ci1ib29sIGNvbnN1
bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NR
dWlyaywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpOwotYm9vbCBjb25z
dW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyaywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3Vs
dFkpOworUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmspOworYm9vbCBjb25zdW1l
UG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVp
cmssIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFgsIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4mIHJlc3VsdFkpOworYm9vbCBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihD
U1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYg
cmVzdWx0WSk7CiAKIGVudW0gY2xhc3MgQ29uc3VtZUdlbmVyYXRlZEltYWdlIHsKICAgICBBbGxv
dywKICAgICBGb3JiaWQKIH07CiAKLUNTU1ZhbHVlKiBjb25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYsIENTU1BhcnNlckNvbnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSA9IENvbnN1
bWVHZW5lcmF0ZWRJbWFnZTo6QWxsb3cpOwotQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZU9yTm9uZShD
U1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyQ29udGV4dCk7CitSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyQ29udGV4dCwgQ29u
c3VtZUdlbmVyYXRlZEltYWdlID0gQ29uc3VtZUdlbmVyYXRlZEltYWdlOjpBbGxvdyk7CitSZWZQ
dHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NT
UGFyc2VyQ29udGV4dCk7CiAKIC8vIFRlbXBsYXRlIGltcGxlbWVudGF0aW9ucyBhcmUgYXQgdGhl
IGJvdHRvbSBvZiB0aGUgZmlsZSBmb3IgcmVhZGFiaWxpdHkuCiAKQEAgLTExMiw3ICsxMDgsNyBA
QCB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIG5hbWVzPiBSZWZQdHI8Q1NTCiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0NTU1dpZGVLZXl3b3JkKGNvbnN0IENTU1ZhbHVlSUQmIGlkKQogewotICAgIHJl
dHVybiBpZCA9PSBDU1NWYWx1ZUluaXRpYWwgfHwgaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlk
ID09IENTU1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NTVmFsdWVEZWZhdWx0OworICAgIHJldHVybiBp
ZCA9PSBDU1NWYWx1ZUluaXRpYWwgfHwgaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENT
U1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnQgfHwgaWQgPT0gQ1NTVmFsdWVEZWZh
dWx0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCShyZXZpc2lv
biAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZjxDYWxjdWxhdGlvblZhbHVlPiBDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoc3RkOjp1
bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIENhbGN1bGF0aW9uUGVybWl0dGVk
VmFsdWVSYW5nZSByYW5nZSkKK1JlZjxDYWxjdWxhdGlvblZhbHVlPiBDYWxjdWxhdGlvblZhbHVl
OjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIFZhbHVl
UmFuZ2UgcmFuZ2UpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FsY3VsYXRpb25WYWx1
ZShXVEZNb3ZlKHZhbHVlKSwgcmFuZ2UpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NhbGN1bGF0aW9uVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEg
KzQ2LDYgQEAgZW51bSBDYWxjT3BlcmF0b3IgewogICAgIENhbGNEaXZpZGUgPSAnLycKIH07CiAK
LWVudW0gQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHsKLSAgICBDYWxjdWxhdGlvblJh
bmdlQWxsLAotICAgIENhbGN1bGF0aW9uUmFuZ2VOb25OZWdhdGl2ZQotfTsKLQogZW51bSBDYWxj
RXhwcmVzc2lvbk5vZGVUeXBlIHsKICAgICBDYWxjRXhwcmVzc2lvbk5vZGVVbmRlZmluZWQsCiAg
ICAgQ2FsY0V4cHJlc3Npb25Ob2RlTnVtYmVyLApAQCAtMTM2LDE0ICsxMzEsMTQgQEAgcHJpdmF0
ZToKIAogY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGN1bGF0
aW9uVmFsdWU+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPENhbGN1
bGF0aW9uVmFsdWU+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiwg
Q2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPENhbGN1bGF0aW9uVmFsdWU+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJl
c3Npb25Ob2RlPiwgVmFsdWVSYW5nZSk7CiAgICAgZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFs
dWUpIGNvbnN0OwogCiAgICAgYm9vbCBzaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZTsgfQogICAgIGNvbnN0IENhbGNFeHBy
ZXNzaW9uTm9kZSYgZXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuICptX2V4cHJlc3Npb247IH0K
IAogcHJpdmF0ZToKLSAgICBDYWxjdWxhdGlvblZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhw
cmVzc2lvbk5vZGU+LCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOworICAgIENhbGN1
bGF0aW9uVmFsdWUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4sIFZhbHVlUmFu
Z2UpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbV9leHByZXNz
aW9uOwogICAgIGJvb2wgbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmU7CkBAIC0xNTQsOSArMTQ5
LDkgQEAgaW5saW5lIENhbGNFeHByZXNzaW9uTm9kZTo6Q2FsY0V4cHJlc3NpbwogewogfQogCi1p
bmxpbmUgQ2FsY3VsYXRpb25WYWx1ZTo6Q2FsY3VsYXRpb25WYWx1ZShzdGQ6OnVuaXF1ZV9wdHI8
Q2FsY0V4cHJlc3Npb25Ob2RlPiBleHByZXNzaW9uLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVl
UmFuZ2UgcmFuZ2UpCitpbmxpbmUgQ2FsY3VsYXRpb25WYWx1ZTo6Q2FsY3VsYXRpb25WYWx1ZShz
dGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBleHByZXNzaW9uLCBWYWx1ZVJhbmdl
IHJhbmdlKQogICAgIDogbV9leHByZXNzaW9uKFdURk1vdmUoZXhwcmVzc2lvbikpCi0gICAgLCBt
X3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZShyYW5nZSA9PSBDYWxjdWxhdGlvblJhbmdlTm9uTmVn
YXRpdmUpCisgICAgLCBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZShyYW5nZSA9PSBWYWx1ZVJh
bmdlTm9uTmVnYXRpdmUpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNw
cAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDcgKzI5Myw3IEBAIHN0YXRpYyBMZW5ndGggYmxlbmRN
aXhlZFR5cGVzKGNvbnN0IExlbmcKICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAKICAgICBh
dXRvIGJsZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihm
cm9tLCB0bywgcHJvZ3Jlc3MpOwotICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6
Y3JlYXRlKFdURk1vdmUoYmxlbmQpLCBDYWxjdWxhdGlvblJhbmdlQWxsKSk7CisgICAgcmV0dXJu
IExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShibGVuZCksIFZhbHVlUmFu
Z2VBbGwpKTsKIH0KIAogTGVuZ3RoIGJsZW5kKGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVu
Z3RoJiB0bywgZG91YmxlIHByb2dyZXNzKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0
LDE2IEBAIGJvb2wgQ29sb3I6OnBhcnNlSGV4Q29sb3IoY29uc3QgU3RyaW5nJiAKICAgICByZXR1
cm4gcGFyc2VIZXhDb2xvcihuYW1lLmNoYXJhY3RlcnMxNigpLCBuYW1lLmxlbmd0aCgpLCByZ2Ip
OwogfQogCitib29sIENvbG9yOjpwYXJzZUhleENvbG9yKGNvbnN0IFN0cmluZ1ZpZXcmIG5hbWUs
IFJHQkEzMiYgcmdiKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG5hbWUubGVuZ3RoKCk7Cisg
ICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobmFtZS5pczhC
aXQoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlSGV4Q29sb3IobmFtZS5jaGFyYWN0ZXJzOCgpLCBu
YW1lLmxlbmd0aCgpLCByZ2IpOworICAgIHJldHVybiBwYXJzZUhleENvbG9yKG5hbWUuY2hhcmFj
dGVyczE2KCksIG5hbWUubGVuZ3RoKCksIHJnYik7Cit9CisKIGludCBkaWZmZXJlbmNlU3F1YXJl
ZChjb25zdCBDb2xvciYgYzEsIGNvbnN0IENvbG9yJiBjMikKIHsKICAgICBpbnQgZFIgPSBjMS5y
ZWQoKSAtIGMyLnJlZCgpOwpAQCAtMjI2LDcgKzIzNiw3IEBAIENvbG9yOjpDb2xvcihjb25zdCBT
dHJpbmcmIG5hbWUpCiBDb2xvcjo6Q29sb3IoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpZiAo
bmFtZVswXSA9PSAnIycpCi0gICAgICAgIG1fdmFsaWQgPSBwYXJzZUhleENvbG9yKCZuYW1lWzFd
LCBtX2NvbG9yKTsKKyAgICAgICAgbV92YWxpZCA9IHBhcnNlSGV4Q29sb3IoKFN0cmluZykmbmFt
ZVsxXSwgbV9jb2xvcik7CiAgICAgZWxzZSB7CiAgICAgICAgIGNvbnN0IE5hbWVkQ29sb3IqIGZv
dW5kQ29sb3IgPSBmaW5kQ29sb3IobmFtZSwgc3RybGVuKG5hbWUpKTsKICAgICAgICAgbV9jb2xv
ciA9IGZvdW5kQ29sb3IgPyBmb3VuZENvbG9yLT5BUkdCVmFsdWUgOiAwOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyMDU5OTApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzUsNiArMTc1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBwYXJz
ZUhleENvbG9yKGNvbnN0IFN0cmluZyYsIFJHQkEzMiYpOworICAgIHN0YXRpYyBib29sIHBhcnNl
SGV4Q29sb3IoY29uc3QgU3RyaW5nVmlldyYsIFJHQkEzMiYpOwogICAgIHN0YXRpYyBib29sIHBh
cnNlSGV4Q29sb3IoY29uc3QgTENoYXIqLCB1bnNpZ25lZCwgUkdCQTMyJik7CiAgICAgc3RhdGlj
IGJvb2wgcGFyc2VIZXhDb2xvcihjb25zdCBVQ2hhciosIHVuc2lnbmVkLCBSR0JBMzImKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3Bw
CShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFz
aWNTaGFwZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgQmFzaWNT
aGFwZUNlbnRlckNvb3JkaW5hdGU6OnVwZGF0ZUMKICAgICBhdXRvIGxocyA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKTsKICAgICBh
dXRvIHJocyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fbGVuZ3Ro
KTsKICAgICBhdXRvIG9wID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJpbmFyeU9w
ZXJhdGlvbj4oV1RGTW92ZShsaHMpLCBXVEZNb3ZlKHJocyksIENhbGNTdWJ0cmFjdCk7Ci0gICAg
bV9jb21wdXRlZExlbmd0aCA9IExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92
ZShvcCksIENhbGN1bGF0aW9uUmFuZ2VBbGwpKTsKKyAgICBtX2NvbXB1dGVkTGVuZ3RoID0gTGVu
Z3RoKENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkp
OwogfQogCiBzdHJ1Y3QgU1ZHUGF0aFRyYW5zbGF0ZWRCeXRlU3RyZWFtIHsKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjAz
OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDE2LTA5LTE2ICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1Mg
UGFyc2VyXSBHZXQgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBjb21waWxpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjA3OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6Y3JlYXRlVGVzdFZhbHVlKToKKyAgICAgICAgQ29udmVydCB0byBWYWx1ZVJhbmdlLgor
CiAyMDE2LTA5LTE2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrIFRlc3RXZWJLaXRBUEkgdGVzdHMg
YXJlIGJyb2tlbiBhZnRlciByMjA2MDMzLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcAkocmV2aXNpb24gMjA1
OTkwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIHN0YXRpYyBS
ZWY8V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlVGVzdFZhbHVlKCkKIHsKICAgICBh
dXRvIG5vZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4o
KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUo
bm9kZSksIFdlYkNvcmU6OkNhbGN1bGF0aW9uUmFuZ2VBbGwpOworICAgIHJldHVybiBXZWJDb3Jl
OjpDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShub2RlKSwgV2ViQ29yZTo6VmFsdWVS
YW5nZUFsbCk7CiB9CiAKIFRFU1QoQ2FsY3VsYXRpb25WYWx1ZSwgTGVuZ3RoQ29uc3RydWN0aW9u
KQo=
</data>
<flag name="review"
          id="312344"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>