<?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>163656</bug_id>
          
          <creation_ts>2016-10-18 23:44:53 -0700</creation_ts>
          <short_desc>Move XPath from ExceptionCode to Exception</short_desc>
          <delta_ts>2016-10-19 10:00:20 -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>Bindings</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1241853</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-18 23:44:53 -0700</bug_when>
    <thetext>Move XPath from ExceptionCode to Exception</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241856</commentid>
    <comment_count>1</comment_count>
      <attachid>292051</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-18 23:57:13 -0700</bug_when>
    <thetext>Created attachment 292051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241858</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-18 23:59:36 -0700</bug_when>
    <thetext>Attachment 292051 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp&quot;
ERROR: Source/WebCore/xml/XPathResult.h:37:  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/xml/XPathResult.h:38:  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/xml/XPathResult.h:39:  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/xml/XPathResult.h:40:  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/xml/XPathResult.h:41:  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/xml/XPathResult.h:42:  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/xml/XPathResult.h:43:  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/xml/XPathResult.h:44:  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/xml/XPathResult.h:45:  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/xml/XPathResult.h:46:  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: 10 in 28 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>1241881</commentid>
    <comment_count>3</comment_count>
      <attachid>292057</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-19 01:55:45 -0700</bug_when>
    <thetext>Created attachment 292057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241882</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 01:56:57 -0700</bug_when>
    <thetext>Attachment 292057 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp&quot;
ERROR: Source/WebCore/xml/XPathResult.h:37:  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/xml/XPathResult.h:38:  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/xml/XPathResult.h:39:  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/xml/XPathResult.h:40:  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/xml/XPathResult.h:41:  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/xml/XPathResult.h:42:  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/xml/XPathResult.h:43:  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/xml/XPathResult.h:44:  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/xml/XPathResult.h:45:  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/xml/XPathResult.h:46:  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: 10 in 28 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>1241931</commentid>
    <comment_count>5</comment_count>
      <attachid>292057</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-19 09:09:43 -0700</bug_when>
    <thetext>Comment on attachment 292057
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241954</commentid>
    <comment_count>6</comment_count>
      <attachid>292057</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 10:00:15 -0700</bug_when>
    <thetext>Comment on attachment 292057
Patch

Clearing flags on attachment: 292057

Committed r207541: &lt;http://trac.webkit.org/changeset/207541&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241955</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 10:00:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292051</attachid>
            <date>2016-10-18 23:57:13 -0700</date>
            <delta_ts>2016-10-19 01:55:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163656-20161018235338.patch</filename>
            <type>text/plain</type>
            <size>63525</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk4YTg1OGY4ZTYzNDhl
OGVjNGJlNTQxOTQ0Yjc1YTlhMDk4OWU4OC4uZWFlNDU0ZjQwODJkNzY5ZDczMGFjYWJiY2ZhODIx
ZWI1OWI2Y2ZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY1IEBACiAyMDE2LTEwLTE4ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBNb3ZlIFhQYXRoIGZyb20gRXhj
ZXB0aW9uQ29kZSB0byBFeGNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzY1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpjcmVhdGVFeHByZXNzaW9uKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNyZWF0ZU5TUmVzb2x2ZXIpOiBSZXR1cm4gUmVmLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmV2YWx1YXRlKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMgZm9yIHRoZSBmdW5jdGlv
bnMgYWJvdmUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOb2RlRmluZGVyOjpzZWFyY2hVc2luZ1hQYXRo
KTogQ2FsbCBYUGF0aCBmdW5jdGlvbnMKKyAgICAgICAgd2l0aCBuZXcgaW50ZXJmYWNlLgorCisg
ICAgICAgICogeG1sL0RPTVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6
OkRPTVBhcnNlcik6IE1hcmtlZCBpbmxpbmUuCisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6
OmNyZWF0ZSk6IE1vdmVkIGhlcmUgZnJvbSBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjpET01Q
YXJzZXI6OnBhcnNlRnJvbVN0cmluZyk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiB4bWwv
RE9NUGFyc2VyLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZXMuCisgICAgICAgICogeG1sL0RP
TVBhcnNlci5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbi4KKworICAgICAgICAqIHhtbC9Y
UGF0aEV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aEV2YWx1YXRvcjo6Y3Jl
YXRlRXhwcmVzc2lvbik6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OlhQYXRo
RXZhbHVhdG9yOjpldmFsdWF0ZSk6IERpdHRvLgorICAgICAgICAqIHhtbC9YUGF0aEV2YWx1YXRv
ci5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIHhtbC9YUGF0aEV2YWx1
YXRvci5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiB4bWwvWFBh
dGhFeHByZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoRXhwcmVzc2lvbjo6Y3Jl
YXRlRXhwcmVzc2lvbik6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OlhQYXRo
RXhwcmVzc2lvbjo6ZXZhbHVhdGUpOiBEaXR0by4KKyAgICAgICAgKiB4bWwvWFBhdGhFeHByZXNz
aW9uLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZXMuCisgICAgICAgICogeG1sL1hQYXRoRXhw
cmVzc2lvbi5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiB4bWwv
WFBhdGhHcmFtbWFyLnk6IEFkZGVkIGluY2x1ZGUgb2YgWFBhdGhTdGVwLmguCisKKyAgICAgICAg
KiB4bWwvWFBhdGhQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlBhcnNlcjo6
UGFyc2VyKTogSW5pdGlhbGl6ZSB0aHJlZSBzY2FsYXIgZGF0YSBtZW1iZXJzCisgICAgICAgIGlu
IHRoZSBjbGFzcyBkZWZpbml0aW9uIHJhdGhlciB0aGFuIGhlcmUuCisgICAgICAgIChXZWJDb3Jl
OjpYUGF0aDo6UGFyc2VyOjpwYXJzZVN0YXRlbWVudCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKiB4bWwvWFBhdGhQYXJzZXIuaDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKworICAg
ICAgICAqIHhtbC9YUGF0aFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aFJlc3Vs
dDo6WFBhdGhSZXN1bHQpOiBVc2UgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYQorICAgICAgICBw
b2ludGVyIGZvciB0aGUgZG9jdW1lbnQuIEFsYW8gaW5pdGlhbGl6ZSB0d28gc2NhbGFyIGRhdGEg
bWVtYmVycworICAgICAgICBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiByYXRoZXIgdGhhbiBoZXJl
LgorICAgICAgICAoV2ViQ29yZTo6WFBhdGhSZXN1bHQ6OmNvbnZlcnRUbyk6IFVzZSBFeGNlcHRp
b25Pci4KKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoUmVzdWx0OjpudW1iZXJWYWx1ZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6WFBhdGhSZXN1bHQ6OnN0cmluZ1ZhbHVlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpYUGF0aFJlc3VsdDo6Ym9vbGVhblZhbHVlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpYUGF0aFJlc3VsdDo6c2luZ2xlTm9kZVZhbHVlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpYUGF0aFJlc3VsdDo6c25hcHNob3RMZW5ndGgpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlhQYXRoUmVzdWx0OjppdGVyYXRlTmV4dCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6WFBhdGhSZXN1bHQ6OnNuYXBzaG90SXRlbSk6IERpdHRvLgorICAgICAgICAqIHht
bC9YUGF0aFJlc3VsdC5oOiBVcGRhdGVkIGZvciB0aGUgY2hhbmdlcyBhYm92ZS4KKyAgICAgICAg
KiB4bWwvWFBhdGhSZXN1bHQuaWRsOiBVc2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisyMDE2
LTEwLTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwogICAgICAgICBNb3ZlIGlu
dGVybmFsIHRlc3RpbmcgY2xhc3NlcyBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1NTMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IDE1ODE5YjgzODM2OGZhZmY1MmU0NGEzZmUwZTFlNWQ3OTI3MzYz
ODMuLmQxM2Y5NjE1OGUwMzExYjEzZjcyNTM0MjBkMTkyNmFhMzdmYmYyYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNi0xMC0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBYUGF0aCBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhj
ZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjM2NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IERPTS9ET01Eb2N1bWVudC5tbToKKyAgICAgICAgKHdyYXApOiBBZGRlZC4gSGVscGVyIGZ1bmN0
aW9uIGZvciB3cmFwcGluZyBhIHJlc29sdmVyLgorICAgICAgICAoLVtET01Eb2N1bWVudCBjcmVh
dGVFeHByZXNzaW9uOnJlc29sdmVyOl0pOiBVc2UgcmFpc2VPbkRPTUVycm9yLgorICAgICAgICAo
LVtET01Eb2N1bWVudCBldmFsdWF0ZTpjb250ZXh0Tm9kZTpyZXNvbHZlcjp0eXBlOmluUmVzdWx0
Ol0pOiBEaXR0by4KKyAgICAgICAgKiBET00vRE9NWFBhdGhFeHByZXNzaW9uLm1tOgorICAgICAg
ICAoLVtET01YUGF0aEV4cHJlc3Npb24gZXZhbHVhdGU6dHlwZTppblJlc3VsdDpdKTogRGl0dG8u
CisgICAgICAgICogRE9NL0RPTVhQYXRoUmVzdWx0Lm1tOgorICAgICAgICAoLVtET01YUGF0aFJl
c3VsdCBudW1iZXJWYWx1ZV0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NWFBhdGhSZXN1bHQgc3Ry
aW5nVmFsdWVdKTogRGl0dG8uCisgICAgICAgICgtW0RPTVhQYXRoUmVzdWx0IGJvb2xlYW5WYWx1
ZV0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NWFBhdGhSZXN1bHQgc2luZ2xlTm9kZVZhbHVlXSk6
IERpdHRvLgorICAgICAgICAoLVtET01YUGF0aFJlc3VsdCBzbmFwc2hvdExlbmd0aF0pOiBEaXR0
by4KKyAgICAgICAgKC1bRE9NWFBhdGhSZXN1bHQgaXRlcmF0ZU5leHRdKTogRGl0dG8uCisgICAg
ICAgICgtW0RPTVhQYXRoUmVzdWx0IHNuYXBzaG90SXRlbTpdKTogRGl0dG8uCisKIDIwMTYtMTAt
MTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXBsYWNlIHN0ZDo6
ZXhwZXJpbWVudGFsOjp2YXJpYW50IHdpdGggV1RGOjpWYXJpYW50IChvciBzaW1pbGFyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDZhMjY0OTRkNmI2MjMzZWY4ODgzMTA1MjFjZTZkNzc1Y2ZmMTY1NTEuLmEyODUz
MDQyYTc4MTE3M2UyZDkyZjZhYWFiMzNlMmI3MjY4NGI2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNCBAQAorMjAxNi0xMC0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBYUGF0aCBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnQuY3BwOgorICAgICAgICAo
d2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfZXhwcmVzc2lvbik6IFVzZSBFeGNlcHRpb25Pci4K
KyAgICAgICAgKHdlYmtpdF9kb21fZG9jdW1lbnRfZXZhbHVhdGUpOiBEaXR0by4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVhQYXRoRXhw
cmVzc2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3hwYXRoX2V4cHJlc3Npb25fZXZhbHVh
dGUpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTVhQYXRoUmVzdWx0LmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21feHBhdGhf
cmVzdWx0X2l0ZXJhdGVfbmV4dCk6IERpdHRvLgorICAgICAgICAod2Via2l0X2RvbV94cGF0aF9y
ZXN1bHRfc25hcHNob3RfaXRlbSk6IERpdHRvLgorICAgICAgICAod2Via2l0X2RvbV94cGF0aF9y
ZXN1bHRfZ2V0X251bWJlcl92YWx1ZSk6IERpdHRvLgorICAgICAgICAod2Via2l0X2RvbV94cGF0
aF9yZXN1bHRfZ2V0X3N0cmluZ192YWx1ZSk6IERpdHRvLgorICAgICAgICAod2Via2l0X2RvbV94
cGF0aF9yZXN1bHRfZ2V0X2Jvb2xlYW5fdmFsdWUpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9k
b21feHBhdGhfcmVzdWx0X2dldF9zaW5nbGVfbm9kZV92YWx1ZSk6IERpdHRvLgorICAgICAgICAo
d2Via2l0X2RvbV94cGF0aF9yZXN1bHRfZ2V0X3NuYXBzaG90X2xlbmd0aCk6IERpdHRvLgorCiAy
MDE2LTEwLTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBhIE1pbmlCcm93c2VyIG1lbnUgaXRlbSB0byBhcHBseSBwYWdlIHNjYWxlIGluIFdL
MSBhbmQgV0syCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmZmJjYjgwYmIzNWUxYWEzZjdm
MmYzNDBkYTQ4NmI2MTc3NzlhMzY2Li44NjE4MDhiYjZkN2YwOTcwNzgzMWVmODQ4MWFlMzE3YzNl
MWE4YTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUxMTcsMjUgKzUxMTcsMjUgQEAg
Ym9vbCBEb2N1bWVudDo6aXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZCgpIGNvbnN0CiAK
ICNlbmRpZgogCi1SZWZQdHI8WFBhdGhFeHByZXNzaW9uPiBEb2N1bWVudDo6Y3JlYXRlRXhwcmVz
c2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+JiYg
cmVzb2x2ZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPFhQYXRoRXhwcmVz
c2lvbj4+IERvY3VtZW50OjpjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4mJiByZXNvbHZlcikKIHsKICAgICBpZiAoIW1feHBh
dGhFdmFsdWF0b3IpCiAgICAgICAgIG1feHBhdGhFdmFsdWF0b3IgPSBYUGF0aEV2YWx1YXRvcjo6
Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIG1feHBhdGhFdmFsdWF0b3ItPmNyZWF0ZUV4cHJlc3Npb24o
ZXhwcmVzc2lvbiwgV1RGTW92ZShyZXNvbHZlciksIGVjKTsKKyAgICByZXR1cm4gbV94cGF0aEV2
YWx1YXRvci0+Y3JlYXRlRXhwcmVzc2lvbihleHByZXNzaW9uLCBXVEZNb3ZlKHJlc29sdmVyKSk7
CiB9CiAKLVJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+IERvY3VtZW50OjpjcmVhdGVOU1Jlc29sdmVy
KE5vZGUqIG5vZGVSZXNvbHZlcikKK1JlZjxYUGF0aE5TUmVzb2x2ZXI+IERvY3VtZW50OjpjcmVh
dGVOU1Jlc29sdmVyKE5vZGUqIG5vZGVSZXNvbHZlcikKIHsKICAgICBpZiAoIW1feHBhdGhFdmFs
dWF0b3IpCiAgICAgICAgIG1feHBhdGhFdmFsdWF0b3IgPSBYUGF0aEV2YWx1YXRvcjo6Y3JlYXRl
KCk7CiAgICAgcmV0dXJuIG1feHBhdGhFdmFsdWF0b3ItPmNyZWF0ZU5TUmVzb2x2ZXIobm9kZVJl
c29sdmVyKTsKIH0KIAotUmVmUHRyPFhQYXRoUmVzdWx0PiBEb2N1bWVudDo6ZXZhbHVhdGUoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBOb2RlKiBjb250ZXh0Tm9kZSwgUmVmUHRyPFhQYXRoTlNS
ZXNvbHZlcj4mJiByZXNvbHZlciwgdW5zaWduZWQgc2hvcnQgdHlwZSwgWFBhdGhSZXN1bHQqIHJl
c3VsdCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxSZWY8WFBhdGhSZXN1bHQ+PiBE
b2N1bWVudDo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBOb2RlKiBjb250ZXh0
Tm9kZSwgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4mJiByZXNvbHZlciwgdW5zaWduZWQgc2hvcnQg
dHlwZSwgWFBhdGhSZXN1bHQqIHJlc3VsdCkKIHsKICAgICBpZiAoIW1feHBhdGhFdmFsdWF0b3Ip
CiAgICAgICAgIG1feHBhdGhFdmFsdWF0b3IgPSBYUGF0aEV2YWx1YXRvcjo6Y3JlYXRlKCk7Ci0g
ICAgcmV0dXJuIG1feHBhdGhFdmFsdWF0b3ItPmV2YWx1YXRlKGV4cHJlc3Npb24sIGNvbnRleHRO
b2RlLCBXVEZNb3ZlKHJlc29sdmVyKSwgdHlwZSwgcmVzdWx0LCBlYyk7CisgICAgcmV0dXJuIG1f
eHBhdGhFdmFsdWF0b3ItPmV2YWx1YXRlKGV4cHJlc3Npb24sIGNvbnRleHROb2RlLCBXVEZNb3Zl
KHJlc29sdmVyKSwgdHlwZSwgcmVzdWx0KTsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkSW5oZXJp
dFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCA3N2ZhMGZiMjU0OGY5NzJmZGQ2OGQzNTU2Yjk3MzMxNmQ5ZGZhYjNkLi45YTU0MGI1
MWFiMzU2YTgwNWFkZTQ3NGVkOWM1OWI2MTRkOGUwYzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJE
b2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJEb2N1bWVudFRpbWluZy5oIgorI2luY2x1
ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRl
ICJGb250U2VsZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCkBAIC05
NDMsOSArOTQ0LDkgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IGRvbVRyZWVWZXJzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kb21UcmVlVmVyc2lvbjsgfQogCiAgICAgLy8gWFBhdGhFdmFsdWF0b3Ig
bWV0aG9kcwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxYUGF0aEV4cHJlc3Npb24+IGNyZWF0
ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8WFBhdGhOU1Jlc29s
dmVyPiYmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFhQYXRo
TlNSZXNvbHZlcj4gY3JlYXRlTlNSZXNvbHZlcihOb2RlKiBub2RlUmVzb2x2ZXIpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxYUGF0aFJlc3VsdD4gZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBOb2RlKiBjb250ZXh0Tm9kZSwgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4mJiwg
dW5zaWduZWQgc2hvcnQgdHlwZSwgWFBhdGhSZXN1bHQqLCBFeGNlcHRpb25Db2RlJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFhQYXRoRXhwcmVzc2lvbj4+IGNyZWF0ZUV4
cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8WFBhdGhOU1Jlc29sdmVy
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8WFBhdGhOU1Jlc29sdmVyPiBjcmVhdGVOU1Jl
c29sdmVyKE5vZGUqIG5vZGVSZXNvbHZlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9u
T3I8UmVmPFhQYXRoUmVzdWx0Pj4gZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBO
b2RlKiBjb250ZXh0Tm9kZSwgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4mJiwgdW5zaWduZWQgc2hv
cnQgdHlwZSwgWFBhdGhSZXN1bHQqKTsKIAogICAgIGVudW0gUGVuZGluZ1NoZWV0TGF5b3V0IHsg
Tm9MYXlvdXRXaXRoUGVuZGluZ1NoZWV0cywgRGlkTGF5b3V0V2l0aFBlbmRpbmdTaGVldHMsIEln
bm9yZUxheW91dFdpdGhQZW5kaW5nU2hlZXRzIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmlu
ZGV4IGM5NjJjMGNkYTUwMDM5Y2YxNzU4YTgxNmRkZTUzM2QzYjhmZDdiNTAuLjE0NzBlNWU4ZWQ5
YjgzMzRjMTdkNTMzMzBkMjFjNjk0ODUwZTQ4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApA
QCAtNzYsMTIgKzc2LDExIEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjb250
ZW50VHlwZTsKIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBh
cmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIFhQ
YXRoRXhwcmVzc2lvbiBjcmVhdGVFeHByZXNzaW9uKG9wdGlvbmFsIERPTVN0cmluZyBleHByZXNz
aW9uID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIpOwor
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gWFBhdGhFeHByZXNzaW9uIGNyZWF0ZUV4cHJlc3Npb24o
b3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Npb24gPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgWFBh
dGhOU1Jlc29sdmVyPyByZXNvbHZlcik7CiAgICAgWFBhdGhOU1Jlc29sdmVyIGNyZWF0ZU5TUmVz
b2x2ZXIoTm9kZT8gbm9kZVJlc29sdmVyKTsKIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZp
bmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICBbTWF5VGhyb3dM
ZWdhY3lFeGNlcHRpb25dIFhQYXRoUmVzdWx0IGV2YWx1YXRlKG9wdGlvbmFsIERPTVN0cmluZyBl
eHByZXNzaW9uID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIE5vZGU/IGNvbnRleHROb2RlLCBvcHRp
b25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyLAotICAgICAgICBvcHRpb25hbCB1bnNpZ25l
ZCBzaG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0KTsKKyAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIFhQYXRoUmVzdWx0IGV2YWx1YXRlKG9wdGlvbmFsIERPTVN0cmlu
ZyBleHByZXNzaW9uID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIE5vZGU/IGNvbnRleHROb2RlLCBv
cHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyLCBvcHRpb25hbCB1bnNpZ25lZCBzaG9y
dCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0KTsKIAogICAgIC8vIEZJ
WE1FOiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGxhc3QgcGFyYW1ldGVyIHNob3VsZCBiZSB0
aGUgZW1wdHkgc3RyaW5nLgogICAgIGJvb2xlYW4gZXhlY0NvbW1hbmQoRE9NU3RyaW5nIGNvbW1h
bmQsIG9wdGlvbmFsIGJvb2xlYW4gdXNlckludGVyZmFjZSA9IGZhbHNlLCBvcHRpb25hbCBET01T
dHJpbmc/IHZhbHVlID0gbnVsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTm9kZUZpbmRlci5jcHAKaW5kZXggNjQ1NjM2ZTc4ZDNmYjFjYTM2NDFlOTU4M2MzZmM0
MDM0NWM1ZTg1ZS4uNTViMmMyODFhZWZkM2JjODk1ZDI3MjMxM2YwYjRmYWUxZDU2YzFjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcApA
QCAtMTMyLDE5ICsxMzIsMjEgQEAgYm9vbCBJbnNwZWN0b3JOb2RlRmluZGVyOjptYXRjaGVzRWxl
bWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogCiB2b2lkIEluc3BlY3Rvck5vZGVGaW5kZXI6
OnNlYXJjaFVzaW5nWFBhdGgoTm9kZSogcGFyZW50Tm9kZSkKIHsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBSZWZQdHI8WFBhdGhSZXN1bHQ+IHJlc3VsdCA9IHBhcmVudE5vZGUtPmRv
Y3VtZW50KCkuZXZhbHVhdGUobV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBwYXJlbnROb2RlLCBu
dWxscHRyLCBYUGF0aFJlc3VsdDo6T1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUsIG51bGxwdHIs
IGVjKTsKLSAgICBpZiAoZWMgfHwgIXJlc3VsdCkKKyAgICBhdXRvIGV2YWx1YXRlUmVzdWx0ID0g
cGFyZW50Tm9kZS0+ZG9jdW1lbnQoKS5ldmFsdWF0ZShtX3doaXRlc3BhY2VUcmltbWVkUXVlcnks
IHBhcmVudE5vZGUsIG51bGxwdHIsIFhQYXRoUmVzdWx0OjpPUkRFUkVEX05PREVfU05BUFNIT1Rf
VFlQRSwgbnVsbHB0cik7CisgICAgaWYgKGV2YWx1YXRlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSBldmFsdWF0ZVJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKIAotICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSA9IHJlc3VsdC0+c25hcHNo
b3RMZW5ndGgoZWMpOwotICAgIGlmIChlYykKKyAgICBhdXRvIHNuYXBzaG90TGVuZ3RoUmVzdWx0
ID0gcmVzdWx0LT5zbmFwc2hvdExlbmd0aCgpOworICAgIGlmIChzbmFwc2hvdExlbmd0aFJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOworICAgIHVuc2lnbmVkIHNpemUgPSBz
bmFwc2hvdExlbmd0aFJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAgIGZvciAodW5z
aWduZWQgbG9uZyBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBOb2RlKiBub2RlID0g
cmVzdWx0LT5zbmFwc2hvdEl0ZW0oaSwgZWMpOwotICAgICAgICBpZiAoZWMpCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBhdXRvIHNuYXBzaG90SXRl
bVJlc3VsdCA9IHJlc3VsdC0+c25hcHNob3RJdGVtKGkpOworICAgICAgICBpZiAoc25hcHNob3RJ
dGVtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBO
b2RlKiBub2RlID0gc25hcHNob3RJdGVtUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCiAg
ICAgICAgIGlmIChpczxBdHRyPigqbm9kZSkpCiAgICAgICAgICAgICBub2RlID0gZG93bmNhc3Q8
QXR0cj4oKm5vZGUpLm93bmVyRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL0RPTVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAppbmRl
eCA2NWE5MjMwNGE3ZDM5OTZmNzZmY2JlYzI4ZWRhYmMyMzdkOTc4MzBhLi4zNTE4N2ZlOWZhNTZh
NzgyODdhZDA4ZDk5OTA0MTA0OWFlNWY1ZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvRE9NUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcApA
QCAtMjEsMjcgKzIxLDI0IEBACiAKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ET01QYXJzZXI6OkRPTVBhcnNlcihEb2N1bWVudCYg
Y29udGV4dERvY3VtZW50KQoraW5saW5lIERPTVBhcnNlcjo6RE9NUGFyc2VyKERvY3VtZW50JiBj
b250ZXh0RG9jdW1lbnQpCiAgICAgOiBtX2NvbnRleHREb2N1bWVudChjb250ZXh0RG9jdW1lbnQu
Y3JlYXRlV2Vha1B0cigpKQogewogfQogCi1SZWZQdHI8RG9jdW1lbnQ+IERPTVBhcnNlcjo6cGFy
c2VGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZjxET01QYXJzZXI+IERPTVBhcnNlcjo6Y3JlYXRl
KERvY3VtZW50JiBjb250ZXh0RG9jdW1lbnQpCiB7Ci0gICAgaWYgKGNvbnRlbnRUeXBlICE9ICJ0
ZXh0L2h0bWwiCi0gICAgICAgICYmIGNvbnRlbnRUeXBlICE9ICJ0ZXh0L3htbCIKLSAgICAgICAg
JiYgY29udGVudFR5cGUgIT0gImFwcGxpY2F0aW9uL3htbCIKLSAgICAgICAgJiYgY29udGVudFR5
cGUgIT0gImFwcGxpY2F0aW9uL3hodG1sK3htbCIKLSAgICAgICAgJiYgY29udGVudFR5cGUgIT0g
ImltYWdlL3N2Zyt4bWwiKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NUGFyc2VyKGNv
bnRleHREb2N1bWVudCkpOworfQogCi0gICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCA9IERPTUlt
cGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb250ZW50VHlwZSwgbnVsbHB0ciwgVVJMKCkp
OworRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50Pj4gRE9NUGFyc2VyOjpwYXJzZUZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit7CisgICAg
aWYgKGNvbnRlbnRUeXBlICE9ICJ0ZXh0L2h0bWwiICYmIGNvbnRlbnRUeXBlICE9ICJ0ZXh0L3ht
bCIgJiYgY29udGVudFR5cGUgIT0gImFwcGxpY2F0aW9uL3htbCIgJiYgY29udGVudFR5cGUgIT0g
ImFwcGxpY2F0aW9uL3hodG1sK3htbCIgJiYgY29udGVudFR5cGUgIT0gImltYWdlL3N2Zyt4bWwi
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CisgICAgYXV0byBkb2N1
bWVudCA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb250ZW50VHlwZSwgbnVs
bHB0ciwgeyB9KTsKICAgICBpZiAobV9jb250ZXh0RG9jdW1lbnQpCiAgICAgICAgIGRvY3VtZW50
LT5zZXRDb250ZXh0RG9jdW1lbnQoKm1fY29udGV4dERvY3VtZW50LmdldCgpKTsKICAgICBkb2N1
bWVudC0+c2V0Q29udGVudChzdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L0RPTVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5oCmluZGV4IDgxN2Iw
MWE2ZDRjMmUxM2QzNjkyOTE4MTQyOWY5ODM0OTA3NzgxNGUuLjQyY2VlYjlmYTQ3MGNkNjI0NDM1
ZTY0MmQ4M2I5NGMxODQ0NGJmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9ET01Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBJbmMuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTE2LDI3ICsxNiwxOSBAQAogICogIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQogICovCiAKLSNpZm5kZWYgRE9NUGFyc2VyX2gKLSNkZWZpbmUgRE9NUGFyc2VyX2gK
KyNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlICJFeGNlcHRp
b25Pci5oIgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIERvY3VtZW50OwogCiBjbGFzcyBE
T01QYXJzZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxET01QYXJzZXI+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPERPTVBhcnNlcj4gY3JlYXRlKERvY3VtZW50JiBjb250ZXh0RG9jdW1lbnQpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01QYXJzZXIoY29udGV4dERvY3Vt
ZW50KSk7Ci0gICAgfQotCi0gICAgUmVmUHRyPERvY3VtZW50PiBwYXJzZUZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHN0YXRpYyBSZWY8RE9NUGFyc2VyPiBjcmVhdGUoRG9jdW1lbnQmIGNvbnRleHREb2N1bWVu
dCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50Pj4gcGFyc2VGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IERPTVBhcnNlcihEb2N1bWVudCYgY29udGV4dERvY3VtZW50KTsKQEAgLTQ1LDUgKzM3
LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0KLQotI2VuZGlmIC8vIFhNTFNlcmlhbGl6ZXIuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvRE9NUGFyc2VyLmlkbAppbmRleCAyOTAzZDE4N2EyM2ZlZGFjOTk4NmJjN2IxZjNhMjYw
YjBjNTNjMDNlLi45NjRlNGFkNzM4NWQ1Njc2NTkzNTJlYTRkN2NmMDczMTE0NTEyYjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvRE9NUGFyc2VyLmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNSArMjIsNSBAQAog
ICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCiAgICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZSwKIF0gaW50ZXJmYWNlIERPTVBhcnNlciB7Ci0gICAgW01heVRocm93TGVnYWN5RXhj
ZXB0aW9uLCBOZXdPYmplY3RdIERvY3VtZW50IHBhcnNlRnJvbVN0cmluZyhET01TdHJpbmcgc3Ry
LCBET01TdHJpbmcgY29udGVudFR5cGUpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2Jq
ZWN0XSBEb2N1bWVudCBwYXJzZUZyb21TdHJpbmcoRE9NU3RyaW5nIHN0cmluZywgRE9NU3RyaW5n
IGNvbnRlbnRUeXBlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhF
dmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXZhbHVhdG9yLmNwcAppbmRl
eCBmYzc1YzMxNmEyZDQ5MWRmMmZiN2JhYjE1ZmIyZjcwNmQ4NTA4NzdkLi4zYWExNDFiMjdhYTc0
ZjNiOWJlZmZkMjU3Y2RhMTdkNjBiYjYxNjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV2YWx1
YXRvci5jcHAKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgWFBhdGg7CiAKLVJlZlB0cjxYUGF0aEV4cHJlc3Npb24+IFhQYXRoRXZhbHVhdG9y
OjpjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPFhQYXRo
TlNSZXNvbHZlcj4mJiByZXNvbHZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxS
ZWY8WFBhdGhFeHByZXNzaW9uPj4gWFBhdGhFdmFsdWF0b3I6OmNyZWF0ZUV4cHJlc3Npb24oY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiYmIHJlc29sdmVy
KQogewotICAgIHJldHVybiBYUGF0aEV4cHJlc3Npb246OmNyZWF0ZUV4cHJlc3Npb24oZXhwcmVz
c2lvbiwgV1RGTW92ZShyZXNvbHZlciksIGVjKTsKKyAgICByZXR1cm4gWFBhdGhFeHByZXNzaW9u
OjpjcmVhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24sIFdURk1vdmUocmVzb2x2ZXIpKTsKIH0KIAog
UmVmPFhQYXRoTlNSZXNvbHZlcj4gWFBhdGhFdmFsdWF0b3I6OmNyZWF0ZU5TUmVzb2x2ZXIoTm9k
ZSogbm9kZVJlc29sdmVyKQpAQCAtNDcsMTkgKzQ3LDE2IEBAIFJlZjxYUGF0aE5TUmVzb2x2ZXI+
IFhQYXRoRXZhbHVhdG9yOjpjcmVhdGVOU1Jlc29sdmVyKE5vZGUqIG5vZGVSZXNvbHZlcikKICAg
ICByZXR1cm4gTmF0aXZlWFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUobm9kZVJlc29sdmVyKTsKIH0K
IAotUmVmUHRyPFhQYXRoUmVzdWx0PiBYUGF0aEV2YWx1YXRvcjo6ZXZhbHVhdGUoY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBOb2RlKiBjb250ZXh0Tm9kZSwgUmVmUHRyPFhQYXRoTlNSZXNvbHZl
cj4mJiByZXNvbHZlciwgdW5zaWduZWQgc2hvcnQgdHlwZSwgWFBhdGhSZXN1bHQqIHJlc3VsdCwg
RXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxSZWY8WFBhdGhSZXN1bHQ+PiBYUGF0aEV2
YWx1YXRvcjo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBOb2RlKiBjb250ZXh0
Tm9kZSwgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4mJiByZXNvbHZlciwgdW5zaWduZWQgc2hvcnQg
dHlwZSwgWFBhdGhSZXN1bHQqIHJlc3VsdCkKIHsKLSAgICBpZiAoIWlzVmFsaWRDb250ZXh0Tm9k
ZShjb250ZXh0Tm9kZSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgIGlmICghaXNWYWxpZENvbnRleHROb2RlKGNv
bnRleHROb2RlKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJS
IH07CiAKLSAgICBlYyA9IDA7Ci0gICAgUmVmUHRyPFhQYXRoRXhwcmVzc2lvbj4gZXhwciA9IGNy
ZWF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgV1RGTW92ZShyZXNvbHZlciksIGVjKTsKLSAgICBp
ZiAoZWMpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIHJldHVybiBleHByLT5l
dmFsdWF0ZShjb250ZXh0Tm9kZSwgdHlwZSwgcmVzdWx0LCBlYyk7CisgICAgYXV0byBjcmVhdGVS
ZXN1bHQgPSBjcmVhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24sIFdURk1vdmUocmVzb2x2ZXIpKTsK
KyAgICBpZiAoY3JlYXRlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gY3Jl
YXRlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIHJldHVybiBjcmVhdGVSZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCktPmV2YWx1YXRlKGNvbnRleHROb2RlLCB0eXBlLCByZXN1bHQp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFdmFsdWF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV2YWx1YXRvci5oCmluZGV4IGYyYmI1Y2I3NDRi
NzllNTYwZjgwYWU3M2I4OTA1YzFlNTkyMWE1NTYuLjRhNDc4NTQ4ZjQwMzJmN2MxOTczMWQ0MTc2
MWEzNDBlZTJjYjkwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV2YWx1
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV2YWx1YXRvci5oCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAyMDA1IEZyZXJpY2ggUmFhYmUgPHJhYWJlQGtkZS5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjQsMzUgKzI0LDI3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgWFBhdGhFdmFsdWF0b3JfaAotI2RlZmluZSBYUGF0aEV2YWx1YXRvcl9oCisjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKK2NsYXNz
IE5vZGU7CitjbGFzcyBYUGF0aEV4cHJlc3Npb247CitjbGFzcyBYUGF0aE5TUmVzb2x2ZXI7Citj
bGFzcyBYUGF0aFJlc3VsdDsKIAotICAgIGNsYXNzIE5vZGU7Ci0gICAgY2xhc3MgWFBhdGhFeHBy
ZXNzaW9uOwotICAgIGNsYXNzIFhQYXRoTlNSZXNvbHZlcjsKLSAgICBjbGFzcyBYUGF0aFJlc3Vs
dDsKK2NsYXNzIFhQYXRoRXZhbHVhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8WFBhdGhFdmFsdWF0
b3I+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFhQYXRoRXZhbHVhdG9yPiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFhQYXRoRXZhbHVhdG9yKTsgfQogCi0gICAgY2xhc3MgWFBh
dGhFdmFsdWF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxYUGF0aEV2YWx1YXRvcj4gewotICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxYUGF0aEV2YWx1YXRvcj4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBYUGF0aEV2YWx1YXRvcik7IH0KLSAgICAgICAgCi0gICAgICAgIFJl
ZlB0cjxYUGF0aEV4cHJlc3Npb24+IGNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiYmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
ICAgIFJlZjxYUGF0aE5TUmVzb2x2ZXI+IGNyZWF0ZU5TUmVzb2x2ZXIoTm9kZSogbm9kZVJlc29s
dmVyKTsKLSAgICAgICAgUmVmUHRyPFhQYXRoUmVzdWx0PiBldmFsdWF0ZShjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIE5vZGUqIGNvbnRleHROb2RlLAotICAgICAgICAgICAgUmVmUHRyPFhQYXRo
TlNSZXNvbHZlcj4mJiwgdW5zaWduZWQgc2hvcnQgdHlwZSwgWFBhdGhSZXN1bHQqLCBFeGNlcHRp
b25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPFhQYXRoRXhwcmVzc2lvbj4+IGNyZWF0ZUV4
cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8WFBhdGhOU1Jlc29sdmVy
PiYmKTsKKyAgICBSZWY8WFBhdGhOU1Jlc29sdmVyPiBjcmVhdGVOU1Jlc29sdmVyKE5vZGUqIG5v
ZGVSZXNvbHZlcik7CisgICAgRXhjZXB0aW9uT3I8UmVmPFhQYXRoUmVzdWx0Pj4gZXZhbHVhdGUo
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBOb2RlKiBjb250ZXh0Tm9kZSwgUmVmUHRyPFhQYXRo
TlNSZXNvbHZlcj4mJiwgdW5zaWduZWQgc2hvcnQgdHlwZSwgWFBhdGhSZXN1bHQqKTsKIAotICAg
IHByaXZhdGU6Ci0gICAgICAgIFhQYXRoRXZhbHVhdG9yKCkgeyB9Ci0gICAgfTsKK3ByaXZhdGU6
CisgICAgWFBhdGhFdmFsdWF0b3IoKSA9IGRlZmF1bHQ7Cit9OwogCiB9Ci0KLSNlbmRpZiAvLyBY
UGF0aEV2YWx1YXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFdmFs
dWF0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXZhbHVhdG9yLmlkbAppbmRleCA3
ZDEwNTgyMjA4NGZhYjY5MDExNjQ3MDFlNzczOGQxNjNmNDBjYWM1Li5mYWFkNjE4MmQ4OGU1OTdi
MDI4ZDM0MjM5YTJlODhjOWU1Y2MyYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhFdmFsdWF0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV2YWx1YXRv
ci5pZGwKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIElu
Yy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDE0ICsyMiwxMCBAQAogICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBYUGF0aEV2YWx1YXRvciB7CiAgICAgLy8gRklY
TUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25n
LgotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gWFBhdGhFeHByZXNzaW9uIGNyZWF0ZUV4
cHJlc3Npb24ob3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Npb24gPSAidW5kZWZpbmVkIiwgb3B0
aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlcik7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSBYUGF0aEV4cHJlc3Npb24gY3JlYXRlRXhwcmVzc2lvbihvcHRpb25hbCBET01TdHJpbmcgZXhw
cmVzc2lvbiA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVy
KTsKIAogICAgIFhQYXRoTlNSZXNvbHZlciBjcmVhdGVOU1Jlc29sdmVyKG9wdGlvbmFsIE5vZGU/
IG5vZGVSZXNvbHZlcik7CiAKICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVm
YXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0
aW9uXSBYUGF0aFJlc3VsdCBldmFsdWF0ZShvcHRpb25hbCBET01TdHJpbmcgZXhwcmVzc2lvbiA9
ICJ1bmRlZmluZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIE5vZGU/IGNv
bnRleHROb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFhQYXRoTlNSZXNv
bHZlcj8gcmVzb2x2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgdW5zaWdu
ZWQgc2hvcnQgdHlwZSA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgWFBh
dGhSZXN1bHQ/IGluUmVzdWx0KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFhQYXRoUmVzdWx0
IGV2YWx1YXRlKG9wdGlvbmFsIERPTVN0cmluZyBleHByZXNzaW9uID0gInVuZGVmaW5lZCIsIG9w
dGlvbmFsIE5vZGU/IGNvbnRleHROb2RlLCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29s
dmVyLCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1
bHQ/IGluUmVzdWx0KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhF
eHByZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uY3BwCmlu
ZGV4IDhkNTNmMDM5ZWQ3YWU0NjEwYzNiNTBlNjdiZGRmNGUyOGJiZmE2MDIuLjk5YWFjZmRlMTM0
OWUwYjYwZjZlZDY0ZWMzYmM5NTJkZjM0MGI5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aEV4cHJlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4
cHJlc3Npb24uY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiWFBhdGhQYXJzZXIuaCIK
ICNpbmNsdWRlICJYUGF0aFJlc3VsdC5oIgogI2luY2x1ZGUgIlhQYXRoVXRpbC5oIgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1
LDQ5ICs0NCw0NiBAQCBpbmxpbmUgWFBhdGhFeHByZXNzaW9uOjpYUGF0aEV4cHJlc3Npb24oc3Rk
Ojp1bmlxdWVfcHRyPFhQYXRoOjpFeHByZXNzaW9uPiBleHByZQogewogfQogCi1SZWZQdHI8WFBh
dGhFeHByZXNzaW9uPiBYUGF0aEV4cHJlc3Npb246OmNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiYmIHJlc29sdmVyLCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFJlZjxYUGF0aEV4cHJlc3Npb24+PiBYUGF0aEV4
cHJlc3Npb246OmNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQ
dHI8WFBhdGhOU1Jlc29sdmVyPiYmIHJlc29sdmVyKQogewotICAgIGF1dG8gcGFyc2VkRXhwcmVz
c2lvbiA9IFBhcnNlcjo6cGFyc2VTdGF0ZW1lbnQoZXhwcmVzc2lvbiwgV1RGTW92ZShyZXNvbHZl
ciksIGVjKTsKLSAgICBpZiAoIXBhcnNlZEV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBQYXJzZXI6OnBhcnNlU3RhdGVtZW50KGV4cHJl
c3Npb24sIFdURk1vdmUocmVzb2x2ZXIpKTsKKyAgICBpZiAocGFyc2VSZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybiBwYXJzZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBYUGF0aEV4cHJlc3Npb24oV1RGTW92ZShwYXJzZWRF
eHByZXNzaW9uKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhQYXRoRXhwcmVzc2lvbihw
YXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSkpOwogfQogCiBYUGF0aEV4cHJlc3Npb246
On5YUGF0aEV4cHJlc3Npb24oKQogewogfQogCi1SZWZQdHI8WFBhdGhSZXN1bHQ+IFhQYXRoRXhw
cmVzc2lvbjo6ZXZhbHVhdGUoTm9kZSogY29udGV4dE5vZGUsIHVuc2lnbmVkIHNob3J0IHR5cGUs
IFhQYXRoUmVzdWx0KiwgRXhjZXB0aW9uQ29kZSYgZWMpCisvLyBGSVhNRTogV2h5IGRvZXMgdGhp
cyB0YWtlIGFuIFhQYXRoUmVzdWx0IHRoYXQgaXQgaWdub3Jlcz8KK0V4Y2VwdGlvbk9yPFJlZjxY
UGF0aFJlc3VsdD4+IFhQYXRoRXhwcmVzc2lvbjo6ZXZhbHVhdGUoTm9kZSogY29udGV4dE5vZGUs
IHVuc2lnbmVkIHNob3J0IHR5cGUsIFhQYXRoUmVzdWx0KikKIHsKLSAgICBpZiAoIWlzVmFsaWRD
b250ZXh0Tm9kZShjb250ZXh0Tm9kZSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgIGlmICghaXNWYWxpZENvbnRl
eHROb2RlKGNvbnRleHROb2RlKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQ
T1JURURfRVJSIH07CiAKICAgICBFdmFsdWF0aW9uQ29udGV4dCYgZXZhbHVhdGlvbkNvbnRleHQg
PSBFeHByZXNzaW9uOjpldmFsdWF0aW9uQ29udGV4dCgpOwogICAgIGV2YWx1YXRpb25Db250ZXh0
Lm5vZGUgPSBjb250ZXh0Tm9kZTsKICAgICBldmFsdWF0aW9uQ29udGV4dC5zaXplID0gMTsKICAg
ICBldmFsdWF0aW9uQ29udGV4dC5wb3NpdGlvbiA9IDE7CiAgICAgZXZhbHVhdGlvbkNvbnRleHQu
aGFkVHlwZUNvbnZlcnNpb25FcnJvciA9IGZhbHNlOwotICAgIFJlZlB0cjxYUGF0aFJlc3VsdD4g
cmVzdWx0ID0gWFBhdGhSZXN1bHQ6OmNyZWF0ZSgmY29udGV4dE5vZGUtPmRvY3VtZW50KCksIG1f
dG9wRXhwcmVzc2lvbi0+ZXZhbHVhdGUoKSk7CisgICAgYXV0byByZXN1bHQgPSBYUGF0aFJlc3Vs
dDo6Y3JlYXRlKGNvbnRleHROb2RlLT5kb2N1bWVudCgpLCBtX3RvcEV4cHJlc3Npb24tPmV2YWx1
YXRlKCkpOwogICAgIGV2YWx1YXRpb25Db250ZXh0Lm5vZGUgPSBudWxscHRyOyAvLyBEbyBub3Qg
aG9sZCBhIHJlZmVyZW5jZSB0byB0aGUgY29udGV4dCBub2RlLCBhcyB0aGlzIG1heSBwcmV2ZW50
IHRoZSB3aG9sZSBkb2N1bWVudCBmcm9tIGJlaW5nIGRlc3Ryb3llZCBpbiB0aW1lLgogCiAgICAg
aWYgKGV2YWx1YXRpb25Db250ZXh0LmhhZFR5cGVDb252ZXJzaW9uRXJyb3IpIHsKICAgICAgICAg
Ly8gSXQgaXMgbm90IHNwZWNpZmllZCB3aGF0IHRvIGRvIGlmIHR5cGUgY29udmVyc2lvbiBmYWls
cyB3aGlsZSBldmFsdWF0aW5nIGFuIGV4cHJlc3Npb24sIGFuZCBJTlZBTElEX0VYUFJFU1NJT05f
RVJSIGlzIG5vdCBleGFjdGx5IHJpZ2h0CiAgICAgICAgIC8vIHdoZW4gdGhlIGZhaWx1cmUgaGFw
cGVucyBpbiBhbiBvdGhlcndpc2UgdmFsaWQgZXhwcmVzc2lvbiBiZWNhdXNlIG9mIGEgdmFyaWFi
bGUuIEJ1dCBYUGF0aEV2YWx1YXRvciBkb2VzIG5vdCBzdXBwb3J0IHZhcmlhYmxlcywgc28gaXQn
cyBjbG9zZSBlbm91Z2guCi0gICAgICAgIGVjID0gWFBhdGhFeGNlcHRpb246OklOVkFMSURfRVhQ
UkVTU0lPTl9FUlI7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgWFBhdGhFeGNlcHRpb246OklOVkFMSURfRVhQUkVTU0lPTl9FUlIgfTsKICAgICB9
CiAKICAgICBpZiAodHlwZSAhPSBYUGF0aFJlc3VsdDo6QU5ZX1RZUEUpIHsKLSAgICAgICAgZWMg
PSAwOwotICAgICAgICByZXN1bHQtPmNvbnZlcnRUbyh0eXBlLCBlYyk7Ci0gICAgICAgIGlmIChl
YykKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBhdXRvIGNvbnZlcnRUb1Jl
c3VsdCA9IHJlc3VsdC0+Y29udmVydFRvKHR5cGUpOworICAgICAgICBpZiAoY29udmVydFRvUmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1Jlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9u
LmgKaW5kZXggYjFlYWU4YTcxY2M3YmEwYjVmMTMzOTc2ZjA3OWIyODRiZTdhMDg5Zi4uNWE0Nzhh
ODJlNmIxYTI0MWVmOGRkYjY0YTYwNzMwZDA4ZmE4YjFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aEV4cHJlc3Npb24uaApAQCAtMjYsOCArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
ICJFeGNlcHRpb25Pci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDE3ICszNSwx
NSBAQCBjbGFzcyBYUGF0aE5TUmVzb2x2ZXI7CiBjbGFzcyBYUGF0aFJlc3VsdDsKIAogbmFtZXNw
YWNlIFhQYXRoIHsKLSAgICBjbGFzcyBFeHByZXNzaW9uOworY2xhc3MgRXhwcmVzc2lvbjsKIH0K
IAotdXNpbmcgRXhjZXB0aW9uQ29kZSA9IGludDsKLQogY2xhc3MgWFBhdGhFeHByZXNzaW9uIDog
cHVibGljIFJlZkNvdW50ZWQ8WFBhdGhFeHByZXNzaW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxYUGF0aEV4cHJlc3Npb24+IGNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiYmLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxYUGF0aEV4cHJlc3Npb24+PiBjcmVhdGVFeHByZXNz
aW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4mJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgflhQYXRoRXhwcmVzc2lvbigpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPFhQYXRoUmVzdWx0PiBldmFsdWF0ZShOb2RlKiBjb250ZXh0Tm9kZSwgdW5z
aWduZWQgc2hvcnQgdHlwZSwgWFBhdGhSZXN1bHQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFhQYXRoUmVzdWx0Pj4gZXZhbHVhdGUoTm9kZSog
Y29udGV4dE5vZGUsIHVuc2lnbmVkIHNob3J0IHR5cGUsIFhQYXRoUmVzdWx0Kik7CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgWFBhdGhFeHByZXNzaW9uKHN0ZDo6dW5pcXVlX3B0cjxYUGF0aDo6
RXhwcmVzc2lvbj4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVz
c2lvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmlkbAppbmRleCA2
NzRjZThkOTNkNTJmODhlMDk1MzJlOGU0YjEwMzM5OGIwMjM1NzBmLi4xOTc1OGRjMjMzNDVmM2Zl
MTZjZWIzMjk4YjFiMTM1YmVmMWJiZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhFeHByZXNzaW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNz
aW9uLmlkbApAQCAtMjIsNSArMjIsNSBAQAogICAgIEV4cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAog
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBYUGF0aEV4cHJlc3Np
b24gewotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gWFBhdGhSZXN1bHQgZXZhbHVhdGUo
b3B0aW9uYWwgTm9kZT8gY29udGV4dE5vZGUgPSBudWxsLCBvcHRpb25hbCB1bnNpZ25lZCBzaG9y
dCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0ID0gbnVsbCk7CisgICAg
W01heVRocm93RXhjZXB0aW9uXSBYUGF0aFJlc3VsdCBldmFsdWF0ZShvcHRpb25hbCBOb2RlPyBj
b250ZXh0Tm9kZSA9IG51bGwsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHR5cGUgPSAwLCBvcHRp
b25hbCBYUGF0aFJlc3VsdD8gaW5SZXN1bHQgPSBudWxsKTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLnkKaW5kZXggMDFjNmZlMGFhMGZkMWViNWQ4Mzk2Zjg0ZmE0Mjk2NTQxOWM5Nzg5ZC4u
YTNjYzQwMTM5ODM0OTMzZGZmNzBkYTc2YTkyNDcxNGYyMWJlODdiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aEdyYW1tYXIueQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlhQYXRoRnVuY3Rpb25z
LmgiCiAjaW5jbHVkZSAiWFBhdGhQYXJzZXIuaCIKICNpbmNsdWRlICJYUGF0aFBhdGguaCIKKyNp
bmNsdWRlICJYUGF0aFN0ZXAuaCIKICNpbmNsdWRlICJYUGF0aFZhcmlhYmxlUmVmZXJlbmNlLmgi
CiAKICNpZiBDT01QSUxFUihNU1ZDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKaW5kZXgg
NTM2NjE5ZTBhMmQ1NDFhYTVhMDAxMTkyOTEwNDNiNmMxNDNjZWEyMC4uNmE4MGRhMTAwY2FmZjhk
M2RjYTQyOTNhZDkzYzdlNjZiN2Q1MzBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiWFBhdGhFeGNlcHRpb24uaCIKICNpbmNsdWRl
ICJYUGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJYUGF0aFBhdGguaCIKKyNpbmNsdWRlICJY
UGF0aFN0ZXAuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAt
NDAyLDkgKzQwMyw2IEBAIGlubGluZSBQYXJzZXI6OlRva2VuIFBhcnNlcjo6bmV4dFRva2VuKCkK
IFBhcnNlcjo6UGFyc2VyKGNvbnN0IFN0cmluZyYgc3RhdGVtZW50LCBSZWZQdHI8WFBhdGhOU1Jl
c29sdmVyPiYmIHJlc29sdmVyKQogICAgIDogbV9kYXRhKHN0YXRlbWVudCkKICAgICAsIG1fcmVz
b2x2ZXIoV1RGTW92ZShyZXNvbHZlcikpCi0gICAgLCBtX25leHRQb3MoMCkKLSAgICAsIG1fbGFz
dFRva2VuVHlwZSgwKQotICAgICwgbV9zYXdOYW1lc3BhY2VFcnJvcihmYWxzZSkKIHsKIH0KIApA
QCAtNDUyLDI1ICs0NTAsMjAgQEAgYm9vbCBQYXJzZXI6OmV4cGFuZFF1YWxpZmllZE5hbWUoY29u
c3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBTdHJpbmcmIGxvY2FsTmFtZSwKICAgICAgICAgbG9j
YWxOYW1lID0gcXVhbGlmaWVkTmFtZS5zdWJzdHJpbmcoY29sb24gKyAxKTsKICAgICB9IGVsc2UK
ICAgICAgICAgbG9jYWxOYW1lID0gcXVhbGlmaWVkTmFtZTsKLQogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gUGFyc2VyOjpwYXJzZVN0YXRlbWVudChj
b25zdCBTdHJpbmcmIHN0YXRlbWVudCwgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4mJiByZXNvbHZl
ciwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4+IFBhcnNlcjo6cGFyc2VTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzdGF0ZW1lbnQsIFJl
ZlB0cjxYUGF0aE5TUmVzb2x2ZXI+JiYgcmVzb2x2ZXIpCiB7Ci0gICAgUGFyc2VyIHBhcnNlcihz
dGF0ZW1lbnQsIFdURk1vdmUocmVzb2x2ZXIpKTsKKyAgICBQYXJzZXIgcGFyc2VyIHsgc3RhdGVt
ZW50LCBXVEZNb3ZlKHJlc29sdmVyKSB9OwogCiAgICAgaW50IHBhcnNlRXJyb3IgPSB4cGF0aHl5
cGFyc2UocGFyc2VyKTsKIAotICAgIGlmIChwYXJzZXIubV9zYXdOYW1lc3BhY2VFcnJvcikgewot
ICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KKyAgICBpZiAocGFyc2VyLm1fc2F3TmFtZXNwYWNlRXJyb3IpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOQU1FU1BBQ0VfRVJSIH07CiAKLSAgICBpZiAocGFyc2VFcnJvcikgewotICAg
ICAgICBlYyA9IFhQYXRoRXhjZXB0aW9uOjpJTlZBTElEX0VYUFJFU1NJT05fRVJSOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKHBhcnNlRXJyb3IpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBYUGF0aEV4Y2VwdGlvbjo6SU5WQUxJRF9FWFBSRVNTSU9OX0VSUiB9
OwogCiAgICAgcmV0dXJuIFdURk1vdmUocGFyc2VyLm1fcmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoUGFyc2VyLmgKaW5kZXggZTQxOTU5MTYzZmQyOWExYjBhOTc5MmM2MGJhZmQxMjI5MDU4NTZi
Yi4uNjgyODljYWE1MmNjODc5N2Y5ZDBmMWIyZDYzMzlmY2VjN2JjMjgwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoUGFyc2VyLmgKQEAgLTI0LDY0ICsyNCw1OCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFhQYXRoUGFyc2VyX2gKLSNkZWZpbmUgWFBhdGhQYXJzZXJfaAorI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJYUGF0aFN0ZXAuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2lu
Y2x1ZGUgIlhQYXRoUHJlZGljYXRlLmgiCiAKIHVuaW9uIFlZU1RZUEU7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CitjbGFzcyBYUGF0aE5T
UmVzb2x2ZXI7CiAKLSAgICBjbGFzcyBYUGF0aE5TUmVzb2x2ZXI7CituYW1lc3BhY2UgWFBhdGgg
ewogCi0gICAgbmFtZXNwYWNlIFhQYXRoIHsKK2NsYXNzIFBhcnNlciB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUGFyc2VyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8c3Rk
Ojp1bmlxdWVfcHRyPEV4cHJlc3Npb24+PiBwYXJzZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHN0
YXRlbWVudCwgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4mJik7CiAKLSAgICAgICAgY2xhc3MgUGFy
c2VyIHsKLSAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhcnNlcik7Ci0gICAgICAg
IHB1YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4g
cGFyc2VTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzdGF0ZW1lbnQsIFJlZlB0cjxYUGF0aE5TUmVz
b2x2ZXI+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBpbnQgbGV4KFlZU1RZUEUmKTsKKyAgICBi
b29sIGV4cGFuZFF1YWxpZmllZE5hbWUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBTdHJp
bmcmIGxvY2FsTmFtZSwgU3RyaW5nJiBuYW1lc3BhY2VVUkkpOworICAgIHZvaWQgc2V0UGFyc2VS
ZXN1bHQoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgZXhwcmVzc2lvbikgeyBtX3Jlc3Vs
dCA9IFdURk1vdmUoZXhwcmVzc2lvbik7IH0KIAotICAgICAgICAgICAgaW50IGxleChZWVNUWVBF
Jik7Ci0gICAgICAgICAgICBib29sIGV4cGFuZFF1YWxpZmllZE5hbWUoY29uc3QgU3RyaW5nJiBx
dWFsaWZpZWROYW1lLCBTdHJpbmcmIGxvY2FsTmFtZSwgU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwot
ICAgICAgICAgICAgdm9pZCBzZXRQYXJzZVJlc3VsdChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lv
bj4gZXhwcmVzc2lvbikgeyBtX3Jlc3VsdCA9IFdURk1vdmUoZXhwcmVzc2lvbik7IH0KK3ByaXZh
dGU6CisgICAgUGFyc2VyKGNvbnN0IFN0cmluZyYsIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+JiYp
OwogCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBQYXJzZXIoY29uc3QgU3RyaW5nJiwg
UmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4mJik7CisgICAgc3RydWN0IFRva2VuOwogCi0gICAgICAg
ICAgICBzdHJ1Y3QgVG9rZW47CisgICAgYm9vbCBpc0JpbmFyeU9wZXJhdG9yQ29udGV4dCgpIGNv
bnN0OwogCi0gICAgICAgICAgICBib29sIGlzQmluYXJ5T3BlcmF0b3JDb250ZXh0KCkgY29uc3Q7
CisgICAgdm9pZCBza2lwV1MoKTsKKyAgICBUb2tlbiBtYWtlVG9rZW5BbmRBZHZhbmNlKGludCB0
eXBlLCBpbnQgYWR2YW5jZSA9IDEpOworICAgIFRva2VuIG1ha2VUb2tlbkFuZEFkdmFuY2UoaW50
IHR5cGUsIE51bWVyaWNPcDo6T3Bjb2RlLCBpbnQgYWR2YW5jZSA9IDEpOworICAgIFRva2VuIG1h
a2VUb2tlbkFuZEFkdmFuY2UoaW50IHR5cGUsIEVxVGVzdE9wOjpPcGNvZGUsIGludCBhZHZhbmNl
ID0gMSk7CisgICAgY2hhciBwZWVrQWhlYWRIZWxwZXIoKTsKKyAgICBjaGFyIHBlZWtDdXJIZWxw
ZXIoKTsKIAotICAgICAgICAgICAgdm9pZCBza2lwV1MoKTsKLSAgICAgICAgICAgIFRva2VuIG1h
a2VUb2tlbkFuZEFkdmFuY2UoaW50IHR5cGUsIGludCBhZHZhbmNlID0gMSk7Ci0gICAgICAgICAg
ICBUb2tlbiBtYWtlVG9rZW5BbmRBZHZhbmNlKGludCB0eXBlLCBOdW1lcmljT3A6Ok9wY29kZSwg
aW50IGFkdmFuY2UgPSAxKTsKLSAgICAgICAgICAgIFRva2VuIG1ha2VUb2tlbkFuZEFkdmFuY2Uo
aW50IHR5cGUsIEVxVGVzdE9wOjpPcGNvZGUsIGludCBhZHZhbmNlID0gMSk7Ci0gICAgICAgICAg
ICBjaGFyIHBlZWtBaGVhZEhlbHBlcigpOwotICAgICAgICAgICAgY2hhciBwZWVrQ3VySGVscGVy
KCk7CisgICAgVG9rZW4gbGV4U3RyaW5nKCk7CisgICAgVG9rZW4gbGV4TnVtYmVyKCk7CisgICAg
Ym9vbCBsZXhOQ05hbWUoU3RyaW5nJik7CisgICAgYm9vbCBsZXhRTmFtZShTdHJpbmcmKTsKIAot
ICAgICAgICAgICAgVG9rZW4gbGV4U3RyaW5nKCk7Ci0gICAgICAgICAgICBUb2tlbiBsZXhOdW1i
ZXIoKTsKLSAgICAgICAgICAgIGJvb2wgbGV4TkNOYW1lKFN0cmluZyYpOwotICAgICAgICAgICAg
Ym9vbCBsZXhRTmFtZShTdHJpbmcmKTsKKyAgICBUb2tlbiBuZXh0VG9rZW4oKTsKKyAgICBUb2tl
biBuZXh0VG9rZW5JbnRlcm5hbCgpOwogCi0gICAgICAgICAgICBUb2tlbiBuZXh0VG9rZW4oKTsK
LSAgICAgICAgICAgIFRva2VuIG5leHRUb2tlbkludGVybmFsKCk7CisgICAgY29uc3QgU3RyaW5n
JiBtX2RhdGE7CisgICAgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4gbV9yZXNvbHZlcjsKIAotICAg
ICAgICAgICAgY29uc3QgU3RyaW5nJiBtX2RhdGE7Ci0gICAgICAgICAgICBSZWZQdHI8WFBhdGhO
U1Jlc29sdmVyPiBtX3Jlc29sdmVyOworICAgIHVuc2lnbmVkIG1fbmV4dFBvcyB7IDAgfTsKKyAg
ICBpbnQgbV9sYXN0VG9rZW5UeXBlIHsgMCB9OwogCi0gICAgICAgICAgICB1bnNpZ25lZCBtX25l
eHRQb3M7Ci0gICAgICAgICAgICBpbnQgbV9sYXN0VG9rZW5UeXBlOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPiBtX3Jlc3VsdDsKKyAgICBib29sIG1fc2F3TmFtZXNwYWNlRXJyb3Ig
eyBmYWxzZSB9OworfTsKIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+
IG1fcmVzdWx0OwotICAgICAgICAgICAgYm9vbCBtX3Nhd05hbWVzcGFjZUVycm9yOwotICAgICAg
ICB9OwotCi0gICAgfQotfQotCi0jZW5kaWYKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJlc3VsdC5j
cHAKaW5kZXggOWNmNTc0NmRmOTMxMjc1MmI5NjczMWFjMzAzZjBiZjFhNjJiNDExNC4uNzUwOGMw
MjFjYWQ0OTBlMzllYjI5NjRiMmFmYzYyN2E1NmI0YzExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhS
ZXN1bHQuY3BwCkBAIC0zNiwxMCArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBYUGF0aDsKIAotWFBhdGhSZXN1bHQ6OlhQYXRoUmVzdWx0KERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgVmFsdWUmIHZhbHVlKQorWFBhdGhSZXN1bHQ6OlhQYXRoUmVzdWx0KERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgVmFsdWUmIHZhbHVlKQogICAgIDogbV92YWx1ZSh2YWx1
ZSkKLSAgICAsIG1fbm9kZVNldFBvc2l0aW9uKDApCi0gICAgLCBtX2RvbVRyZWVWZXJzaW9uKDAp
CiB7CiAgICAgc3dpdGNoIChtX3ZhbHVlLnR5cGUoKSkgewogICAgICAgICBjYXNlIFZhbHVlOjpC
b29sZWFuVmFsdWU6CkBAIC01NSw4ICs1Myw4IEBAIFhQYXRoUmVzdWx0OjpYUGF0aFJlc3VsdChE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFZhbHVlJiB2YWx1ZSkKICAgICAgICAgICAgIG1fcmVz
dWx0VHlwZSA9IFVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEU7CiAgICAgICAgICAgICBtX25v
ZGVTZXRQb3NpdGlvbiA9IDA7CiAgICAgICAgICAgICBtX25vZGVTZXQgPSBtX3ZhbHVlLnRvTm9k
ZVNldCgpOwotICAgICAgICAgICAgbV9kb2N1bWVudCA9IGRvY3VtZW50OwotICAgICAgICAgICAg
bV9kb21UcmVlVmVyc2lvbiA9IGRvY3VtZW50LT5kb21UcmVlVmVyc2lvbigpOworICAgICAgICAg
ICAgbV9kb2N1bWVudCA9ICZkb2N1bWVudDsKKyAgICAgICAgICAgIG1fZG9tVHJlZVZlcnNpb24g
PSBkb2N1bWVudC5kb21UcmVlVmVyc2lvbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY2LDUwICs2NCw0NSBAQCBYUGF0aFJlc3Vs
dDo6flhQYXRoUmVzdWx0KCkKIHsKIH0KIAotdm9pZCBYUGF0aFJlc3VsdDo6Y29udmVydFRvKHVu
c2lnbmVkIHNob3J0IHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4g
WFBhdGhSZXN1bHQ6OmNvbnZlcnRUbyh1bnNpZ25lZCBzaG9ydCB0eXBlKQogewogICAgIHN3aXRj
aCAodHlwZSkgewotICAgICAgICBjYXNlIEFOWV9UWVBFOgotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTlVNQkVSX1RZUEU6Ci0gICAgICAgICAgICBtX3Jlc3VsdFR5cGUgPSB0eXBl
OwotICAgICAgICAgICAgbV92YWx1ZSA9IG1fdmFsdWUudG9OdW1iZXIoKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFNUUklOR19UWVBFOgotICAgICAgICAgICAgbV9yZXN1bHRU
eXBlID0gdHlwZTsKLSAgICAgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVlLnRvU3RyaW5nKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCT09MRUFOX1RZUEU6Ci0gICAgICAgICAg
ICBtX3Jlc3VsdFR5cGUgPSB0eXBlOwotICAgICAgICAgICAgbV92YWx1ZSA9IG1fdmFsdWUudG9C
b29sZWFuKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBVTk9SREVSRURfTk9E
RV9JVEVSQVRPUl9UWVBFOgotICAgICAgICBjYXNlIFVOT1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZ
UEU6Ci0gICAgICAgIGNhc2UgQU5ZX1VOT1JERVJFRF9OT0RFX1RZUEU6Ci0gICAgICAgIGNhc2Ug
RklSU1RfT1JERVJFRF9OT0RFX1RZUEU6IC8vIFRoaXMgaXMgY29ycmVjdCAtIHNpbmdsZU5vZGVW
YWx1ZSgpIHdpbGwgdGFrZSBjYXJlIG9mIG9yZGVyaW5nLgotICAgICAgICAgICAgaWYgKCFtX3Zh
bHVlLmlzTm9kZVNldCgpKSB7Ci0gICAgICAgICAgICAgICAgZWMgPSBYUGF0aEV4Y2VwdGlvbjo6
VFlQRV9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgbV9yZXN1bHRUeXBlID0gdHlwZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFOgotICAgICAgICAgICAgaWYgKCFtX3ZhbHVl
LmlzTm9kZVNldCgpKSB7Ci0gICAgICAgICAgICAgICAgZWMgPSBYUGF0aEV4Y2VwdGlvbjo6VFlQ
RV9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgbV9ub2RlU2V0LnNvcnQoKTsKLSAgICAgICAgICAgIG1fcmVzdWx0VHlwZSA9IHR5cGU7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPUkRFUkVEX05PREVfU05BUFNIT1RfVFlQ
RToKLSAgICAgICAgICAgIGlmICghbV92YWx1ZS5pc05vZGVTZXQoKSkgewotICAgICAgICAgICAg
ICAgIGVjID0gWFBhdGhFeGNlcHRpb246OlRZUEVfRVJSOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdmFsdWUudG9Ob2RlU2V0KCkuc29ydCgp
OwotICAgICAgICAgICAgbV9yZXN1bHRUeXBlID0gdHlwZTsKLSAgICAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQU5ZX1RZUEU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlVNQkVSX1RZUEU6
CisgICAgICAgIG1fcmVzdWx0VHlwZSA9IHR5cGU7CisgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVl
LnRvTnVtYmVyKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU1RSSU5HX1RZUEU6CisgICAg
ICAgIG1fcmVzdWx0VHlwZSA9IHR5cGU7CisgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVlLnRvU3Ry
aW5nKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQk9PTEVBTl9UWVBFOgorICAgICAgICBt
X3Jlc3VsdFR5cGUgPSB0eXBlOworICAgICAgICBtX3ZhbHVlID0gbV92YWx1ZS50b0Jvb2xlYW4o
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBF
OgorICAgIGNhc2UgVU5PUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRToKKyAgICBjYXNlIEFOWV9V
Tk9SREVSRURfTk9ERV9UWVBFOgorICAgIGNhc2UgRklSU1RfT1JERVJFRF9OT0RFX1RZUEU6IC8v
IFRoaXMgaXMgY29ycmVjdCAtIHNpbmdsZU5vZGVWYWx1ZSgpIHdpbGwgdGFrZSBjYXJlIG9mIG9y
ZGVyaW5nLgorICAgICAgICBpZiAoIW1fdmFsdWUuaXNOb2RlU2V0KCkpCisgICAgICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgWFBhdGhFeGNlcHRpb246OlRZUEVfRVJSIH07CisgICAgICAgIG1f
cmVzdWx0VHlwZSA9IHR5cGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT1JERVJFRF9OT0RF
X0lURVJBVE9SX1RZUEU6CisgICAgICAgIGlmICghbV92YWx1ZS5pc05vZGVTZXQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBYUGF0aEV4Y2VwdGlvbjo6VFlQRV9FUlIgfTsKKyAg
ICAgICAgbV9ub2RlU2V0LnNvcnQoKTsKKyAgICAgICAgbV9yZXN1bHRUeXBlID0gdHlwZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBPUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRToKKyAgICAg
ICAgaWYgKCFtX3ZhbHVlLmlzTm9kZVNldCgpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFhQYXRoRXhjZXB0aW9uOjpUWVBFX0VSUiB9OworICAgICAgICBtX3ZhbHVlLnRvTm9kZVNl
dCgpLnNvcnQoKTsKKyAgICAgICAgbV9yZXN1bHRUeXBlID0gdHlwZTsKKyAgICAgICAgYnJlYWs7
CiAgICAgfQorICAgIHJldHVybiB7IH07CiB9CiAKIHVuc2lnbmVkIHNob3J0IFhQYXRoUmVzdWx0
OjpyZXN1bHRUeXBlKCkgY29uc3QKQEAgLTExNyw0MSArMTEwLDMzIEBAIHVuc2lnbmVkIHNob3J0
IFhQYXRoUmVzdWx0OjpyZXN1bHRUeXBlKCkgY29uc3QKICAgICByZXR1cm4gbV9yZXN1bHRUeXBl
OwogfQogCi1kb3VibGUgWFBhdGhSZXN1bHQ6Om51bWJlclZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdAorRXhjZXB0aW9uT3I8ZG91YmxlPiBYUGF0aFJlc3VsdDo6bnVtYmVyVmFsdWUoKSBj
b25zdAogewotICAgIGlmIChyZXN1bHRUeXBlKCkgIT0gTlVNQkVSX1RZUEUpIHsKLSAgICAgICAg
ZWMgPSBYUGF0aEV4Y2VwdGlvbjo6VFlQRV9FUlI7Ci0gICAgICAgIHJldHVybiAwLjA7Ci0gICAg
fQorICAgIGlmIChyZXN1bHRUeXBlKCkgIT0gTlVNQkVSX1RZUEUpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBYUGF0aEV4Y2VwdGlvbjo6VFlQRV9FUlIgfTsKICAgICByZXR1cm4gbV92YWx1
ZS50b051bWJlcigpOwogfQogCi1TdHJpbmcgWFBhdGhSZXN1bHQ6OnN0cmluZ1ZhbHVlKEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAorRXhjZXB0aW9uT3I8U3RyaW5nPiBYUGF0aFJlc3VsdDo6c3Ry
aW5nVmFsdWUoKSBjb25zdAogewotICAgIGlmIChyZXN1bHRUeXBlKCkgIT0gU1RSSU5HX1RZUEUp
IHsKLSAgICAgICAgZWMgPSBYUGF0aEV4Y2VwdGlvbjo6VFlQRV9FUlI7Ci0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLSAgICB9CisgICAgaWYgKHJlc3VsdFR5cGUoKSAhPSBTVFJJTkdfVFlQRSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFhQYXRoRXhjZXB0aW9uOjpUWVBFX0VSUiB9Owog
ICAgIHJldHVybiBtX3ZhbHVlLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgWFBhdGhSZXN1bHQ6OmJv
b2xlYW5WYWx1ZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK0V4Y2VwdGlvbk9yPGJvb2w+IFhQ
YXRoUmVzdWx0Ojpib29sZWFuVmFsdWUoKSBjb25zdAogewotICAgIGlmIChyZXN1bHRUeXBlKCkg
IT0gQk9PTEVBTl9UWVBFKSB7Ci0gICAgICAgIGVjID0gWFBhdGhFeGNlcHRpb246OlRZUEVfRVJS
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGlmIChyZXN1bHRUeXBlKCkgIT0g
Qk9PTEVBTl9UWVBFKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgWFBhdGhFeGNlcHRpb246
OlRZUEVfRVJSIH07CiAgICAgcmV0dXJuIG1fdmFsdWUudG9Cb29sZWFuKCk7CiB9CiAKLU5vZGUq
IFhQYXRoUmVzdWx0OjpzaW5nbGVOb2RlVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitF
eGNlcHRpb25PcjxOb2RlKj4gWFBhdGhSZXN1bHQ6OnNpbmdsZU5vZGVWYWx1ZSgpIGNvbnN0CiB7
Ci0gICAgaWYgKHJlc3VsdFR5cGUoKSAhPSBBTllfVU5PUkRFUkVEX05PREVfVFlQRSAmJiByZXN1
bHRUeXBlKCkgIT0gRklSU1RfT1JERVJFRF9OT0RFX1RZUEUpIHsKLSAgICAgICAgZWMgPSBYUGF0
aEV4Y2VwdGlvbjo6VFlQRV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgCi0gICAg
Y29uc3QgTm9kZVNldCYgbm9kZXMgPSBtX3ZhbHVlLnRvTm9kZVNldCgpOworICAgIGlmIChyZXN1
bHRUeXBlKCkgIT0gQU5ZX1VOT1JERVJFRF9OT0RFX1RZUEUgJiYgcmVzdWx0VHlwZSgpICE9IEZJ
UlNUX09SREVSRURfTk9ERV9UWVBFKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgWFBhdGhF
eGNlcHRpb246OlRZUEVfRVJSIH07CisKKyAgICBhdXRvJiBub2RlcyA9IG1fdmFsdWUudG9Ob2Rl
U2V0KCk7CiAgICAgaWYgKHJlc3VsdFR5cGUoKSA9PSBGSVJTVF9PUkRFUkVEX05PREVfVFlQRSkK
ICAgICAgICAgcmV0dXJuIG5vZGVzLmZpcnN0Tm9kZSgpOwogICAgIGVsc2UKQEAgLTE2Nyw0OSAr
MTUyLDM3IEBAIGJvb2wgWFBhdGhSZXN1bHQ6OmludmFsaWRJdGVyYXRvclN0YXRlKCkgY29uc3QK
ICAgICByZXR1cm4gbV9kb2N1bWVudC0+ZG9tVHJlZVZlcnNpb24oKSAhPSBtX2RvbVRyZWVWZXJz
aW9uOwogfQogCi11bnNpZ25lZCBYUGF0aFJlc3VsdDo6c25hcHNob3RMZW5ndGgoRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0CitFeGNlcHRpb25Pcjx1bnNpZ25lZD4gWFBhdGhSZXN1bHQ6OnNuYXBz
aG90TGVuZ3RoKCkgY29uc3QKIHsKLSAgICBpZiAocmVzdWx0VHlwZSgpICE9IFVOT1JERVJFRF9O
T0RFX1NOQVBTSE9UX1RZUEUgJiYgcmVzdWx0VHlwZSgpICE9IE9SREVSRURfTk9ERV9TTkFQU0hP
VF9UWVBFKSB7Ci0gICAgICAgIGVjID0gWFBhdGhFeGNlcHRpb246OlRZUEVfRVJSOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9CisgICAgaWYgKHJlc3VsdFR5cGUoKSAhPSBVTk9SREVSRURfTk9E
RV9TTkFQU0hPVF9UWVBFICYmIHJlc3VsdFR5cGUoKSAhPSBPUkRFUkVEX05PREVfU05BUFNIT1Rf
VFlQRSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFhQYXRoRXhjZXB0aW9uOjpUWVBFX0VS
UiB9OwogCiAgICAgcmV0dXJuIG1fdmFsdWUudG9Ob2RlU2V0KCkuc2l6ZSgpOwogfQogCi1Ob2Rl
KiBYUGF0aFJlc3VsdDo6aXRlcmF0ZU5leHQoRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25P
cjxOb2RlKj4gWFBhdGhSZXN1bHQ6Oml0ZXJhdGVOZXh0KCkKIHsKLSAgICBpZiAocmVzdWx0VHlw
ZSgpICE9IFVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUgJiYgcmVzdWx0VHlwZSgpICE9IE9S
REVSRURfTk9ERV9JVEVSQVRPUl9UWVBFKSB7Ci0gICAgICAgIGVjID0gWFBhdGhFeGNlcHRpb246
OlRZUEVfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGludmFs
aWRJdGVyYXRvclN0YXRlKCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAgIGlmIChtX25vZGVTZXRQb3NpdGlvbiAr
IDEgPiBtX25vZGVTZXQuc2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAocmVzdWx0
VHlwZSgpICE9IFVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUgJiYgcmVzdWx0VHlwZSgpICE9
IE9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
WFBhdGhFeGNlcHRpb246OlRZUEVfRVJSIH07CisKKyAgICBpZiAoaW52YWxpZEl0ZXJhdG9yU3Rh
dGUoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07CiAK
LSAgICBOb2RlKiBub2RlID0gbV9ub2RlU2V0W21fbm9kZVNldFBvc2l0aW9uXTsKLSAgICAKLSAg
ICBtX25vZGVTZXRQb3NpdGlvbisrOworICAgIGlmIChtX25vZGVTZXRQb3NpdGlvbiA+PSBtX25v
ZGVTZXQuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBub2Rl
OworICAgIHJldHVybiBtX25vZGVTZXRbbV9ub2RlU2V0UG9zaXRpb24rK107CiB9CiAKLU5vZGUq
IFhQYXRoUmVzdWx0OjpzbmFwc2hvdEl0ZW0odW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUm
IGVjKQorRXhjZXB0aW9uT3I8Tm9kZSo+IFhQYXRoUmVzdWx0OjpzbmFwc2hvdEl0ZW0odW5zaWdu
ZWQgaW5kZXgpCiB7Ci0gICAgaWYgKHJlc3VsdFR5cGUoKSAhPSBVTk9SREVSRURfTk9ERV9TTkFQ
U0hPVF9UWVBFICYmIHJlc3VsdFR5cGUoKSAhPSBPUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRSkg
ewotICAgICAgICBlYyA9IFhQYXRoRXhjZXB0aW9uOjpUWVBFX0VSUjsKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotICAgIAotICAgIGNvbnN0IE5vZGVTZXQmIG5vZGVzID0gbV92YWx1ZS50b05v
ZGVTZXQoKTsKKyAgICBpZiAocmVzdWx0VHlwZSgpICE9IFVOT1JERVJFRF9OT0RFX1NOQVBTSE9U
X1RZUEUgJiYgcmVzdWx0VHlwZSgpICE9IE9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgWFBhdGhFeGNlcHRpb246OlRZUEVfRVJSIH07CisKKyAg
ICBhdXRvJiBub2RlcyA9IG1fdmFsdWUudG9Ob2RlU2V0KCk7CiAgICAgaWYgKGluZGV4ID49IG5v
ZGVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCiAgICAgcmV0dXJuIG5vZGVzW2luZGV4XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhSZXN1
bHQuaAppbmRleCBiYzAyYTE1NjcxNDI2MTI4OWY0MTk4YTMxNDRjMGM2ODExMGI0Y2E0Li5hZWE4
NTM1YzMwOTYxNzA0NGFmNjIwNzFlZmI5MzU5Njg1NTA1MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhS
ZXN1bHQuaApAQCAtMjYsNjAgKzI2LDU0IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
RXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJYUGF0aFZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLSAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworY2xhc3MgWFBhdGhSZXN1bHQg
OiBwdWJsaWMgUmVmQ291bnRlZDxYUGF0aFJlc3VsdD4geworcHVibGljOgorICAgIGVudW0gWFBh
dGhSZXN1bHRUeXBlIHsKKyAgICAgICAgQU5ZX1RZUEUgPSAwLAorICAgICAgICBOVU1CRVJfVFlQ
RSA9IDEsCisgICAgICAgIFNUUklOR19UWVBFID0gMiwKKyAgICAgICAgQk9PTEVBTl9UWVBFID0g
MywKKyAgICAgICAgVU5PUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSA9IDQsCisgICAgICAgIE9S
REVSRURfTk9ERV9JVEVSQVRPUl9UWVBFID0gNSwKKyAgICAgICAgVU5PUkRFUkVEX05PREVfU05B
UFNIT1RfVFlQRSA9IDYsCisgICAgICAgIE9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFID0gNywK
KyAgICAgICAgQU5ZX1VOT1JERVJFRF9OT0RFX1RZUEUgPSA4LAorICAgICAgICBGSVJTVF9PUkRF
UkVEX05PREVfVFlQRSA9IDkKKyAgICB9OwogCi0gICAgY2xhc3MgRG9jdW1lbnQ7Ci0gICAgY2xh
c3MgTm9kZTsKKyAgICBzdGF0aWMgUmVmPFhQYXRoUmVzdWx0PiBjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBYUGF0aDo6VmFsdWUmIHZhbHVlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFhQYXRoUmVzdWx0KGRvY3VtZW50LCB2YWx1ZSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgflhQ
YXRoUmVzdWx0KCk7CiAKLSAgICBjbGFzcyBYUGF0aFJlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFhQYXRoUmVzdWx0PiB7Ci0gICAgcHVibGljOgotICAgICAgICBlbnVtIFhQYXRoUmVzdWx0VHlw
ZSB7Ci0gICAgICAgICAgICBBTllfVFlQRSA9IDAsCi0gICAgICAgICAgICBOVU1CRVJfVFlQRSA9
IDEsCi0gICAgICAgICAgICBTVFJJTkdfVFlQRSA9IDIsCi0gICAgICAgICAgICBCT09MRUFOX1RZ
UEUgPSAzLAotICAgICAgICAgICAgVU5PUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSA9IDQsCi0g
ICAgICAgICAgICBPUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSA9IDUsCi0gICAgICAgICAgICBV
Tk9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFID0gNiwKLSAgICAgICAgICAgIE9SREVSRURfTk9E
RV9TTkFQU0hPVF9UWVBFID0gNywKLSAgICAgICAgICAgIEFOWV9VTk9SREVSRURfTk9ERV9UWVBF
ID0gOCwKLSAgICAgICAgICAgIEZJUlNUX09SREVSRURfTk9ERV9UWVBFID0gOQotICAgICAgICB9
OwotICAgICAgICAKLSAgICAgICAgc3RhdGljIFJlZjxYUGF0aFJlc3VsdD4gY3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgWFBhdGg6OlZhbHVlJiB2YWx1ZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBYUGF0aFJlc3VsdChkb2N1bWVudCwgdmFsdWUpKTsgfQotICAgICAgICBXRUJDT1JF
X0VYUE9SVCB+WFBhdGhSZXN1bHQoKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgY29udmVydFRv
KHVuc2lnbmVkIHNob3J0IHR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBjb252ZXJ0VG8odW5zaWduZWQgc2hvcnQgdHlwZSk7CiAKLSAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdW5zaWduZWQgc2hvcnQgcmVzdWx0VHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHVuc2lnbmVkIHNob3J0IHJlc3VsdFR5cGUoKSBjb25zdDsKIAotICAgICAgICBXRUJDT1JF
X0VYUE9SVCBkb3VibGUgbnVtYmVyVmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nVmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGJvb2xlYW5WYWx1ZShFeGNlcHRpb25Db2Rl
JikgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIE5vZGUqIHNpbmdsZU5vZGVWYWx1ZShF
eGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8ZG91
YmxlPiBudW1iZXJWYWx1ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PFN0cmluZz4gc3RyaW5nVmFsdWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRp
b25Pcjxib29sPiBib29sZWFuVmFsdWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25PcjxOb2RlKj4gc2luZ2xlTm9kZVZhbHVlKCkgY29uc3Q7CiAKLSAgICAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBpbnZhbGlkSXRlcmF0b3JTdGF0ZSgpIGNvbnN0OwotICAgICAgICBXRUJD
T1JFX0VYUE9SVCB1bnNpZ25lZCBzbmFwc2hvdExlbmd0aChFeGNlcHRpb25Db2RlJikgY29uc3Q7
Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIE5vZGUqIGl0ZXJhdGVOZXh0KEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgTm9kZSogc25hcHNob3RJdGVtKHVuc2lnbmVkIGlu
ZGV4LCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpbnZhbGlkSXRl
cmF0b3JTdGF0ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHVuc2ln
bmVkPiBzbmFwc2hvdExlbmd0aCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlv
bk9yPE5vZGUqPiBpdGVyYXRlTmV4dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PE5vZGUqPiBzbmFwc2hvdEl0ZW0odW5zaWduZWQgaW5kZXgpOwogCi0gICAgICAgIGNvbnN0IFhQ
YXRoOjpWYWx1ZSYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgY29uc3Qg
WFBhdGg6OlZhbHVlJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAotICAgIHBy
aXZhdGU6Ci0gICAgICAgIFhQYXRoUmVzdWx0KERvY3VtZW50KiwgY29uc3QgWFBhdGg6OlZhbHVl
Jik7Ci0gICAgICAgIAotICAgICAgICBYUGF0aDo6VmFsdWUgbV92YWx1ZTsKLSAgICAgICAgdW5z
aWduZWQgbV9ub2RlU2V0UG9zaXRpb247Ci0gICAgICAgIFhQYXRoOjpOb2RlU2V0IG1fbm9kZVNl
dDsgLy8gRklYTUU6IHdoeSBkdXBsaWNhdGUgdGhlIG5vZGUgc2V0IHN0b3JlZCBpbiBtX3ZhbHVl
PwotICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX3Jlc3VsdFR5cGU7Ci0gICAgICAgIFJlZlB0cjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKLSAgICAgICAgdWludDY0X3QgbV9kb21UcmVlVmVyc2lvbjsK
LSAgICB9OworcHJpdmF0ZToKKyAgICBYUGF0aFJlc3VsdChEb2N1bWVudCYsIGNvbnN0IFhQYXRo
OjpWYWx1ZSYpOworCisgICAgWFBhdGg6OlZhbHVlIG1fdmFsdWU7CisgICAgdW5zaWduZWQgbV9u
b2RlU2V0UG9zaXRpb24geyAwIH07CisgICAgWFBhdGg6Ok5vZGVTZXQgbV9ub2RlU2V0OyAvLyBG
SVhNRTogd2h5IGR1cGxpY2F0ZSB0aGUgbm9kZSBzZXQgc3RvcmVkIGluIG1fdmFsdWU/CisgICAg
dW5zaWduZWQgc2hvcnQgbV9yZXN1bHRUeXBlOworICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1
bWVudDsKKyAgICB1aW50NjRfdCBtX2RvbVRyZWVWZXJzaW9uIHsgMCB9OworfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVz
dWx0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJlc3VsdC5pZGwKaW5kZXggY2RhY2I2
NjZhYTY2NTdkM2NjNGUwYTU2OGQ2MDY3YmVjNjMxZTM0NS4uOTc1MmNmNjg3YmI2NTZlNTlkMWI3
MTVmMDE0MDM0NmY1NWY2YzExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
UmVzdWx0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhSZXN1bHQuaWRsCkBAIC0z
NCwxNCArMzQsMTQgQEAKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBGSVJTVF9PUkRFUkVEX05P
REVfVFlQRSA9IDk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVz
dWx0VHlwZTsKLSAgICBbR2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIG51bWJlclZhbHVlOwotICAgIFtHZXR0ZXJNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzdHJpbmdW
YWx1ZTsKLSAgICBbR2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIGJvb2xlYW5WYWx1ZTsKLSAgICBbR2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlIHNpbmdsZU5vZGVWYWx1ZTsKKyAgICBbR2V0
dGVyTWF5VGhyb3dFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91
YmxlIG51bWJlclZhbHVlOworICAgIFtHZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBzdHJpbmdWYWx1ZTsKKyAgICBbR2V0dGVyTWF5VGhyb3dFeGNl
cHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGJvb2xlYW5WYWx1ZTsKKyAgICBbR2V0
dGVyTWF5VGhyb3dFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlIHNpbmdsZU5vZGVW
YWx1ZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGludmFsaWRJdGVyYXRvclN0
YXRlOwotICAgIFtHZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgc25hcHNob3RMZW5ndGg7CisgICAgW0dldHRlck1heVRocm93RXhj
ZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBzbmFwc2hvdExlbmd0aDsK
IAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gTm9kZSBpdGVyYXRlTmV4dCgpOwotICAg
IFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gTm9kZSBzbmFwc2hvdEl0ZW0ob3B0aW9uYWwgdW5z
aWduZWQgbG9uZyBpbmRleCA9IDApOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZSBpdGVy
YXRlTmV4dCgpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZSBzbmFwc2hvdEl0ZW0ob3B0
aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01E
b2N1bWVudC5tbQppbmRleCBhMmEwY2FhNTI3MmM5Yzk4ODY2YWE0ZjA5YmNjMDhhYTYxMTVkNzJl
Li5mZTE5NmYxNDk2NTE2OTNhZGQ0NDk3OWIyMDljMzc5YWRlOGU2MzlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvRE9NL0RPTURvY3VtZW50Lm1tCkBAIC02MTIsMjMgKzYxMiwxOSBAQCAtIChET01DU1NTdHls
ZURlY2xhcmF0aW9uICopZ2V0T3ZlcnJpZGVTdHlsZTooRE9NRWxlbWVudCAqKWVsZW1lbnQgcHNl
dWRvRWxlbWVudAogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Z2V0T3ZlcnJpZGVT
dHlsZShjb3JlKGVsZW1lbnQpLCBwc2V1ZG9FbGVtZW50KSkpOwogfQogCitzdGF0aWMgUmVmUHRy
PFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gd3JhcChpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPiBy
ZXNvbHZlcikKK3sKKyAgICBpZiAoIXJlc29sdmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBpZiAoW3Jlc29sdmVyIGlzTWVtYmVyT2ZDbGFzczpbRE9NTmF0aXZlWFBhdGhOU1Jlc29s
dmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBjb3JlKHN0YXRpY19jYXN0PERPTU5hdGl2ZVhQ
YXRoTlNSZXNvbHZlciAqPihyZXNvbHZlcikpOworICAgIHJldHVybiBET01DdXN0b21YUGF0aE5T
UmVzb2x2ZXI6OmNyZWF0ZShyZXNvbHZlcik7Cit9CisKIC0gKERPTVhQYXRoRXhwcmVzc2lvbiAq
KWNyZWF0ZUV4cHJlc3Npb246KE5TU3RyaW5nICopZXhwcmVzc2lvbiByZXNvbHZlcjooaWQgPERP
TVhQYXRoTlNSZXNvbHZlcj4pcmVzb2x2ZXIKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyKiBuYXRpdmVSZXNv
bHZlciA9IDA7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY3VzdG9tUmVz
b2x2ZXI7Ci0gICAgaWYgKHJlc29sdmVyKSB7Ci0gICAgICAgIGlmIChbcmVzb2x2ZXIgaXNNZW1i
ZXJPZkNsYXNzOltET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgY2xhc3NdXSkKLSAgICAgICAgICAg
IG5hdGl2ZVJlc29sdmVyID0gY29yZShzdGF0aWNfY2FzdDxET01OYXRpdmVYUGF0aE5TUmVzb2x2
ZXIgKj4ocmVzb2x2ZXIpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjdXN0b21SZXNv
bHZlciA9IERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRlKHJlc29sdmVyKTsKLSAgICAg
ICAgICAgIG5hdGl2ZVJlc29sdmVyID0gV1RGOjpnZXRQdHIoY3VzdG9tUmVzb2x2ZXIpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERP
TVhQYXRoRXhwcmVzc2lvbiAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUV4
cHJlc3Npb24oZXhwcmVzc2lvbiwgV1RGOjpnZXRQdHIobmF0aXZlUmVzb2x2ZXIpLCBlYykpKTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJu
IGtpdChyYWlzZU9uRE9NRXJyb3IoSU1QTC0+Y3JlYXRlRXhwcmVzc2lvbihleHByZXNzaW9uLCB3
cmFwKHJlc29sdmVyKSkpLnB0cigpKTsKIH0KIAogLSAoaWQgPERPTVhQYXRoTlNSZXNvbHZlcj4p
Y3JlYXRlTlNSZXNvbHZlcjooRE9NTm9kZSAqKW5vZGVSZXNvbHZlcgpAQCAtNjQwLDIwICs2MzYs
NyBAQCAtIChpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPiljcmVhdGVOU1Jlc29sdmVyOihET01Ob2Rl
ICopbm9kZVJlc29sdmVyCiAtIChET01YUGF0aFJlc3VsdCAqKWV2YWx1YXRlOihOU1N0cmluZyAq
KWV4cHJlc3Npb24gY29udGV4dE5vZGU6KERPTU5vZGUgKiljb250ZXh0Tm9kZSByZXNvbHZlcjoo
aWQgPERPTVhQYXRoTlNSZXNvbHZlcj4pcmVzb2x2ZXIgdHlwZToodW5zaWduZWQgc2hvcnQpdHlw
ZSBpblJlc3VsdDooRE9NWFBhdGhSZXN1bHQgKilpblJlc3VsdAogewogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIq
IG5hdGl2ZVJlc29sdmVyID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVy
PiBjdXN0b21SZXNvbHZlcjsKLSAgICBpZiAocmVzb2x2ZXIpIHsKLSAgICAgICAgaWYgKFtyZXNv
bHZlciBpc01lbWJlck9mQ2xhc3M6W0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBjbGFzc11dKQot
ICAgICAgICAgICAgbmF0aXZlUmVzb2x2ZXIgPSBjb3JlKHN0YXRpY19jYXN0PERPTU5hdGl2ZVhQ
YXRoTlNSZXNvbHZlciAqPihyZXNvbHZlcikpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IGN1c3RvbVJlc29sdmVyID0gRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUocmVzb2x2
ZXIpOwotICAgICAgICAgICAgbmF0aXZlUmVzb2x2ZXIgPSBXVEY6OmdldFB0cihjdXN0b21SZXNv
bHZlcik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgRE9NWFBhdGhSZXN1bHQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5l
dmFsdWF0ZShleHByZXNzaW9uLCBjb3JlKGNvbnRleHROb2RlKSwgV1RGOjpnZXRQdHIobmF0aXZl
UmVzb2x2ZXIpLCB0eXBlLCBjb3JlKGluUmVzdWx0KSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBraXQocmFpc2VPbkRPTUVy
cm9yKElNUEwtPmV2YWx1YXRlKGV4cHJlc3Npb24sIGNvcmUoY29udGV4dE5vZGUpLCB3cmFwKHJl
c29sdmVyKSwgdHlwZSwgY29yZShpblJlc3VsdCkpKS5wdHIoKSk7CiB9CiAKIC0gKEJPT0wpZXhl
Y0NvbW1hbmQ6KE5TU3RyaW5nICopY29tbWFuZCB1c2VySW50ZXJmYWNlOihCT09MKXVzZXJJbnRl
cmZhY2UgdmFsdWU6KE5TU3RyaW5nICopdmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9ET01YUGF0aEV4cHJlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9N
WFBhdGhFeHByZXNzaW9uLm1tCmluZGV4IDMxZTc5MDczMzQ3NmM4ZTllOTAxOGJkMGQ2YjhjZjRk
ZGUzMjRkM2IuLjBlMGUwNjk1NzYzYWQxMTVjNGJiZTMyNDczZWFlODQwM2U0YmMwNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01YUGF0aEV4cHJlc3Npb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTVhQYXRoRXhwcmVzc2lvbi5tbQpAQCAtNTUsMTAgKzU1
LDcgQEAgLSAodm9pZClkZWFsbG9jCiAtIChET01YUGF0aFJlc3VsdCAqKWV2YWx1YXRlOihET01O
b2RlICopY29udGV4dE5vZGUgdHlwZToodW5zaWduZWQgc2hvcnQpdHlwZSBpblJlc3VsdDooRE9N
WFBhdGhSZXN1bHQgKilpblJlc3VsdAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Y
UGF0aFJlc3VsdCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmV2YWx1YXRlKGNvcmUo
Y29udGV4dE5vZGUpLCB0eXBlLCBjb3JlKGluUmVzdWx0KSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBraXQocmFpc2VPbkRP
TUVycm9yKElNUEwtPmV2YWx1YXRlKGNvcmUoY29udGV4dE5vZGUpLCB0eXBlLCBjb3JlKGluUmVz
dWx0KSkpLnB0cigpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
RE9NL0RPTVhQYXRoUmVzdWx0Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTVhQYXRoUmVz
dWx0Lm1tCmluZGV4IDE0ZDdlNDE1ZGExYmY4NGRmY2Y3NDlhYmRiOGMxZGVkODFhZjViMDYuLjll
MjFmZmM4MWFkNzQwYmRlYzkwYmExOWJiZmYwNjk5YTY1MTE3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0RPTS9ET01YUGF0aFJlc3VsdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9ET00vRE9NWFBhdGhSZXN1bHQubW0KQEAgLTYwLDM3ICs2MCwyNSBAQCAtICh1bnNpZ25lZCBz
aG9ydClyZXN1bHRUeXBlCiAtIChkb3VibGUpbnVtYmVyVmFsdWUKIHsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgZG91YmxlIHJlc3VsdCA9IElNUEwtPm51bWJlclZhbHVlKGVjKTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJhaXNl
T25ET01FcnJvcihJTVBMLT5udW1iZXJWYWx1ZSgpKTsKIH0KIAogLSAoTlNTdHJpbmcgKilzdHJp
bmdWYWx1ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOU1N0cmluZyAqcmVzdWx0ID0g
SU1QTC0+c3RyaW5nVmFsdWUoZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmFpc2VPbkRPTUVycm9yKElNUEwtPnN0cmluZ1ZhbHVl
KCkpOwogfQogCiAtIChCT09MKWJvb2xlYW5WYWx1ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBCT09MIHJlc3VsdCA9IElNUEwtPmJvb2xlYW5WYWx1ZShlYyk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByYWlzZU9uRE9NRXJy
b3IoSU1QTC0+Ym9vbGVhblZhbHVlKCkpOwogfQogCiAtIChET01Ob2RlICopc2luZ2xlTm9kZVZh
bHVlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IGtpdChX
VEY6OmdldFB0cihJTVBMLT5zaW5nbGVOb2RlVmFsdWUoZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBraXQocmFpc2VPbkRPTUVy
cm9yKElNUEwtPnNpbmdsZU5vZGVWYWx1ZSgpKSk7CiB9CiAKIC0gKEJPT0wpaW52YWxpZEl0ZXJh
dG9yU3RhdGUKQEAgLTEwMiwzNSArOTAsMjYgQEAgLSAoQk9PTClpbnZhbGlkSXRlcmF0b3JTdGF0
ZQogLSAodW5zaWduZWQpc25hcHNob3RMZW5ndGgKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgdW5zaWduZWQgcmVzdWx0ID0gSU1QTC0+c25hcHNob3RMZW5ndGgoZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmFpc2VPbkRP
TUVycm9yKElNUEwtPnNuYXBzaG90TGVuZ3RoKCkpOwogfQogCiAtIChET01Ob2RlICopaXRlcmF0
ZU5leHQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0ga2l0
KFdURjo6Z2V0UHRyKElNUEwtPml0ZXJhdGVOZXh0KGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ga2l0KHJhaXNlT25ET01FcnJv
cihJTVBMLT5pdGVyYXRlTmV4dCgpKSk7CiB9CiAKIC0gKERPTU5vZGUgKilzbmFwc2hvdEl0ZW06
KHVuc2lnbmVkKWluZGV4CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJl
c3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5zbmFwc2hvdEl0ZW0oaW5kZXgsIGVjKSkpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4g
a2l0KHJhaXNlT25ET01FcnJvcihJTVBMLT5zbmFwc2hvdEl0ZW0oaW5kZXgpKSk7CiB9CiAKIEBl
bmQKIAogV2ViQ29yZTo6WFBhdGhSZXN1bHQqIGNvcmUoRE9NWFBhdGhSZXN1bHQgKndyYXBwZXIp
CiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlhQYXRo
UmVzdWx0Kj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7CisgICAgcmV0dXJuIHdyYXBwZXIgPyBy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlhQYXRoUmVzdWx0Kj4od3JhcHBlci0+X2ludGVybmFs
KSA6IG51bGxwdHI7CiB9CiAKIERPTVhQYXRoUmVzdWx0ICpraXQoV2ViQ29yZTo6WFBhdGhSZXN1
bHQqIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50
LmNwcAppbmRleCBlMjgyYWI0OWY4ZjRkN2FhZGEwNTNjYjE5ZTIyNjE1MThlM2FiMzM3Li4xNWE1
ODk3MDExOTU1ZGFhNzkwNjRhYzUyZDM5Y2E0ZTBmNWI3ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50LmNwcApAQCAtMTE2OSwxMyArMTE2OSwxMyBA
QCBXZWJLaXRET01YUGF0aEV4cHJlc3Npb24qIHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2V4
cHJlc3Npb24oV2ViS2l0RE9NRG9jdW1lbgogICAgIFdlYkNvcmU6OkRvY3VtZW50KiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZEV4cHJlc3Npb24g
PSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoZXhwcmVzc2lvbik7CiAgICAgUmVmUHRyPFdlYkNvcmU6
OlhQYXRoTlNSZXNvbHZlcj4gY29udmVydGVkUmVzb2x2ZXIgPSBXZWJLaXQ6OmNvcmUocmVzb2x2
ZXIpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpYUGF0aEV4cHJlc3Npb24+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5j
cmVhdGVFeHByZXNzaW9uKGNvbnZlcnRlZEV4cHJlc3Npb24sIFdURjo6Z2V0UHRyKGNvbnZlcnRl
ZFJlc29sdmVyKSwgZWMpKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5j
cmVhdGVFeHByZXNzaW9uKGNvbnZlcnRlZEV4cHJlc3Npb24sIFdURk1vdmUoY29udmVydGVkUmVz
b2x2ZXIpKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJr
X2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29i
amVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAKIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciogd2Vi
a2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfbnNfcmVzb2x2ZXIoV2ViS2l0RE9NRG9jdW1lbnQqIHNl
bGYsIFdlYktpdERPTU5vZGUqIG5vZGVSZXNvbHZlcikKQEAgLTEyMDMsMTMgKzEyMDMsMTMgQEAg
V2ViS2l0RE9NWFBhdGhSZXN1bHQqIHdlYmtpdF9kb21fZG9jdW1lbnRfZXZhbHVhdGUoV2ViS2l0
RE9NRG9jdW1lbnQqIHNlbGYsIGNvbnMKICAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRDb250
ZXh0Tm9kZSA9IFdlYktpdDo6Y29yZShjb250ZXh0Tm9kZSk7CiAgICAgUmVmUHRyPFdlYkNvcmU6
OlhQYXRoTlNSZXNvbHZlcj4gY29udmVydGVkUmVzb2x2ZXIgPSBXZWJLaXQ6OmNvcmUocmVzb2x2
ZXIpOwogICAgIFdlYkNvcmU6OlhQYXRoUmVzdWx0KiBjb252ZXJ0ZWRJblJlc3VsdCA9IFdlYktp
dDo6Y29yZShpblJlc3VsdCk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlhQYXRoUmVzdWx0PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQ
dHIoaXRlbS0+ZXZhbHVhdGUoY29udmVydGVkRXhwcmVzc2lvbiwgY29udmVydGVkQ29udGV4dE5v
ZGUsIFdURjo6Z2V0UHRyKGNvbnZlcnRlZFJlc29sdmVyKSwgdHlwZSwgY29udmVydGVkSW5SZXN1
bHQsIGVjKSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+ZXZhbHVhdGUo
Y29udmVydGVkRXhwcmVzc2lvbiwgY29udmVydGVkQ29udGV4dE5vZGUsIFdURk1vdmUoY29udmVy
dGVkUmVzb2x2ZXIpLCB0eXBlLCBjb252ZXJ0ZWRJblJlc3VsdCk7CisgICAgaWYgKHJlc3VsdC5o
YXNFeGNlcHRpb24oKSkgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24gZWNkZXNjKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAgICAgZ19z
ZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIp
LCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJl
dHVybiBXZWJLaXQ6OmtpdChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkucHRyKCkpOwogfQog
CiBnYm9vbGVhbiB3ZWJraXRfZG9tX2RvY3VtZW50X2V4ZWNfY29tbWFuZChXZWJLaXRET01Eb2N1
bWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIGNvbW1hbmQsIGdib29sZWFuIHVzZXJJbnRlcmZhY2Us
IGNvbnN0IGdjaGFyKiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NWFBhdGhFeHByZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NWFBhdGhFeHByZXNzaW9uLmNwcAppbmRleCA0ZDdjOTM5YTkxMmYyZGY4ZWQzYjg1
NDE4ZWZlM2VmNWYzYzVhZmNlLi45ZWQ5MzdiNTNkM2IxOTQwZDc3OWQxMzY4YWI4Nzg1ZDg5MTdk
MjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTVhQYXRoRXhwcmVzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01YUGF0
aEV4cHJlc3Npb24uY3BwCkBAIC0xMTQsMTIgKzExNCwxMiBAQCBXZWJLaXRET01YUGF0aFJlc3Vs
dCogd2Via2l0X2RvbV94cGF0aF9leHByZXNzaW9uX2V2YWx1YXRlKFdlYktpdERPTVhQYXRoRXhw
cmVzcwogICAgIFdlYkNvcmU6OlhQYXRoRXhwcmVzc2lvbiogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKICAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRDb250ZXh0Tm9kZSA9IFdlYktpdDo6
Y29yZShjb250ZXh0Tm9kZSk7CiAgICAgV2ViQ29yZTo6WFBhdGhSZXN1bHQqIGNvbnZlcnRlZElu
UmVzdWx0ID0gV2ViS2l0Ojpjb3JlKGluUmVzdWx0KTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6WFBhdGhSZXN1bHQ+IGdvYmplY3RSZXN1
bHQgPSBXVEY6OmdldFB0cihpdGVtLT5ldmFsdWF0ZShjb252ZXJ0ZWRDb250ZXh0Tm9kZSwgdHlw
ZSwgY29udmVydGVkSW5SZXN1bHQsIGVjKSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVzdWx0
ID0gaXRlbS0+ZXZhbHVhdGUoY29udmVydGVkQ29udGV4dE5vZGUsIHR5cGUsIGNvbnZlcnRlZElu
UmVzdWx0KTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJr
X2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29i
amVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NWFBhdGhSZXN1bHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01YUGF0aFJlc3VsdC5jcHAKaW5kZXggOTE5ZjBhYWYyZmFjYzlhMTYyOTQzOGEy
OWZmZGVjMmZiMWQwOGFlMC4uZmM3NWMwN2NlYTlmMWNhZDRhMjgzOTQ2ZmE5YzJlZDIxOTU2OGRl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01YUGF0aFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01YUGF0aFJlc3Vs
dC5jcHAKQEAgLTIyNCwxMyArMjI0LDEzIEBAIFdlYktpdERPTU5vZGUqIHdlYmtpdF9kb21feHBh
dGhfcmVzdWx0X2l0ZXJhdGVfbmV4dChXZWJLaXRET01YUGF0aFJlc3VsdCogc2VsZiwKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1hQQVRIX1JFU1VMVChzZWxmKSwgMCk7
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IsIDApOwogICAgIFdl
YkNvcmU6OlhQYXRoUmVzdWx0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBnb2Jq
ZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+aXRlcmF0ZU5leHQoZWMpKTsKLSAgICBpZiAo
ZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhl
Yyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5pdGVyYXRlTmV4dCgpOworICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAg
IGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9E
T00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAg
ICByZXR1cm4gV2ViS2l0OjpraXQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIH0KIAog
V2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV94cGF0aF9yZXN1bHRfc25hcHNob3RfaXRlbShXZWJL
aXRET01YUGF0aFJlc3VsdCogc2VsZiwgZ3Vsb25nIGluZGV4LCBHRXJyb3IqKiBlcnJvcikKQEAg
LTIzOSwxMyArMjM5LDEzIEBAIFdlYktpdERPTU5vZGUqIHdlYmtpdF9kb21feHBhdGhfcmVzdWx0
X3NuYXBzaG90X2l0ZW0oV2ViS2l0RE9NWFBhdGhSZXN1bHQqIHNlbGYsCiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19YUEFUSF9SRVNVTFQoc2VsZiksIDApOwogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yLCAwKTsKICAgICBXZWJDb3JlOjpY
UGF0aFJlc3VsdCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gZ29iamVjdFJlc3Vs
dCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnNuYXBzaG90SXRlbShpbmRleCwgZWMpKTsKLSAgICBpZiAo
ZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhl
Yyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5zbmFwc2hvdEl0ZW0oaW5kZXgpOworICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CiAg
ICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldF
QktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgp
KTsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
IH0KIAogZ3VzaG9ydCB3ZWJraXRfZG9tX3hwYXRoX3Jlc3VsdF9nZXRfcmVzdWx0X3R5cGUoV2Vi
S2l0RE9NWFBhdGhSZXN1bHQqIHNlbGYpCkBAIC0yNjMsMTMgKzI2MywxMyBAQCBnZG91YmxlIHdl
YmtpdF9kb21feHBhdGhfcmVzdWx0X2dldF9udW1iZXJfdmFsdWUoV2ViS2l0RE9NWFBhdGhSZXN1
bHQqIHNlbGYsIEdFcgogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfWFBB
VEhfUkVTVUxUKHNlbGYpLCAwKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghZXJyb3IgfHwg
ISplcnJvciwgMCk7CiAgICAgV2ViQ29yZTo6WFBhdGhSZXN1bHQqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZ2RvdWJs
ZSByZXN1bHQgPSBpdGVtLT5udW1iZXJWYWx1ZShlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8g
cmVzdWx0ID0gaXRlbS0+bnVtYmVyVmFsdWUoKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2Mo
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9s
aXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5j
b2RlLCBlY2Rlc2MubmFtZSk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiB9CiAKIGdj
aGFyKiB3ZWJraXRfZG9tX3hwYXRoX3Jlc3VsdF9nZXRfc3RyaW5nX3ZhbHVlKFdlYktpdERPTVhQ
YXRoUmVzdWx0KiBzZWxmLCBHRXJyb3IqKiBlcnJvcikKQEAgLTI3OCw5ICsyNzgsMTAgQEAgZ2No
YXIqIHdlYmtpdF9kb21feHBhdGhfcmVzdWx0X2dldF9zdHJpbmdfdmFsdWUoV2ViS2l0RE9NWFBh
dGhSZXN1bHQqIHNlbGYsIEdFcnIKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9N
X0lTX1hQQVRIX1JFU1VMVChzZWxmKSwgMCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWVy
cm9yIHx8ICEqZXJyb3IsIDApOwogICAgIFdlYkNvcmU6OlhQYXRoUmVzdWx0KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnN0cmluZ1ZhbHVlKGVj
KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0tPnN0cmluZ1Zh
bHVlKCk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcocmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKTsKIH0KIAogZ2Jvb2xlYW4gd2Via2l0X2RvbV94cGF0aF9yZXN1bHRfZ2V0X2Jv
b2xlYW5fdmFsdWUoV2ViS2l0RE9NWFBhdGhSZXN1bHQqIHNlbGYsIEdFcnJvcioqIGVycm9yKQpA
QCAtMjg5LDEzICsyOTAsMTMgQEAgZ2Jvb2xlYW4gd2Via2l0X2RvbV94cGF0aF9yZXN1bHRfZ2V0
X2Jvb2xlYW5fdmFsdWUoV2ViS2l0RE9NWFBhdGhSZXN1bHQqIHNlbGYsIEcKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1hQQVRIX1JFU1VMVChzZWxmKSwgRkFMU0UpOwog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yLCBGQUxTRSk7CiAgICAg
V2ViQ29yZTo6WFBhdGhSZXN1bHQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+
Ym9vbGVhblZhbHVlKGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5i
b29sZWFuVmFsdWUoKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBn
X3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFt
ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogfQogCiBXZWJLaXRET01Ob2Rl
KiB3ZWJraXRfZG9tX3hwYXRoX3Jlc3VsdF9nZXRfc2luZ2xlX25vZGVfdmFsdWUoV2ViS2l0RE9N
WFBhdGhSZXN1bHQqIHNlbGYsIEdFcnJvcioqIGVycm9yKQpAQCAtMzA0LDEzICszMDUsMTMgQEAg
V2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV94cGF0aF9yZXN1bHRfZ2V0X3NpbmdsZV9ub2RlX3Zh
bHVlKFdlYktpdERPTVhQYXRoUmVzdWwKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
RE9NX0lTX1hQQVRIX1JFU1VMVChzZWxmKSwgMCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
IWVycm9yIHx8ICEqZXJyb3IsIDApOwogICAgIFdlYkNvcmU6OlhQYXRoUmVzdWx0KiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRl
bS0+c2luZ2xlTm9kZVZhbHVlKGVjKSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVzdWx0ID0g
aXRlbS0+c2luZ2xlTm9kZVZhbHVlKCk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkg
eworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJh
bChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwg
ZWNkZXNjLm5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJu
IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6Omtp
dChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOwogfQogCiBnYm9vbGVhbiB3ZWJraXRfZG9t
X3hwYXRoX3Jlc3VsdF9nZXRfaW52YWxpZF9pdGVyYXRvcl9zdGF0ZShXZWJLaXRET01YUGF0aFJl
c3VsdCogc2VsZikKQEAgLTMyOCwxMiArMzI5LDExIEBAIGd1bG9uZyB3ZWJraXRfZG9tX3hwYXRo
X3Jlc3VsdF9nZXRfc25hcHNob3RfbGVuZ3RoKFdlYktpdERPTVhQYXRoUmVzdWx0KiBzZWxmLCBH
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19YUEFUSF9SRVNVTFQoc2Vs
ZiksIDApOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yLCAwKTsK
ICAgICBXZWJDb3JlOjpYUGF0aFJlc3VsdCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBndWxvbmcgcmVzdWx0ID0gaXRl
bS0+c25hcHNob3RMZW5ndGgoZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0
ZW0tPnNuYXBzaG90TGVuZ3RoKCk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewor
ICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChl
cnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNk
ZXNjLm5hbWUpOwogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292057</attachid>
            <date>2016-10-19 01:55:45 -0700</date>
            <delta_ts>2016-10-19 10:00:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163656-20161019015210.patch</filename>
            <type>text/plain</type>
            <size>63410</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYyMGE4Yjg0ZGMxZDJm
ZTk5MDZjNzcxNjI0ZDBlZjhjYWNiZWY2Yi4uYzhiY2EyMmQ3NGMyYzIyMzY0ZDRiMDQxNDc2NzQ4
ZDE3ZTc0MGRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE2LTEwLTE4ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFhQYXRoIGZyb20gRXhj
ZXB0aW9uQ29kZSB0byBFeGNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzY1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpjcmVhdGVFeHByZXNzaW9uKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNyZWF0ZU5TUmVzb2x2ZXIpOiBSZXR1cm4gUmVmLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmV2YWx1YXRlKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMgZm9yIHRoZSBmdW5jdGlv
bnMgYWJvdmUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOb2RlRmluZGVyOjpzZWFyY2hVc2luZ1hQYXRo
KTogQ2FsbCBYUGF0aCBmdW5jdGlvbnMKKyAgICAgICAgd2l0aCBuZXcgaW50ZXJmYWNlLgorCisg
ICAgICAgICogeG1sL0RPTVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6
OkRPTVBhcnNlcik6IE1hcmtlZCBpbmxpbmUuCisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6
OmNyZWF0ZSk6IE1vdmVkIGhlcmUgZnJvbSBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjpET01Q
YXJzZXI6OnBhcnNlRnJvbVN0cmluZyk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiB4bWwv
RE9NUGFyc2VyLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZXMuCisgICAgICAgICogeG1sL0RP
TVBhcnNlci5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbi4KKworICAgICAgICAqIHhtbC9Y
UGF0aEV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aEV2YWx1YXRvcjo6Y3Jl
YXRlRXhwcmVzc2lvbik6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OlhQYXRo
RXZhbHVhdG9yOjpldmFsdWF0ZSk6IERpdHRvLgorICAgICAgICAqIHhtbC9YUGF0aEV2YWx1YXRv
ci5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIHhtbC9YUGF0aEV2YWx1
YXRvci5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiB4bWwvWFBh
dGhFeHByZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoRXhwcmVzc2lvbjo6Y3Jl
YXRlRXhwcmVzc2lvbik6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OlhQYXRo
RXhwcmVzc2lvbjo6ZXZhbHVhdGUpOiBEaXR0by4KKyAgICAgICAgKiB4bWwvWFBhdGhFeHByZXNz
aW9uLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZXMuCisgICAgICAgICogeG1sL1hQYXRoRXhw
cmVzc2lvbi5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiB4bWwv
WFBhdGhHcmFtbWFyLnk6IEFkZGVkIGluY2x1ZGUgb2YgWFBhdGhTdGVwLmguCisKKyAgICAgICAg
KiB4bWwvWFBhdGhQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlBhcnNlcjo6
UGFyc2VyKTogSW5pdGlhbGl6ZSB0aHJlZSBzY2FsYXIgZGF0YSBtZW1iZXJzCisgICAgICAgIGlu
IHRoZSBjbGFzcyBkZWZpbml0aW9uIHJhdGhlciB0aGFuIGhlcmUuCisgICAgICAgIChXZWJDb3Jl
OjpYUGF0aDo6UGFyc2VyOjpwYXJzZVN0YXRlbWVudCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKiB4bWwvWFBhdGhQYXJzZXIuaDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKworICAg
ICAgICAqIHhtbC9YUGF0aFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aFJlc3Vs
dDo6WFBhdGhSZXN1bHQpOiBVc2UgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYQorICAgICAgICBw
b2ludGVyIGZvciB0aGUgZG9jdW1lbnQuIEFsYW8gaW5pdGlhbGl6ZSB0d28gc2NhbGFyIGRhdGEg
bWVtYmVycworICAgICAgICBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiByYXRoZXIgdGhhbiBoZXJl
LgorICAgICAgICAoV2ViQ29yZTo6WFBhdGhSZXN1bHQ6OmNvbnZlcnRUbyk6IFVzZSBFeGNlcHRp
b25Pci4KKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoUmVzdWx0OjpudW1iZXJWYWx1ZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6WFBhdGhSZXN1bHQ6OnN0cmluZ1ZhbHVlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpYUGF0aFJlc3VsdDo6Ym9vbGVhblZhbHVlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpYUGF0aFJlc3VsdDo6c2luZ2xlTm9kZVZhbHVlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpYUGF0aFJlc3VsdDo6c25hcHNob3RMZW5ndGgpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlhQYXRoUmVzdWx0OjppdGVyYXRlTmV4dCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6WFBhdGhSZXN1bHQ6OnNuYXBzaG90SXRlbSk6IERpdHRvLgorICAgICAgICAqIHht
bC9YUGF0aFJlc3VsdC5oOiBVcGRhdGVkIGZvciB0aGUgY2hhbmdlcyBhYm92ZS4KKyAgICAgICAg
KiB4bWwvWFBhdGhSZXN1bHQuaWRsOiBVc2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCiAyMDE2
LTEwLTE5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8g
Zml4IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDE1ODE5YjgzODM2OGZhZmY1MmU0NGEzZmUw
ZTFlNWQ3OTI3MzYzODMuLmQxM2Y5NjE1OGUwMzExYjEzZjcyNTM0MjBkMTkyNmFhMzdmYmYyYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNi0xMC0xOCAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBYUGF0aCBmcm9tIEV4Y2VwdGlv
bkNvZGUgdG8gRXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjM2NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIERPTS9ET01Eb2N1bWVudC5tbToKKyAgICAgICAgKHdyYXApOiBBZGRlZC4g
SGVscGVyIGZ1bmN0aW9uIGZvciB3cmFwcGluZyBhIHJlc29sdmVyLgorICAgICAgICAoLVtET01E
b2N1bWVudCBjcmVhdGVFeHByZXNzaW9uOnJlc29sdmVyOl0pOiBVc2UgcmFpc2VPbkRPTUVycm9y
LgorICAgICAgICAoLVtET01Eb2N1bWVudCBldmFsdWF0ZTpjb250ZXh0Tm9kZTpyZXNvbHZlcjp0
eXBlOmluUmVzdWx0Ol0pOiBEaXR0by4KKyAgICAgICAgKiBET00vRE9NWFBhdGhFeHByZXNzaW9u
Lm1tOgorICAgICAgICAoLVtET01YUGF0aEV4cHJlc3Npb24gZXZhbHVhdGU6dHlwZTppblJlc3Vs
dDpdKTogRGl0dG8uCisgICAgICAgICogRE9NL0RPTVhQYXRoUmVzdWx0Lm1tOgorICAgICAgICAo
LVtET01YUGF0aFJlc3VsdCBudW1iZXJWYWx1ZV0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NWFBh
dGhSZXN1bHQgc3RyaW5nVmFsdWVdKTogRGl0dG8uCisgICAgICAgICgtW0RPTVhQYXRoUmVzdWx0
IGJvb2xlYW5WYWx1ZV0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NWFBhdGhSZXN1bHQgc2luZ2xl
Tm9kZVZhbHVlXSk6IERpdHRvLgorICAgICAgICAoLVtET01YUGF0aFJlc3VsdCBzbmFwc2hvdExl
bmd0aF0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NWFBhdGhSZXN1bHQgaXRlcmF0ZU5leHRdKTog
RGl0dG8uCisgICAgICAgICgtW0RPTVhQYXRoUmVzdWx0IHNuYXBzaG90SXRlbTpdKTogRGl0dG8u
CisKIDIwMTYtMTAtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXBsYWNlIHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50IHdpdGggV1RGOjpWYXJpYW50IChvciBz
aW1pbGFyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGE2YjkwODNjOTQ1Zjg4Y2JhMTZiNWIwMzlhMzQyODY3NjA1
ZGI1YjQuLmY3MjRkOTE2MWJmZTA0Y2E4MjM5YzU1MDAzOTk0MjY2OGM1ZTk0NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNi0xMC0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBYUGF0aCBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2
NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnQuY3Bw
OgorICAgICAgICAod2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfZXhwcmVzc2lvbik6IFVzZSBF
eGNlcHRpb25Pci4KKyAgICAgICAgKHdlYmtpdF9kb21fZG9jdW1lbnRfZXZhbHVhdGUpOiBEaXR0
by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVhQYXRoRXhwcmVzc2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3hwYXRoX2V4cHJl
c3Npb25fZXZhbHVhdGUpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVhQYXRoUmVzdWx0LmNwcDoKKyAgICAgICAgKHdlYmtp
dF9kb21feHBhdGhfcmVzdWx0X2l0ZXJhdGVfbmV4dCk6IERpdHRvLgorICAgICAgICAod2Via2l0
X2RvbV94cGF0aF9yZXN1bHRfc25hcHNob3RfaXRlbSk6IERpdHRvLgorICAgICAgICAod2Via2l0
X2RvbV94cGF0aF9yZXN1bHRfZ2V0X251bWJlcl92YWx1ZSk6IERpdHRvLgorICAgICAgICAod2Vi
a2l0X2RvbV94cGF0aF9yZXN1bHRfZ2V0X3N0cmluZ192YWx1ZSk6IERpdHRvLgorICAgICAgICAo
d2Via2l0X2RvbV94cGF0aF9yZXN1bHRfZ2V0X2Jvb2xlYW5fdmFsdWUpOiBEaXR0by4KKyAgICAg
ICAgKHdlYmtpdF9kb21feHBhdGhfcmVzdWx0X2dldF9zaW5nbGVfbm9kZV92YWx1ZSk6IERpdHRv
LgorICAgICAgICAod2Via2l0X2RvbV94cGF0aF9yZXN1bHRfZ2V0X3NuYXBzaG90X2xlbmd0aCk6
IERpdHRvLgorCiAyMDE2LTEwLTE5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggR1RLKyBidWlsZCBhZnRlciByMjA3
NDk3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZmZiY2I4MGJiMzVlMWFhM2Y3ZjJmMzQw
ZGE0ODZiNjE3Nzc5YTM2Ni4uODYxODA4YmI2ZDdmMDk3MDc4MzFlZjg0ODFhZTMxN2MzZTFhOGE5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MTE3LDI1ICs1MTE3LDI1IEBAIGJvb2wg
RG9jdW1lbnQ6OmlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0FsbG93ZWQoKSBjb25zdAogCiAjZW5k
aWYKIAotUmVmUHRyPFhQYXRoRXhwcmVzc2lvbj4gRG9jdW1lbnQ6OmNyZWF0ZUV4cHJlc3Npb24o
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiYmIHJlc29s
dmVyLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFJlZjxYUGF0aEV4cHJlc3Npb24+
PiBEb2N1bWVudDo6Y3JlYXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJl
ZlB0cjxYUGF0aE5TUmVzb2x2ZXI+JiYgcmVzb2x2ZXIpCiB7CiAgICAgaWYgKCFtX3hwYXRoRXZh
bHVhdG9yKQogICAgICAgICBtX3hwYXRoRXZhbHVhdG9yID0gWFBhdGhFdmFsdWF0b3I6OmNyZWF0
ZSgpOwotICAgIHJldHVybiBtX3hwYXRoRXZhbHVhdG9yLT5jcmVhdGVFeHByZXNzaW9uKGV4cHJl
c3Npb24sIFdURk1vdmUocmVzb2x2ZXIpLCBlYyk7CisgICAgcmV0dXJuIG1feHBhdGhFdmFsdWF0
b3ItPmNyZWF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgV1RGTW92ZShyZXNvbHZlcikpOwogfQog
Ci1SZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiBEb2N1bWVudDo6Y3JlYXRlTlNSZXNvbHZlcihOb2Rl
KiBub2RlUmVzb2x2ZXIpCitSZWY8WFBhdGhOU1Jlc29sdmVyPiBEb2N1bWVudDo6Y3JlYXRlTlNS
ZXNvbHZlcihOb2RlKiBub2RlUmVzb2x2ZXIpCiB7CiAgICAgaWYgKCFtX3hwYXRoRXZhbHVhdG9y
KQogICAgICAgICBtX3hwYXRoRXZhbHVhdG9yID0gWFBhdGhFdmFsdWF0b3I6OmNyZWF0ZSgpOwog
ICAgIHJldHVybiBtX3hwYXRoRXZhbHVhdG9yLT5jcmVhdGVOU1Jlc29sdmVyKG5vZGVSZXNvbHZl
cik7CiB9CiAKLVJlZlB0cjxYUGF0aFJlc3VsdD4gRG9jdW1lbnQ6OmV2YWx1YXRlKGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgTm9kZSogY29udGV4dE5vZGUsIFJlZlB0cjxYUGF0aE5TUmVzb2x2
ZXI+JiYgcmVzb2x2ZXIsIHVuc2lnbmVkIHNob3J0IHR5cGUsIFhQYXRoUmVzdWx0KiByZXN1bHQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPFhQYXRoUmVzdWx0Pj4gRG9jdW1l
bnQ6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgTm9kZSogY29udGV4dE5vZGUs
IFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+JiYgcmVzb2x2ZXIsIHVuc2lnbmVkIHNob3J0IHR5cGUs
IFhQYXRoUmVzdWx0KiByZXN1bHQpCiB7CiAgICAgaWYgKCFtX3hwYXRoRXZhbHVhdG9yKQogICAg
ICAgICBtX3hwYXRoRXZhbHVhdG9yID0gWFBhdGhFdmFsdWF0b3I6OmNyZWF0ZSgpOwotICAgIHJl
dHVybiBtX3hwYXRoRXZhbHVhdG9yLT5ldmFsdWF0ZShleHByZXNzaW9uLCBjb250ZXh0Tm9kZSwg
V1RGTW92ZShyZXNvbHZlciksIHR5cGUsIHJlc3VsdCwgZWMpOworICAgIHJldHVybiBtX3hwYXRo
RXZhbHVhdG9yLT5ldmFsdWF0ZShleHByZXNzaW9uLCBjb250ZXh0Tm9kZSwgV1RGTW92ZShyZXNv
bHZlciksIHR5cGUsIHJlc3VsdCk7CiB9CiAKIHN0YXRpYyBib29sIHNob3VsZEluaGVyaXRTZWN1
cml0eU9yaWdpbkZyb21Pd25lcihjb25zdCBVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggNzdmYTBmYjI1NDhmOTcyZmRkNjhkMzU1NmI5NzMzMTZkOWRmYWIzZC4uOWE1NDBiNTFhYjM1
NmE4MDVhZGU0NzRlZDljNTliNjE0ZDhlMGMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiRm9u
dFNlbGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgpAQCAtOTQzLDkg
Kzk0NCw5IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBkb21UcmVlVmVyc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZG9tVHJlZVZlcnNpb247IH0KIAogICAgIC8vIFhQYXRoRXZhbHVhdG9yIG1ldGhv
ZHMKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8WFBhdGhFeHByZXNzaW9uPiBjcmVhdGVFeHBy
ZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4m
JiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxYUGF0aE5TUmVz
b2x2ZXI+IGNyZWF0ZU5TUmVzb2x2ZXIoTm9kZSogbm9kZVJlc29sdmVyKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8WFBhdGhSZXN1bHQ+IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgTm9kZSogY29udGV4dE5vZGUsIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+JiYsIHVuc2ln
bmVkIHNob3J0IHR5cGUsIFhQYXRoUmVzdWx0KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNP
UkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxYUGF0aEV4cHJlc3Npb24+PiBjcmVhdGVFeHByZXNz
aW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4mJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFhQYXRoTlNSZXNvbHZlcj4gY3JlYXRlTlNSZXNvbHZl
cihOb2RlKiBub2RlUmVzb2x2ZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJl
ZjxYUGF0aFJlc3VsdD4+IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgTm9kZSog
Y29udGV4dE5vZGUsIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+JiYsIHVuc2lnbmVkIHNob3J0IHR5
cGUsIFhQYXRoUmVzdWx0Kik7CiAKICAgICBlbnVtIFBlbmRpbmdTaGVldExheW91dCB7IE5vTGF5
b3V0V2l0aFBlbmRpbmdTaGVldHMsIERpZExheW91dFdpdGhQZW5kaW5nU2hlZXRzLCBJZ25vcmVM
YXlvdXRXaXRoUGVuZGluZ1NoZWV0cyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCBj
OTYyYzBjZGE1MDAzOWNmMTc1OGE4MTZkZGU1MzNkM2I4ZmQ3YjUwLi4xNDcwZTVlOGVkOWI4MzM0
YzE3ZDUzMzMwZDIxYzY5NDg1MGU0OGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTc2
LDEyICs3NiwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgY29udGVudFR5
cGU7CiAKICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0
ZXIgdmFsdWUgaXMgd3JvbmcuCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBYUGF0aEV4
cHJlc3Npb24gY3JlYXRlRXhwcmVzc2lvbihvcHRpb25hbCBET01TdHJpbmcgZXhwcmVzc2lvbiA9
ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyKTsKKyAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIFhQYXRoRXhwcmVzc2lvbiBjcmVhdGVFeHByZXNzaW9uKG9wdGlv
bmFsIERPTVN0cmluZyBleHByZXNzaW9uID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIFhQYXRoTlNS
ZXNvbHZlcj8gcmVzb2x2ZXIpOwogICAgIFhQYXRoTlNSZXNvbHZlciBjcmVhdGVOU1Jlc29sdmVy
KE5vZGU/IG5vZGVSZXNvbHZlcik7CiAKICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIg
YXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCi0gICAgW01heVRocm93TGVnYWN5
RXhjZXB0aW9uXSBYUGF0aFJlc3VsdCBldmFsdWF0ZShvcHRpb25hbCBET01TdHJpbmcgZXhwcmVz
c2lvbiA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBOb2RlPyBjb250ZXh0Tm9kZSwgb3B0aW9uYWwg
WFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlciwKLSAgICAgICAgb3B0aW9uYWwgdW5zaWduZWQgc2hv
cnQgdHlwZSA9IDAsIG9wdGlvbmFsIFhQYXRoUmVzdWx0PyBpblJlc3VsdCk7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSBYUGF0aFJlc3VsdCBldmFsdWF0ZShvcHRpb25hbCBET01TdHJpbmcgZXhw
cmVzc2lvbiA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBOb2RlPyBjb250ZXh0Tm9kZSwgb3B0aW9u
YWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlciwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdHlw
ZSA9IDAsIG9wdGlvbmFsIFhQYXRoUmVzdWx0PyBpblJlc3VsdCk7CiAKICAgICAvLyBGSVhNRTog
VGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBsYXN0IHBhcmFtZXRlciBzaG91bGQgYmUgdGhlIGVt
cHR5IHN0cmluZy4KICAgICBib29sZWFuIGV4ZWNDb21tYW5kKERPTVN0cmluZyBjb21tYW5kLCBv
cHRpb25hbCBib29sZWFuIHVzZXJJbnRlcmZhY2UgPSBmYWxzZSwgb3B0aW9uYWwgRE9NU3RyaW5n
PyB2YWx1ZSA9IG51bGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck5vZGVGaW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck5vZGVGaW5kZXIuY3BwCmluZGV4IDY0NTYzNmU3OGQzZmIxY2EzNjQxZTk1ODNjM2ZjNDAzNDVj
NWU4NWUuLjU1YjJjMjgxYWVmZDNiYzg5NWQyNzIzMTNmMGI0ZmFlMWQ1NmMxYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAKQEAgLTEz
MiwxOSArMTMyLDIxIEBAIGJvb2wgSW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0Y2hlc0VsZW1lbnQo
Y29uc3QgRWxlbWVudCYgZWxlbWVudCkKIAogdm9pZCBJbnNwZWN0b3JOb2RlRmluZGVyOjpzZWFy
Y2hVc2luZ1hQYXRoKE5vZGUqIHBhcmVudE5vZGUpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgUmVmUHRyPFhQYXRoUmVzdWx0PiByZXN1bHQgPSBwYXJlbnROb2RlLT5kb2N1bWVu
dCgpLmV2YWx1YXRlKG1fd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgcGFyZW50Tm9kZSwgbnVsbHB0
ciwgWFBhdGhSZXN1bHQ6Ok9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCBudWxscHRyLCBlYyk7
Ci0gICAgaWYgKGVjIHx8ICFyZXN1bHQpCisgICAgYXV0byBldmFsdWF0ZVJlc3VsdCA9IHBhcmVu
dE5vZGUtPmRvY3VtZW50KCkuZXZhbHVhdGUobV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBwYXJl
bnROb2RlLCBudWxscHRyLCBYUGF0aFJlc3VsdDo6T1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUs
IG51bGxwdHIpOworICAgIGlmIChldmFsdWF0ZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0gZXZhbHVhdGVSZXN1bHQucmVsZWFzZVJldHVy
blZhbHVlKCk7CiAKLSAgICB1bnNpZ25lZCBsb25nIHNpemUgPSByZXN1bHQtPnNuYXBzaG90TGVu
Z3RoKGVjKTsKLSAgICBpZiAoZWMpCisgICAgYXV0byBzbmFwc2hvdExlbmd0aFJlc3VsdCA9IHJl
c3VsdC0+c25hcHNob3RMZW5ndGgoKTsKKyAgICBpZiAoc25hcHNob3RMZW5ndGhSZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKKyAgICB1bnNpZ25lZCBzaXplID0gc25hcHNo
b3RMZW5ndGhSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAKLSAgICBmb3IgKHVuc2lnbmVk
IGxvbmcgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IHJlc3Vs
dC0+c25hcHNob3RJdGVtKGksIGVjKTsKLSAgICAgICAgaWYgKGVjKQorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgYXV0byBzbmFwc2hvdEl0ZW1SZXN1
bHQgPSByZXN1bHQtPnNuYXBzaG90SXRlbShpKTsKKyAgICAgICAgaWYgKHNuYXBzaG90SXRlbVJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgTm9kZSog
bm9kZSA9IHNuYXBzaG90SXRlbVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAogICAgICAg
ICBpZiAoaXM8QXR0cj4oKm5vZGUpKQogICAgICAgICAgICAgbm9kZSA9IGRvd25jYXN0PEF0dHI+
KCpub2RlKS5vd25lckVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9E
T01QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAKaW5kZXggNjVh
OTIzMDRhN2QzOTk2Zjc2ZmNiZWMyOGVkYWJjMjM3ZDk3ODMwYS4uNDkwYWQzNTQ3MWRhOTM5OWY2
ZjM1MjlmZGZiYTNiNmY1NmVmMDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL0RP
TVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAKQEAgLTIx
LDI3ICsyMSwyNCBAQAogCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NUGFyc2VyOjpET01QYXJzZXIoRG9jdW1lbnQmIGNvbnRl
eHREb2N1bWVudCkKK2lubGluZSBET01QYXJzZXI6OkRPTVBhcnNlcihEb2N1bWVudCYgY29udGV4
dERvY3VtZW50KQogICAgIDogbV9jb250ZXh0RG9jdW1lbnQoY29udGV4dERvY3VtZW50LmNyZWF0
ZVdlYWtQdHIoKSkKIHsKIH0KIAotUmVmUHRyPERvY3VtZW50PiBET01QYXJzZXI6OnBhcnNlRnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCitSZWY8RE9NUGFyc2VyPiBET01QYXJzZXI6OmNyZWF0ZShEb2N1
bWVudCYgY29udGV4dERvY3VtZW50KQogewotICAgIGlmIChjb250ZW50VHlwZSAhPSAidGV4dC9o
dG1sIgotICAgICAgICAmJiBjb250ZW50VHlwZSAhPSAidGV4dC94bWwiCi0gICAgICAgICYmIGNv
bnRlbnRUeXBlICE9ICJhcHBsaWNhdGlvbi94bWwiCi0gICAgICAgICYmIGNvbnRlbnRUeXBlICE9
ICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiCi0gICAgICAgICYmIGNvbnRlbnRUeXBlICE9ICJpbWFn
ZS9zdmcreG1sIikgewotICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgfQorICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTVBhcnNlcihjb250ZXh0
RG9jdW1lbnQpKTsKK30KIAotICAgIFJlZjxEb2N1bWVudD4gZG9jdW1lbnQgPSBET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29udGVudFR5cGUsIG51bGxwdHIsIFVSTCgpKTsKK0V4
Y2VwdGlvbk9yPFJlZjxEb2N1bWVudD4+IERPTVBhcnNlcjo6cGFyc2VGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQoreworICAgIGlmIChj
b250ZW50VHlwZSAhPSAidGV4dC9odG1sIiAmJiBjb250ZW50VHlwZSAhPSAidGV4dC94bWwiICYm
IGNvbnRlbnRUeXBlICE9ICJhcHBsaWNhdGlvbi94bWwiICYmIGNvbnRlbnRUeXBlICE9ICJhcHBs
aWNhdGlvbi94aHRtbCt4bWwiICYmIGNvbnRlbnRUeXBlICE9ICJpbWFnZS9zdmcreG1sIikKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworICAgIGF1dG8gZG9jdW1lbnQg
PSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29udGVudFR5cGUsIG51bGxwdHIs
IFVSTCB7IH0pOwogICAgIGlmIChtX2NvbnRleHREb2N1bWVudCkKICAgICAgICAgZG9jdW1lbnQt
PnNldENvbnRleHREb2N1bWVudCgqbV9jb250ZXh0RG9jdW1lbnQuZ2V0KCkpOwogICAgIGRvY3Vt
ZW50LT5zZXRDb250ZW50KHN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
RE9NUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmgKaW5kZXggODE3YjAx
YTZkNGMyZTEzZDM2OTI5MTgxNDI5Zjk4MzQ5MDc3ODE0ZS4uNDJjZWViOWZhNDcwY2Q2MjQ0MzVl
NjQyZDgzYjk0YzE4NDQ0YmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL0RPTVBh
cnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIEluYy4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtMTYsMjcgKzE2LDE5IEBACiAgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCiAgKi8KIAotI2lmbmRlZiBET01QYXJzZXJfaAotI2RlZmluZSBET01QYXJzZXJfaAor
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgIkV4Y2VwdGlv
bk9yLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgRG9jdW1lbnQ7CiAKIGNsYXNzIERP
TVBhcnNlciA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVBhcnNlcj4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8RE9NUGFyc2VyPiBjcmVhdGUoRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTVBhcnNlcihjb250ZXh0RG9jdW1l
bnQpKTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8RG9jdW1lbnQ+IHBhcnNlRnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgc3RhdGljIFJlZjxET01QYXJzZXI+IGNyZWF0ZShEb2N1bWVudCYgY29udGV4dERvY3VtZW50
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnQ+PiBwYXJzZUZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgRE9NUGFyc2VyKERvY3VtZW50JiBjb250ZXh0RG9jdW1lbnQpOwpAQCAtNDUsNSArMzcs
MyBAQCBwcml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYgLy8gWE1MU2VyaWFsaXplci5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9ET01QYXJzZXIuaWRsCmluZGV4IDI5MDNkMTg3YTIzZmVkYWM5OTg2YmM3YjFmM2EyNjBi
MGM1M2MwM2UuLjk2NGU0YWQ3Mzg1ZDU2NzY1OTM1MmVhNGQ3Y2YwNzMxMTQ1MTJiNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9ET01QYXJzZXIuaWRsCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw1ICsyMiw1IEBACiAg
ICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgRE9NUGFyc2VyIHsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb24sIE5ld09iamVjdF0gRG9jdW1lbnQgcGFyc2VGcm9tU3RyaW5nKERPTVN0cmluZyBzdHIs
IERPTVN0cmluZyBjb250ZW50VHlwZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmpl
Y3RdIERvY3VtZW50IHBhcnNlRnJvbVN0cmluZyhET01TdHJpbmcgc3RyaW5nLCBET01TdHJpbmcg
Y29udGVudFR5cGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV2
YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFdmFsdWF0b3IuY3BwCmluZGV4
IGZjNzVjMzE2YTJkNDkxZGYyZmI3YmFiMTVmYjJmNzA2ZDg1MDg3N2QuLjNhYTE0MWIyN2FhNzRm
M2I5YmVmZmQyNTdjZGExN2Q2MGJiNjE2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXZhbHVh
dG9yLmNwcApAQCAtMzcsOSArMzcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBYUGF0aDsKIAotUmVmUHRyPFhQYXRoRXhwcmVzc2lvbj4gWFBhdGhFdmFsdWF0b3I6
OmNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8WFBhdGhO
U1Jlc29sdmVyPiYmIHJlc29sdmVyLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFJl
ZjxYUGF0aEV4cHJlc3Npb24+PiBYUGF0aEV2YWx1YXRvcjo6Y3JlYXRlRXhwcmVzc2lvbihjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+JiYgcmVzb2x2ZXIp
CiB7Ci0gICAgcmV0dXJuIFhQYXRoRXhwcmVzc2lvbjo6Y3JlYXRlRXhwcmVzc2lvbihleHByZXNz
aW9uLCBXVEZNb3ZlKHJlc29sdmVyKSwgZWMpOworICAgIHJldHVybiBYUGF0aEV4cHJlc3Npb246
OmNyZWF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgV1RGTW92ZShyZXNvbHZlcikpOwogfQogCiBS
ZWY8WFBhdGhOU1Jlc29sdmVyPiBYUGF0aEV2YWx1YXRvcjo6Y3JlYXRlTlNSZXNvbHZlcihOb2Rl
KiBub2RlUmVzb2x2ZXIpCkBAIC00NywxOSArNDcsMTYgQEAgUmVmPFhQYXRoTlNSZXNvbHZlcj4g
WFBhdGhFdmFsdWF0b3I6OmNyZWF0ZU5TUmVzb2x2ZXIoTm9kZSogbm9kZVJlc29sdmVyKQogICAg
IHJldHVybiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXI6OmNyZWF0ZShub2RlUmVzb2x2ZXIpOwogfQog
Ci1SZWZQdHI8WFBhdGhSZXN1bHQ+IFhQYXRoRXZhbHVhdG9yOjpldmFsdWF0ZShjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIE5vZGUqIGNvbnRleHROb2RlLCBSZWZQdHI8WFBhdGhOU1Jlc29sdmVy
PiYmIHJlc29sdmVyLCB1bnNpZ25lZCBzaG9ydCB0eXBlLCBYUGF0aFJlc3VsdCogcmVzdWx0LCBF
eGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFJlZjxYUGF0aFJlc3VsdD4+IFhQYXRoRXZh
bHVhdG9yOjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIE5vZGUqIGNvbnRleHRO
b2RlLCBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiYmIHJlc29sdmVyLCB1bnNpZ25lZCBzaG9ydCB0
eXBlLCBYUGF0aFJlc3VsdCogcmVzdWx0KQogewotICAgIGlmICghaXNWYWxpZENvbnRleHROb2Rl
KGNvbnRleHROb2RlKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKCFpc1ZhbGlkQ29udGV4dE5vZGUoY29u
dGV4dE5vZGUpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIg
fTsKIAotICAgIGVjID0gMDsKLSAgICBSZWZQdHI8WFBhdGhFeHByZXNzaW9uPiBleHByID0gY3Jl
YXRlRXhwcmVzc2lvbihleHByZXNzaW9uLCBXVEZNb3ZlKHJlc29sdmVyKSwgZWMpOwotICAgIGlm
IChlYykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgcmV0dXJuIGV4cHItPmV2
YWx1YXRlKGNvbnRleHROb2RlLCB0eXBlLCByZXN1bHQsIGVjKTsKKyAgICBhdXRvIGNyZWF0ZVJl
c3VsdCA9IGNyZWF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgV1RGTW92ZShyZXNvbHZlcikpOwor
ICAgIGlmIChjcmVhdGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBjcmVh
dGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgcmV0dXJuIGNyZWF0ZVJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKS0+ZXZhbHVhdGUoY29udGV4dE5vZGUsIHR5cGUsIHJlc3VsdCk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV2YWx1YXRvci5o
IGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXZhbHVhdG9yLmgKaW5kZXggZjJiYjVjYjc0NGI3
OWU1NjBmODBhZTczYjg5MDVjMWU1OTIxYTU1Ni4uNGE0Nzg1NDhmNDAzMmY3YzE5NzMxZDQxNzYx
YTM0MGVlMmNiOTBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXZhbHVh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXZhbHVhdG9yLmgKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IDIwMDUgRnJlcmljaCBSYWFiZSA8cmFhYmVAa2RlLm9y
Zz4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNCwzNSArMjQsMjcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBYUGF0aEV2YWx1YXRvcl9oCi0jZGVmaW5lIFhQYXRoRXZhbHVhdG9yX2gKKyNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLSAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworY2xhc3Mg
Tm9kZTsKK2NsYXNzIFhQYXRoRXhwcmVzc2lvbjsKK2NsYXNzIFhQYXRoTlNSZXNvbHZlcjsKK2Ns
YXNzIFhQYXRoUmVzdWx0OwogCi0gICAgY2xhc3MgTm9kZTsKLSAgICBjbGFzcyBYUGF0aEV4cHJl
c3Npb247Ci0gICAgY2xhc3MgWFBhdGhOU1Jlc29sdmVyOwotICAgIGNsYXNzIFhQYXRoUmVzdWx0
OworY2xhc3MgWFBhdGhFdmFsdWF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxYUGF0aEV2YWx1YXRv
cj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8WFBhdGhFdmFsdWF0b3I+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgWFBhdGhFdmFsdWF0b3IpOyB9CiAKLSAgICBjbGFzcyBYUGF0
aEV2YWx1YXRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFhQYXRoRXZhbHVhdG9yPiB7Ci0gICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUmVmPFhQYXRoRXZhbHVhdG9yPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFhQYXRoRXZhbHVhdG9yKTsgfQotICAgICAgICAKLSAgICAgICAgUmVm
UHRyPFhQYXRoRXhwcmVzc2lvbj4gY3JlYXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAg
ICAgUmVmPFhQYXRoTlNSZXNvbHZlcj4gY3JlYXRlTlNSZXNvbHZlcihOb2RlKiBub2RlUmVzb2x2
ZXIpOwotICAgICAgICBSZWZQdHI8WFBhdGhSZXN1bHQ+IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwgTm9kZSogY29udGV4dE5vZGUsCi0gICAgICAgICAgICBSZWZQdHI8WFBhdGhO
U1Jlc29sdmVyPiYmLCB1bnNpZ25lZCBzaG9ydCB0eXBlLCBYUGF0aFJlc3VsdCosIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8WFBhdGhFeHByZXNzaW9uPj4gY3JlYXRlRXhw
cmVzc2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+
JiYpOworICAgIFJlZjxYUGF0aE5TUmVzb2x2ZXI+IGNyZWF0ZU5TUmVzb2x2ZXIoTm9kZSogbm9k
ZVJlc29sdmVyKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8WFBhdGhSZXN1bHQ+PiBldmFsdWF0ZShj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIE5vZGUqIGNvbnRleHROb2RlLCBSZWZQdHI8WFBhdGhO
U1Jlc29sdmVyPiYmLCB1bnNpZ25lZCBzaG9ydCB0eXBlLCBYUGF0aFJlc3VsdCopOwogCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgWFBhdGhFdmFsdWF0b3IoKSB7IH0KLSAgICB9OworcHJpdmF0ZToK
KyAgICBYUGF0aEV2YWx1YXRvcigpID0gZGVmYXVsdDsKK307CiAKIH0KLQotI2VuZGlmIC8vIFhQ
YXRoRXZhbHVhdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV2YWx1
YXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFdmFsdWF0b3IuaWRsCmluZGV4IDdk
MTA1ODIyMDg0ZmFiNjkwMTE2NDcwMWU3NzM4ZDE2M2Y0MGNhYzUuLmZhYWQ2MTgyZDg4ZTU5N2Iw
MjhkMzQyMzlhMmU4OGM5ZTVjYzJiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aEV2YWx1YXRvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXZhbHVhdG9y
LmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5j
LgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsMTQgKzIyLDEwIEBACiAgICAgSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIFhQYXRoRXZhbHVhdG9yIHsKICAgICAvLyBGSVhN
RTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3Jvbmcu
Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBYUGF0aEV4cHJlc3Npb24gY3JlYXRlRXhw
cmVzc2lvbihvcHRpb25hbCBET01TdHJpbmcgZXhwcmVzc2lvbiA9ICJ1bmRlZmluZWQiLCBvcHRp
b25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFhQYXRoRXhwcmVzc2lvbiBjcmVhdGVFeHByZXNzaW9uKG9wdGlvbmFsIERPTVN0cmluZyBleHBy
ZXNzaW9uID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIp
OwogCiAgICAgWFBhdGhOU1Jlc29sdmVyIGNyZWF0ZU5TUmVzb2x2ZXIob3B0aW9uYWwgTm9kZT8g
bm9kZVJlc29sdmVyKTsKIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZh
dWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRp
b25dIFhQYXRoUmVzdWx0IGV2YWx1YXRlKG9wdGlvbmFsIERPTVN0cmluZyBleHByZXNzaW9uID0g
InVuZGVmaW5lZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgTm9kZT8gY29u
dGV4dE5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgWFBhdGhOU1Jlc29s
dmVyPyByZXNvbHZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCB1bnNpZ25l
ZCBzaG9ydCB0eXBlID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBYUGF0
aFJlc3VsdD8gaW5SZXN1bHQpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gWFBhdGhSZXN1bHQg
ZXZhbHVhdGUob3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Npb24gPSAidW5kZWZpbmVkIiwgb3B0
aW9uYWwgTm9kZT8gY29udGV4dE5vZGUsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2
ZXIsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3Vs
dD8gaW5SZXN1bHQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4
cHJlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAKaW5k
ZXggOGQ1M2YwMzllZDdhZTQ2MTBjM2I1MGU2N2JkZGY0ZTI4YmJmYTYwMi4uOTlhYWNmZGUxMzQ5
ZTBiNjBmNmVkNjRlYzNiYzk1MmRmMzQwYjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhw
cmVzc2lvbi5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJYUGF0aFBhcnNlci5oIgog
I2luY2x1ZGUgIlhQYXRoUmVzdWx0LmgiCiAjaW5jbHVkZSAiWFBhdGhVdGlsLmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUs
NDkgKzQ0LDQ2IEBAIGlubGluZSBYUGF0aEV4cHJlc3Npb246OlhQYXRoRXhwcmVzc2lvbihzdGQ6
OnVuaXF1ZV9wdHI8WFBhdGg6OkV4cHJlc3Npb24+IGV4cHJlCiB7CiB9CiAKLVJlZlB0cjxYUGF0
aEV4cHJlc3Npb24+IFhQYXRoRXhwcmVzc2lvbjo6Y3JlYXRlRXhwcmVzc2lvbihjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+JiYgcmVzb2x2ZXIsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPFhQYXRoRXhwcmVzc2lvbj4+IFhQYXRoRXhw
cmVzc2lvbjo6Y3JlYXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0
cjxYUGF0aE5TUmVzb2x2ZXI+JiYgcmVzb2x2ZXIpCiB7Ci0gICAgYXV0byBwYXJzZWRFeHByZXNz
aW9uID0gUGFyc2VyOjpwYXJzZVN0YXRlbWVudChleHByZXNzaW9uLCBXVEZNb3ZlKHJlc29sdmVy
KSwgZWMpOwotICAgIGlmICghcGFyc2VkRXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgYXV0byBwYXJzZVJlc3VsdCA9IFBhcnNlcjo6cGFyc2VTdGF0ZW1lbnQoZXhwcmVz
c2lvbiwgV1RGTW92ZShyZXNvbHZlcikpOworICAgIGlmIChwYXJzZVJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhQYXRoRXhwcmVzc2lvbihXVEZNb3ZlKHBhcnNlZEV4
cHJlc3Npb24pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWFBhdGhFeHByZXNzaW9uKHBh
cnNlUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSk7CiB9CiAKIFhQYXRoRXhwcmVzc2lvbjo6
flhQYXRoRXhwcmVzc2lvbigpCiB7CiB9CiAKLVJlZlB0cjxYUGF0aFJlc3VsdD4gWFBhdGhFeHBy
ZXNzaW9uOjpldmFsdWF0ZShOb2RlKiBjb250ZXh0Tm9kZSwgdW5zaWduZWQgc2hvcnQgdHlwZSwg
WFBhdGhSZXN1bHQqLCBFeGNlcHRpb25Db2RlJiBlYykKKy8vIEZJWE1FOiBXaHkgZG9lcyB0aGlz
IHRha2UgYW4gWFBhdGhSZXN1bHQgdGhhdCBpdCBpZ25vcmVzPworRXhjZXB0aW9uT3I8UmVmPFhQ
YXRoUmVzdWx0Pj4gWFBhdGhFeHByZXNzaW9uOjpldmFsdWF0ZShOb2RlKiBjb250ZXh0Tm9kZSwg
dW5zaWduZWQgc2hvcnQgdHlwZSwgWFBhdGhSZXN1bHQqKQogewotICAgIGlmICghaXNWYWxpZENv
bnRleHROb2RlKGNvbnRleHROb2RlKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKCFpc1ZhbGlkQ29udGV4
dE5vZGUoY29udGV4dE5vZGUpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBP
UlRFRF9FUlIgfTsKIAogICAgIEV2YWx1YXRpb25Db250ZXh0JiBldmFsdWF0aW9uQ29udGV4dCA9
IEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KCk7CiAgICAgZXZhbHVhdGlvbkNvbnRleHQu
bm9kZSA9IGNvbnRleHROb2RlOwogICAgIGV2YWx1YXRpb25Db250ZXh0LnNpemUgPSAxOwogICAg
IGV2YWx1YXRpb25Db250ZXh0LnBvc2l0aW9uID0gMTsKICAgICBldmFsdWF0aW9uQ29udGV4dC5o
YWRUeXBlQ29udmVyc2lvbkVycm9yID0gZmFsc2U7Ci0gICAgUmVmUHRyPFhQYXRoUmVzdWx0PiBy
ZXN1bHQgPSBYUGF0aFJlc3VsdDo6Y3JlYXRlKCZjb250ZXh0Tm9kZS0+ZG9jdW1lbnQoKSwgbV90
b3BFeHByZXNzaW9uLT5ldmFsdWF0ZSgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IFhQYXRoUmVzdWx0
OjpjcmVhdGUoY29udGV4dE5vZGUtPmRvY3VtZW50KCksIG1fdG9wRXhwcmVzc2lvbi0+ZXZhbHVh
dGUoKSk7CiAgICAgZXZhbHVhdGlvbkNvbnRleHQubm9kZSA9IG51bGxwdHI7IC8vIERvIG5vdCBo
b2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBjb250ZXh0IG5vZGUsIGFzIHRoaXMgbWF5IHByZXZlbnQg
dGhlIHdob2xlIGRvY3VtZW50IGZyb20gYmVpbmcgZGVzdHJveWVkIGluIHRpbWUuCiAKICAgICBp
ZiAoZXZhbHVhdGlvbkNvbnRleHQuaGFkVHlwZUNvbnZlcnNpb25FcnJvcikgewogICAgICAgICAv
LyBJdCBpcyBub3Qgc3BlY2lmaWVkIHdoYXQgdG8gZG8gaWYgdHlwZSBjb252ZXJzaW9uIGZhaWxz
IHdoaWxlIGV2YWx1YXRpbmcgYW4gZXhwcmVzc2lvbiwgYW5kIElOVkFMSURfRVhQUkVTU0lPTl9F
UlIgaXMgbm90IGV4YWN0bHkgcmlnaHQKICAgICAgICAgLy8gd2hlbiB0aGUgZmFpbHVyZSBoYXBw
ZW5zIGluIGFuIG90aGVyd2lzZSB2YWxpZCBleHByZXNzaW9uIGJlY2F1c2Ugb2YgYSB2YXJpYWJs
ZS4gQnV0IFhQYXRoRXZhbHVhdG9yIGRvZXMgbm90IHN1cHBvcnQgdmFyaWFibGVzLCBzbyBpdCdz
IGNsb3NlIGVub3VnaC4KLSAgICAgICAgZWMgPSBYUGF0aEV4Y2VwdGlvbjo6SU5WQUxJRF9FWFBS
RVNTSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBYUGF0aEV4Y2VwdGlvbjo6SU5WQUxJRF9FWFBSRVNTSU9OX0VSUiB9OwogICAgIH0K
IAogICAgIGlmICh0eXBlICE9IFhQYXRoUmVzdWx0OjpBTllfVFlQRSkgewotICAgICAgICBlYyA9
IDA7Ci0gICAgICAgIHJlc3VsdC0+Y29udmVydFRvKHR5cGUsIGVjKTsKLSAgICAgICAgaWYgKGVj
KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGF1dG8gY29udmVydFRvUmVz
dWx0ID0gcmVzdWx0LT5jb252ZXJ0VG8odHlwZSk7CisgICAgICAgIGlmIChjb252ZXJ0VG9SZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gY29udmVydFRvUmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVy
biBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24u
aAppbmRleCBiMWVhZThhNzFjYzdiYTBiNWYxMzM5NzZmMDc5YjI4NGJlN2EwODlmLi41YTQ3OGE4
MmU2YjFhMjQxZWY4ZGRiNjRhNjA3MzBkMDhmYThiMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
RXhwcmVzc2lvbi5oCkBAIC0yNiw4ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
IkV4Y2VwdGlvbk9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzYsMTcgKzM1LDE1
IEBAIGNsYXNzIFhQYXRoTlNSZXNvbHZlcjsKIGNsYXNzIFhQYXRoUmVzdWx0OwogCiBuYW1lc3Bh
Y2UgWFBhdGggewotICAgIGNsYXNzIEV4cHJlc3Npb247CitjbGFzcyBFeHByZXNzaW9uOwogfQog
Ci11c2luZyBFeGNlcHRpb25Db2RlID0gaW50OwotCiBjbGFzcyBYUGF0aEV4cHJlc3Npb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxYUGF0aEV4cHJlc3Npb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFhQYXRoRXhwcmVzc2lvbj4gY3JlYXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFhQYXRoRXhwcmVzc2lvbj4+IGNyZWF0ZUV4cHJlc3Np
b24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiYmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+WFBhdGhFeHByZXNzaW9uKCk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8WFBhdGhSZXN1bHQ+IGV2YWx1YXRlKE5vZGUqIGNvbnRleHROb2RlLCB1bnNp
Z25lZCBzaG9ydCB0eXBlLCBYUGF0aFJlc3VsdCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8WFBhdGhSZXN1bHQ+PiBldmFsdWF0ZShOb2RlKiBj
b250ZXh0Tm9kZSwgdW5zaWduZWQgc2hvcnQgdHlwZSwgWFBhdGhSZXN1bHQqKTsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBYUGF0aEV4cHJlc3Npb24oc3RkOjp1bmlxdWVfcHRyPFhQYXRoOjpF
eHByZXNzaW9uPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNz
aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaWRsCmluZGV4IDY3
NGNlOGQ5M2Q1MmY4OGUwOTUzMmU4ZTRiMTAzMzk4YjAyMzU3MGYuLjE5NzU4ZGMyMzM0NWYzZmUx
NmNlYjMyOThiMWIxMzViZWYxYmJlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aEV4cHJlc3Npb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Np
b24uaWRsCkBAIC0yMiw1ICsyMiw1IEBACiAgICAgRXhwb3J0VG9XcmFwcGVkRnVuY3Rpb24sCiAg
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIFhQYXRoRXhwcmVzc2lv
biB7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBYUGF0aFJlc3VsdCBldmFsdWF0ZShv
cHRpb25hbCBOb2RlPyBjb250ZXh0Tm9kZSA9IG51bGwsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0
IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5SZXN1bHQgPSBudWxsKTsKKyAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIFhQYXRoUmVzdWx0IGV2YWx1YXRlKG9wdGlvbmFsIE5vZGU/IGNv
bnRleHROb2RlID0gbnVsbCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdHlwZSA9IDAsIG9wdGlv
bmFsIFhQYXRoUmVzdWx0PyBpblJlc3VsdCA9IG51bGwpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIueQppbmRleCAwMWM2ZmUwYWEwZmQxZWI1ZDgzOTZmODRmYTQyOTY1NDE5Yzk3ODlkLi5h
M2NjNDAxMzk4MzQ5MzNkZmY3MGRhNzZhOTI0NzE0ZjIxYmU4N2I2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoR3JhbW1hci55CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiWFBhdGhGdW5jdGlvbnMu
aCIKICNpbmNsdWRlICJYUGF0aFBhcnNlci5oIgogI2luY2x1ZGUgIlhQYXRoUGF0aC5oIgorI2lu
Y2x1ZGUgIlhQYXRoU3RlcC5oIgogI2luY2x1ZGUgIlhQYXRoVmFyaWFibGVSZWZlcmVuY2UuaCIK
IAogI2lmIENPTVBJTEVSKE1TVkMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcAppbmRleCA1
MzY2MTllMGEyZDU0MWFhNWEwMDExOTI5MTA0M2I2YzE0M2NlYTIwLi42YTgwZGExMDBjYWZmOGQz
ZGNhNDI5M2FkOTNjN2U2NmI3ZDUzMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJYUGF0aEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUg
IlhQYXRoTlNSZXNvbHZlci5oIgogI2luY2x1ZGUgIlhQYXRoUGF0aC5oIgorI2luY2x1ZGUgIlhQ
YXRoU3RlcC5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00
MDIsOSArNDAzLDYgQEAgaW5saW5lIFBhcnNlcjo6VG9rZW4gUGFyc2VyOjpuZXh0VG9rZW4oKQog
UGFyc2VyOjpQYXJzZXIoY29uc3QgU3RyaW5nJiBzdGF0ZW1lbnQsIFJlZlB0cjxYUGF0aE5TUmVz
b2x2ZXI+JiYgcmVzb2x2ZXIpCiAgICAgOiBtX2RhdGEoc3RhdGVtZW50KQogICAgICwgbV9yZXNv
bHZlcihXVEZNb3ZlKHJlc29sdmVyKSkKLSAgICAsIG1fbmV4dFBvcygwKQotICAgICwgbV9sYXN0
VG9rZW5UeXBlKDApCi0gICAgLCBtX3Nhd05hbWVzcGFjZUVycm9yKGZhbHNlKQogewogfQogCkBA
IC00NTIsMjUgKzQ1MCwyMCBAQCBib29sIFBhcnNlcjo6ZXhwYW5kUXVhbGlmaWVkTmFtZShjb25z
dCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIFN0cmluZyYgbG9jYWxOYW1lLAogICAgICAgICBsb2Nh
bE5hbWUgPSBxdWFsaWZpZWROYW1lLnN1YnN0cmluZyhjb2xvbiArIDEpOwogICAgIH0gZWxzZQog
ICAgICAgICBsb2NhbE5hbWUgPSBxdWFsaWZpZWROYW1lOwotCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBQYXJzZXI6OnBhcnNlU3RhdGVtZW50KGNv
bnN0IFN0cmluZyYgc3RhdGVtZW50LCBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiYmIHJlc29sdmVy
LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPj4gUGFyc2VyOjpwYXJzZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHN0YXRlbWVudCwgUmVm
UHRyPFhQYXRoTlNSZXNvbHZlcj4mJiByZXNvbHZlcikKIHsKLSAgICBQYXJzZXIgcGFyc2VyKHN0
YXRlbWVudCwgV1RGTW92ZShyZXNvbHZlcikpOworICAgIFBhcnNlciBwYXJzZXIgeyBzdGF0ZW1l
bnQsIFdURk1vdmUocmVzb2x2ZXIpIH07CiAKICAgICBpbnQgcGFyc2VFcnJvciA9IHhwYXRoeXlw
YXJzZShwYXJzZXIpOwogCi0gICAgaWYgKHBhcnNlci5tX3Nhd05hbWVzcGFjZUVycm9yKSB7Ci0g
ICAgICAgIGVjID0gTkFNRVNQQUNFX0VSUjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQorICAgIGlmIChwYXJzZXIubV9zYXdOYW1lc3BhY2VFcnJvcikKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5BTUVTUEFDRV9FUlIgfTsKIAotICAgIGlmIChwYXJzZUVycm9yKSB7Ci0gICAg
ICAgIGVjID0gWFBhdGhFeGNlcHRpb246OklOVkFMSURfRVhQUkVTU0lPTl9FUlI7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KKyAgICBpZiAocGFyc2VFcnJvcikKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFhQYXRoRXhjZXB0aW9uOjpJTlZBTElEX0VYUFJFU1NJT05fRVJSIH07
CiAKICAgICByZXR1cm4gV1RGTW92ZShwYXJzZXIubV9yZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhQYXJzZXIuaAppbmRleCBlNDE5NTkxNjNmZDI5YTFiMGE5NzkyYzYwYmFmZDEyMjkwNTg1NmJi
Li42ODI4OWNhYTUyY2M4Nzk3ZjlkMGYxYjJkNjMzOWZjZWM3YmMyODAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhQYXJzZXIuaApAQCAtMjQsNjQgKzI0LDU4IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgWFBhdGhQYXJzZXJfaAotI2RlZmluZSBYUGF0aFBhcnNlcl9oCisjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlhQYXRoU3RlcC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5j
bHVkZSAiWFBhdGhQcmVkaWNhdGUuaCIKIAogdW5pb24gWVlTVFlQRTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0gICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKK2NsYXNzIFhQYXRoTlNS
ZXNvbHZlcjsKIAotICAgIGNsYXNzIFhQYXRoTlNSZXNvbHZlcjsKK25hbWVzcGFjZSBYUGF0aCB7
CiAKLSAgICBuYW1lc3BhY2UgWFBhdGggeworY2xhc3MgUGFyc2VyIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShQYXJzZXIpOworcHVibGljOgorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+IHBhcnNlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3Rh
dGVtZW50LCBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiYmKTsKIAotICAgICAgICBjbGFzcyBQYXJz
ZXIgewotICAgICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFyc2VyKTsKLSAgICAgICAg
cHVibGljOgotICAgICAgICAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBw
YXJzZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHN0YXRlbWVudCwgUmVmUHRyPFhQYXRoTlNSZXNv
bHZlcj4mJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIGludCBsZXgoWVlTVFlQRSYpOworICAgIGJv
b2wgZXhwYW5kUXVhbGlmaWVkTmFtZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIFN0cmlu
ZyYgbG9jYWxOYW1lLCBTdHJpbmcmIG5hbWVzcGFjZVVSSSk7CisgICAgdm9pZCBzZXRQYXJzZVJl
c3VsdChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBleHByZXNzaW9uKSB7IG1fcmVzdWx0
ID0gV1RGTW92ZShleHByZXNzaW9uKTsgfQogCi0gICAgICAgICAgICBpbnQgbGV4KFlZU1RZUEUm
KTsKLSAgICAgICAgICAgIGJvb2wgZXhwYW5kUXVhbGlmaWVkTmFtZShjb25zdCBTdHJpbmcmIHF1
YWxpZmllZE5hbWUsIFN0cmluZyYgbG9jYWxOYW1lLCBTdHJpbmcmIG5hbWVzcGFjZVVSSSk7Ci0g
ICAgICAgICAgICB2b2lkIHNldFBhcnNlUmVzdWx0KHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PiBleHByZXNzaW9uKSB7IG1fcmVzdWx0ID0gV1RGTW92ZShleHByZXNzaW9uKTsgfQorcHJpdmF0
ZToKKyAgICBQYXJzZXIoY29uc3QgU3RyaW5nJiwgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4mJik7
CiAKLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIFBhcnNlcihjb25zdCBTdHJpbmcmLCBS
ZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiYmKTsKKyAgICBzdHJ1Y3QgVG9rZW47CiAKLSAgICAgICAg
ICAgIHN0cnVjdCBUb2tlbjsKKyAgICBib29sIGlzQmluYXJ5T3BlcmF0b3JDb250ZXh0KCkgY29u
c3Q7CiAKLSAgICAgICAgICAgIGJvb2wgaXNCaW5hcnlPcGVyYXRvckNvbnRleHQoKSBjb25zdDsK
KyAgICB2b2lkIHNraXBXUygpOworICAgIFRva2VuIG1ha2VUb2tlbkFuZEFkdmFuY2UoaW50IHR5
cGUsIGludCBhZHZhbmNlID0gMSk7CisgICAgVG9rZW4gbWFrZVRva2VuQW5kQWR2YW5jZShpbnQg
dHlwZSwgTnVtZXJpY09wOjpPcGNvZGUsIGludCBhZHZhbmNlID0gMSk7CisgICAgVG9rZW4gbWFr
ZVRva2VuQW5kQWR2YW5jZShpbnQgdHlwZSwgRXFUZXN0T3A6Ok9wY29kZSwgaW50IGFkdmFuY2Ug
PSAxKTsKKyAgICBjaGFyIHBlZWtBaGVhZEhlbHBlcigpOworICAgIGNoYXIgcGVla0N1ckhlbHBl
cigpOwogCi0gICAgICAgICAgICB2b2lkIHNraXBXUygpOwotICAgICAgICAgICAgVG9rZW4gbWFr
ZVRva2VuQW5kQWR2YW5jZShpbnQgdHlwZSwgaW50IGFkdmFuY2UgPSAxKTsKLSAgICAgICAgICAg
IFRva2VuIG1ha2VUb2tlbkFuZEFkdmFuY2UoaW50IHR5cGUsIE51bWVyaWNPcDo6T3Bjb2RlLCBp
bnQgYWR2YW5jZSA9IDEpOwotICAgICAgICAgICAgVG9rZW4gbWFrZVRva2VuQW5kQWR2YW5jZShp
bnQgdHlwZSwgRXFUZXN0T3A6Ok9wY29kZSwgaW50IGFkdmFuY2UgPSAxKTsKLSAgICAgICAgICAg
IGNoYXIgcGVla0FoZWFkSGVscGVyKCk7Ci0gICAgICAgICAgICBjaGFyIHBlZWtDdXJIZWxwZXIo
KTsKKyAgICBUb2tlbiBsZXhTdHJpbmcoKTsKKyAgICBUb2tlbiBsZXhOdW1iZXIoKTsKKyAgICBi
b29sIGxleE5DTmFtZShTdHJpbmcmKTsKKyAgICBib29sIGxleFFOYW1lKFN0cmluZyYpOwogCi0g
ICAgICAgICAgICBUb2tlbiBsZXhTdHJpbmcoKTsKLSAgICAgICAgICAgIFRva2VuIGxleE51bWJl
cigpOwotICAgICAgICAgICAgYm9vbCBsZXhOQ05hbWUoU3RyaW5nJik7Ci0gICAgICAgICAgICBi
b29sIGxleFFOYW1lKFN0cmluZyYpOworICAgIFRva2VuIG5leHRUb2tlbigpOworICAgIFRva2Vu
IG5leHRUb2tlbkludGVybmFsKCk7CiAKLSAgICAgICAgICAgIFRva2VuIG5leHRUb2tlbigpOwot
ICAgICAgICAgICAgVG9rZW4gbmV4dFRva2VuSW50ZXJuYWwoKTsKKyAgICBjb25zdCBTdHJpbmcm
IG1fZGF0YTsKKyAgICBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiBtX3Jlc29sdmVyOwogCi0gICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIG1fZGF0YTsKLSAgICAgICAgICAgIFJlZlB0cjxYUGF0aE5T
UmVzb2x2ZXI+IG1fcmVzb2x2ZXI7CisgICAgdW5zaWduZWQgbV9uZXh0UG9zIHsgMCB9OworICAg
IGludCBtX2xhc3RUb2tlblR5cGUgeyAwIH07CiAKLSAgICAgICAgICAgIHVuc2lnbmVkIG1fbmV4
dFBvczsKLSAgICAgICAgICAgIGludCBtX2xhc3RUb2tlblR5cGU7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+IG1fcmVzdWx0OworICAgIGJvb2wgbV9zYXdOYW1lc3BhY2VFcnJvciB7
IGZhbHNlIH07Cit9OwogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4g
bV9yZXN1bHQ7Ci0gICAgICAgICAgICBib29sIG1fc2F3TmFtZXNwYWNlRXJyb3I7Ci0gICAgICAg
IH07Ci0KLSAgICB9Ci19Ci0KLSNlbmRpZgorfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmNw
cAppbmRleCA5Y2Y1NzQ2ZGY5MzEyNzUyYjk2NzMxYWMzMDNmMGJmMWE2MmI0MTE0Li43NTA4YzAy
MWNhZDQ5MGUzOWViMjk2NGIyYWZjNjI3YTU2YjRjMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJl
c3VsdC5jcHAKQEAgLTM2LDEwICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIFhQYXRoOwogCi1YUGF0aFJlc3VsdDo6WFBhdGhSZXN1bHQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBWYWx1ZSYgdmFsdWUpCitYUGF0aFJlc3VsdDo6WFBhdGhSZXN1bHQoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBWYWx1ZSYgdmFsdWUpCiAgICAgOiBtX3ZhbHVlKHZhbHVl
KQotICAgICwgbV9ub2RlU2V0UG9zaXRpb24oMCkKLSAgICAsIG1fZG9tVHJlZVZlcnNpb24oMCkK
IHsKICAgICBzd2l0Y2ggKG1fdmFsdWUudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgVmFsdWU6OkJv
b2xlYW5WYWx1ZToKQEAgLTU1LDggKzUzLDggQEAgWFBhdGhSZXN1bHQ6OlhQYXRoUmVzdWx0KERv
Y3VtZW50KiBkb2N1bWVudCwgY29uc3QgVmFsdWUmIHZhbHVlKQogICAgICAgICAgICAgbV9yZXN1
bHRUeXBlID0gVU5PUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRTsKICAgICAgICAgICAgIG1fbm9k
ZVNldFBvc2l0aW9uID0gMDsKICAgICAgICAgICAgIG1fbm9kZVNldCA9IG1fdmFsdWUudG9Ob2Rl
U2V0KCk7Ci0gICAgICAgICAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7Ci0gICAgICAgICAgICBt
X2RvbVRyZWVWZXJzaW9uID0gZG9jdW1lbnQtPmRvbVRyZWVWZXJzaW9uKCk7CisgICAgICAgICAg
ICBtX2RvY3VtZW50ID0gJmRvY3VtZW50OworICAgICAgICAgICAgbV9kb21UcmVlVmVyc2lvbiA9
IGRvY3VtZW50LmRvbVRyZWVWZXJzaW9uKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNjYsNTAgKzY0LDQ1IEBAIFhQYXRoUmVzdWx0
Ojp+WFBhdGhSZXN1bHQoKQogewogfQogCi12b2lkIFhQYXRoUmVzdWx0Ojpjb252ZXJ0VG8odW5z
aWduZWQgc2hvcnQgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBY
UGF0aFJlc3VsdDo6Y29udmVydFRvKHVuc2lnbmVkIHNob3J0IHR5cGUpCiB7CiAgICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgQU5ZX1RZUEU6Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBOVU1CRVJfVFlQRToKLSAgICAgICAgICAgIG1fcmVzdWx0VHlwZSA9IHR5cGU7
Ci0gICAgICAgICAgICBtX3ZhbHVlID0gbV92YWx1ZS50b051bWJlcigpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgU1RSSU5HX1RZUEU6Ci0gICAgICAgICAgICBtX3Jlc3VsdFR5
cGUgPSB0eXBlOwotICAgICAgICAgICAgbV92YWx1ZSA9IG1fdmFsdWUudG9TdHJpbmcoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJPT0xFQU5fVFlQRToKLSAgICAgICAgICAg
IG1fcmVzdWx0VHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICBtX3ZhbHVlID0gbV92YWx1ZS50b0Jv
b2xlYW4oKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFVOT1JERVJFRF9OT0RF
X0lURVJBVE9SX1RZUEU6Ci0gICAgICAgIGNhc2UgVU5PUkRFUkVEX05PREVfU05BUFNIT1RfVFlQ
RToKLSAgICAgICAgY2FzZSBBTllfVU5PUkRFUkVEX05PREVfVFlQRToKLSAgICAgICAgY2FzZSBG
SVJTVF9PUkRFUkVEX05PREVfVFlQRTogLy8gVGhpcyBpcyBjb3JyZWN0IC0gc2luZ2xlTm9kZVZh
bHVlKCkgd2lsbCB0YWtlIGNhcmUgb2Ygb3JkZXJpbmcuCi0gICAgICAgICAgICBpZiAoIW1fdmFs
dWUuaXNOb2RlU2V0KCkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IFhQYXRoRXhjZXB0aW9uOjpU
WVBFX0VSUjsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBtX3Jlc3VsdFR5cGUgPSB0eXBlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEU6Ci0gICAgICAgICAgICBpZiAoIW1fdmFsdWUu
aXNOb2RlU2V0KCkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IFhQYXRoRXhjZXB0aW9uOjpUWVBF
X0VSUjsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBtX25vZGVTZXQuc29ydCgpOwotICAgICAgICAgICAgbV9yZXN1bHRUeXBlID0gdHlwZTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBF
OgotICAgICAgICAgICAgaWYgKCFtX3ZhbHVlLmlzTm9kZVNldCgpKSB7Ci0gICAgICAgICAgICAg
ICAgZWMgPSBYUGF0aEV4Y2VwdGlvbjo6VFlQRV9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV92YWx1ZS50b05vZGVTZXQoKS5zb3J0KCk7
Ci0gICAgICAgICAgICBtX3Jlc3VsdFR5cGUgPSB0eXBlOwotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBTllfVFlQRToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOVU1CRVJfVFlQRToK
KyAgICAgICAgbV9yZXN1bHRUeXBlID0gdHlwZTsKKyAgICAgICAgbV92YWx1ZSA9IG1fdmFsdWUu
dG9OdW1iZXIoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVFJJTkdfVFlQRToKKyAgICAg
ICAgbV9yZXN1bHRUeXBlID0gdHlwZTsKKyAgICAgICAgbV92YWx1ZSA9IG1fdmFsdWUudG9TdHJp
bmcoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCT09MRUFOX1RZUEU6CisgICAgICAgIG1f
cmVzdWx0VHlwZSA9IHR5cGU7CisgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVlLnRvQm9vbGVhbigp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEU6
CisgICAgY2FzZSBVTk9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFOgorICAgIGNhc2UgQU5ZX1VO
T1JERVJFRF9OT0RFX1RZUEU6CisgICAgY2FzZSBGSVJTVF9PUkRFUkVEX05PREVfVFlQRTogLy8g
VGhpcyBpcyBjb3JyZWN0IC0gc2luZ2xlTm9kZVZhbHVlKCkgd2lsbCB0YWtlIGNhcmUgb2Ygb3Jk
ZXJpbmcuCisgICAgICAgIGlmICghbV92YWx1ZS5pc05vZGVTZXQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBYUGF0aEV4Y2VwdGlvbjo6VFlQRV9FUlIgfTsKKyAgICAgICAgbV9y
ZXN1bHRUeXBlID0gdHlwZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPUkRFUkVEX05PREVf
SVRFUkFUT1JfVFlQRToKKyAgICAgICAgaWYgKCFtX3ZhbHVlLmlzTm9kZVNldCgpKQorICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFhQYXRoRXhjZXB0aW9uOjpUWVBFX0VSUiB9OworICAg
ICAgICBtX25vZGVTZXQuc29ydCgpOworICAgICAgICBtX3Jlc3VsdFR5cGUgPSB0eXBlOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFOgorICAgICAg
ICBpZiAoIW1fdmFsdWUuaXNOb2RlU2V0KCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgWFBhdGhFeGNlcHRpb246OlRZUEVfRVJSIH07CisgICAgICAgIG1fdmFsdWUudG9Ob2RlU2V0
KCkuc29ydCgpOworICAgICAgICBtX3Jlc3VsdFR5cGUgPSB0eXBlOworICAgICAgICBicmVhazsK
ICAgICB9CisgICAgcmV0dXJuIHsgfTsKIH0KIAogdW5zaWduZWQgc2hvcnQgWFBhdGhSZXN1bHQ6
OnJlc3VsdFR5cGUoKSBjb25zdApAQCAtMTE3LDQxICsxMTAsMzMgQEAgdW5zaWduZWQgc2hvcnQg
WFBhdGhSZXN1bHQ6OnJlc3VsdFR5cGUoKSBjb25zdAogICAgIHJldHVybiBtX3Jlc3VsdFR5cGU7
CiB9CiAKLWRvdWJsZSBYUGF0aFJlc3VsdDo6bnVtYmVyVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMp
IGNvbnN0CitFeGNlcHRpb25Pcjxkb3VibGU+IFhQYXRoUmVzdWx0OjpudW1iZXJWYWx1ZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKHJlc3VsdFR5cGUoKSAhPSBOVU1CRVJfVFlQRSkgewotICAgICAgICBl
YyA9IFhQYXRoRXhjZXB0aW9uOjpUWVBFX0VSUjsKLSAgICAgICAgcmV0dXJuIDAuMDsKLSAgICB9
CisgICAgaWYgKHJlc3VsdFR5cGUoKSAhPSBOVU1CRVJfVFlQRSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFhQYXRoRXhjZXB0aW9uOjpUWVBFX0VSUiB9OwogICAgIHJldHVybiBtX3ZhbHVl
LnRvTnVtYmVyKCk7CiB9CiAKLVN0cmluZyBYUGF0aFJlc3VsdDo6c3RyaW5nVmFsdWUoRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0CitFeGNlcHRpb25PcjxTdHJpbmc+IFhQYXRoUmVzdWx0OjpzdHJp
bmdWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKHJlc3VsdFR5cGUoKSAhPSBTVFJJTkdfVFlQRSkg
ewotICAgICAgICBlYyA9IFhQYXRoRXhjZXB0aW9uOjpUWVBFX0VSUjsKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIH0KKyAgICBpZiAocmVzdWx0VHlwZSgpICE9IFNUUklOR19UWVBFKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgWFBhdGhFeGNlcHRpb246OlRZUEVfRVJSIH07CiAg
ICAgcmV0dXJuIG1fdmFsdWUudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBYUGF0aFJlc3VsdDo6Ym9v
bGVhblZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorRXhjZXB0aW9uT3I8Ym9vbD4gWFBh
dGhSZXN1bHQ6OmJvb2xlYW5WYWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKHJlc3VsdFR5cGUoKSAh
PSBCT09MRUFOX1RZUEUpIHsKLSAgICAgICAgZWMgPSBYUGF0aEV4Y2VwdGlvbjo6VFlQRV9FUlI7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgaWYgKHJlc3VsdFR5cGUoKSAhPSBC
T09MRUFOX1RZUEUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBYUGF0aEV4Y2VwdGlvbjo6
VFlQRV9FUlIgfTsKICAgICByZXR1cm4gbV92YWx1ZS50b0Jvb2xlYW4oKTsKIH0KIAotTm9kZSog
WFBhdGhSZXN1bHQ6OnNpbmdsZU5vZGVWYWx1ZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK0V4
Y2VwdGlvbk9yPE5vZGUqPiBYUGF0aFJlc3VsdDo6c2luZ2xlTm9kZVZhbHVlKCkgY29uc3QKIHsK
LSAgICBpZiAocmVzdWx0VHlwZSgpICE9IEFOWV9VTk9SREVSRURfTk9ERV9UWVBFICYmIHJlc3Vs
dFR5cGUoKSAhPSBGSVJTVF9PUkRFUkVEX05PREVfVFlQRSkgewotICAgICAgICBlYyA9IFhQYXRo
RXhjZXB0aW9uOjpUWVBFX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAKLSAgICBj
b25zdCBOb2RlU2V0JiBub2RlcyA9IG1fdmFsdWUudG9Ob2RlU2V0KCk7CisgICAgaWYgKHJlc3Vs
dFR5cGUoKSAhPSBBTllfVU5PUkRFUkVEX05PREVfVFlQRSAmJiByZXN1bHRUeXBlKCkgIT0gRklS
U1RfT1JERVJFRF9OT0RFX1RZUEUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBYUGF0aEV4
Y2VwdGlvbjo6VFlQRV9FUlIgfTsKKworICAgIGF1dG8mIG5vZGVzID0gbV92YWx1ZS50b05vZGVT
ZXQoKTsKICAgICBpZiAocmVzdWx0VHlwZSgpID09IEZJUlNUX09SREVSRURfTk9ERV9UWVBFKQog
ICAgICAgICByZXR1cm4gbm9kZXMuZmlyc3ROb2RlKCk7CiAgICAgZWxzZQpAQCAtMTY3LDQ5ICsx
NTIsMzcgQEAgYm9vbCBYUGF0aFJlc3VsdDo6aW52YWxpZEl0ZXJhdG9yU3RhdGUoKSBjb25zdAog
ICAgIHJldHVybiBtX2RvY3VtZW50LT5kb21UcmVlVmVyc2lvbigpICE9IG1fZG9tVHJlZVZlcnNp
b247CiB9CiAKLXVuc2lnbmVkIFhQYXRoUmVzdWx0OjpzbmFwc2hvdExlbmd0aChFeGNlcHRpb25D
b2RlJiBlYykgY29uc3QKK0V4Y2VwdGlvbk9yPHVuc2lnbmVkPiBYUGF0aFJlc3VsdDo6c25hcHNo
b3RMZW5ndGgoKSBjb25zdAogewotICAgIGlmIChyZXN1bHRUeXBlKCkgIT0gVU5PUkRFUkVEX05P
REVfU05BUFNIT1RfVFlQRSAmJiByZXN1bHRUeXBlKCkgIT0gT1JERVJFRF9OT0RFX1NOQVBTSE9U
X1RZUEUpIHsKLSAgICAgICAgZWMgPSBYUGF0aEV4Y2VwdGlvbjo6VFlQRV9FUlI7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KKyAgICBpZiAocmVzdWx0VHlwZSgpICE9IFVOT1JERVJFRF9OT0RF
X1NOQVBTSE9UX1RZUEUgJiYgcmVzdWx0VHlwZSgpICE9IE9SREVSRURfTk9ERV9TTkFQU0hPVF9U
WVBFKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgWFBhdGhFeGNlcHRpb246OlRZUEVfRVJS
IH07CiAKICAgICByZXR1cm4gbV92YWx1ZS50b05vZGVTZXQoKS5zaXplKCk7CiB9CiAKLU5vZGUq
IFhQYXRoUmVzdWx0OjppdGVyYXRlTmV4dChFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9y
PE5vZGUqPiBYUGF0aFJlc3VsdDo6aXRlcmF0ZU5leHQoKQogewotICAgIGlmIChyZXN1bHRUeXBl
KCkgIT0gVU5PUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSAmJiByZXN1bHRUeXBlKCkgIT0gT1JE
RVJFRF9OT0RFX0lURVJBVE9SX1RZUEUpIHsKLSAgICAgICAgZWMgPSBYUGF0aEV4Y2VwdGlvbjo6
VFlQRV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKLSAgICBpZiAoaW52YWxp
ZEl0ZXJhdG9yU3RhdGUoKSkgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1fbm9kZVNldFBvc2l0aW9uICsg
MSA+IG1fbm9kZVNldC5zaXplKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmIChyZXN1bHRU
eXBlKCkgIT0gVU5PUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSAmJiByZXN1bHRUeXBlKCkgIT0g
T1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBY
UGF0aEV4Y2VwdGlvbjo6VFlQRV9FUlIgfTsKKworICAgIGlmIChpbnZhbGlkSXRlcmF0b3JTdGF0
ZSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKIAot
ICAgIE5vZGUqIG5vZGUgPSBtX25vZGVTZXRbbV9ub2RlU2V0UG9zaXRpb25dOwotICAgIAotICAg
IG1fbm9kZVNldFBvc2l0aW9uKys7CisgICAgaWYgKG1fbm9kZVNldFBvc2l0aW9uID49IG1fbm9k
ZVNldC5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG5vZGU7
CisgICAgcmV0dXJuIG1fbm9kZVNldFttX25vZGVTZXRQb3NpdGlvbisrXTsKIH0KIAotTm9kZSog
WFBhdGhSZXN1bHQ6OnNuYXBzaG90SXRlbSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitFeGNlcHRpb25PcjxOb2RlKj4gWFBhdGhSZXN1bHQ6OnNuYXBzaG90SXRlbSh1bnNpZ25l
ZCBpbmRleCkKIHsKLSAgICBpZiAocmVzdWx0VHlwZSgpICE9IFVOT1JERVJFRF9OT0RFX1NOQVBT
SE9UX1RZUEUgJiYgcmVzdWx0VHlwZSgpICE9IE9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFKSB7
Ci0gICAgICAgIGVjID0gWFBhdGhFeGNlcHRpb246OlRZUEVfRVJSOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0gICAgCi0gICAgY29uc3QgTm9kZVNldCYgbm9kZXMgPSBtX3ZhbHVlLnRvTm9k
ZVNldCgpOworICAgIGlmIChyZXN1bHRUeXBlKCkgIT0gVU5PUkRFUkVEX05PREVfU05BUFNIT1Rf
VFlQRSAmJiByZXN1bHRUeXBlKCkgIT0gT1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBYUGF0aEV4Y2VwdGlvbjo6VFlQRV9FUlIgfTsKKworICAg
IGF1dG8mIG5vZGVzID0gbV92YWx1ZS50b05vZGVTZXQoKTsKICAgICBpZiAoaW5kZXggPj0gbm9k
ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKICAgICByZXR1cm4gbm9kZXNbaW5kZXhdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJlc3Vs
dC5oCmluZGV4IGJjMDJhMTU2NzE0MjYxMjg5ZjQxOThhMzE0NGMwYzY4MTEwYjRjYTQuLmFlYTg1
MzVjMzA5NjE3MDQ0YWY2MjA3MWVmYjkzNTk2ODU1MDUyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJl
c3VsdC5oCkBAIC0yNiw2MCArMjYsNTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlhQYXRoVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CitjbGFzcyBYUGF0aFJlc3VsdCA6
IHB1YmxpYyBSZWZDb3VudGVkPFhQYXRoUmVzdWx0PiB7CitwdWJsaWM6CisgICAgZW51bSBYUGF0
aFJlc3VsdFR5cGUgeworICAgICAgICBBTllfVFlQRSA9IDAsCisgICAgICAgIE5VTUJFUl9UWVBF
ID0gMSwKKyAgICAgICAgU1RSSU5HX1RZUEUgPSAyLAorICAgICAgICBCT09MRUFOX1RZUEUgPSAz
LAorICAgICAgICBVTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFID0gNCwKKyAgICAgICAgT1JE
RVJFRF9OT0RFX0lURVJBVE9SX1RZUEUgPSA1LAorICAgICAgICBVTk9SREVSRURfTk9ERV9TTkFQ
U0hPVF9UWVBFID0gNiwKKyAgICAgICAgT1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUgPSA3LAor
ICAgICAgICBBTllfVU5PUkRFUkVEX05PREVfVFlQRSA9IDgsCisgICAgICAgIEZJUlNUX09SREVS
RURfTk9ERV9UWVBFID0gOQorICAgIH07CiAKLSAgICBjbGFzcyBEb2N1bWVudDsKLSAgICBjbGFz
cyBOb2RlOworICAgIHN0YXRpYyBSZWY8WFBhdGhSZXN1bHQ+IGNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFhQYXRoOjpWYWx1ZSYgdmFsdWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
WFBhdGhSZXN1bHQoZG9jdW1lbnQsIHZhbHVlKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB+WFBh
dGhSZXN1bHQoKTsKIAotICAgIGNsYXNzIFhQYXRoUmVzdWx0IDogcHVibGljIFJlZkNvdW50ZWQ8
WFBhdGhSZXN1bHQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gWFBhdGhSZXN1bHRUeXBl
IHsKLSAgICAgICAgICAgIEFOWV9UWVBFID0gMCwKLSAgICAgICAgICAgIE5VTUJFUl9UWVBFID0g
MSwKLSAgICAgICAgICAgIFNUUklOR19UWVBFID0gMiwKLSAgICAgICAgICAgIEJPT0xFQU5fVFlQ
RSA9IDMsCi0gICAgICAgICAgICBVTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFID0gNCwKLSAg
ICAgICAgICAgIE9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFID0gNSwKLSAgICAgICAgICAgIFVO
T1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUgPSA2LAotICAgICAgICAgICAgT1JERVJFRF9OT0RF
X1NOQVBTSE9UX1RZUEUgPSA3LAotICAgICAgICAgICAgQU5ZX1VOT1JERVJFRF9OT0RFX1RZUEUg
PSA4LAotICAgICAgICAgICAgRklSU1RfT1JERVJFRF9OT0RFX1RZUEUgPSA5Ci0gICAgICAgIH07
Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgUmVmPFhQYXRoUmVzdWx0PiBjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBYUGF0aDo6VmFsdWUmIHZhbHVlKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFhQYXRoUmVzdWx0KGRvY3VtZW50LCB2YWx1ZSkpOyB9Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIH5YUGF0aFJlc3VsdCgpOwotICAgICAgICAKLSAgICAgICAgdm9pZCBjb252ZXJ0VG8o
dW5zaWduZWQgc2hvcnQgdHlwZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IGNvbnZlcnRUbyh1bnNpZ25lZCBzaG9ydCB0eXBlKTsKIAotICAgICAgICBXRUJDT1JFX0VY
UE9SVCB1bnNpZ25lZCBzaG9ydCByZXN1bHRUeXBlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgdW5zaWduZWQgc2hvcnQgcmVzdWx0VHlwZSgpIGNvbnN0OwogCi0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIGRvdWJsZSBudW1iZXJWYWx1ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdWYWx1ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7
Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYm9vbGVhblZhbHVlKEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgTm9kZSogc2luZ2xlTm9kZVZhbHVlKEV4
Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjxkb3Vi
bGU+IG51bWJlclZhbHVlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8
U3RyaW5nPiBzdHJpbmdWYWx1ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlv
bk9yPGJvb2w+IGJvb2xlYW5WYWx1ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPE5vZGUqPiBzaW5nbGVOb2RlVmFsdWUoKSBjb25zdDsKIAotICAgICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGludmFsaWRJdGVyYXRvclN0YXRlKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNP
UkVfRVhQT1JUIHVuc2lnbmVkIHNuYXBzaG90TGVuZ3RoKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
LSAgICAgICAgV0VCQ09SRV9FWFBPUlQgTm9kZSogaXRlcmF0ZU5leHQoRXhjZXB0aW9uQ29kZSYp
OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBOb2RlKiBzbmFwc2hvdEl0ZW0odW5zaWduZWQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGludmFsaWRJdGVy
YXRvclN0YXRlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dW5zaWdu
ZWQ+IHNuYXBzaG90TGVuZ3RoKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9u
T3I8Tm9kZSo+IGl0ZXJhdGVOZXh0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8
Tm9kZSo+IHNuYXBzaG90SXRlbSh1bnNpZ25lZCBpbmRleCk7CiAKLSAgICAgICAgY29uc3QgWFBh
dGg6OlZhbHVlJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBjb25zdCBY
UGF0aDo6VmFsdWUmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgWFBhdGhSZXN1bHQoRG9jdW1lbnQqLCBjb25zdCBYUGF0aDo6VmFsdWUm
KTsKLSAgICAgICAgCi0gICAgICAgIFhQYXRoOjpWYWx1ZSBtX3ZhbHVlOwotICAgICAgICB1bnNp
Z25lZCBtX25vZGVTZXRQb3NpdGlvbjsKLSAgICAgICAgWFBhdGg6Ok5vZGVTZXQgbV9ub2RlU2V0
OyAvLyBGSVhNRTogd2h5IGR1cGxpY2F0ZSB0aGUgbm9kZSBzZXQgc3RvcmVkIGluIG1fdmFsdWU/
Ci0gICAgICAgIHVuc2lnbmVkIHNob3J0IG1fcmVzdWx0VHlwZTsKLSAgICAgICAgUmVmUHRyPERv
Y3VtZW50PiBtX2RvY3VtZW50OwotICAgICAgICB1aW50NjRfdCBtX2RvbVRyZWVWZXJzaW9uOwot
ICAgIH07Citwcml2YXRlOgorICAgIFhQYXRoUmVzdWx0KERvY3VtZW50JiwgY29uc3QgWFBhdGg6
OlZhbHVlJik7CisKKyAgICBYUGF0aDo6VmFsdWUgbV92YWx1ZTsKKyAgICB1bnNpZ25lZCBtX25v
ZGVTZXRQb3NpdGlvbiB7IDAgfTsKKyAgICBYUGF0aDo6Tm9kZVNldCBtX25vZGVTZXQ7IC8vIEZJ
WE1FOiB3aHkgZHVwbGljYXRlIHRoZSBub2RlIHNldCBzdG9yZWQgaW4gbV92YWx1ZT8KKyAgICB1
bnNpZ25lZCBzaG9ydCBtX3Jlc3VsdFR5cGU7CisgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3Vt
ZW50OworICAgIHVpbnQ2NF90IG1fZG9tVHJlZVZlcnNpb24geyAwIH07Cit9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhSZXN1
bHQuaWRsIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmlkbAppbmRleCBjZGFjYjY2
NmFhNjY1N2QzY2M0ZTBhNTY4ZDYwNjdiZWM2MzFlMzQ1Li45NzUyY2Y2ODdiYjY1NmU1OWQxYjcx
NWYwMTQwMzQ2ZjU1ZjZjMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhS
ZXN1bHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJlc3VsdC5pZGwKQEAgLTM0
LDE0ICszNCwxNCBAQAogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEZJUlNUX09SREVSRURfTk9E
RV9UWVBFID0gOTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZXN1
bHRUeXBlOwotICAgIFtHZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0
cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgbnVtYmVyVmFsdWU7Ci0gICAgW0dldHRlck1heVRo
cm93TGVnYWN5RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHN0cmluZ1Zh
bHVlOwotICAgIFtHZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gYm9vbGVhblZhbHVlOwotICAgIFtHZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2Vw
dGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgc2luZ2xlTm9kZVZhbHVlOworICAgIFtHZXR0
ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3Vi
bGUgbnVtYmVyVmFsdWU7CisgICAgW0dldHRlck1heVRocm93RXhjZXB0aW9uXSByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHN0cmluZ1ZhbHVlOworICAgIFtHZXR0ZXJNYXlUaHJvd0V4Y2Vw
dGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYm9vbGVhblZhbHVlOworICAgIFtHZXR0
ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgc2luZ2xlTm9kZVZh
bHVlOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaW52YWxpZEl0ZXJhdG9yU3Rh
dGU7Ci0gICAgW0dldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBzbmFwc2hvdExlbmd0aDsKKyAgICBbR2V0dGVyTWF5VGhyb3dFeGNl
cHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHNuYXBzaG90TGVuZ3RoOwog
Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBOb2RlIGl0ZXJhdGVOZXh0KCk7Ci0gICAg
W01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBOb2RlIHNuYXBzaG90SXRlbShvcHRpb25hbCB1bnNp
Z25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlIGl0ZXJh
dGVOZXh0KCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlIHNuYXBzaG90SXRlbShvcHRp
b25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURv
Y3VtZW50Lm1tCmluZGV4IGEyYTBjYWE1MjcyYzljOTg4NjZhYTRmMDliY2MwOGFhNjExNWQ3MmUu
LmZlMTk2ZjE0OTY1MTY5M2FkZDQ0OTc5YjIwOWMzNzlhZGU4ZTYzOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9ET00vRE9NRG9jdW1lbnQubW0KQEAgLTYxMiwyMyArNjEyLDE5IEBAIC0gKERPTUNTU1N0eWxl
RGVjbGFyYXRpb24gKilnZXRPdmVycmlkZVN0eWxlOihET01FbGVtZW50ICopZWxlbWVudCBwc2V1
ZG9FbGVtZW50CiAgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5nZXRPdmVycmlkZVN0
eWxlKGNvcmUoZWxlbWVudCksIHBzZXVkb0VsZW1lbnQpKSk7CiB9CiAKK3N0YXRpYyBSZWZQdHI8
V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyPiB3cmFwKGlkIDxET01YUGF0aE5TUmVzb2x2ZXI+IHJl
c29sdmVyKQoreworICAgIGlmICghcmVzb2x2ZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGlmIChbcmVzb2x2ZXIgaXNNZW1iZXJPZkNsYXNzOltET01OYXRpdmVYUGF0aE5TUmVzb2x2
ZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIGNvcmUoc3RhdGljX2Nhc3Q8RE9NTmF0aXZlWFBh
dGhOU1Jlc29sdmVyICo+KHJlc29sdmVyKSk7CisgICAgcmV0dXJuIERPTUN1c3RvbVhQYXRoTlNS
ZXNvbHZlcjo6Y3JlYXRlKHJlc29sdmVyKTsKK30KKwogLSAoRE9NWFBhdGhFeHByZXNzaW9uICop
Y3JlYXRlRXhwcmVzc2lvbjooTlNTdHJpbmcgKilleHByZXNzaW9uIHJlc29sdmVyOihpZCA8RE9N
WFBhdGhOU1Jlc29sdmVyPilyZXNvbHZlcgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqIG5hdGl2ZVJlc29s
dmVyID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyPiBjdXN0b21SZXNv
bHZlcjsKLSAgICBpZiAocmVzb2x2ZXIpIHsKLSAgICAgICAgaWYgKFtyZXNvbHZlciBpc01lbWJl
ck9mQ2xhc3M6W0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBjbGFzc11dKQotICAgICAgICAgICAg
bmF0aXZlUmVzb2x2ZXIgPSBjb3JlKHN0YXRpY19jYXN0PERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZl
ciAqPihyZXNvbHZlcikpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGN1c3RvbVJlc29s
dmVyID0gRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUocmVzb2x2ZXIpOwotICAgICAg
ICAgICAgbmF0aXZlUmVzb2x2ZXIgPSBXVEY6OmdldFB0cihjdXN0b21SZXNvbHZlcik7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9N
WFBhdGhFeHByZXNzaW9uICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlRXhw
cmVzc2lvbihleHByZXNzaW9uLCBXVEY6OmdldFB0cihuYXRpdmVSZXNvbHZlciksIGVjKSkpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4g
a2l0KHJhaXNlT25ET01FcnJvcihJTVBMLT5jcmVhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24sIHdy
YXAocmVzb2x2ZXIpKSkucHRyKCkpOwogfQogCiAtIChpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPilj
cmVhdGVOU1Jlc29sdmVyOihET01Ob2RlICopbm9kZVJlc29sdmVyCkBAIC02NDAsMjAgKzYzNiw3
IEBAIC0gKGlkIDxET01YUGF0aE5TUmVzb2x2ZXI+KWNyZWF0ZU5TUmVzb2x2ZXI6KERPTU5vZGUg
Kilub2RlUmVzb2x2ZXIKIC0gKERPTVhQYXRoUmVzdWx0ICopZXZhbHVhdGU6KE5TU3RyaW5nICop
ZXhwcmVzc2lvbiBjb250ZXh0Tm9kZTooRE9NTm9kZSAqKWNvbnRleHROb2RlIHJlc29sdmVyOihp
ZCA8RE9NWFBhdGhOU1Jlc29sdmVyPilyZXNvbHZlciB0eXBlOih1bnNpZ25lZCBzaG9ydCl0eXBl
IGluUmVzdWx0OihET01YUGF0aFJlc3VsdCAqKWluUmVzdWx0CiB7CiAgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlciog
bmF0aXZlUmVzb2x2ZXIgPSAwOwotICAgIFJlZlB0cjxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXI+
IGN1c3RvbVJlc29sdmVyOwotICAgIGlmIChyZXNvbHZlcikgewotICAgICAgICBpZiAoW3Jlc29s
dmVyIGlzTWVtYmVyT2ZDbGFzczpbRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyIGNsYXNzXV0pCi0g
ICAgICAgICAgICBuYXRpdmVSZXNvbHZlciA9IGNvcmUoc3RhdGljX2Nhc3Q8RE9NTmF0aXZlWFBh
dGhOU1Jlc29sdmVyICo+KHJlc29sdmVyKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
Y3VzdG9tUmVzb2x2ZXIgPSBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXI6OmNyZWF0ZShyZXNvbHZl
cik7Ci0gICAgICAgICAgICBuYXRpdmVSZXNvbHZlciA9IFdURjo6Z2V0UHRyKGN1c3RvbVJlc29s
dmVyKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBET01YUGF0aFJlc3VsdCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmV2
YWx1YXRlKGV4cHJlc3Npb24sIGNvcmUoY29udGV4dE5vZGUpLCBXVEY6OmdldFB0cihuYXRpdmVS
ZXNvbHZlciksIHR5cGUsIGNvcmUoaW5SZXN1bHQpLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGtpdChyYWlzZU9uRE9NRXJy
b3IoSU1QTC0+ZXZhbHVhdGUoZXhwcmVzc2lvbiwgY29yZShjb250ZXh0Tm9kZSksIHdyYXAocmVz
b2x2ZXIpLCB0eXBlLCBjb3JlKGluUmVzdWx0KSkpLnB0cigpKTsKIH0KIAogLSAoQk9PTClleGVj
Q29tbWFuZDooTlNTdHJpbmcgKiljb21tYW5kIHVzZXJJbnRlcmZhY2U6KEJPT0wpdXNlckludGVy
ZmFjZSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvRE9NL0RPTVhQYXRoRXhwcmVzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Y
UGF0aEV4cHJlc3Npb24ubW0KaW5kZXggMzFlNzkwNzMzNDc2YzhlOWU5MDE4YmQwZDZiOGNmNGRk
ZTMyNGQzYi4uMGUwZTA2OTU3NjNhZDExNWM0YmJlMzI0NzNlYWU4NDAzZTRiYzA2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTVhQYXRoRXhwcmVzc2lvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9ET00vRE9NWFBhdGhFeHByZXNzaW9uLm1tCkBAIC01NSwxMCArNTUs
NyBAQCAtICh2b2lkKWRlYWxsb2MKIC0gKERPTVhQYXRoUmVzdWx0ICopZXZhbHVhdGU6KERPTU5v
ZGUgKiljb250ZXh0Tm9kZSB0eXBlOih1bnNpZ25lZCBzaG9ydCl0eXBlIGluUmVzdWx0OihET01Y
UGF0aFJlc3VsdCAqKWluUmVzdWx0CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTVhQ
YXRoUmVzdWx0ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+ZXZhbHVhdGUoY29yZShj
b250ZXh0Tm9kZSksIHR5cGUsIGNvcmUoaW5SZXN1bHQpLCBlYykpKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGtpdChyYWlzZU9uRE9N
RXJyb3IoSU1QTC0+ZXZhbHVhdGUoY29yZShjb250ZXh0Tm9kZSksIHR5cGUsIGNvcmUoaW5SZXN1
bHQpKSkucHRyKCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9E
T00vRE9NWFBhdGhSZXN1bHQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NWFBhdGhSZXN1
bHQubW0KaW5kZXggMTRkN2U0MTVkYTFiZjg0ZGZjZjc0OWFiZGI4YzFkZWQ4MWFmNWIwNi4uOWUy
MWZmYzgxYWQ3NDBiZGVjOTBiYTE5YmJmZjA2OTlhNjUxMTc4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0RPTS9ET01YUGF0aFJlc3VsdC5tbQpAQCAtNjAsMzcgKzYwLDI1IEBAIC0gKHVuc2lnbmVkIHNo
b3J0KXJlc3VsdFR5cGUKIC0gKGRvdWJsZSludW1iZXJWYWx1ZQogewogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBkb3VibGUgcmVzdWx0ID0gSU1QTC0+bnVtYmVyVmFsdWUoZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmFpc2VP
bkRPTUVycm9yKElNUEwtPm51bWJlclZhbHVlKCkpOwogfQogCiAtIChOU1N0cmluZyAqKXN0cmlu
Z1ZhbHVlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5TU3RyaW5nICpyZXN1bHQgPSBJ
TVBMLT5zdHJpbmdWYWx1ZShlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1
cm4gcmVzdWx0OworICAgIHJldHVybiByYWlzZU9uRE9NRXJyb3IoSU1QTC0+c3RyaW5nVmFsdWUo
KSk7CiB9CiAKIC0gKEJPT0wpYm9vbGVhblZhbHVlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIEJPT0wgcmVzdWx0ID0gSU1QTC0+Ym9vbGVhblZhbHVlKGVjKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJv
cihJTVBMLT5ib29sZWFuVmFsdWUoKSk7CiB9CiAKIC0gKERPTU5vZGUgKilzaW5nbGVOb2RlVmFs
dWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0ga2l0KFdU
Rjo6Z2V0UHRyKElNUEwtPnNpbmdsZU5vZGVWYWx1ZShlYykpKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGtpdChyYWlzZU9uRE9NRXJy
b3IoSU1QTC0+c2luZ2xlTm9kZVZhbHVlKCkpKTsKIH0KIAogLSAoQk9PTClpbnZhbGlkSXRlcmF0
b3JTdGF0ZQpAQCAtMTAyLDM1ICs5MCwyNiBAQCAtIChCT09MKWludmFsaWRJdGVyYXRvclN0YXRl
CiAtICh1bnNpZ25lZClzbmFwc2hvdExlbmd0aAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICB1bnNpZ25lZCByZXN1bHQgPSBJTVBMLT5zbmFwc2hvdExlbmd0aChlYyk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByYWlzZU9uRE9N
RXJyb3IoSU1QTC0+c25hcHNob3RMZW5ndGgoKSk7CiB9CiAKIC0gKERPTU5vZGUgKilpdGVyYXRl
TmV4dAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBraXQo
V1RGOjpnZXRQdHIoSU1QTC0+aXRlcmF0ZU5leHQoZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBraXQocmFpc2VPbkRPTUVycm9y
KElNUEwtPml0ZXJhdGVOZXh0KCkpKTsKIH0KIAogLSAoRE9NTm9kZSAqKXNuYXBzaG90SXRlbToo
dW5zaWduZWQpaW5kZXgKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVz
dWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnNuYXBzaG90SXRlbShpbmRleCwgZWMpKSk7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBr
aXQocmFpc2VPbkRPTUVycm9yKElNUEwtPnNuYXBzaG90SXRlbShpbmRleCkpKTsKIH0KIAogQGVu
ZAogCiBXZWJDb3JlOjpYUGF0aFJlc3VsdCogY29yZShET01YUGF0aFJlc3VsdCAqd3JhcHBlcikK
IHsKLSAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6WFBhdGhS
ZXN1bHQqPih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKKyAgICByZXR1cm4gd3JhcHBlciA/IHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6WFBhdGhSZXN1bHQqPih3cmFwcGVyLT5faW50ZXJuYWwp
IDogbnVsbHB0cjsKIH0KIAogRE9NWFBhdGhSZXN1bHQgKmtpdChXZWJDb3JlOjpYUGF0aFJlc3Vs
dCogdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnQu
Y3BwCmluZGV4IGUyODJhYjQ5ZjhmNGQ3YWFkYTA1M2NiMTllMjI2MTUxOGUzYWIzMzcuLjE1YTU4
OTcwMTE5NTVkYWE3OTA2NGFjNTJkMzljYTRlMGY1YjdlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnQuY3BwCkBAIC0xMTY5LDEzICsxMTY5LDEzIEBA
IFdlYktpdERPTVhQYXRoRXhwcmVzc2lvbiogd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfZXhw
cmVzc2lvbihXZWJLaXRET01Eb2N1bWVuCiAgICAgV2ViQ29yZTo6RG9jdW1lbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkRXhwcmVzc2lvbiA9
IFdURjo6U3RyaW5nOjpmcm9tVVRGOChleHByZXNzaW9uKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6
WFBhdGhOU1Jlc29sdmVyPiBjb252ZXJ0ZWRSZXNvbHZlciA9IFdlYktpdDo6Y29yZShyZXNvbHZl
cik7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlhQYXRoRXhwcmVzc2lvbj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmNy
ZWF0ZUV4cHJlc3Npb24oY29udmVydGVkRXhwcmVzc2lvbiwgV1RGOjpnZXRQdHIoY29udmVydGVk
UmVzb2x2ZXIpLCBlYykpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0tPmNy
ZWF0ZUV4cHJlc3Npb24oY29udmVydGVkRXhwcmVzc2lvbiwgV1RGTW92ZShjb252ZXJ0ZWRSZXNv
bHZlcikpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtf
ZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2Jq
ZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQocmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLnB0cigpKTsKIH0KIAogV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyKiB3ZWJr
aXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9uc19yZXNvbHZlcihXZWJLaXRET01Eb2N1bWVudCogc2Vs
ZiwgV2ViS2l0RE9NTm9kZSogbm9kZVJlc29sdmVyKQpAQCAtMTIwMywxMyArMTIwMywxMyBAQCBX
ZWJLaXRET01YUGF0aFJlc3VsdCogd2Via2l0X2RvbV9kb2N1bWVudF9ldmFsdWF0ZShXZWJLaXRE
T01Eb2N1bWVudCogc2VsZiwgY29ucwogICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZENvbnRl
eHROb2RlID0gV2ViS2l0Ojpjb3JlKGNvbnRleHROb2RlKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6
WFBhdGhOU1Jlc29sdmVyPiBjb252ZXJ0ZWRSZXNvbHZlciA9IFdlYktpdDo6Y29yZShyZXNvbHZl
cik7CiAgICAgV2ViQ29yZTo6WFBhdGhSZXN1bHQqIGNvbnZlcnRlZEluUmVzdWx0ID0gV2ViS2l0
Ojpjb3JlKGluUmVzdWx0KTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6WFBhdGhSZXN1bHQ+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0
cihpdGVtLT5ldmFsdWF0ZShjb252ZXJ0ZWRFeHByZXNzaW9uLCBjb252ZXJ0ZWRDb250ZXh0Tm9k
ZSwgV1RGOjpnZXRQdHIoY29udmVydGVkUmVzb2x2ZXIpLCB0eXBlLCBjb252ZXJ0ZWRJblJlc3Vs
dCwgZWMpKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5ldmFsdWF0ZShj
b252ZXJ0ZWRFeHByZXNzaW9uLCBjb252ZXJ0ZWRDb250ZXh0Tm9kZSwgV1RGTW92ZShjb252ZXJ0
ZWRSZXNvbHZlciksIHR5cGUsIGNvbnZlcnRlZEluUmVzdWx0KTsKKyAgICBpZiAocmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
biBlY2Rlc2MocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3Nl
dF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiks
IGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6a2l0KHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAK
IGdib29sZWFuIHdlYmtpdF9kb21fZG9jdW1lbnRfZXhlY19jb21tYW5kKFdlYktpdERPTURvY3Vt
ZW50KiBzZWxmLCBjb25zdCBnY2hhciogY29tbWFuZCwgZ2Jvb2xlYW4gdXNlckludGVyZmFjZSwg
Y29uc3QgZ2NoYXIqIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01YUGF0aEV4cHJlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01YUGF0aEV4cHJlc3Npb24uY3BwCmluZGV4IDRkN2M5MzlhOTEyZjJkZjhlZDNiODU0
MThlZmUzZWY1ZjNjNWFmY2UuLjllZDkzN2I1M2QzYjE5NDBkNzc5ZDEzNjhhYjg3ODVkODkxN2Qy
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NWFBhdGhFeHByZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVhQYXRo
RXhwcmVzc2lvbi5jcHAKQEAgLTExNCwxMiArMTE0LDEyIEBAIFdlYktpdERPTVhQYXRoUmVzdWx0
KiB3ZWJraXRfZG9tX3hwYXRoX2V4cHJlc3Npb25fZXZhbHVhdGUoV2ViS2l0RE9NWFBhdGhFeHBy
ZXNzCiAgICAgV2ViQ29yZTo6WFBhdGhFeHByZXNzaW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwogICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZENvbnRleHROb2RlID0gV2ViS2l0Ojpj
b3JlKGNvbnRleHROb2RlKTsKICAgICBXZWJDb3JlOjpYUGF0aFJlc3VsdCogY29udmVydGVkSW5S
ZXN1bHQgPSBXZWJLaXQ6OmNvcmUoaW5SZXN1bHQpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJDb3JlOjpYUGF0aFJlc3VsdD4gZ29iamVjdFJlc3Vs
dCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmV2YWx1YXRlKGNvbnZlcnRlZENvbnRleHROb2RlLCB0eXBl
LCBjb252ZXJ0ZWRJblJlc3VsdCwgZWMpKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQg
PSBpdGVtLT5ldmFsdWF0ZShjb252ZXJ0ZWRDb250ZXh0Tm9kZSwgdHlwZSwgY29udmVydGVkSW5S
ZXN1bHQpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtf
ZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2Jq
ZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQocmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLnB0cigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01YUGF0aFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTVhQYXRoUmVzdWx0LmNwcAppbmRleCA5MTlmMGFhZjJmYWNjOWExNjI5NDM4YTI5
ZmZkZWMyZmIxZDA4YWUwLi5mYzc1YzA3Y2VhOWYxY2FkNGEyODM5NDZmYTljMmVkMjE5NTY4ZGU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTVhQYXRoUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVhQYXRoUmVzdWx0
LmNwcApAQCAtMjI0LDEzICsyMjQsMTMgQEAgV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV94cGF0
aF9yZXN1bHRfaXRlcmF0ZV9uZXh0KFdlYktpdERPTVhQYXRoUmVzdWx0KiBzZWxmLAogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfWFBBVEhfUkVTVUxUKHNlbGYpLCAwKTsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghZXJyb3IgfHwgISplcnJvciwgMCk7CiAgICAgV2Vi
Q29yZTo6WFBhdGhSZXN1bHQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IGdvYmpl
Y3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5pdGVyYXRlTmV4dChlYykpOwotICAgIGlmIChl
YykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVj
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0tPml0ZXJhdGVOZXh0KCk7CisgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24gZWNkZXNjKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAgICAg
Z19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RP
TSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAg
IHJldHVybiBXZWJLaXQ6OmtpdChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOwogfQogCiBX
ZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX3hwYXRoX3Jlc3VsdF9zbmFwc2hvdF9pdGVtKFdlYktp
dERPTVhQYXRoUmVzdWx0KiBzZWxmLCBndWxvbmcgaW5kZXgsIEdFcnJvcioqIGVycm9yKQpAQCAt
MjM5LDEzICsyMzksMTMgQEAgV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV94cGF0aF9yZXN1bHRf
c25hcHNob3RfaXRlbShXZWJLaXRET01YUGF0aFJlc3VsdCogc2VsZiwKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1hQQVRIX1JFU1VMVChzZWxmKSwgMCk7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IsIDApOwogICAgIFdlYkNvcmU6OlhQ
YXRoUmVzdWx0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBnb2JqZWN0UmVzdWx0
ID0gV1RGOjpnZXRQdHIoaXRlbS0+c25hcHNob3RJdGVtKGluZGV4LCBlYykpOwotICAgIGlmIChl
YykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVj
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0tPnNuYXBzaG90SXRlbShpbmRleCk7CisgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24gZWNkZXNjKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAg
ICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VC
S0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkp
OworICAgIHJldHVybiBXZWJLaXQ6OmtpdChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOwog
fQogCiBndXNob3J0IHdlYmtpdF9kb21feHBhdGhfcmVzdWx0X2dldF9yZXN1bHRfdHlwZShXZWJL
aXRET01YUGF0aFJlc3VsdCogc2VsZikKQEAgLTI2MywxMyArMjYzLDEzIEBAIGdkb3VibGUgd2Vi
a2l0X2RvbV94cGF0aF9yZXN1bHRfZ2V0X251bWJlcl92YWx1ZShXZWJLaXRET01YUGF0aFJlc3Vs
dCogc2VsZiwgR0VyCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19YUEFU
SF9SRVNVTFQoc2VsZiksIDApOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAh
KmVycm9yLCAwKTsKICAgICBXZWJDb3JlOjpYUGF0aFJlc3VsdCogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBnZG91Ymxl
IHJlc3VsdCA9IGl0ZW0tPm51bWJlclZhbHVlKGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byBy
ZXN1bHQgPSBpdGVtLT5udW1iZXJWYWx1ZSgpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xp
dGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNv
ZGUsIGVjZGVzYy5uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIH0KIAogZ2No
YXIqIHdlYmtpdF9kb21feHBhdGhfcmVzdWx0X2dldF9zdHJpbmdfdmFsdWUoV2ViS2l0RE9NWFBh
dGhSZXN1bHQqIHNlbGYsIEdFcnJvcioqIGVycm9yKQpAQCAtMjc4LDkgKzI3OCwxMCBAQCBnY2hh
ciogd2Via2l0X2RvbV94cGF0aF9yZXN1bHRfZ2V0X3N0cmluZ192YWx1ZShXZWJLaXRET01YUGF0
aFJlc3VsdCogc2VsZiwgR0VycgogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfWFBBVEhfUkVTVUxUKHNlbGYpLCAwKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghZXJy
b3IgfHwgISplcnJvciwgMCk7CiAgICAgV2ViQ29yZTo6WFBhdGhSZXN1bHQqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
Z2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+c3RyaW5nVmFsdWUoZWMp
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+c3RyaW5nVmFs
dWUoKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gY29udmVydFRvVVRGOFN0cmluZyhyZXN1bHQucmVsZWFzZVJldHVy
blZhbHVlKCkpOwogfQogCiBnYm9vbGVhbiB3ZWJraXRfZG9tX3hwYXRoX3Jlc3VsdF9nZXRfYm9v
bGVhbl92YWx1ZShXZWJLaXRET01YUGF0aFJlc3VsdCogc2VsZiwgR0Vycm9yKiogZXJyb3IpCkBA
IC0yODksMTMgKzI5MCwxMyBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX3hwYXRoX3Jlc3VsdF9nZXRf
Ym9vbGVhbl92YWx1ZShXZWJLaXRET01YUGF0aFJlc3VsdCogc2VsZiwgRwogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfWFBBVEhfUkVTVUxUKHNlbGYpLCBGQUxTRSk7CiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IsIEZBTFNFKTsKICAgICBX
ZWJDb3JlOjpYUGF0aFJlc3VsdCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5i
b29sZWFuVmFsdWUoZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0tPmJv
b2xlYW5WYWx1ZSgpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdf
cXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1l
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJldHVybiByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiB9CiAKIFdlYktpdERPTU5vZGUq
IHdlYmtpdF9kb21feHBhdGhfcmVzdWx0X2dldF9zaW5nbGVfbm9kZV92YWx1ZShXZWJLaXRET01Y
UGF0aFJlc3VsdCogc2VsZiwgR0Vycm9yKiogZXJyb3IpCkBAIC0zMDQsMTMgKzMwNSwxMyBAQCBX
ZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX3hwYXRoX3Jlc3VsdF9nZXRfc2luZ2xlX25vZGVfdmFs
dWUoV2ViS2l0RE9NWFBhdGhSZXN1bAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9E
T01fSVNfWFBBVEhfUkVTVUxUKHNlbGYpLCAwKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCgh
ZXJyb3IgfHwgISplcnJvciwgMCk7CiAgICAgV2ViQ29yZTo6WFBhdGhSZXN1bHQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVt
LT5zaW5nbGVOb2RlVmFsdWUoZWMpKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBp
dGVtLT5zaW5nbGVOb2RlVmFsdWUoKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFs
KGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBl
Y2Rlc2MubmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4g
V2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0
KHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiB9CiAKIGdib29sZWFuIHdlYmtpdF9kb21f
eHBhdGhfcmVzdWx0X2dldF9pbnZhbGlkX2l0ZXJhdG9yX3N0YXRlKFdlYktpdERPTVhQYXRoUmVz
dWx0KiBzZWxmKQpAQCAtMzI4LDEyICszMjksMTEgQEAgZ3Vsb25nIHdlYmtpdF9kb21feHBhdGhf
cmVzdWx0X2dldF9zbmFwc2hvdF9sZW5ndGgoV2ViS2l0RE9NWFBhdGhSZXN1bHQqIHNlbGYsIEcK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1hQQVRIX1JFU1VMVChzZWxm
KSwgMCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IsIDApOwog
ICAgIFdlYkNvcmU6OlhQYXRoUmVzdWx0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGd1bG9uZyByZXN1bHQgPSBpdGVt
LT5zbmFwc2hvdExlbmd0aChlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVzdWx0ID0gaXRl
bS0+c25hcHNob3RMZW5ndGgoKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Cisg
ICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVy
cm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rl
c2MubmFtZSk7CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>