<?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>196087</bug_id>
          
          <creation_ts>2019-03-21 10:21:10 -0700</creation_ts>
          <short_desc>Remove the SVG tear off objects for SVGAngle, SVGAnimatedAngle and SVGAnimatedEnumeration</short_desc>
          <delta_ts>2019-03-25 18:26: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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>191237</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jonlee</cc>
    
    <cc>nikos.andronikos</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1519704</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-21 10:21:10 -0700</bug_when>
    <thetext>This is part of removing the tear off objects of the SVG properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519917</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-21 14:01:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/49122914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520454</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-22 12:42:49 -0700</bug_when>
    <thetext>*** Bug 154141 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520455</commentid>
    <comment_count>3</comment_count>
      <attachid>365754</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-22 12:44:32 -0700</bug_when>
    <thetext>Created attachment 365754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520456</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-22 12:46:51 -0700</bug_when>
    <thetext>Attachment 365754 did not pass style-queue:


ERROR: Source/WebCore/svg/properties/SVGAnimatedDecoratedProperty.h:33:  Failed to find complete declaration of class DecoratedProperty  [build/class] [5]
Total errors found: 1 in 57 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>1520960</commentid>
    <comment_count>5</comment_count>
      <attachid>365754</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-03-25 12:56:55 -0700</bug_when>
    <thetext>Comment on attachment 365754
Patch

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

&gt; Source/WebCore/ChangeLog:44
&gt; +        To get the mechanics of this change correctly, new accessors, animators

To get the mechanics of this change correct,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521074</commentid>
    <comment_count>6</comment_count>
      <attachid>365911</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-25 15:49:12 -0700</bug_when>
    <thetext>Created attachment 365911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521076</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-25 15:52:27 -0700</bug_when>
    <thetext>Attachment 365911 did not pass style-queue:


ERROR: Source/WebCore/svg/properties/SVGAnimatedDecoratedProperty.h:33:  Failed to find complete declaration of class DecoratedProperty  [build/class] [5]
Total errors found: 1 in 57 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>1521115</commentid>
    <comment_count>8</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-25 16:50:58 -0700</bug_when>
    <thetext>I found out these files can be removed with this patch:

Source/WebCore/svg/properties/SVGAnimatedEnumerationPropertyTearOff.h
Source/WebCore/svg/properties/SVGAnimatedStaticPropertyTearOff.h
Source/WebCore/svg/properties/SVGStaticPropertyTearOff.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521124</commentid>
    <comment_count>9</comment_count>
      <attachid>365922</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-25 16:58:22 -0700</bug_when>
    <thetext>Created attachment 365922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521126</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-25 17:02:22 -0700</bug_when>
    <thetext>Attachment 365922 did not pass style-queue:


ERROR: Source/WebCore/svg/properties/SVGAnimatedDecoratedProperty.h:33:  Failed to find complete declaration of class DecoratedProperty  [build/class] [5]
Total errors found: 1 in 57 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>1521160</commentid>
    <comment_count>11</comment_count>
      <attachid>365922</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-25 18:26:18 -0700</bug_when>
    <thetext>Comment on attachment 365922
Patch

Clearing flags on attachment: 365922

Committed r243478: &lt;https://trac.webkit.org/changeset/243478&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521161</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-25 18:26:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365754</attachid>
            <date>2019-03-22 12:44:32 -0700</date>
            <delta_ts>2019-03-25 15:49:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196087-20190322124432.patch</filename>
            <type>text/plain</type>
            <size>193019</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzM5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxOCBAQAorMjAxOS0wMy0yMiAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0
aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR0FuZ2xlLCBTVkdBbmltYXRlZEFuZ2xlIGFu
ZCBTVkdBbmltYXRlZEVudW1lcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTYwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB0aGUgdGVhciBvZmYgb2JqZWN0cyBmb3Ig
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB3aWxsIGJlIAorICAgICAgICByZW1vdmVkLiBCZWNhdXNl
IHRoZSBhbmdsZSBpcyBwYWlyZWQgd2l0aCB0aGUgb3JpZW50IHR5cGUgc28gaXRzIHRlYXIKKyAg
ICAgICAgb2ZmIG9iamVjdHMgaGF2ZSB0byBiZSByZW1vdmVkIGFzIHdlbGwuIEhlcmUgaXMgd2hh
dCB0aGlzIHBhdGNoIGRvZXM6CisKKyAgICAgICAgLS0gU1ZHQW5nbGUgaXMgbm93IGEgc3VwZXJj
bGFzcyBvZiBTVkdWYWx1ZVByb3BlcnR5PFNWR0FuZ2xlVmFsdWU+LiBJdHMgCisgICAgICAgIHJl
bGF0aW9uc2hpcCB3aXRoIGl0cyBvd25lciB3aWxsIGJlIG1hbmFnZWQgYnkgdGhlIG93bmVyIG9m
IGl0cyBiYXNlCisgICAgICAgIGNsYXNzIFNWR1Byb3BlcnR5LgorCisgICAgICAgIC0tIFNWR0Fu
aW1hdGVkQW5nbGUgaXMgbm93IGRlZmluZWQgdG8gYmUgU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5
PAorICAgICAgICBTVkdBbmdsZT4uIEFsbCB0aGUgRE9NIGludGVyZmFjZXMgd2lsbCBiZSBoYW5k
bGVkIGJ5IHRoZSBiYXNlIGNsYXNzCisgICAgICAgIGdpdmVuIGl0cyBiYXNlVmFsIGFuZCBhbmlt
VmFsIGFyZSBvZiB0eXBlIFNWR0FuZ2xlLgorCisgICAgICAgIC0tIFNWR0FuaW1hdGVkRW51bWVy
YXRpb24gaXMgbm93IGRlZmluZWQgdG8gYmUKKyAgICAgICAgU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQ
cm9wZXJ0eTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbiwgdW5zaWduZWQ+LgorICAgICAgICBUaGlz
IGNhbiBiZSByZWFkOiBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGlzIGFuIFNWR0FuaW1hdGVkUHJv
cGVydHkgd2hpY2gKKyAgICAgICAgZGVjb3JhdGVzIHRoZSAiU1ZHRGVjb3JhdGVkRW51bWVyYXRp
b24iIHR5cGUgdG8gInVuc2lnbmVkIi4gVGhlIHJlYXNvbgorICAgICAgICBmb3IgdGhpcyBjb21w
bGljYXRpb24gaXMgdGhlIElETCBvZiBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGRlZmluZXMgdGhl
CisgICAgICAgIGJhc2VWYWwgYW5kIGFuaW1WYWwgYXJlIG9mIHR5cGUgdW5zaWduZWQuIEhvd2V2
ZXIgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbgorICAgICAgICBzaG91bGQgYmUgYWJsZSB0byBjb252
ZXJ0IGEgc3RyaW5nIHRvIGl0cyBlbnVtIHZhbHVlIGFuZCB2aWNlIHZlcnNhLgorCisgICAgICAg
IC0tIFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkgaXMgYSB0ZW1wbGF0ZSBjbGFzcyB3aGlj
aCBtYXBzIGZyb20KKyAgICAgICAgRGVjb3JhdGVkUHJvcGVydHkgdG8gRGVjb3JhdGlvblR5cGUu
IFRoZSBEZWNvcmF0ZWRQcm9wZXJ0eSBpcyBhY3R1YWxseQorICAgICAgICBhIHRlbXBsYXRlIGNs
YXNzIHdoaWNoIGV4cG9zZXMgYSBwcm9wZXJ0eSBvZiB0eXBlIERlY29yYXRpb25UeXBlLgorCisg
ICAgICAgIC0tIFNWR0RlY29yYXRlZFByb3BlcnR5IGlzIGFuIGFic3RyYWN0IGNsYXNzIHdoaWNo
IG1hbmFnZXMgc2V0dGluZyBhbmQKKyAgICAgICAgZ2V0dGluZyBhIHByb3BlcnR5IGluIERlY29y
YXRpb25UeXBlIHJlZ2FyZGxlc3Mgb2YgaG93IGl0IGlzIGFjdHVhbGx5CisgICAgICAgIHN0b3Jl
ZC4gCisKKyAgICAgICAgLS0gU1ZHRGVjb3JhdGVkUHJpbWl0aXZlIGlzIGEgc3VwZXJjbGFzcyBv
ZiBTVkdEZWNvcmF0ZWRQcm9wZXJ0eSB3aGljaAorICAgICAgICBzdG9yZXMgYSBwcmltaXRpdmUg
cHJvcGVydHkgd2hvc2UgdHlwZSBpcyBQcm9wZXJ0eVR5cGUgYnV0IGNhbiBkZWNvcmF0ZQorICAg
ICAgICBpdCB0byB0aGUgY2FsbGVycyBhcyBEZWNvcmF0aW9uVHlwZS4KKworICAgICAgICAtLSBT
VkdEZWNvcmF0ZWRFbnVtZXJhdGlvbiBpcyBhIHN1cGVyY2xhc3Mgb2YgU1ZHRGVjb3JhdGVkUHJp
bWl0aXZlCisgICAgICAgIHdoaWNoIHN0b3JlcyBhIHByaW1pdGl2ZSB0eXBlIERlY29yYXRpb25U
eXBlIGxpa2UgIkJsZW5kTW9kZSIgYnV0CisgICAgICAgIGRlY29yYXRlcyBpdCBhcyAidW5zaWdu
ZWQiCisKKyAgICAgICAgVG8gZ2V0IHRoZSBtZWNoYW5pY3Mgb2YgdGhpcyBjaGFuZ2UgY29ycmVj
dGx5LCBuZXcgYWNjZXNzb3JzLCBhbmltYXRvcnMKKyAgICAgICAgYW5kIGFuaW1hdGlvbiBmdW5j
dGlvbnMgbmVlZCB0byBiZSBhZGRlZCBmb3IgU1ZHQW5pbWF0ZWRBbmdsZSwKKyAgICAgICAgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbiBhbmQgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlLiBCdXQgc2luY2Ug
YW5nbGUgYW5kCisgICAgICAgIHRoZSBvcmllbnQgdHlwZSBhcmUgcGFpcmVkIHVuZGVyIGEgc2lu
Z2xlIGF0dHJpYnV0ZSwgYSBwYWlyIGFjY2Vzc29yIGFuZAorICAgICAgICBhbmltYXRvciBhcmUg
YWxzbyBuZWVkZWQgZm9yIHRoZSBwYWlyIHsgYW5nbGUsIG9yaWVudFR5cGUgfS4KKworICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBzdmcvU1ZHQW5nbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
Z2xlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5nbGU6OnVuaXRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuZ2xlOjpzZXRWYWx1ZUZvckJpbmRpbmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuZ2xlOjp2YWx1ZUZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuZ2xlOjpzZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5nbGU6OnZhbHVlSW5TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmdsZTo6c2V0VmFsdWVBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6bmV3
VmFsdWVTcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6Y29udmVy
dFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5nbGU6OnZhbHVlQXNT
dHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5nbGU6OlNWR0FuZ2xlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkRW51bWVyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRU
eXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnR5cGUgY29uc3QpOgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRvckZhY3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6U1ZHQ2xpcFBh
dGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6cmVn
aXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50OjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6
OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6dHlwZUFuaW1hdGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjphdHRy
aWJ1dGVSZWdpc3RyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
Y29tbWl0UHJvcGVydHlDaGFuZ2UpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6U1ZHRkVCbGVuZEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0
ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8QmxlbmRNb2RlPjo6ZnJvbVN0cmluZyk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnJlZ2lzdGVyQXR0
cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1
dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQ6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6
OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OlNWR0ZFTW9ycGhv
bG9neUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OlNWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9T
VkdGRVR1cmJ1bGVuY2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dy
YWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6
OlNWR0dyYWRpZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1l
bnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnNwcmVhZE1ldGhvZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OmdyYWRpZW50VW5p
dHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpzcHJlYWRN
ZXRob2RBbmltYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6Omdy
YWRpZW50VW5pdHNBbmltYXRlZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQW5nbGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6b3JpZW50VHlwZUlkZW50aWZpZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6b3JpZW50QW5nbGVJZGVudGlm
aWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdNYXJrZXJUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlU
cmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46OmF1dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46OmF1dG9TdGFydFJldmVy
c2VTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2Vy
T3JpZW50VHlwZT46OmZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlU
cmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46OnRvU3RyaW5nKToKKyAgICAgICAgKiBzdmcvU1ZH
TWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OlNWR01h
c2tFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpyZWdpc3RlckF0
dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
UGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6
OlNWR1BhdHRlcm5FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50
OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6bGVuZ3RoQWRqdXN0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6bGVuZ3RoQWRqdXN0QW5pbWF0ZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dFBhdGhFbGVtZW50OjpTVkdUZXh0UGF0aEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdWYWx1ZS5oOgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eTo6U1ZHQW5p
bWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERl
Y29yYXRlZFByb3BlcnR5OjpzZXRCYXNlVmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVkRGVjb3JhdGVkUHJvcGVydHk6OnNldEJhc2VWYWxJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5OjpiYXNlVmFsIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk6OnNldEFuaW1WYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eTo6YW5pbVZhbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5Ojpj
dXJyZW50VmFsdWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlBY2Nlc3NvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkT3Jp
ZW50VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVkUHJvcGVydHlQYWlyQW5pbWF0b3I6OmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UpOgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmg6
CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0
aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uQW5nbGVGdW5jdGlvbjo6
cHJvZ3Jlc3MpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRl
RnVuY3Rpb25JbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVn
aXN0cnkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlv
bi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlY29yYXRlZEVudW1lcmF0aW9uOjpj
cmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByaW1pdGl2ZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlY29yYXRlZFByaW1pdGl2ZTo6U1ZHRGVj
b3JhdGVkUHJpbWl0aXZlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQ
cm9wZXJ0eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlY29yYXRlZFByb3BlcnR5
OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWNvcmF0ZWRQcm9wZXJ0eTo6dmFs
dWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5OjpyZWdp
c3RlclByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5T3duZXJSZWdpc3Ry
eTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHUHJvcGVydHlSZWdpc3RyeS5oOgorCiAyMDE5LTAzLTIyICBSeWFuIEhhZGRhZCAgPHJ5YW5o
YWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDMz
NTYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIyNjksOCArMjI2OSw2IEBAIHN2Zy9T
VkdBbmltYXRlRWxlbWVudC5jcHAKIHN2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCiBzdmcv
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCiBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQuY3BwCi1zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAKLXN2Zy9TVkdBbmltYXRlZEVudW1lcmF0
aW9uLmNwcAogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAogc3ZnL1NWR0FuaW1hdGVkTGVuZ3Ro
TGlzdC5jcHAKIHN2Zy9TVkdBbmltYXRlZFBhdGguY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDMzODMp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNiBAQAogCQkwODZCQkQwRjEzNjAzOUMyMDA4QjE1
RDggLyogR2x5cGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NkJCRDBFMTM2MDM5QzIwMDhCMTVEOCAvKiBHbHlwaC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4NzNCODZCMTM2MDY0RUEwMEE1MjJD
MiAvKiBHbHlwaFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4NzNCODZBMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODc1NThDNjEzQjRBNTdE
MDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc1NThDNDEzQjRBNTdEMDBGNDkz
MDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDg3Qjg0OTYxMjcyQ0VDODAwQTE0NDE3
IC8qIFNWR0FuaW1hdGVkQW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4N0I4NDk1MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xl
LmggKi87IH07CiAJCTA4ODUwNjdGMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4ODUwNjdEMTFEQTA0
NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwODg1MDY4MDExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4NTA2
N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODhBMEUwNDEyNkVGMURCMDA5NzhGN0EgLyog
U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODhBMERGQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi87IH07CkBAIC0yODIsNyArMjgxLDYgQEAKIAkJ
MDhDN0EyQzcxMERDNzQ2MjAwMkQzNjhCIC8qIFNWR05hbWVzLmggaW4gQ29weSBHZW5lcmF0ZWQg
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFFOTA5RDE1
MDhEMDAwRTYxRDcgLyogU1ZHTmFtZXMuaCAqLzsgfTsKIAkJMDhDOTI1MUEwRkNDN0M0QTAwNDgw
REVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDhDOTI1MTgwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4Q0EzRDQ0
MTI4OTRBMzgwMEZGRjI2MCAvKiBTVkdNYXRyaXhUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOENBM0Q0MzEyODk0QTM4MDBGRkYyNjAgLyog
U1ZHTWF0cml4VGVhck9mZi5oICovOyB9OwotCQkwOEQ0NkNFMzEyN0FENUZDMDA4OTY5NEIgLyog
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDhENDZDRTIxMjdBRDVGQzAwODk2OTRCIC8qIFNWR0FuaW1hdGVkRW51
bWVyYXRpb24uaCAqLzsgfTsKIAkJMDhFREUxOUYxMkE1MEI4RTAwQjk1Nzk3IC8qIFNWR1JlY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RURFMTlF
MTJBNTBCOEUwMEI5NTc5NyAvKiBTVkdSZWN0LmggKi87IH07CiAJCTA4RjBCRkMzMTI1NUM1M0Mw
MDA3NTE4NSAvKiBTVkdUZXh0Q2h1bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4RjBCRkJFMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0Q2h1bmsu
aCAqLzsgfTsKIAkJMDhGMEJGQzQxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRGcmFnbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMEJGQkYx
MjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRGcmFnbWVudC5oICovOyB9OwpAQCAtNTYzNiw3ICs1
NjM0LDYgQEAKIAkJMDg3M0I4NkExMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbHlwaFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDg3NTU4QzMxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJB
d2FyZVRleHRJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwODc1NThDNDEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJl
VGV4dEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1cnJvZ2F0
ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
ODdCODQ5NTEyNzJDRUM3MDBBMTQ0MTcgLyogU1ZHQW5pbWF0ZWRBbmdsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZEFuZ2xlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFpbnRJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50UGhhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4QTBERkIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0Fu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTU2NTcsNyArNTY1NCw2IEBACiAJCTA4QzkyNTE3MEZDQzdDNEEwMDQ4MERF
QyAvKiBGaWx0ZXJFZmZlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmlsdGVyRWZmZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhDOTI1
MTgwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGaWx0ZXJFZmZlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDhDQTNENDMxMjg5NEEzODAwRkZGMjYwIC8qIFNWR01hdHJpeFRlYXJPZmYuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTWF0cml4VGVhck9mZi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwOEQ0NkNFMjEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RURFMTlF
MTJBNTBCOEUwMEI5NTc5NyAvKiBTVkdSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR1JlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGMEJGQkQx
MjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0Q2h1bmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwOEYwQkZCRTEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dENodW5rLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRDaHVuay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzU3NSw3ICs3NTcxLDYgQEAKIAkJNDM1OEU4ODIxMzYwQTMzQjAw
RTQ3NDhDIC8qIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQzNThFODgzMTM2MEEzM0IwMEU0NzQ4QyAvKiBTVkdGRURyb3BT
aGFkb3dFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM1OEU4ODQx
MzYwQTMzQjAwRTQ3NDhDIC8qIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MzYyQzdCODEzQUM2RjFBMDAzNDRCRUIgLyogU1ZHQW5pbWF0ZWRBbmds
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZEFu
Z2xlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4ODExMkQ5Q0E0QTAw
MDQ0MjM0IC8qIFJlbmRlclNWR0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlclNWR0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDM2NzA4ODIxMkQ5Q0E0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR0Jsb2NrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0Jsb2NrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQzNjcwODgzMTJEOUNBNEEwMDA0NDIzNCAvKiBSZW5kZXJTVkdDb250
YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZH
Q29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2MzgsNiArODYz
MywxMCBAQAogCQk1NTQ2NzU3ODFGRDFGQzFBMDAzQjEwQjAgLyogSW1hZ2VTb3VyY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW1hZ2VTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTU1MENCNDExRTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NTUxMzAwMDFFN0NDQ0NBMDBBNjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlY29kaW5nT3B0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NTUzNTkyMDIyNDQxQTE2MDA4RjVFQzkgLyogU1ZHQW5pbWF0
ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZERlY29yYXRl
ZFByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NTM1OTIxMjI0NDFC
OTcwMDhGNUVDOSAvKiBTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NTUzNTkyMjIyNDQxQkU5MDA4RjVFQzkgLyogU1ZHRGVjb3JhdGVkUHJpbWl0aXZlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR0RlY29yYXRlZFByaW1pdGl2ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1NTUzNTkyMzIyNDQxQzE4MDA4RjVFQzkgLyogU1ZHRGVjb3JhdGVkUHJvcGVydHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHRGVjb3JhdGVkUHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNH
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNH
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlRGVjb2RlckNHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NzZBNTYy
MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtOTQ2OCw3ICs5NDY3LDYgQEAKIAkJNzFDMjlFMzEyMDNDRTc2QzAwOEYzNkQyIC8qIENT
U0FuaW1hdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTQW5pbWF0aW9uLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDNUJCMUIxRkI2MTFFQTAwMDdBMkFFIC8q
IEFuaW1hdGFibGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFuaW1hdGFibGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyog
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTcxQ0M3QTFGMTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1l
cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1h
dGVkRW51bWVyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUNFMkM1
MTIyMDlEQzdGMDBDNDk0QkQgLyogTW91c2VFdmVudElPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNb3VzZUV2ZW50SU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzFEMDJEOTAxREI1NUM0RTAwREQ1Q0Y1IC8qIG1haW4uanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBtYWluLmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MUQwMkQ5MjFEQjU1QzRFMDBERDVDRjUgLyogbWVkaWEtY29udHJvbGxl
ci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJtZWRpYS1jb250
cm9sbGVyLmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjAzLDYgKzE2MjAx
LDcgQEAKIAkJMDgxQ0RGQkQxMjZFQ0ZFODAwRDIxNUNBIC8qIHByb3BlcnRpZXMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTU1NTM1OTIwMjI0NDFBMTYw
MDhGNUVDOSAvKiBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmggKi8sCiAJCQkJNzFGQjk2
N0ExMzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJP
ZmYuaCAqLywKIAkJCQkwODhBMERGQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJNTVGQTdGRkMyMTEwRjgxMzAwNUFFRkU3IC8qIFNW
R0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwICovLApAQCAtMTYyNDMsNiAr
MTYyNDIsOSBAQAogCQkJCTU1MzQ2QUYwMjExNTBGQUYwMDU5QkNERCAvKiBTVkdBdHRyaWJ1dGVP
d25lclByb3h5LmggKi8sCiAJCQkJNTUzNDZBRkEyMTE3RkZBRjAwNTlCQ0REIC8qIFNWR0F0dHJp
YnV0ZU93bmVyUHJveHlJbXBsLmggKi8sCiAJCQkJNTVGQTdGRjYyMTBGQkUzRTAwNUFFRkU3IC8q
IFNWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmggKi8sCisJCQkJNTU1MzU5MjEyMjQ0MUI5NzAwOEY1RUM5
IC8qIFNWR0RlY29yYXRlZEVudW1lcmF0aW9uLmggKi8sCisJCQkJNTU1MzU5MjIyMjQ0MUJFOTAw
OEY1RUM5IC8qIFNWR0RlY29yYXRlZFByaW1pdGl2ZS5oICovLAorCQkJCTU1NTM1OTIzMjI0NDFD
MTgwMDhGNUVDOSAvKiBTVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oICovLAogCQkJCTU1RDcwRDIxMjIz
QjAwQkIwMDA0NEI4RSAvKiBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmNwcCAqLywKIAkJCQk1
NUQ3MEQyMDIyM0IwMDkxMDAwNDRCOEUgLyogU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oICov
LAogCQkJCTU1RDcwRDIyMjIzQjAwRUEwMDA0NEI4RSAvKiBTVkdMZWdhY3lQcm9wZXJ0eS5oICov
LApAQCAtMjQxMjgsMTIgKzI0MTMwLDggQEAKIAkJCQlCMjIyNzdFMzBEMDBCRjFGMDA3MUI3ODIg
LyogU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc3RTQwRDAwQkYxRjAw
NzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzdFNTBEMDBC
RjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5pZGwgKi8sCi0JCQkJNDM2MkM3
QjgxM0FDNkYxQTAwMzQ0QkVCIC8qIFNWR0FuaW1hdGVkQW5nbGUuY3BwICovLAotCQkJCTA4N0I4
NDk1MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggKi8sCiAJCQkJQjIyMjc3
RTYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkQW5nbGUuaWRsICovLAogCQkJCUIyMjI3
N0U3MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZEJvb2xlYW4uaWRsICovLAotCQkJCTcx
Q0M3QTFGMTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCAqLywK
LQkJCQkwOEQ0NkNFMjEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5o
ICovLAogCQkJCUIyMjI3N0U4MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZEVudW1lcmF0
aW9uLmlkbCAqLywKIAkJCQlCMjIyNzdFOTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRJ
bnRlZ2VyLmlkbCAqLywKIAkJCQk0MzgxNzYzQTEzQTY5N0Q0MDA3RDExODcgLyogU1ZHQW5pbWF0
ZWRMZW5ndGguY3BwICovLApAQCAtMzE5MTAsOCArMzE5MDgsNiBAQAogCQkJCTI0RDkxMkI4MTND
QTlBNjkwMEQyMTkxNSAvKiBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyNzk3NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5nbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyMjI3OTdBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKLQkJCQkwODdCODQ5NjEyNzJDRUM4MDBBMTQ0MTcgLyogU1ZHQW5p
bWF0ZWRBbmdsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDhENDZDRTMxMjdBRDVGQzAwODk2OTRC
IC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTcxRkI5NjdC
MTM4M0Q2NDYwMEFDOEE0QyAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2Zm
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODkwMjFBOTEyNkVGNURFMDA5MkQ1RUEgLyogU1ZHQW5p
bWF0ZWRMZW5ndGguaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OTAyMUFEMTI2RUY1RTkwMDkyRDVF
QSAvKiBTVkdBbmltYXRlZExlbmd0aExpc3QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuZ2xlLmgJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmdsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDMyICsyNiwzNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJTVkdBbmdsZVZhbHVlLmgiCi0jaW5jbHVkZSAiU1ZHUHJvcGVydHlUZWFyT2ZmLmgi
CisjaW5jbHVkZSAiU1ZHVmFsdWVQcm9wZXJ0eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNWR0FuZ2xlIDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdBbmdsZVZhbHVl
PiB7CitjbGFzcyBTVkdBbmdsZSA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5PFNWR0FuZ2xlVmFs
dWU+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHVmFsdWVQcm9wZXJ0eTxTVkdBbmdsZVZhbHVlPjsK
KyAgICB1c2luZyBCYXNlOjpCYXNlOworICAgIHVzaW5nIEJhc2U6Om1fdmFsdWU7CisKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFNWR0FuZ2xlPiBjcmVhdGUoU1ZHTGVnYWN5QW5pbWF0ZWRQcm9w
ZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0FuZ2xlVmFs
dWUmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHQW5nbGU+IGNyZWF0ZShjb25zdCBTVkdBbmds
ZVZhbHVlJiB2YWx1ZSA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNWR0FuZ2xlKGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNWR0FuZ2xlKHZhbHVlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJl
ZjxTVkdBbmdsZT4gY3JlYXRlKGNvbnN0IFNWR0FuZ2xlVmFsdWUmIGluaXRpYWxWYWx1ZSA9IHsg
fSkKKyAgICBzdGF0aWMgUmVmPFNWR0FuZ2xlPiBjcmVhdGUoU1ZHUHJvcGVydHlPd25lciogb3du
ZXIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcywgY29uc3QgU1ZHQW5nbGVWYWx1ZSYgdmFsdWUg
PSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmdsZShpbml0
aWFsVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5nbGUob3duZXIs
IGFjY2VzcywgdmFsdWUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0
aWMgRXhjZXB0aW9uT3I8UmVmPFNWR0FuZ2xlPj4gY3JlYXRlKEV4Y2VwdGlvbk9yPFQ+JiYgaW5p
dGlhbFZhbHVlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIEV4Y2VwdGlv
bk9yPFJlZjxTVkdBbmdsZT4+IGNyZWF0ZShFeGNlcHRpb25PcjxUPiYmIHZhbHVlKQogICAgIHsK
LSAgICAgICAgaWYgKGluaXRpYWxWYWx1ZS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJl
dHVybiBpbml0aWFsVmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4gY3Jl
YXRlKGluaXRpYWxWYWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgICAgIGlmICh2YWx1
ZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZWxlYXNlRXhjZXB0
aW9uKCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FuZ2xlKHZhbHVlLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpKSk7CiAgICAgfQogCiAgICAgU1ZHQW5nbGVWYWx1ZTo6VHlwZSB1bml0
VHlwZSgpCiAgICAgewotICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS51bml0VHlw
ZSgpOworICAgICAgICByZXR1cm4gbV92YWx1ZS51bml0VHlwZSgpOwogICAgIH0KIAogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlRm9yQmluZGluZ3MoZmxvYXQgdmFsdWUpCkBAIC01OSwx
NSArNjQsMTQgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAg
ICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRWYWx1ZSh2YWx1ZSk7CisgICAgICAgIG1fdmFs
dWUuc2V0VmFsdWUodmFsdWUpOwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KICAgICAKICAgICBmbG9hdCB2YWx1ZUZvckJpbmRpbmdzKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0eVJlZmVyZW5jZSgpLnZhbHVlKCk7CisgICAgICAg
IHJldHVybiBtX3ZhbHVlLnZhbHVlKCk7CiAgICAgfQogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0VmFsdWVJblNwZWNpZmllZFVuaXRzKGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cykKQEAg
LTc1LDE1ICs3OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAg
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsK
IAotICAgICAgICBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyh2
YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAgICAgICBtX3ZhbHVlLnNldFZhbHVlSW5TcGVjaWZp
ZWRVbml0cyh2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwogICAgICAgICBjb21taXRDaGFuZ2UoKTsK
LSAgICAgICAgCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIAogICAgIGZsb2F0IHZh
bHVlSW5TcGVjaWZpZWRVbml0cygpCiAgICAgewotICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZl
cmVuY2UoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUu
dmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CiAgICAgfQogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtOTEsNyArOTQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBhdXRvIHJl
c3VsdCA9IHByb3BlcnR5UmVmZXJlbmNlKCkuc2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV92YWx1ZS5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgIApAQCAtOTksOSArMTAyLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkKKyAgICBTdHJpbmcgdmFs
dWVBc1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gcHJvcGVy
dHlSZWZlcmVuY2UoKS52YWx1ZUFzU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlLnZh
bHVlQXNTdHJpbmcoKTsKICAgICB9CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBuZXdWYWx1ZVNw
ZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBmbG9hdCB2YWx1ZUluU3BlY2lm
aWVkVW5pdHMpCkBAIC0xMDksNyArMTEyLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFk
T25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxs
b3dlZEVycm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1bHQgPSBwcm9wZXJ0eVJlZmVyZW5jZSgp
Lm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7
CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV92YWx1ZS5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVu
aXRUeXBlLCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCkBAIC0xMjIs
MjQgKzEyNSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAot
ICAgICAgICBhdXRvIHJlc3VsdCA9IHByb3BlcnR5UmVmZXJlbmNlKCkuY29udmVydFRvU3BlY2lm
aWVkVW5pdHModW5pdFR5cGUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdmFsdWUuY29udmVy
dFRvU3BlY2lmaWVkVW5pdHModW5pdFR5cGUpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCiAgICAgICAgIGNv
bW1pdENoYW5nZSgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLQotcHJpdmF0ZToK
LSAgICBTVkdBbmdsZShTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5
LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHQW5nbGVWYWx1ZSYgdmFsdWUpCi0gICAgICAgIDog
U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0FuZ2xlVmFsdWU+KCZhbmltYXRlZFByb3BlcnR5LCByb2xl
LCB2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgZXhwbGljaXQgU1ZHQW5nbGUoY29uc3QgU1ZH
QW5nbGVWYWx1ZSYgaW5pdGlhbFZhbHVlKQotICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxT
VkdBbmdsZVZhbHVlPihpbml0aWFsVmFsdWUpCi0gICAgewotICAgIH0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5j
cHAJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFu
Z2xlLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLCAyMDEyLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRBbmdsZS5o
IgotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgiCi0jaW5jbHVkZSAiU1ZHTWFy
a2VyRWxlbWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNWR0FuaW1hdGVkQW5nbGVB
bmltYXRvcjo6U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFu
aW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQotICAgIDogU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRBbmdsZSwgYW5pbWF0aW9uRWxlbWVudCwgY29udGV4
dEVsZW1lbnQpCi17Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0Fu
aW1hdGVkQW5nbGVBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZykKLXsKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGUoU1ZHUHJvcGVydHlU
cmFpdHM8c3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIHVuc2lnbmVkPj46OmZyb21TdHJpbmcoc3Ry
aW5nKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVk
QW5nbGVBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICByZXR1cm4gY29uc3RydWN0
RnJvbUJhc2VWYWx1ZXM8U1ZHQW5pbWF0ZWRBbmdsZSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4o
YW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpzdG9w
QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFu
aW1hdGVkVHlwZXMpCi17Ci0gICAgc3RvcEFuaW1WYWxBbmltYXRpb25Gb3JUeXBlczxTVkdBbmlt
YXRlZEFuZ2xlLCBTVkdBbmltYXRlZEVudW1lcmF0aW9uPihhbmltYXRlZFR5cGVzKTsKLX0KLQot
dm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMsIFNWR0FuaW1h
dGVkVHlwZSYgdHlwZSkKLXsKLSAgICByZXNldEZyb21CYXNlVmFsdWVzPFNWR0FuaW1hdGVkQW5n
bGUsIFNWR0FuaW1hdGVkRW51bWVyYXRpb24+KGFuaW1hdGVkVHlwZXMsIHR5cGUpOwotfQotCi12
b2lkIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1W
YWxXaWxsQ2hhbmdlRm9yVHlwZXM8U1ZHQW5pbWF0ZWRBbmdsZSwgU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9y
OjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYg
YW5pbWF0ZWRUeXBlcykKLXsKLSAgICBhbmltVmFsRGlkQ2hhbmdlRm9yVHlwZXM8U1ZHQW5pbWF0
ZWRBbmdsZSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZv
aWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVk
VHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bykKLXsKLSAgICBBU1NFUlQoZnJvbS0+dHlw
ZSgpID09IEFuaW1hdGVkQW5nbGUpOwotICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5
cGUoKSk7Ci0KLSAgICBjb25zdCBhdXRvJiBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbiA9IGZyb20t
PmFzPHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4+KCk7Ci0gICAgYXV0byYgdG9B
bmdsZUFuZEVudW1lcmF0aW9uID0gdG8tPmFzPHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNp
Z25lZD4+KCk7Ci0gICAgLy8gT25seSByZXNwZWN0IGJ5IGFuaW1hdGlvbnMsIGlmIGZyb20gYW5k
IGJ5IGFyZSBib3RoIHNwZWNpZmllZCBpbiBhbmdsZXMgKGFuZCBub3QgZWcuICdhdXRvJykuCi0g
ICAgaWYgKGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCAhPSB0b0FuZ2xlQW5kRW51bWVy
YXRpb24uc2Vjb25kIHx8IGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCAhPSBTVkdNYXJr
ZXJPcmllbnRBbmdsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNvbnN0IGF1dG8mIGZyb21Bbmds
ZSA9IGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwotICAgIGF1dG8mIHRvQW5nbGUgPSB0
b0FuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3Q7Ci0gICAgdG9BbmdsZS5zZXRWYWx1ZSh0b0FuZ2xl
LnZhbHVlKCkgKyBmcm9tQW5nbGUudmFsdWUoKSk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRBbmds
ZUFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSog
dG8sIFNWR0FuaW1hdGVkVHlwZSogdG9BdEVuZE9mRHVyYXRpb24sIFNWR0FuaW1hdGVkVHlwZSog
YW5pbWF0ZWQpCi17Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgQVNTRVJU
KG1fY29udGV4dEVsZW1lbnQpOwotCi0gICAgY29uc3QgYXV0byYgZnJvbUFuZ2xlQW5kRW51bWVy
YXRpb24gPSAobV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9u
TW9kZTo6VG8gPyBhbmltYXRlZCA6IGZyb20pLT5hczxzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwg
dW5zaWduZWQ+PigpOwotICAgIGF1dG8mIHRvQW5nbGVBbmRFbnVtZXJhdGlvbiA9IHRvLT5hczxz
dGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5zaWduZWQ+PigpOwotICAgIGF1dG8mIHRvQXRFbmRP
ZkR1cmF0aW9uQW5nbGVBbmRFbnVtZXJhdGlvbiA9IHRvQXRFbmRPZkR1cmF0aW9uLT5hczxzdGQ6
OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5zaWduZWQ+PigpOwotICAgIGF1dG8mIGFuaW1hdGVkQW5n
bGVBbmRFbnVtZXJhdGlvbiA9IGFuaW1hdGVkLT5hczxzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwg
dW5zaWduZWQ+PigpOwotCi0gICAgaWYgKGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCAh
PSB0b0FuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kKSB7Ci0gICAgICAgIC8vIERpc2NyZXRlIGFu
aW1hdGlvbiAtIG5vIGxpbmVhciBpbnRlcnBvbGF0aW9uIHBvc3NpYmxlIGJldHdlZW4gdmFsdWVz
IChlLmcuIGF1dG8gdG8gYW5nbGUpLgotICAgICAgICBpZiAocGVyY2VudGFnZSA8IDAuNWYpIHsK
LSAgICAgICAgICAgIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgPSBmcm9tQW5n
bGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQ7Ci0gICAgICAgICAgICBpZiAoZnJvbUFuZ2xlQW5kRW51
bWVyYXRpb24uc2Vjb25kID09IFNWR01hcmtlck9yaWVudEFuZ2xlKQotICAgICAgICAgICAgICAg
IGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdCA9IGZyb21BbmdsZUFuZEVudW1lcmF0
aW9uLmZpcnN0OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFuaW1hdGVkQW5n
bGVBbmRFbnVtZXJhdGlvbi5maXJzdC5zZXRWYWx1ZSgwKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBhbmltYXRlZEFuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kID0g
dG9BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZDsKLSAgICAgICAgaWYgKHRvQW5nbGVBbmRFbnVt
ZXJhdGlvbi5zZWNvbmQgPT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpCi0gICAgICAgICAgICBhbmlt
YXRlZEFuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3QgPSB0b0FuZ2xlQW5kRW51bWVyYXRpb24uZmly
c3Q7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlv
bi5maXJzdC5zZXRWYWx1ZSgwKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChm
cm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgPT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpIHsK
LSAgICAgICAgLy8gUmVndWxhciBmcm9tIGFuZ2xlIHRvIGFuZ2xlIGFuaW1hdGlvbiwgd2l0aCBz
dXBwb3J0IGZvciBzbW9vdGggaW50ZXJwb2xhdGlvbiwgYW5kIGFkZGl0aXZlIGFuZCBhY2N1bXVs
YXRlZCBhbmltYXRpb24uCi0gICAgICAgIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNv
bmQgPSBTVkdNYXJrZXJPcmllbnRBbmdsZTsKLQotICAgICAgICBhdXRvJiBhbmltYXRlZFNWR0Fu
Z2xlID0gYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwotICAgICAgICBjb25zdCBh
dXRvJiB0b0F0RW5kT2ZEdXJhdGlvblNWR0FuZ2xlID0gdG9BdEVuZE9mRHVyYXRpb25BbmdsZUFu
ZEVudW1lcmF0aW9uLmZpcnN0OwotICAgICAgICBmbG9hdCBhbmltYXRlZEFuZ2xlID0gYW5pbWF0
ZWRTVkdBbmdsZS52YWx1ZSgpOwotICAgICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVB
ZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbUFuZ2xlQW5kRW51bWVy
YXRpb24uZmlyc3QudmFsdWUoKSwgdG9BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0LnZhbHVlKCks
IHRvQXRFbmRPZkR1cmF0aW9uU1ZHQW5nbGUudmFsdWUoKSwgYW5pbWF0ZWRBbmdsZSk7Ci0gICAg
ICAgIGFuaW1hdGVkU1ZHQW5nbGUuc2V0VmFsdWUoYW5pbWF0ZWRBbmdsZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAvLyBhdXRvLCBhdXRvLXN0YXJ0LXJldmVyc2UsIG9yIHVua25v
d24uCi0gICAgYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0LnNldFZhbHVlKDApOwot
Ci0gICAgaWYgKGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCA9PSBTVkdNYXJrZXJPcmll
bnRBdXRvIHx8IGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCA9PSBTVkdNYXJrZXJPcmll
bnRBdXRvU3RhcnRSZXZlcnNlKQotICAgICAgICBhbmltYXRlZEFuZ2xlQW5kRW51bWVyYXRpb24u
c2Vjb25kID0gZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kOwotICAgIGVsc2UKLSAgICAg
ICAgYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCA9IFNWR01hcmtlck9yaWVudFVu
a25vd247Ci19Ci0KLWZsb2F0IFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y2FsY3VsYXRlRGlz
dGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQot
ewotICAgIGF1dG8gZnJvbSA9IFNWR0FuZ2xlVmFsdWUoKTsKLSAgICBmcm9tLnNldFZhbHVlQXNT
dHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgYXV0byB0byA9IFNWR0FuZ2xlVmFsdWUoKTsKLSAgICB0
by5zZXRWYWx1ZUFzU3RyaW5nKHRvU3RyaW5nKTsKLSAgICByZXR1cm4gZmFic2YodG8udmFsdWUo
KSAtIGZyb20udmFsdWUoKSk7Ci19Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAkocmV2aXNpb24g
MjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIlNWR0FuZ2xlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJP
ZmYuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgotI2luY2x1ZGUgIlNW
R0F0dHJpYnV0ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNWR0FuaW1hdGlv
bkVsZW1lbnQ7Ci0KLXVzaW5nIFNWR0FuaW1hdGVkQW5nbGUgPSBTVkdBbmltYXRlZFByb3BlcnR5
VGVhck9mZjxTVkdBbmdsZT47Ci11c2luZyBTVkdBbmltYXRlZEFuZ2xlQXR0cmlidXRlID0gU1ZH
QW5pbWF0ZWRBdHRyaWJ1dGU8U1ZHQW5pbWF0ZWRBbmdsZT47Ci0KLWNsYXNzIFNWR0FuaW1hdGVk
QW5nbGVBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7Ci1w
dWJsaWM6Ci0gICAgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
LCBTVkdFbGVtZW50Kik7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBj
b25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BBbmlt
VmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQg
YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBhZGRBbmltYXRlZFR5cGVz
KFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotCi0gICAgdm9p
ZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVh
dENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5
cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICBmbG9hdCBjYWxjdWxhdGVEaXN0
YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92
ZXJyaWRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBv
bjogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1l
cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDE2NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEyLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0FuaW1h
dGVkRW51bWVyYXRpb24uaCIKLQotI2luY2x1ZGUgIlNWR0FuaW1hdGlvbkVsZW1lbnQuaCIKLSNp
bmNsdWRlICJTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oIgotI2luY2x1ZGUg
IlNWR0ZFQmxlbmRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
aCIKLSNpbmNsdWRlICJTVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5oIgotI2luY2x1ZGUgIlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCIKLSNpbmNsdWRlICJT
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHR3JhZGllbnRFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiU1ZHTWFya2VyRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0j
aW5jbHVkZSAiU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVGV4dFBhdGhF
bGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RhdGljIGlubGluZSB1bnNpZ25lZCBlbnVtZXJhdGlvblZhbHVlRm9yVGFyZ2V0QXR0
cmlidXRlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50
KTsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyCi0gICAg
ICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIKLSAgICAgICAgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyCi0gICAgICAgIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjptYXNrQ29udGVudFVuaXRzQXR0cgotICAgICAgICB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6bWFza1VuaXRzQXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnByaW1pdGl2ZVVuaXRzQXR0cikKLSAgICAgICAgcmV0dXJuIFNWR1Byb3BlcnR5VHJhaXRzPFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0cikKLSAgICAgICAgcmV0dXJuIFNW
R1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aEFkanVzdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0cikKLSAgICAgICAg
cmV0dXJuIFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlclVuaXRzVHlwZT46OmZyb21TdHJpbmco
dmFsdWUpOwotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bWV0aG9kQXR0cikKLSAgICAg
ICAgcmV0dXJuIFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RleHRQYXRoTWV0aG9kVHlwZT46OmZyb21T
dHJpbmcodmFsdWUpOwotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BhY2luZ0F0dHIp
Ci0gICAgICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0aFNwYWNpbmdUeXBl
Pjo6ZnJvbVN0cmluZyh2YWx1ZSk7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzcHJl
YWRNZXRob2RBdHRyKQotICAgICAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3ByZWFk
TWV0aG9kVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjplZGdlTW9kZUF0dHIpCi0gICAgICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxF
ZGdlTW9kZVR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6b3BlcmF0b3JBdHRyKSB7Ci0gICAgICAgIGlmICh0YXJnZXRFbGVtZW50LT5oYXNU
YWdOYW1lKFNWR05hbWVzOjpmZUNvbXBvc2l0ZVRhZykpCi0gICAgICAgICAgICByZXR1cm4gU1ZH
UHJvcGVydHlUcmFpdHM8Q29tcG9zaXRlT3BlcmF0aW9uVHlwZT46OmZyb21TdHJpbmcodmFsdWUp
OwotICAgICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVN
b3JwaG9sb2d5VGFnKSk7Ci0gICAgICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxNb3JwaG9s
b2d5T3BlcmF0b3JUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgewotICAgICAgICBpZiAodGFyZ2V0RWxlbWVu
dC0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb2xvck1hdHJpeFRhZykpCi0gICAgICAgICAgICBy
ZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8Q29sb3JNYXRyaXhUeXBlPjo6ZnJvbVN0cmluZyh2YWx1
ZSk7Ci0gICAgICAgIGlmICh0YXJnZXRFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVR1
cmJ1bGVuY2VUYWcpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihT
VkdQcm9wZXJ0eVRyYWl0czxUdXJidWxlbmNlVHlwZT46OmZyb21TdHJpbmcodmFsdWUpKTsKLQot
ICAgICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGdW5j
QVRhZykKLSAgICAgICAgICAgICAgIHx8IHRhcmdldEVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmZlRnVuY0JUYWcpCi0gICAgICAgICAgICAgICB8fCB0YXJnZXRFbGVtZW50LT5oYXNUYWdO
YW1lKFNWR05hbWVzOjpmZUZ1bmNHVGFnKQotICAgICAgICAgICAgICAgfHwgdGFyZ2V0RWxlbWVu
dC0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGdW5jUlRhZykpOwotICAgICAgICByZXR1cm4gU1ZH
UHJvcGVydHlUcmFpdHM8Q29tcG9uZW50VHJhbnNmZXJUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptb2RlQXR0cikgewotICAg
ICAgICBCbGVuZE1vZGUgbW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsOwotICAgICAgICBwYXJzZUJs
ZW5kTW9kZSh2YWx1ZSwgbW9kZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obW9kZSk7Ci0gICAgfQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RpdGNoVGls
ZXNBdHRyKQotICAgICAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3RpdGNoT3B0aW9u
cz46OmZyb21TdHJpbmcodmFsdWUpOwotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eENo
YW5uZWxTZWxlY3RvckF0dHIpCi0gICAgICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxDaGFu
bmVsU2VsZWN0b3JUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7Ci0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0cikKLSAgICAgICAgcmV0dXJuIFNWR1Byb3Bl
cnR5VHJhaXRzPENoYW5uZWxTZWxlY3RvclR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKLQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1TVkdBbmltYXRlZEVu
dW1lcmF0aW9uQW5pbWF0b3I6OlNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcihTVkdBbmlt
YXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCkKLSAgICA6IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKEFuaW1hdGVkRW51bWVyYXRpb24sIGFu
aW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQotewotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I6OmNvbnN0cnVj
dEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgQVNTRVJUKG1fYW5pbWF0
aW9uRWxlbWVudCk7Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlKGVudW1lcmF0
aW9uVmFsdWVGb3JUYXJnZXRBdHRyaWJ1dGUobV9hbmltYXRpb25FbGVtZW50LT50YXJnZXRFbGVt
ZW50KCksIG1fYW5pbWF0aW9uRWxlbWVudC0+YXR0cmlidXRlTmFtZSgpLCBzdHJpbmcpKTsKLX0K
LQotc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bkFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVk
UHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIHJldHVybiBjb25zdHJ1Y3RGcm9t
QmFzZVZhbHVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12
b2lkIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjo6c3RvcEFuaW1WYWxBbmltYXRpb24o
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewot
ICAgIHN0b3BBbmltVmFsQW5pbWF0aW9uRm9yVHlwZTxTVkdBbmltYXRlZEVudW1lcmF0aW9uPihh
bmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I6
OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmIGFuaW1hdGVkVHlwZXMsIFNWR0FuaW1hdGVkVHlwZSYgdHlwZSkKLXsKLSAgICByZXNldEZy
b21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4oYW5pbWF0ZWRUeXBlcywgdHlwZSk7
Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjphbmltVmFsV2lsbENo
YW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMp
Ci17Ci0gICAgYW5pbVZhbFdpbGxDaGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+
KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRv
cjo6YW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Qm
IGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgYW5pbVZhbERpZENoYW5nZUZvclR5cGU8U1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbkFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0Fu
aW1hdGVkVHlwZSopCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0
IHBlcmNlbnRhZ2UsIHVuc2lnbmVkLCBTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVk
VHlwZSogdG8sIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCi17
Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fY29udGV4dEVs
ZW1lbnQpOwotCi0gICAgY29uc3QgYXV0byBmcm9tRW51bWVyYXRpb24gPSAobV9hbmltYXRpb25F
bGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6
IGZyb20pLT5hczx1bnNpZ25lZD4oKTsKLSAgICBjb25zdCBhdXRvIHRvRW51bWVyYXRpb24gPSB0
by0+YXM8dW5zaWduZWQ+KCk7Ci0gICAgYXV0byYgYW5pbWF0ZWRFbnVtZXJhdGlvbiA9IGFuaW1h
dGVkLT5hczx1bnNpZ25lZD4oKTsKLQotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZURp
c2NyZXRlVHlwZTx1bnNpZ25lZD4ocGVyY2VudGFnZSwgZnJvbUVudW1lcmF0aW9uLCB0b0VudW1l
cmF0aW9uLCBhbmltYXRlZEVudW1lcmF0aW9uKTsKLX0KLQotZmxvYXQgU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbkFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKQotewotICAgIC8vIE5vIHBhY2VkIGFuaW1hdGlvbnMgZm9yIGVudW1lcmF0aW9ucy4K
LSAgICByZXR1cm4gLTE7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZEVudW1lcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkRW51bWVyYXRpb24uaAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAs
IDIwMTIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRl
ZFR5cGVBbmltYXRvci5oIgotI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKLQotdXNpbmcg
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiA9IFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2Zm
PHVuc2lnbmVkPjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRW51bVR5cGU+Ci11c2luZyBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uQXR0cmlidXRlID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1dGU8U1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxFbnVtVHlwZT4+OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBPd25lclR5cGUsIHR5cGVuYW1lIEVudW1UeXBlPgotdXNpbmcgU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbkF0dHJpYnV0ZUFjY2Vzc29yID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1dGVBY2Nlc3NvcjxP
d25lclR5cGUsIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8RW51bVR5cGU+LCBBbmlt
YXRlZEVudW1lcmF0aW9uPjsKLQotY2xhc3MgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9y
IGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKLXB1YmxpYzoKLSAgICBT
VkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0Vs
ZW1lbnQqKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVj
dEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcEFuaW1WYWxBbmlt
YXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJv
cGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhbmltVmFs
V2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJv
cGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5p
bWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYWxjdWxh
dGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBT
VkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdB
bmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25z
dCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHJldmlz
aW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTExLDggKzExMSw2IEBAIHB1YmxpYzoKICAgICBBbmltYXRlZFByb3Bl
cnR5VHlwZSB0eXBlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN0YXRpYyBBbmltYXRlZFByb3Bl
cnR5VHlwZSBhbmltYXRlZFR5cGVzW10gPSB7Ci0gICAgICAgICAgICBBbmltYXRlZEFuZ2xlLAot
ICAgICAgICAgICAgQW5pbWF0ZWRFbnVtZXJhdGlvbiwKICAgICAgICAgICAgIEFuaW1hdGVkTGVu
Z3RoLAogICAgICAgICAgICAgQW5pbWF0ZWRMZW5ndGhMaXN0LAogICAgICAgICAgICAgQW5pbWF0
ZWRQYXRoLApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAkocmV2
aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOSw4ICsxOSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRBbmdsZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRp
b24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUGF0aC5oIgpAQCAtMzgsOCAr
MzYsMTAgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwogCiAgICAg
ICAgIHN3aXRjaCAoYXR0cmlidXRlVHlwZSkgeworICAgICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6
CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRCb29sZWFuOgogICAgICAgICBjYXNlIEFuaW1hdGVkQ29s
b3I6CisgICAgICAgIGNhc2UgQW5pbWF0ZWRFbnVtZXJhdGlvbjoKICAgICAgICAgY2FzZSBBbmlt
YXRlZEludGVnZXI6CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2Vy
OgogICAgICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgpAQCAtNTEsMTAgKzUxLDYgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOgogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50
LCBjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRFbnVtZXJhdGlvbjoKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb25B
bmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNl
IEFuaW1hdGVkTGVuZ3RoOgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZH
QW5pbWF0ZWRMZW5ndGhBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQp
OwogICAgICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoTGlzdDoKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzks
MjggKzM5LDIzIEBAIGlubGluZSBTVkdDbGlwUGF0aEVsZW1lbnQ6OlNWR0NsaXBQYXRoRWwKICAg
ICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQodGhpcykKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6Y2xpcFBhdGhUYWcpKTsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMo
KTsKLX0KKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3Rl
clByb3BlcnR5PFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZSwgJlNWR0NsaXBQYXRoRWxlbWVudDo6bV9jbGlwUGF0aFVuaXRzPigpOworICAgIH0p
O30KIAogUmVmPFNWR0NsaXBQYXRoRWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0NsaXBQYXRoRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkpOwogfQogCi12b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkK
LXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFy
ZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3Rl
ckF0dHJpYnV0ZTxTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZH
VW5pdFR5cGUsICZTVkdDbGlwUGF0aEVsZW1lbnQ6Om1fY2xpcFBhdGhVbml0cz4oKTsKLX0KLQog
dm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1
ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3Ry
aW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAg
bV9jbGlwUGF0aFVuaXRzLnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgbV9j
bGlwUGF0aFVuaXRzLT5zZXRCYXNlVmFsSW50ZXJuYWw8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlw
ZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcwLDcgKzY1
LDcgQEAgdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKAogCiB2b2lkIFNW
R0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoaXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAg
ICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAg
ICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKICAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyAr
MjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRp
b24uaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVk
ZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgiCkBAIC0z
NSwyNSArMzQsMTggQEAgY2xhc3MgU1ZHQ2xpcFBhdGhFbGVtZW50IGZpbmFsIDogcHVibGljIAog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8U1ZHQ2xpcFBhdGhFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlIGNsaXBQYXRoVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX2NsaXBQYXRoVW5pdHMuY3VycmVu
dFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbj4gY2xpcFBhdGhVbml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9jbGlwUGF0aFVu
aXRzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUgY2xpcFBhdGhVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
cFBhdGhVbml0cy0+Y3VycmVudFZhbHVlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KCk7IH0K
KyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBjbGlwUGF0aFVuaXRzQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX2NsaXBQYXRoVW5pdHM7IH0KIAogcHJpdmF0ZToKICAgICBTVkdDbGlwUGF0aEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB1c2luZyBBdHRyaWJ1
dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHQ2xpcFBhdGhFbGVt
ZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+Owot
ICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmli
dXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdp
c3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29u
c3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVy
dHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdDbGlwUGF0aEVsZW1lbnQs
IFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAg
Y29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CkBAIC02Niw3ICs1OCw3IEBAIHByaXZhdGU6
CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlz
IH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9Owot
ICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0
VHlwZT4gbV9jbGlwUGF0aFVuaXRzIHsgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJT
UEFDRU9OVVNFIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fY2xpcFBhdGhV
bml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6
OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzM4MykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCw5IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChTVkdDb21wb25lbnQKIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogewotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotICAgIAogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10g
eworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp0
eXBlQXR0ciwgQ29tcG9uZW50VHJhbnNmZXJUeXBlLCAmU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQ6Om1fdHlwZT4oKTsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0
ZXJQcm9wZXJ0eTxTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyLCAmU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQ6Om1fdGFibGVWYWx1ZXM+KCk7CiAgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnNsb3BlQXR0ciwgJlNWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjptX3Nsb3BlPigpOwogICAgICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjppbnRlcmNlcHRBdHRyLCAmU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6Om1faW50ZXJjZXB0PigpOwpAQCAtNDcsMjAg
KzQ2LDEyIEBAIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpTVkcKICAgICB9
KTsKIH0KIAotdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6cmVnaXN0
ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5
KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBy
ZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6dHlwZUF0dHIsIENvbXBvbmVudFRy
YW5zZmVyVHlwZSwgJlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjptX3R5cGU+
KCk7Ci19Ci0KIHZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7CiAgICAgICAg
IENvbXBvbmVudFRyYW5zZmVyVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8
Q29tcG9uZW50VHJhbnNmZXJUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChw
cm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fdHlwZS5zZXRWYWx1ZShwcm9wZXJ0eVZh
bHVlKTsKKyAgICAgICAgICAgIG1fdHlwZS0+c2V0QmFzZVZhbEludGVybmFsPENvbXBvbmVudFRy
YW5zZmVyVHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudC5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjIsNyArMjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGRUNvbXBvbmVudFRy
YW5zZmVyLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUg
IlNWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzMsNyArNzIsNyBAQCBj
bGFzcyBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVuCiBwdWJsaWM6CiAgICAgQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uKCkgY29uc3Q7CiAKLSAgICBD
b21wb25lbnRUcmFuc2ZlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5jdXJyZW50
VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIENvbXBvbmVudFRyYW5zZmVyVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLT5jdXJyZW50VmFsdWU8Q29tcG9uZW50VHJh
bnNmZXJUeXBlPigpOyB9CiAgICAgY29uc3QgU1ZHTnVtYmVyTGlzdCYgdGFibGVWYWx1ZXMoKSBj
b25zdCB7IHJldHVybiBtX3RhYmxlVmFsdWVzLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGZsb2F0
IHNsb3BlKCkgY29uc3QgeyByZXR1cm4gbV9zbG9wZS0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBm
bG9hdCBpbnRlcmNlcHQoKSBjb25zdCB7IHJldHVybiBtX2ludGVyY2VwdC0+Y3VycmVudFZhbHVl
KCk7IH0KQEAgLTgxLDcgKzgwLDcgQEAgcHVibGljOgogICAgIGZsb2F0IGV4cG9uZW50KCkgY29u
c3QgeyByZXR1cm4gbV9leHBvbmVudC0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBmbG9hdCBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldC0+Y3VycmVudFZhbHVlKCk7IH0KIAotICAgIFJl
ZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiB0eXBlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3R5
cGUuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbiYgdHlwZUFuaW1hdGVkKCkgeyByZXR1cm4gbV90eXBlOyB9CiAgICAg
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0JiB0YWJsZVZhbHVlc0FuaW1hdGVkKCkgeyByZXR1cm4gbV90
YWJsZVZhbHVlczsgfQogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBzbG9wZUFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV9zbG9wZTsgfQogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBpbnRlcmNlcHRBbmltYXRl
ZCgpIHsgcmV0dXJuIG1faW50ZXJjZXB0OyB9CkBAIC05MywxOCArOTIsMTEgQEAgcHJvdGVjdGVk
OgogICAgIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50LCBTVkdFbGVtZW50PjsKLSAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmli
dXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0
cmlidXRlcygpOwogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93
bmVyUHJveHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7
IH0KIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0
cnk8U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQ+OwogICAg
IGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtMTEzLDcg
KzEwNSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBt
X2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0
cmlidXRlPENvbXBvbmVudFRyYW5zZmVyVHlwZT4gbV90eXBlIHsgRkVDT01QT05FTlRUUkFOU0ZF
Ul9UWVBFX0lERU5USVRZIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fdHlw
ZSB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBGRUNPTVBPTkVOVFRSQU5T
RkVSX1RZUEVfSURFTlRJVFkpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4gbV90
YWJsZVZhbHVlcyB7IFNWR0FuaW1hdGVkTnVtYmVyTGlzdDo6Y3JlYXRlKHRoaXMpIH07CiAgICAg
UmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX3Nsb3BlIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0
ZSh0aGlzLCAxKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9pbnRlcmNlcHQgeyBT
VkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0MCw3ICs3NDAsMTMgQEAgdm9pZCBTVkdFbGVt
ZW50Ojpjb21taXRQcm9wZXJ0eUNoYW5nZShTVgogdm9pZCBTVkdFbGVtZW50Ojpjb21taXRQcm9w
ZXJ0eUNoYW5nZShTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5KQogewogICAg
IFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5UmVnaXN0cnkoKS5hbmltYXRl
ZFByb3BlcnR5QXR0cmlidXRlTmFtZShhbmltYXRlZFByb3BlcnR5KTsKLSAgICBzZXRTeW5jaHJv
bml6ZWRMYXp5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHkuYmFzZVZh
bEFzU3RyaW5nKCkpOworCisgICAgLy8gQSBjaGFuZ2UgaW4gYSBzdHlsZSBwcm9wZXJ0eSwgZS5n
IFNWR1JlY3RFbGVtZW50Ojp4IHNob3VsZCBiZSBzZXJpYWxpemVkIHRvCisgICAgLy8gdGhlIGF0
dHJpYnV0ZSBpbW1lZGlhdGVseS4gT3RoZXJ3aXNlIGl0IGlzIG9rYXkgdG8gYmUgbGF6eSBpbiB0
aGlzIHJlZ2FyZC4KKyAgICBpZiAoIXByb3BlcnR5UmVnaXN0cnkoKS5pc0FuaW1hdGVkU3R5bGVQ
cm9wZXJ0eUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkKKyAgICAgICAgYW5pbWF0ZWRQcm9wZXJ0
eS5zZXREaXJ0eSgpOworICAgIGVsc2UKKyAgICAgICAgc2V0U3luY2hyb25pemVkTGF6eUF0dHJp
YnV0ZShhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5LmJhc2VWYWxBc1N0cmluZygpKTsK
IAogICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CiAgICAgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChhdHRyaWJ1dGVOYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxl
bmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDEwIEBAIGlubGluZSBT
VkdGRUJsZW5kRWxlbWVudDo6U1ZHRkVCbGVuZEVsZW0KICAgICA6IFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6ZmVCbGVuZFRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygp
OwogICAgIAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNh
bGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3Rl
clByb3BlcnR5PFNWR05hbWVzOjptb2RlQXR0ciwgQmxlbmRNb2RlLCAmU1ZHRkVCbGVuZEVsZW1l
bnQ6Om1fbW9kZT4oKTsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0
eTxTVkdOYW1lczo6aW5BdHRyLCAmU1ZHRkVCbGVuZEVsZW1lbnQ6Om1faW4xPigpOwogICAgICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjppbjJBdHRyLCAm
U1ZHRkVCbGVuZEVsZW1lbnQ6Om1faW4yPigpOwogICAgIH0pOwpAQCAtNTEsMjAgKzUxLDEyIEBA
IFJlZjxTVkdGRUJsZW5kRWxlbWVudD4gU1ZHRkVCbGVuZEVsZW1lbnQKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdGRUJsZW5kRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogICAg
IAotdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBh
dXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0
ZTxTVkdOYW1lczo6bW9kZUF0dHIsIEJsZW5kTW9kZSwgJlNWR0ZFQmxlbmRFbGVtZW50OjptX21v
ZGU+KCk7Ci19Ci0KIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAg
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om1vZGVBdHRyKSB7CiAgICAgICAgIEJsZW5kTW9kZSBtb2Rl
ID0gQmxlbmRNb2RlOjpOb3JtYWw7CiAgICAgICAgIGlmIChwYXJzZUJsZW5kTW9kZSh2YWx1ZSwg
bW9kZSkpCi0gICAgICAgICAgICBtX21vZGUuc2V0VmFsdWUobW9kZSk7CisgICAgICAgICAgICBt
X21vZGUtPnNldEJhc2VWYWxJbnRlcm5hbDxCbGVuZE1vZGU+KG1vZGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAko
cmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiR3JhcGhpY3NUeXBlcy5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24u
aCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzIsNiArMzEsMTMgQEAgdGVtcGxhdGU8Pgogc3RydWN0
IFNWR1Byb3BlcnR5VHJhaXRzPEJsZW5kTW9kZT4gewogICAgIHN0YXRpYyB1bnNpZ25lZCBoaWdo
ZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEJsZW5kTW9kZTo6
THVtaW5vc2l0eSk7IH0KIAorICAgIHN0YXRpYyBCbGVuZE1vZGUgZnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZykKKyAgICB7CisgICAgICAgIEJsZW5kTW9kZSBtb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWw7CisgICAgICAgIHBhcnNlQmxlbmRNb2RlKHN0cmluZywgbW9kZSk7CisgICAgICAg
IHJldHVybiBtb2RlOworICAgIH0KKwogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoQmxlbmRN
b2RlIHR5cGUpCiAgICAgewogICAgICAgICBpZiAodHlwZSA8IEJsZW5kTW9kZTo6UGx1c0Rhcmtl
cikKQEAgLTQ4LDI4ICs1NCwyMSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgaW4xKCkgY29uc3Qg
eyByZXR1cm4gbV9pbjEtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgU3RyaW5nIGluMigpIGNvbnN0
IHsgcmV0dXJuIG1faW4yLT5jdXJyZW50VmFsdWUoKTsgfQotICAgIEJsZW5kTW9kZSBtb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2RlLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9CisgICAgQmxlbmRNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGUtPmN1cnJlbnRW
YWx1ZTxCbGVuZE1vZGU+KCk7IH0KIAogICAgIFNWR0FuaW1hdGVkU3RyaW5nJiBpbjFBbmltYXRl
ZCgpIHsgcmV0dXJuIG1faW4xOyB9CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcmIGluMkFuaW1hdGVk
KCkgeyByZXR1cm4gbV9pbjI7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4g
bW9kZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9tb2RlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIG1vZGVBbmltYXRl
ZCgpIHsgcmV0dXJuIG1fbW9kZTsgfQogCiBwcml2YXRlOgogICAgIFNWR0ZFQmxlbmRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdXNpbmcgQXR0cmlidXRl
T3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFQmxlbmRFbGVtZW50
LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwotICAgIHN0YXRpYyBBdHRy
aWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7
IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRl
T3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNW
R1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRUJsZW5kRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBw
cm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5
OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KLQogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jikgb3ZlcnJpZGU7CiAKQEAgLTgwLDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVk
U3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKICAgICBS
ZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4yIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0
aGlzKSB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8QmxlbmRNb2RlPiBt
X21vZGUgeyBCbGVuZE1vZGU6Ok5vcm1hbCB9OworICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0
aW9uPiBtX21vZGUgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgQmxlbmRN
b2RlOjpOb3JtYWwpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHJldmlzaW9u
IDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDExICszNSwxMSBAQCBpbmxpbmUgU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQ6OlNWR0ZFQ29sCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmZlQ29sb3JNYXRyaXhUYWcpKTsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLSAg
ICAKKwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxf
b25jZShvbmNlRmxhZywgW10gewogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclBy
b3BlcnR5PFNWR05hbWVzOjppbkF0dHIsICZTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6bV9pbjE+
KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6
OnR5cGVBdHRyLCBDb2xvck1hdHJpeFR5cGUsICZTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6bV90
eXBlPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05h
bWVzOjp2YWx1ZXNBdHRyLCAmU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6Om1fdmFsdWVzPigpOwog
ICAgIH0pOwogfQpAQCAtNDksMjAgKzQ5LDEyIEBAIFJlZjxTVkdGRUNvbG9yTWF0cml4RWxlbWVu
dD4gU1ZHRkVDb2xvck0KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRUNvbG9yTWF0cml4
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0
cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp0eXBlQXR0
ciwgQ29sb3JNYXRyaXhUeXBlLCAmU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6Om1fdHlwZT4oKTsK
LX0KLQogdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eVZh
bHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8Q29sb3JNYXRyaXhUeXBlPjo6ZnJvbVN0cmluZyh2YWx1
ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fdHlwZS5z
ZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1fdHlwZS0+c2V0QmFzZVZhbElu
dGVybmFsPENvbG9yTWF0cml4VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJGRUNvbG9yTWF0cml4LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MCwyOSArNjksMjIgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIFN0cmluZyBpbjEoKSBjb25zdCB7
IHJldHVybiBtX2luMS0+Y3VycmVudFZhbHVlKCk7IH0KLSAgICBDb2xvck1hdHJpeFR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQorICAgIENvbG9yTWF0cml4VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
LT5jdXJyZW50VmFsdWU8Q29sb3JNYXRyaXhUeXBlPigpOyB9CiAgICAgY29uc3QgU1ZHTnVtYmVy
TGlzdCYgdmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMtPmN1cnJlbnRWYWx1ZSgpOyB9
CiAKICAgICBTVkdBbmltYXRlZFN0cmluZyYgaW4xQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMTsg
fQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiB0eXBlQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX3R5cGUuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Cisg
ICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgdHlwZUFuaW1hdGVkKCkgeyByZXR1cm4gbV90eXBl
OyB9CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0JiB2YWx1ZXNBbmltYXRlZCgpIHsgcmV0dXJu
IG1fdmFsdWVzOyB9CiAKIHByaXZhdGU6CiAgICAgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25l
clByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47Ci0gICAgc3RhdGljIEF0
dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgp
IHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBTVkdBdHRyaWJ1
dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0g
U1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVn
aXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5
UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1
dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtMTAyLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxT
VkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMp
IH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxDb2xvck1hdHJpeFR5cGU+
IG1fdHlwZSB7IEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVggfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbj4gbV90eXBlIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVt
YmVyTGlzdD4gbV92YWx1ZXMgeyBTVkdBbmltYXRlZE51bWJlckxpc3Q6OmNyZWF0ZSh0aGlzKSB9
OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMiArMzUsMTIgQEAgaW5saW5l
IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6U1ZHRkVDb21wbwogICAgIDogU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbXBvc2l0ZVRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmli
dXRlcygpOwotICAgIAorCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6
OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmluQXR0ciwgJlNWR0ZFQ29tcG9zaXRlRWxlbWVu
dDo6bV9pbjE+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8
U1ZHTmFtZXM6OmluMkF0dHIsICZTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6Om1faW4yPigpOworICAg
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpvcGVyYXRv
ckF0dHIsIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUsICZTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6Om1f
c3ZnT3BlcmF0b3I+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVy
dHk8U1ZHTmFtZXM6OmsxQXR0ciwgJlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6bV9rMT4oKTsKICAg
ICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6azJBdHRy
LCAmU1ZHRkVDb21wb3NpdGVFbGVtZW50OjptX2syPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lz
dHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjprM0F0dHIsICZTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQ6Om1fazM+KCk7CkBAIC01MywyMCArNTMsMTIgQEAgUmVmPFNWR0ZFQ29tcG9zaXRlRWxl
bWVudD4gU1ZHRkVDb21wb3NpdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFQ29tcG9z
aXRlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0ZFQ29tcG9zaXRl
RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0
dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6b3BlcmF0
b3JBdHRyLCBDb21wb3NpdGVPcGVyYXRpb25UeXBlLCAmU1ZHRkVDb21wb3NpdGVFbGVtZW50Ojpt
X3N2Z09wZXJhdG9yPigpOwotfQotCiB2b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6b3BlcmF0b3JBdHRyKSB7CiAgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJh
aXRzPENvbXBvc2l0ZU9wZXJhdGlvblR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAg
aWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9zdmdPcGVyYXRvci5zZXRWYWx1
ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1fc3ZnT3BlcmF0b3ItPnNldEJhc2VWYWxJ
bnRlcm5hbDxDb21wb3NpdGVPcGVyYXRpb25UeXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuaAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9zaXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw2IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkZFQ29tcG9zaXRlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Niw3ICs4NSw3IEBAIHB1Ymxp
YzoKIAogICAgIFN0cmluZyBpbjEoKSBjb25zdCB7IHJldHVybiBtX2luMS0+Y3VycmVudFZhbHVl
KCk7IH0KICAgICBTdHJpbmcgaW4yKCkgY29uc3QgeyByZXR1cm4gbV9pbjItPmN1cnJlbnRWYWx1
ZSgpOyB9Ci0gICAgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSBzdmdPcGVyYXRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fc3ZnT3BlcmF0b3IuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KKyAgICBDb21wb3NpdGVPcGVyYXRpb25UeXBlIHN2Z09wZXJhdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9zdmdPcGVyYXRvci0+Y3VycmVudFZhbHVlPENvbXBvc2l0ZU9wZXJhdGlvblR5cGU+KCk7
IH0KICAgICBmbG9hdCBrMSgpIGNvbnN0IHsgcmV0dXJuIG1fazEtPmN1cnJlbnRWYWx1ZSgpOyB9
CiAgICAgZmxvYXQgazIoKSBjb25zdCB7IHJldHVybiBtX2syLT5jdXJyZW50VmFsdWUoKTsgfQog
ICAgIGZsb2F0IGszKCkgY29uc3QgeyByZXR1cm4gbV9rMy0+Y3VycmVudFZhbHVlKCk7IH0KQEAg
LTk0LDcgKzkzLDcgQEAgcHVibGljOgogCiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcmIGluMUFuaW1h
dGVkKCkgeyByZXR1cm4gbV9pbjE7IH0KICAgICBTVkdBbmltYXRlZFN0cmluZyYgaW4yQW5pbWF0
ZWQoKSB7IHJldHVybiBtX2luMjsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9u
PiBzdmdPcGVyYXRvckFuaW1hdGVkKCkgeyByZXR1cm4gbV9zdmdPcGVyYXRvci5hbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0
aW9uJiBzdmdPcGVyYXRvckFuaW1hdGVkKCkgeyByZXR1cm4gbV9zdmdPcGVyYXRvcjsgfQogICAg
IFNWR0FuaW1hdGVkTnVtYmVyJiBrMUFuaW1hdGVkKCkgeyByZXR1cm4gbV9rMTsgfQogICAgIFNW
R0FuaW1hdGVkTnVtYmVyJiBrMkFuaW1hdGVkKCkgeyByZXR1cm4gbV9rMjsgfQogICAgIFNWR0Fu
aW1hdGVkTnVtYmVyJiBrM0FuaW1hdGVkKCkgeyByZXR1cm4gbV9rMzsgfQpAQCAtMTA0LDE4ICsx
MDMsMTEgQEAgcHJpdmF0ZToKICAgICBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0g
U1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25l
clByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBB
dHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94
eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRl
T3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5
T3duZXJSZWdpc3RyeTxTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVy
dHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQog
Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOwogCkBAIC0xMjYsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0eVJlZ2lz
dHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3Ry
aW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKICAgICBSZWY8
U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4yIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlz
KSB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8Q29tcG9zaXRlT3BlcmF0
aW9uVHlwZT4gbV9zdmdPcGVyYXRvciB7IEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9zdmdPcGVyYXRvciB7IFNWR0FuaW1hdGVk
RW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSKSB9Owog
ICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9rMSB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVh
dGUodGhpcykgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fazIgeyBTVkdBbmltYXRl
ZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2sz
IHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
NDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBAIGlubGluZSBTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudDo6U1ZHRkUKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdO
YW1lczo6ZmVDb252b2x2ZU1hdHJpeFRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwog
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7CkBAIC00OSw2ICs0OCw3IEBAIGlubGluZSBTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6U1ZHRkUKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9w
ZXJ0eTxTVkdOYW1lczo6Ymlhc0F0dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9i
aWFzPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05h
bWVzOjp0YXJnZXRYQXR0ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX3RhcmdldFg+
KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6
OnRhcmdldFlBdHRyLCAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fdGFyZ2V0WT4oKTsK
KyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6ZWRn
ZU1vZGVBdHRyLCBFZGdlTW9kZVR5cGUsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9l
ZGdlTW9kZT4oKTsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxT
VkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6bV9rZXJuZWxVbml0TGVuZ3RoWCwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX2tl
cm5lbFVuaXRMZW5ndGhZPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclBy
b3BlcnR5PFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50OjptX3ByZXNlcnZlQWxwaGE+KCk7CiAgICAgfSk7CkBAIC01OSwxNCArNTksNiBAQCBS
ZWY8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ+IFNWR0ZFQ29uCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVz
KCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYg
KCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdp
c3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6ZWRnZU1vZGVBdHRyLCBFZGdlTW9kZVR5cGUsICZTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9lZGdlTW9kZT4oKTsKLX0KLQogdm9pZCBTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdO
YW1lczo6aW5BdHRyKSB7CkBAIC04Nyw3ICs3OSw3IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OnBhcnNlQXQKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVBdHRy
KSB7CiAgICAgICAgIEVkZ2VNb2RlVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFp
dHM8RWRnZU1vZGVUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0
eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fZWRnZU1vZGUuc2V0VmFsdWUocHJvcGVydHlWYWx1
ZSk7CisgICAgICAgICAgICBtX2VkZ2VNb2RlLT5zZXRCYXNlVmFsSW50ZXJuYWw8RWRnZU1vZGVU
eXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZG9jdW1lbnQo
KS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0V2FybmluZygiZmVDb252b2x2ZU1hdHJpeDog
cHJvYmxlbSBwYXJzaW5nIGVkZ2VNb2RlPVwiIiArIHZhbHVlICsgIlwiLiBGaWx0ZXJlZCBlbGVt
ZW50IHdpbGwgbm90IGJlIGRpc3BsYXllZC4iKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgJKHJldmlz
aW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBmbG9h
dCBiaWFzKCkgY29uc3QgeyByZXR1cm4gbV9iaWFzLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGlu
dCB0YXJnZXRYKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRYLT5jdXJyZW50VmFsdWUoKTsgfQog
ICAgIGludCB0YXJnZXRZKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRZLT5jdXJyZW50VmFsdWUo
KTsgfQotICAgIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZU1v
ZGUuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBFZGdlTW9kZVR5
cGUgZWRnZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VNb2RlLT5jdXJyZW50VmFsdWU8RWRn
ZU1vZGVUeXBlPigpOyB9CiAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgoKSBjb25zdCB7IHJl
dHVybiBtX2tlcm5lbFVuaXRMZW5ndGhYLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhZKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWS0+Y3Vy
cmVudFZhbHVlKCk7IH0KICAgICBib29sIHByZXNlcnZlQWxwaGEoKSBjb25zdCB7IHJldHVybiBt
X3ByZXNlcnZlQWxwaGEtPmN1cnJlbnRWYWx1ZSgpOyB9CkBAIC04OCw3ICs4OCw3IEBAIHB1Ymxp
YzoKICAgICBTVkdBbmltYXRlZE51bWJlciYgYmlhc0FuaW1hdGVkKCkgeyByZXR1cm4gbV9iaWFz
OyB9CiAgICAgU1ZHQW5pbWF0ZWRJbnRlZ2VyJiB0YXJnZXRYQW5pbWF0ZWQoKSB7IHJldHVybiBt
X3RhcmdldFg7IH0KICAgICBTVkdBbmltYXRlZEludGVnZXImIHRhcmdldFlBbmltYXRlZCgpIHsg
cmV0dXJuIG1fdGFyZ2V0WTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBl
ZGdlTW9kZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9lZGdlTW9kZS5hbmltYXRlZFByb3BlcnR5KGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBlZGdl
TW9kZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9lZGdlTW9kZTsgfQogICAgIFNWR0FuaW1hdGVkTnVt
YmVyJiBrZXJuZWxVbml0TGVuZ3RoWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVu
Z3RoWDsgfQogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBrZXJuZWxVbml0TGVuZ3RoWUFuaW1hdGVk
KCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWTsgfQogICAgIFNWR0FuaW1hdGVkQm9vbGVh
biYgcHJlc2VydmVBbHBoYUFuaW1hdGVkKCkgeyByZXR1cm4gbV9wcmVzZXJ2ZUFscGhhOyB9CkBA
IC05NywxOCArOTcsMTEgQEAgcHJpdmF0ZToKICAgICBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0
ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKLSAgICBz
dGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJl
Z2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnko
KTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNvbnN0IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3BlcnR5UmVn
aXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZH
UHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkg
fHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAg
ICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC0xMjUsNyArMTE4LDcgQEAgcHJp
dmF0ZToKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fYmlhcyB7IFNWR0FuaW1hdGVkTnVt
YmVyOjpjcmVhdGUodGhpcykgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiBtX3Rhcmdl
dFggeyBTVkdBbmltYXRlZEludGVnZXI6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmlt
YXRlZEludGVnZXI+IG1fdGFyZ2V0WSB7IFNWR0FuaW1hdGVkSW50ZWdlcjo6Y3JlYXRlKHRoaXMp
IH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxFZGdlTW9kZVR5cGU+IG1f
ZWRnZU1vZGUgeyBFREdFTU9ERV9EVVBMSUNBVEUgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbj4gbV9lZGdlTW9kZSB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlz
LCBFREdFTU9ERV9EVVBMSUNBVEUpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2tl
cm5lbFVuaXRMZW5ndGhYIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogICAg
IFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9rZXJuZWxVbml0TGVuZ3RoWSB7IFNWR0FuaW1hdGVk
TnVtYmVyOjpjcmVhdGUodGhpcykgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRCb29sZWFuPiBtX3By
ZXNlcnZlQWxwaGEgeyBTVkdBbmltYXRlZEJvb2xlYW46OmNyZWF0ZSh0aGlzKSB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5j
cHAJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTMgQEAgaW5s
aW5lIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6U1ZHRgogICAgIDogU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZURpc3BsYWNlbWVudE1hcFRhZykpOwotICAgIHJlZ2lz
dGVyQXR0cmlidXRlcygpOwotICAgIAorCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIFByb3BlcnR5
UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmluQXR0ciwgJlNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6bV9pbjE+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJl
Z2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmluMkF0dHIsICZTVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQ6Om1faW4yPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3Bl
cnR5PFNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSwg
JlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6bV94Q2hhbm5lbFNlbGVjdG9yPigpOworICAg
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp5Q2hhbm5l
bFNlbGVjdG9yQXR0ciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSwgJlNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6bV95Q2hhbm5lbFNlbGVjdG9yPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpzY2FsZUF0dHIsICZTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQ6Om1fc2NhbGU+KCk7CiAgICAgfSk7CiB9CkBAIC00OSwyOCArNTAsMTkgQEAg
UmVmPFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudD4gU1ZHRkVEaQogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwogfQogCi12b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1
dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAg
aWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5y
ZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIsIENoYW5uZWxT
ZWxlY3RvclR5cGUsICZTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6Om1feENoYW5uZWxTZWxl
Y3Rvcj4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eUNoYW5u
ZWxTZWxlY3RvckF0dHIsIENoYW5uZWxTZWxlY3RvclR5cGUsICZTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQ6Om1feUNoYW5uZWxTZWxlY3Rvcj4oKTsKLX0KLQogdm9pZCBTVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnhDaGFubmVsU2VsZWN0b3JBdHRyKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNW
R1Byb3BlcnR5VHJhaXRzPENoYW5uZWxTZWxlY3RvclR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsK
ICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV94Q2hhbm5lbFNl
bGVjdG9yLnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgbV94Q2hhbm5lbFNl
bGVjdG9yLT5zZXRCYXNlVmFsSW50ZXJuYWw8Q2hhbm5lbFNlbGVjdG9yVHlwZT4ocHJvcGVydHlW
YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1l
czo6eUNoYW5uZWxTZWxlY3RvckF0dHIpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0g
U1ZHUHJvcGVydHlUcmFpdHM8Q2hhbm5lbFNlbGVjdG9yVHlwZT46OmZyb21TdHJpbmcodmFsdWUp
OwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAgICAgICAgICBtX3lDaGFubmVs
U2VsZWN0b3Iuc2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX3lDaGFubmVs
U2VsZWN0b3ItPnNldEJhc2VWYWxJbnRlcm5hbDxDaGFubmVsU2VsZWN0b3JUeXBlPihwcm9wZXJ0
eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2aXNpb24gMjQzMzgz
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkZFRGlzcGxhY2VtZW50TWFwLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5o
IgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MiwzMiArNzEsMjUgQEAgcHVibGljOgogCiAgICAgU3Ry
aW5nIGluMSgpIGNvbnN0IHsgcmV0dXJuIG1faW4xLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIFN0
cmluZyBpbjIoKSBjb25zdCB7IHJldHVybiBtX2luMi0+Y3VycmVudFZhbHVlKCk7IH0KLSAgICBD
aGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3hD
aGFubmVsU2VsZWN0b3IuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAg
ICBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3lDaGFubmVsU2VsZWN0b3IuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
KyAgICBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX3hDaGFubmVsU2VsZWN0b3ItPmN1cnJlbnRWYWx1ZTxDaGFubmVsU2VsZWN0b3JUeXBlPigp
OyB9CisgICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV95Q2hhbm5lbFNlbGVjdG9yLT5jdXJyZW50VmFsdWU8Q2hhbm5lbFNlbGVjdG9yVHlw
ZT4oKTsgfQogICAgIGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZS0+Y3VycmVu
dFZhbHVlKCk7IH0KIAogICAgIFNWR0FuaW1hdGVkU3RyaW5nJiBpbjFBbmltYXRlZCgpIHsgcmV0
dXJuIG1faW4xOyB9CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcmIGluMkFuaW1hdGVkKCkgeyByZXR1
cm4gbV9pbjI7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4geENoYW5uZWxT
ZWxlY3RvckFuaW1hdGVkKCkgeyByZXR1cm4gbV94Q2hhbm5lbFNlbGVjdG9yLmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVu
dW1lcmF0aW9uPiB5Q2hhbm5lbFNlbGVjdG9yQW5pbWF0ZWQoKSB7IHJldHVybiBtX3lDaGFubmVs
U2VsZWN0b3IuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAg
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgeENoYW5uZWxTZWxlY3RvckFuaW1hdGVkKCkgeyByZXR1
cm4gbV94Q2hhbm5lbFNlbGVjdG9yOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgeUNo
YW5uZWxTZWxlY3RvckFuaW1hdGVkKCkgeyByZXR1cm4gbV95Q2hhbm5lbFNlbGVjdG9yOyB9CiAg
ICAgU1ZHQW5pbWF0ZWROdW1iZXImIHNjYWxlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3NjYWxlOyB9
CiAKIHByaXZhdGU6CiAgICAgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25l
clByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwotICAgIHN0YXRp
YyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0
cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9
Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0
cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3Ry
eSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQs
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJv
cGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0g
ICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtMTA4LDggKzEwMCw4IEBAIHBy
aXZhdGU6CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9
OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6
Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMiB7IFNWR0Fu
aW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9u
QXR0cmlidXRlPENoYW5uZWxTZWxlY3RvclR5cGU+IG1feENoYW5uZWxTZWxlY3RvciB7IENIQU5O
RUxfQSB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8Q2hhbm5lbFNlbGVj
dG9yVHlwZT4gbV95Q2hhbm5lbFNlbGVjdG9yIHsgQ0hBTk5FTF9BIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkRW51bWVyYXRpb24+IG1feENoYW5uZWxTZWxlY3RvciB7IFNWR0FuaW1hdGVkRW51bWVy
YXRpb246OmNyZWF0ZSh0aGlzLCBDSEFOTkVMX0EpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51
bWVyYXRpb24+IG1feUNoYW5uZWxTZWxlY3RvciB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNy
ZWF0ZSh0aGlzLCBDSEFOTkVMX0EpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX3Nj
YWxlIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHJldmlz
aW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMiArMzYsMTIgQEAgaW5saW5lIFNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudDo6U1ZHRkVHYQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KFNWR05hbWVzOjpmZUdhdXNzaWFuQmx1clRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygp
OwogCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHk8U1ZHTmFtZXM6OmluQXR0ciwgJlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6bV9pbjE+
KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6
OnN0ZERldmlhdGlvbkF0dHIsICZTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6Om1fc3RkRGV2aWF0
aW9uWCwgJlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6bV9zdGREZXZpYXRpb25ZPigpOworICAg
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjplZGdlTW9k
ZUF0dHIsIEVkZ2VNb2RlVHlwZSwgJlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6bV9lZGdlTW9k
ZT4oKTsKICAgICB9KTsKIH0KIApAQCAtNTcsMTQgKzU3LDYgQEAgdm9pZCBTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OnNldFN0ZERldgogICAgIGludmFsaWRhdGUoKTsKIH0KIAotdm9pZCBTVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYg
cmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZH
TmFtZXM6OmVkZ2VNb2RlQXR0ciwgRWRnZU1vZGVUeXBlLCAmU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50OjptX2VkZ2VNb2RlPigpOwotfQotCiB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0
cikgewpAQCAtODQsNyArNzYsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFy
c2VBdHRyCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0cikgewogICAgICAg
ICBhdXRvIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxFZGdlTW9kZVR5cGU+Ojpm
cm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAg
ICAgICAgbV9lZGdlTW9kZS5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1f
ZWRnZU1vZGUtPnNldEJhc2VWYWxJbnRlcm5hbDxFZGdlTW9kZVR5cGU+KHByb3BlcnR5VmFsdWUp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS5yZXBvcnRXYXJuaW5nKCJmZUdhdXNzaWFuQmx1cjogcHJvYmxlbSBwYXJzaW5nIGVkZ2VN
b2RlPVwiIiArIHZhbHVlICsgIlwiLiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3Bs
YXllZC4iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTUsNyArODcsNyBAQCB2b2lkIFNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VBdHRyCiAKIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ewotICAgIGlmIChpc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0
eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaW52YWxpZGF0ZSgpOwog
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRkVHYXVzc2lhbkJsdXIuaCIKLSNpbmNsdWRl
ICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaCIKIApAQCAtMzgsMjkgKzM3LDIyIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgaW4xKCkgY29u
c3QgeyByZXR1cm4gbV9pbjEtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgZmxvYXQgc3RkRGV2aWF0
aW9uWCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWC0+Y3VycmVudFZhbHVlKCk7IH0K
ICAgICBmbG9hdCBzdGREZXZpYXRpb25ZKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb25Z
LT5jdXJyZW50VmFsdWUoKTsgfQotICAgIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZWRnZU1vZGUuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
KyAgICBFZGdlTW9kZVR5cGUgZWRnZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VNb2RlLT5j
dXJyZW50VmFsdWU8RWRnZU1vZGVUeXBlPigpOyB9CiAKICAgICBTVkdBbmltYXRlZFN0cmluZyYg
aW4xQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMTsgfQogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBz
dGREZXZpYXRpb25YQW5pbWF0ZWQoKSB7IHJldHVybiBtX3N0ZERldmlhdGlvblg7IH0KICAgICBT
VkdBbmltYXRlZE51bWJlciYgc3RkRGV2aWF0aW9uWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9zdGRE
ZXZpYXRpb25ZOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IGVkZ2VNb2Rl
QW5pbWF0ZWQoKSB7IHJldHVybiBtX2VkZ2VNb2RlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIGVkZ2VNb2RlQW5p
bWF0ZWQoKSB7IHJldHVybiBtX2VkZ2VNb2RlOyB9CiAKIHByaXZhdGU6CiAgICAgU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAg
dXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzPjsKLSAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkm
IGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmli
dXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwog
ICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5n
IFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAg
IGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtNzEsNyArNjMs
NyBAQCBwcml2YXRlOgogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmlt
YXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBt
X3N0ZERldmlhdGlvblggeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAg
UmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX3N0ZERldmlhdGlvblkgeyBTVkdBbmltYXRlZE51bWJl
cjo6Y3JlYXRlKHRoaXMpIH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxF
ZGdlTW9kZVR5cGU+IG1fZWRnZU1vZGUgeyBFREdFTU9ERV9OT05FIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkRW51bWVyYXRpb24+IG1fZWRnZU1vZGUgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpj
cmVhdGUodGhpcywgRURHRU1PREVfTk9ORSkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5j
cHAJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDExIEBAIGlubGluZSBT
VkdGRU1vcnBob2xvZ3lFbGVtZW50OjpTVkdGRU1vcnAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6ZmVNb3JwaG9sb2d5VGFnKSk7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1
dGVzKCk7CiAgICAgCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJl
Z2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmluQXR0ciwgJlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
Om1faW4xPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNW
R05hbWVzOjpvcGVyYXRvckF0dHIsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUsICZTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50OjptX3N2Z09wZXJhdG9yPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpyYWRpdXNBdHRyLCAmU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudDo6bV9yYWRpdXNYLCAmU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6bV9yYWRpdXNZPigp
OwogICAgIH0pOwogfQpAQCAtNTYsMjAgKzU2LDEyIEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxl
bWVudDo6c2V0UmFkaXVzKGYKICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3Ry
eSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6
b3BlcmF0b3JBdHRyLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCAmU1ZHRkVNb3JwaG9sb2d5RWxl
bWVudDo6bV9zdmdPcGVyYXRvcj4oKTsKLX0KLQogdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIp
IHsKICAgICAgICAgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJv
cGVydHlUcmFpdHM8TW9ycGhvbG9neU9wZXJhdG9yVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwog
ICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAgICAgICAgICBtX3N2Z09wZXJhdG9y
LnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgbV9zdmdPcGVyYXRvci0+c2V0
QmFzZVZhbEludGVybmFsPE1vcnBob2xvZ3lPcGVyYXRvclR5cGU+KHByb3BlcnR5VmFsdWUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmgJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIx
LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRkVNb3JwaG9sb2d5LmgiCi0jaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MywxMiAr
NjIsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmFkaXVzKGZsb2F0IHJhZGl1c1gsIGZsb2F0
IHJhZGl1c1kpOwogCiAgICAgU3RyaW5nIGluMSgpIGNvbnN0IHsgcmV0dXJuIG1faW4xLT5jdXJy
ZW50VmFsdWUoKTsgfQotICAgIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgc3ZnT3BlcmF0b3IoKSBj
b25zdCB7IHJldHVybiBtX3N2Z09wZXJhdG9yLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9CisgICAgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBzdmdPcGVyYXRvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3ZnT3BlcmF0b3ItPmN1cnJlbnRWYWx1ZTxNb3JwaG9sb2d5T3BlcmF0b3JU
eXBlPigpOyB9CiAgICAgZmxvYXQgcmFkaXVzWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzWC0+
Y3VycmVudFZhbHVlKCk7IH0KICAgICBmbG9hdCByYWRpdXNZKCkgY29uc3QgeyByZXR1cm4gbV9y
YWRpdXNZLT5jdXJyZW50VmFsdWUoKTsgfQogCiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcmIGluMUFu
aW1hdGVkKCkgeyByZXR1cm4gbV9pbjE7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbj4gc3ZnT3BlcmF0b3JBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3ZnT3BlcmF0b3IuYW5pbWF0
ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbiYgc3ZnT3BlcmF0b3JBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3ZnT3BlcmF0b3I7IH0K
ICAgICBTVkdBbmltYXRlZE51bWJlciYgcmFkaXVzWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9yYWRp
dXNYOyB9CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHJhZGl1c1lBbmltYXRlZCgpIHsgcmV0dXJu
IG1fcmFkaXVzWTsgfQogCkBAIC05Nyw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgQXR0cmlidXRl
T3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0
ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwotICAg
IFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8TW9ycGhvbG9neU9wZXJhdG9yVHlwZT4g
bV9zdmdPcGVyYXRvciB7IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSB9OworICAgIFJlZjxT
VkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3N2Z09wZXJhdG9yIHsgU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbjo6Y3JlYXRlKHRoaXMsIEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSkgfTsKICAgICBS
ZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fcmFkaXVzWCB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVh
dGUodGhpcykgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fcmFkaXVzWSB7IFNWR0Fu
aW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDMzODMpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDEzICszNCwxNCBAQCBpbmxpbmUgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6U1ZH
RkVUdXJiCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFt
ZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlVHVyYnVs
ZW5jZVRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotICAgIAorCiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6
OmJhc2VGcmVxdWVuY3lBdHRyLCAmU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6bV9iYXNlRnJlcXVl
bmN5WCwgJlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6Om1fYmFzZUZyZXF1ZW5jeVk+KCk7CiAgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om51bU9jdGF2
ZXNBdHRyLCAmU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6bV9udW1PY3RhdmVzPigpOwogICAgICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpzZWVkQXR0ciwg
JlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6Om1fc2VlZD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdp
c3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLCBTVkdTdGl0
Y2hPcHRpb25zLCAmU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6bV9zdGl0Y2hUaWxlcz4oKTsKKyAg
ICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6dHlwZUF0
dHIsIFR1cmJ1bGVuY2VUeXBlLCAmU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6bV90eXBlPigpOwog
ICAgIH0pOwogfQogCkBAIC00OSwyOCArNTAsMTkgQEAgUmVmPFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQ+IFNWR0ZFVHVyYnVsZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdGRVR1cmJ1bGVuY2VF
bGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0
cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpzdGl0Y2hU
aWxlc0F0dHIsIFNWR1N0aXRjaE9wdGlvbnMsICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjptX3N0
aXRjaFRpbGVzPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp0
eXBlQXR0ciwgVHVyYnVsZW5jZVR5cGUsICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjptX3R5cGU+
KCk7Ci19Ci0KIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKICAgICAgICAgVHVyYnVsZW5jZVR5
cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFR1cmJ1bGVuY2VUeXBlPjo6ZnJv
bVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlICE9IFR1cmJ1bGVuY2VU
eXBlOjpVbmtub3duKQotICAgICAgICAgICAgbV90eXBlLnNldFZhbHVlKHByb3BlcnR5VmFsdWUp
OworICAgICAgICAgICAgbV90eXBlLT5zZXRCYXNlVmFsSW50ZXJuYWw8VHVyYnVsZW5jZVR5cGU+
KHByb3BlcnR5VmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hbWUg
PT0gU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0cikgewogICAgICAgICBTVkdTdGl0Y2hPcHRpb25z
IHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdTdGl0Y2hPcHRpb25zPjo6ZnJv
bVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAg
ICAgIG1fc3RpdGNoVGlsZXMuc2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAgICBt
X3N0aXRjaFRpbGVzLT5zZXRCYXNlVmFsSW50ZXJuYWw8U1ZHU3RpdGNoT3B0aW9ucz4ocHJvcGVy
dHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExNiw3ICsxMDgsNyBAQCBi
b29sIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnNldEZpbHRlckVmCiAKIHZvaWQgU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIHsKLSAgICBpZiAoaXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBp
ZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHByaW1p
dGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJKHJldmlzaW9uIDI0
MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
RkVUdXJidWxlbmNlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xMDAsMzIgKzk5LDI1IEBAIHB1YmxpYzoKICAgICBmbG9hdCBiYXNl
RnJlcXVlbmN5WSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZUZyZXF1ZW5jeVktPmN1cnJlbnRWYWx1
ZSgpOyB9CiAgICAgaW50IG51bU9jdGF2ZXMoKSBjb25zdCB7IHJldHVybiBtX251bU9jdGF2ZXMt
PmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgZmxvYXQgc2VlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vl
ZC0+Y3VycmVudFZhbHVlKCk7IH0KLSAgICBTVkdTdGl0Y2hPcHRpb25zIHN0aXRjaFRpbGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGl0Y2hUaWxlcy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIFR1cmJ1bGVuY2VUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdTdGl0Y2hP
cHRpb25zIHN0aXRjaFRpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGl0Y2hUaWxlcy0+Y3VycmVu
dFZhbHVlPFNWR1N0aXRjaE9wdGlvbnM+KCk7IH0KKyAgICBUdXJidWxlbmNlVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlLT5jdXJyZW50VmFsdWU8VHVyYnVsZW5jZVR5cGU+KCk7IH0K
IAogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBiYXNlRnJlcXVlbmN5WEFuaW1hdGVkKCkgeyByZXR1
cm4gbV9iYXNlRnJlcXVlbmN5WDsgfQogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBiYXNlRnJlcXVl
bmN5WUFuaW1hdGVkKCkgeyByZXR1cm4gbV9iYXNlRnJlcXVlbmN5WTsgfQogICAgIFNWR0FuaW1h
dGVkSW50ZWdlciYgbnVtT2N0YXZlc0FuaW1hdGVkKCkgeyByZXR1cm4gbV9udW1PY3RhdmVzOyB9
CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHNlZWRBbmltYXRlZCgpIHsgcmV0dXJuIG1fc2VlZDsg
fQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBzdGl0Y2hUaWxlc0FuaW1hdGVk
KCkgeyByZXR1cm4gbV9zdGl0Y2hUaWxlcy5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gdHlwZUFuaW1h
dGVkKCkgeyByZXR1cm4gbV90eXBlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIHN0aXRjaFRpbGVzQW5pbWF0ZWQo
KSB7IHJldHVybiBtX3N0aXRjaFRpbGVzOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYg
dHlwZUFuaW1hdGVkKCkgeyByZXR1cm4gbV90eXBlOyB9CiAKIHByaXZhdGU6CiAgICAgU1ZHRkVU
dXJidWxlbmNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAg
IHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxT
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYg
YXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1
dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAg
ICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcg
UHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNv
bnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25vd25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtMTM4LDggKzEzMCw4
IEBAIHByaXZhdGU6CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2Jhc2VGcmVxdWVuY3lZ
IHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZEludGVnZXI+IG1fbnVtT2N0YXZlcyB7IFNWR0FuaW1hdGVkSW50ZWdlcjo6Y3JlYXRlKHRoaXMs
IDEpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX3NlZWQgeyBTVkdBbmltYXRlZE51
bWJlcjo6Y3JlYXRlKHRoaXMpIH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0
ZTxTVkdTdGl0Y2hPcHRpb25zPiBtX3N0aXRjaFRpbGVzIHsgU1ZHX1NUSVRDSFRZUEVfTk9TVElU
Q0ggfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPFR1cmJ1bGVuY2VUeXBl
PiBtX3R5cGUgeyBUdXJidWxlbmNlVHlwZTo6VHVyYnVsZW5jZSB9OworICAgIFJlZjxTVkdBbmlt
YXRlZEVudW1lcmF0aW9uPiBtX3N0aXRjaFRpbGVzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6
Y3JlYXRlKHRoaXMsIFNWR19TVElUQ0hUWVBFX05PU1RJVENIKSB9OworICAgIFJlZjxTVkdBbmlt
YXRlZEVudW1lcmF0aW9uPiBtX3R5cGUgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUo
dGhpcywgVHVyYnVsZW5jZVR5cGU6OlR1cmJ1bGVuY2UpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
RGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Nyw2ICs0NywxMiBAQCBpbmxpbmUgU1ZHRmls
dGVyRWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hl
aWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZh
bHVlIG9mICIxMjAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdO
YW1lczo6ZmlsdGVyVGFnKSk7CiAgICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcs
IFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1l
czo6ZmlsdGVyVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHRmlsdGVy
RWxlbWVudDo6bV9maWx0ZXJVbml0cz4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVn
aXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6
OlNWR1VuaXRUeXBlLCAmU1ZHRmlsdGVyRWxlbWVudDo6bV9wcmltaXRpdmVVbml0cz4oKTsKKyAg
ICB9KTsKIH0KIAogUmVmPFNWR0ZpbHRlckVsZW1lbnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC01
OSw4ICs2NSw2IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGUKICAg
ICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7CiAgICAgaWYgKCFyZWdpc3Ry
eS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJp
YnV0ZTxTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBl
LCAmU1ZHRmlsdGVyRWxlbWVudDo6bV9maWx0ZXJVbml0cz4oKTsKLSAgICByZWdpc3RyeS5yZWdp
c3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6
OlNWR1VuaXRUeXBlLCAmU1ZHRmlsdGVyRWxlbWVudDo6bV9wcmltaXRpdmVVbml0cz4oKTsKICAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eEF0dHIsICZTVkdGaWx0ZXJF
bGVtZW50OjptX3g+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6
OnlBdHRyLCAmU1ZHRmlsdGVyRWxlbWVudDo6bV95PigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVy
QXR0cmlidXRlPFNWR05hbWVzOjp3aWR0aEF0dHIsICZTVkdGaWx0ZXJFbGVtZW50OjptX3dpZHRo
PigpOwpAQCAtNzQsMTEgKzc4LDExIEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY28KICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyKSB7CiAg
ICAgICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3Bl
cnR5VHJhaXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsK
ICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9maWx0ZXJVbml0
cy5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1fZmlsdGVyVW5pdHMtPnNl
dEJhc2VWYWxJbnRlcm5hbDxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPihwcm9wZXJ0eVZhbHVl
KTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0cikg
ewogICAgICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQ
cm9wZXJ0eVRyYWl0czxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1
ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fcHJpbWl0
aXZlVW5pdHMuc2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX3ByaW1pdGl2
ZVVuaXRzLT5zZXRCYXNlVmFsSW50ZXJuYWw8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4ocHJv
cGVydHlWYWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKICAg
ICAgICAgbV94LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdp
ZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnlBdHRyKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCShyZXZpc2lv
biAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgi
CiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQuaCIKQEAgLTM3LDE1ICszNiwxNSBAQCBjbGFzcyBTVkdGaWx0ZXJFbGVtZW50IGZp
bmFsIDogcHVibGljIFNWCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdGaWx0ZXJFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlIGZpbHRlclVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJV
bml0cy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ByaW1p
dGl2ZVVuaXRzLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZSBmaWx0ZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fZmls
dGVyVW5pdHMtPmN1cnJlbnRWYWx1ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPigpOyB9Cisg
ICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmltaXRpdmVVbml0cygpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpbWl0aXZlVW5pdHMtPmN1cnJlbnRWYWx1ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlPigpOyB9CiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBt
X3guY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS5jdXJyZW50VmFsdWUoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQogICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
ICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWln
aHQuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KIAotICAgIFJlZlB0cjxT
VkdBbmltYXRlZEVudW1lcmF0aW9uPiBmaWx0ZXJVbml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9m
aWx0ZXJVbml0cy5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gcHJpbWl0aXZlVW5pdHNBbmltYXRlZCgp
IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdHMuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgZmlsdGVyVW5pdHNBbmlt
YXRlZCgpIHsgcmV0dXJuIG1fZmlsdGVyVW5pdHM7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0
aW9uJiBwcmltaXRpdmVVbml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0czsg
fQogICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geEFuaW1hdGVkKCkgeyByZXR1cm4gbV94
LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxT
VkdBbmltYXRlZExlbmd0aD4geUFuaW1hdGVkKCkgeyByZXR1cm4gbV95LmFuaW1hdGVkUHJvcGVy
dHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0
aD4gd2lkdGhBbmltYXRlZCgpIHsgcmV0dXJuIG1fd2lkdGguYW5pbWF0ZWRQcm9wZXJ0eShhdHRy
aWJ1dGVPd25lclByb3h5KCkpOyB9CkBAIC04Miw4ICs4MSw4IEBAIHByaXZhdGU6CiAKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0Fu
aW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9m
aWx0ZXJVbml0cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JP
WCB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZT4gbV9wcmltaXRpdmVVbml0cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQ
RV9VU0VSU1BBQ0VPTlVTRSB9OworICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX2Zp
bHRlclVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRU
eXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbj4gbV9wcmltaXRpdmVVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRp
b246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05V
U0UpIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3RoTW9kZVdp
ZHRoLCAiLTEwJSIgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5n
dGhNb2RlSGVpZ2h0LCAiLTEwJSIgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3dpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMTIwJSIgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NiArNDUsMTIgQEAgU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdHcmFkaWVudEVsZW1lbnQoYwogICAg
ICwgU1ZHVVJJUmVmZXJlbmNlKHRoaXMpCiB7CiAgICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0
eTxTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0ciwgU1ZHU3ByZWFkTWV0aG9kVHlwZSwgJlNWR0dy
YWRpZW50RWxlbWVudDo6bV9zcHJlYWRNZXRob2Q+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0
cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyLCBTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHR3JhZGllbnRFbGVtZW50OjptX2dyYWRpZW50VW5pdHM+
KCk7CisgICAgfSk7CiB9CiAKIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpyZWdpc3RlckF0dHJp
YnV0ZXMoKQpAQCAtNTIsOCArNTgsNiBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6cmVnaXN0
ZXJBdHRyaWJ1CiAgICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwogICAg
IGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnku
cmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIsIFNWR1NwcmVhZE1l
dGhvZFR5cGUsICZTVkdHcmFkaWVudEVsZW1lbnQ6Om1fc3ByZWFkTWV0aG9kPigpOwotICAgIHJl
Z2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ciwgU1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZSwgJlNWR0dyYWRpZW50RWxlbWVudDo6bV9ncmFkaWVudFVu
aXRzPigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpncmFkaWVu
dFRyYW5zZm9ybUF0dHIsICZTVkdHcmFkaWVudEVsZW1lbnQ6Om1fZ3JhZGllbnRUcmFuc2Zvcm0+
KCk7CiB9CiAKQEAgLTYyLDcgKzY2LDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0cikg
ewogICAgICAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9w
ZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fZ3JhZGllbnRVbml0cy5zZXRWYWx1ZShwcm9w
ZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1fZ3JhZGllbnRVbml0cy0+c2V0QmFzZVZhbEludGVy
bmFsPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC03Nyw3ICs4MSw3IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSgKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3ByZWFkTWV0aG9k
QXR0cikgewogICAgICAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdTcHJlYWRNZXRob2RUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9w
ZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fc3ByZWFkTWV0aG9kLnNldFZhbHVlKHByb3Bl
cnR5VmFsdWUpOworICAgICAgICAgICAgbV9zcHJlYWRNZXRob2QtPnNldEJhc2VWYWxJbnRlcm5h
bDxTVkdTcHJlYWRNZXRob2RUeXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAkocmV2
aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkdyYWRpZW50LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQu
aCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC04OSwxMiAr
ODgsMTIgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdHcmFkaWVudEVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR1VSSVJlZmVyZW5jZT47CiAKLSAgICBTVkdTcHJlYWRN
ZXRob2RUeXBlIHNwcmVhZE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ByZWFkTWV0aG9kLmN1
cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgU1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZSBncmFkaWVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFVuaXRz
LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHU3ByZWFkTWV0
aG9kVHlwZSBzcHJlYWRNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX3NwcmVhZE1ldGhvZC0+Y3Vy
cmVudFZhbHVlPFNWR1NwcmVhZE1ldGhvZFR5cGU+KCk7IH0KKyAgICBTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50VW5pdHMt
PmN1cnJlbnRWYWx1ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPigpOyB9CiAgICAgY29uc3Qg
U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyYgZ3JhZGllbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biBtX2dyYWRpZW50VHJhbnNmb3JtLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gc3ByZWFkTWV0aG9kQW5p
bWF0ZWQoKSB7IHJldHVybiBtX3NwcmVhZE1ldGhvZC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gZ3Jh
ZGllbnRVbml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9ncmFkaWVudFVuaXRzLmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkRW51bWVyYXRp
b24mIHNwcmVhZE1ldGhvZEFuaW1hdGVkKCkgeyByZXR1cm4gbV9zcHJlYWRNZXRob2Q7IH0KKyAg
ICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBncmFkaWVudFVuaXRzQW5pbWF0ZWQoKSB7IHJldHVy
biBtX2dyYWRpZW50VW5pdHM7IH0KICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
PiBncmFkaWVudFRyYW5zZm9ybUFuaW1hdGVkKCkgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9y
bS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KIAogcHJvdGVjdGVk
OgpAQCAtMTE5LDggKzExOCw4IEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5
IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25B
dHRyaWJ1dGU8U1ZHU3ByZWFkTWV0aG9kVHlwZT4gbV9zcHJlYWRNZXRob2QgeyBTVkdTcHJlYWRN
ZXRob2RQYWQgfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGU+IG1fZ3JhZGllbnRVbml0cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VO
SVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCB9OworICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0
aW9uPiBtX3NwcmVhZE1ldGhvZCB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlz
LCBTVkdTcHJlYWRNZXRob2RQYWQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+
IG1fZ3JhZGllbnRVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBT
VkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIH07CiAgICAgU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QXR0cmlidXRlIG1fZ3JhZGllbnRUcmFuc2Zvcm07CiB9Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
NDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0y
MDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDEsNiAr
NDEsMTIgQEAgaW5saW5lIFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlckVsZW1lbgogICAgIC8v
IFNwZWM6IElmIHRoZSBtYXJrZXJXaWR0aC9tYXJrZXJIZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBz
cGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMyIgd2VyZSBzcGVjaWZp
ZWQuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1hcmtlclRhZykpOwogICAgIHJl
Z2lzdGVyQXR0cmlidXRlcygpOworCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFn
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwgU1ZHTWFy
a2VyVW5pdHNUeXBlLCAmU1ZHTWFya2VyRWxlbWVudDo6bV9tYXJrZXJVbml0cz4oKTsKKyAgICAg
ICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6b3JpZW50QXR0
ciwgJlNWR01hcmtlckVsZW1lbnQ6Om1fb3JpZW50QW5nbGUsICZTVkdNYXJrZXJFbGVtZW50Ojpt
X29yaWVudFR5cGU+KCk7CisgICAgfSk7CiB9CiAKIFJlZjxTVkdNYXJrZXJFbGVtZW50PiBTVkdN
YXJrZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50KQpAQCAtNDgsMTggKzU0LDYgQEAgUmVmPFNWR01hcmtlckVsZW1lbnQ+IFNW
R01hcmtlckVsZW1lbnQ6OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR01hcmtlckVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBTVkdNYXJr
ZXJFbGVtZW50OjpvcmllbnRUeXBlSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdPcmllbnRUeXBlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfaWRlbnRpZmllcjsK
LX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRBbmdsZUlk
ZW50aWZpZXIoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNf
aWRlbnRpZmllcigiU1ZHT3JpZW50QW5nbGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICByZXR1cm4gc19pZGVudGlmaWVyOwotfQotCiBBZmZpbmVUcmFuc2Zvcm0g
U1ZHTWFya2VyRWxlbWVudDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgs
IGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR0ZpdFRvVmlld0JveDo6
dmlld0JveFRvVmlld1RyYW5zZm9ybSh2aWV3Qm94KCksIHByZXNlcnZlQXNwZWN0UmF0aW8oKSwg
dmlld1dpZHRoLCB2aWV3SGVpZ2h0KTsKQEAgLTc0LDEwICs2OCw2IEBAIHZvaWQgU1ZHTWFya2Vy
RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGUKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0
ZTxTVkdOYW1lczo6cmVmWUF0dHIsICZTVkdNYXJrZXJFbGVtZW50OjptX3JlZlk+KCk7CiAgICAg
cmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgJlNW
R01hcmtlckVsZW1lbnQ6Om1fbWFya2VyV2lkdGg+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJB
dHRyaWJ1dGU8U1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIsICZTVkdNYXJrZXJFbGVtZW50Ojpt
X21hcmtlckhlaWdodD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1l
czo6bWFya2VyVW5pdHNBdHRyLCBTVkdNYXJrZXJVbml0c1R5cGUsICZTVkdNYXJrZXJFbGVtZW50
OjptX21hcmtlclVuaXRzPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlKFNWR0Fu
aW1hdGVkQ3VzdG9tQW5nbGVBdHRyaWJ1dGVBY2Nlc3Nvcjo6c2luZ2xldG9uPFNWR05hbWVzOjpv
cmllbnRBdHRyLAotICAgICAgICAmU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50QW5nbGVJZGVudGlm
aWVyLCAmU1ZHTWFya2VyRWxlbWVudDo6bV9vcmllbnRBbmdsZSwKLSAgICAgICAgJlNWR01hcmtl
ckVsZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlmaWVyLCAmU1ZHTWFya2VyRWxlbWVudDo6bV9vcmll
bnRUeXBlPigpKTsKIH0KIAogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAt
ODUsMTcgKzc1LDE0IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY28K
ICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyKSB7CiAgICAgICAgIGF1
dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlclVuaXRzVHlwZT46
OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAg
ICAgICAgICBtX21hcmtlclVuaXRzLnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAg
ICAgbV9tYXJrZXJVbml0cy0+c2V0QmFzZVZhbEludGVybmFsPFNWR01hcmtlclVuaXRzVHlwZT4o
cHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9
PSBTVkdOYW1lczo6b3JpZW50QXR0cikgewotICAgICAgICBTVkdBbmdsZVZhbHVlIGFuZ2xlOwot
ICAgICAgICBhdXRvIG9yaWVudFR5cGUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmll
bnRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSwgYW5nbGUpOwotICAgICAgICBpZiAob3JpZW50VHlw
ZSA+IDApCi0gICAgICAgICAgICBtX29yaWVudFR5cGUuc2V0VmFsdWUob3JpZW50VHlwZSk7Ci0g
ICAgICAgIGlmIChvcmllbnRUeXBlID09IFNWR01hcmtlck9yaWVudEFuZ2xlKQotICAgICAgICAg
ICAgbV9vcmllbnRBbmdsZS5zZXRWYWx1ZShhbmdsZSk7CisgICAgICAgIGF1dG8gcGFpciA9IFNW
R1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCBTVkdNYXJrZXJPcmllbnRU
eXBlPj46OmZyb21TdHJpbmcodmFsdWUpOworICAgICAgICBtX29yaWVudEFuZ2xlLT5zZXRCYXNl
VmFsSW50ZXJuYWwocGFpci5maXJzdCk7CisgICAgICAgIG1fb3JpZW50VHlwZS0+c2V0QmFzZVZh
bEludGVybmFsKHBhaXIuc2Vjb25kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTUx
LDE0ICsxMzgsOSBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjCiAK
IHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50KFNWR01hcmtlck9yaWVudFR5cGUgb3Jp
ZW50VHlwZSwgY29uc3QgU1ZHQW5nbGVWYWx1ZSYgYW5nbGUpCiB7Ci0gICAgbV9vcmllbnRUeXBl
LnNldFZhbHVlKG9yaWVudFR5cGUpOwotICAgIG1fb3JpZW50QW5nbGUuc2V0VmFsdWUoYW5nbGUp
OwotCi0gICAgLy8gTWFyayBvcmllbnRBdHRyIGRpcnR5IC0gdGhlIG5leHQgWE1MIERPTSBhY2Nl
c3Mgb2YgdGhhdCBhdHRyaWJ1dGUga2lja3MgaW4gc3luY2hyb25pemF0aW9uLgotICAgIG1fb3Jp
ZW50QW5nbGUuc2V0U2hvdWxkU3luY2hyb25pemUodHJ1ZSk7Ci0gICAgbV9vcmllbnRUeXBlLnNl
dFNob3VsZFN5bmNocm9uaXplKHRydWUpOwotICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7
Ci0gICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChTVkdOYW1lczo6b3JpZW50QXR0cik7CisgICAgbV9v
cmllbnRUeXBlLT5zZXRCYXNlVmFsSW50ZXJuYWwob3JpZW50VHlwZSk7CisgICAgbV9vcmllbnRB
bmdsZS0+c2V0QmFzZVZhbEludGVybmFsKGFuZ2xlKTsKKyAgICBtX29yaWVudEFuZ2xlLT5iYXNl
VmFsKCktPmNvbW1pdENoYW5nZSgpOwogfQogCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9y
aWVudFRvQXV0bygpCkBAIC0xNjgsNyArMTUwLDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50Ojpz
ZXRPcmllbnRUb0F1dG8oKQogCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQW5n
bGUoU1ZHQW5nbGUmIGFuZ2xlKQogewotICAgIHNldE9yaWVudChTVkdNYXJrZXJPcmllbnRBbmds
ZSwgYW5nbGUucHJvcGVydHlSZWZlcmVuY2UoKSk7CisgICAgc2V0T3JpZW50KFNWR01hcmtlck9y
aWVudEFuZ2xlLCBhbmdsZS52YWx1ZSgpKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw2IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRBbmdsZS5oIgotI2luY2x1ZGUgIlNW
R0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgog
I2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLmgiCkBAIC01OSwxNyArNTcsMTcgQEAgcHVibGljOgogICAgIGNvbnN0IFNWR0xlbmd0
aFZhbHVlJiByZWZZKCkgY29uc3QgeyByZXR1cm4gbV9yZWZZLmN1cnJlbnRWYWx1ZShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9CiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIG1hcmtlcldpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9tYXJrZXJXaWR0aC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQogICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBtYXJrZXJIZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX21hcmtlckhlaWdodC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIFNWR01hcmtlclVuaXRzVHlwZSBtYXJrZXJVbml0cygpIGNvbnN0IHsg
cmV0dXJuIG1fbWFya2VyVW5pdHMuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KLSAgICBjb25zdCBTVkdBbmdsZVZhbHVlJiBvcmllbnRBbmdsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZW50QW5nbGUuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAg
ICBTVkdNYXJrZXJPcmllbnRUeXBlIG9yaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX29yaWVu
dFR5cGUuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdNYXJr
ZXJVbml0c1R5cGUgbWFya2VyVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX21hcmtlclVuaXRzLT5j
dXJyZW50VmFsdWU8U1ZHTWFya2VyVW5pdHNUeXBlPigpOyB9CisgICAgY29uc3QgU1ZHQW5nbGVW
YWx1ZSYgb3JpZW50QW5nbGUoKSBjb25zdCB7IHJldHVybiBtX29yaWVudEFuZ2xlLT5jdXJyZW50
VmFsdWUoKTsgfQorICAgIFNWR01hcmtlck9yaWVudFR5cGUgb3JpZW50VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb3JpZW50VHlwZS0+Y3VycmVudFZhbHVlPFNWR01hcmtlck9yaWVudFR5cGU+KCk7
IH0KIAogICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gcmVmWEFuaW1hdGVkKCkgeyByZXR1
cm4gbV9yZWZYLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAg
IFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gcmVmWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9yZWZZ
LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxT
VkdBbmltYXRlZExlbmd0aD4gbWFya2VyV2lkdGhBbmltYXRlZCgpIHsgcmV0dXJuIG1fbWFya2Vy
V2lkdGguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgUmVm
UHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBtYXJrZXJIZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1f
bWFya2VySGVpZ2h0LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQot
ICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtYXJrZXJVbml0c0FuaW1hdGVkKCkg
eyByZXR1cm4gbV9tYXJrZXJVbml0cy5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRBbmdsZT4gb3JpZW50QW5nbGVBbmltYXRl
ZCgpIHsgcmV0dXJuIG1fb3JpZW50QW5nbGUuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG9yaWVudFR5
cGVBbmltYXRlZCgpIHsgcmV0dXJuIG1fb3JpZW50VHlwZS5hbmltYXRlZFByb3BlcnR5KGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBtYXJrZXJV
bml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9tYXJrZXJVbml0czsgfQorICAgIFNWR0FuaW1hdGVk
QW5nbGUmIG9yaWVudEFuZ2xlQW5pbWF0ZWQoKSB7IHJldHVybiBtX29yaWVudEFuZ2xlOyB9Cisg
ICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG9yaWVudFR5cGVBbmltYXRlZCgpIHsgcmV0
dXJuIG1fb3JpZW50VHlwZS5jb3B5UmVmKCk7IH0KIAogcHJpdmF0ZToKICAgICBTVkdNYXJrZXJF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtMTAxLDQzICs5OSwx
NiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRPcmllbnQoU1ZHTWFya2VyT3JpZW50VHlwZSwg
Y29uc3QgU1ZHQW5nbGVWYWx1ZSYpOwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
b3JpZW50VHlwZUlkZW50aWZpZXIoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBv
cmllbnRBbmdsZUlkZW50aWZpZXIoKTsKLQogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRy
aWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKIAotICAgIGNsYXNzIFNWR0FuaW1hdGVkQ3VzdG9t
T3JpZW50VHlwZUF0dHJpYnV0ZSA6IHB1YmxpYyBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmli
dXRlPFNWR01hcmtlck9yaWVudFR5cGU+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHVzaW5nIEJh
c2UgPSBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPFNWR01hcmtlck9yaWVudFR5cGU+
OwotCi0gICAgICAgIFNWR0FuaW1hdGVkQ3VzdG9tT3JpZW50VHlwZUF0dHJpYnV0ZShTVkdNYXJr
ZXJPcmllbnRUeXBlIGJhc2VWYWx1ZSkKLSAgICAgICAgICAgIDogQmFzZShiYXNlVmFsdWUpCi0g
ICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICB2b2lkIHN5bmNocm9uaXplKEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGF1dG9TdHJpbmcg
PSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiYXV0byIpOwotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYXV0b1N0YXJ0UmV2ZXJzZVN0cmluZyA9IE1BS0Vf
U1RBVElDX1NUUklOR19JTVBMKCJhdXRvLXN0YXJ0LXJldmVyc2UiKTsKLQotICAgICAgICAgICAg
aWYgKCFzaG91bGRTeW5jaHJvbml6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIGlmICh2YWx1ZSgpID09IFNWR01hcmtlck9yaWVudEF1dG8pCi0gICAgICAgICAgICAg
ICAgZWxlbWVudC5zZXRTeW5jaHJvbml6ZWRMYXp5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGF1
dG9TdHJpbmcuZ2V0KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUoKSA9PSBTVkdNYXJr
ZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNlKQotICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0U3lu
Y2hyb25pemVkTGF6eUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBhdXRvU3RhcnRSZXZlcnNlU3Ry
aW5nLmdldCgpKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB1c2luZyBTVkdBbmltYXRlZEN1
c3RvbUFuZ2xlQXR0cmlidXRlQWNjZXNzb3IgPSBTVkdBbmltYXRlZFBhaXJBdHRyaWJ1dGVBY2Nl
c3NvcjxTVkdNYXJrZXJFbGVtZW50LCBTVkdBbmltYXRlZEFuZ2xlQXR0cmlidXRlLCBBbmltYXRl
ZEFuZ2xlLCBTVkdBbmltYXRlZEN1c3RvbU9yaWVudFR5cGVBdHRyaWJ1dGUsIEFuaW1hdGVkRW51
bWVyYXRpb24+OwotCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAq
dGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fcmVmWCB7IExlbmd0aE1v
ZGVXaWR0aCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fcmVmWSB7IExlbmd0
aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX21hcmtlcldp
ZHRoIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMyIgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX21hcmtlckhlaWdodCB7IExlbmd0aE1vZGVIZWlnaHQsICIzIiB9OwotICAgIFNWR0Fu
aW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHTWFya2VyVW5pdHNUeXBlPiBtX21hcmtlclVu
aXRzIHsgU1ZHTWFya2VyVW5pdHNTdHJva2VXaWR0aCB9OwotICAgIFNWR0FuaW1hdGVkQW5nbGVB
dHRyaWJ1dGUgbV9vcmllbnRBbmdsZTsKLSAgICBTVkdBbmltYXRlZEN1c3RvbU9yaWVudFR5cGVB
dHRyaWJ1dGUgbV9vcmllbnRUeXBlIHsgU1ZHTWFya2VyT3JpZW50QW5nbGUgfTsKKyAgICBSZWY8
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9tYXJrZXJVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVy
YXRpb246OmNyZWF0ZSh0aGlzLCBTVkdNYXJrZXJVbml0c1N0cm9rZVdpZHRoKSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZEFuZ2xlPiBtX29yaWVudEFuZ2xlIHsgU1ZHQW5pbWF0ZWRBbmdsZTo6Y3Jl
YXRlKHRoaXMpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4gbV9vcmllbnRUeXBl
IHsgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlOjpjcmVhdGUodGhpcywgU1ZHTWFya2VyT3JpZW50QW5n
bGUpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFya2VyVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyVHlwZXMuaAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hcmtlclR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NSwxNyArNzUsMzIgQEAgc3RydWN0
IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlclVuaXRzVAogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3Qg
U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT4geworICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcgYXV0b1N0cmluZygpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBhdXRvU3RyaW5nID0gTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImF1
dG8iKTsKKyAgICAgICAgcmV0dXJuIGF1dG9TdHJpbmc7CisgICAgfQorICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcgYXV0b1N0YXJ0UmV2ZXJzZVN0cmluZygpCisgICAgeworICAgICAgICBzdGF0aWMg
Y29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nID0gTUFL
RV9TVEFUSUNfU1RSSU5HX0lNUEwoImF1dG8tc3RhcnQtcmV2ZXJzZSIpOworICAgICAgICByZXR1
cm4gYXV0b1N0YXJ0UmV2ZXJzZVN0cmluZzsKKyAgICB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGhp
Z2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNl
OyB9Ci0gICAgc3RhdGljIFNWR01hcmtlck9yaWVudFR5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlLCBTVkdBbmdsZVZhbHVlJiBhbmdsZSkKKyAgICBzdGF0aWMgU1ZHTWFya2VyT3Jp
ZW50VHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAgICAg
aWYgKHZhbHVlID09ICJhdXRvIikKKyAgICAgICAgaWYgKHN0cmluZyA9PSBhdXRvU3RyaW5nKCkp
CiAgICAgICAgICAgICByZXR1cm4gU1ZHTWFya2VyT3JpZW50QXV0bzsKLSAgICAgICAgaWYgKHZh
bHVlID09ICJhdXRvLXN0YXJ0LXJldmVyc2UiKQorICAgICAgICBpZiAoc3RyaW5nID09IGF1dG9T
dGFydFJldmVyc2VTdHJpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRB
dXRvU3RhcnRSZXZlcnNlOwotICAgICAgICBhdXRvIHNldFZhbHVlUmVzdWx0ID0gYW5nbGUuc2V0
VmFsdWVBc1N0cmluZyh2YWx1ZSk7Ci0gICAgICAgIGlmIChzZXRWYWx1ZVJlc3VsdC5oYXNFeGNl
cHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRVbmtub3duOwotICAg
ICAgICByZXR1cm4gU1ZHTWFya2VyT3JpZW50QW5nbGU7CisgICAgICAgIHJldHVybiBTVkdNYXJr
ZXJPcmllbnRVbmtub3duOworICAgIH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFNWR01h
cmtlck9yaWVudFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIGlmICh0eXBlID09IFNWR01hcmtl
ck9yaWVudEF1dG8pCisgICAgICAgICAgICByZXR1cm4gYXV0b1N0cmluZygpOworICAgICAgICBp
ZiAodHlwZSA9PSBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNlKQorICAgICAgICAgICAg
cmV0dXJuIGF1dG9TdGFydFJldmVyc2VTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAgICAgfQogfTsKIApAQCAtOTMsMTggKzEwOCwxOCBAQCB0ZW1wbGF0ZTw+CiBpbmxp
bmUgdW5zaWduZWQgU1ZHSURMRW51bUxpbWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6aGlnaGVz
dEV4cG9zZWRFbnVtVmFsdWUoKSB7IHJldHVybiBTVkdNYXJrZXJPcmllbnRBbmdsZTsgfQogCiB0
ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPFNWR0FuZ2xlVmFs
dWUsIHVuc2lnbmVkPj4gewotICAgIHN0YXRpYyBzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5z
aWduZWQ+IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQotICAgIHN0YXRpYyBzdGQ6OnBh
aXI8U1ZHQW5nbGVWYWx1ZSwgdW5zaWduZWQ+IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCitzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIFNW
R01hcmtlck9yaWVudFR5cGU+PiB7CisgICAgc3RhdGljIHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVl
LCBTVkdNYXJrZXJPcmllbnRUeXBlPiBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ICAgIHsKICAgICAgICAgU1ZHQW5nbGVWYWx1ZSBhbmdsZTsKLSAgICAgICAgU1ZHTWFya2VyT3Jp
ZW50VHlwZSBvcmllbnRUeXBlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlw
ZT46OmZyb21TdHJpbmcoc3RyaW5nLCBhbmdsZSk7Ci0gICAgICAgIGlmIChvcmllbnRUeXBlICE9
IFNWR01hcmtlck9yaWVudEFuZ2xlKQotICAgICAgICAgICAgYW5nbGUgPSB7IH07Ci0gICAgICAg
IHJldHVybiBzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5zaWduZWQ+KGFuZ2xlLCBvcmllbnRU
eXBlKTsKKyAgICAgICAgU1ZHTWFya2VyT3JpZW50VHlwZSBvcmllbnRUeXBlID0gU1ZHUHJvcGVy
dHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46OmZyb21TdHJpbmcoc3RyaW5nKTsKKyAgICAg
ICAgaWYgKG9yaWVudFR5cGUgPT0gU1ZHTWFya2VyT3JpZW50VW5rbm93bikgeworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBhbmdsZS5zZXRWYWx1ZUFzU3RyaW5nKHN0cmluZyk7CisgICAgICAg
ICAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBvcmllbnRU
eXBlID0gU1ZHTWFya2VyT3JpZW50QW5nbGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGFuZ2xlLCBvcmllbnRUeXBlKTsKICAgICB9Ci0gICAgc3RhdGljIE9wdGlv
bmFsPHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4+IHBhcnNlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
aW5pdGlhbFZhbHVlKCk7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IHN0ZDo6
cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4mKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDMzODMpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw2ICs0OCwxMiBAQCBpbmxpbmUgU1ZHTWFza0VsZW1lbnQ6OlNWR01hc2tFbGVtZW50KGNv
CiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNp
ZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3ZXJlIHNwZWNpZmll
ZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bWFza1RhZykpOwogICAgIHJlZ2lz
dGVyQXR0cmlidXRlcygpOworCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0
cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUsICZTVkdNYXNrRWxlbWVudDo6bV9tYXNrVW5pdHM+KCk7CisgICAgICAg
IFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om1hc2tDb250ZW50
VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHTWFza0VsZW1lbnQ6Om1f
bWFza0NvbnRlbnRVbml0cz4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR01hc2tFbGVtZW50PiBT
VkdNYXNrRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKQEAgLTY0LDggKzcwLDYgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6cmVn
aXN0ZXJBdHRyaWJ1dGVzKAogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
Ojp5QXR0ciwgJlNWR01hc2tFbGVtZW50OjptX3k+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJB
dHRyaWJ1dGU8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR01hc2tFbGVtZW50OjptX3dpZHRoPigp
OwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpoZWlnaHRBdHRyLCAm
U1ZHTWFza0VsZW1lbnQ6Om1faGVpZ2h0PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjptYXNrVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAm
U1ZHTWFza0VsZW1lbnQ6Om1fbWFza1VuaXRzPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0
cmlidXRlPFNWR05hbWVzOjptYXNrQ29udGVudFVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZSwgJlNWR01hc2tFbGVtZW50OjptX21hc2tDb250ZW50VW5pdHM+KCk7CiB9CiAKIHZv
aWQgU1ZHTWFza0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC03MywxMyArNzcsMTMgQEAgdm9pZCBT
VkdNYXNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29ucwogICAgIGlmIChuYW1lID09IFNWR05h
bWVzOjptYXNrVW5pdHNBdHRyKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1By
b3BlcnR5VHJhaXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVl
KTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9tYXNrVW5p
dHMuc2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX21hc2tVbml0cy0+c2V0
QmFzZVZhbEludGVybmFsPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KHByb3BlcnR5VmFsdWUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjptYXNr
Q29udGVudFVuaXRzQXR0cikgewogICAgICAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9w
ZXJ0eVRyYWl0czxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7
CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fbWFza0NvbnRl
bnRVbml0cy5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1fbWFza0NvbnRl
bnRVbml0cy0+c2V0QmFzZVZhbEludGVybmFsPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KHBy
b3BlcnR5VmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtMzksMTUgKzM4LDE1IEBA
IHB1YmxpYzoKICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1f
eS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIGNvbnN0IFNWR0xl
bmd0aFZhbHVlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGguY3VycmVudFZhbHVlKGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSk7IH0KLSAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tVbml0cygpIGNvbnN0
IHsgcmV0dXJuIG1fbWFza1VuaXRzLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9Ci0gICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBtYXNrQ29udGVudFVuaXRzKCkgY29u
c3QgeyByZXR1cm4gbV9tYXNrQ29udGVudFVuaXRzLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9CisgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBtYXNrVW5pdHMoKSBj
b25zdCB7IHJldHVybiBtX21hc2tVbml0cy0+Y3VycmVudFZhbHVlPFNWR1VuaXRUeXBlczo6U1ZH
VW5pdFR5cGU+KCk7IH0KKyAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tDb250ZW50
VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX21hc2tDb250ZW50VW5pdHMtPmN1cnJlbnRWYWx1ZTxT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPigpOyB9CiAKICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IHhBbmltYXRlZCgpIHsgcmV0dXJuIG1feC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHlBbmltYXRl
ZCgpIHsgcmV0dXJuIG1feS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHdpZHRoQW5pbWF0ZWQoKSB7IHJldHVy
biBtX3dpZHRoLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAg
IFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gaGVpZ2h0QW5pbWF0ZWQoKSB7IHJldHVybiBtX2hl
aWdodC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQ
dHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbWFza1VuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBt
X21hc2tVbml0cy5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbWFza0NvbnRlbnRVbml0c0FuaW1hdGVk
KCkgeyByZXR1cm4gbV9tYXNrQ29udGVudFVuaXRzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIG1hc2tVbml0c0Fu
aW1hdGVkKCkgeyByZXR1cm4gbV9tYXNrVW5pdHM7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0
aW9uJiBtYXNrQ29udGVudFVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX21hc2tDb250ZW50VW5p
dHM7IH0KIAogcHJpdmF0ZToKICAgICBTVkdNYXNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKQEAgLTgyLDggKzgxLDggQEAgcHJpdmF0ZToKICAgICBTVkdBbmltYXRl
ZExlbmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIgfTsKICAgICBT
VkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3dpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMTIw
JSIgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX2hlaWdodCB7IExlbmd0aE1v
ZGVIZWlnaHQsICIxMjAlIiB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8
U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9tYXNrVW5pdHMgeyBTVkdVbml0VHlwZXM6OlNW
R19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1ggfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0
aW9uQXR0cmlidXRlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+IG1fbWFza0NvbnRlbnRVbml0
cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX21hc2tVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVy
YXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9V
TkRJTkdCT1gpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbWFza0NvbnRl
bnRVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU0LDYgKzU0LDEyIEBA
IGlubGluZSBTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVybkVsZW0KIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6cGF0dGVyblRhZykpOwogICAgIHJlZ2lzdGVyQXR0cmlidXRl
cygpOworCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVy
UHJvcGVydHk8U1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5p
dFR5cGUsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV9wYXR0ZXJuVW5pdHM+KCk7CisgICAgICAgIFBy
b3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50
VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHUGF0dGVybkVsZW1lbnQ6
Om1fcGF0dGVybkNvbnRlbnRVbml0cz4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR1BhdHRlcm5F
bGVtZW50PiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTcwLDggKzc2LDYgQEAgdm9pZCBTVkdQYXR0
ZXJuRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dAogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjp5QXR0ciwgJlNWR1BhdHRlcm5FbGVtZW50OjptX3k+KCk7CiAgICAgcmVn
aXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR1BhdHRlcm5F
bGVtZW50OjptX3dpZHRoPigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05h
bWVzOjpoZWlnaHRBdHRyLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1faGVpZ2h0PigpOwotICAgIHJl
Z2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLCBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1fcGF0dGVyblVuaXRz
PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpwYXR0ZXJuQ29u
dGVudFVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSwgJlNWR1BhdHRlcm5FbGVt
ZW50OjptX3BhdHRlcm5Db250ZW50VW5pdHM+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRy
aWJ1dGU8U1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLCAmU1ZHUGF0dGVybkVsZW1lbnQ6
Om1fcGF0dGVyblRyYW5zZm9ybT4oKTsKIH0KIApAQCAtODAsMTMgKzg0LDEzIEBAIHZvaWQgU1ZH
UGF0dGVybkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGMKICAgICBpZiAobmFtZSA9PSBTVkdOYW1l
czo6cGF0dGVyblVuaXRzQXR0cikgewogICAgICAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBTVkdQ
cm9wZXJ0eVRyYWl0czxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1
ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fcGF0dGVy
blVuaXRzLnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgbV9wYXR0ZXJuVW5p
dHMtPnNldEJhc2VWYWxJbnRlcm5hbDxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPihwcm9wZXJ0
eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobmFtZSA9PSBTVkdOYW1l
czo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVl
ID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT46OmZyb21TdHJp
bmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAgICAgICAgICBt
X3BhdHRlcm5Db250ZW50VW5pdHMuc2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAg
ICBtX3BhdHRlcm5Db250ZW50VW5pdHMtPnNldEJhc2VWYWxJbnRlcm5hbDxTVkdVbml0VHlwZXM6
OlNWR1VuaXRUeXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51
bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTQ5
LDE2ICs0OCwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25z
dCB7IHJldHVybiBtX3kuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAg
ICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoLmN1
cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0LmN1cnJlbnRWYWx1ZShhdHRy
aWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwYXR0
ZXJuVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5Vbml0cy5jdXJyZW50VmFsdWUoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcGF0
dGVybkNvbnRlbnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybkNvbnRlbnRVbml0cy5j
dXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUgcGF0dGVyblVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuVW5pdHMt
PmN1cnJlbnRWYWx1ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPigpOyB9CisgICAgU1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZSBwYXR0ZXJuQ29udGVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4g
bV9wYXR0ZXJuQ29udGVudFVuaXRzLT5jdXJyZW50VmFsdWU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0
VHlwZT4oKTsgfQogICAgIGNvbnN0IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHBhdHRlcm5UcmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5UcmFuc2Zvcm0uY3VycmVudFZhbHVlKGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KIAogICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4g
eEFuaW1hdGVkKCkgeyByZXR1cm4gbV94LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geUFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV95LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAg
IFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gd2lkdGhBbmltYXRlZCgpIHsgcmV0dXJuIG1fd2lk
dGguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgUmVmUHRy
PFNWR0FuaW1hdGVkTGVuZ3RoPiBoZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0LmFu
aW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdB
bmltYXRlZEVudW1lcmF0aW9uPiBwYXR0ZXJuVW5pdHNBbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0
dGVyblVuaXRzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAg
IFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBwYXR0ZXJuQ29udGVudFVuaXRzQW5pbWF0
ZWQoKSB7IHJldHVybiBtX3BhdHRlcm5Db250ZW50VW5pdHMuYW5pbWF0ZWRQcm9wZXJ0eShhdHRy
aWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgcGF0dGVy
blVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX3BhdHRlcm5Vbml0czsgfQorICAgIFNWR0FuaW1h
dGVkRW51bWVyYXRpb24mIHBhdHRlcm5Db250ZW50VW5pdHNBbmltYXRlZCgpIHsgcmV0dXJuIG1f
cGF0dGVybkNvbnRlbnRVbml0czsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3Q+IHBhdHRlcm5UcmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVyblRyYW5zZm9y
bS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KIAogcHJpdmF0ZToK
QEAgLTk0LDggKzkzLDggQEAgcHJpdmF0ZToKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0
ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUgbV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1faGVpZ2h0IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwotICAgIFNWR0FuaW1hdGVkRW51
bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9wYXR0ZXJuVW5p
dHMgeyBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1ggfTsKLSAg
ICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGU+IG1fcGF0dGVybkNvbnRlbnRVbml0cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9V
U0VSU1BBQ0VPTlVTRSB9OworICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3BhdHRl
cm5Vbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkRW51bWVyYXRpb24+IG1fcGF0dGVybkNvbnRlbnRVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVy
YXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNF
T05VU0UpIH07CiAgICAgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QXR0cmlidXRlIG1fcGF0dGVy
blRyYW5zZm9ybTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTEg
QEAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpTVkdUZXh0Q29udGVudEVsZQogICAgICwgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCh0aGlzKQogewogICAgIHJlZ2lzdGVyQXR0cmlidXRlcygp
OworCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHk8U1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsIFNWR0xlbmd0aEFkanVzdFR5cGUsICZT
VkdUZXh0Q29udGVudEVsZW1lbnQ6Om1fbGVuZ3RoQWRqdXN0PigpOworICAgIH0pOwogfQogCiB1
bnNpZ25lZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldE51bWJlck9mQ2hhcnMoKQpAQCAtMTY0
LDcgKzE2OSw2IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpyZWdpc3RlckF0dHIKICAg
ICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlKFNWR0FuaW1hdGVkQ3VzdG9tTGVuZ3RoQXR0cmlidXRlQWNjZXNz
b3I6OnNpbmdsZXRvbjxTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIsICZTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6Om1fdGV4dExlbmd0aD4oKSk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8
U1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsIFNWR0xlbmd0aEFkanVzdFR5cGUsICZTVkdUZXh0
Q29udGVudEVsZW1lbnQ6Om1fbGVuZ3RoQWRqdXN0PigpOwogfQogCiB2b2lkIFNWR1RleHRDb250
ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTE3NCw3ICsxNzgsNyBAQCB2b2lkIFNWR1RleHRD
b250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Omxl
bmd0aEFkanVzdEF0dHIpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVy
dHlUcmFpdHM8U1ZHTGVuZ3RoQWRqdXN0VHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAg
ICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAgICAgICAgICBtX2xlbmd0aEFkanVzdC5zZXRW
YWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1fbGVuZ3RoQWRqdXN0LT5zZXRCYXNl
VmFsSW50ZXJuYWw8U1ZHTGVuZ3RoQWRqdXN0VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgfSBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0cikKICAgICAgICAgbV90ZXh0
TGVuZ3RoLnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVy
LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHJldmlzaW9uIDI0MzM4
MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNW
R0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgog
I2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdH
cmFwaGljc0VsZW1lbnQuaCIKQEAgLTkyLDEwICs5MSwxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
UHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdUZXh0Q29udGVu
dEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZD47CiAKICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dExlbmd0aC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQot
ICAgIFNWR0xlbmd0aEFkanVzdFR5cGUgbGVuZ3RoQWRqdXN0KCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGhBZGp1c3QuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBT
VkdMZW5ndGhBZGp1c3RUeXBlIGxlbmd0aEFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3Ro
QWRqdXN0LT5jdXJyZW50VmFsdWU8U1ZHTGVuZ3RoQWRqdXN0VHlwZT4oKTsgfQogCiAgICAgUmVm
UHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB0ZXh0TGVuZ3RoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3Rl
eHRMZW5ndGguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAg
UmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IGxlbmd0aEFkanVzdEFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV9sZW5ndGhBZGp1c3QuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5
KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgbGVuZ3RoQWRqdXN0QW5pbWF0ZWQo
KSB7IHJldHVybiBtX2xlbmd0aEFkanVzdDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHVGV4dENv
bnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtMTU5LDcg
KzE1OCw3IEBAIHByaXZhdGU6CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93
bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZEN1c3RvbUxlbmd0aEF0dHJpYnV0ZSBtX3Rl
eHRMZW5ndGggeyAqdGhpcywgTGVuZ3RoTW9kZU90aGVyIH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbkF0dHJpYnV0ZTxTVkdMZW5ndGhBZGp1c3RUeXBlPiBtX2xlbmd0aEFkanVzdCB7IFNW
R0xlbmd0aEFkanVzdFNwYWNpbmcgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4g
bV9sZW5ndGhBZGp1c3QgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZH
TGVuZ3RoQWRqdXN0U3BhY2luZykgfTsKICAgICBTVkdMZW5ndGhWYWx1ZSBtX3NwZWNpZmllZFRl
eHRMZW5ndGggeyBMZW5ndGhNb2RlT3RoZXIgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzks
NiArMzksMTIgQEAgaW5saW5lIFNWR1RleHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhFbAogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0UGF0aFRhZykpOwogICAgIHJlZ2lz
dGVyQXR0cmlidXRlcygpOworCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0
cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om1ldGhvZEF0dHIsIFNWR1RleHRQYXRoTWV0
aG9kVHlwZSwgJlNWR1RleHRQYXRoRWxlbWVudDo6bV9tZXRob2Q+KCk7CisgICAgICAgIFByb3Bl
cnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnNwYWNpbmdBdHRyLCBTVkdU
ZXh0UGF0aFNwYWNpbmdUeXBlLCAmU1ZHVGV4dFBhdGhFbGVtZW50OjptX3NwYWNpbmc+KCk7Cisg
ICAgfSk7CiB9CiAKIFJlZjxTVkdUZXh0UGF0aEVsZW1lbnQ+IFNWR1RleHRQYXRoRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkK
QEAgLTYyLDggKzY4LDYgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmli
dQogICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgcmVn
aXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0ciwgJlNWR1Rl
eHRQYXRoRWxlbWVudDo6bV9zdGFydE9mZnNldD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0
dHJpYnV0ZTxTVkdOYW1lczo6bWV0aG9kQXR0ciwgU1ZHVGV4dFBhdGhNZXRob2RUeXBlLCAmU1ZH
VGV4dFBhdGhFbGVtZW50OjptX21ldGhvZD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJp
YnV0ZTxTVkdOYW1lczo6c3BhY2luZ0F0dHIsIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUsICZTVkdU
ZXh0UGF0aEVsZW1lbnQ6Om1fc3BhY2luZz4oKTsKIH0KIAogdm9pZCBTVkdUZXh0UGF0aEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCkBAIC03NSwxMSArNzksMTEgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKAogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om1ldGhv
ZEF0dHIpIHsKICAgICAgICAgU1ZHVGV4dFBhdGhNZXRob2RUeXBlIHByb3BlcnR5VmFsdWUgPSBT
VkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0aE1ldGhvZFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVl
KTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9tZXRob2Qu
c2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX21ldGhvZC0+c2V0QmFzZVZh
bEludGVybmFsPFNWR1RleHRQYXRoTWV0aG9kVHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgfSBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpzcGFjaW5nQXR0cikgewogICAgICAgICBTVkdUZXh0
UGF0aFNwYWNpbmdUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0
UGF0aFNwYWNpbmdUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0
eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fc3BhY2luZy5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVl
KTsKKyAgICAgICAgICAgIG1fc3BhY2luZy0+c2V0QmFzZVZhbEludGVybmFsPFNWR1RleHRQYXRo
U3BhY2luZ1R5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgIH0KIAogICAgIHJlcG9ydEF0dHJpYnV0
ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiwx
MiArMTEyLDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR1RleHRQYXRoRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldC5j
dXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFNWR1RleHRQYXRoTWV0
aG9kVHlwZSBtZXRob2QoKSBjb25zdCB7IHJldHVybiBtX21ldGhvZC5jdXJyZW50VmFsdWUoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUgc3BhY2lu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fc3BhY2luZy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQorICAgIFNWR1RleHRQYXRoTWV0aG9kVHlwZSBtZXRob2QoKSBjb25zdCB7IHJl
dHVybiBtX21ldGhvZC0+Y3VycmVudFZhbHVlPFNWR1RleHRQYXRoTWV0aG9kVHlwZT4oKTsgfQor
ICAgIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUgc3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Bh
Y2luZy0+Y3VycmVudFZhbHVlPFNWR1RleHRQYXRoU3BhY2luZ1R5cGU+KCk7IH0KIAogICAgIFJl
ZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gc3RhcnRPZmZzZXRBbmltYXRlZCgpIHsgcmV0dXJuIG1f
c3RhcnRPZmZzZXQuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0g
ICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1ldGhvZEFuaW1hdGVkKCkgeyByZXR1
cm4gbV9tZXRob2QuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0g
ICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IHNwYWNpbmdBbmltYXRlZCgpIHsgcmV0
dXJuIG1fc3BhY2luZy5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
KyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBtZXRob2RBbmltYXRlZCgpIHsgcmV0dXJuIG1f
bWV0aG9kOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgc3BhY2luZ0FuaW1hdGVkKCkg
eyByZXR1cm4gbV9zcGFjaW5nOyB9CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGRpZEZpbmlzaElu
c2VydGluZ05vZGUoKSBvdmVycmlkZTsKQEAgLTE1Niw4ICsxNTYsOCBAQCBwcml2YXRlOgogICAg
IEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZH
QW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9zdGFydE9mZnNldCB7IExlbmd0aE1vZGVPdGhlciB9
OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVGV4dFBhdGhNZXRob2RU
eXBlPiBtX21ldGhvZCB7IFNWR1RleHRQYXRoTWV0aG9kQWxpZ24gfTsKLSAgICBTVkdBbmltYXRl
ZEVudW1lcmF0aW9uQXR0cmlidXRlPFNWR1RleHRQYXRoU3BhY2luZ1R5cGU+IG1fc3BhY2luZyB7
IFNWR1RleHRQYXRoU3BhY2luZ0V4YWN0IH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRp
b24+IG1fbWV0aG9kIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1Rl
eHRQYXRoTWV0aG9kQWxpZ24pIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1f
c3BhY2luZyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdUZXh0UGF0
aFNwYWNpbmdFeGFjdCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWYWx1ZS5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsNiBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBTVkdWYWx1ZVZhcmlhbnQgPSBWYXJpYW50PAotICAgIHN0ZDo6cGFp
cjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4qLAotICAgIHVuc2lnbmVkKiwKICAgICBTVkdMZW5n
dGhWYWx1ZSosCiAgICAgU1ZHTGVuZ3RoTGlzdFZhbHVlcyosCiAgICAgU1ZHUGF0aEJ5dGVTdHJl
YW0qLApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNv
cmF0ZWRQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUHJvcGVydHkuaCIKKyNpbmNsdWRlICJTVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlw
ZW5hbWU+IGNsYXNzIERlY29yYXRlZFByb3BlcnR5LCB0eXBlbmFtZSBEZWNvcmF0aW9uVHlwZT4K
K2NsYXNzIFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlLCB0
eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eT4K
KyAgICBzdGF0aWMgUmVmPEFuaW1hdGVkUHJvcGVydHk+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1hdGVk
UHJvcGVydHkoY29udGV4dEVsZW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8RGVjb3JhdGVkUHJvcGVy
dHk8RGVjb3JhdGlvblR5cGUsIFByb3BlcnR5VHlwZT4+KCkpKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBT
VkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5PgorICAgIHN0YXRpYyBSZWY8QW5pbWF0ZWRQcm9w
ZXJ0eT4gY3JlYXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBQcm9wZXJ0eVR5
cGUmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5pbWF0ZWRQ
cm9wZXJ0eShjb250ZXh0RWxlbWVudCwgRGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGUs
IFByb3BlcnR5VHlwZT46OmNyZWF0ZSh2YWx1ZSkpKTsKKyAgICB9CisKKyAgICBTVkdBbmltYXRl
ZERlY29yYXRlZFByb3BlcnR5KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHRGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGU+PiYmIGJhc2VWYWwpCisg
ICAgICAgIDogU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVudCkKKyAgICAgICAgLCBt
X2Jhc2VWYWwoV1RGTW92ZShiYXNlVmFsKSkKKyAgICB7CisgICAgfQorCisgICAgLy8gVXNlZCBi
eSB0aGUgRE9NLgorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEJhc2VWYWwoY29uc3QgRGVjb3Jh
dGlvblR5cGUmIGJhc2VWYWwpCisgICAgeworICAgICAgICBpZiAoIW1fYmFzZVZhbC0+c2V0VmFs
dWUoYmFzZVZhbCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07
CisgICAgICAgIGNvbW1pdFByb3BlcnR5Q2hhbmdlKG51bGxwdHIpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKworICAgIC8vIFVzZWQgYnkgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
KS4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CisgICAgdm9pZCBzZXRCYXNl
VmFsSW50ZXJuYWwoY29uc3QgUHJvcGVydHlUeXBlJiBiYXNlVmFsKQorICAgIHsKKyAgICAgICAg
bV9iYXNlVmFsLT5zZXRWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PERlY29yYXRpb25UeXBlPihi
YXNlVmFsKSk7CisgICAgICAgIGlmIChtX2FuaW1WYWwpCisgICAgICAgICAgICBtX2FuaW1WYWwt
PnNldFZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8RGVjb3JhdGlvblR5cGU+KGJhc2VWYWwpKTsK
KyAgICB9CisKKyAgICBEZWNvcmF0aW9uVHlwZSBiYXNlVmFsKCkgY29uc3QgeyByZXR1cm4gbV9i
YXNlVmFsLT52YWx1ZSgpOyB9CisKKyAgICAvLyBVc2VkIGJ5IFNWR0FuaW1hdG9yOjpwcm9ncmVz
cy4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CisgICAgdm9pZCBzZXRBbmlt
VmFsKGNvbnN0IFByb3BlcnR5VHlwZSYgYW5pbVZhbCkKKyAgICB7CisgICAgICAgIEFTU0VSVChp
c0FuaW1hdGluZygpICYmIG1fYW5pbVZhbCk7CisgICAgICAgIG1fYW5pbVZhbC0+c2V0VmFsdWVJ
bnRlcm5hbChzdGF0aWNfY2FzdDxEZWNvcmF0aW9uVHlwZT4oYW5pbVZhbCkpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZSA9IERlY29yYXRpb25UeXBlPgorICAg
IFByb3BlcnR5VHlwZSBhbmltVmFsKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVF9JTVBM
SUVTKGlzQW5pbWF0aW5nKCksIG1fYW5pbVZhbCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVR5cGU+KChpc0FuaW1hdGluZygpID8gbV9hbmltVmFsIDogbV9iYXNlVmFsKS0+
dmFsdWUoKSk7CisgICAgfQorCisgICAgLy8gVXNlZCB3aGVuIGNvbW1pdHRpbmcgYSBjaGFuZ2Ug
ZnJvbSB0aGUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSB0byB0aGUgYXR0cmlidXRlLgorICAgIFN0cmlu
ZyBiYXNlVmFsQXNTdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPnZh
bHVlQXNTdHJpbmcoKTsgfQorCisgICAgLy8gVXNlZCB0byBhcHBseSB0aGUgU1ZHQW5pbWF0b3Ig
Y2hhbmdlIHRvIHRoZSB0YXJnZXQgZWxlbWVudC4KKyAgICBTdHJpbmcgYW5pbVZhbEFzU3RyaW5n
KCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0FuaW1hdGluZygpICYm
ICEhbV9hbmltVmFsKTsKKyAgICAgICAgcmV0dXJuIG1fYW5pbVZhbC0+dmFsdWVBc1N0cmluZygp
OworICAgIH0KKworICAgIC8vIE1hbmFnaW5nIHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgb3du
ZXIuCisgICAgdm9pZCBzZXREaXJ0eSgpIG92ZXJyaWRlIHsgbV9zdGF0ZSA9IFNWR1Byb3BlcnR5
U3RhdGU6OkRpcnR5OyB9CisgICAgYm9vbCBpc0RpcnR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpEaXJ0eTsgfQorICAgIE9wdGlvbmFsPFN0
cmluZz4gc3luY2hyb25pemUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1fc3RhdGUg
PT0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW4pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICBtX3N0YXRlID0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW47CisgICAgICAg
IHJldHVybiBiYXNlVmFsQXNTdHJpbmcoKTsKKyAgICB9CisKKyAgICAvLyBVc2VkIGJ5IFJlbmRl
clNWR0VsZW1lbnRzIGFuZCBEdW1wUmVuZGVyVHJlZS4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
cm9wZXJ0eVR5cGU+CisgICAgUHJvcGVydHlUeXBlIGN1cnJlbnRWYWx1ZSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvcGVydHlUeXBlPigoaXNBbmltYXRpbmco
KSA/IG1fYW5pbVZhbCA6IG1fYmFzZVZhbCktPnZhbHVlSW50ZXJuYWwoKSk7CisgICAgfQorCisg
ICAgLy8gQ29udHJvbGxpbmcgdGhlIGFuaW1hdGlvbi4KKyAgICB2b2lkIHN0YXJ0QW5pbWF0aW9u
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChpc0FuaW1hdGluZygpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBtX2FuaW1WYWwgPSBtX2Jhc2VWYWwtPmNsb25lKCk7CisgICAg
ICAgIFNWR0FuaW1hdGVkUHJvcGVydHk6OnN0YXJ0QW5pbWF0aW9uKCk7CisgICAgfQorICAgIHZv
aWQgc3RvcEFuaW1hdGlvbigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIWlzQW5pbWF0
aW5nKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fYW5pbVZhbCA9IG51bGxwdHI7
CisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHk6OnN0b3BBbmltYXRpb24oKTsKKyAgICB9CisK
K3Byb3RlY3RlZDoKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRGVjb3JhdGVkUHJvcGVydHk8RGVj
b3JhdGlvblR5cGU+PiBtX2Jhc2VWYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0RlY29yYXRl
ZFByb3BlcnR5PERlY29yYXRpb25UeXBlPj4gbV9hbmltVmFsOworICAgIFNWR1Byb3BlcnR5U3Rh
dGUgbV9zdGF0ZSB7IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuIH07Cit9OworCit9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkQW5nbGVBY2Nl
c3NvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBl
LCBTVkdBbmltYXRlZEFuZ2xlPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVy
dHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkQW5nbGU+OworCitwdWJsaWM6CisgICAg
dXNpbmcgQmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4gT3du
ZXJUeXBlOjoqcHJvcGVydHk+CisgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBTVkdNZW1iZXJB
Y2Nlc3NvcjxPd25lclR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBz
aW5nbGV0b248U1ZHQW5pbWF0ZWRBbmdsZUFjY2Vzc29yLCBwcm9wZXJ0eT4oKTsgfQorfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgogY2xhc3MgU1ZHQW5pbWF0ZWRCb29sZWFuQWNj
ZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlw
ZSwgU1ZHQW5pbWF0ZWRCb29sZWFuPiB7CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJv
cGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkQm9vbGVhbj47CiAgICAgdXNpbmcg
QmFzZTo6cHJvcGVydHk7CkBAIC01NCw2ICs2NCwyOCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAK
K3RlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgRW51bVR5cGU+CitjbGFzcyBT
VkdBbmltYXRlZEVudW1lcmF0aW9uQWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4geworICAg
IHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdB
bmltYXRlZEVudW1lcmF0aW9uPjsKKyAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTsKKworcHVibGlj
OgorICAgIHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdGVtcGxhdGU8UmVmPFNWR0FuaW1hdGVkRW51
bWVyYXRpb24+IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAgIGNvbnN0ZXhwciBzdGF0aWMgY29u
c3QgU1ZHTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPiYgc2luZ2xldG9uKCkgeyByZXR1cm4gQmFz
ZTo6dGVtcGxhdGUgc2luZ2xldG9uPFNWR0FuaW1hdGVkRW51bWVyYXRpb25BY2Nlc3NvciwgcHJv
cGVydHk+KCk7IH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0cmlidXRl
QW5pbWF0b3I+IGNyZWF0ZUFuaW1hdG9yKE93bmVyVHlwZSYgb3duZXIsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01v
ZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRv
cjxFbnVtVHlwZT46OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eShvd25lciksIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9CisK
KyAgICB2b2lkIGFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoT3duZXJUeXBlJiBvd25lciwgU1ZHQXR0
cmlidXRlQW5pbWF0b3ImIGFuaW1hdG9yKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPiY+KGFuaW1h
dG9yKS5hcHBlbmRBbmltYXRlZEluc3RhbmNlKHByb3BlcnR5KG93bmVyKSk7CisgICAgfQorfTsK
KwogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgogY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2Vy
QWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVy
VHlwZSwgU1ZHQW5pbWF0ZWRJbnRlZ2VyPiB7CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVk
UHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkSW50ZWdlcj47CkBAIC0xNDMs
NiArMTc1LDE2IEBAIHByaXZhdGU6CiB9OwogICAgIAogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJU
eXBlPgorY2xhc3MgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQWNjZXNzb3IgZmluYWwgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRPcmllbnRU
eXBlPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25l
clR5cGUsIFNWR0FuaW1hdGVkT3JpZW50VHlwZT47CisKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNl
OjpCYXNlOworICAgIHRlbXBsYXRlPFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+IE93bmVyVHlw
ZTo6KnByb3BlcnR5PgorICAgIGNvbnN0ZXhwciBzdGF0aWMgY29uc3QgU1ZHTWVtYmVyQWNjZXNz
b3I8T3duZXJUeXBlPiYgc2luZ2xldG9uKCkge3JldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0
b248U1ZHQW5pbWF0ZWRPcmllbnRUeXBlQWNjZXNzb3IsIHByb3BlcnR5PigpOyB9Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CiBjbGFzcyBTVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW9BY2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNz
b3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+IHsKICAgICB1c2lu
ZyBCYXNlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvPjsKICAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRv
ckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOwogY2xhc3MgU1ZHQW5pbWF0ZWRJ
bnRlZ2VyUGFpckFuaW1hdG9yOworY2xhc3MgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEsIHR5cGVuYW1l
IEFuaW1hdGVkUHJvcGVydHlBbmltYXRvcjI+CiBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5UGFp
ckFuaW1hdG9yOwogCitjbGFzcyBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IgZmluYWwgOiBwdWJs
aWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1hdGVkQW5nbGUsIFNWR0FuaW1h
dGlvbkFuZ2xlRnVuY3Rpb24+IHsKKyAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVBhaXJBbmltYXRvcjxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IsIFNWR0FuaW1hdGVkT3JpZW50
VHlwZUFuaW1hdG9yPjsKKyAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFu
aW1hdG9yOworICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZH
QW5pbWF0ZWRBbmdsZSwgU1ZHQW5pbWF0aW9uQW5nbGVGdW5jdGlvbj47CisgICAgdXNpbmcgQmFz
ZTo6QmFzZTsKKworcHVibGljOgorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4mIGFuaW1hdGVkLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiB0YXJnZXRF
bGVtZW50LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgZmluYWwKKyAg
ICB7CisgICAgICAgIG1fZnVuY3Rpb24ucHJvZ3Jlc3ModGFyZ2V0RWxlbWVudCwgcGVyY2VudGFn
ZSwgcmVwZWF0Q291bnQsIG1fYW5pbWF0ZWQtPmFuaW1WYWwoKS0+dmFsdWUoKSk7CisgICAgfQor
fTsKKwogY2xhc3MgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1hdGVkQm9vbGVhbiwgU1ZHQW5pbWF0aW9u
Qm9vbGVhbkZ1bmN0aW9uPiAgewogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5
QW5pbWF0b3I8U1ZHQW5pbWF0ZWRCb29sZWFuLCBTVkdBbmltYXRpb25Cb29sZWFuRnVuY3Rpb24+
OwogCkBAIC01Nyw2ICs3OCwyOCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIEVudW1UeXBlPgorY2xhc3MgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yIGZp
bmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZEVudW1l
cmF0aW9uLCBTVkdBbmltYXRpb25FbnVtZXJhdGlvbkZ1bmN0aW9uPEVudW1UeXBlPj4geworICAg
IHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbiwgU1ZHQW5pbWF0aW9uRW51bWVyYXRpb25GdW5jdGlvbjxFbnVtVHlwZT4+OworICAg
IHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdXNpbmcgQmFzZTo6bV9hbmltYXRlZDsKKyAgICB1c2lu
ZyBCYXNlOjptX2Z1bmN0aW9uOworCitwdWJsaWM6CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0
aW9uPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2Fs
Y01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9y
PEVudW1UeXBlPj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
dm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwZXJjZW50YWdl
LCB1bnNpZ25lZCByZXBlYXRDb3VudCkgZmluYWwKKyAgICB7CisgICAgICAgIEVudW1UeXBlIGFu
aW1hdGVkOworICAgICAgICBtX2Z1bmN0aW9uLnByb2dyZXNzKHRhcmdldEVsZW1lbnQsIHBlcmNl
bnRhZ2UsIHJlcGVhdENvdW50LCBhbmltYXRlZCk7CisgICAgICAgIG1fYW5pbWF0ZWQtPnRlbXBs
YXRlIHNldEFuaW1WYWw8RW51bVR5cGU+KGFuaW1hdGVkKTsKKyAgICB9Cit9OworCiBjbGFzcyBT
VkdBbmltYXRlZEludGVnZXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRJbnRlZ2VyLCBTVkdBbmltYXRpb25JbnRlZ2VyRnVuY3Rp
b24+IHsKICAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcjxT
VkdBbmltYXRlZEludGVnZXJBbmltYXRvciwgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I+Owog
ICAgIGZyaWVuZCBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I7CkBAIC04Niw3
ICsxMjksNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yIGZpbmFsIDogCiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFu
aW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wg
aXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWROdW1iZXJBbmltYXRvcj4obmV3IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1h
dGVkTnVtYmVyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtMTMwLDYgKzE3MywyNyBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKK2NsYXNzIFNWR0Fu
aW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvcjxTVkdBbmltYXRlZE9yaWVudFR5cGUsIFNWR0FuaW1hdGlvbk9yaWVudFR5cGVG
dW5jdGlvbj4geworICAgIGZyaWVuZCBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1h
dG9yPFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvciwgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0
b3I+OworICAgIGZyaWVuZCBjbGFzcyBTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I7Cisg
ICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZE9y
aWVudFR5cGUsIFNWR0FuaW1hdGlvbk9yaWVudFR5cGVGdW5jdGlvbj47CisgICAgdXNpbmcgQmFz
ZTo6QmFzZTsKKworcHVibGljOgorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlPiYgYW5pbWF0
ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wg
aXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgcHJvZ3Jlc3MoU1ZHRWxlbWVu
dCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQp
IGZpbmFsCisgICAgeworICAgICAgICBTVkdNYXJrZXJPcmllbnRUeXBlIGFuaW1hdGVkOworICAg
ICAgICBtX2Z1bmN0aW9uLnByb2dyZXNzKHRhcmdldEVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVh
dENvdW50LCBhbmltYXRlZCk7CisgICAgICAgIG1fYW5pbWF0ZWQtPnNldEFuaW1WYWwoYW5pbWF0
ZWQpOworICAgIH0KK307CisKIGNsYXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0Fu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sIFNWR0FuaW1hdGlvblByZXNlcnZlQXNwZWN0UmF0aW9G
dW5jdGlvbj4gewogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8
U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBTVkdBbmltYXRpb25QcmVzZXJ2ZUFzcGVj
dFJhdGlvRnVuY3Rpb24+OwogICAgIHVzaW5nIEJhc2U6OkJhc2U7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBs
LmgJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE0ICsyNSwxNSBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuaCIKLSNpbmNs
dWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCisjaW5jbHVkZSAiU1ZHQW5nbGUuaCIKKyNp
bmNsdWRlICJTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUxpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIK
ICNpbmNsdWRlICJTVkdBbmltYXRlZFZhbHVlUHJvcGVydHkuaCIKKyNpbmNsdWRlICJTVkdEZWNv
cmF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIKICNpbmNsdWRl
ICJTVkdQb2ludExpc3QuaCIKICNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCkBA
IC00NSwxMCArNDYsMjMgQEAgdXNpbmcgU1ZHQW5pbWF0ZWRJbnRlZ2VyID0gU1ZHQW5pbWF0ZWRQ
cgogdXNpbmcgU1ZHQW5pbWF0ZWROdW1iZXIgPSBTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5
PGZsb2F0PjsKIHVzaW5nIFNWR0FuaW1hdGVkU3RyaW5nID0gU1ZHQW5pbWF0ZWRQcmltaXRpdmVQ
cm9wZXJ0eTxTdHJpbmc+OwogCit1c2luZyBTVkdBbmltYXRlZEVudW1lcmF0aW9uID0gU1ZHQW5p
bWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbiwgdW5zaWduZWQ+
OworCit1c2luZyBTVkdBbmltYXRlZEFuZ2xlID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5PFNW
R0FuZ2xlPjsKIHVzaW5nIFNWR0FuaW1hdGVkUmVjdCA9IFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0
eTxTVkdSZWN0PjsKIHVzaW5nIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IFNWR0Fu
aW1hdGVkVmFsdWVQcm9wZXJ0eTxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPjsKIAogdXNpbmcgU1ZH
QW5pbWF0ZWROdW1iZXJMaXN0ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3Q8U1ZHTnVtYmVyTGlz
dD47CiB1c2luZyBTVkdBbmltYXRlZFBvaW50TGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0
PFNWR1BvaW50TGlzdD47CiAKK2NsYXNzIFNWR0FuaW1hdGVkT3JpZW50VHlwZSA6IHB1YmxpYyBT
VkdBbmltYXRlZEVudW1lcmF0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uOjpTVkdBbmltYXRlZEVudW1lcmF0aW9uOworCisgICAgc3RhdGljIFJlZjxTVkdB
bmltYXRlZE9yaWVudFR5cGU+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgU1ZH
TWFya2VyT3JpZW50VHlwZSBiYXNlVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlPFNWR01hcmtlck9yaWVudFR5cGUsIFNWR0FuaW1hdGVk
T3JpZW50VHlwZT4oY29udGV4dEVsZW1lbnQsIGJhc2VWYWx1ZSk7CisgICAgfQorfTsKKwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBh
aXJBY2Nlc3NvckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oCShyZXZpc2lvbiAyNDMz
ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
UGFpckFjY2Vzc29ySW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw0MyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CitjbGFzcyBT
VkdBbmltYXRlZEFuZ2xlT3JpZW50QWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVBhaXJBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkQW5nbGVBY2Nlc3NvcjxP
d25lclR5cGU+LCBTVkdBbmltYXRlZE9yaWVudFR5cGVBY2Nlc3NvcjxPd25lclR5cGU+PiB7Cisg
ICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3I8T3duZXJUeXBl
LCBTVkdBbmltYXRlZEFuZ2xlQWNjZXNzb3I8T3duZXJUeXBlPiwgU1ZHQW5pbWF0ZWRPcmllbnRU
eXBlQWNjZXNzb3I8T3duZXJUeXBlPj47CisgICAgdXNpbmcgQmFzZTo6cHJvcGVydHkxOworICAg
IHVzaW5nIEJhc2U6OnByb3BlcnR5MjsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2U6OkJhc2U7
CisgICAgdGVtcGxhdGU8UmVmPFNWR0FuaW1hdGVkQW5nbGU+IE93bmVyVHlwZTo6KnByb3BlcnR5
MSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4gT3duZXJUeXBlOjoqcHJvcGVydHkyPgorICAg
IGNvbnN0ZXhwciBzdGF0aWMgY29uc3QgU1ZHTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPiYgc2lu
Z2xldG9uKCkgeyByZXR1cm4gQmFzZTo6dGVtcGxhdGUgc2luZ2xldG9uPFNWR0FuaW1hdGVkQW5n
bGVPcmllbnRBY2Nlc3NvciwgcHJvcGVydHkxLCBwcm9wZXJ0eTI+KCk7IH0KKworcHJpdmF0ZToK
KyAgICBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYgb3duZXIp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBib29sIGRpcnR5MSA9IHByb3BlcnR5MShvd25l
ciktPmlzRGlydHkoKTsKKyAgICAgICAgYm9vbCBkaXJ0eTIgPSBwcm9wZXJ0eTIob3duZXIpLT5p
c0RpcnR5KCk7CisgICAgICAgIGlmICghKGRpcnR5MSB8fCBkaXJ0eTIpKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIHR5cGUgPSBwcm9wZXJ0eTIob3du
ZXIpLT5iYXNlVmFsKCk7CisKKyAgICAgICAgU3RyaW5nIHN0cmluZzEgPSBkaXJ0eTEgPyAqcHJv
cGVydHkxKG93bmVyKS0+c3luY2hyb25pemUoKSA6IHByb3BlcnR5MShvd25lciktPmJhc2VWYWxB
c1N0cmluZygpOworICAgICAgICBTdHJpbmcgc3RyaW5nMiA9IGRpcnR5MiA/ICpwcm9wZXJ0eTIo
b3duZXIpLT5zeW5jaHJvbml6ZSgpIDogcHJvcGVydHkyKG93bmVyKS0+YmFzZVZhbEFzU3RyaW5n
KCk7CisgICAgICAgIHJldHVybiB0eXBlID09IFNWR01hcmtlck9yaWVudEF1dG8gfHwgdHlwZSA9
PSBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNlID8gc3RyaW5nMiA6IHN0cmluZzE7Cisg
ICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVB
bmltYXRvcihPd25lclR5cGUmIG93bmVyLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29s
IGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I6OmNyZWF0ZShhdHRyaWJ1
dGVOYW1lLCBwcm9wZXJ0eTEob3duZXIpLCBwcm9wZXJ0eTIob3duZXIpLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgfQorCisgICAgdm9p
ZCBhcHBlbmRBbmltYXRlZEluc3RhbmNlKE93bmVyVHlwZSYgb3duZXIsIFNWR0F0dHJpYnV0ZUFu
aW1hdG9yJiBhbmltYXRvcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0
PFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmltYXRvciY+KGFuaW1hdG9yKS5hcHBlbmRBbmltYXRl
ZEluc3RhbmNlKHByb3BlcnR5MShvd25lciksIHByb3BlcnR5Mihvd25lcikpOworICAgIH0KK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdl
clBhaXJBY2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vz
c29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRJbnRlZ2VyQWNjZXNzb3I8T3duZXJUeXBlPiwgU1ZH
QW5pbWF0ZWRJbnRlZ2VyQWNjZXNzb3I8T3duZXJUeXBlPj4gewogICAgIHVzaW5nIEJhc2UgPSBT
VkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRJbnRl
Z2VyQWNjZXNzb3I8T3duZXJUeXBlPiwgU1ZHQW5pbWF0ZWRJbnRlZ2VyQWNjZXNzb3I8T3duZXJU
eXBlPj47CiAgICAgdXNpbmcgQmFzZTo6cHJvcGVydHkxOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQ
YWlyQW5pbWF0b3IuaAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNywxMyArMzcsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQW5pbWF0ZWRQcm9wZXJ0eTEg
PSB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxOjpBbmltYXRvckFuaW1hdGVkUHJv
cGVydHk7CiAgICAgdXNpbmcgQW5pbWF0ZWRQcm9wZXJ0eTIgPSB0eXBlbmFtZSBBbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3IyOjpBbmltYXRvckFuaW1hdGVkUHJvcGVydHk7CiAKLSAgICB2b2lkIGFw
cGVuZEFuaW1hdGVkSW5zdGFuY2UoUmVmPEFuaW1hdGVkUHJvcGVydHkxPiYgYW5pbWF0ZWQxLCBS
ZWY8QW5pbWF0ZWRQcm9wZXJ0eTI+JiBhbmltYXRlZDIpCi0gICAgewotICAgICAgICBtX2FuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjEtPmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoYW5pbWF0ZWQxKTsK
LSAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5hcHBlbmRBbmltYXRlZEluc3Rh
bmNlKGFuaW1hdGVkMik7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6CiAgICAgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVBhaXJBbmltYXRvcihjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8
QW5pbWF0ZWRQcm9wZXJ0eTE+JiBhbmltYXRlZDEsIFJlZjxBbmltYXRlZFByb3BlcnR5Mj4mIGFu
aW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwg
Ym9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgICAgIDogU1ZHQXR0cmli
dXRlQW5pbWF0b3IoYXR0cmlidXRlTmFtZSkKICAgICAgICAgLCBtX2FuaW1hdGVkUHJvcGVydHlB
bmltYXRvcjEoQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMTo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkMSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpKQpAQCAtNTEsNiArNDQsMTMgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKKyAg
ICB2b2lkIGFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoUmVmPEFuaW1hdGVkUHJvcGVydHkxPiYgYW5p
bWF0ZWQxLCBSZWY8QW5pbWF0ZWRQcm9wZXJ0eTI+JiBhbmltYXRlZDIpCisgICAgeworICAgICAg
ICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEtPmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoYW5p
bWF0ZWQxKTsKKyAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5hcHBlbmRBbmlt
YXRlZEluc3RhbmNlKGFuaW1hdGVkMik7CisgICAgfQorCitwcm90ZWN0ZWQ6CiAgICAgdm9pZCBz
dGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
bV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxLT5zdGFydCh0YXJnZXRFbGVtZW50KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5p
bWF0b3JJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaAkocmV2aXNpb24gMjQzMzgzKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJB
bmltYXRvckltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNzkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTVkdFbGVtZW50OwogCitjbGFzcyBTVkdBbmltYXRlZEFuZ2xl
T3JpZW50QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmlt
YXRvcjxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IsIFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1h
dG9yPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3I8
U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yLCBTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj47
CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKworcHVibGljOgorICAgIHN0YXRpYyBhdXRvIGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRBbmds
ZT4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4mIGFuaW1hdGVkMiwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgc2V0RnJvbUFuZFRv
VmFsdWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8p
IGZpbmFsCisgICAgeworICAgICAgICBhdXRvIHBhaXJGcm9tID0gU1ZHUHJvcGVydHlUcmFpdHM8
c3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIFNWR01hcmtlck9yaWVudFR5cGU+Pjo6ZnJvbVN0cmlu
Zyhmcm9tKTsKKyAgICAgICAgYXV0byBwYWlyVG8gPSBTVkdQcm9wZXJ0eVRyYWl0czxzdGQ6OnBh
aXI8U1ZHQW5nbGVWYWx1ZSwgU1ZHTWFya2VyT3JpZW50VHlwZT4+Ojpmcm9tU3RyaW5nKHRvKTsK
KworICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEtPm1fZnVuY3Rpb24ubV9mcm9t
ID0gcGFpckZyb20uZmlyc3Q7CisgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+
bV9mdW5jdGlvbi5tX3RvID0gcGFpclRvLmZpcnN0OworCisgICAgICAgIG1fYW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX2Zyb20gPSBwYWlyRnJvbS5zZWNvbmQ7CisgICAg
ICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX3RvID0gcGFpclRv
LnNlY29uZDsKKyAgICB9CisKKyAgICB2b2lkIHNldEZyb21BbmRCeVZhbHVlcyhTVkdFbGVtZW50
KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgYnkpIGZp
bmFsCisgICAgeworICAgICAgICBzZXRGcm9tQW5kVG9WYWx1ZXModGFyZ2V0RWxlbWVudCwgZnJv
bSwgYnkpOworICAgICAgICBpZiAobV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1bmN0
aW9uLm1fZnJvbSAhPSBTVkdNYXJrZXJPcmllbnRBbmdsZSB8fCBtX2FuaW1hdGVkUHJvcGVydHlB
bmltYXRvcjItPm1fZnVuY3Rpb24ubV90byAhPSBTVkdNYXJrZXJPcmllbnRBbmdsZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxLT5tX2Z1
bmN0aW9uLmFkZEZyb21BbmRUb1ZhbHVlcyh0YXJnZXRFbGVtZW50KTsKKyAgICB9CisKKyAgICB2
b2lkIHByb2dyZXNzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGZsb2F0IHBlcmNlbnRhZ2Us
IHVuc2lnbmVkIHJlcGVhdENvdW50KSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fYW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX2Zyb20gIT0gbV9hbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3IyLT5tX2Z1bmN0aW9uLm1fdG8pIHsKKyAgICAgICAgICAgIC8vIERpc2NyZXRl
IGFuaW1hdGlvbiAtIG5vIGxpbmVhciBpbnRlcnBvbGF0aW9uIHBvc3NpYmxlIGJldHdlZW4gdmFs
dWVzIChlLmcuIGF1dG8gdG8gYW5nbGUpLgorICAgICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5
QW5pbWF0b3IyLT5wcm9ncmVzcyh0YXJnZXRFbGVtZW50LCBwZXJjZW50YWdlLCByZXBlYXRDb3Vu
dCk7CisKKyAgICAgICAgICAgIFNWR0FuZ2xlVmFsdWUgYW5pbWF0ZWRBbmdsZTsKKyAgICAgICAg
ICAgIGlmIChwZXJjZW50YWdlIDwgMC41ZiAmJiBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjIt
Pm1fZnVuY3Rpb24ubV9mcm9tID09IFNWR01hcmtlck9yaWVudEFuZ2xlKQorICAgICAgICAgICAg
ICAgIGFuaW1hdGVkQW5nbGUgPSBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEtPm1fZnVuY3Rp
b24ubV9mcm9tOworICAgICAgICAgICAgZWxzZSBpZiAocGVyY2VudGFnZSA+PSAwLjVmICYmIG1f
YW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX3RvID09IFNWR01hcmtlck9y
aWVudEFuZ2xlKQorICAgICAgICAgICAgICAgIGFuaW1hdGVkQW5nbGUgPSBtX2FuaW1hdGVkUHJv
cGVydHlBbmltYXRvcjEtPm1fZnVuY3Rpb24ubV90bzsKKworICAgICAgICAgICAgbV9hbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3IxLT5tX2FuaW1hdGVkLT5zZXRBbmltVmFsKGFuaW1hdGVkQW5nbGUp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fYW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX2Zyb20gPT0gU1ZHTWFya2VyT3JpZW50
QW5nbGUpIHsKKyAgICAgICAgICAgIC8vIFJlZ3VsYXIgZnJvbS0gdG9hbmdsZSBhbmltYXRpb24s
IHdpdGggc3VwcG9ydCBmb3Igc21vb3RoIGludGVycG9sYXRpb24sIGFuZCBhZGRpdGl2ZSBhbmQg
YWNjdW11bGF0ZWQgYW5pbWF0aW9uLgorICAgICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5p
bWF0b3IyLT5tX2FuaW1hdGVkLT5zZXRBbmltVmFsKFNWR01hcmtlck9yaWVudEFuZ2xlKTsKKwor
ICAgICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxLT5wcm9ncmVzcyh0YXJnZXRF
bGVtZW50LCBwZXJjZW50YWdlLCByZXBlYXRDb3VudCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBhdXRvLCBhdXRvLXN0YXJ0LXJldmVyc2UsIG9yIHVua25v
d24uCisgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+bV9hbmltYXRlZC0+YW5p
bVZhbCgpLT52YWx1ZSgpLnNldFZhbHVlKDApOworCisgICAgICAgIGlmIChtX2FuaW1hdGVkUHJv
cGVydHlBbmltYXRvcjItPm1fZnVuY3Rpb24ubV9mcm9tID09IFNWR01hcmtlck9yaWVudEF1dG8g
fHwgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1bmN0aW9uLm1fZnJvbSA9PSBTVkdN
YXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNlKQorICAgICAgICAgICAgbV9hbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3IyLT5tX2FuaW1hdGVkLT5zZXRBbmltVmFsKG1fYW5pbWF0ZWRQcm9wZXJ0eUFu
aW1hdG9yMi0+bV9mdW5jdGlvbi5tX2Zyb20pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1fYW5pbWF0ZWQtPnNldEFuaW1WYWwoU1ZHTWFy
a2VyT3JpZW50VW5rbm93bik7CisgICAgfQorCisgICAgdm9pZCBzdG9wKFNWR0VsZW1lbnQqIHRh
cmdldEVsZW1lbnQpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fYW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yMS0+bV9hbmltYXRlZC0+aXNBbmltYXRpbmcoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgYXBwbHkodGFyZ2V0RWxlbWVudCk7CisgICAgICAgIEJhc2U6OnN0b3AodGFy
Z2V0RWxlbWVudCk7CisgICAgfQorfTsKKwogY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3I8U1ZH
QW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3IsIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPiB7CiAg
ICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3I8U1ZHQW5pbWF0
ZWRJbnRlZ2VyQW5pbWF0b3IsIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPjsKICAgICB1c2lu
ZyBCYXNlOjpCYXNlOwpAQCAtNDAsNyArMTEzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2Vy
UGFpckFuaW1hdG9yIGZpbgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYgYW5p
bWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2Rl
IGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJv
b2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1ZH
QW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yPihuZXcgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFu
aW1hdG9yKGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSkpOworICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtODMsNyArMTU2
LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3IgZmluYQogcHVibGljOgog
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZE51bWJl
cj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxj
TW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihu
ZXcgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3IoYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQx
LCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVt
YmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0K
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBs
LmgJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsMzMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTVkdBbmltYXRp
b25BbmdsZUZ1bmN0aW9uIDogcHVibGljIFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlv
bjxTVkdBbmdsZVZhbHVlPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGlv
bkFkZGl0aXZlVmFsdWVGdW5jdGlvbjxTVkdBbmdsZVZhbHVlPjsKKyAgICB1c2luZyBCYXNlOjpC
YXNlOworCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlCisgICAgeworICAgICAgICAvLyBWYWx1ZXMg
d2lsbCBiZSBzZXQgYnkgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yLgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICB2b2lkIHByb2dyZXNzKFNWR0VsZW1l
bnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5nbGVWYWx1
ZSYgYW5pbWF0ZWQpCisgICAgeworICAgICAgICBmbG9hdCBudW1iZXIgPSBhbmltYXRlZC52YWx1
ZSgpOworICAgICAgICBudW1iZXIgPSBCYXNlOjpwcm9ncmVzcyhwZXJjZW50YWdlLCByZXBlYXRD
b3VudCwgbV9mcm9tLnZhbHVlKCksIG1fdG8udmFsdWUoKSwgdG9BdEVuZE9mRHVyYXRpb24oKS52
YWx1ZSgpLCBudW1iZXIpOworICAgICAgICBhbmltYXRlZC5zZXRWYWx1ZShudW1iZXIpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFu
aW1hdG9yOworCisgICAgdm9pZCBhZGRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCopIG92ZXJy
aWRlCisgICAgeworICAgICAgICBtX3RvLnNldFZhbHVlKG1fdG8udmFsdWUoKSArIG1fZnJvbS52
YWx1ZSgpKTsKKyAgICB9Cit9OworCiBjbGFzcyBTVkdBbmltYXRpb25Db2xvckZ1bmN0aW9uIDog
cHVibGljIFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbjxDb2xvcj4gewogcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb248Q29s
b3I+OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlz
Y3JldGVGdW5jdGlvbkltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uSW1wbC5oCShyZXZpc2lvbiAyNDMz
ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25EaXNjcmV0
ZUZ1bmN0aW9uSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0MiwzNyBAQCBwdWJsaWM6
CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgRW51bVR5cGU+CitjbGFzcyBTVkdBbmlt
YXRpb25FbnVtZXJhdGlvbkZ1bmN0aW9uIDogcHVibGljIFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVu
Y3Rpb248RW51bVR5cGU+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0aW9uRGlzY3JldGVG
dW5jdGlvbjxFbnVtVHlwZT47CisgICAgdXNpbmcgQmFzZTo6bV9mcm9tOworICAgIHVzaW5nIEJh
c2U6Om1fdG87CisKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCisgICAgdm9pZCBz
ZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3Qg
U3RyaW5nJiB0bykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fZnJvbSA9IFNWR1Byb3BlcnR5
VHJhaXRzPEVudW1UeXBlPjo6ZnJvbVN0cmluZyhmcm9tKTsKKyAgICAgICAgbV90byA9IFNWR1By
b3BlcnR5VHJhaXRzPEVudW1UeXBlPjo6ZnJvbVN0cmluZyh0byk7CisgICAgfQorfTsKKworY2xh
c3MgU1ZHQW5pbWF0aW9uT3JpZW50VHlwZUZ1bmN0aW9uIDogcHVibGljIFNWR0FuaW1hdGlvbkRp
c2NyZXRlRnVuY3Rpb248U1ZHTWFya2VyT3JpZW50VHlwZT4geworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uPFNWR01hcmtlck9yaWVudFR5cGU+
OworICAgIHVzaW5nIEJhc2U6OkJhc2U7CisKKyAgICB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhT
VkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIC8vIFZhbHVlcyB3aWxsIGJlIHNldCBieSBTVkdBbmltYXRlZEFuZ2xlT3JpZW50
QW5pbWF0b3IuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yOworfTsK
KwogY2xhc3MgU1ZHQW5pbWF0aW9uUHJlc2VydmVBc3BlY3RSYXRpb0Z1bmN0aW9uIDogcHVibGlj
IFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb248U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
PiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rp
b248U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaAkocmV2aXNpb24g
MjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVn
aXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmlt
YXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgpAQCAtNTIsMTIgKzUxLDYgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIC8vIEFuaW1hdGFibGUgYXR0cmlidXRlcwotICAgIHRlbXBsYXRlPGNv
bnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFt
ZSwgdHlwZW5hbWUgRW51bVR5cGUsIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8RW51
bVR5cGU+IE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4KLSAgICB2b2lkIHJlZ2lzdGVyQXR0cmlidXRl
KCkKLSAgICB7Ci0gICAgICAgIHJlZ2lzdGVyQXR0cmlidXRlKFNWR0FuaW1hdGVkRW51bWVyYXRp
b25BdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGUsIEVudW1UeXBlPjo6dGVtcGxhdGUgc2luZ2xl
dG9uPGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZT4oKSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8
Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVO
YW1lLCBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+CiAg
ICAgdm9pZCByZWdpc3RlckF0dHJpYnV0ZSgpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRl
ZEVudW1lcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIlNWR0RlY29yYXRlZFByaW1pdGl2ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIERlY29yYXRpb25UeXBlLCB0eXBlbmFtZSBFbnVtVHlwZT4KK2Ns
YXNzIFNWR0RlY29yYXRlZEVudW1lcmF0aW9uIDogcHVibGljIFNWR0RlY29yYXRlZFByaW1pdGl2
ZTxEZWNvcmF0aW9uVHlwZSwgRW51bVR5cGU+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHRGVjb3Jh
dGVkUHJpbWl0aXZlPERlY29yYXRpb25UeXBlLCBFbnVtVHlwZT47CisgICAgdXNpbmcgQmFzZTo6
QmFzZTsKKyAgICB1c2luZyBCYXNlOjptX3ZhbHVlOworCitwdWJsaWM6CisgICAgc3RhdGljIGF1
dG8gY3JlYXRlKGNvbnN0IEVudW1UeXBlJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19pbnRlZ3JhbDxEZWNvcmF0aW9uVHlwZT46OnZhbHVlLCAiRGVjb3JhdGlv
blR5cGUgZm9ybSBlbnVtIHNob3VsZCBiZSBpbnRlZ3JhbC4iKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24+KHZhbHVlKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgYm9vbCBzZXRWYWx1ZShjb25zdCBEZWNvcmF0aW9uVHlwZSYgdmFsdWUp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlID4gU1ZHSURMRW51
bUxpbWl0czxFbnVtVHlwZT46OmhpZ2hlc3RFeHBvc2VkRW51bVZhbHVlKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIEJhc2U6OnNldFZhbHVlSW50ZXJuYWwodmFsdWUpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBEZWNvcmF0aW9uVHlwZSB2YWx1ZSgp
IGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoQmFzZTo6dmFsdWUoKSA+IFNWR0lE
TEVudW1MaW1pdHM8RW51bVR5cGU+OjpoaWdoZXN0RXhwb3NlZEVudW1WYWx1ZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIG1fb3V0T2ZSYW5nZUVudW1WYWx1ZTsKKyAgICAgICAgcmV0dXJuIEJhc2U6
OnZhbHVlKCk7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0RlY29yYXRlZFByb3Bl
cnR5PERlY29yYXRpb25UeXBlPj4gY2xvbmUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZShtX3ZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgRGVjb3JhdGlv
blR5cGUgbV9vdXRPZlJhbmdlRW51bVZhbHVlID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByaW1pdGl2ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByaW1pdGl2ZS5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29y
YXRlZFByaW1pdGl2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJTVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIERlY29yYXRpb25UeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+
CitjbGFzcyBTVkdEZWNvcmF0ZWRQcmltaXRpdmUgOiBwdWJsaWMgU1ZHRGVjb3JhdGVkUHJvcGVy
dHk8RGVjb3JhdGlvblR5cGU+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHRGVjb3JhdGVkUHJvcGVy
dHk8RGVjb3JhdGlvblR5cGU+OworCitwdWJsaWM6CisgICAgU1ZHRGVjb3JhdGVkUHJpbWl0aXZl
KGNvbnN0IFByb3BlcnR5VHlwZSYgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAgIHZv
aWQgc2V0VmFsdWVJbnRlcm5hbChjb25zdCBEZWNvcmF0aW9uVHlwZSYgdmFsdWUpIG92ZXJyaWRl
IHsgbV92YWx1ZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5VHlwZT4odmFsdWUpOyB9CisgICAgRGVj
b3JhdGlvblR5cGUgdmFsdWVJbnRlcm5hbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PERlY29yYXRpb25UeXBlPihtX3ZhbHVlKTsgfQorCisgICAgU3RyaW5nIHZhbHVlQXNT
dHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0
eVR5cGU+Ojp0b1N0cmluZyhtX3ZhbHVlKTsgfQorCisgICAgUHJvcGVydHlUeXBlIG1fdmFsdWU7
Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0
ZWRQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0RlY29yYXRlZFByb3BlcnR5LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIERlY29yYXRpb25UeXBlPgorY2xhc3MgU1ZHRGVjb3JhdGVkUHJvcGVydHkgeworcHVibGlj
OgorICAgIFNWR0RlY29yYXRlZFByb3BlcnR5KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgflNW
R0RlY29yYXRlZFByb3BlcnR5KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlSW50ZXJuYWwoY29uc3QgRGVjb3JhdGlvblR5cGUmKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHNldFZhbHVlKGNvbnN0IERlY29yYXRpb25UeXBlJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHNl
dFZhbHVlSW50ZXJuYWwodmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICAvLyBVc2VkIGludGVybmFsbHkuIEl0IGRvZXNuJ3QgY2hlY2sgZm9yIGhpZ2hlc3RFeHBvc2Vk
RW51bVZhbHVlIGZvciBleGFtcGxlLgorICAgIHZpcnR1YWwgRGVjb3JhdGlvblR5cGUgdmFsdWVJ
bnRlcm5hbCgpIGNvbnN0ID0gMDsKKworICAgIC8vIFVzZWQgYnkgdGhlIERPTSBBUElzLgorICAg
IHZpcnR1YWwgRGVjb3JhdGlvblR5cGUgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZUludGVy
bmFsKCk7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRGVjb3JhdGVkUHJvcGVydHk8RGVjb3Jh
dGlvblR5cGU+PiBjbG9uZSgpID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oCShy
ZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTIgQEAgcHVi
bGljOgogICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVk
Qm9vbGVhbkFjY2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxwcm9wZXJ0eT4o
KSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0
IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCB0eXBlbmFtZSBFbnVtVHlwZSwgUmVmPFNW
R0FuaW1hdGVkRW51bWVyYXRpb24+IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eShh
dHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZEVudW1lcmF0aW9uQWNjZXNzb3I8T3duZXJUeXBlLCBF
bnVtVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxwcm9wZXJ0eT4oKSk7CisgICAgfQorCiAgICAg
dGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBh
dHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiBPd25lclR5cGU6Oipwcm9wZXJ0
eT4KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlclByb3BlcnR5KCkKICAgICB7CkBAIC03Myw2ICs3
OSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJlZ2lzdGVyUHJvcGVydHkoYXR0cmlidXRlTmFtZSwg
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xl
dG9uPHByb3BlcnR5PigpKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmlt
YXRlZEFuZ2xlPiBPd25lclR5cGU6Oipwcm9wZXJ0eTEsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5
cGU+IE93bmVyVHlwZTo6KnByb3BlcnR5Mj4KKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlclByb3Bl
cnR5KCkKKyAgICB7CisgICAgICAgIHJlZ2lzdGVyUHJvcGVydHkoYXR0cmlidXRlTmFtZSwgU1ZH
QW5pbWF0ZWRBbmdsZU9yaWVudEFjY2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRv
bjxwcm9wZXJ0eTEsIHByb3BlcnR5Mj4oKSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8Y29uc3Qg
TGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBS
ZWY8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+IE93bmVyVHlwZTo6KnByb3BlcnR5PgogICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQogICAgIHsKQEAgLTEyNyw2ICsxMzksMTUgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gZmluZEFjY2Vzc29yKGF0dHJpYnV0ZU5hbWUpOwogICAgIH0K
IAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBPd25lclR5cGUgb3ducyBhIHByb3BlcnR5IHdob3Nl
IG5hbWUgaXMgYXR0cmlidXRlTmFtZQorICAgIC8vIGFuZCBpdHMgdHlwZSBpcyBTVkdBbmltYXRl
ZExlbmd0aC4KKyAgICBzdGF0aWMgYm9vbCBpc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICBpZiAoY29uc3Qg
YXV0byogYWNjZXNzb3IgPSBmaW5kQWNjZXNzb3IoYXR0cmlidXRlTmFtZSkpCisgICAgICAgICAg
ICByZXR1cm4gYWNjZXNzb3ItPmlzQW5pbWF0ZWRMZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKwogICAgIFF1YWxpZmllZE5hbWUgcHJvcGVydHlBdHRyaWJ1dGVOYW1lKGNv
bnN0IFNWR1Byb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZSA9IG51bGxRTmFtZSgpOwpAQCAtMTk5LDYgKzIy
MCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBpc0FuaW1hdGVkUHJvcGVydHlBdHRyaWJ1
dGU7CiAgICAgfQogCisgICAgYm9vbCBpc0FuaW1hdGVkU3R5bGVQcm9wZXJ0eUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdCBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UXVhbGlmaWVkTmFtZTo6UXVh
bGlmaWVkTmFtZUltcGwqPj4gYW5pbWF0ZWRTdHlsZUF0dHJpYnV0ZXMgPSBzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqPiB7CisgICAgICAgICAg
ICBTVkdOYW1lczo6Y3hBdHRyLT5pbXBsKCksCisgICAgICAgICAgICBTVkdOYW1lczo6Y3lBdHRy
LT5pbXBsKCksCisgICAgICAgICAgICBTVkdOYW1lczo6ckF0dHItPmltcGwoKSwKKyAgICAgICAg
ICAgIFNWR05hbWVzOjpyeEF0dHItPmltcGwoKSwKKyAgICAgICAgICAgIFNWR05hbWVzOjpyeUF0
dHItPmltcGwoKSwKKyAgICAgICAgICAgIFNWR05hbWVzOjpoZWlnaHRBdHRyLT5pbXBsKCksCisg
ICAgICAgICAgICBTVkdOYW1lczo6d2lkdGhBdHRyLT5pbXBsKCksCisgICAgICAgICAgICBTVkdO
YW1lczo6eEF0dHItPmltcGwoKSwKKyAgICAgICAgICAgIFNWR05hbWVzOjp5QXR0ci0+aW1wbCgp
CisgICAgICAgIH07CisgICAgICAgIHJldHVybiBpc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpICYmIGFuaW1hdGVkU3R5bGVBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zKGF0
dHJpYnV0ZU5hbWUuaW1wbCgpKTsKKyAgICB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0
cmlidXRlQW5pbWF0b3I+IGNyZWF0ZUFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKSBjb25zdCBvdmVycmlkZQogICAg
IHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBhbmltYXRv
cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0
cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiAr
NDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIFN0cmlu
Zz4gc3luY2hyb25pemVBbGxBdHRyaWJ1dGVzKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBi
b29sIGlzQW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FuaW1hdGVkU3R5bGVQcm9wZXJ0eUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRvcihjb25zdCBRdWFsaWZp
ZWROYW1lJiwgQW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9v
bCBpc0FkZGl0aXZlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEFuaW1hdGVk
SW5zdGFuY2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgU1ZHQXR0cmlidXRl
QW5pbWF0b3ImKSBjb25zdCA9IDA7CiB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzMzgzKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTktMDMtMjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgdGhlIFNWRyB0ZWFyIG9mZiBvYmplY3RzIGZvciBTVkdBbmdsZSwgU1ZH
QW5pbWF0ZWRBbmdsZSBhbmQgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MDg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdmcvZG9tL1NWR0FuaW1hdGVkRW51
bWVyYXRpb24tU1ZHTWFya2VyRWxlbWVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2Rv
bS9TVkdBbmltYXRlZEVudW1lcmF0aW9uLVNWR01hcmtlckVsZW1lbnQuaHRtbDoKKyAgICAgICAg
Rml4ZXMgY2FzZXMgdGhhdCB0aGUgdGVhciBvZmYgb2JqZWN0cyBjb3VsZCBub3QgaGFuZGxlIGNv
cnJlY3RseSBmb3IgdGhlCisgICAgICAgIHBhaXJlZCB7IGFuZ2xlLCBvcmllbnRUeXBlIH0uIEFs
c28gd2hlbiBzZXR0aW5nIHRoZSBvcmllbnQgdHlwZSB0byAiYXV0byIKKyAgICAgICAgb3IgImF1
dG8tc3RhcnQtcmV2ZXJzZSIsIHRoZSBvcmllbnQgYW5nbGUgc2hvdWxkIGJlIHJlc2V0IHRvCisg
ICAgICAgIFNWR19BTkdMRVRZUEVfVU5TUEVDSUZJRUQgYW5kIGlzIG5vdCBzdXBwc2VkIHRvIGtl
ZXAgaXRzIG9yaWdpbmFsIHZhbHVlLgorCiAyMDE5LTAzLTIyICBSeWFuIEhhZGRhZCAgPHJ5YW5o
YWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDMz
NTYuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0FuaW1hdGVkRW51bWVyYXRpb24tU1ZH
TWFya2VyRWxlbWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3Zn
L2RvbS9TVkdBbmltYXRlZEVudW1lcmF0aW9uLVNWR01hcmtlckVsZW1lbnQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyNDMzODMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0FuaW1hdGVkRW51
bWVyYXRpb24tU1ZHTWFya2VyRWxlbWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEwMSwxNiArMTAxLDE2IEBAIFBBU1MgbWFya2VyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ29yaWVu
dCcKIAogVGVzdCBjYXNlIHNlbnNpdGl2aXR5IG9mIGF0dHJpYnV0ZXMgLSB0cnkgc2V0dGluZyBp
bnZhbGlkIHZhbHVlcwogUEFTUyBtYXJrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnb3JpZW50Jywg
J0FVVE8tU1RBUlQtUkVWRVJTRScpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotRkFJTCBtYXJr
ZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnb3JpZW50Jykgc2hvdWxkIGJlIEFVVE8tU1RBUlQtUkVW
RVJTRS4gV2FzIDEwZGVnLgotUEFTUyBtYXJrZXJFbGVtZW50Lm9yaWVudFR5cGUuYmFzZVZhbCBp
cyBTVkdNYXJrZXJFbGVtZW50LlNWR19NQVJLRVJfT1JJRU5UX0FOR0xFCitQQVNTIG1hcmtlckVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCdvcmllbnQnKSBpcyAiQVVUTy1TVEFSVC1SRVZFUlNFIgorUEFT
UyBtYXJrZXJFbGVtZW50Lm9yaWVudFR5cGUuYmFzZVZhbCBpcyBTVkdNYXJrZXJFbGVtZW50LlNW
R19NQVJLRVJfT1JJRU5UX1VOS05PV04KIFBBU1MgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUo
J29yaWVudCcsICdBVVRPJykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1GQUlMIG1hcmtlckVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCdvcmllbnQnKSBzaG91bGQgYmUgQVVUTy4gV2FzIDEwZGVnLgot
UEFTUyBtYXJrZXJFbGVtZW50Lm9yaWVudFR5cGUuYmFzZVZhbCBpcyBTVkdNYXJrZXJFbGVtZW50
LlNWR19NQVJLRVJfT1JJRU5UX0FOR0xFCitQQVNTIG1hcmtlckVsZW1lbnQuZ2V0QXR0cmlidXRl
KCdvcmllbnQnKSBpcyAiQVVUTyIKK1BBU1MgbWFya2VyRWxlbWVudC5vcmllbnRUeXBlLmJhc2VW
YWwgaXMgU1ZHTWFya2VyRWxlbWVudC5TVkdfTUFSS0VSX09SSUVOVF9VTktOT1dOCiAKIFN3aXRj
aCBiYWNrIHRvICdhdXRvJyB2YWx1ZQogUEFTUyBtYXJrZXJFbGVtZW50Lm9yaWVudFR5cGUuYmFz
ZVZhbCA9IFNWR01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9PUklFTlRfQVVUTyBpcyBTVkdNYXJr
ZXJFbGVtZW50LlNWR19NQVJLRVJfT1JJRU5UX0FVVE8KLVBBU1MgbWFya2VyRWxlbWVudC5vcmll
bnRBbmdsZS5iYXNlVmFsLnZhbHVlIGlzIDEwCi1QQVNTIG1hcmtlckVsZW1lbnQub3JpZW50QW5n
bGUuYmFzZVZhbC51bml0VHlwZSBpcyBTVkdBbmdsZS5TVkdfQU5HTEVUWVBFX0RFRworUEFTUyBt
YXJrZXJFbGVtZW50Lm9yaWVudEFuZ2xlLmJhc2VWYWwudmFsdWUgaXMgMAorUEFTUyBtYXJrZXJF
bGVtZW50Lm9yaWVudEFuZ2xlLmJhc2VWYWwudW5pdFR5cGUgaXMgU1ZHQW5nbGUuU1ZHX0FOR0xF
VFlQRV9VTlNQRUNJRklFRAogUEFTUyBtYXJrZXJFbGVtZW50Lm9yaWVudFR5cGUuYmFzZVZhbCBp
cyBTVkdNYXJrZXJFbGVtZW50LlNWR19NQVJLRVJfT1JJRU5UX0FVVE8KIFBBU1MgbWFya2VyRWxl
bWVudC5nZXRBdHRyaWJ1dGUoJ29yaWVudCcpIGlzICJhdXRvIgogCkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvZG9tL1NWR0FuaW1hdGVkRW51bWVyYXRpb24tU1ZHTWFya2VyRWxlbWVudC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi1T
VkdNYXJrZXJFbGVtZW50Lmh0bWwJKHJldmlzaW9uIDI0MzM4MykKKysrIExheW91dFRlc3RzL3N2
Zy9kb20vU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi1TVkdNYXJrZXJFbGVtZW50Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEzMiwyNCArMTMyLDE4IEBAIHNob3VsZEJlRXF1YWxUb1N0cmluZygibWFy
a2VyRWxlbWVudC5nZXQKIGRlYnVnKCIiKTsKIGRlYnVnKCJUZXN0IGNhc2Ugc2Vuc2l0aXZpdHkg
b2YgYXR0cmlidXRlcyAtIHRyeSBzZXR0aW5nIGludmFsaWQgdmFsdWVzIik7CiBzaG91bGROb3RU
aHJvdygibWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ29yaWVudCcsICdBVVRPLVNUQVJULVJF
VkVSU0UnKSIpOwotLy8gVGhlIGxpbmUgYmVsb3cgZmFpbHMgYXMgYSByZXN1bHQgb2YgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDE0MQotLy8gVGhlIGF0dHJpYnV0
ZSB2YWx1ZSBpcyBub3QgdXBkYXRlZCB0byB0aGUgaW52YWxpZCB2YWx1ZS4KLS8vIFRoZSBleHBl
Y3RlZCByZXN1bHQgcmVjb2duaXNlcyB0aGlzIGFuZCBzaG91bGQgYmUgdXBkYXRlZCB3aGVuIHRo
ZSBhYm92ZSBidWcKLS8vIGlzIHJlc29sdmVkLgotLy8gV2hhdCdzIGltcG9ydGFudCBoZXJlIHRo
b3VnaCBpcyB0aGF0IHRoZSBET00gdmFsdWVzIGFyZSB1bmNoYW5nZWQsIGFuZCB0aGlzCi0vLyBp
cyBkZW1vbnN0cmF0ZWQgY29ycmVjdGx5Lgogc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZXJF
bGVtZW50LmdldEF0dHJpYnV0ZSgnb3JpZW50JykiLCAiQVVUTy1TVEFSVC1SRVZFUlNFIik7Ci1z
aG91bGRCZSgibWFya2VyRWxlbWVudC5vcmllbnRUeXBlLmJhc2VWYWwiLCAiU1ZHTWFya2VyRWxl
bWVudC5TVkdfTUFSS0VSX09SSUVOVF9BTkdMRSIpOworc2hvdWxkQmUoIm1hcmtlckVsZW1lbnQu
b3JpZW50VHlwZS5iYXNlVmFsIiwgIlNWR01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9PUklFTlRf
VU5LTk9XTiIpOwogCiBzaG91bGROb3RUaHJvdygibWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUo
J29yaWVudCcsICdBVVRPJykiKTsKIHNob3VsZEJlRXF1YWxUb1N0cmluZygibWFya2VyRWxlbWVu
dC5nZXRBdHRyaWJ1dGUoJ29yaWVudCcpIiwgIkFVVE8iKTsKLXNob3VsZEJlKCJtYXJrZXJFbGVt
ZW50Lm9yaWVudFR5cGUuYmFzZVZhbCIsICJTVkdNYXJrZXJFbGVtZW50LlNWR19NQVJLRVJfT1JJ
RU5UX0FOR0xFIik7IAorc2hvdWxkQmUoIm1hcmtlckVsZW1lbnQub3JpZW50VHlwZS5iYXNlVmFs
IiwgIlNWR01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9PUklFTlRfVU5LTk9XTiIpOyAKIAogZGVi
dWcoIiIpOwogZGVidWcoIlN3aXRjaCBiYWNrIHRvICdhdXRvJyB2YWx1ZSIpOwogc2hvdWxkQmUo
Im1hcmtlckVsZW1lbnQub3JpZW50VHlwZS5iYXNlVmFsID0gU1ZHTWFya2VyRWxlbWVudC5TVkdf
TUFSS0VSX09SSUVOVF9BVVRPIiwgIlNWR01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9PUklFTlRf
QVVUTyIpOwotc2hvdWxkQmUoIm1hcmtlckVsZW1lbnQub3JpZW50QW5nbGUuYmFzZVZhbC52YWx1
ZSIsICIxMCIpOwotc2hvdWxkQmUoIm1hcmtlckVsZW1lbnQub3JpZW50QW5nbGUuYmFzZVZhbC51
bml0VHlwZSIsICJTVkdBbmdsZS5TVkdfQU5HTEVUWVBFX0RFRyIpOworc2hvdWxkQmUoIm1hcmtl
ckVsZW1lbnQub3JpZW50QW5nbGUuYmFzZVZhbC52YWx1ZSIsICIwIik7CitzaG91bGRCZSgibWFy
a2VyRWxlbWVudC5vcmllbnRBbmdsZS5iYXNlVmFsLnVuaXRUeXBlIiwgIlNWR0FuZ2xlLlNWR19B
TkdMRVRZUEVfVU5TUEVDSUZJRUQiKTsKIHNob3VsZEJlKCJtYXJrZXJFbGVtZW50Lm9yaWVudFR5
cGUuYmFzZVZhbCIsICJTVkdNYXJrZXJFbGVtZW50LlNWR19NQVJLRVJfT1JJRU5UX0FVVE8iKTsK
IHNob3VsZEJlRXF1YWxUb1N0cmluZygibWFya2VyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ29yaWVu
dCcpIiwgImF1dG8iKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365911</attachid>
            <date>2019-03-25 15:49:12 -0700</date>
            <delta_ts>2019-03-25 16:58:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196087-20190325154911.patch</filename>
            <type>text/plain</type>
            <size>193090</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxOCBAQAorMjAxOS0wMy0yNSAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0
aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR0FuZ2xlLCBTVkdBbmltYXRlZEFuZ2xlIGFu
ZCBTVkdBbmltYXRlZEVudW1lcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTYwODcKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgdGhlIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNW
R0FuaW1hdGVkRW51bWVyYXRpb24gd2lsbCBiZSAKKyAgICAgICAgcmVtb3ZlZC4gQmVjYXVzZSB0
aGUgYW5nbGUgaXMgcGFpcmVkIHdpdGggdGhlIG9yaWVudCB0eXBlIHNvIGl0cyB0ZWFyCisgICAg
ICAgIG9mZiBvYmplY3RzIGhhdmUgdG8gYmUgcmVtb3ZlZCBhcyB3ZWxsLiBIZXJlIGlzIHdoYXQg
dGhpcyBwYXRjaCBkb2VzOgorCisgICAgICAgIC0tIFNWR0FuZ2xlIGlzIG5vdyBhIHN1cGVyY2xh
c3Mgb2YgU1ZHVmFsdWVQcm9wZXJ0eTxTVkdBbmdsZVZhbHVlPi4gSXRzIAorICAgICAgICByZWxh
dGlvbnNoaXAgd2l0aCBpdHMgb3duZXIgd2lsbCBiZSBtYW5hZ2VkIGJ5IHRoZSBvd25lciBvZiBp
dHMgYmFzZQorICAgICAgICBjbGFzcyBTVkdQcm9wZXJ0eS4KKworICAgICAgICAtLSBTVkdBbmlt
YXRlZEFuZ2xlIGlzIG5vdyBkZWZpbmVkIHRvIGJlIFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eTwK
KyAgICAgICAgU1ZHQW5nbGU+LiBBbGwgdGhlIERPTSBpbnRlcmZhY2VzIHdpbGwgYmUgaGFuZGxl
ZCBieSB0aGUgYmFzZSBjbGFzcworICAgICAgICBnaXZlbiBpdHMgYmFzZVZhbCBhbmQgYW5pbVZh
bCBhcmUgb2YgdHlwZSBTVkdBbmdsZS4KKworICAgICAgICAtLSBTVkdBbmltYXRlZEVudW1lcmF0
aW9uIGlzIG5vdyBkZWZpbmVkIHRvIGJlCisgICAgICAgIFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJv
cGVydHk8U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24sIHVuc2lnbmVkPi4KKyAgICAgICAgVGhpcyBj
YW4gYmUgcmVhZDogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBpcyBhbiBTVkdBbmltYXRlZFByb3Bl
cnR5IHdoaWNoCisgICAgICAgIGRlY29yYXRlcyB0aGUgIlNWR0RlY29yYXRlZEVudW1lcmF0aW9u
IiB0eXBlIHRvICJ1bnNpZ25lZCIuIFRoZSByZWFzb24KKyAgICAgICAgZm9yIHRoaXMgY29tcGxp
Y2F0aW9uIGlzIHRoZSBJREwgb2YgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBkZWZpbmVzIHRoZQor
ICAgICAgICBiYXNlVmFsIGFuZCBhbmltVmFsIGFyZSBvZiB0eXBlIHVuc2lnbmVkLiBIb3dldmVy
IFNWR0FuaW1hdGVkRW51bWVyYXRpb24KKyAgICAgICAgc2hvdWxkIGJlIGFibGUgdG8gY29udmVy
dCBhIHN0cmluZyB0byBpdHMgZW51bSB2YWx1ZSBhbmQgdmljZSB2ZXJzYS4KKworICAgICAgICAt
LSBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5IGlzIGEgdGVtcGxhdGUgY2xhc3Mgd2hpY2gg
bWFwcyBmcm9tCisgICAgICAgIERlY29yYXRlZFByb3BlcnR5IHRvIERlY29yYXRpb25UeXBlLiBU
aGUgRGVjb3JhdGVkUHJvcGVydHkgaXMgYWN0dWFsbHkKKyAgICAgICAgYSB0ZW1wbGF0ZSBjbGFz
cyB3aGljaCBleHBvc2VzIGEgcHJvcGVydHkgb2YgdHlwZSBEZWNvcmF0aW9uVHlwZS4KKworICAg
ICAgICAtLSBTVkdEZWNvcmF0ZWRQcm9wZXJ0eSBpcyBhbiBhYnN0cmFjdCBjbGFzcyB3aGljaCBt
YW5hZ2VzIHNldHRpbmcgYW5kCisgICAgICAgIGdldHRpbmcgYSBwcm9wZXJ0eSBpbiBEZWNvcmF0
aW9uVHlwZSByZWdhcmRsZXNzIG9mIGhvdyBpdCBpcyBhY3R1YWxseQorICAgICAgICBzdG9yZWQu
IAorCisgICAgICAgIC0tIFNWR0RlY29yYXRlZFByaW1pdGl2ZSBpcyBhIHN1cGVyY2xhc3Mgb2Yg
U1ZHRGVjb3JhdGVkUHJvcGVydHkgd2hpY2gKKyAgICAgICAgc3RvcmVzIGEgcHJpbWl0aXZlIHBy
b3BlcnR5IHdob3NlIHR5cGUgaXMgUHJvcGVydHlUeXBlIGJ1dCBjYW4gZGVjb3JhdGUKKyAgICAg
ICAgaXQgdG8gdGhlIGNhbGxlcnMgYXMgRGVjb3JhdGlvblR5cGUuCisKKyAgICAgICAgLS0gU1ZH
RGVjb3JhdGVkRW51bWVyYXRpb24gaXMgYSBzdXBlcmNsYXNzIG9mIFNWR0RlY29yYXRlZFByaW1p
dGl2ZQorICAgICAgICB3aGljaCBzdG9yZXMgYSBwcmltaXRpdmUgdHlwZSBEZWNvcmF0aW9uVHlw
ZSBsaWtlICJCbGVuZE1vZGUiIGJ1dAorICAgICAgICBkZWNvcmF0ZXMgaXQgYXMgInVuc2lnbmVk
IgorCisgICAgICAgIFRvIGdldCB0aGUgbWVjaGFuaWNzIG9mIHRoaXMgY2hhbmdlIGNvcnJlY3Qs
IG5ldyBhY2Nlc3NvcnMsIGFuaW1hdG9ycworICAgICAgICBhbmQgYW5pbWF0aW9uIGZ1bmN0aW9u
cyBuZWVkIHRvIGJlIGFkZGVkIGZvciBTVkdBbmltYXRlZEFuZ2xlLAorICAgICAgICBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uIGFuZCBTVkdBbmltYXRlZE9yaWVudFR5cGUuIEJ1dCBzaW5jZSBhbmds
ZSBhbmQKKyAgICAgICAgdGhlIG9yaWVudCB0eXBlIGFyZSBwYWlyZWQgdW5kZXIgYSBzaW5nbGUg
YXR0cmlidXRlLCBhIHBhaXIgYWNjZXNzb3IgYW5kCisgICAgICAgIGFuaW1hdG9yIGFyZSBhbHNv
IG5lZWRlZCBmb3IgdGhlIHBhaXIgeyBhbmdsZSwgb3JpZW50VHlwZSB9LgorCisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHN2Zy9TVkdBbmdsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5nbGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6dW5pdFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5nbGU6OnNldFZhbHVlRm9yQmluZGluZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5nbGU6OnZhbHVlRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5nbGU6OnNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmdsZTo6dmFsdWVJblNwZWNpZmllZFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuZ2xl
OjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuZ2xlOjpuZXdWYWx1
ZVNwZWNpZmllZFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuZ2xlOjpjb252ZXJ0VG9T
cGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6dmFsdWVBc1N0cmlu
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6U1ZHQW5nbGUpOiBEZWxl
dGVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZEVudW1lcmF0aW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6dHlwZSBjb25zdCk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0b3JGYWN0b3J5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpTVkdDbGlwUGF0aEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpyZWdpc3Rl
ckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6
OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6cmVn
aXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp0eXBlQW5pbWF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmF0dHJpYnV0
ZVJlZ2lzdHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50Ojppc0tub3duQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpjb21t
aXRQcm9wZXJ0eUNoYW5nZSk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6
IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxCbGVuZE1vZGU+Ojpmcm9tU3RyaW5nKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1
dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6U1ZHRkVDb21wb3NpdGVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMp
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6
cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVk
LgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cmVn
aXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6U1ZHRkVNb3JwaG9sb2d5
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50Ojpy
ZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6U1ZHRkVUdXJidWxlbmNl
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6U1ZH
R3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6
cmVnaXN0ZXJBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6c3ByZWFkTWV0aG9kIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6Z3JhZGllbnRVbml0cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnNwcmVhZE1ldGhv
ZEFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6Z3JhZGll
bnRVbml0c0FuaW1hdGVkKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BbmdsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRUeXBlSWRlbnRpZmllcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRBbmdsZUlkZW50aWZpZXIp
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR01hcmtlclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0
czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6YXV0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6YXV0b1N0YXJ0UmV2ZXJzZVN0
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmll
bnRUeXBlPjo6ZnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0
czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6dG9TdHJpbmcpOgorICAgICAgICAqIHN2Zy9TVkdNYXNr
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6U1ZHTWFza0Vs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OnJlZ2lzdGVyQXR0cmli
dXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXR0
ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6U1ZH
UGF0dGVybkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnJl
Z2lzdGVyQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpTVkdUZXh0Q29udGVudEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpsZW5ndGhBZGp1c3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpsZW5ndGhBZGp1c3RBbmltYXRlZCk6CisgICAg
ICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0UGF0aEVsZW1lbnQ6OlNWR1RleHRQYXRoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXh0UGF0aEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0UGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZH
VGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ZhbHVlLmg6CisgICAgICAgICog
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5OjpTVkdBbmltYXRl
ZERlY29yYXRlZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRGVjb3Jh
dGVkUHJvcGVydHk6OnNldEJhc2VWYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRE
ZWNvcmF0ZWRQcm9wZXJ0eTo6c2V0QmFzZVZhbEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk6OmJhc2VWYWwgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eTo6c2V0QW5pbVZhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5OjphbmltVmFsIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk6OmN1cnJl
bnRWYWx1ZSBjb25zdCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFjY2Vzc29ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5SW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRPcmllbnRU
eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlQYWlyQWNjZXNzb3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVBhaXJBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVBhaXJBbmltYXRvcjo6YXBwZW5kQW5pbWF0ZWRJbnN0YW5jZSk6CisgICAgICAgICog
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25J
bXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25BbmdsZUZ1bmN0aW9uOjpwcm9n
cmVzcyk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5j
dGlvbkltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3Ry
eS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVjb3JhdGVkRW51bWVyYXRpb246OmNyZWF0
ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJpbWl0aXZlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVjb3JhdGVkUHJpbWl0aXZlOjpTVkdEZWNvcmF0
ZWRQcmltaXRpdmUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3Bl
cnR5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVjb3JhdGVkUHJvcGVydHk6OnNl
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlY29yYXRlZFByb3BlcnR5Ojp2YWx1ZSBj
b25zdCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk6OnJlZ2lzdGVy
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5Ojpp
c0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eVJlZ2lzdHJ5Lmg6CisKIDIwMTktMDMtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBFbmFibGUgSVBDIHNlbmRpbmcgYW5kIHJl
Y2VpdmluZyBub24tZGVmYXVsdC1jb25zdHJ1Y3RpYmxlIHR5cGVzCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTIyNjcsOCArMjI2Nyw2IEBAIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAK
IHN2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuY3BwCiBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCi1zdmcvU1ZHQW5pbWF0
ZWRBbmdsZS5jcHAKLXN2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcAogc3ZnL1NWR0FuaW1h
dGVkTGVuZ3RoLmNwcAogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAKIHN2Zy9TVkdBbmlt
YXRlZFBhdGguY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3
ICsyNjQsNiBAQAogCQkwODZCQkQwRjEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGguaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NkJCRDBFMTM2MDM5QzIw
MDhCMTVEOCAvKiBHbHlwaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA4NzNCODZCMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NzNCODZBMTM2MDY0
RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwODc1NThDNjEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRl
UGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODc1NThDNDEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3
YXJlVGV4dEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMDg3Qjg0OTYxMjcyQ0VDODAwQTE0NDE3IC8qIFNWR0FuaW1hdGVkQW5nbGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4N0I4NDk1
MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggKi87IH07CiAJCTA4ODUwNjdG
MTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludElu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
ODg1MDY4MDExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4NTA2N0UxMURBMDQ1QjAwMTgyQjk4IC8q
IFBhaW50UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwODhBMEUwNDEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVy
dHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwODhBMERGQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmLmggKi87IH07CkBAIC0yODIsNyArMjgxLDYgQEAKIAkJMDhDN0EyQzcxMERDNzQ2MjAwMkQz
NjhCIC8qIFNWR05hbWVzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFFOTA5RDE1MDhEMDAwRTYxRDcgLyogU1ZHTmFt
ZXMuaCAqLzsgfTsKIAkJMDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDOTI1MTgw
RkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4Q0EzRDQ0MTI4OTRBMzgwMEZGRjI2MCAvKiBT
VkdNYXRyaXhUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwOENBM0Q0MzEyODk0QTM4MDBGRkYyNjAgLyogU1ZHTWF0cml4VGVhck9mZi5oICov
OyB9OwotCQkwOEQ0NkNFMzEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhENDZD
RTIxMjdBRDVGQzAwODk2OTRCIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCAqLzsgfTsKIAkJ
MDhFREUxOUYxMkE1MEI4RTAwQjk1Nzk3IC8qIFNWR1JlY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RURFMTlFMTJBNTBCOEUwMEI5NTc5NyAvKiBT
VkdSZWN0LmggKi87IH07CiAJCTA4RjBCRkMzMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0Q2h1
bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjBC
RkJFMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0Q2h1bmsuaCAqLzsgfTsKIAkJMDhGMEJGQzQx
MjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMEJGQkYxMjU1QzUzQzAwMDc1MTg1IC8qIFNW
R1RleHRGcmFnbWVudC5oICovOyB9OwpAQCAtNTYzNyw3ICs1NjM1LDYgQEAKIAkJMDg3M0I4NkEx
MzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHbHlwaFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg3NTU4
QzMxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXJyb2dhdGVQYWlyQXdhcmVU
ZXh0SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODc1NThDNDEz
QjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwODdCODQ5NTEyNzJDRUM3MDBBMTQ0
MTcgLyogU1ZHQW5pbWF0ZWRBbmdsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBbmltYXRlZEFuZ2xlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUw
NjdEMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFpbnRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4
ODUwNjdFMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBhaW50UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDg4QTBERkIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVh
ck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZExpc3RQ
cm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2NTgsNyAr
NTY1NSw2IEBACiAJCTA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsdGVyRWZmZWN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhDOTI1MTgwRkNDN0M0QTAwNDgwREVDIC8q
IEZpbHRlckVmZmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJF
ZmZlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhDQTNENDMxMjg5NEEzODAw
RkZGMjYwIC8qIFNWR01hdHJpeFRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHTWF0cml4VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
OEQ0NkNFMjEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RURFMTlFMTJBNTBCOEUwMEI5NTc5NyAvKiBT
VkdSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1JlY3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGMEJGQkQxMjU1QzUzQzAwMDc1MTg1IC8qIFNW
R1RleHRDaHVuay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdU
ZXh0Q2h1bmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEYwQkZCRTEyNTVD
NTNDMDAwNzUxODUgLyogU1ZHVGV4dENodW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR1RleHRDaHVuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU3
Niw3ICs3NTcyLDYgQEAKIAkJNDM1OEU4ODIxMzYwQTMzQjAwRTQ3NDhDIC8qIFNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQz
NThFODgzMTM2MEEzM0IwMEU0NzQ4QyAvKiBTVkdGRURyb3BTaGFkb3dFbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM1OEU4ODQxMzYwQTMzQjAwRTQ3NDhDIC8qIFNW
R0ZFRHJvcFNoYWRvd0VsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzYyQzdC
ODEzQUM2RjFBMDAzNDRCRUIgLyogU1ZHQW5pbWF0ZWRBbmdsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZEFuZ2xlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4ODExMkQ5Q0E0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR0Js
b2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR0Js
b2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4ODIxMkQ5Q0E0QTAw
MDQ0MjM0IC8qIFJlbmRlclNWR0Jsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlclNWR0Jsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNjcw
ODgzMTJEOUNBNEEwMDA0NDIzNCAvKiBSZW5kZXJTVkdDb250YWluZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2MzksNiArODYzNCwxMCBAQAogCQk1NTQ2NzU3ODFG
RDFGQzFBMDAzQjEwQjAgLyogSW1hZ2VTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VTb3Vy
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU1MENCNDExRTk1NUUzQzAwMTEx
QUEwIC8qIEltYWdlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1h
Z2VUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTUxMzAwMDFFN0NDQ0NB
MDBBNjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERlY29kaW5nT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NTUzNTkyMDIyNDQxQTE2MDA4RjVFQzkgLyogU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NTM1OTIxMjI0NDFCOTcwMDhGNUVDOSAvKiBTVkdEZWNv
cmF0ZWRFbnVtZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdEZWNvcmF0ZWRFbnVtZXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTUzNTkyMjIyNDQxQkU5MDA4RjVF
QzkgLyogU1ZHRGVjb3JhdGVkUHJpbWl0aXZlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0RlY29yYXRl
ZFByaW1pdGl2ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTUzNTkyMzIyNDQx
QzE4MDA4RjVFQzkgLyogU1ZHRGVjb3JhdGVkUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
RGVjb3JhdGVkUHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU1Qjg3
RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNH
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NzZBNTYyMUQ4OEE3MDgwMENDQzA0QyAvKiBJ
bWFnZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQ2OSw3ICs5NDY4LDYg
QEAKIAkJNzFDMjlFMzEyMDNDRTc2QzAwOEYzNkQyIC8qIENTU0FuaW1hdGlvbi5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQ1NTQW5pbWF0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzFDNUJCMUIxRkI2MTFFQTAwMDdBMkFFIC8qIEFuaW1hdGFibGUuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEFuaW1hdGFibGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcxQ0M3QTFG
MTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkRW51bWVyYXRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUNFMkM1MTIyMDlEQzdGMDBDNDk0QkQgLyog
TW91c2VFdmVudElPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b3VzZUV2ZW50SU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFEMDJEOTAx
REI1NUM0RTAwREQ1Q0Y1IC8qIG1haW4uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3Jp
cHQ7IHBhdGggPSBtYWluLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUQwMkQ5
MjFEQjU1QzRFMDBERDVDRjUgLyogbWVkaWEtY29udHJvbGxlci5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJtZWRpYS1jb250cm9sbGVyLmpzIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjA3LDYgKzE2MjA1LDcgQEAKIAkJMDgxQ0RGQkQxMjZF
Q0ZFODAwRDIxNUNBIC8qIHByb3BlcnRpZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTU1NTM1OTIwMjI0NDFBMTYwMDhGNUVDOSAvKiBTVkdBbmltYXRl
ZERlY29yYXRlZFByb3BlcnR5LmggKi8sCiAJCQkJNzFGQjk2N0ExMzgzRDY0NjAwQUM4QTRDIC8q
IFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODhBMERG
QjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8s
CiAJCQkJNTVGQTdGRkMyMTEwRjgxMzAwNUFFRkU3IC8qIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuY3BwICovLApAQCAtMTYyNDcsNiArMTYyNDYsOSBAQAogCQkJCTU1MzQ2
QUYwMjExNTBGQUYwMDU5QkNERCAvKiBTVkdBdHRyaWJ1dGVPd25lclByb3h5LmggKi8sCiAJCQkJ
NTUzNDZBRkEyMTE3RkZBRjAwNTlCQ0REIC8qIFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsLmgg
Ki8sCiAJCQkJNTVGQTdGRjYyMTBGQkUzRTAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZVJlZ2lzdHJ5
LmggKi8sCisJCQkJNTU1MzU5MjEyMjQ0MUI5NzAwOEY1RUM5IC8qIFNWR0RlY29yYXRlZEVudW1l
cmF0aW9uLmggKi8sCisJCQkJNTU1MzU5MjIyMjQ0MUJFOTAwOEY1RUM5IC8qIFNWR0RlY29yYXRl
ZFByaW1pdGl2ZS5oICovLAorCQkJCTU1NTM1OTIzMjI0NDFDMTgwMDhGNUVDOSAvKiBTVkdEZWNv
cmF0ZWRQcm9wZXJ0eS5oICovLAogCQkJCTU1RDcwRDIxMjIzQjAwQkIwMDA0NEI4RSAvKiBTVkdM
ZWdhY3lBbmltYXRlZFByb3BlcnR5LmNwcCAqLywKIAkJCQk1NUQ3MEQyMDIyM0IwMDkxMDAwNDRC
OEUgLyogU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oICovLAogCQkJCTU1RDcwRDIyMjIzQjAw
RUEwMDA0NEI4RSAvKiBTVkdMZWdhY3lQcm9wZXJ0eS5oICovLApAQCAtMjQxMzUsMTIgKzI0MTM3
LDggQEAKIAkJCQlCMjIyNzdFMzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUNvbG9yRWxl
bWVudC5jcHAgKi8sCiAJCQkJQjIyMjc3RTQwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVD
b2xvckVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzdFNTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5pZGwgKi8sCi0JCQkJNDM2MkM3QjgxM0FDNkYxQTAwMzQ0QkVCIC8q
IFNWR0FuaW1hdGVkQW5nbGUuY3BwICovLAotCQkJCTA4N0I4NDk1MTI3MkNFQzcwMEExNDQxNyAv
KiBTVkdBbmltYXRlZEFuZ2xlLmggKi8sCiAJCQkJQjIyMjc3RTYwRDAwQkYxRjAwNzFCNzgyIC8q
IFNWR0FuaW1hdGVkQW5nbGUuaWRsICovLAogCQkJCUIyMjI3N0U3MEQwMEJGMUYwMDcxQjc4MiAv
KiBTVkdBbmltYXRlZEJvb2xlYW4uaWRsICovLAotCQkJCTcxQ0M3QTFGMTUyQTBCRkUwMDlFRUFG
OSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCAqLywKLQkJCQkwOEQ0NkNFMjEyN0FENUZD
MDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oICovLAogCQkJCUIyMjI3N0U4MEQw
MEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmlkbCAqLywKIAkJCQlCMjIy
NzdFOTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmlkbCAqLywKIAkJCQk0
MzgxNzYzQTEzQTY5N0Q0MDA3RDExODcgLyogU1ZHQW5pbWF0ZWRMZW5ndGguY3BwICovLApAQCAt
MzE5MTcsOCArMzE5MTUsNiBAQAogCQkJCTI0RDkxMkI4MTNDQTlBNjkwMEQyMTkxNSAvKiBTVkdB
bHRHbHlwaEl0ZW1FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk3NzBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHQW5nbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTdBMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwODdCODQ5NjEyNzJDRUM4MDBBMTQ0MTcgLyogU1ZHQW5pbWF0ZWRBbmdsZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMDhENDZDRTMxMjdBRDVGQzAwODk2OTRCIC8qIFNWR0FuaW1hdGVkRW51bWVy
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTcxRkI5NjdCMTM4M0Q2NDYwMEFDOEE0QyAvKiBT
VkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwODkwMjFBOTEyNkVGNURFMDA5MkQ1RUEgLyogU1ZHQW5pbWF0ZWRMZW5ndGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA4OTAyMUFEMTI2RUY1RTkwMDkyRDVFQSAvKiBTVkdBbmltYXRlZExlbmd0
aExpc3QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmgJKHJldmlzaW9u
IDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDMyICsyNiwzNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTVkdBbmdsZVZhbHVl
LmgiCi0jaW5jbHVkZSAiU1ZHUHJvcGVydHlUZWFyT2ZmLmgiCisjaW5jbHVkZSAiU1ZHVmFsdWVQ
cm9wZXJ0eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0FuZ2xlIDogcHVi
bGljIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdBbmdsZVZhbHVlPiB7CitjbGFzcyBTVkdBbmdsZSA6
IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5PFNWR0FuZ2xlVmFsdWU+IHsKKyAgICB1c2luZyBCYXNl
ID0gU1ZHVmFsdWVQcm9wZXJ0eTxTVkdBbmdsZVZhbHVlPjsKKyAgICB1c2luZyBCYXNlOjpCYXNl
OworICAgIHVzaW5nIEJhc2U6Om1fdmFsdWU7CisKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNW
R0FuZ2xlPiBjcmVhdGUoU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0
eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0FuZ2xlVmFsdWUmIHZhbHVlKQorICAgIHN0YXRp
YyBSZWY8U1ZHQW5nbGU+IGNyZWF0ZShjb25zdCBTVkdBbmdsZVZhbHVlJiB2YWx1ZSA9IHsgfSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FuZ2xlKGFuaW1hdGVkUHJv
cGVydHksIHJvbGUsIHZhbHVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0Fu
Z2xlKHZhbHVlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxTVkdBbmdsZT4gY3JlYXRlKGNv
bnN0IFNWR0FuZ2xlVmFsdWUmIGluaXRpYWxWYWx1ZSA9IHsgfSkKKyAgICBzdGF0aWMgUmVmPFNW
R0FuZ2xlPiBjcmVhdGUoU1ZHUHJvcGVydHlPd25lciogb3duZXIsIFNWR1Byb3BlcnR5QWNjZXNz
IGFjY2VzcywgY29uc3QgU1ZHQW5nbGVWYWx1ZSYgdmFsdWUgPSB7IH0pCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmdsZShpbml0aWFsVmFsdWUpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5nbGUob3duZXIsIGFjY2VzcywgdmFsdWUpKTsKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNW
R0FuZ2xlPj4gY3JlYXRlKEV4Y2VwdGlvbk9yPFQ+JiYgaW5pdGlhbFZhbHVlKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTVkdBbmdsZT4+IGNy
ZWF0ZShFeGNlcHRpb25PcjxUPiYmIHZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKGluaXRpYWxW
YWx1ZS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWUucmVs
ZWFzZUV4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4gY3JlYXRlKGluaXRpYWxWYWx1ZS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSk7CisgICAgICAgIGlmICh2YWx1ZS5oYXNFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybiB2YWx1ZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNWR0FuZ2xlKHZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSk7CiAg
ICAgfQogCiAgICAgU1ZHQW5nbGVWYWx1ZTo6VHlwZSB1bml0VHlwZSgpCiAgICAgewotICAgICAg
ICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS51bml0VHlwZSgpOworICAgICAgICByZXR1cm4g
bV92YWx1ZS51bml0VHlwZSgpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZh
bHVlRm9yQmluZGluZ3MoZmxvYXQgdmFsdWUpCkBAIC01OSwxNSArNjQsMTQgQEAgcHVibGljOgog
ICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVu
Y2UoKS5zZXRWYWx1ZSh2YWx1ZSk7CisgICAgICAgIG1fdmFsdWUuc2V0VmFsdWUodmFsdWUpOwog
ICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAg
ICAKICAgICBmbG9hdCB2YWx1ZUZvckJpbmRpbmdzKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBw
cm9wZXJ0eVJlZmVyZW5jZSgpLnZhbHVlKCk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlLnZhbHVl
KCk7CiAgICAgfQogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVJblNwZWNpZmllZFVu
aXRzKGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cykKQEAgLTc1LDE1ICs3OSwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBwcm9wZXJ0eVJl
ZmVyZW5jZSgpLnNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyh2YWx1ZUluU3BlY2lmaWVkVW5pdHMp
OworICAgICAgICBtX3ZhbHVlLnNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyh2YWx1ZUluU3BlY2lm
aWVkVW5pdHMpOwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKLSAgICAgICAgCiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogICAgIAogICAgIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cygp
CiAgICAgewotICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS52YWx1ZUluU3BlY2lm
aWVkVW5pdHMoKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUudmFsdWVJblNwZWNpZmllZFVuaXRz
KCk7CiAgICAgfQogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVBc1N0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKQpAQCAtOTEsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChp
c1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRp
b25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBhdXRvIHJlc3VsdCA9IHByb3BlcnR5UmVmZXJl
bmNlKCkuc2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV92
YWx1ZS5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIApAQCAtOTksOSAr
MTAyLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0
cmluZyB2YWx1ZUFzU3RyaW5nKCkKKyAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS52YWx1ZUFz
U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlLnZhbHVlQXNTdHJpbmcoKTsKICAgICB9
CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVk
IHNob3J0IHVuaXRUeXBlLCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpCkBAIC0xMDksNyAr
MTEyLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAg
ICAgYXV0byByZXN1bHQgPSBwcm9wZXJ0eVJlZmVyZW5jZSgpLm5ld1ZhbHVlU3BlY2lmaWVkVW5p
dHModW5pdFR5cGUsIHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgICAgIGF1dG8gcmVzdWx0
ID0gbV92YWx1ZS5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuaXRUeXBlLCB2YWx1ZUluU3BlY2lm
aWVkVW5pdHMpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCkBAIC0xMjIsMjQgKzEyNSwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBhdXRvIHJlc3VsdCA9
IHByb3BlcnR5UmVmZXJlbmNlKCkuY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5pdFR5cGUpOwor
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdmFsdWUuY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5p
dFR5cGUpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgCiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KLQotcHJpdmF0ZToKLSAgICBTVkdBbmdsZShTVkdMZWdh
Y3lBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9s
ZSwgU1ZHQW5nbGVWYWx1ZSYgdmFsdWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNW
R0FuZ2xlVmFsdWU+KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgZXhwbGljaXQgU1ZHQW5nbGUoY29uc3QgU1ZHQW5nbGVWYWx1ZSYgaW5pdGlhbFZh
bHVlKQotICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdBbmdsZVZhbHVlPihpbml0aWFs
VmFsdWUpCi0gICAgewotICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAJKHJldmlzaW9uIDI0MzQ2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcAkobm9uZXhpc3RlbnQp
CkBAIC0xLDEzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZCAyMDExLCAyMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRBbmdsZS5oIgotCi0jaW5jbHVkZSAiU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlLmgiCi0jaW5jbHVkZSAiU1ZHTWFya2VyRWxlbWVudC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6U1ZHQW5pbWF0ZWRB
bmdsZUFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KQotICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5p
bWF0ZWRBbmdsZSwgYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpCi17Ci19Ci0KLXN0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6
Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICByZXR1cm4g
U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGUoU1ZHUHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPFNWR0Fu
Z2xlVmFsdWUsIHVuc2lnbmVkPj46OmZyb21TdHJpbmcoc3RyaW5nKSk7Ci19Ci0KLXN0ZDo6dW5p
cXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6c3RhcnRB
bmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5p
bWF0ZWRUeXBlcykKLXsKLSAgICByZXR1cm4gY29uc3RydWN0RnJvbUJhc2VWYWx1ZXM8U1ZHQW5p
bWF0ZWRBbmdsZSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0K
LXZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAg
c3RvcEFuaW1WYWxBbmltYXRpb25Gb3JUeXBlczxTVkdBbmltYXRlZEFuZ2xlLCBTVkdBbmltYXRl
ZEVudW1lcmF0aW9uPihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZEFuZ2xl
QW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMsIFNWR0FuaW1hdGVkVHlwZSYgdHlwZSkKLXsKLSAg
ICByZXNldEZyb21CYXNlVmFsdWVzPFNWR0FuaW1hdGVkQW5nbGUsIFNWR0FuaW1hdGVkRW51bWVy
YXRpb24+KGFuaW1hdGVkVHlwZXMsIHR5cGUpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkQW5nbGVB
bmltYXRvcjo6YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVy
dHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxXaWxsQ2hhbmdlRm9yVHlwZXM8
U1ZHQW5pbWF0ZWRBbmdsZSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4oYW5pbWF0ZWRUeXBlcyk7
Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAg
ICBhbmltVmFsRGlkQ2hhbmdlRm9yVHlwZXM8U1ZHQW5pbWF0ZWRBbmdsZSwgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFu
aW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0
ZWRUeXBlKiB0bykKLXsKLSAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkQW5nbGUp
OwotICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7Ci0KLSAgICBjb25zdCBh
dXRvJiBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbiA9IGZyb20tPmFzPHN0ZDo6cGFpcjxTVkdBbmds
ZVZhbHVlLCB1bnNpZ25lZD4+KCk7Ci0gICAgYXV0byYgdG9BbmdsZUFuZEVudW1lcmF0aW9uID0g
dG8tPmFzPHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4+KCk7Ci0gICAgLy8gT25s
eSByZXNwZWN0IGJ5IGFuaW1hdGlvbnMsIGlmIGZyb20gYW5kIGJ5IGFyZSBib3RoIHNwZWNpZmll
ZCBpbiBhbmdsZXMgKGFuZCBub3QgZWcuICdhdXRvJykuCi0gICAgaWYgKGZyb21BbmdsZUFuZEVu
dW1lcmF0aW9uLnNlY29uZCAhPSB0b0FuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kIHx8IGZyb21B
bmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCAhPSBTVkdNYXJrZXJPcmllbnRBbmdsZSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNvbnN0IGF1dG8mIGZyb21BbmdsZSA9IGZyb21BbmdsZUFuZEVudW1l
cmF0aW9uLmZpcnN0OwotICAgIGF1dG8mIHRvQW5nbGUgPSB0b0FuZ2xlQW5kRW51bWVyYXRpb24u
Zmlyc3Q7Ci0gICAgdG9BbmdsZS5zZXRWYWx1ZSh0b0FuZ2xlLnZhbHVlKCkgKyBmcm9tQW5nbGUu
dmFsdWUoKSk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdB
bmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0FuaW1hdGVkVHlwZSog
dG9BdEVuZE9mRHVyYXRpb24sIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCi17Ci0gICAgQVNT
RVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwot
Ci0gICAgY29uc3QgYXV0byYgZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24gPSAobV9hbmltYXRpb25F
bGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6
IGZyb20pLT5hczxzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5zaWduZWQ+PigpOwotICAgIGF1
dG8mIHRvQW5nbGVBbmRFbnVtZXJhdGlvbiA9IHRvLT5hczxzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1
ZSwgdW5zaWduZWQ+PigpOwotICAgIGF1dG8mIHRvQXRFbmRPZkR1cmF0aW9uQW5nbGVBbmRFbnVt
ZXJhdGlvbiA9IHRvQXRFbmRPZkR1cmF0aW9uLT5hczxzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwg
dW5zaWduZWQ+PigpOwotICAgIGF1dG8mIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbiA9IGFu
aW1hdGVkLT5hczxzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5zaWduZWQ+PigpOwotCi0gICAg
aWYgKGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCAhPSB0b0FuZ2xlQW5kRW51bWVyYXRp
b24uc2Vjb25kKSB7Ci0gICAgICAgIC8vIERpc2NyZXRlIGFuaW1hdGlvbiAtIG5vIGxpbmVhciBp
bnRlcnBvbGF0aW9uIHBvc3NpYmxlIGJldHdlZW4gdmFsdWVzIChlLmcuIGF1dG8gdG8gYW5nbGUp
LgotICAgICAgICBpZiAocGVyY2VudGFnZSA8IDAuNWYpIHsKLSAgICAgICAgICAgIGFuaW1hdGVk
QW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgPSBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNv
bmQ7Ci0gICAgICAgICAgICBpZiAoZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kID09IFNW
R01hcmtlck9yaWVudEFuZ2xlKQotICAgICAgICAgICAgICAgIGFuaW1hdGVkQW5nbGVBbmRFbnVt
ZXJhdGlvbi5maXJzdCA9IGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJz
dC5zZXRWYWx1ZSgwKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBh
bmltYXRlZEFuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kID0gdG9BbmdsZUFuZEVudW1lcmF0aW9u
LnNlY29uZDsKLSAgICAgICAgaWYgKHRvQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgPT0gU1ZH
TWFya2VyT3JpZW50QW5nbGUpCi0gICAgICAgICAgICBhbmltYXRlZEFuZ2xlQW5kRW51bWVyYXRp
b24uZmlyc3QgPSB0b0FuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3Q7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdC5zZXRWYWx1ZSgwKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChmcm9tQW5nbGVBbmRFbnVtZXJhdGlv
bi5zZWNvbmQgPT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpIHsKLSAgICAgICAgLy8gUmVndWxhciBm
cm9tIGFuZ2xlIHRvIGFuZ2xlIGFuaW1hdGlvbiwgd2l0aCBzdXBwb3J0IGZvciBzbW9vdGggaW50
ZXJwb2xhdGlvbiwgYW5kIGFkZGl0aXZlIGFuZCBhY2N1bXVsYXRlZCBhbmltYXRpb24uCi0gICAg
ICAgIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgPSBTVkdNYXJrZXJPcmllbnRB
bmdsZTsKLQotICAgICAgICBhdXRvJiBhbmltYXRlZFNWR0FuZ2xlID0gYW5pbWF0ZWRBbmdsZUFu
ZEVudW1lcmF0aW9uLmZpcnN0OwotICAgICAgICBjb25zdCBhdXRvJiB0b0F0RW5kT2ZEdXJhdGlv
blNWR0FuZ2xlID0gdG9BdEVuZE9mRHVyYXRpb25BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0Owot
ICAgICAgICBmbG9hdCBhbmltYXRlZEFuZ2xlID0gYW5pbWF0ZWRTVkdBbmdsZS52YWx1ZSgpOwot
ICAgICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50
YWdlLCByZXBlYXRDb3VudCwgZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3QudmFsdWUoKSwg
dG9BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0LnZhbHVlKCksIHRvQXRFbmRPZkR1cmF0aW9uU1ZH
QW5nbGUudmFsdWUoKSwgYW5pbWF0ZWRBbmdsZSk7Ci0gICAgICAgIGFuaW1hdGVkU1ZHQW5nbGUu
c2V0VmFsdWUoYW5pbWF0ZWRBbmdsZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAv
LyBhdXRvLCBhdXRvLXN0YXJ0LXJldmVyc2UsIG9yIHVua25vd24uCi0gICAgYW5pbWF0ZWRBbmds
ZUFuZEVudW1lcmF0aW9uLmZpcnN0LnNldFZhbHVlKDApOwotCi0gICAgaWYgKGZyb21BbmdsZUFu
ZEVudW1lcmF0aW9uLnNlY29uZCA9PSBTVkdNYXJrZXJPcmllbnRBdXRvIHx8IGZyb21BbmdsZUFu
ZEVudW1lcmF0aW9uLnNlY29uZCA9PSBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNlKQot
ICAgICAgICBhbmltYXRlZEFuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kID0gZnJvbUFuZ2xlQW5k
RW51bWVyYXRpb24uc2Vjb25kOwotICAgIGVsc2UKLSAgICAgICAgYW5pbWF0ZWRBbmdsZUFuZEVu
dW1lcmF0aW9uLnNlY29uZCA9IFNWR01hcmtlck9yaWVudFVua25vd247Ci19Ci0KLWZsb2F0IFNW
R0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBm
cm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQotewotICAgIGF1dG8gZnJvbSA9IFNW
R0FuZ2xlVmFsdWUoKTsKLSAgICBmcm9tLnNldFZhbHVlQXNTdHJpbmcoZnJvbVN0cmluZyk7Ci0g
ICAgYXV0byB0byA9IFNWR0FuZ2xlVmFsdWUoKTsKLSAgICB0by5zZXRWYWx1ZUFzU3RyaW5nKHRv
U3RyaW5nKTsKLSAgICByZXR1cm4gZmFic2YodG8udmFsdWUoKSAtIGZyb20udmFsdWUoKSk7Ci19
Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEFuZ2xlLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAj
IwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDUyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR0FuZ2xlLmgi
Ci0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdB
bmltYXRlZFR5cGVBbmltYXRvci5oIgotI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7Ci0KLXVzaW5nIFNW
R0FuaW1hdGVkQW5nbGUgPSBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdBbmdsZT47Ci11
c2luZyBTVkdBbmltYXRlZEFuZ2xlQXR0cmlidXRlID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1dGU8U1ZH
QW5pbWF0ZWRBbmdsZT47Ci0KLWNsYXNzIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvciBmaW5hbCA6
IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7Ci1wdWJsaWM6Ci0gICAgU1ZHQW5pbWF0
ZWRBbmdsZUFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7Ci0KLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNW
R0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVzZXRB
bmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNW
R0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29u
c3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBh
bmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92
ZXJyaWRlOwotCi0gICAgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNW
R0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotCi0gICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5
cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUq
KSBvdmVycmlkZTsKLSAgICBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkQW5nbGUuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAJKHJldmlz
aW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9u
LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDE2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKLQot
I2luY2x1ZGUgIlNWR0FuaW1hdGlvbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ZFQmxlbmRFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5o
IgotI2luY2x1ZGUgIlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oIgotI2luY2x1ZGUgIlNW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LmgiCi0jaW5jbHVkZSAiU1ZHR3JhZGllbnRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHTWFya2Vy
RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jaW5jbHVkZSAiU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVGV4dFBhdGhFbGVtZW50LmgiCi0jaW5jbHVkZSAi
U1ZHVW5pdFR5cGVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGlubGluZSB1
bnNpZ25lZCBlbnVtZXJhdGlvblZhbHVlRm9yVGFyZ2V0QXR0cmlidXRlKFNWR0VsZW1lbnQqIHRh
cmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQotewotICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjpmaWx0ZXJVbml0c0F0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmdyYWRpZW50VW5pdHNBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjptYXNr
Q29udGVudFVuaXRzQXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6bWFza1Vu
aXRzQXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRV
bml0c0F0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0
dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0cikK
LSAgICAgICAgcmV0dXJuIFNWR1Byb3BlcnR5VHJhaXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
bGVuZ3RoQWRqdXN0QXR0cikKLSAgICAgICAgcmV0dXJuIFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xl
bmd0aEFkanVzdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0cikKLSAgICAgICAgcmV0dXJuIFNWR1Byb3BlcnR5VHJh
aXRzPFNWR01hcmtlclVuaXRzVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6bWV0aG9kQXR0cikKLSAgICAgICAgcmV0dXJuIFNWR1Byb3BlcnR5
VHJhaXRzPFNWR1RleHRQYXRoTWV0aG9kVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BhY2luZ0F0dHIpCi0gICAgICAgIHJldHVybiBTVkdQ
cm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0aFNwYWNpbmdUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyKQotICAgICAg
ICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3ByZWFkTWV0aG9kVHlwZT46OmZyb21TdHJp
bmcodmFsdWUpOwotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjplZGdlTW9kZUF0dHIp
Ci0gICAgICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxFZGdlTW9kZVR5cGU+Ojpmcm9tU3Ry
aW5nKHZhbHVlKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3BlcmF0b3JBdHRy
KSB7Ci0gICAgICAgIGlmICh0YXJnZXRFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNv
bXBvc2l0ZVRhZykpCi0gICAgICAgICAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8Q29tcG9z
aXRlT3BlcmF0aW9uVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwotICAgICAgICBBU1NFUlQodGFy
Z2V0RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVNb3JwaG9sb2d5VGFnKSk7Ci0gICAg
ICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxNb3JwaG9sb2d5T3BlcmF0b3JUeXBlPjo6ZnJv
bVN0cmluZyh2YWx1ZSk7Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0
eXBlQXR0cikgewotICAgICAgICBpZiAodGFyZ2V0RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1l
czo6ZmVDb2xvck1hdHJpeFRhZykpCi0gICAgICAgICAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFp
dHM8Q29sb3JNYXRyaXhUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7Ci0gICAgICAgIGlmICh0YXJn
ZXRFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVR1cmJ1bGVuY2VUYWcpKQotICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihTVkdQcm9wZXJ0eVRyYWl0czxUdXJi
dWxlbmNlVHlwZT46OmZyb21TdHJpbmcodmFsdWUpKTsKLQotICAgICAgICBBU1NFUlQodGFyZ2V0
RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGdW5jQVRhZykKLSAgICAgICAgICAgICAg
IHx8IHRhcmdldEVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRnVuY0JUYWcpCi0gICAg
ICAgICAgICAgICB8fCB0YXJnZXRFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNH
VGFnKQotICAgICAgICAgICAgICAgfHwgdGFyZ2V0RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1l
czo6ZmVGdW5jUlRhZykpOwotICAgICAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8Q29tcG9u
ZW50VHJhbnNmZXJUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjptb2RlQXR0cikgewotICAgICAgICBCbGVuZE1vZGUgbW9kZSA9
IEJsZW5kTW9kZTo6Tm9ybWFsOwotICAgICAgICBwYXJzZUJsZW5kTW9kZSh2YWx1ZSwgbW9kZSk7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obW9kZSk7Ci0gICAgfQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyKQotICAgICAgICByZXR1
cm4gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3RpdGNoT3B0aW9ucz46OmZyb21TdHJpbmcodmFsdWUp
OwotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIpCi0g
ICAgICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxDaGFubmVsU2VsZWN0b3JUeXBlPjo6ZnJv
bVN0cmluZyh2YWx1ZSk7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5Q2hhbm5lbFNl
bGVjdG9yQXR0cikKLSAgICAgICAgcmV0dXJuIFNWR1Byb3BlcnR5VHJhaXRzPENoYW5uZWxTZWxl
Y3RvclR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiAwOwotfQotCi1TVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I6OlNW
R0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRp
b25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKLSAgICA6IFNWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yKEFuaW1hdGVkRW51bWVyYXRpb24sIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRl
eHRFbGVtZW50KQotewotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdB
bmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCi17Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgcmV0
dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlKGVudW1lcmF0aW9uVmFsdWVGb3JUYXJnZXRBdHRy
aWJ1dGUobV9hbmltYXRpb25FbGVtZW50LT50YXJnZXRFbGVtZW50KCksIG1fYW5pbWF0aW9uRWxl
bWVudC0+YXR0cmlidXRlTmFtZSgpLCBzdHJpbmcpKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFNW
R0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpzdGFydEFuaW1W
YWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRl
ZFR5cGVzKQotewotICAgIHJldHVybiBjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlPFNWR0FuaW1hdGVk
RW51bWVyYXRpb24+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkRW51bWVy
YXRpb25BbmltYXRvcjo6c3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIHN0b3BBbmltVmFsQW5pbWF0
aW9uRm9yVHlwZTxTVkdBbmltYXRlZEVudW1lcmF0aW9uPihhbmltYXRlZFR5cGVzKTsKLX0KLQot
dm9pZCBTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZh
bChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMsIFNW
R0FuaW1hdGVkVHlwZSYgdHlwZSkKLXsKLSAgICByZXNldEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbj4oYW5pbWF0ZWRUeXBlcywgdHlwZSk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjphbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgYW5pbVZhbFdpbGxD
aGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+KGFuaW1hdGVkVHlwZXMpOwotfQot
Ci12b2lkIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjo6YW5pbVZhbERpZENoYW5nZShj
b25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0g
ICAgYW5pbVZhbERpZENoYW5nZUZvclR5cGU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4oYW5pbWF0
ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjphZGRB
bmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopCi17Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFu
aW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVk
LCBTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0FuaW1hdGVk
VHlwZSosIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCi17Ci0gICAgQVNTRVJUKG1fYW5pbWF0
aW9uRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotCi0gICAgY29uc3Qg
YXV0byBmcm9tRW51bWVyYXRpb24gPSAobV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2Rl
KCkgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6IGZyb20pLT5hczx1bnNpZ25lZD4o
KTsKLSAgICBjb25zdCBhdXRvIHRvRW51bWVyYXRpb24gPSB0by0+YXM8dW5zaWduZWQ+KCk7Ci0g
ICAgYXV0byYgYW5pbWF0ZWRFbnVtZXJhdGlvbiA9IGFuaW1hdGVkLT5hczx1bnNpZ25lZD4oKTsK
LQotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZURpc2NyZXRlVHlwZTx1bnNpZ25lZD4o
cGVyY2VudGFnZSwgZnJvbUVudW1lcmF0aW9uLCB0b0VudW1lcmF0aW9uLCBhbmltYXRlZEVudW1l
cmF0aW9uKTsKLX0KLQotZmxvYXQgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpjYWxj
dWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQotewotICAgIC8vIE5v
IHBhY2VkIGFuaW1hdGlvbnMgZm9yIGVudW1lcmF0aW9ucy4KLSAgICByZXR1cm4gLTE7Ci19Ci0K
LX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaAko
cmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVy
YXRpb24uaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAsIDIwMTIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9w
ZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgotI2lu
Y2x1ZGUgIlNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKLQotdXNpbmcgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
biA9IFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPHVuc2lnbmVkPjsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgRW51bVR5cGU+Ci11c2luZyBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmli
dXRlID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1dGU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5
VGVhck9mZjxFbnVtVHlwZT4+OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGUsIHR5cGVu
YW1lIEVudW1UeXBlPgotdXNpbmcgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZUFjY2Vz
c29yID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVk
RW51bWVyYXRpb25BdHRyaWJ1dGU8RW51bVR5cGU+LCBBbmltYXRlZEVudW1lcmF0aW9uPjsKLQot
Y2xhc3MgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yIHsKLXB1YmxpYzoKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9u
QW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKLQotICAgIHN0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3Rh
cnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYp
IG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNldEFuaW1WYWxU
b0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0
ZWRUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFuaW1WYWxE
aWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7
Ci0KLSAgICB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0
ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0
IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdB
bmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlk
ZTsKLSAgICBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkRW51bWVyYXRpb24uaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEg
KzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDgg
KzExMSw2IEBAIHB1YmxpYzoKICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHN0YXRpYyBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFR5cGVz
W10gPSB7Ci0gICAgICAgICAgICBBbmltYXRlZEFuZ2xlLAotICAgICAgICAgICAgQW5pbWF0ZWRF
bnVtZXJhdGlvbiwKICAgICAgICAgICAgIEFuaW1hdGVkTGVuZ3RoLAogICAgICAgICAgICAgQW5p
bWF0ZWRMZW5ndGhMaXN0LAogICAgICAgICAgICAgQW5pbWF0ZWRQYXRoLApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAkocmV2aXNpb24gMjQzNDY2KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
OSw4ICsxOSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRBbmds
ZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdB
bmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIgogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkUGF0aC5oIgpAQCAtMzgsOCArMzYsMTAgQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwogCiAgICAgICAgIHN3aXRjaCAoYXR0cmlidXRl
VHlwZSkgeworICAgICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgICAgIGNhc2UgQW5pbWF0
ZWRCb29sZWFuOgogICAgICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CisgICAgICAgIGNhc2UgQW5p
bWF0ZWRFbnVtZXJhdGlvbjoKICAgICAgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CiAgICAgICAg
IGNhc2UgQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOgogICAgICAgICBjYXNlIEFuaW1h
dGVkTnVtYmVyOgpAQCAtNTEsMTAgKzUxLDYgQEAgcHVibGljOgogICAgICAgICBjYXNlIEFuaW1h
dGVkU3RyaW5nOgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgY2FzZSBB
bmltYXRlZEFuZ2xlOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRBbmdsZUFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7Ci0g
ICAgICAgIGNhc2UgQW5pbWF0ZWRFbnVtZXJhdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcj4oYW5pbWF0aW9uRWxl
bWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRv
cj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1h
dGVkTGVuZ3RoTGlzdDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBh
dGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMjggKzM5LDIzIEBAIGlubGluZSBT
VkdDbGlwUGF0aEVsZW1lbnQ6OlNWR0NsaXBQYXRoRWwKICAgICAsIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQodGhpcykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Y2xp
cFBhdGhUYWcpKTsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLX0KKworICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10g
eworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpj
bGlwUGF0aFVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSwgJlNWR0NsaXBQYXRo
RWxlbWVudDo6bV9jbGlwUGF0aFVuaXRzPigpOworICAgIH0pO30KIAogUmVmPFNWR0NsaXBQYXRo
RWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNWR0NsaXBQYXRoRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0Ns
aXBQYXRoRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3Ry
eSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6
Y2xpcFBhdGhVbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdDbGlwUGF0
aEVsZW1lbnQ6Om1fY2xpcFBhdGhVbml0cz4oKTsKLX0KLQogdm9pZCBTVkdDbGlwUGF0aEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5p
dHNBdHRyKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRz
PFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAg
aWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9jbGlwUGF0aFVuaXRzLnNldFZh
bHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgbV9jbGlwUGF0aFVuaXRzLT5zZXRCYXNl
VmFsSW50ZXJuYWw8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcwLDcgKzY1LDcgQEAgdm9pZCBTVkdDbGlwUGF0
aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKAogCiB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBp
ZiAoaXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2Jq
ZWN0ID0gcmVuZGVyZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50LmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0
aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgiCkBAIC0zNSwyNSArMzQsMTggQEAgY2xhc3Mg
U1ZHQ2xpcFBhdGhFbGVtZW50IGZpbmFsIDogcHVibGljIAogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8U1ZHQ2xpcFBhdGhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Jik7CiAKLSAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGNsaXBQYXRoVW5pdHMoKSBj
b25zdCB7IHJldHVybiBtX2NsaXBQYXRoVW5pdHMuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gY2xpcFBhdGhV
bml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9jbGlwUGF0aFVuaXRzLmFuaW1hdGVkUHJvcGVydHko
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUg
Y2xpcFBhdGhVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcFBhdGhVbml0cy0+Y3VycmVudFZh
bHVlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KCk7IH0KKyAgICBTVkdBbmltYXRlZEVudW1l
cmF0aW9uJiBjbGlwUGF0aFVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX2NsaXBQYXRoVW5pdHM7
IH0KIAogcHJpdmF0ZToKICAgICBTVkdDbGlwUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0
cmlidXRlT3duZXJQcm94eUltcGw8U1ZHQ2xpcFBhdGhFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1l
bnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVP
d25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVy
biBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQ
cm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmli
dXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdDbGlwUGF0aEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdp
c3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlS
ZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0
ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlS
ZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGZpbmFsOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdl
JikgZmluYWw7CkBAIC02Niw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25l
clByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdp
c3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVy
YXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9jbGlwUGF0aFVuaXRz
IHsgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fY2xpcFBhdGhVbml0cyB7IFNWR0FuaW1hdGVkRW51
bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQ
QUNFT05VU0UpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
RWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDEwICszNCw5IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTVkdDb21wb25lbnQKIFNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewotICAgIHJlZ2lz
dGVyQXR0cmlidXRlcygpOwotICAgIAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp0eXBlQXR0ciwgQ29tcG9uZW50VHJh
bnNmZXJUeXBlLCAmU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6Om1fdHlwZT4o
KTsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6
dGFibGVWYWx1ZXNBdHRyLCAmU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6Om1f
dGFibGVWYWx1ZXM+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVy
dHk8U1ZHTmFtZXM6OnNsb3BlQXR0ciwgJlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50OjptX3Nsb3BlPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3Bl
cnR5PFNWR05hbWVzOjppbnRlcmNlcHRBdHRyLCAmU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQ6Om1faW50ZXJjZXB0PigpOwpAQCAtNDcsMjAgKzQ2LDEyIEBAIFNWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpTVkcKICAgICB9KTsKIH0KIAotdm9pZCBTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAg
ICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3Ry
eS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJp
YnV0ZTxTVkdOYW1lczo6dHlwZUF0dHIsIENvbXBvbmVudFRyYW5zZmVyVHlwZSwgJlNWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjptX3R5cGU+KCk7Ci19Ci0KIHZvaWQgU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7CiAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyVHlw
ZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8Q29tcG9uZW50VHJhbnNmZXJUeXBl
Pjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAg
ICAgICAgICAgIG1fdHlwZS5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1f
dHlwZS0+c2V0QmFzZVZhbEludGVybmFsPENvbXBvbmVudFRyYW5zZmVyVHlwZT4ocHJvcGVydHlW
YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCShy
ZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJGRUNvbXBvbmVudFRyYW5zZmVyLmgiCi0jaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNzMsNyArNzIsNyBAQCBjbGFzcyBTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVuCiBwdWJsaWM6CiAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biB0cmFuc2ZlckZ1bmN0aW9uKCkgY29uc3Q7CiAKLSAgICBDb21wb25lbnRUcmFuc2ZlclR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQorICAgIENvbXBvbmVudFRyYW5zZmVyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlLT5jdXJyZW50VmFsdWU8Q29tcG9uZW50VHJhbnNmZXJUeXBlPigpOyB9CiAgICAg
Y29uc3QgU1ZHTnVtYmVyTGlzdCYgdGFibGVWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3RhYmxl
VmFsdWVzLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGZsb2F0IHNsb3BlKCkgY29uc3QgeyByZXR1
cm4gbV9zbG9wZS0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBmbG9hdCBpbnRlcmNlcHQoKSBjb25z
dCB7IHJldHVybiBtX2ludGVyY2VwdC0+Y3VycmVudFZhbHVlKCk7IH0KQEAgLTgxLDcgKzgwLDcg
QEAgcHVibGljOgogICAgIGZsb2F0IGV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9leHBvbmVu
dC0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBmbG9hdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X29mZnNldC0+Y3VycmVudFZhbHVlKCk7IH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1l
cmF0aW9uPiB0eXBlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3R5cGUuYW5pbWF0ZWRQcm9wZXJ0eShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgdHlw
ZUFuaW1hdGVkKCkgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
JiB0YWJsZVZhbHVlc0FuaW1hdGVkKCkgeyByZXR1cm4gbV90YWJsZVZhbHVlczsgfQogICAgIFNW
R0FuaW1hdGVkTnVtYmVyJiBzbG9wZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9zbG9wZTsgfQogICAg
IFNWR0FuaW1hdGVkTnVtYmVyJiBpbnRlcmNlcHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faW50ZXJj
ZXB0OyB9CkBAIC05MywxOCArOTIsMTEgQEAgcHJvdGVjdGVkOgogICAgIFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwog
CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJ
bXBsPFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdFbGVtZW50PjsKLSAg
ICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0
cnkoKTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNvbnN0
IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQ+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVn
aXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Byb3Bl
cnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRy
aWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3Bl
cnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtMTEzLDcgKzEwNSw3IEBAIHByb3RlY3RlZDoK
IHByaXZhdGU6CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkg
eyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPENvbXBvbmVudFRyYW5z
ZmVyVHlwZT4gbV90eXBlIHsgRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZIH07Cisg
ICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fdHlwZSB7IFNWR0FuaW1hdGVkRW51bWVy
YXRpb246OmNyZWF0ZSh0aGlzLCBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkpIH07
CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4gbV90YWJsZVZhbHVlcyB7IFNWR0FuaW1h
dGVkTnVtYmVyTGlzdDo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVy
PiBtX3Nsb3BlIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzLCAxKSB9OwogICAgIFJl
ZjxTVkdBbmltYXRlZE51bWJlcj4gbV9pbnRlcmNlcHQgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3Jl
YXRlKHRoaXMpIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAy
NDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc0MCw3ICs3NDAsMTMgQEAgdm9pZCBTVkdFbGVtZW50Ojpjb21taXRQcm9wZXJ0eUNo
YW5nZShTVgogdm9pZCBTVkdFbGVtZW50Ojpjb21taXRQcm9wZXJ0eUNoYW5nZShTVkdBbmltYXRl
ZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5KQogewogICAgIFF1YWxpZmllZE5hbWUgYXR0cmli
dXRlTmFtZSA9IHByb3BlcnR5UmVnaXN0cnkoKS5hbmltYXRlZFByb3BlcnR5QXR0cmlidXRlTmFt
ZShhbmltYXRlZFByb3BlcnR5KTsKLSAgICBzZXRTeW5jaHJvbml6ZWRMYXp5QXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHkuYmFzZVZhbEFzU3RyaW5nKCkpOworCisgICAg
Ly8gQSBjaGFuZ2UgaW4gYSBzdHlsZSBwcm9wZXJ0eSwgZS5nIFNWR1JlY3RFbGVtZW50Ojp4IHNo
b3VsZCBiZSBzZXJpYWxpemVkIHRvCisgICAgLy8gdGhlIGF0dHJpYnV0ZSBpbW1lZGlhdGVseS4g
T3RoZXJ3aXNlIGl0IGlzIG9rYXkgdG8gYmUgbGF6eSBpbiB0aGlzIHJlZ2FyZC4KKyAgICBpZiAo
IXByb3BlcnR5UmVnaXN0cnkoKS5pc0FuaW1hdGVkU3R5bGVQcm9wZXJ0eUF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKSkKKyAgICAgICAgYW5pbWF0ZWRQcm9wZXJ0eS5zZXREaXJ0eSgpOworICAgIGVs
c2UKKyAgICAgICAgc2V0U3luY2hyb25pemVkTGF6eUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZFByb3BlcnR5LmJhc2VWYWxBc1N0cmluZygpKTsKIAogICAgIGludmFsaWRhdGVTVkdB
dHRyaWJ1dGVzKCk7CiAgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGVOYW1lKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkocmV2aXNpb24gMjQz
NDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDEwIEBAIGlubGluZSBTVkdGRUJsZW5kRWxlbWVudDo6U1ZH
RkVCbGVuZEVsZW0KICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0
YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVC
bGVuZFRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIAogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10g
eworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpt
b2RlQXR0ciwgQmxlbmRNb2RlLCAmU1ZHRkVCbGVuZEVsZW1lbnQ6Om1fbW9kZT4oKTsKICAgICAg
ICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6aW5BdHRyLCAm
U1ZHRkVCbGVuZEVsZW1lbnQ6Om1faW4xPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5Ojpy
ZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjppbjJBdHRyLCAmU1ZHRkVCbGVuZEVsZW1lbnQ6Om1f
aW4yPigpOwogICAgIH0pOwpAQCAtNTEsMjAgKzUxLDEyIEBAIFJlZjxTVkdGRUJsZW5kRWxlbWVu
dD4gU1ZHRkVCbGVuZEVsZW1lbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRUJsZW5k
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogICAgIAotdm9pZCBTVkdGRUJsZW5kRWxl
bWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJp
YnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6bW9kZUF0dHIs
IEJsZW5kTW9kZSwgJlNWR0ZFQmxlbmRFbGVtZW50OjptX21vZGU+KCk7Ci19Ci0KIHZvaWQgU1ZH
RkVCbGVuZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
Om1vZGVBdHRyKSB7CiAgICAgICAgIEJsZW5kTW9kZSBtb2RlID0gQmxlbmRNb2RlOjpOb3JtYWw7
CiAgICAgICAgIGlmIChwYXJzZUJsZW5kTW9kZSh2YWx1ZSwgbW9kZSkpCi0gICAgICAgICAgICBt
X21vZGUuc2V0VmFsdWUobW9kZSk7CisgICAgICAgICAgICBtX21vZGUtPnNldEJhc2VWYWxJbnRl
cm5hbDxCbGVuZE1vZGU+KG1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkocmV2aXNpb24gMjQzNDY2KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDcgKzIzLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5o
IgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMzIsNiArMzEsMTMgQEAgdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEJs
ZW5kTW9kZT4gewogICAgIHN0YXRpYyB1bnNpZ25lZCBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEJsZW5kTW9kZTo6THVtaW5vc2l0eSk7IH0KIAorICAg
IHN0YXRpYyBCbGVuZE1vZGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICB7
CisgICAgICAgIEJsZW5kTW9kZSBtb2RlID0gQmxlbmRNb2RlOjpOb3JtYWw7CisgICAgICAgIHBh
cnNlQmxlbmRNb2RlKHN0cmluZywgbW9kZSk7CisgICAgICAgIHJldHVybiBtb2RlOworICAgIH0K
KwogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoQmxlbmRNb2RlIHR5cGUpCiAgICAgewogICAg
ICAgICBpZiAodHlwZSA8IEJsZW5kTW9kZTo6UGx1c0RhcmtlcikKQEAgLTQ4LDI4ICs1NCwyMSBA
QCBwdWJsaWM6CiAKICAgICBTdHJpbmcgaW4xKCkgY29uc3QgeyByZXR1cm4gbV9pbjEtPmN1cnJl
bnRWYWx1ZSgpOyB9CiAgICAgU3RyaW5nIGluMigpIGNvbnN0IHsgcmV0dXJuIG1faW4yLT5jdXJy
ZW50VmFsdWUoKTsgfQotICAgIEJsZW5kTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2Rl
LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgQmxlbmRNb2RlIG1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGUtPmN1cnJlbnRWYWx1ZTxCbGVuZE1vZGU+KCk7IH0K
IAogICAgIFNWR0FuaW1hdGVkU3RyaW5nJiBpbjFBbmltYXRlZCgpIHsgcmV0dXJuIG1faW4xOyB9
CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcmIGluMkFuaW1hdGVkKCkgeyByZXR1cm4gbV9pbjI7IH0K
LSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbW9kZUFuaW1hdGVkKCkgeyByZXR1
cm4gbV9tb2RlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAg
IFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIG1vZGVBbmltYXRlZCgpIHsgcmV0dXJuIG1fbW9kZTsg
fQogCiBwcml2YXRlOgogICAgIFNWR0ZFQmxlbmRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJp
YnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRy
aWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJB
dHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRl
T3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsg
fQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3Ry
eTxTVkdGRUJsZW5kRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
PjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMgYm9v
bCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0g
ICAgewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpOwotICAgIH0KLQogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKQEAgLTgw
LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdp
c3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0Fu
aW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+
IG1faW4yIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwotICAgIFNWR0FuaW1h
dGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8QmxlbmRNb2RlPiBtX21vZGUgeyBCbGVuZE1vZGU6Ok5v
cm1hbCB9OworICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX21vZGUgeyBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgQmxlbmRNb2RlOjpOb3JtYWwpIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDExICszNSwxMSBAQCBpbmxpbmUgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29s
CiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9j
dW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29sb3JNYXRyaXhU
YWcpKTsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLSAgICAKKwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewog
ICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjppbkF0
dHIsICZTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6bV9pbjE+KCk7CisgICAgICAgIFByb3BlcnR5
UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnR5cGVBdHRyLCBDb2xvck1hdHJp
eFR5cGUsICZTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6bV90eXBlPigpOwogICAgICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp2YWx1ZXNBdHRyLCAmU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQ6Om1fdmFsdWVzPigpOwogICAgIH0pOwogfQpAQCAtNDksMjAg
KzQ5LDEyIEBAIFJlZjxTVkdGRUNvbG9yTWF0cml4RWxlbWVudD4gU1ZHRkVDb2xvck0KICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCi12b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpyZWdpc3RlckF0dHJp
YnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAg
ICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp0eXBlQXR0ciwgQ29sb3JNYXRyaXhUeXBlLCAm
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6Om1fdHlwZT4oKTsKLX0KLQogdm9pZCBTVkdGRUNvbG9y
TWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6
dHlwZUF0dHIpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFp
dHM8Q29sb3JNYXRyaXhUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9w
ZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fdHlwZS5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVl
KTsKKyAgICAgICAgICAgIG1fdHlwZS0+c2V0QmFzZVZhbEludGVybmFsPENvbG9yTWF0cml4VHlw
ZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCShyZXZpc2lvbiAyNDM0
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJG
RUNvbG9yTWF0cml4LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03MCwyOSArNjksMjIgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIAogICAgIFN0cmluZyBpbjEoKSBjb25zdCB7IHJldHVybiBtX2luMS0+Y3VycmVu
dFZhbHVlKCk7IH0KLSAgICBDb2xvck1hdHJpeFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIENvbG9yTWF0
cml4VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLT5jdXJyZW50VmFsdWU8Q29sb3JN
YXRyaXhUeXBlPigpOyB9CiAgICAgY29uc3QgU1ZHTnVtYmVyTGlzdCYgdmFsdWVzKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZXMtPmN1cnJlbnRWYWx1ZSgpOyB9CiAKICAgICBTVkdBbmltYXRlZFN0
cmluZyYgaW4xQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMTsgfQotICAgIFJlZlB0cjxTVkdBbmlt
YXRlZEVudW1lcmF0aW9uPiB0eXBlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3R5cGUuYW5pbWF0ZWRQ
cm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbiYgdHlwZUFuaW1hdGVkKCkgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0JiB2YWx1ZXNBbmltYXRlZCgpIHsgcmV0dXJuIG1fdmFsdWVzOyB9CiAKIHByaXZh
dGU6CiAgICAgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRl
T3duZXJQcm94eUltcGw8U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcz47Ci0gICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0
dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1
dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5
OyB9CiAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lz
dHJ5PFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0
cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0
YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
IApAQCAtMTAyLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1f
YXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3By
b3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9p
bjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07Ci0gICAgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkF0dHJpYnV0ZTxDb2xvck1hdHJpeFR5cGU+IG1fdHlwZSB7IEZFQ09MT1JNQVRS
SVhfVFlQRV9NQVRSSVggfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV90eXBl
IHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIEZFQ09MT1JNQVRSSVhfVFlQ
RV9NQVRSSVgpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4gbV92YWx1ZXMgeyBT
VkdBbmltYXRlZE51bWJlckxpc3Q6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzQ2
NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSwxMiArMzUsMTIgQEAgaW5saW5lIFNWR0ZFQ29tcG9zaXRlRWxlbWVu
dDo6U1ZHRkVDb21wbwogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpm
ZUNvbXBvc2l0ZVRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotICAgIAorCiAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZH
TmFtZXM6OmluQXR0ciwgJlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6bV9pbjE+KCk7CiAgICAgICAg
IFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmluMkF0dHIsICZT
VkdGRUNvbXBvc2l0ZUVsZW1lbnQ6Om1faW4yPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIENvbXBvc2l0ZU9wZXJh
dGlvblR5cGUsICZTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6Om1fc3ZnT3BlcmF0b3I+KCk7CiAgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmsxQXR0ciwg
JlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6bV9rMT4oKTsKICAgICAgICAgUHJvcGVydHlSZWdpc3Ry
eTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6azJBdHRyLCAmU1ZHRkVDb21wb3NpdGVFbGVt
ZW50OjptX2syPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5
PFNWR05hbWVzOjprM0F0dHIsICZTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6Om1fazM+KCk7CkBAIC01
MywyMCArNTMsMTIgQEAgUmVmPFNWR0ZFQ29tcG9zaXRlRWxlbWVudD4gU1ZHRkVDb21wb3NpdAog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFQ29tcG9zaXRlRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwogfQogCi12b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cmVnaXN0ZXJBdHRy
aWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0g
ICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3Ry
eS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBDb21wb3NpdGVPcGVy
YXRpb25UeXBlLCAmU1ZHRkVDb21wb3NpdGVFbGVtZW50OjptX3N2Z09wZXJhdG9yPigpOwotfQot
CiB2b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6b3BlcmF0b3JBdHRyKSB7CiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdGlv
blR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPENvbXBvc2l0ZU9wZXJhdGlv
blR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAw
KQotICAgICAgICAgICAgbV9zdmdPcGVyYXRvci5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAg
ICAgICAgICAgIG1fc3ZnT3BlcmF0b3ItPnNldEJhc2VWYWxJbnRlcm5hbDxDb21wb3NpdGVPcGVy
YXRpb25UeXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkocmV2aXNpb24g
MjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkZFQ29tcG9zaXRlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC04Niw3ICs4NSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBpbjEo
KSBjb25zdCB7IHJldHVybiBtX2luMS0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBTdHJpbmcgaW4y
KCkgY29uc3QgeyByZXR1cm4gbV9pbjItPmN1cnJlbnRWYWx1ZSgpOyB9Ci0gICAgQ29tcG9zaXRl
T3BlcmF0aW9uVHlwZSBzdmdPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3ZnT3BlcmF0b3Iu
Y3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBDb21wb3NpdGVPcGVy
YXRpb25UeXBlIHN2Z09wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdmdPcGVyYXRvci0+Y3Vy
cmVudFZhbHVlPENvbXBvc2l0ZU9wZXJhdGlvblR5cGU+KCk7IH0KICAgICBmbG9hdCBrMSgpIGNv
bnN0IHsgcmV0dXJuIG1fazEtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgZmxvYXQgazIoKSBjb25z
dCB7IHJldHVybiBtX2syLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGZsb2F0IGszKCkgY29uc3Qg
eyByZXR1cm4gbV9rMy0+Y3VycmVudFZhbHVlKCk7IH0KQEAgLTk0LDcgKzkzLDcgQEAgcHVibGlj
OgogCiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcmIGluMUFuaW1hdGVkKCkgeyByZXR1cm4gbV9pbjE7
IH0KICAgICBTVkdBbmltYXRlZFN0cmluZyYgaW4yQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMjsg
fQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBzdmdPcGVyYXRvckFuaW1hdGVk
KCkgeyByZXR1cm4gbV9zdmdPcGVyYXRvci5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBzdmdPcGVyYXRvckFuaW1h
dGVkKCkgeyByZXR1cm4gbV9zdmdPcGVyYXRvcjsgfQogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBr
MUFuaW1hdGVkKCkgeyByZXR1cm4gbV9rMTsgfQogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBrMkFu
aW1hdGVkKCkgeyByZXR1cm4gbV9rMjsgfQogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBrM0FuaW1h
dGVkKCkgeyByZXR1cm4gbV9rMzsgfQpAQCAtMTA0LDE4ICsxMDMsMTEgQEAgcHJpdmF0ZToKICAg
ICBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94
eUltcGw8U1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdp
c3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVz
KCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94
eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAg
dXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAg
ICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC0xMjYsNyAr
MTE4LDcgQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1h
dGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1f
aW4yIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwotICAgIFNWR0FuaW1hdGVk
RW51bWVyYXRpb25BdHRyaWJ1dGU8Q29tcG9zaXRlT3BlcmF0aW9uVHlwZT4gbV9zdmdPcGVyYXRv
ciB7IEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbj4gbV9zdmdPcGVyYXRvciB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0
aGlzLCBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZE51
bWJlcj4gbV9rMSB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsKICAgICBSZWY8
U1ZHQW5pbWF0ZWROdW1iZXI+IG1fazIgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMp
IH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2szIHsgU1ZHQW5pbWF0ZWROdW1iZXI6
OmNyZWF0ZSh0aGlzKSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw3ICszOCw2IEBAIGlubGluZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6U1ZHRkUK
ICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb252b2x2ZU1hdHJp
eFRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogCiAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CkBAIC00
OSw2ICs0OCw3IEBAIGlubGluZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6U1ZHRkUKICAg
ICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6Ymlhc0F0
dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9iaWFzPigpOwogICAgICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp0YXJnZXRYQXR0ciwgJlNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX3RhcmdldFg+KCk7CiAgICAgICAgIFByb3BlcnR5
UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnRhcmdldFlBdHRyLCAmU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fdGFyZ2V0WT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdp
c3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6ZWRnZU1vZGVBdHRyLCBFZGdlTW9kZVR5
cGUsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9lZGdlTW9kZT4oKTsKICAgICAgICAg
UHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6a2VybmVsVW5pdExl
bmd0aEF0dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9rZXJuZWxVbml0TGVuZ3Ro
WCwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX2tlcm5lbFVuaXRMZW5ndGhZPigpOwog
ICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpwcmVz
ZXJ2ZUFscGhhQXR0ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX3ByZXNlcnZlQWxw
aGE+KCk7CiAgICAgfSk7CkBAIC01OSwxNCArNTksNiBAQCBSZWY8U1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ+IFNWR0ZFQ29uCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdp
c3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1l
czo6ZWRnZU1vZGVBdHRyLCBFZGdlTW9kZVR5cGUsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6bV9lZGdlTW9kZT4oKTsKLX0KLQogdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7CkBAIC04
Nyw3ICs3OSw3IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNlQXQKICAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVBdHRyKSB7CiAgICAgICAgIEVkZ2VNb2Rl
VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8RWRnZU1vZGVUeXBlPjo6ZnJv
bVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAg
ICAgIG1fZWRnZU1vZGUuc2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX2Vk
Z2VNb2RlLT5zZXRCYXNlVmFsSW50ZXJuYWw8RWRnZU1vZGVUeXBlPihwcm9wZXJ0eVZhbHVlKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25z
KCkucmVwb3J0V2FybmluZygiZmVDb252b2x2ZU1hdHJpeDogcHJvYmxlbSBwYXJzaW5nIGVkZ2VN
b2RlPVwiIiArIHZhbHVlICsgIlwiLiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3Bs
YXllZC4iKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBiaWFzKCkgY29uc3QgeyByZXR1
cm4gbV9iaWFzLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGludCB0YXJnZXRYKCkgY29uc3QgeyBy
ZXR1cm4gbV90YXJnZXRYLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGludCB0YXJnZXRZKCkgY29u
c3QgeyByZXR1cm4gbV90YXJnZXRZLT5jdXJyZW50VmFsdWUoKTsgfQotICAgIEVkZ2VNb2RlVHlw
ZSBlZGdlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZU1vZGUuY3VycmVudFZhbHVlKGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBFZGdlTW9kZVR5cGUgZWRnZU1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2VkZ2VNb2RlLT5jdXJyZW50VmFsdWU8RWRnZU1vZGVUeXBlPigpOyB9CiAgICAg
ZmxvYXQga2VybmVsVW5pdExlbmd0aFgoKSBjb25zdCB7IHJldHVybiBtX2tlcm5lbFVuaXRMZW5n
dGhYLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29u
c3QgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWS0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBi
b29sIHByZXNlcnZlQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZlQWxwaGEtPmN1cnJl
bnRWYWx1ZSgpOyB9CkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZE51
bWJlciYgYmlhc0FuaW1hdGVkKCkgeyByZXR1cm4gbV9iaWFzOyB9CiAgICAgU1ZHQW5pbWF0ZWRJ
bnRlZ2VyJiB0YXJnZXRYQW5pbWF0ZWQoKSB7IHJldHVybiBtX3RhcmdldFg7IH0KICAgICBTVkdB
bmltYXRlZEludGVnZXImIHRhcmdldFlBbmltYXRlZCgpIHsgcmV0dXJuIG1fdGFyZ2V0WTsgfQot
ICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBlZGdlTW9kZUFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV9lZGdlTW9kZS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBlZGdlTW9kZUFuaW1hdGVkKCkgeyByZXR1
cm4gbV9lZGdlTW9kZTsgfQogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBrZXJuZWxVbml0TGVuZ3Ro
WEFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWDsgfQogICAgIFNWR0FuaW1h
dGVkTnVtYmVyJiBrZXJuZWxVbml0TGVuZ3RoWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxV
bml0TGVuZ3RoWTsgfQogICAgIFNWR0FuaW1hdGVkQm9vbGVhbiYgcHJlc2VydmVBbHBoYUFuaW1h
dGVkKCkgeyByZXR1cm4gbV9wcmVzZXJ2ZUFscGhhOyB9CkBAIC05NywxOCArOTcsMTEgQEAgcHJp
dmF0ZToKICAgICBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRy
aWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKLSAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQ
cm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0
cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkm
IGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93
bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93
bmVyUmVnaXN0cnk8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJv
cGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsg
fQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwogCkBAIC0xMjUsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8U1ZHQW5p
bWF0ZWROdW1iZXI+IG1fYmlhcyB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsK
ICAgICBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiBtX3RhcmdldFggeyBTVkdBbmltYXRlZEludGVn
ZXI6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEludGVnZXI+IG1fdGFyZ2V0
WSB7IFNWR0FuaW1hdGVkSW50ZWdlcjo6Y3JlYXRlKHRoaXMpIH07Ci0gICAgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkF0dHJpYnV0ZTxFZGdlTW9kZVR5cGU+IG1fZWRnZU1vZGUgeyBFREdFTU9ERV9E
VVBMSUNBVEUgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9lZGdlTW9kZSB7
IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBFREdFTU9ERV9EVVBMSUNBVEUp
IH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2tlcm5lbFVuaXRMZW5ndGhYIHsgU1ZH
QW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZE51bWJl
cj4gbV9rZXJuZWxVbml0TGVuZ3RoWSB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykg
fTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRCb29sZWFuPiBtX3ByZXNlcnZlQWxwaGEgeyBTVkdBbmlt
YXRlZEJvb2xlYW46OmNyZWF0ZSh0aGlzKSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzQ2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTMgQEAgaW5saW5lIFNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudDo6U1ZHRgogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
OjpmZURpc3BsYWNlbWVudE1hcFRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotICAg
IAorCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHk8U1ZHTmFtZXM6OmluQXR0ciwgJlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6bV9p
bjE+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6OmluMkF0dHIsICZTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6Om1faW4yPigpOworICAg
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp4Q2hhbm5l
bFNlbGVjdG9yQXR0ciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSwgJlNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6bV94Q2hhbm5lbFNlbGVjdG9yPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0ciwgQ2hhbm5l
bFNlbGVjdG9yVHlwZSwgJlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6bV95Q2hhbm5lbFNl
bGVjdG9yPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNW
R05hbWVzOjpzY2FsZUF0dHIsICZTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6Om1fc2NhbGU+
KCk7CiAgICAgfSk7CiB9CkBAIC00OSwyOCArNTAsMTkgQEAgUmVmPFNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudD4gU1ZHRkVEaQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiBy
ZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdO
YW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIsIENoYW5uZWxTZWxlY3RvclR5cGUsICZTVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQ6Om1feENoYW5uZWxTZWxlY3Rvcj4oKTsKLSAgICByZWdpc3Ry
eS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIsIENoYW5u
ZWxTZWxlY3RvclR5cGUsICZTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6Om1feUNoYW5uZWxT
ZWxlY3Rvcj4oKTsKLX0KLQogdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRy
KSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPENoYW5u
ZWxTZWxlY3RvclR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5
VmFsdWUgPiAwKQotICAgICAgICAgICAgbV94Q2hhbm5lbFNlbGVjdG9yLnNldFZhbHVlKHByb3Bl
cnR5VmFsdWUpOworICAgICAgICAgICAgbV94Q2hhbm5lbFNlbGVjdG9yLT5zZXRCYXNlVmFsSW50
ZXJuYWw8Q2hhbm5lbFNlbGVjdG9yVHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0
dHIpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8Q2hh
bm5lbFNlbGVjdG9yVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVy
dHlWYWx1ZSA+IDApCi0gICAgICAgICAgICBtX3lDaGFubmVsU2VsZWN0b3Iuc2V0VmFsdWUocHJv
cGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX3lDaGFubmVsU2VsZWN0b3ItPnNldEJhc2VWYWxJ
bnRlcm5hbDxDaGFubmVsU2VsZWN0b3JUeXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuaAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3
ICsyMSw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZFRGlzcGxhY2VtZW50TWFwLmgi
Ci0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC03MiwzMiArNzEsMjUgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGluMSgpIGNvbnN0IHsgcmV0
dXJuIG1faW4xLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIFN0cmluZyBpbjIoKSBjb25zdCB7IHJl
dHVybiBtX2luMi0+Y3VycmVudFZhbHVlKCk7IH0KLSAgICBDaGFubmVsU2VsZWN0b3JUeXBlIHhD
aGFubmVsU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3hDaGFubmVsU2VsZWN0b3IuY3VycmVu
dFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBDaGFubmVsU2VsZWN0b3JUeXBl
IHlDaGFubmVsU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3lDaGFubmVsU2VsZWN0b3IuY3Vy
cmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBDaGFubmVsU2VsZWN0b3JU
eXBlIHhDaGFubmVsU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3hDaGFubmVsU2VsZWN0b3It
PmN1cnJlbnRWYWx1ZTxDaGFubmVsU2VsZWN0b3JUeXBlPigpOyB9CisgICAgQ2hhbm5lbFNlbGVj
dG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV95Q2hhbm5lbFNlbGVj
dG9yLT5jdXJyZW50VmFsdWU8Q2hhbm5lbFNlbGVjdG9yVHlwZT4oKTsgfQogICAgIGZsb2F0IHNj
YWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZS0+Y3VycmVudFZhbHVlKCk7IH0KIAogICAgIFNW
R0FuaW1hdGVkU3RyaW5nJiBpbjFBbmltYXRlZCgpIHsgcmV0dXJuIG1faW4xOyB9CiAgICAgU1ZH
QW5pbWF0ZWRTdHJpbmcmIGluMkFuaW1hdGVkKCkgeyByZXR1cm4gbV9pbjI7IH0KLSAgICBSZWZQ
dHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4geENoYW5uZWxTZWxlY3RvckFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV94Q2hhbm5lbFNlbGVjdG9yLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiB5Q2hhbm5lbFNl
bGVjdG9yQW5pbWF0ZWQoKSB7IHJldHVybiBtX3lDaGFubmVsU2VsZWN0b3IuYW5pbWF0ZWRQcm9w
ZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
biYgeENoYW5uZWxTZWxlY3RvckFuaW1hdGVkKCkgeyByZXR1cm4gbV94Q2hhbm5lbFNlbGVjdG9y
OyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgeUNoYW5uZWxTZWxlY3RvckFuaW1hdGVk
KCkgeyByZXR1cm4gbV95Q2hhbm5lbFNlbGVjdG9yOyB9CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXIm
IHNjYWxlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3NjYWxlOyB9CiAKIHByaXZhdGU6CiAgICAgU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50Jik7CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRl
T3duZXJQcm94eUltcGw8U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5
OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1
dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0
cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQ
cm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJS
ZWdpc3RyeTxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVy
dHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQog
Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKIApAQCAtMTA4LDggKzEwMCw4IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CiAgICAg
UmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMiB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUo
dGhpcykgfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPENoYW5uZWxTZWxl
Y3RvclR5cGU+IG1feENoYW5uZWxTZWxlY3RvciB7IENIQU5ORUxfQSB9OwotICAgIFNWR0FuaW1h
dGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gbV95Q2hhbm5lbFNl
bGVjdG9yIHsgQ0hBTk5FTF9BIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1f
eENoYW5uZWxTZWxlY3RvciB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBD
SEFOTkVMX0EpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1feUNoYW5uZWxT
ZWxlY3RvciB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBDSEFOTkVMX0Ep
IH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX3NjYWxlIHsgU1ZHQW5pbWF0ZWROdW1i
ZXI6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiwxMiArMzYsMTIgQEAgaW5saW5lIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6U1ZH
RkVHYQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUs
IGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUdhdXNzaWFu
Qmx1clRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogCiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAg
ICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmluQXR0
ciwgJlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6bV9pbjE+KCk7CiAgICAgICAgIFByb3BlcnR5
UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsICZT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6Om1fc3RkRGV2aWF0aW9uWCwgJlNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6bV9zdGREZXZpYXRpb25ZPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjplZGdlTW9kZUF0dHIsIEVkZ2VNb2RlVHlwZSwg
JlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6bV9lZGdlTW9kZT4oKTsKICAgICB9KTsKIH0KIApA
QCAtNTcsMTQgKzU3LDYgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnNldFN0ZERl
dgogICAgIGludmFsaWRhdGUoKTsKIH0KIAotdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6
OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVS
ZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmVkZ2VNb2RlQXR0ciwg
RWRnZU1vZGVUeXBlLCAmU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjptX2VkZ2VNb2RlPigpOwot
fQotCiB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikgewpAQCAtODQsNyArNzYsNyBA
QCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VBdHRyCiAgICAgaWYgKG5hbWUg
PT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0cikgewogICAgICAgICBhdXRvIHByb3BlcnR5VmFsdWUg
PSBTVkdQcm9wZXJ0eVRyYWl0czxFZGdlTW9kZVR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAg
ICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9lZGdlTW9kZS5zZXRW
YWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1fZWRnZU1vZGUtPnNldEJhc2VWYWxJ
bnRlcm5hbDxFZGdlTW9kZVR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRXYXJuaW5nKCJm
ZUdhdXNzaWFuQmx1cjogcHJvYmxlbSBwYXJzaW5nIGVkZ2VNb2RlPVwiIiArIHZhbHVlICsgIlwi
LiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3BsYXllZC4iKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtOTUsNyArODcsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFy
c2VBdHRyCiAKIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChpc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKICAgICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCShyZXZp
c2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiRkVHYXVzc2lhbkJsdXIuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0
aW9uLmgiCiAjaW5jbHVkZSAiU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApAQCAtMzgsMjkgKzM3
LDIyIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgaW4xKCkgY29uc3QgeyByZXR1cm4gbV9pbjEtPmN1
cnJlbnRWYWx1ZSgpOyB9CiAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RkRGV2aWF0aW9uWC0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBmbG9hdCBzdGREZXZpYXRp
b25ZKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb25ZLT5jdXJyZW50VmFsdWUoKTsgfQot
ICAgIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZU1vZGUuY3Vy
cmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBFZGdlTW9kZVR5cGUgZWRn
ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VNb2RlLT5jdXJyZW50VmFsdWU8RWRnZU1vZGVU
eXBlPigpOyB9CiAKICAgICBTVkdBbmltYXRlZFN0cmluZyYgaW4xQW5pbWF0ZWQoKSB7IHJldHVy
biBtX2luMTsgfQogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBzdGREZXZpYXRpb25YQW5pbWF0ZWQo
KSB7IHJldHVybiBtX3N0ZERldmlhdGlvblg7IH0KICAgICBTVkdBbmltYXRlZE51bWJlciYgc3Rk
RGV2aWF0aW9uWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9zdGREZXZpYXRpb25ZOyB9Ci0gICAgUmVm
UHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IGVkZ2VNb2RlQW5pbWF0ZWQoKSB7IHJldHVybiBt
X2VkZ2VNb2RlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAg
IFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIGVkZ2VNb2RlQW5pbWF0ZWQoKSB7IHJldHVybiBtX2Vk
Z2VNb2RlOyB9CiAKIHByaXZhdGU6CiAgICAgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQ
cm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKLSAgICBzdGF0aWMgQXR0
cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkg
eyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNvbnN0IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBT
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVn
aXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5
UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1
dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtNzEsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIFJl
ZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRo
aXMpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX3N0ZERldmlhdGlvblggeyBTVkdB
bmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVy
PiBtX3N0ZERldmlhdGlvblkgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07Ci0g
ICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxFZGdlTW9kZVR5cGU+IG1fZWRnZU1v
ZGUgeyBFREdFTU9ERV9OT05FIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1f
ZWRnZU1vZGUgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgRURHRU1PREVf
Tk9ORSkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzQ2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDExIEBAIGlubGluZSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50
OjpTVkdGRU1vcnAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0
YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVN
b3JwaG9sb2d5VGFnKSk7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgCiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6OmluQXR0ciwgJlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6Om1faW4xPigpOworICAgICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpvcGVyYXRvckF0dHIs
IE1vcnBob2xvZ3lPcGVyYXRvclR5cGUsICZTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjptX3N2Z09w
ZXJhdG9yPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNW
R05hbWVzOjpyYWRpdXNBdHRyLCAmU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6bV9yYWRpdXNYLCAm
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6bV9yYWRpdXNZPigpOwogICAgIH0pOwogfQpAQCAtNTYs
MjAgKzU2LDEyIEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVzKGYKICAg
ICBpbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cmVnaXN0
ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5
KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBy
ZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBNb3JwaG9s
b2d5T3BlcmF0b3JUeXBlLCAmU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6bV9zdmdPcGVyYXRvcj4o
KTsKLX0KLQogdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmIChuYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIpIHsKICAgICAgICAgTW9ycGhvbG9n
eU9wZXJhdG9yVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8TW9ycGhvbG9n
eU9wZXJhdG9yVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlW
YWx1ZSA+IDApCi0gICAgICAgICAgICBtX3N2Z09wZXJhdG9yLnNldFZhbHVlKHByb3BlcnR5VmFs
dWUpOworICAgICAgICAgICAgbV9zdmdPcGVyYXRvci0+c2V0QmFzZVZhbEludGVybmFsPE1vcnBo
b2xvZ3lPcGVyYXRvclR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgJ
KHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiRkVNb3JwaG9sb2d5LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbi5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MywxMiArNjIsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UmFkaXVzKGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpOwogCiAgICAgU3Ry
aW5nIGluMSgpIGNvbnN0IHsgcmV0dXJuIG1faW4xLT5jdXJyZW50VmFsdWUoKTsgfQotICAgIE1v
cnBob2xvZ3lPcGVyYXRvclR5cGUgc3ZnT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3N2Z09w
ZXJhdG9yLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgTW9ycGhv
bG9neU9wZXJhdG9yVHlwZSBzdmdPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3ZnT3BlcmF0
b3ItPmN1cnJlbnRWYWx1ZTxNb3JwaG9sb2d5T3BlcmF0b3JUeXBlPigpOyB9CiAgICAgZmxvYXQg
cmFkaXVzWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzWC0+Y3VycmVudFZhbHVlKCk7IH0KICAg
ICBmbG9hdCByYWRpdXNZKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNZLT5jdXJyZW50VmFsdWUo
KTsgfQogCiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcmIGluMUFuaW1hdGVkKCkgeyByZXR1cm4gbV9p
bjE7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gc3ZnT3BlcmF0b3JBbmlt
YXRlZCgpIHsgcmV0dXJuIG1fc3ZnT3BlcmF0b3IuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgc3ZnT3BlcmF0b3JB
bmltYXRlZCgpIHsgcmV0dXJuIG1fc3ZnT3BlcmF0b3I7IH0KICAgICBTVkdBbmltYXRlZE51bWJl
ciYgcmFkaXVzWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9yYWRpdXNYOyB9CiAgICAgU1ZHQW5pbWF0
ZWROdW1iZXImIHJhZGl1c1lBbmltYXRlZCgpIHsgcmV0dXJuIG1fcmFkaXVzWTsgfQogCkBAIC05
Nyw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0
ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJl
Z2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZH
QW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRp
b25BdHRyaWJ1dGU8TW9ycGhvbG9neU9wZXJhdG9yVHlwZT4gbV9zdmdPcGVyYXRvciB7IEZFTU9S
UEhPTE9HWV9PUEVSQVRPUl9FUk9ERSB9OworICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9u
PiBtX3N2Z09wZXJhdG9yIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIEZF
TU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+
IG1fcmFkaXVzWCB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsKICAgICBSZWY8
U1ZHQW5pbWF0ZWROdW1iZXI+IG1fcmFkaXVzWSB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUo
dGhpcykgfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEzICszNCwxNCBA
QCBpbmxpbmUgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6U1ZHRkVUdXJiCiAgICAgOiBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZykpOwotICAgIHJlZ2lz
dGVyQXR0cmlidXRlcygpOwotICAgIAorCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIFByb3BlcnR5
UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyLCAm
U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6bV9iYXNlRnJlcXVlbmN5WCwgJlNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQ6Om1fYmFzZUZyZXF1ZW5jeVk+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6
OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyLCAmU1ZHRkVUdXJidWxl
bmNlRWxlbWVudDo6bV9udW1PY3RhdmVzPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5Ojpy
ZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpzZWVkQXR0ciwgJlNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQ6Om1fc2VlZD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0
eTxTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLCBTVkdTdGl0Y2hPcHRpb25zLCAmU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudDo6bV9zdGl0Y2hUaWxlcz4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3Ry
eTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6dHlwZUF0dHIsIFR1cmJ1bGVuY2VUeXBlLCAm
U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6bV90eXBlPigpOwogICAgIH0pOwogfQogCkBAIC00OSwy
OCArNTAsMTkgQEAgUmVmPFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ+IFNWR0ZFVHVyYnVsZQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpKTsKIH0KIAotdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpyZWdpc3RlckF0dHJp
YnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAg
ICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIsIFNWR1N0aXRjaE9w
dGlvbnMsICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjptX3N0aXRjaFRpbGVzPigpOwotICAgIHJl
Z2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp0eXBlQXR0ciwgVHVyYnVsZW5jZVR5
cGUsICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjptX3R5cGU+KCk7Ci19Ci0KIHZvaWQgU1ZHRkVU
dXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1l
czo6dHlwZUF0dHIpIHsKICAgICAgICAgVHVyYnVsZW5jZVR5cGUgcHJvcGVydHlWYWx1ZSA9IFNW
R1Byb3BlcnR5VHJhaXRzPFR1cmJ1bGVuY2VUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAg
ICAgIGlmIChwcm9wZXJ0eVZhbHVlICE9IFR1cmJ1bGVuY2VUeXBlOjpVbmtub3duKQotICAgICAg
ICAgICAgbV90eXBlLnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgbV90eXBl
LT5zZXRCYXNlVmFsSW50ZXJuYWw8VHVyYnVsZW5jZVR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnN0aXRjaFRp
bGVzQXR0cikgewogICAgICAgICBTVkdTdGl0Y2hPcHRpb25zIHByb3BlcnR5VmFsdWUgPSBTVkdQ
cm9wZXJ0eVRyYWl0czxTVkdTdGl0Y2hPcHRpb25zPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAg
ICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fc3RpdGNoVGlsZXMuc2V0
VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX3N0aXRjaFRpbGVzLT5zZXRCYXNl
VmFsSW50ZXJuYWw8U1ZHU3RpdGNoT3B0aW9ucz4ocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTExNiw3ICsxMDgsNyBAQCBib29sIFNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQ6OnNldEZpbHRlckVmCiAKIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAo
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQo
YXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcg
KzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRkVUdXJidWxlbmNlLmgiCi0jaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDAs
MzIgKzk5LDI1IEBAIHB1YmxpYzoKICAgICBmbG9hdCBiYXNlRnJlcXVlbmN5WSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFzZUZyZXF1ZW5jeVktPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgaW50IG51bU9j
dGF2ZXMoKSBjb25zdCB7IHJldHVybiBtX251bU9jdGF2ZXMtPmN1cnJlbnRWYWx1ZSgpOyB9CiAg
ICAgZmxvYXQgc2VlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VlZC0+Y3VycmVudFZhbHVlKCk7IH0K
LSAgICBTVkdTdGl0Y2hPcHRpb25zIHN0aXRjaFRpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGl0
Y2hUaWxlcy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFR1cmJ1
bGVuY2VUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUuY3VycmVudFZhbHVlKGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdTdGl0Y2hPcHRpb25zIHN0aXRjaFRpbGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGl0Y2hUaWxlcy0+Y3VycmVudFZhbHVlPFNWR1N0aXRjaE9wdGlv
bnM+KCk7IH0KKyAgICBUdXJidWxlbmNlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
LT5jdXJyZW50VmFsdWU8VHVyYnVsZW5jZVR5cGU+KCk7IH0KIAogICAgIFNWR0FuaW1hdGVkTnVt
YmVyJiBiYXNlRnJlcXVlbmN5WEFuaW1hdGVkKCkgeyByZXR1cm4gbV9iYXNlRnJlcXVlbmN5WDsg
fQogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBiYXNlRnJlcXVlbmN5WUFuaW1hdGVkKCkgeyByZXR1
cm4gbV9iYXNlRnJlcXVlbmN5WTsgfQogICAgIFNWR0FuaW1hdGVkSW50ZWdlciYgbnVtT2N0YXZl
c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9udW1PY3RhdmVzOyB9CiAgICAgU1ZHQW5pbWF0ZWROdW1i
ZXImIHNlZWRBbmltYXRlZCgpIHsgcmV0dXJuIG1fc2VlZDsgfQotICAgIFJlZlB0cjxTVkdBbmlt
YXRlZEVudW1lcmF0aW9uPiBzdGl0Y2hUaWxlc0FuaW1hdGVkKCkgeyByZXR1cm4gbV9zdGl0Y2hU
aWxlcy5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQ
dHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gdHlwZUFuaW1hdGVkKCkgeyByZXR1cm4gbV90eXBl
LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1h
dGVkRW51bWVyYXRpb24mIHN0aXRjaFRpbGVzQW5pbWF0ZWQoKSB7IHJldHVybiBtX3N0aXRjaFRp
bGVzOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgdHlwZUFuaW1hdGVkKCkgeyByZXR1
cm4gbV90eXBlOyB9CiAKIHByaXZhdGU6CiAgICAgU1ZHRkVUdXJidWxlbmNlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVy
UHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwotICAgIHN0YXRpYyBBdHRy
aWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7
IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRl
T3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNW
R1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0
cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVn
aXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtMTM4LDggKzEzMCw4IEBAIHByaXZhdGU6CiAgICAgUmVm
PFNWR0FuaW1hdGVkTnVtYmVyPiBtX2Jhc2VGcmVxdWVuY3lZIHsgU1ZHQW5pbWF0ZWROdW1iZXI6
OmNyZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEludGVnZXI+IG1fbnVtT2N0YXZl
cyB7IFNWR0FuaW1hdGVkSW50ZWdlcjo6Y3JlYXRlKHRoaXMsIDEpIH07CiAgICAgUmVmPFNWR0Fu
aW1hdGVkTnVtYmVyPiBtX3NlZWQgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07
Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdTdGl0Y2hPcHRpb25zPiBt
X3N0aXRjaFRpbGVzIHsgU1ZHX1NUSVRDSFRZUEVfTk9TVElUQ0ggfTsKLSAgICBTVkdBbmltYXRl
ZEVudW1lcmF0aW9uQXR0cmlidXRlPFR1cmJ1bGVuY2VUeXBlPiBtX3R5cGUgeyBUdXJidWxlbmNl
VHlwZTo6VHVyYnVsZW5jZSB9OworICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3N0
aXRjaFRpbGVzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR19TVElU
Q0hUWVBFX05PU1RJVENIKSB9OworICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3R5
cGUgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgVHVyYnVsZW5jZVR5cGU6
OlR1cmJ1bGVuY2UpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDM0NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUsNyArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdl
YmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC00Nyw2ICs0NywxMiBAQCBpbmxpbmUgU1ZHRmlsdGVyRWxlbWVudDo6U1ZHRmlsdGVy
RWxlbWVuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90
IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3ZXJlIHNw
ZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmlsdGVyVGFnKSk7CiAg
ICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVy
dHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHRmlsdGVyRWxlbWVudDo6bV9maWx0ZXJVbml0
cz4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1l
czo6cHJpbWl0aXZlVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHRmls
dGVyRWxlbWVudDo6bV9wcmltaXRpdmVVbml0cz4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR0Zp
bHRlckVsZW1lbnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC01OSw4ICs2NSw2IEBAIHZvaWQgU1ZH
RmlsdGVyRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGUKICAgICBhdXRvJiByZWdpc3RyeSA9IGF0
dHJpYnV0ZVJlZ2lzdHJ5KCk7CiAgICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6ZmlsdGVy
VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHRmlsdGVyRWxlbWVudDo6
bV9maWx0ZXJVbml0cz4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1l
czo6cHJpbWl0aXZlVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHRmls
dGVyRWxlbWVudDo6bV9wcmltaXRpdmVVbml0cz4oKTsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0
dHJpYnV0ZTxTVkdOYW1lczo6eEF0dHIsICZTVkdGaWx0ZXJFbGVtZW50OjptX3g+KCk7CiAgICAg
cmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnlBdHRyLCAmU1ZHRmlsdGVyRWxl
bWVudDo6bV95PigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp3
aWR0aEF0dHIsICZTVkdGaWx0ZXJFbGVtZW50OjptX3dpZHRoPigpOwpAQCAtNzQsMTEgKzc4LDEx
IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY28KICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyKSB7CiAgICAgICAgIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5
VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9maWx0ZXJVbml0cy5zZXRWYWx1ZShwcm9wZXJ0eVZh
bHVlKTsKKyAgICAgICAgICAgIG1fZmlsdGVyVW5pdHMtPnNldEJhc2VWYWxJbnRlcm5hbDxTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICB9IGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0cikgewogICAgICAgICBTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9w
ZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fcHJpbWl0aXZlVW5pdHMuc2V0VmFsdWUocHJv
cGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX3ByaW1pdGl2ZVVuaXRzLT5zZXRCYXNlVmFsSW50
ZXJuYWw8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgfSBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKICAgICAgICAgbV94LnNldFZhbHVlKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJv
cikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsy
Myw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTM3LDE1
ICszNiwxNSBAQCBjbGFzcyBTVkdGaWx0ZXJFbGVtZW50IGZpbmFsIDogcHVibGljIFNWCiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxTVkdGaWx0ZXJFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGZp
bHRlclVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJVbml0cy5jdXJyZW50VmFsdWUoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJp
bWl0aXZlVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRzLmN1cnJlbnRWYWx1
ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlw
ZSBmaWx0ZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyVW5pdHMtPmN1cnJlbnRWYWx1
ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPigpOyB9CisgICAgU1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZSBwcmltaXRpdmVVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdHMt
PmN1cnJlbnRWYWx1ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPigpOyB9CiAgICAgY29uc3Qg
U1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3guY3VycmVudFZhbHVlKGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0
IHsgcmV0dXJuIG1feS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAg
IGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGguY3Vy
cmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBjb25zdCBTVkdMZW5ndGhW
YWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQuY3VycmVudFZhbHVlKGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9u
PiBmaWx0ZXJVbml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9maWx0ZXJVbml0cy5hbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbj4gcHJpbWl0aXZlVW5pdHNBbmltYXRlZCgpIHsgcmV0dXJuIG1fcHJpbWl0aXZl
VW5pdHMuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbiYgZmlsdGVyVW5pdHNBbmltYXRlZCgpIHsgcmV0dXJuIG1fZmls
dGVyVW5pdHM7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBwcmltaXRpdmVVbml0c0Fu
aW1hdGVkKCkgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0czsgfQogICAgIFJlZlB0cjxTVkdBbmlt
YXRlZExlbmd0aD4geEFuaW1hdGVkKCkgeyByZXR1cm4gbV94LmFuaW1hdGVkUHJvcGVydHkoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geUFu
aW1hdGVkKCkgeyByZXR1cm4gbV95LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gd2lkdGhBbmltYXRlZCgpIHsg
cmV0dXJuIG1fd2lkdGguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
CkBAIC04Miw4ICs4MSw4IEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1f
YXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3By
b3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRy
aWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9maWx0ZXJVbml0cyB7IFNWR1VuaXRU
eXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCB9OwotICAgIFNWR0FuaW1hdGVk
RW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9wcmltaXRp
dmVVbml0cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSB9Owor
ICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX2ZpbHRlclVuaXRzIHsgU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9P
QkpFQ1RCT1VORElOR0JPWCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9w
cmltaXRpdmVVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdV
bml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpIH07CiAgICAgU1ZHQW5pbWF0
ZWRMZW5ndGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIgfTsKICAgICBT
VkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIg
fTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3dpZHRoIHsgTGVuZ3RoTW9kZVdp
ZHRoLCAiMTIwJSIgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTIgQEAgU1ZHR3JhZGll
bnRFbGVtZW50OjpTVkdHcmFkaWVudEVsZW1lbnQoYwogICAgICwgU1ZHVVJJUmVmZXJlbmNlKHRo
aXMpCiB7CiAgICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAg
ICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6c3ByZWFkTWV0
aG9kQXR0ciwgU1ZHU3ByZWFkTWV0aG9kVHlwZSwgJlNWR0dyYWRpZW50RWxlbWVudDo6bV9zcHJl
YWRNZXRob2Q+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8
U1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAm
U1ZHR3JhZGllbnRFbGVtZW50OjptX2dyYWRpZW50VW5pdHM+KCk7CisgICAgfSk7CiB9CiAKIHZv
aWQgU1ZHR3JhZGllbnRFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQpAQCAtNTIsOCArNTgs
NiBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1CiAgICAgYXV0byYg
cmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwogICAgIGlmICghcmVnaXN0cnkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZH
TmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIsIFNWR1NwcmVhZE1ldGhvZFR5cGUsICZTVkdHcmFkaWVu
dEVsZW1lbnQ6Om1fc3ByZWFkTWV0aG9kPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlw
ZSwgJlNWR0dyYWRpZW50RWxlbWVudDo6bV9ncmFkaWVudFVuaXRzPigpOwogICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIsICZTVkdH
cmFkaWVudEVsZW1lbnQ6Om1fZ3JhZGllbnRUcmFuc2Zvcm0+KCk7CiB9CiAKQEAgLTYyLDcgKzY2
LDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKAogICAgIGlmIChu
YW1lID09IFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0cikgewogICAgICAgICBhdXRvIHByb3Bl
cnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6
ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAg
ICAgICAgIG1fZ3JhZGllbnRVbml0cy5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAg
ICAgIG1fZ3JhZGllbnRVbml0cy0+c2V0QmFzZVZhbEludGVybmFsPFNWR1VuaXRUeXBlczo6U1ZH
VW5pdFR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03
Nyw3ICs4MSw3IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSgKICAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0cikgewogICAgICAgICBhdXRv
IHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdTcHJlYWRNZXRob2RUeXBlPjo6
ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAg
ICAgICAgIG1fc3ByZWFkTWV0aG9kLnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAg
ICAgbV9zcHJlYWRNZXRob2QtPnNldEJhc2VWYWxJbnRlcm5hbDxTVkdTcHJlYWRNZXRob2RUeXBl
Pihwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gMjQzNDY2KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw3ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkdyYWRpZW50LmgiCi0jaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC04OSwxMiArODgsMTIgQEAgcHVibGljOgogCiAg
ICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdH
cmFkaWVudEVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IFNWR1VSSVJlZmVyZW5jZT47CiAKLSAgICBTVkdTcHJlYWRNZXRob2RUeXBlIHNwcmVhZE1ldGhv
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ByZWFkTWV0aG9kLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9Ci0gICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBncmFkaWVudFVu
aXRzKCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFVuaXRzLmN1cnJlbnRWYWx1ZShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHU3ByZWFkTWV0aG9kVHlwZSBzcHJlYWRNZXRob2Qo
KSBjb25zdCB7IHJldHVybiBtX3NwcmVhZE1ldGhvZC0+Y3VycmVudFZhbHVlPFNWR1NwcmVhZE1l
dGhvZFR5cGU+KCk7IH0KKyAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGdyYWRpZW50VW5p
dHMoKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50VW5pdHMtPmN1cnJlbnRWYWx1ZTxTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlPigpOyB9CiAgICAgY29uc3QgU1ZHVHJhbnNmb3JtTGlzdFZhbHVl
cyYgZ3JhZGllbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50VHJhbnNmb3Jt
LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAKLSAgICBSZWZQdHI8U1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbj4gc3ByZWFkTWV0aG9kQW5pbWF0ZWQoKSB7IHJldHVybiBtX3Nw
cmVhZE1ldGhvZC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gZ3JhZGllbnRVbml0c0FuaW1hdGVkKCkg
eyByZXR1cm4gbV9ncmFkaWVudFVuaXRzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIHNwcmVhZE1ldGhvZEFuaW1h
dGVkKCkgeyByZXR1cm4gbV9zcHJlYWRNZXRob2Q7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0
aW9uJiBncmFkaWVudFVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX2dyYWRpZW50VW5pdHM7IH0K
ICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiBncmFkaWVudFRyYW5zZm9ybUFu
aW1hdGVkKCkgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybS5hbmltYXRlZFByb3BlcnR5KGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KIAogcHJvdGVjdGVkOgpAQCAtMTE5LDggKzExOCw4IEBA
IHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94
eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAq
dGhpcyB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHU3ByZWFkTWV0
aG9kVHlwZT4gbV9zcHJlYWRNZXRob2QgeyBTVkdTcHJlYWRNZXRob2RQYWQgfTsKLSAgICBTVkdB
bmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+IG1f
Z3JhZGllbnRVbml0cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElO
R0JPWCB9OworICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3NwcmVhZE1ldGhvZCB7
IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdTcHJlYWRNZXRob2RQYWQp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fZ3JhZGllbnRVbml0cyB7IFNW
R0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklU
X1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIH07CiAgICAgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
QXR0cmlidXRlIG1fZ3JhZGllbnRUcmFuc2Zvcm07CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDEsNiArNDEsMTIgQEAgaW5saW5lIFNWR01h
cmtlckVsZW1lbnQ6OlNWR01hcmtlckVsZW1lbgogICAgIC8vIFNwZWM6IElmIHRoZSBtYXJrZXJX
aWR0aC9tYXJrZXJIZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3Qg
aXMgYXMgaWYgYSB2YWx1ZSBvZiAiMyIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6Om1hcmtlclRhZykpOwogICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwor
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVy
dHk8U1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwgU1ZHTWFya2VyVW5pdHNUeXBlLCAmU1ZHTWFy
a2VyRWxlbWVudDo6bV9tYXJrZXJVbml0cz4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6
cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6b3JpZW50QXR0ciwgJlNWR01hcmtlckVsZW1lbnQ6
Om1fb3JpZW50QW5nbGUsICZTVkdNYXJrZXJFbGVtZW50OjptX29yaWVudFR5cGU+KCk7CisgICAg
fSk7CiB9CiAKIFJlZjxTVkdNYXJrZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNDgs
MTggKzU0LDYgQEAgUmVmPFNWR01hcmtlckVsZW1lbnQ+IFNWR01hcmtlckVsZW1lbnQ6OgogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR01hcmtlckVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRUeXBl
SWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
c19pZGVudGlmaWVyKCJTVkdPcmllbnRUeXBlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKLX0KLQotY29uc3QgQXRvbWljU3Ry
aW5nJiBTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRBbmdsZUlkZW50aWZpZXIoKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHT3JpZW50
QW5nbGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4g
c19pZGVudGlmaWVyOwotfQotCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHTWFya2VyRWxlbWVudDo6dmll
d0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIFNWR0ZpdFRvVmlld0JveDo6dmlld0JveFRvVmlld1RyYW5zZm9y
bSh2aWV3Qm94KCksIHByZXNlcnZlQXNwZWN0UmF0aW8oKSwgdmlld1dpZHRoLCB2aWV3SGVpZ2h0
KTsKQEAgLTc0LDEwICs2OCw2IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6cmVnaXN0ZXJBdHRy
aWJ1dGUKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cmVmWUF0dHIs
ICZTVkdNYXJrZXJFbGVtZW50OjptX3JlZlk+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRy
aWJ1dGU8U1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgJlNWR01hcmtlckVsZW1lbnQ6Om1fbWFy
a2VyV2lkdGg+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Om1h
cmtlckhlaWdodEF0dHIsICZTVkdNYXJrZXJFbGVtZW50OjptX21hcmtlckhlaWdodD4oKTsKLSAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLCBT
VkdNYXJrZXJVbml0c1R5cGUsICZTVkdNYXJrZXJFbGVtZW50OjptX21hcmtlclVuaXRzPigpOwot
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlKFNWR0FuaW1hdGVkQ3VzdG9tQW5nbGVBdHRy
aWJ1dGVBY2Nlc3Nvcjo6c2luZ2xldG9uPFNWR05hbWVzOjpvcmllbnRBdHRyLAotICAgICAgICAm
U1ZHTWFya2VyRWxlbWVudDo6b3JpZW50QW5nbGVJZGVudGlmaWVyLCAmU1ZHTWFya2VyRWxlbWVu
dDo6bV9vcmllbnRBbmdsZSwKLSAgICAgICAgJlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGVJ
ZGVudGlmaWVyLCAmU1ZHTWFya2VyRWxlbWVudDo6bV9vcmllbnRUeXBlPigpKTsKIH0KIAogdm9p
ZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtODUsMTcgKzc1LDE0IEBAIHZvaWQg
U1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY28KICAgICBpZiAobmFtZSA9PSBTVkdO
YW1lczo6bWFya2VyVW5pdHNBdHRyKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNW
R1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlclVuaXRzVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwog
ICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAgICAgICAgICBtX21hcmtlclVuaXRz
LnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgbV9tYXJrZXJVbml0cy0+c2V0
QmFzZVZhbEludGVybmFsPFNWR01hcmtlclVuaXRzVHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6b3JpZW50QXR0
cikgewotICAgICAgICBTVkdBbmdsZVZhbHVlIGFuZ2xlOwotICAgICAgICBhdXRvIG9yaWVudFR5
cGUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6ZnJvbVN0cmluZyh2
YWx1ZSwgYW5nbGUpOwotICAgICAgICBpZiAob3JpZW50VHlwZSA+IDApCi0gICAgICAgICAgICBt
X29yaWVudFR5cGUuc2V0VmFsdWUob3JpZW50VHlwZSk7Ci0gICAgICAgIGlmIChvcmllbnRUeXBl
ID09IFNWR01hcmtlck9yaWVudEFuZ2xlKQotICAgICAgICAgICAgbV9vcmllbnRBbmdsZS5zZXRW
YWx1ZShhbmdsZSk7CisgICAgICAgIGF1dG8gcGFpciA9IFNWR1Byb3BlcnR5VHJhaXRzPHN0ZDo6
cGFpcjxTVkdBbmdsZVZhbHVlLCBTVkdNYXJrZXJPcmllbnRUeXBlPj46OmZyb21TdHJpbmcodmFs
dWUpOworICAgICAgICBtX29yaWVudEFuZ2xlLT5zZXRCYXNlVmFsSW50ZXJuYWwocGFpci5maXJz
dCk7CisgICAgICAgIG1fb3JpZW50VHlwZS0+c2V0QmFzZVZhbEludGVybmFsKHBhaXIuc2Vjb25k
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTUxLDE0ICsxMzgsOSBAQCB2b2lkIFNW
R01hcmtlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjCiAKIHZvaWQgU1ZHTWFya2VyRWxlbWVu
dDo6c2V0T3JpZW50KFNWR01hcmtlck9yaWVudFR5cGUgb3JpZW50VHlwZSwgY29uc3QgU1ZHQW5n
bGVWYWx1ZSYgYW5nbGUpCiB7Ci0gICAgbV9vcmllbnRUeXBlLnNldFZhbHVlKG9yaWVudFR5cGUp
OwotICAgIG1fb3JpZW50QW5nbGUuc2V0VmFsdWUoYW5nbGUpOwotCi0gICAgLy8gTWFyayBvcmll
bnRBdHRyIGRpcnR5IC0gdGhlIG5leHQgWE1MIERPTSBhY2Nlc3Mgb2YgdGhhdCBhdHRyaWJ1dGUg
a2lja3MgaW4gc3luY2hyb25pemF0aW9uLgotICAgIG1fb3JpZW50QW5nbGUuc2V0U2hvdWxkU3lu
Y2hyb25pemUodHJ1ZSk7Ci0gICAgbV9vcmllbnRUeXBlLnNldFNob3VsZFN5bmNocm9uaXplKHRy
dWUpOwotICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7Ci0gICAgc3ZnQXR0cmlidXRlQ2hh
bmdlZChTVkdOYW1lczo6b3JpZW50QXR0cik7CisgICAgbV9vcmllbnRUeXBlLT5zZXRCYXNlVmFs
SW50ZXJuYWwob3JpZW50VHlwZSk7CisgICAgbV9vcmllbnRBbmdsZS0+c2V0QmFzZVZhbEludGVy
bmFsKGFuZ2xlKTsKKyAgICBtX29yaWVudEFuZ2xlLT5iYXNlVmFsKCktPmNvbW1pdENoYW5nZSgp
OwogfQogCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQXV0bygpCkBAIC0xNjgs
NyArMTUwLDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0F1dG8oKQogCiB2
b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQW5nbGUoU1ZHQW5nbGUmIGFuZ2xlKQog
ewotICAgIHNldE9yaWVudChTVkdNYXJrZXJPcmllbnRBbmdsZSwgYW5nbGUucHJvcGVydHlSZWZl
cmVuY2UoKSk7CisgICAgc2V0T3JpZW50KFNWR01hcmtlck9yaWVudEFuZ2xlLCBhbmdsZS52YWx1
ZSgpKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hcmtlckVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCShyZXZp
c2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRBbmdsZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24u
aCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQu
aCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC01OSwxNyAr
NTcsMTcgQEAgcHVibGljOgogICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiByZWZZKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWZZLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAg
ICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIG1hcmtlcldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9t
YXJrZXJXaWR0aC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIGNv
bnN0IFNWR0xlbmd0aFZhbHVlJiBtYXJrZXJIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX21hcmtl
ckhlaWdodC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFNWR01h
cmtlclVuaXRzVHlwZSBtYXJrZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2VyVW5pdHMu
Y3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdBbmds
ZVZhbHVlJiBvcmllbnRBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50QW5nbGUuY3VycmVu
dFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBTVkdNYXJrZXJPcmllbnRUeXBl
IG9yaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX29yaWVudFR5cGUuY3VycmVudFZhbHVlKGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdNYXJrZXJVbml0c1R5cGUgbWFya2VyVW5p
dHMoKSBjb25zdCB7IHJldHVybiBtX21hcmtlclVuaXRzLT5jdXJyZW50VmFsdWU8U1ZHTWFya2Vy
VW5pdHNUeXBlPigpOyB9CisgICAgY29uc3QgU1ZHQW5nbGVWYWx1ZSYgb3JpZW50QW5nbGUoKSBj
b25zdCB7IHJldHVybiBtX29yaWVudEFuZ2xlLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIFNWR01h
cmtlck9yaWVudFR5cGUgb3JpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50VHlwZS0+
Y3VycmVudFZhbHVlPFNWR01hcmtlck9yaWVudFR5cGU+KCk7IH0KIAogICAgIFJlZlB0cjxTVkdB
bmltYXRlZExlbmd0aD4gcmVmWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9yZWZYLmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZExl
bmd0aD4gcmVmWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9yZWZZLmFuaW1hdGVkUHJvcGVydHkoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gbWFy
a2VyV2lkdGhBbmltYXRlZCgpIHsgcmV0dXJuIG1fbWFya2VyV2lkdGguYW5pbWF0ZWRQcm9wZXJ0
eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtYXJrZXJIZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1fbWFya2VySGVpZ2h0LmFuaW1hdGVk
UHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRl
ZEVudW1lcmF0aW9uPiBtYXJrZXJVbml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9tYXJrZXJVbml0
cy5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRBbmdsZT4gb3JpZW50QW5nbGVBbmltYXRlZCgpIHsgcmV0dXJuIG1fb3JpZW50
QW5nbGUuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVm
UHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG9yaWVudFR5cGVBbmltYXRlZCgpIHsgcmV0dXJu
IG1fb3JpZW50VHlwZS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
KyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBtYXJrZXJVbml0c0FuaW1hdGVkKCkgeyByZXR1
cm4gbV9tYXJrZXJVbml0czsgfQorICAgIFNWR0FuaW1hdGVkQW5nbGUmIG9yaWVudEFuZ2xlQW5p
bWF0ZWQoKSB7IHJldHVybiBtX29yaWVudEFuZ2xlOyB9CisgICAgUmVmPFNWR0FuaW1hdGVkRW51
bWVyYXRpb24+IG9yaWVudFR5cGVBbmltYXRlZCgpIHsgcmV0dXJuIG1fb3JpZW50VHlwZS5jb3B5
UmVmKCk7IH0KIAogcHJpdmF0ZToKICAgICBTVkdNYXJrZXJFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtMTAxLDQzICs5OSwxNiBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBzZXRPcmllbnQoU1ZHTWFya2VyT3JpZW50VHlwZSwgY29uc3QgU1ZHQW5nbGVWYWx1ZSYp
OwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3JpZW50VHlwZUlkZW50aWZpZXIo
KTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBvcmllbnRBbmdsZUlkZW50aWZpZXIo
KTsKLQogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRo
aXMgfTsKIAotICAgIGNsYXNzIFNWR0FuaW1hdGVkQ3VzdG9tT3JpZW50VHlwZUF0dHJpYnV0ZSA6
IHB1YmxpYyBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPFNWR01hcmtlck9yaWVudFR5
cGU+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZEVudW1l
cmF0aW9uQXR0cmlidXRlPFNWR01hcmtlck9yaWVudFR5cGU+OwotCi0gICAgICAgIFNWR0FuaW1h
dGVkQ3VzdG9tT3JpZW50VHlwZUF0dHJpYnV0ZShTVkdNYXJrZXJPcmllbnRUeXBlIGJhc2VWYWx1
ZSkKLSAgICAgICAgICAgIDogQmFzZShiYXNlVmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgfQot
ICAgICAgICB2b2lkIHN5bmNocm9uaXplKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGF1dG9TdHJpbmcgPSBNQUtFX1NUQVRJQ19TVFJJTkdf
SU1QTCgiYXV0byIpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gYXV0b1N0YXJ0UmV2ZXJzZVN0cmluZyA9IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJh
dXRvLXN0YXJ0LXJldmVyc2UiKTsKLQotICAgICAgICAgICAgaWYgKCFzaG91bGRTeW5jaHJvbml6
ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmICh2YWx1ZSgpID09
IFNWR01hcmtlck9yaWVudEF1dG8pCi0gICAgICAgICAgICAgICAgZWxlbWVudC5zZXRTeW5jaHJv
bml6ZWRMYXp5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGF1dG9TdHJpbmcuZ2V0KCkpOwotICAg
ICAgICAgICAgZWxzZSBpZiAodmFsdWUoKSA9PSBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZl
cnNlKQotICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0U3luY2hyb25pemVkTGF6eUF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lLCBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nLmdldCgpKTsKLSAgICAgICAg
fQotICAgIH07Ci0KLSAgICB1c2luZyBTVkdBbmltYXRlZEN1c3RvbUFuZ2xlQXR0cmlidXRlQWNj
ZXNzb3IgPSBTVkdBbmltYXRlZFBhaXJBdHRyaWJ1dGVBY2Nlc3NvcjxTVkdNYXJrZXJFbGVtZW50
LCBTVkdBbmltYXRlZEFuZ2xlQXR0cmlidXRlLCBBbmltYXRlZEFuZ2xlLCBTVkdBbmltYXRlZEN1
c3RvbU9yaWVudFR5cGVBdHRyaWJ1dGUsIEFuaW1hdGVkRW51bWVyYXRpb24+OwotCiAgICAgUHJv
cGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlIG1fcmVmWCB7IExlbmd0aE1vZGVXaWR0aCB9OwogICAgIFNWR0Fu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fcmVmWSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBT
VkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX21hcmtlcldpZHRoIHsgTGVuZ3RoTW9kZVdpZHRo
LCAiMyIgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX21hcmtlckhlaWdodCB7
IExlbmd0aE1vZGVIZWlnaHQsICIzIiB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRy
aWJ1dGU8U1ZHTWFya2VyVW5pdHNUeXBlPiBtX21hcmtlclVuaXRzIHsgU1ZHTWFya2VyVW5pdHNT
dHJva2VXaWR0aCB9OwotICAgIFNWR0FuaW1hdGVkQW5nbGVBdHRyaWJ1dGUgbV9vcmllbnRBbmds
ZTsKLSAgICBTVkdBbmltYXRlZEN1c3RvbU9yaWVudFR5cGVBdHRyaWJ1dGUgbV9vcmllbnRUeXBl
IHsgU1ZHTWFya2VyT3JpZW50QW5nbGUgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bj4gbV9tYXJrZXJVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBT
VkdNYXJrZXJVbml0c1N0cm9rZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZEFuZ2xlPiBt
X29yaWVudEFuZ2xlIHsgU1ZHQW5pbWF0ZWRBbmdsZTo6Y3JlYXRlKHRoaXMpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkT3JpZW50VHlwZT4gbV9vcmllbnRUeXBlIHsgU1ZHQW5pbWF0ZWRPcmllbnRU
eXBlOjpjcmVhdGUodGhpcywgU1ZHTWFya2VyT3JpZW50QW5nbGUpIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyVHlwZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyVHlwZXMuaAkocmV2
aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlclR5cGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAx
OSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC03NSwxNyArNzUsMzIgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNW
R01hcmtlclVuaXRzVAogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZH
TWFya2VyT3JpZW50VHlwZT4geworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXV0b1N0cmluZygp
CisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhdXRv
U3RyaW5nID0gTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImF1dG8iKTsKKyAgICAgICAgcmV0dXJu
IGF1dG9TdHJpbmc7CisgICAgfQorICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXV0b1N0YXJ0UmV2
ZXJzZVN0cmluZygpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nID0gTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwo
ImF1dG8tc3RhcnQtcmV2ZXJzZSIpOworICAgICAgICByZXR1cm4gYXV0b1N0YXJ0UmV2ZXJzZVN0
cmluZzsKKyAgICB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJl
dHVybiBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNlOyB9Ci0gICAgc3RhdGljIFNWR01h
cmtlck9yaWVudFR5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlLCBTVkdBbmdsZVZh
bHVlJiBhbmdsZSkKKyAgICBzdGF0aWMgU1ZHTWFya2VyT3JpZW50VHlwZSBmcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlID09ICJhdXRvIikK
KyAgICAgICAgaWYgKHN0cmluZyA9PSBhdXRvU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4g
U1ZHTWFya2VyT3JpZW50QXV0bzsKLSAgICAgICAgaWYgKHZhbHVlID09ICJhdXRvLXN0YXJ0LXJl
dmVyc2UiKQorICAgICAgICBpZiAoc3RyaW5nID09IGF1dG9TdGFydFJldmVyc2VTdHJpbmcoKSkK
ICAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNlOwotICAg
ICAgICBhdXRvIHNldFZhbHVlUmVzdWx0ID0gYW5nbGUuc2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7
Ci0gICAgICAgIGlmIChzZXRWYWx1ZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAg
IHJldHVybiBTVkdNYXJrZXJPcmllbnRVbmtub3duOwotICAgICAgICByZXR1cm4gU1ZHTWFya2Vy
T3JpZW50QW5nbGU7CisgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRVbmtub3duOworICAg
IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFNWR01hcmtlck9yaWVudFR5cGUgdHlwZSkK
KyAgICB7CisgICAgICAgIGlmICh0eXBlID09IFNWR01hcmtlck9yaWVudEF1dG8pCisgICAgICAg
ICAgICByZXR1cm4gYXV0b1N0cmluZygpOworICAgICAgICBpZiAodHlwZSA9PSBTVkdNYXJrZXJP
cmllbnRBdXRvU3RhcnRSZXZlcnNlKQorICAgICAgICAgICAgcmV0dXJuIGF1dG9TdGFydFJldmVy
c2VTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQogfTsKIApA
QCAtOTMsMTggKzEwOCwxOCBAQCB0ZW1wbGF0ZTw+CiBpbmxpbmUgdW5zaWduZWQgU1ZHSURMRW51
bUxpbWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6aGlnaGVzdEV4cG9zZWRFbnVtVmFsdWUoKSB7
IHJldHVybiBTVkdNYXJrZXJPcmllbnRBbmdsZTsgfQogCiB0ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZH
UHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIHVuc2lnbmVkPj4gewotICAg
IHN0YXRpYyBzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5zaWduZWQ+IGluaXRpYWxWYWx1ZSgp
IHsgcmV0dXJuIHsgfTsgfQotICAgIHN0YXRpYyBzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5z
aWduZWQ+IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdHJ1Y3QgU1ZHUHJvcGVy
dHlUcmFpdHM8c3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIFNWR01hcmtlck9yaWVudFR5cGU+PiB7
CisgICAgc3RhdGljIHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCBTVkdNYXJrZXJPcmllbnRUeXBl
PiBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKICAgICAgICAgU1ZHQW5n
bGVWYWx1ZSBhbmdsZTsKLSAgICAgICAgU1ZHTWFya2VyT3JpZW50VHlwZSBvcmllbnRUeXBlID0g
U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46OmZyb21TdHJpbmcoc3RyaW5n
LCBhbmdsZSk7Ci0gICAgICAgIGlmIChvcmllbnRUeXBlICE9IFNWR01hcmtlck9yaWVudEFuZ2xl
KQotICAgICAgICAgICAgYW5nbGUgPSB7IH07Ci0gICAgICAgIHJldHVybiBzdGQ6OnBhaXI8U1ZH
QW5nbGVWYWx1ZSwgdW5zaWduZWQ+KGFuZ2xlLCBvcmllbnRUeXBlKTsKKyAgICAgICAgU1ZHTWFy
a2VyT3JpZW50VHlwZSBvcmllbnRUeXBlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3Jp
ZW50VHlwZT46OmZyb21TdHJpbmcoc3RyaW5nKTsKKyAgICAgICAgaWYgKG9yaWVudFR5cGUgPT0g
U1ZHTWFya2VyT3JpZW50VW5rbm93bikgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBhbmds
ZS5zZXRWYWx1ZUFzU3RyaW5nKHN0cmluZyk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBvcmllbnRUeXBlID0gU1ZHTWFya2VyT3JpZW50
QW5nbGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGFuZ2xlLCBv
cmllbnRUeXBlKTsKICAgICB9Ci0gICAgc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxTVkdBbmds
ZVZhbHVlLCB1bnNpZ25lZD4+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJp
bmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7IH0KLSAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1
bnNpZ25lZD4mKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZW1wdHlTdHJpbmcoKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwxMiBAQCBpbmxp
bmUgU1ZHTWFza0VsZW1lbnQ6OlNWR01hc2tFbGVtZW50KGNvCiAgICAgLy8gU3BlYzogSWYgdGhl
IHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBh
cyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6bWFza1RhZykpOwogICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOworCisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8
U1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdN
YXNrRWxlbWVudDo6bV9tYXNrVW5pdHM+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJl
Z2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyLCBTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlLCAmU1ZHTWFza0VsZW1lbnQ6Om1fbWFza0NvbnRlbnRVbml0cz4oKTsK
KyAgICB9KTsKIH0KIAogUmVmPFNWR01hc2tFbGVtZW50PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTY0
LDggKzcwLDYgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKAogICAg
IHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp5QXR0ciwgJlNWR01hc2tFbGVt
ZW50OjptX3k+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Ondp
ZHRoQXR0ciwgJlNWR01hc2tFbGVtZW50OjptX3dpZHRoPigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lz
dGVyQXR0cmlidXRlPFNWR05hbWVzOjpoZWlnaHRBdHRyLCAmU1ZHTWFza0VsZW1lbnQ6Om1faGVp
Z2h0PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjptYXNrVW5p
dHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHTWFza0VsZW1lbnQ6Om1fbWFz
a1VuaXRzPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjptYXNr
Q29udGVudFVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSwgJlNWR01hc2tFbGVt
ZW50OjptX21hc2tDb250ZW50VW5pdHM+KCk7CiB9CiAKIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCkBAIC03MywxMyArNzcsMTMgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29ucwogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjptYXNrVW5pdHNBdHRyKSB7
CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3Bl
cnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9tYXNrVW5pdHMuc2V0VmFsdWUocHJvcGVydHlW
YWx1ZSk7CisgICAgICAgICAgICBtX21hc2tVbml0cy0+c2V0QmFzZVZhbEludGVybmFsPFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjptYXNrQ29udGVudFVuaXRzQXR0cikgewog
ICAgICAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0
eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fbWFza0NvbnRlbnRVbml0cy5zZXRWYWx1ZShwcm9w
ZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1fbWFza0NvbnRlbnRVbml0cy0+c2V0QmFzZVZhbElu
dGVybmFsPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAko
cmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5n
dGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZC5oIgpAQCAtMzksMTUgKzM4LDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
VkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS5jdXJyZW50VmFsdWUoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQogICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB3aWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fd2lkdGguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9o
ZWlnaHQuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1VuaXRz
LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgU1ZHVW5pdFR5cGVz
OjpTVkdVbml0VHlwZSBtYXNrQ29udGVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrQ29u
dGVudFVuaXRzLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZSBtYXNrVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX21hc2tV
bml0cy0+Y3VycmVudFZhbHVlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KCk7IH0KKyAgICBT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tDb250ZW50VW5pdHMoKSBjb25zdCB7IHJldHVy
biBtX21hc2tDb250ZW50VW5pdHMtPmN1cnJlbnRWYWx1ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlPigpOyB9CiAKICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHhBbmltYXRlZCgpIHsg
cmV0dXJuIG1feC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHlBbmltYXRlZCgpIHsgcmV0dXJuIG1feS5hbmlt
YXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBSZWZQdHI8U1ZHQW5p
bWF0ZWRMZW5ndGg+IHdpZHRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoLmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZExl
bmd0aD4gaGVpZ2h0QW5pbWF0ZWQoKSB7IHJldHVybiBtX2hlaWdodC5hbmltYXRlZFByb3BlcnR5
KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbj4gbWFza1VuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX21hc2tVbml0cy5hbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbj4gbWFza0NvbnRlbnRVbml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9tYXNrQ29u
dGVudFVuaXRzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAg
IFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIG1hc2tVbml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9t
YXNrVW5pdHM7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBtYXNrQ29udGVudFVuaXRz
QW5pbWF0ZWQoKSB7IHJldHVybiBtX21hc2tDb250ZW50VW5pdHM7IH0KIAogcHJpdmF0ZToKICAg
ICBTVkdNYXNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTgy
LDggKzgxLDggQEAgcHJpdmF0ZToKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3kg
eyBMZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3dpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMTIwJSIgfTsKICAgICBTVkdBbmltYXRl
ZExlbmd0aEF0dHJpYnV0ZSBtX2hlaWdodCB7IExlbmd0aE1vZGVIZWlnaHQsICIxMjAlIiB9Owot
ICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0
VHlwZT4gbV9tYXNrVW5pdHMgeyBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9V
TkRJTkdCT1ggfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGU+IG1fbWFza0NvbnRlbnRVbml0cyB7IFNWR1VuaXRUeXBlczo6U1ZH
X1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSB9OworICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0
aW9uPiBtX21hc2tVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBT
VkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbWFza0NvbnRlbnRVbml0cyB7IFNWR0FuaW1hdGVk
RW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNF
UlNQQUNFT05VU0UpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzQ2NikKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU0LDYgKzU0LDEyIEBAIGlubGluZSBTVkdQYXR0ZXJuRWxl
bWVudDo6U1ZHUGF0dGVybkVsZW0KIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6
cGF0dGVyblRhZykpOwogICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOworCisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7
CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnBh
dHRlcm5Vbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdQYXR0ZXJuRWxl
bWVudDo6bV9wYXR0ZXJuVW5pdHM+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lz
dGVyUHJvcGVydHk8U1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLCBTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1fcGF0dGVybkNvbnRlbnRVbml0
cz4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR1BhdHRlcm5FbGVtZW50PiBTVkdQYXR0ZXJuRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCkKQEAgLTcwLDggKzc2LDYgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cmVnaXN0ZXJB
dHRyaWJ1dAogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp5QXR0ciwg
JlNWR1BhdHRlcm5FbGVtZW50OjptX3k+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR1BhdHRlcm5FbGVtZW50OjptX3dpZHRoPigpOwog
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpoZWlnaHRBdHRyLCAmU1ZH
UGF0dGVybkVsZW1lbnQ6Om1faGVpZ2h0PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBl
LCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1fcGF0dGVyblVuaXRzPigpOwotICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0ciwgU1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZSwgJlNWR1BhdHRlcm5FbGVtZW50OjptX3BhdHRlcm5Db250ZW50
VW5pdHM+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnBhdHRl
cm5UcmFuc2Zvcm1BdHRyLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1fcGF0dGVyblRyYW5zZm9ybT4o
KTsKIH0KIApAQCAtODAsMTMgKzg0LDEzIEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGMKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0cikg
ewogICAgICAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9w
ZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fcGF0dGVyblVuaXRzLnNldFZhbHVlKHByb3Bl
cnR5VmFsdWUpOworICAgICAgICAgICAgbV9wYXR0ZXJuVW5pdHMtPnNldEJhc2VWYWxJbnRlcm5h
bDxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0
c0F0dHIpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8
U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBp
ZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAgICAgICAgICBtX3BhdHRlcm5Db250ZW50VW5pdHMu
c2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX3BhdHRlcm5Db250ZW50VW5p
dHMtPnNldEJhc2VWYWxJbnRlcm5hbDxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPihwcm9wZXJ0
eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobmFtZSA9PSBTVkdOYW1l
czo6cGF0dGVyblRyYW5zZm9ybUF0dHIpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0
ZXJuRWxlbWVudC5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRl
ICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTQ5LDE2ICs0OCwxNiBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3kuY3VycmVu
dFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBjb25zdCBTVkdMZW5ndGhWYWx1
ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9CiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1faGVpZ2h0LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
Ci0gICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwYXR0ZXJuVW5pdHMoKSBjb25zdCB7IHJl
dHVybiBtX3BhdHRlcm5Vbml0cy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQotICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcGF0dGVybkNvbnRlbnRVbml0cygpIGNv
bnN0IHsgcmV0dXJuIG1fcGF0dGVybkNvbnRlbnRVbml0cy5jdXJyZW50VmFsdWUoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQorICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcGF0dGVyblVu
aXRzKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuVW5pdHMtPmN1cnJlbnRWYWx1ZTxTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlPigpOyB9CisgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBw
YXR0ZXJuQ29udGVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuQ29udGVudFVuaXRz
LT5jdXJyZW50VmFsdWU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4oKTsgfQogICAgIGNvbnN0
IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHBhdHRlcm5UcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biBtX3BhdHRlcm5UcmFuc2Zvcm0uY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KIAogICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geEFuaW1hdGVkKCkgeyByZXR1cm4g
bV94LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0
cjxTVkdBbmltYXRlZExlbmd0aD4geUFuaW1hdGVkKCkgeyByZXR1cm4gbV95LmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZExl
bmd0aD4gd2lkdGhBbmltYXRlZCgpIHsgcmV0dXJuIG1fd2lkdGguYW5pbWF0ZWRQcm9wZXJ0eShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBo
ZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0LmFuaW1hdGVkUHJvcGVydHkoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBw
YXR0ZXJuVW5pdHNBbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVyblVuaXRzLmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVu
dW1lcmF0aW9uPiBwYXR0ZXJuQ29udGVudFVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX3BhdHRl
cm5Db250ZW50VW5pdHMuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgcGF0dGVyblVuaXRzQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX3BhdHRlcm5Vbml0czsgfQorICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIHBhdHRl
cm5Db250ZW50VW5pdHNBbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVybkNvbnRlbnRVbml0czsg
fQogICAgIFJlZlB0cjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+IHBhdHRlcm5UcmFuc2Zvcm1B
bmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVyblRyYW5zZm9ybS5hbmltYXRlZFByb3BlcnR5KGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KIAogcHJpdmF0ZToKQEAgLTk0LDggKzkzLDggQEAgcHJp
dmF0ZToKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVp
Z2h0IH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1v
ZGVXaWR0aCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1faGVpZ2h0IHsgTGVu
Z3RoTW9kZUhlaWdodCB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9wYXR0ZXJuVW5pdHMgeyBTVkdVbml0VHlwZXM6OlNW
R19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1ggfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0
aW9uQXR0cmlidXRlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+IG1fcGF0dGVybkNvbnRlbnRV
bml0cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSB9OworICAg
IFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3BhdHRlcm5Vbml0cyB7IFNWR0FuaW1hdGVk
RW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JK
RUNUQk9VTkRJTkdCT1gpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fcGF0
dGVybkNvbnRlbnRVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBT
VkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpIH07CiAgICAgU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0QXR0cmlidXRlIG1fcGF0dGVyblRyYW5zZm9ybTsKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTEgQEAgU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjpTVkdUZXh0Q29udGVudEVsZQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCh0aGlzKQogewogICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOworCisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Cisg
ICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Omxlbmd0
aEFkanVzdEF0dHIsIFNWR0xlbmd0aEFkanVzdFR5cGUsICZTVkdUZXh0Q29udGVudEVsZW1lbnQ6
Om1fbGVuZ3RoQWRqdXN0PigpOworICAgIH0pOwogfQogCiB1bnNpZ25lZCBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ6OmdldE51bWJlck9mQ2hhcnMoKQpAQCAtMTY0LDcgKzE2OSw2IEBAIHZvaWQgU1ZH
VGV4dENvbnRlbnRFbGVtZW50OjpyZWdpc3RlckF0dHIKICAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlKFNW
R0FuaW1hdGVkQ3VzdG9tTGVuZ3RoQXR0cmlidXRlQWNjZXNzb3I6OnNpbmdsZXRvbjxTVkdOYW1l
czo6dGV4dExlbmd0aEF0dHIsICZTVkdUZXh0Q29udGVudEVsZW1lbnQ6Om1fdGV4dExlbmd0aD4o
KSk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Omxlbmd0aEFkanVz
dEF0dHIsIFNWR0xlbmd0aEFkanVzdFR5cGUsICZTVkdUZXh0Q29udGVudEVsZW1lbnQ6Om1fbGVu
Z3RoQWRqdXN0PigpOwogfQogCiB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKQEAgLTE3NCw3ICsxNzgsNyBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VB
dHRyaWJ1CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpIHsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoQWRq
dXN0VHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+
IDApCi0gICAgICAgICAgICBtX2xlbmd0aEFkanVzdC5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsK
KyAgICAgICAgICAgIG1fbGVuZ3RoQWRqdXN0LT5zZXRCYXNlVmFsSW50ZXJuYWw8U1ZHTGVuZ3Ro
QWRqdXN0VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjp0ZXh0TGVuZ3RoQXR0cikKICAgICAgICAgbV90ZXh0TGVuZ3RoLnNldFZhbHVlKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwg
Rm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0Q29udGVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEs
NiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24u
aCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKQEAg
LTkyLDEwICs5MSwxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNW
R1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR0dyYXBoaWNz
RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CiAKICAgICBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dExlbmd0aC5jdXJy
ZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFNWR0xlbmd0aEFkanVzdFR5
cGUgbGVuZ3RoQWRqdXN0KCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGhBZGp1c3QuY3VycmVudFZh
bHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdMZW5ndGhBZGp1c3RUeXBlIGxl
bmd0aEFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoQWRqdXN0LT5jdXJyZW50VmFsdWU8
U1ZHTGVuZ3RoQWRqdXN0VHlwZT4oKTsgfQogCiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3Ro
PiB0ZXh0TGVuZ3RoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3RleHRMZW5ndGguYW5pbWF0ZWRQcm9w
ZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51
bWVyYXRpb24+IGxlbmd0aEFkanVzdEFuaW1hdGVkKCkgeyByZXR1cm4gbV9sZW5ndGhBZGp1c3Qu
YW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbiYgbGVuZ3RoQWRqdXN0QW5pbWF0ZWQoKSB7IHJldHVybiBtX2xlbmd0aEFk
anVzdDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtMTU5LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAg
ICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9Owog
ICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBT
VkdBbmltYXRlZEN1c3RvbUxlbmd0aEF0dHJpYnV0ZSBtX3RleHRMZW5ndGggeyAqdGhpcywgTGVu
Z3RoTW9kZU90aGVyIH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdM
ZW5ndGhBZGp1c3RUeXBlPiBtX2xlbmd0aEFkanVzdCB7IFNWR0xlbmd0aEFkanVzdFNwYWNpbmcg
fTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9sZW5ndGhBZGp1c3QgeyBTVkdB
bmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoQWRqdXN0U3BhY2luZykg
fTsKICAgICBTVkdMZW5ndGhWYWx1ZSBtX3NwZWNpZmllZFRleHRMZW5ndGggeyBMZW5ndGhNb2Rl
T3RoZXIgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTIgQEAgaW5saW5lIFNW
R1RleHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhFbAogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KFNWR05hbWVzOjp0ZXh0UGF0aFRhZykpOwogICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOworCisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8
U1ZHTmFtZXM6Om1ldGhvZEF0dHIsIFNWR1RleHRQYXRoTWV0aG9kVHlwZSwgJlNWR1RleHRQYXRo
RWxlbWVudDo6bV9tZXRob2Q+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVy
UHJvcGVydHk8U1ZHTmFtZXM6OnNwYWNpbmdBdHRyLCBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlLCAm
U1ZHVGV4dFBhdGhFbGVtZW50OjptX3NwYWNpbmc+KCk7CisgICAgfSk7CiB9CiAKIFJlZjxTVkdU
ZXh0UGF0aEVsZW1lbnQ+IFNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTYyLDggKzY4LDYgQEAgdm9p
ZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidQogICAgIGlmICghcmVnaXN0cnku
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0ciwgJlNWR1RleHRQYXRoRWxlbWVudDo6bV9zdGFy
dE9mZnNldD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6bWV0
aG9kQXR0ciwgU1ZHVGV4dFBhdGhNZXRob2RUeXBlLCAmU1ZHVGV4dFBhdGhFbGVtZW50OjptX21l
dGhvZD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6c3BhY2lu
Z0F0dHIsIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUsICZTVkdUZXh0UGF0aEVsZW1lbnQ6Om1fc3Bh
Y2luZz4oKTsKIH0KIAogdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC03
NSwxMSArNzksMTEgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKAog
ICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om1ldGhvZEF0dHIpIHsKICAgICAgICAgU1ZH
VGV4dFBhdGhNZXRob2RUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdU
ZXh0UGF0aE1ldGhvZFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3Bl
cnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9tZXRob2Quc2V0VmFsdWUocHJvcGVydHlWYWx1
ZSk7CisgICAgICAgICAgICBtX21ldGhvZC0+c2V0QmFzZVZhbEludGVybmFsPFNWR1RleHRQYXRo
TWV0aG9kVHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjpzcGFjaW5nQXR0cikgewogICAgICAgICBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlIHByb3Bl
cnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0aFNwYWNpbmdUeXBlPjo6ZnJv
bVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAg
ICAgIG1fc3BhY2luZy5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1fc3Bh
Y2luZy0+c2V0QmFzZVZhbEludGVybmFsPFNWR1RleHRQYXRoU3BhY2luZ1R5cGU+KHByb3BlcnR5
VmFsdWUpOwogICAgIH0KIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVy
cm9yLCBuYW1lLCB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxl
bWVudC5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiwxMiArMTEyLDEyIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFNWR1RleHRQYXRoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHN0YXJ0T2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldC5jdXJyZW50VmFsdWUoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQotICAgIFNWR1RleHRQYXRoTWV0aG9kVHlwZSBtZXRob2QoKSBjb25z
dCB7IHJldHVybiBtX21ldGhvZC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQotICAgIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUgc3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIG1f
c3BhY2luZy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR1Rl
eHRQYXRoTWV0aG9kVHlwZSBtZXRob2QoKSBjb25zdCB7IHJldHVybiBtX21ldGhvZC0+Y3VycmVu
dFZhbHVlPFNWR1RleHRQYXRoTWV0aG9kVHlwZT4oKTsgfQorICAgIFNWR1RleHRQYXRoU3BhY2lu
Z1R5cGUgc3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3BhY2luZy0+Y3VycmVudFZhbHVlPFNW
R1RleHRQYXRoU3BhY2luZ1R5cGU+KCk7IH0KIAogICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0
aD4gc3RhcnRPZmZzZXRBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQuYW5pbWF0ZWRQ
cm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVk
RW51bWVyYXRpb24+IG1ldGhvZEFuaW1hdGVkKCkgeyByZXR1cm4gbV9tZXRob2QuYW5pbWF0ZWRQ
cm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVk
RW51bWVyYXRpb24+IHNwYWNpbmdBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3BhY2luZy5hbmltYXRl
ZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZEVudW1l
cmF0aW9uJiBtZXRob2RBbmltYXRlZCgpIHsgcmV0dXJuIG1fbWV0aG9kOyB9CisgICAgU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbiYgc3BhY2luZ0FuaW1hdGVkKCkgeyByZXR1cm4gbV9zcGFjaW5nOyB9
CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGRpZEZpbmlzaEluc2VydGluZ05vZGUoKSBvdmVycmlk
ZTsKQEAgLTE1Niw4ICsxNTYsOCBAQCBwcml2YXRlOgogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkg
bV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1f
cHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUgbV9zdGFydE9mZnNldCB7IExlbmd0aE1vZGVPdGhlciB9OwotICAgIFNWR0FuaW1hdGVkRW51
bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVGV4dFBhdGhNZXRob2RUeXBlPiBtX21ldGhvZCB7IFNWR1Rl
eHRQYXRoTWV0aG9kQWxpZ24gfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRl
PFNWR1RleHRQYXRoU3BhY2luZ1R5cGU+IG1fc3BhY2luZyB7IFNWR1RleHRQYXRoU3BhY2luZ0V4
YWN0IH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbWV0aG9kIHsgU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1RleHRQYXRoTWV0aG9kQWxpZ24pIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fc3BhY2luZyB7IFNWR0FuaW1hdGVk
RW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdUZXh0UGF0aFNwYWNpbmdFeGFjdCkgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWYWx1ZS5oCShyZXZp
c2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsOCArNDEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBTVkdW
YWx1ZVZhcmlhbnQgPSBWYXJpYW50PAotICAgIHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNp
Z25lZD4qLAotICAgIHVuc2lnbmVkKiwKICAgICBTVkdMZW5ndGhWYWx1ZSosCiAgICAgU1ZHTGVu
Z3RoTGlzdFZhbHVlcyosCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0qLApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3Jh
dGVkUHJvcGVydHkuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIK
KyNpbmNsdWRlICJTVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3RlbXBsYXRlPHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWU+IGNsYXNzIERlY29yYXRl
ZFByb3BlcnR5LCB0eXBlbmFtZSBEZWNvcmF0aW9uVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkRGVj
b3JhdGVkUHJvcGVydHkgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSB7CitwdWJsaWM6Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlLCB0eXBlbmFtZSBBbmltYXRlZFByb3Bl
cnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eT4KKyAgICBzdGF0aWMgUmVmPEFuaW1h
dGVkUHJvcGVydHk+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1l
bnQsIHN0ZDo6bWFrZV91bmlxdWU8RGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGUsIFBy
b3BlcnR5VHlwZT4+KCkpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0
eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBTVkdBbmltYXRlZERlY29yYXRlZFBy
b3BlcnR5PgorICAgIHN0YXRpYyBSZWY8QW5pbWF0ZWRQcm9wZXJ0eT4gY3JlYXRlKFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBQcm9wZXJ0eVR5cGUmIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVu
dCwgRGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGUsIFByb3BlcnR5VHlwZT46OmNyZWF0
ZSh2YWx1ZSkpKTsKKyAgICB9CisKKyAgICBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5KFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRGVjb3JhdGVkUHJv
cGVydHk8RGVjb3JhdGlvblR5cGU+PiYmIGJhc2VWYWwpCisgICAgICAgIDogU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eShjb250ZXh0RWxlbWVudCkKKyAgICAgICAgLCBtX2Jhc2VWYWwoV1RGTW92ZShiYXNl
VmFsKSkKKyAgICB7CisgICAgfQorCisgICAgLy8gVXNlZCBieSB0aGUgRE9NLgorICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldEJhc2VWYWwoY29uc3QgRGVjb3JhdGlvblR5cGUmIGJhc2VWYWwpCisg
ICAgeworICAgICAgICBpZiAoIW1fYmFzZVZhbC0+c2V0VmFsdWUoYmFzZVZhbCkpCisgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CisgICAgICAgIGNvbW1pdFByb3Bl
cnR5Q2hhbmdlKG51bGxwdHIpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIC8v
IFVzZWQgYnkgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoKS4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBQcm9wZXJ0eVR5cGU+CisgICAgdm9pZCBzZXRCYXNlVmFsSW50ZXJuYWwoY29uc3QgUHJv
cGVydHlUeXBlJiBiYXNlVmFsKQorICAgIHsKKyAgICAgICAgbV9iYXNlVmFsLT5zZXRWYWx1ZUlu
dGVybmFsKHN0YXRpY19jYXN0PERlY29yYXRpb25UeXBlPihiYXNlVmFsKSk7CisgICAgICAgIGlm
IChtX2FuaW1WYWwpCisgICAgICAgICAgICBtX2FuaW1WYWwtPnNldFZhbHVlSW50ZXJuYWwoc3Rh
dGljX2Nhc3Q8RGVjb3JhdGlvblR5cGU+KGJhc2VWYWwpKTsKKyAgICB9CisKKyAgICBEZWNvcmF0
aW9uVHlwZSBiYXNlVmFsKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVmFsLT52YWx1ZSgpOyB9CisK
KyAgICAvLyBVc2VkIGJ5IFNWR0FuaW1hdG9yOjpwcm9ncmVzcy4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBQcm9wZXJ0eVR5cGU+CisgICAgdm9pZCBzZXRBbmltVmFsKGNvbnN0IFByb3BlcnR5VHlw
ZSYgYW5pbVZhbCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0FuaW1hdGluZygpICYmIG1fYW5p
bVZhbCk7CisgICAgICAgIG1fYW5pbVZhbC0+c2V0VmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxE
ZWNvcmF0aW9uVHlwZT4oYW5pbVZhbCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFByb3BlcnR5VHlwZSA9IERlY29yYXRpb25UeXBlPgorICAgIFByb3BlcnR5VHlwZSBhbmltVmFs
KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVF9JTVBMSUVTKGlzQW5pbWF0aW5nKCksIG1f
YW5pbVZhbCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9wZXJ0eVR5cGU+KChpc0Fu
aW1hdGluZygpID8gbV9hbmltVmFsIDogbV9iYXNlVmFsKS0+dmFsdWUoKSk7CisgICAgfQorCisg
ICAgLy8gVXNlZCB3aGVuIGNvbW1pdHRpbmcgYSBjaGFuZ2UgZnJvbSB0aGUgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSB0byB0aGUgYXR0cmlidXRlLgorICAgIFN0cmluZyBiYXNlVmFsQXNTdHJpbmcoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPnZhbHVlQXNTdHJpbmcoKTsgfQorCisg
ICAgLy8gVXNlZCB0byBhcHBseSB0aGUgU1ZHQW5pbWF0b3IgY2hhbmdlIHRvIHRoZSB0YXJnZXQg
ZWxlbWVudC4KKyAgICBTdHJpbmcgYW5pbVZhbEFzU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIEFTU0VSVChpc0FuaW1hdGluZygpICYmICEhbV9hbmltVmFsKTsKKyAgICAg
ICAgcmV0dXJuIG1fYW5pbVZhbC0+dmFsdWVBc1N0cmluZygpOworICAgIH0KKworICAgIC8vIE1h
bmFnaW5nIHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgb3duZXIuCisgICAgdm9pZCBzZXREaXJ0
eSgpIG92ZXJyaWRlIHsgbV9zdGF0ZSA9IFNWR1Byb3BlcnR5U3RhdGU6OkRpcnR5OyB9CisgICAg
Ym9vbCBpc0RpcnR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdGF0ZSA9PSBTVkdQcm9w
ZXJ0eVN0YXRlOjpEaXJ0eTsgfQorICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU1ZHUHJvcGVydHlTdGF0ZTo6
Q2xlYW4pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBtX3N0YXRl
ID0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW47CisgICAgICAgIHJldHVybiBiYXNlVmFsQXNTdHJp
bmcoKTsKKyAgICB9CisKKyAgICAvLyBVc2VkIGJ5IFJlbmRlclNWR0VsZW1lbnRzIGFuZCBEdW1w
UmVuZGVyVHJlZS4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CisgICAgUHJv
cGVydHlUeXBlIGN1cnJlbnRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8UHJvcGVydHlUeXBlPigoaXNBbmltYXRpbmcoKSA/IG1fYW5pbVZhbCA6IG1fYmFz
ZVZhbCktPnZhbHVlSW50ZXJuYWwoKSk7CisgICAgfQorCisgICAgLy8gQ29udHJvbGxpbmcgdGhl
IGFuaW1hdGlvbi4KKyAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmIChpc0FuaW1hdGluZygpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2FuaW1WYWwgPSBtX2Jhc2VWYWwtPmNsb25lKCk7CisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVy
dHk6OnN0YXJ0QW5pbWF0aW9uKCk7CisgICAgfQorICAgIHZvaWQgc3RvcEFuaW1hdGlvbigpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIWlzQW5pbWF0aW5nKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1fYW5pbVZhbCA9IG51bGxwdHI7CisgICAgICAgIFNWR0FuaW1hdGVk
UHJvcGVydHk6OnN0b3BBbmltYXRpb24oKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U1ZHRGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGU+PiBtX2Jhc2VW
YWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0RlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25U
eXBlPj4gbV9hbmltVmFsOworICAgIFNWR1Byb3BlcnR5U3RhdGUgbV9zdGF0ZSB7IFNWR1Byb3Bl
cnR5U3RhdGU6OkNsZWFuIH07Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29y
SW1wbC5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkQW5nbGVBY2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBT
VkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZEFuZ2xlPiB7
CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUs
IFNWR0FuaW1hdGVkQW5nbGU+OworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAg
ICB0ZW1wbGF0ZTxSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4gT3duZXJUeXBlOjoqcHJvcGVydHk+Cisg
ICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxPd25lclR5cGU+JiBz
aW5nbGV0b24oKSB7IHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZHQW5pbWF0ZWRB
bmdsZUFjY2Vzc29yLCBwcm9wZXJ0eT4oKTsgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgT3du
ZXJUeXBlPgogY2xhc3MgU1ZHQW5pbWF0ZWRCb29sZWFuQWNjZXNzb3IgZmluYWwgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRCb29sZWFu
PiB7CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5
cGUsIFNWR0FuaW1hdGVkQm9vbGVhbj47CiAgICAgdXNpbmcgQmFzZTo6cHJvcGVydHk7CkBAIC01
NCw2ICs2NCwyOCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZSwgdHlwZW5hbWUgRW51bVR5cGU+CitjbGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9u
QWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVy
VHlwZSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4geworICAgIHVzaW5nIEJhc2UgPSBTVkdBbmlt
YXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZEVudW1lcmF0aW9uPjsK
KyAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2U6OkJh
c2U7CisgICAgdGVtcGxhdGU8UmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IE93bmVyVHlwZTo6
KnByb3BlcnR5PgorICAgIGNvbnN0ZXhwciBzdGF0aWMgY29uc3QgU1ZHTWVtYmVyQWNjZXNzb3I8
T3duZXJUeXBlPiYgc2luZ2xldG9uKCkgeyByZXR1cm4gQmFzZTo6dGVtcGxhdGUgc2luZ2xldG9u
PFNWR0FuaW1hdGVkRW51bWVyYXRpb25BY2Nlc3NvciwgcHJvcGVydHk+KCk7IH0KKworcHJpdmF0
ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+IGNyZWF0ZUFuaW1h
dG9yKE93bmVyVHlwZSYgb3duZXIsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNB
Y2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxFbnVtVHlwZT46OmNyZWF0ZShh
dHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eShvd25lciksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZEFuaW1h
dGVkSW5zdGFuY2UoT3duZXJUeXBlJiBvd25lciwgU1ZHQXR0cmlidXRlQW5pbWF0b3ImIGFuaW1h
dG9yKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPiY+KGFuaW1hdG9yKS5hcHBlbmRBbmltYXRlZElu
c3RhbmNlKHByb3BlcnR5KG93bmVyKSk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUg
T3duZXJUeXBlPgogY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyQWNjZXNzb3IgZmluYWwgOiBwdWJs
aWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRJbnRl
Z2VyPiB7CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25l
clR5cGUsIFNWR0FuaW1hdGVkSW50ZWdlcj47CkBAIC0xNDMsNiArMTc1LDE2IEBAIHByaXZhdGU6
CiB9OwogICAgIAogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgorY2xhc3MgU1ZHQW5pbWF0
ZWRPcmllbnRUeXBlQWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFj
Y2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlPiB7CisgICAgdXNpbmcgQmFz
ZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkT3Jp
ZW50VHlwZT47CisKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlOjpCYXNlOworICAgIHRlbXBsYXRl
PFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAgIGNv
bnN0ZXhwciBzdGF0aWMgY29uc3QgU1ZHTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPiYgc2luZ2xl
dG9uKCkge3JldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZHQW5pbWF0ZWRPcmllbnRU
eXBlQWNjZXNzb3IsIHByb3BlcnR5PigpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25l
clR5cGU+CiBjbGFzcyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BY2Nlc3NvciBmaW5h
bCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+IHsKICAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
PjsKICAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3JJbXBsLmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsMTEgKzMzLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU1ZHQW5pbWF0
ZWRBbmdsZUFuaW1hdG9yOwogY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yOwor
Y2xhc3MgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHlBbmlt
YXRvcjI+CiBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yOwogCitjbGFzcyBT
VkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yPFNWR0FuaW1hdGVkQW5nbGUsIFNWR0FuaW1hdGlvbkFuZ2xlRnVuY3Rpb24+IHsK
KyAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcjxTVkdBbmlt
YXRlZEFuZ2xlQW5pbWF0b3IsIFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yPjsKKyAgICBm
cmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yOworICAgIHVzaW5nIEJh
c2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRBbmdsZSwgU1ZHQW5p
bWF0aW9uQW5nbGVGdW5jdGlvbj47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKworcHVibGljOgor
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRp
dGl2ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVk
QW5nbGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwZXJjZW50
YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgZmluYWwKKyAgICB7CisgICAgICAgIG1fZnVuY3Rp
b24ucHJvZ3Jlc3ModGFyZ2V0RWxlbWVudCwgcGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIG1fYW5p
bWF0ZWQtPmFuaW1WYWwoKS0+dmFsdWUoKSk7CisgICAgfQorfTsKKwogY2xhc3MgU1ZHQW5pbWF0
ZWRCb29sZWFuQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9yPFNWR0FuaW1hdGVkQm9vbGVhbiwgU1ZHQW5pbWF0aW9uQm9vbGVhbkZ1bmN0aW9uPiAgewog
ICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRC
b29sZWFuLCBTVkdBbmltYXRpb25Cb29sZWFuRnVuY3Rpb24+OwogCkBAIC01Nyw2ICs3OCwyOCBA
QCBwcml2YXRlOgogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEVudW1UeXBlPgorY2xh
c3MgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZEVudW1lcmF0aW9uLCBTVkdBbmltYXRpb25F
bnVtZXJhdGlvbkZ1bmN0aW9uPEVudW1UeXBlPj4geworICAgIHVzaW5nIEJhc2UgPSBTVkdBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiwgU1ZHQW5pbWF0aW9u
RW51bWVyYXRpb25GdW5jdGlvbjxFbnVtVHlwZT4+OworICAgIHVzaW5nIEJhc2U6OkJhc2U7Cisg
ICAgdXNpbmcgQmFzZTo6bV9hbmltYXRlZDsKKyAgICB1c2luZyBCYXNlOjptX2Z1bmN0aW9uOwor
CitwdWJsaWM6CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiYgYW5pbWF0ZWQsIEFuaW1h
dGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVs
YXRlZCwgYm9vbCBpc0FkZGl0aXZlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPj4oYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBp
c0FkZGl0aXZlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9ncmVzcyhTVkdFbGVt
ZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCkgZmluYWwKKyAgICB7CisgICAgICAgIEVudW1UeXBlIGFuaW1hdGVkOworICAgICAgICBtX2Z1
bmN0aW9uLnByb2dyZXNzKHRhcmdldEVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBh
bmltYXRlZCk7CisgICAgICAgIG1fYW5pbWF0ZWQtPnRlbXBsYXRlIHNldEFuaW1WYWw8RW51bVR5
cGU+KGFuaW1hdGVkKTsKKyAgICB9Cit9OworCiBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJBbmlt
YXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0
ZWRJbnRlZ2VyLCBTVkdBbmltYXRpb25JbnRlZ2VyRnVuY3Rpb24+IHsKICAgICBmcmllbmQgY2xh
c3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcjxTVkdBbmltYXRlZEludGVnZXJBbmlt
YXRvciwgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I+OwogICAgIGZyaWVuZCBjbGFzcyBTVkdB
bmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I7CkBAIC04Niw3ICsxMjksNyBAQCBjbGFzcyBTVkdB
bmltYXRlZE51bWJlckFuaW1hdG9yIGZpbmFsIDogCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRl
ZE51bWJlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcj4o
bmV3IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKSk7CisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I+KGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTMwLDYgKzE3MywyNyBA
QCBwcml2YXRlOgogICAgIH0KIH07CiAKK2NsYXNzIFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRl
ZE9yaWVudFR5cGUsIFNWR0FuaW1hdGlvbk9yaWVudFR5cGVGdW5jdGlvbj4geworICAgIGZyaWVu
ZCBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yPFNWR0FuaW1hdGVkQW5nbGVB
bmltYXRvciwgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+OworICAgIGZyaWVuZCBjbGFz
cyBTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I7CisgICAgdXNpbmcgQmFzZSA9IFNWR0Fu
aW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZE9yaWVudFR5cGUsIFNWR0FuaW1hdGlv
bk9yaWVudFR5cGVGdW5jdGlvbj47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKworcHVibGljOgor
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5p
bWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBp
c0FkZGl0aXZlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIHZvaWQgcHJvZ3Jlc3MoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZpbmFsCisgICAgeworICAgICAg
ICBTVkdNYXJrZXJPcmllbnRUeXBlIGFuaW1hdGVkOworICAgICAgICBtX2Z1bmN0aW9uLnByb2dy
ZXNzKHRhcmdldEVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBhbmltYXRlZCk7Cisg
ICAgICAgIG1fYW5pbWF0ZWQtPnNldEFuaW1WYWwoYW5pbWF0ZWQpOworICAgIH0KK307CisKIGNs
YXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yIGZpbmFsIDogcHVibGlj
IFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8sIFNWR0FuaW1hdGlvblByZXNlcnZlQXNwZWN0UmF0aW9GdW5jdGlvbj4gewogICAgIHVzaW5n
IEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvLCBTVkdBbmltYXRpb25QcmVzZXJ2ZUFzcGVjdFJhdGlvRnVuY3Rpb24+OwogICAg
IHVzaW5nIEJhc2U6OkJhc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmgJKHJldmlzaW9uIDI0MzQ2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE0ICsyNSwxNSBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1l
cmF0aW9uLmgiCisjaW5jbHVkZSAiU1ZHQW5nbGUuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZERl
Y29yYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByaW1p
dGl2ZVByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZFZhbHVlUHJvcGVydHkuaCIKKyNpbmNsdWRlICJTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oIgog
I2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIKICNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKICNp
bmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCkBAIC00NSwxMCArNDYsMjMgQEAgdXNp
bmcgU1ZHQW5pbWF0ZWRJbnRlZ2VyID0gU1ZHQW5pbWF0ZWRQcgogdXNpbmcgU1ZHQW5pbWF0ZWRO
dW1iZXIgPSBTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5PGZsb2F0PjsKIHVzaW5nIFNWR0Fu
aW1hdGVkU3RyaW5nID0gU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eTxTdHJpbmc+OwogCit1
c2luZyBTVkdBbmltYXRlZEVudW1lcmF0aW9uID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0
eTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbiwgdW5zaWduZWQ+OworCit1c2luZyBTVkdBbmltYXRl
ZEFuZ2xlID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5PFNWR0FuZ2xlPjsKIHVzaW5nIFNWR0Fu
aW1hdGVkUmVjdCA9IFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eTxTVkdSZWN0PjsKIHVzaW5nIFNW
R0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eTxT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPjsKIAogdXNpbmcgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0ID0g
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3Q8U1ZHTnVtYmVyTGlzdD47CiB1c2luZyBTVkdBbmltYXRl
ZFBvaW50TGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0PFNWR1BvaW50TGlzdD47CiAKK2Ns
YXNzIFNWR0FuaW1hdGVkT3JpZW50VHlwZSA6IHB1YmxpYyBTVkdBbmltYXRlZEVudW1lcmF0aW9u
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpTVkdBbmltYXRl
ZEVudW1lcmF0aW9uOworCisgICAgc3RhdGljIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+IGNy
ZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgU1ZHTWFya2VyT3JpZW50VHlwZSBiYXNl
VmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3Jl
YXRlPFNWR01hcmtlck9yaWVudFR5cGUsIFNWR0FuaW1hdGVkT3JpZW50VHlwZT4oY29udGV4dEVs
ZW1lbnQsIGJhc2VWYWx1ZSk7CisgICAgfQorfTsKKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5UGFpckFjY2Vzc29ySW1wbC5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw0MyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CitjbGFzcyBTVkdBbmltYXRlZEFuZ2xlT3JpZW50
QWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvcjxP
d25lclR5cGUsIFNWR0FuaW1hdGVkQW5nbGVBY2Nlc3NvcjxPd25lclR5cGU+LCBTVkdBbmltYXRl
ZE9yaWVudFR5cGVBY2Nlc3NvcjxPd25lclR5cGU+PiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR0Fu
aW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZEFuZ2xlQWNj
ZXNzb3I8T3duZXJUeXBlPiwgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQWNjZXNzb3I8T3duZXJUeXBl
Pj47CisgICAgdXNpbmcgQmFzZTo6cHJvcGVydHkxOworICAgIHVzaW5nIEJhc2U6OnByb3BlcnR5
MjsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdGVtcGxhdGU8UmVmPFNW
R0FuaW1hdGVkQW5nbGU+IE93bmVyVHlwZTo6KnByb3BlcnR5MSwgUmVmPFNWR0FuaW1hdGVkT3Jp
ZW50VHlwZT4gT3duZXJUeXBlOjoqcHJvcGVydHkyPgorICAgIGNvbnN0ZXhwciBzdGF0aWMgY29u
c3QgU1ZHTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPiYgc2luZ2xldG9uKCkgeyByZXR1cm4gQmFz
ZTo6dGVtcGxhdGUgc2luZ2xldG9uPFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBY2Nlc3NvciwgcHJv
cGVydHkxLCBwcm9wZXJ0eTI+KCk7IH0KKworcHJpdmF0ZToKKyAgICBPcHRpb25hbDxTdHJpbmc+
IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICBib29sIGRpcnR5MSA9IHByb3BlcnR5MShvd25lciktPmlzRGlydHkoKTsKKyAgICAg
ICAgYm9vbCBkaXJ0eTIgPSBwcm9wZXJ0eTIob3duZXIpLT5pc0RpcnR5KCk7CisgICAgICAgIGlm
ICghKGRpcnR5MSB8fCBkaXJ0eTIpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICBhdXRvIHR5cGUgPSBwcm9wZXJ0eTIob3duZXIpLT5iYXNlVmFsKCk7CisKKyAg
ICAgICAgU3RyaW5nIHN0cmluZzEgPSBkaXJ0eTEgPyAqcHJvcGVydHkxKG93bmVyKS0+c3luY2hy
b25pemUoKSA6IHByb3BlcnR5MShvd25lciktPmJhc2VWYWxBc1N0cmluZygpOworICAgICAgICBT
dHJpbmcgc3RyaW5nMiA9IGRpcnR5MiA/ICpwcm9wZXJ0eTIob3duZXIpLT5zeW5jaHJvbml6ZSgp
IDogcHJvcGVydHkyKG93bmVyKS0+YmFzZVZhbEFzU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB0
eXBlID09IFNWR01hcmtlck9yaWVudEF1dG8gfHwgdHlwZSA9PSBTVkdNYXJrZXJPcmllbnRBdXRv
U3RhcnRSZXZlcnNlID8gc3RyaW5nMiA6IHN0cmluZzE7CisgICAgfQorCisgICAgc3RkOjp1bmlx
dWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRvcihPd25lclR5cGUmIG93
bmVyLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRpb25Nb2RlIGFu
aW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wg
aXNBZGRpdGl2ZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdBbmltYXRl
ZEFuZ2xlT3JpZW50QW5pbWF0b3I6OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eTEob3du
ZXIpLCBwcm9wZXJ0eTIob3duZXIpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRBbmltYXRlZEluc3Rh
bmNlKE93bmVyVHlwZSYgb3duZXIsIFNWR0F0dHJpYnV0ZUFuaW1hdG9yJiBhbmltYXRvcikgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PFNWR0FuaW1hdGVkQW5nbGVPcmll
bnRBbmltYXRvciY+KGFuaW1hdG9yKS5hcHBlbmRBbmltYXRlZEluc3RhbmNlKHByb3BlcnR5MShv
d25lciksIHByb3BlcnR5Mihvd25lcikpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IE93bmVyVHlwZT4KIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBY2Nlc3NvciBmaW5hbCA6
IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5p
bWF0ZWRJbnRlZ2VyQWNjZXNzb3I8T3duZXJUeXBlPiwgU1ZHQW5pbWF0ZWRJbnRlZ2VyQWNjZXNz
b3I8T3duZXJUeXBlPj4gewogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5UGFp
ckFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRJbnRlZ2VyQWNjZXNzb3I8T3duZXJUeXBl
PiwgU1ZHQW5pbWF0ZWRJbnRlZ2VyQWNjZXNzb3I8T3duZXJUeXBlPj47CiAgICAgdXNpbmcgQmFz
ZTo6cHJvcGVydHkxOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3IuaAkocmV2aXNp
b24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVBhaXJBbmltYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMyArMzcsNiBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQW5pbWF0ZWRQcm9wZXJ0eTEgPSB0eXBlbmFtZSBBbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3IxOjpBbmltYXRvckFuaW1hdGVkUHJvcGVydHk7CiAgICAgdXNpbmcgQW5p
bWF0ZWRQcm9wZXJ0eTIgPSB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyOjpBbmlt
YXRvckFuaW1hdGVkUHJvcGVydHk7CiAKLSAgICB2b2lkIGFwcGVuZEFuaW1hdGVkSW5zdGFuY2Uo
UmVmPEFuaW1hdGVkUHJvcGVydHkxPiYgYW5pbWF0ZWQxLCBSZWY8QW5pbWF0ZWRQcm9wZXJ0eTI+
JiBhbmltYXRlZDIpCi0gICAgewotICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEt
PmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoYW5pbWF0ZWQxKTsKLSAgICAgICAgbV9hbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3IyLT5hcHBlbmRBbmltYXRlZEluc3RhbmNlKGFuaW1hdGVkMik7Ci0gICAg
fQotCi1wcm90ZWN0ZWQ6CiAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcihjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8QW5pbWF0ZWRQcm9wZXJ0eTE+JiBh
bmltYXRlZDEsIFJlZjxBbmltYXRlZFByb3BlcnR5Mj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgICAgIDogU1ZHQXR0cmlidXRlQW5pbWF0b3IoYXR0cmlidXRl
TmFtZSkKICAgICAgICAgLCBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEoQW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9yMTo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpKQpAQCAtNTEsNiArNDQs
MTMgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZEFuaW1hdGVk
SW5zdGFuY2UoUmVmPEFuaW1hdGVkUHJvcGVydHkxPiYgYW5pbWF0ZWQxLCBSZWY8QW5pbWF0ZWRQ
cm9wZXJ0eTI+JiBhbmltYXRlZDIpCisgICAgeworICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlB
bmltYXRvcjEtPmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoYW5pbWF0ZWQxKTsKKyAgICAgICAgbV9h
bmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5hcHBlbmRBbmltYXRlZEluc3RhbmNlKGFuaW1hdGVk
Mik7CisgICAgfQorCitwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJn
ZXRFbGVtZW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5p
bWF0b3IxLT5zdGFydCh0YXJnZXRFbGVtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBh
aXJBbmltYXRvckltcGwuaAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNiArMzMsNzkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
VkdFbGVtZW50OwogCitjbGFzcyBTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcjxTVkdBbmltYXRlZEFuZ2xl
QW5pbWF0b3IsIFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yPiB7CisgICAgdXNpbmcgQmFz
ZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3I8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1h
dG9yLCBTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj47CisgICAgdXNpbmcgQmFzZTo6QmFz
ZTsKKworcHVibGljOgorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4mIGFuaW1hdGVkMSwgUmVmPFNW
R0FuaW1hdGVkT3JpZW50VHlwZT4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25N
b2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRp
dmUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFu
Z2xlT3JpZW50QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqLCBj
b25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGZpbmFsCisgICAgeworICAgICAg
ICBhdXRvIHBhaXJGcm9tID0gU1ZHUHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPFNWR0FuZ2xlVmFs
dWUsIFNWR01hcmtlck9yaWVudFR5cGU+Pjo6ZnJvbVN0cmluZyhmcm9tKTsKKyAgICAgICAgYXV0
byBwYWlyVG8gPSBTVkdQcm9wZXJ0eVRyYWl0czxzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgU1ZH
TWFya2VyT3JpZW50VHlwZT4+Ojpmcm9tU3RyaW5nKHRvKTsKKworICAgICAgICBtX2FuaW1hdGVk
UHJvcGVydHlBbmltYXRvcjEtPm1fZnVuY3Rpb24ubV9mcm9tID0gcGFpckZyb20uZmlyc3Q7Cisg
ICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+bV9mdW5jdGlvbi5tX3RvID0gcGFp
clRvLmZpcnN0OworCisgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9mdW5j
dGlvbi5tX2Zyb20gPSBwYWlyRnJvbS5zZWNvbmQ7CisgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX3RvID0gcGFpclRvLnNlY29uZDsKKyAgICB9CisKKyAg
ICB2b2lkIHNldEZyb21BbmRCeVZhbHVlcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25z
dCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgYnkpIGZpbmFsCisgICAgeworICAgICAgICBz
ZXRGcm9tQW5kVG9WYWx1ZXModGFyZ2V0RWxlbWVudCwgZnJvbSwgYnkpOworICAgICAgICBpZiAo
bV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1bmN0aW9uLm1fZnJvbSAhPSBTVkdNYXJr
ZXJPcmllbnRBbmdsZSB8fCBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1fZnVuY3Rpb24u
bV90byAhPSBTVkdNYXJrZXJPcmllbnRBbmdsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxLT5tX2Z1bmN0aW9uLmFkZEZyb21BbmRUb1Zh
bHVlcyh0YXJnZXRFbGVtZW50KTsKKyAgICB9CisKKyAgICB2b2lkIHByb2dyZXNzKFNWR0VsZW1l
bnQqIHRhcmdldEVsZW1lbnQsIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50
KSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+
bV9mdW5jdGlvbi5tX2Zyb20gIT0gbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1bmN0
aW9uLm1fdG8pIHsKKyAgICAgICAgICAgIC8vIERpc2NyZXRlIGFuaW1hdGlvbiAtIG5vIGxpbmVh
ciBpbnRlcnBvbGF0aW9uIHBvc3NpYmxlIGJldHdlZW4gdmFsdWVzIChlLmcuIGF1dG8gdG8gYW5n
bGUpLgorICAgICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5wcm9ncmVzcyh0
YXJnZXRFbGVtZW50LCBwZXJjZW50YWdlLCByZXBlYXRDb3VudCk7CisKKyAgICAgICAgICAgIFNW
R0FuZ2xlVmFsdWUgYW5pbWF0ZWRBbmdsZTsKKyAgICAgICAgICAgIGlmIChwZXJjZW50YWdlIDwg
MC41ZiAmJiBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1fZnVuY3Rpb24ubV9mcm9tID09
IFNWR01hcmtlck9yaWVudEFuZ2xlKQorICAgICAgICAgICAgICAgIGFuaW1hdGVkQW5nbGUgPSBt
X2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEtPm1fZnVuY3Rpb24ubV9mcm9tOworICAgICAgICAg
ICAgZWxzZSBpZiAocGVyY2VudGFnZSA+PSAwLjVmICYmIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9yMi0+bV9mdW5jdGlvbi5tX3RvID09IFNWR01hcmtlck9yaWVudEFuZ2xlKQorICAgICAgICAg
ICAgICAgIGFuaW1hdGVkQW5nbGUgPSBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEtPm1fZnVu
Y3Rpb24ubV90bzsKKworICAgICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxLT5t
X2FuaW1hdGVkLT5zZXRBbmltVmFsKGFuaW1hdGVkQW5nbGUpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+
bV9mdW5jdGlvbi5tX2Zyb20gPT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpIHsKKyAgICAgICAgICAg
IC8vIFJlZ3VsYXIgZnJvbS0gdG9hbmdsZSBhbmltYXRpb24sIHdpdGggc3VwcG9ydCBmb3Igc21v
b3RoIGludGVycG9sYXRpb24sIGFuZCBhZGRpdGl2ZSBhbmQgYWNjdW11bGF0ZWQgYW5pbWF0aW9u
LgorICAgICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2FuaW1hdGVkLT5z
ZXRBbmltVmFsKFNWR01hcmtlck9yaWVudEFuZ2xlKTsKKworICAgICAgICAgICAgbV9hbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3IxLT5wcm9ncmVzcyh0YXJnZXRFbGVtZW50LCBwZXJjZW50YWdlLCBy
ZXBlYXRDb3VudCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAv
LyBhdXRvLCBhdXRvLXN0YXJ0LXJldmVyc2UsIG9yIHVua25vd24uCisgICAgICAgIG1fYW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+bV9hbmltYXRlZC0+YW5pbVZhbCgpLT52YWx1ZSgpLnNldFZh
bHVlKDApOworCisgICAgICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1fZnVu
Y3Rpb24ubV9mcm9tID09IFNWR01hcmtlck9yaWVudEF1dG8gfHwgbV9hbmltYXRlZFByb3BlcnR5
QW5pbWF0b3IyLT5tX2Z1bmN0aW9uLm1fZnJvbSA9PSBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRS
ZXZlcnNlKQorICAgICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2FuaW1h
dGVkLT5zZXRBbmltVmFsKG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5t
X2Zyb20pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmlt
YXRvcjItPm1fYW5pbWF0ZWQtPnNldEFuaW1WYWwoU1ZHTWFya2VyT3JpZW50VW5rbm93bik7Cisg
ICAgfQorCisgICAgdm9pZCBzdG9wKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIGZpbmFsCisg
ICAgeworICAgICAgICBpZiAoIW1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+bV9hbmltYXRl
ZC0+aXNBbmltYXRpbmcoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXBwbHkodGFy
Z2V0RWxlbWVudCk7CisgICAgICAgIEJhc2U6OnN0b3AodGFyZ2V0RWxlbWVudCk7CisgICAgfQor
fTsKKwogY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGlj
IFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3I8U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0
b3IsIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPiB7CiAgICAgdXNpbmcgQmFzZSA9IFNWR0Fu
aW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3I8U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3IsIFNW
R0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPjsKICAgICB1c2luZyBCYXNlOjpCYXNlOwpAQCAtNDAs
NyArMTEzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yIGZpbgogcHVi
bGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0
ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNN
b2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFu
aW1hdG9yPihuZXcgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yKGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSkpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdB
bmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5p
bWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtODMsNyArMTU2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0
ZWROdW1iZXJQYWlyQW5pbWF0b3IgZmluYQogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1i
ZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkMiwgQW5pbWF0
aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxh
dGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihuZXcgU1ZHQW5pbWF0ZWROdW1iZXJQ
YWlyQW5pbWF0b3IoYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKSk7CisgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5j
dGlvbkltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgJKHJldmlzaW9uIDI0MzQ2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFs
dWVGdW5jdGlvbkltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMzMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTVkdBbmltYXRpb25BbmdsZUZ1bmN0aW9uIDogcHVi
bGljIFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbjxTVkdBbmdsZVZhbHVlPiB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlv
bjxTVkdBbmdsZVZhbHVlPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCisgICAgdm9pZCBzZXRG
cm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlCisgICAgeworICAgICAgICAvLyBWYWx1ZXMgd2lsbCBiZSBzZXQgYnkgU1ZHQW5p
bWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICB2b2lkIHByb2dyZXNzKFNWR0VsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdl
LCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5nbGVWYWx1ZSYgYW5pbWF0ZWQpCisgICAgewor
ICAgICAgICBmbG9hdCBudW1iZXIgPSBhbmltYXRlZC52YWx1ZSgpOworICAgICAgICBudW1iZXIg
PSBCYXNlOjpwcm9ncmVzcyhwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgbV9mcm9tLnZhbHVlKCks
IG1fdG8udmFsdWUoKSwgdG9BdEVuZE9mRHVyYXRpb24oKS52YWx1ZSgpLCBudW1iZXIpOworICAg
ICAgICBhbmltYXRlZC5zZXRWYWx1ZShudW1iZXIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yOworCisgICAgdm9pZCBh
ZGRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCopIG92ZXJyaWRlCisgICAgeworICAgICAgICBt
X3RvLnNldFZhbHVlKG1fdG8udmFsdWUoKSArIG1fZnJvbS52YWx1ZSgpKTsKKyAgICB9Cit9Owor
CiBjbGFzcyBTVkdBbmltYXRpb25Db2xvckZ1bmN0aW9uIDogcHVibGljIFNWR0FuaW1hdGlvbkFk
ZGl0aXZlVmFsdWVGdW5jdGlvbjxDb2xvcj4gewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBT
VkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb248Q29sb3I+OwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbkltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25E
aXNjcmV0ZUZ1bmN0aW9uSW1wbC5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uSW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0MiwzNyBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAordGVtcGxh
dGU8dHlwZW5hbWUgRW51bVR5cGU+CitjbGFzcyBTVkdBbmltYXRpb25FbnVtZXJhdGlvbkZ1bmN0
aW9uIDogcHVibGljIFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb248RW51bVR5cGU+IHsKKyAg
ICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbjxFbnVtVHlwZT47Cisg
ICAgdXNpbmcgQmFzZTo6bV9mcm9tOworICAgIHVzaW5nIEJhc2U6Om1fdG87CisKK3B1YmxpYzoK
KyAgICB1c2luZyBCYXNlOjpCYXNlOworCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZH
RWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIG1fZnJvbSA9IFNWR1Byb3BlcnR5VHJhaXRzPEVudW1UeXBlPjo6ZnJv
bVN0cmluZyhmcm9tKTsKKyAgICAgICAgbV90byA9IFNWR1Byb3BlcnR5VHJhaXRzPEVudW1UeXBl
Pjo6ZnJvbVN0cmluZyh0byk7CisgICAgfQorfTsKKworY2xhc3MgU1ZHQW5pbWF0aW9uT3JpZW50
VHlwZUZ1bmN0aW9uIDogcHVibGljIFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb248U1ZHTWFy
a2VyT3JpZW50VHlwZT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRpb25E
aXNjcmV0ZUZ1bmN0aW9uPFNWR01hcmtlck9yaWVudFR5cGU+OworICAgIHVzaW5nIEJhc2U6OkJh
c2U7CisKKyAgICB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50KiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIFZhbHVlcyB3
aWxsIGJlIHNldCBieSBTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3IuCisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
U1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yOworfTsKKwogY2xhc3MgU1ZHQW5pbWF0aW9u
UHJlc2VydmVBc3BlY3RSYXRpb0Z1bmN0aW9uIDogcHVibGljIFNWR0FuaW1hdGlvbkRpc2NyZXRl
RnVuY3Rpb248U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPiB7CiBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb248U1ZHUHJlc2VydmVBc3BlY3RS
YXRpb1ZhbHVlPjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJp
YnV0ZVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1h
dGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdC5oIgpAQCAtNTIsMTIgKzUxLDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEFu
aW1hdGFibGUgYXR0cmlidXRlcwotICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3ll
ZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgdHlwZW5hbWUgRW51bVR5cGUs
IFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8RW51bVR5cGU+IE93bmVyVHlwZTo6KmF0
dHJpYnV0ZT4KLSAgICB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlKCkKLSAgICB7Ci0gICAgICAgIHJl
Z2lzdGVyQXR0cmlidXRlKFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGVBY2Nlc3NvcjxP
d25lclR5cGUsIEVudW1UeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPGF0dHJpYnV0ZU5hbWUsIGF0
dHJpYnV0ZT4oKSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZExlbmd0
aEF0dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+CiAgICAgdm9pZCByZWdpc3RlckF0dHJp
YnV0ZSgpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVj
b3JhdGVkRW51bWVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNWR0RlY29yYXRlZFBy
aW1pdGl2ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIERl
Y29yYXRpb25UeXBlLCB0eXBlbmFtZSBFbnVtVHlwZT4KK2NsYXNzIFNWR0RlY29yYXRlZEVudW1l
cmF0aW9uIDogcHVibGljIFNWR0RlY29yYXRlZFByaW1pdGl2ZTxEZWNvcmF0aW9uVHlwZSwgRW51
bVR5cGU+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHRGVjb3JhdGVkUHJpbWl0aXZlPERlY29yYXRp
b25UeXBlLCBFbnVtVHlwZT47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB1c2luZyBCYXNl
OjptX3ZhbHVlOworCitwdWJsaWM6CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEVudW1U
eXBlJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3Jh
bDxEZWNvcmF0aW9uVHlwZT46OnZhbHVlLCAiRGVjb3JhdGlvblR5cGUgZm9ybSBlbnVtIHNob3Vs
ZCBiZSBpbnRlZ3JhbC4iKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHRGVj
b3JhdGVkRW51bWVyYXRpb24+KHZhbHVlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBz
ZXRWYWx1ZShjb25zdCBEZWNvcmF0aW9uVHlwZSYgdmFsdWUpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlID4gU1ZHSURMRW51bUxpbWl0czxFbnVtVHlwZT46Omhp
Z2hlc3RFeHBvc2VkRW51bVZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIEJhc2U6OnNldFZhbHVlSW50ZXJuYWwodmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBEZWNvcmF0aW9uVHlwZSB2YWx1ZSgpIGNvbnN0IG92ZXJyaWRlCisgICAg
eworICAgICAgICBpZiAoQmFzZTo6dmFsdWUoKSA+IFNWR0lETEVudW1MaW1pdHM8RW51bVR5cGU+
OjpoaWdoZXN0RXhwb3NlZEVudW1WYWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIG1fb3V0T2ZS
YW5nZUVudW1WYWx1ZTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OnZhbHVlKCk7CisgICAgfQorCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNWR0RlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlPj4g
Y2xvbmUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShtX3ZhbHVlKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgRGVjb3JhdGlvblR5cGUgbV9vdXRPZlJhbmdlRW51
bVZhbHVlID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0RlY29yYXRlZFByaW1pdGl2ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByaW1pdGl2ZS5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByaW1pdGl2ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdEZWNvcmF0ZWRQ
cm9wZXJ0eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIERl
Y29yYXRpb25UeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CitjbGFzcyBTVkdEZWNvcmF0ZWRQ
cmltaXRpdmUgOiBwdWJsaWMgU1ZHRGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGU+IHsK
KyAgICB1c2luZyBCYXNlID0gU1ZHRGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGU+Owor
CitwdWJsaWM6CisgICAgU1ZHRGVjb3JhdGVkUHJpbWl0aXZlKGNvbnN0IFByb3BlcnR5VHlwZSYg
dmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCitwcm90ZWN0
ZWQ6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAgIHZvaWQgc2V0VmFsdWVJbnRlcm5hbChj
b25zdCBEZWNvcmF0aW9uVHlwZSYgdmFsdWUpIG92ZXJyaWRlIHsgbV92YWx1ZSA9IHN0YXRpY19j
YXN0PFByb3BlcnR5VHlwZT4odmFsdWUpOyB9CisgICAgRGVjb3JhdGlvblR5cGUgdmFsdWVJbnRl
cm5hbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PERlY29yYXRpb25UeXBl
PihtX3ZhbHVlKTsgfQorCisgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+Ojp0b1N0cmluZyhtX3Zh
bHVlKTsgfQorCisgICAgUHJvcGVydHlUeXBlIG1fdmFsdWU7Cit9OworCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVj
b3JhdGVkUHJvcGVydHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29yYXRpb25UeXBlPgor
Y2xhc3MgU1ZHRGVjb3JhdGVkUHJvcGVydHkgeworcHVibGljOgorICAgIFNWR0RlY29yYXRlZFBy
b3BlcnR5KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgflNWR0RlY29yYXRlZFByb3BlcnR5KCkg
PSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlSW50ZXJuYWwoY29uc3QgRGVj
b3JhdGlvblR5cGUmKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlKGNvbnN0IERlY29y
YXRpb25UeXBlJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHNldFZhbHVlSW50ZXJuYWwodmFsdWUp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBVc2VkIGludGVybmFsbHku
IEl0IGRvZXNuJ3QgY2hlY2sgZm9yIGhpZ2hlc3RFeHBvc2VkRW51bVZhbHVlIGZvciBleGFtcGxl
LgorICAgIHZpcnR1YWwgRGVjb3JhdGlvblR5cGUgdmFsdWVJbnRlcm5hbCgpIGNvbnN0ID0gMDsK
KworICAgIC8vIFVzZWQgYnkgdGhlIERPTSBBUElzLgorICAgIHZpcnR1YWwgRGVjb3JhdGlvblR5
cGUgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZUludGVybmFsKCk7IH0KKworICAgIHZpcnR1
YWwgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHRGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGU+PiBjbG9uZSgpID0g
MDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTIgQEAgcHVibGljOgogICAgICAgICByZWdpc3Rl
clByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkQm9vbGVhbkFjY2Vzc29yPE93bmVy
VHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxwcm9wZXJ0eT4oKSk7CiAgICAgfQogCisgICAgdGVt
cGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRy
aWJ1dGVOYW1lLCB0eXBlbmFtZSBFbnVtVHlwZSwgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+
IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHko
KQorICAgIHsKKyAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eShhdHRyaWJ1dGVOYW1lLCBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uQWNjZXNzb3I8T3duZXJUeXBlLCBFbnVtVHlwZT46OnRlbXBsYXRlIHNp
bmdsZXRvbjxwcm9wZXJ0eT4oKSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5l
dmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZH
QW5pbWF0ZWRJbnRlZ2VyPiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KICAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlclByb3BlcnR5KCkKICAgICB7CkBAIC03Myw2ICs3OSwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJlZ2lzdGVyUHJvcGVydHkoYXR0cmlidXRlTmFtZSwgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
QWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPHByb3BlcnR5PigpKTsKICAg
ICB9CiAKKyAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlm
aWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEFuZ2xlPiBPd25lclR5cGU6
Oipwcm9wZXJ0eTEsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+IE93bmVyVHlwZTo6KnByb3Bl
cnR5Mj4KKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlclByb3BlcnR5KCkKKyAgICB7CisgICAgICAg
IHJlZ2lzdGVyUHJvcGVydHkoYXR0cmlidXRlTmFtZSwgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFj
Y2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxwcm9wZXJ0eTEsIHByb3BlcnR5
Mj4oKSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNv
bnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQb2ludExp
c3Q+IE93bmVyVHlwZTo6KnByb3BlcnR5PgogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVy
dHkoKQogICAgIHsKQEAgLTEyNyw2ICsxMzksMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
ZmluZEFjY2Vzc29yKGF0dHJpYnV0ZU5hbWUpOwogICAgIH0KIAorICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiBPd25lclR5cGUgb3ducyBhIHByb3BlcnR5IHdob3NlIG5hbWUgaXMgYXR0cmlidXRlTmFt
ZQorICAgIC8vIGFuZCBpdHMgdHlwZSBpcyBTVkdBbmltYXRlZExlbmd0aC4KKyAgICBzdGF0aWMg
Ym9vbCBpc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCisgICAgeworICAgICAgICBpZiAoY29uc3QgYXV0byogYWNjZXNzb3IgPSBmaW5k
QWNjZXNzb3IoYXR0cmlidXRlTmFtZSkpCisgICAgICAgICAgICByZXR1cm4gYWNjZXNzb3ItPmlz
QW5pbWF0ZWRMZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIFF1
YWxpZmllZE5hbWUgcHJvcGVydHlBdHRyaWJ1dGVOYW1lKGNvbnN0IFNWR1Byb3BlcnR5JiBwcm9w
ZXJ0eSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cmli
dXRlTmFtZSA9IG51bGxRTmFtZSgpOwpAQCAtMTk5LDYgKzIyMCwyMiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBpc0FuaW1hdGVkUHJvcGVydHlBdHRyaWJ1dGU7CiAgICAgfQogCisgICAgYm9v
bCBpc0FuaW1hdGVkU3R5bGVQcm9wZXJ0eUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hTZXQ8UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqPj4gYW5p
bWF0ZWRTdHlsZUF0dHJpYnV0ZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UXVhbGlmaWVkTmFt
ZTo6UXVhbGlmaWVkTmFtZUltcGwqPiB7CisgICAgICAgICAgICBTVkdOYW1lczo6Y3hBdHRyLT5p
bXBsKCksCisgICAgICAgICAgICBTVkdOYW1lczo6Y3lBdHRyLT5pbXBsKCksCisgICAgICAgICAg
ICBTVkdOYW1lczo6ckF0dHItPmltcGwoKSwKKyAgICAgICAgICAgIFNWR05hbWVzOjpyeEF0dHIt
PmltcGwoKSwKKyAgICAgICAgICAgIFNWR05hbWVzOjpyeUF0dHItPmltcGwoKSwKKyAgICAgICAg
ICAgIFNWR05hbWVzOjpoZWlnaHRBdHRyLT5pbXBsKCksCisgICAgICAgICAgICBTVkdOYW1lczo6
d2lkdGhBdHRyLT5pbXBsKCksCisgICAgICAgICAgICBTVkdOYW1lczo6eEF0dHItPmltcGwoKSwK
KyAgICAgICAgICAgIFNWR05hbWVzOjp5QXR0ci0+aW1wbCgpCisgICAgICAgIH07CisgICAgICAg
IHJldHVybiBpc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpICYmIGFuaW1h
dGVkU3R5bGVBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zKGF0dHJpYnV0ZU5hbWUuaW1wbCgpKTsK
KyAgICB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+IGNyZWF0
ZUFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwg
Ym9vbCBpc0FkZGl0aXZlKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBhbmltYXRvcjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVJlZ2lzdHJ5LmgJKHJldmlz
aW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5
UmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIFN0cmluZz4gc3luY2hyb25pemVBbGxBdHRy
aWJ1dGVzKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0ZWRQcm9wZXJ0
eUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0FuaW1hdGVkU3R5bGVQcm9wZXJ0eUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFu
aW1hdG9yPiBjcmVhdGVBbmltYXRvcihjb25zdCBRdWFsaWZpZWROYW1lJiwgQW5pbWF0aW9uTW9k
ZSwgQ2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgU1ZHQXR0cmlidXRlQW5pbWF0b3ImKSBjb25zdCA9IDA7
CiB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzNDY2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDMtMjUgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFNW
RyB0ZWFyIG9mZiBvYmplY3RzIGZvciBTVkdBbmdsZSwgU1ZHQW5pbWF0ZWRBbmdsZSBhbmQgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk2MDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgor
CisgICAgICAgICogc3ZnL2RvbS9TVkdBbmltYXRlZEVudW1lcmF0aW9uLVNWR01hcmtlckVsZW1l
bnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN2Zy9kb20vU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bi1TVkdNYXJrZXJFbGVtZW50Lmh0bWw6CisgICAgICAgIEZpeGVzIGNhc2VzIHRoYXQgdGhlIHRl
YXIgb2ZmIG9iamVjdHMgY291bGQgbm90IGhhbmRsZSBjb3JyZWN0bHkgZm9yIHRoZQorICAgICAg
ICBwYWlyZWQgeyBhbmdsZSwgb3JpZW50VHlwZSB9LiBBbHNvIHdoZW4gc2V0dGluZyB0aGUgb3Jp
ZW50IHR5cGUgdG8gImF1dG8iCisgICAgICAgIG9yICJhdXRvLXN0YXJ0LXJldmVyc2UiLCB0aGUg
b3JpZW50IGFuZ2xlIHNob3VsZCBiZSByZXNldCB0bworICAgICAgICBTVkdfQU5HTEVUWVBFX1VO
U1BFQ0lGSUVEIGFuZCBpcyBub3Qgc3VwcHNlZCB0byBrZWVwIGl0cyBvcmlnaW5hbCB2YWx1ZS4K
KwogMjAxOS0wMy0yNSAgU2hhd24gUm9iZXJ0cyAgPHNyb2JlcnRzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBwZXJmb3JtYW5jZS1hcGkvcGVyZm9ybWFuY2Utb2JzZXJ2ZXItcGVyaW9kaWMuaHRtbCBp
cyBhIGZsYWt5IGZhaWx1cmUKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbi1TVkdNYXJrZXJFbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdmcvZG9tL1NWR0FuaW1hdGVkRW51bWVyYXRpb24tU1ZHTWFya2VyRWxlbWVu
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI0MzQ2NikKKysrIExheW91dFRlc3RzL3N2Zy9kb20v
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi1TVkdNYXJrZXJFbGVtZW50LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTAxLDE2ICsxMDEsMTYgQEAgUEFTUyBtYXJrZXJFbGVtZW50LmdldEF0
dHJpYnV0ZSgnb3JpZW50JwogCiBUZXN0IGNhc2Ugc2Vuc2l0aXZpdHkgb2YgYXR0cmlidXRlcyAt
IHRyeSBzZXR0aW5nIGludmFsaWQgdmFsdWVzCiBQQVNTIG1hcmtlckVsZW1lbnQuc2V0QXR0cmli
dXRlKCdvcmllbnQnLCAnQVVUTy1TVEFSVC1SRVZFUlNFJykgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCi1GQUlMIG1hcmtlckVsZW1lbnQuZ2V0QXR0cmlidXRlKCdvcmllbnQnKSBzaG91bGQgYmUg
QVVUTy1TVEFSVC1SRVZFUlNFLiBXYXMgMTBkZWcuCi1QQVNTIG1hcmtlckVsZW1lbnQub3JpZW50
VHlwZS5iYXNlVmFsIGlzIFNWR01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9PUklFTlRfQU5HTEUK
K1BBU1MgbWFya2VyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ29yaWVudCcpIGlzICJBVVRPLVNUQVJU
LVJFVkVSU0UiCitQQVNTIG1hcmtlckVsZW1lbnQub3JpZW50VHlwZS5iYXNlVmFsIGlzIFNWR01h
cmtlckVsZW1lbnQuU1ZHX01BUktFUl9PUklFTlRfVU5LTk9XTgogUEFTUyBtYXJrZXJFbGVtZW50
LnNldEF0dHJpYnV0ZSgnb3JpZW50JywgJ0FVVE8nKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
LUZBSUwgbWFya2VyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ29yaWVudCcpIHNob3VsZCBiZSBBVVRP
LiBXYXMgMTBkZWcuCi1QQVNTIG1hcmtlckVsZW1lbnQub3JpZW50VHlwZS5iYXNlVmFsIGlzIFNW
R01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9PUklFTlRfQU5HTEUKK1BBU1MgbWFya2VyRWxlbWVu
dC5nZXRBdHRyaWJ1dGUoJ29yaWVudCcpIGlzICJBVVRPIgorUEFTUyBtYXJrZXJFbGVtZW50Lm9y
aWVudFR5cGUuYmFzZVZhbCBpcyBTVkdNYXJrZXJFbGVtZW50LlNWR19NQVJLRVJfT1JJRU5UX1VO
S05PV04KIAogU3dpdGNoIGJhY2sgdG8gJ2F1dG8nIHZhbHVlCiBQQVNTIG1hcmtlckVsZW1lbnQu
b3JpZW50VHlwZS5iYXNlVmFsID0gU1ZHTWFya2VyRWxlbWVudC5TVkdfTUFSS0VSX09SSUVOVF9B
VVRPIGlzIFNWR01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9PUklFTlRfQVVUTwotUEFTUyBtYXJr
ZXJFbGVtZW50Lm9yaWVudEFuZ2xlLmJhc2VWYWwudmFsdWUgaXMgMTAKLVBBU1MgbWFya2VyRWxl
bWVudC5vcmllbnRBbmdsZS5iYXNlVmFsLnVuaXRUeXBlIGlzIFNWR0FuZ2xlLlNWR19BTkdMRVRZ
UEVfREVHCitQQVNTIG1hcmtlckVsZW1lbnQub3JpZW50QW5nbGUuYmFzZVZhbC52YWx1ZSBpcyAw
CitQQVNTIG1hcmtlckVsZW1lbnQub3JpZW50QW5nbGUuYmFzZVZhbC51bml0VHlwZSBpcyBTVkdB
bmdsZS5TVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVECiBQQVNTIG1hcmtlckVsZW1lbnQub3JpZW50
VHlwZS5iYXNlVmFsIGlzIFNWR01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9PUklFTlRfQVVUTwog
UEFTUyBtYXJrZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnb3JpZW50JykgaXMgImF1dG8iCiAKSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi1TVkdNYXJrZXJF
bGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdBbmltYXRl
ZEVudW1lcmF0aW9uLVNWR01hcmtlckVsZW1lbnQuaHRtbAkocmV2aXNpb24gMjQzNDY2KQorKysg
TGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdBbmltYXRlZEVudW1lcmF0aW9uLVNWR01hcmtlckVsZW1l
bnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDI0ICsxMzIsMTggQEAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJtYXJrZXJFbGVtZW50LmdldAogZGVidWcoIiIpOwogZGVidWcoIlRlc3QgY2Fz
ZSBzZW5zaXRpdml0eSBvZiBhdHRyaWJ1dGVzIC0gdHJ5IHNldHRpbmcgaW52YWxpZCB2YWx1ZXMi
KTsKIHNob3VsZE5vdFRocm93KCJtYXJrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnb3JpZW50Jywg
J0FVVE8tU1RBUlQtUkVWRVJTRScpIik7Ci0vLyBUaGUgbGluZSBiZWxvdyBmYWlscyBhcyBhIHJl
c3VsdCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTQxCi0v
LyBUaGUgYXR0cmlidXRlIHZhbHVlIGlzIG5vdCB1cGRhdGVkIHRvIHRoZSBpbnZhbGlkIHZhbHVl
LgotLy8gVGhlIGV4cGVjdGVkIHJlc3VsdCByZWNvZ25pc2VzIHRoaXMgYW5kIHNob3VsZCBiZSB1
cGRhdGVkIHdoZW4gdGhlIGFib3ZlIGJ1ZwotLy8gaXMgcmVzb2x2ZWQuCi0vLyBXaGF0J3MgaW1w
b3J0YW50IGhlcmUgdGhvdWdoIGlzIHRoYXQgdGhlIERPTSB2YWx1ZXMgYXJlIHVuY2hhbmdlZCwg
YW5kIHRoaXMKLS8vIGlzIGRlbW9uc3RyYXRlZCBjb3JyZWN0bHkuCiBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIm1hcmtlckVsZW1lbnQuZ2V0QXR0cmlidXRlKCdvcmllbnQnKSIsICJBVVRPLVNUQVJU
LVJFVkVSU0UiKTsKLXNob3VsZEJlKCJtYXJrZXJFbGVtZW50Lm9yaWVudFR5cGUuYmFzZVZhbCIs
ICJTVkdNYXJrZXJFbGVtZW50LlNWR19NQVJLRVJfT1JJRU5UX0FOR0xFIik7CitzaG91bGRCZSgi
bWFya2VyRWxlbWVudC5vcmllbnRUeXBlLmJhc2VWYWwiLCAiU1ZHTWFya2VyRWxlbWVudC5TVkdf
TUFSS0VSX09SSUVOVF9VTktOT1dOIik7CiAKIHNob3VsZE5vdFRocm93KCJtYXJrZXJFbGVtZW50
LnNldEF0dHJpYnV0ZSgnb3JpZW50JywgJ0FVVE8nKSIpOwogc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJtYXJrZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnb3JpZW50JykiLCAiQVVUTyIpOwotc2hvdWxk
QmUoIm1hcmtlckVsZW1lbnQub3JpZW50VHlwZS5iYXNlVmFsIiwgIlNWR01hcmtlckVsZW1lbnQu
U1ZHX01BUktFUl9PUklFTlRfQU5HTEUiKTsgCitzaG91bGRCZSgibWFya2VyRWxlbWVudC5vcmll
bnRUeXBlLmJhc2VWYWwiLCAiU1ZHTWFya2VyRWxlbWVudC5TVkdfTUFSS0VSX09SSUVOVF9VTktO
T1dOIik7IAogCiBkZWJ1ZygiIik7CiBkZWJ1ZygiU3dpdGNoIGJhY2sgdG8gJ2F1dG8nIHZhbHVl
Iik7CiBzaG91bGRCZSgibWFya2VyRWxlbWVudC5vcmllbnRUeXBlLmJhc2VWYWwgPSBTVkdNYXJr
ZXJFbGVtZW50LlNWR19NQVJLRVJfT1JJRU5UX0FVVE8iLCAiU1ZHTWFya2VyRWxlbWVudC5TVkdf
TUFSS0VSX09SSUVOVF9BVVRPIik7Ci1zaG91bGRCZSgibWFya2VyRWxlbWVudC5vcmllbnRBbmds
ZS5iYXNlVmFsLnZhbHVlIiwgIjEwIik7Ci1zaG91bGRCZSgibWFya2VyRWxlbWVudC5vcmllbnRB
bmdsZS5iYXNlVmFsLnVuaXRUeXBlIiwgIlNWR0FuZ2xlLlNWR19BTkdMRVRZUEVfREVHIik7Citz
aG91bGRCZSgibWFya2VyRWxlbWVudC5vcmllbnRBbmdsZS5iYXNlVmFsLnZhbHVlIiwgIjAiKTsK
K3Nob3VsZEJlKCJtYXJrZXJFbGVtZW50Lm9yaWVudEFuZ2xlLmJhc2VWYWwudW5pdFR5cGUiLCAi
U1ZHQW5nbGUuU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRCIpOwogc2hvdWxkQmUoIm1hcmtlckVs
ZW1lbnQub3JpZW50VHlwZS5iYXNlVmFsIiwgIlNWR01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9P
UklFTlRfQVVUTyIpOwogc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZXJFbGVtZW50LmdldEF0
dHJpYnV0ZSgnb3JpZW50JykiLCAiYXV0byIpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365922</attachid>
            <date>2019-03-25 16:58:22 -0700</date>
            <delta_ts>2019-03-25 18:26:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196087-20190325165821.patch</filename>
            <type>text/plain</type>
            <size>219454</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyMyBAQAorMjAxOS0wMy0yNSAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0
aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR0FuZ2xlLCBTVkdBbmltYXRlZEFuZ2xlIGFu
ZCBTVkdBbmltYXRlZEVudW1lcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTYwODcKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgdGhlIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNW
R0FuaW1hdGVkRW51bWVyYXRpb24gd2lsbCBiZSAKKyAgICAgICAgcmVtb3ZlZC4gQmVjYXVzZSB0
aGUgYW5nbGUgaXMgcGFpcmVkIHdpdGggdGhlIG9yaWVudCB0eXBlIHNvIGl0cyB0ZWFyCisgICAg
ICAgIG9mZiBvYmplY3RzIGhhdmUgdG8gYmUgcmVtb3ZlZCBhcyB3ZWxsLiBIZXJlIGlzIHdoYXQg
dGhpcyBwYXRjaCBkb2VzOgorCisgICAgICAgIC0tIFNWR0FuZ2xlIGlzIG5vdyBhIHN1cGVyY2xh
c3Mgb2YgU1ZHVmFsdWVQcm9wZXJ0eTxTVkdBbmdsZVZhbHVlPi4gSXRzIAorICAgICAgICByZWxh
dGlvbnNoaXAgd2l0aCBpdHMgb3duZXIgd2lsbCBiZSBtYW5hZ2VkIGJ5IHRoZSBvd25lciBvZiBp
dHMgYmFzZQorICAgICAgICBjbGFzcyBTVkdQcm9wZXJ0eS4KKworICAgICAgICAtLSBTVkdBbmlt
YXRlZEFuZ2xlIGlzIG5vdyBkZWZpbmVkIHRvIGJlIFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eTwK
KyAgICAgICAgU1ZHQW5nbGU+LiBBbGwgdGhlIERPTSBpbnRlcmZhY2VzIHdpbGwgYmUgaGFuZGxl
ZCBieSB0aGUgYmFzZSBjbGFzcworICAgICAgICBnaXZlbiBpdHMgYmFzZVZhbCBhbmQgYW5pbVZh
bCBhcmUgb2YgdHlwZSBTVkdBbmdsZS4KKworICAgICAgICAtLSBTVkdBbmltYXRlZEVudW1lcmF0
aW9uIGlzIG5vdyBkZWZpbmVkIHRvIGJlCisgICAgICAgIFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJv
cGVydHk8U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24sIHVuc2lnbmVkPi4KKyAgICAgICAgVGhpcyBj
YW4gYmUgcmVhZDogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBpcyBhbiBTVkdBbmltYXRlZFByb3Bl
cnR5IHdoaWNoCisgICAgICAgIGRlY29yYXRlcyB0aGUgIlNWR0RlY29yYXRlZEVudW1lcmF0aW9u
IiB0eXBlIHRvICJ1bnNpZ25lZCIuIFRoZSByZWFzb24KKyAgICAgICAgZm9yIHRoaXMgY29tcGxp
Y2F0aW9uIGlzIHRoZSBJREwgb2YgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBkZWZpbmVzIHRoZQor
ICAgICAgICBiYXNlVmFsIGFuZCBhbmltVmFsIGFyZSBvZiB0eXBlIHVuc2lnbmVkLiBIb3dldmVy
IFNWR0FuaW1hdGVkRW51bWVyYXRpb24KKyAgICAgICAgc2hvdWxkIGJlIGFibGUgdG8gY29udmVy
dCBhIHN0cmluZyB0byBpdHMgZW51bSB2YWx1ZSBhbmQgdmljZSB2ZXJzYS4KKworICAgICAgICAt
LSBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5IGlzIGEgdGVtcGxhdGUgY2xhc3Mgd2hpY2gg
bWFwcyBmcm9tCisgICAgICAgIERlY29yYXRlZFByb3BlcnR5IHRvIERlY29yYXRpb25UeXBlLiBU
aGUgRGVjb3JhdGVkUHJvcGVydHkgaXMgYWN0dWFsbHkKKyAgICAgICAgYSB0ZW1wbGF0ZSBjbGFz
cyB3aGljaCBleHBvc2VzIGEgcHJvcGVydHkgb2YgdHlwZSBEZWNvcmF0aW9uVHlwZS4KKworICAg
ICAgICAtLSBTVkdEZWNvcmF0ZWRQcm9wZXJ0eSBpcyBhbiBhYnN0cmFjdCBjbGFzcyB3aGljaCBt
YW5hZ2VzIHNldHRpbmcgYW5kCisgICAgICAgIGdldHRpbmcgYSBwcm9wZXJ0eSBpbiBEZWNvcmF0
aW9uVHlwZSByZWdhcmRsZXNzIG9mIGhvdyBpdCBpcyBhY3R1YWxseQorICAgICAgICBzdG9yZWQu
IAorCisgICAgICAgIC0tIFNWR0RlY29yYXRlZFByaW1pdGl2ZSBpcyBhIHN1cGVyY2xhc3Mgb2Yg
U1ZHRGVjb3JhdGVkUHJvcGVydHkgd2hpY2gKKyAgICAgICAgc3RvcmVzIGEgcHJpbWl0aXZlIHBy
b3BlcnR5IHdob3NlIHR5cGUgaXMgUHJvcGVydHlUeXBlIGJ1dCBjYW4gZGVjb3JhdGUKKyAgICAg
ICAgaXQgdG8gdGhlIGNhbGxlcnMgYXMgRGVjb3JhdGlvblR5cGUuCisKKyAgICAgICAgLS0gU1ZH
RGVjb3JhdGVkRW51bWVyYXRpb24gaXMgYSBzdXBlcmNsYXNzIG9mIFNWR0RlY29yYXRlZFByaW1p
dGl2ZQorICAgICAgICB3aGljaCBzdG9yZXMgYSBwcmltaXRpdmUgdHlwZSBEZWNvcmF0aW9uVHlw
ZSBsaWtlICJCbGVuZE1vZGUiIGJ1dAorICAgICAgICBkZWNvcmF0ZXMgaXQgYXMgInVuc2lnbmVk
IgorCisgICAgICAgIFRvIGdldCB0aGUgbWVjaGFuaWNzIG9mIHRoaXMgY2hhbmdlIGNvcnJlY3Qs
IG5ldyBhY2Nlc3NvcnMsIGFuaW1hdG9ycworICAgICAgICBhbmQgYW5pbWF0aW9uIGZ1bmN0aW9u
cyBuZWVkIHRvIGJlIGFkZGVkIGZvciBTVkdBbmltYXRlZEFuZ2xlLAorICAgICAgICBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uIGFuZCBTVkdBbmltYXRlZE9yaWVudFR5cGUuIEJ1dCBzaW5jZSBhbmds
ZSBhbmQKKyAgICAgICAgdGhlIG9yaWVudCB0eXBlIGFyZSBwYWlyZWQgdW5kZXIgYSBzaW5nbGUg
YXR0cmlidXRlLCBhIHBhaXIgYWNjZXNzb3IgYW5kCisgICAgICAgIGFuaW1hdG9yIGFyZSBhbHNv
IG5lZWRlZCBmb3IgdGhlIHBhaXIgeyBhbmdsZSwgb3JpZW50VHlwZSB9LgorCisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHN2Zy9TVkdBbmdsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5nbGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6dW5pdFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5nbGU6OnNldFZhbHVlRm9yQmluZGluZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5nbGU6OnZhbHVlRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5nbGU6OnNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmdsZTo6dmFsdWVJblNwZWNpZmllZFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuZ2xl
OjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuZ2xlOjpuZXdWYWx1
ZVNwZWNpZmllZFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuZ2xlOjpjb252ZXJ0VG9T
cGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6dmFsdWVBc1N0cmlu
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6U1ZHQW5nbGUpOiBEZWxl
dGVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZEVudW1lcmF0aW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6dHlwZSBjb25zdCk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0b3JGYWN0b3J5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpTVkdDbGlwUGF0aEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpyZWdpc3Rl
ckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6
OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6cmVn
aXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp0eXBlQW5pbWF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmF0dHJpYnV0
ZVJlZ2lzdHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50Ojppc0tub3duQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpjb21t
aXRQcm9wZXJ0eUNoYW5nZSk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6
IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxCbGVuZE1vZGU+Ojpmcm9tU3RyaW5nKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1
dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6U1ZHRkVDb21wb3NpdGVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMp
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6
cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVk
LgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cmVn
aXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6U1ZHRkVNb3JwaG9sb2d5
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50Ojpy
ZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6U1ZHRkVUdXJidWxlbmNl
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6U1ZH
R3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6
cmVnaXN0ZXJBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6c3ByZWFkTWV0aG9kIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6Z3JhZGllbnRVbml0cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnNwcmVhZE1ldGhv
ZEFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6Z3JhZGll
bnRVbml0c0FuaW1hdGVkKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BbmdsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRUeXBlSWRlbnRpZmllcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRBbmdsZUlkZW50aWZpZXIp
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR01hcmtlclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0
czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6YXV0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6YXV0b1N0YXJ0UmV2ZXJzZVN0
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmll
bnRUeXBlPjo6ZnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0
czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6dG9TdHJpbmcpOgorICAgICAgICAqIHN2Zy9TVkdNYXNr
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6U1ZHTWFza0Vs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OnJlZ2lzdGVyQXR0cmli
dXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXR0
ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6U1ZH
UGF0dGVybkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnJl
Z2lzdGVyQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxl
bWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR1RleHRDb250ZW50RWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnJlZ2lzdGVyQXR0
cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6Omxlbmd0aEFkanVzdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6Omxlbmd0aEFkanVzdEFu
aW1hdGVkKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVmFsdWUu
aDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0
eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVy
dHk6OlNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eTo6c2V0QmFzZVZhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5OjpzZXRCYXNlVmFsSW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eTo6YmFzZVZhbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5OjpzZXRB
bmltVmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk6
OmFuaW1WYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWREZWNvcmF0ZWRQ
cm9wZXJ0eTo6Y3VycmVudFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmg6IFJlbW92ZWQuCisgICAgICAg
ICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oOgorICAg
ICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaDoK
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRPcmllbnRUeXBlOjpjcmVhdGUpOgorICAgICAgICAq
IHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3JJbXBsLmg6Cisg
ICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcjo6YXBw
ZW5kQW5pbWF0ZWRJbnN0YW5jZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkFuZ2xlRnVuY3Rpb246OnByb2dyZXNzKToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uSW1wbC5o
OgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5Lmg6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcmltaXRpdmUuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdEZWNvcmF0ZWRQcmltaXRpdmU6OlNWR0RlY29yYXRlZFByaW1pdGl2
ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdEZWNvcmF0ZWRQcm9wZXJ0eTo6c2V0VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRGVjb3JhdGVkUHJvcGVydHk6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk6OmlzQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVn
aXN0cnkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdTdGF0aWNQcm9wZXJ0eVRlYXJP
ZmYuaDogUmVtb3ZlZC4KKwogMjAxOS0wMy0yNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gQnJlYWsgYSByZWZlcmVuY2UgY3ljbGUgYmV0d2VlbiBQcmV2
aWV3TG9hZGVyIGFuZCBSZXNvdXJjZUxvYWRlcgpJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9u
IDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0yMjY3LDggKzIyNjcsNiBAQCBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCiBzdmcvU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlLmNwcAogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAogc3Zn
L1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAotc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3Bw
Ci1zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAKIHN2Zy9TVkdBbmltYXRlZExlbmd0aC5j
cHAKIHN2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCiBzdmcvU1ZHQW5pbWF0ZWRQYXRoLmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNyArMjM3LDYgQEAK
IAkJMDgwRTQ5MjgxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODBFNDky
NDEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcuaCAqLzsgfTsK
IAkJMDgxMDc2NDQxMjgyODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxMDc2NDMxMjgyODU1NjAw
N0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oICovOyB9OwogCQkwODEwOTNEQzEyNTVGMEU3MDBF
RDlEMjkgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODEwOTNEQTEyNTVGMEU3MDBFRDlEMjkg
LyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmggKi87IH07Ci0JCTA4MTNBNEVBMTI4
NDEzMjYwMDk5MjUxMSAvKiBTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MTNBNEU5MTI4NDEzMjYwMDk5MjUx
MSAvKiBTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCAqLzsgfTsKIAkJMDgxNjY4RDQxMjU2MDNC
RjAwNkYyNURFIC8qIFNWR1RleHRDaHVua0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MTY2OEQyMTI1NjAzQkYwMDZGMjVERSAvKiBTVkdU
ZXh0Q2h1bmtCdWlsZGVyLmggKi87IH07CiAJCTA4MTY2OERBMTI1NjAzRDUwMDZGMjVERSAvKiBT
VkdUZXh0TGF5b3V0RW5naW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODE2NjhEODEyNTYwM0Q1MDA2RjI1REUgLyogU1ZHVGV4dExheW91dEVuZ2lu
ZS5oICovOyB9OwogCQkwODFBQThEQTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJhcmVE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFB
QThEOTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJhcmVEYXRhLmggKi87IH07CkBAIC0y
NDcsNyArMjQ2LDYgQEAKIAkJMDgzREFFQTcwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwODNEQUVBMzBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuaCAqLzsgfTsKIAkJMDgzREFFQTkwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDgzREFFQTUwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5oICovOyB9OwogCQkwODQ1NjgwODEyQjkwREE2MDA5NjBBOUYgLyogRm9udE1ldHJp
Y3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NDU2
ODA3MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250TWV0cmljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA4NTI1RTYzMTI3OEMwMDEwMEE4NDc3OCAv
KiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1MjVFNjIxMjc4QzAwMTAwQTg0Nzc4IC8qIFNW
R0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg1NEIwMTUxMjU1RTRFNjAwQjlDREQwIC8qIFJl
bmRlclNWR0lubGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDg1NEIwMDMxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR0lubGluZS5oICovOyB9
OwogCQkwODU0QjAxNzEyNTVFNEU2MDBCOUNERDAgLyogUmVuZGVyU1ZHSW5saW5lVGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1NEIwMDUxMjU1
RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR0lubGluZVRleHQuaCAqLzsgfTsKIAkJMDg1NEIwMTkx
MjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR1RleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NTRCMDA3MTI1NUU0RTYwMEI5Q0REMCAvKiBSZW5k
ZXJTVkdUZXh0LmggKi87IH07CkBAIC0yNjQsNyArMjYyLDYgQEAKIAkJMDg2QkJEMEYxMzYwMzlD
MjAwOEIxNUQ4IC8qIEdseXBoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODZCQkQwRTEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGguaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODczQjg2QjEzNjA2NEVB
MDBBNTIyQzIgLyogR2x5cGhQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODczQjg2QTEzNjA2NEVBMDBBNTIyQzIgLyogR2x5cGhQYWdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg3NTU4QzYx
M0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3NTU4QzQxM0I0QTU3
RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA4N0I4NDk2MTI3MkNFQzgw
MEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwODdCODQ5NTEyNzJDRUM3MDBBMTQ0MTcgLyogU1ZHQW5pbWF0
ZWRBbmdsZS5oICovOyB9OwogCQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODg1MDY3
RDExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4NTA2ODAxMURBMDQ1QjAwMTgyQjk4IC8qIFBh
aW50UGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4QTBFMDQxMjZFRjFEQjAwOTc4
RjdBIC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4QTBERkIxMjZFRjFEQjAwOTc4RjdBIC8q
IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oICovOyB9OwpAQCAtMjgyLDcgKzI3OSw2
IEBACiAJCTA4QzdBMkM3MTBEQzc0NjIwMDJEMzY4QiAvKiBTVkdOYW1lcy5oIGluIENvcHkgR2Vu
ZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgx
RTkwOUQxNTA4RDAwMEU2MUQ3IC8qIFNWR05hbWVzLmggKi87IH07CiAJCTA4QzkyNTFBMEZDQzdD
NEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZl
Y3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
OENBM0Q0NDEyODk0QTM4MDBGRkYyNjAgLyogU1ZHTWF0cml4VGVhck9mZi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDQTNENDMxMjg5NEEzODAwRkZG
MjYwIC8qIFNWR01hdHJpeFRlYXJPZmYuaCAqLzsgfTsKLQkJMDhENDZDRTMxMjdBRDVGQzAwODk2
OTRCIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RDQ2Q0UyMTI3QUQ1RkMwMDg5Njk0QiAvKiBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uLmggKi87IH07CiAJCTA4RURFMTlGMTJBNTBCOEUwMEI5NTc5NyAvKiBT
VkdSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEVERTE5RTEyQTUwQjhFMDBCOTU3OTcgLyogU1ZHUmVjdC5oICovOyB9OwogCQkwOEYwQkZDMzEy
NTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dENodW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYwQkZCRTEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4
dENodW5rLmggKi87IH07CiAJCTA4RjBCRkM0MTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0RnJh
Z21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
RjBCRkJGMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0RnJhZ21lbnQuaCAqLzsgfTsKQEAgLTIx
MzEsNyArMjEyNyw2IEBACiAJCTcxRTJDNDI2MjFDOTM1MjgwMDI0RjhDOCAvKiBBbmltYXRpb25F
ZmZlY3RQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzFFMkM0MjQyMUM5MzUxRDAwMjRGOEM4IC8qIEFuaW1hdGlvbkVmZmVjdFBoYXNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzFFQURDRDgy
MjA4N0U3MjAwNjVBNDVGIC8qIFBvaW50ZXJJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzFFQURDRDYyMjA4N0U2RDAwNjVBNDVGIC8qIFBvaW50ZXJJ
RC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcx
RUZDRURDMjAyQjM4QTkwMEQ3QzQxMSAvKiBBbmltYXRpb25FZmZlY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRUZDRUQ3MjAyQjM4OEQwMEQ3QzQx
MSAvKiBBbmltYXRpb25FZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk3MUZCOTY3QjEzODNENjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzFGQjk2N0ExMzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVk
RW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCAqLzsgfTsKIAkJNzIxNDQzMzEyMjNFQzg1NDAw
RjEyRkY3IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjE0NDMzMjIyM0VD
ODVGMDBGMTJGRjcgLyogKG51bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyMTQ0MzMz
MjIzRUM4QjAwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1By
b3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTU1OTMsNyArNTU4OCw2IEBACiAJCTA4MTA3NjQzMTI4Mjg1NTYwMDdDNjNCQSAvKiBTVkdM
aXN0UHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGlzdFBy
b3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MTA5M0Q5MTI1NUYwRTcw
MEVEOUQyOSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxMDkzREExMjU1RjBFNzAwRUQ5
RDI5IC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDgxM0E0RTkxMjg0MTMyNjAwOTkyNTExIC8qIFNWR1N0
YXRpY1Byb3BlcnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDgxNjY4RDExMjU2MDNCRjAwNkYyNURFIC8qIFNWR1RleHRDaHVua0J1aWxkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dENodW5rQnVpbGRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MTY2OEQyMTI1NjAzQkYwMDZGMjVERSAv
KiBTVkdUZXh0Q2h1bmtCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR1RleHRDaHVua0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgx
NjY4RDcxMjU2MDNENTAwNkYyNURFIC8qIFNWR1RleHRMYXlvdXRFbmdpbmUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dExheW91dEVuZ2luZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjA4LDcgKzU2MDIsNiBAQAogCQkwODNEQUVB
NDBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4M0RBRUE1MEYwMUE3RkIw
MDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NDU2ODA3MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250TWV0
cmljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250TWV0cmljcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwODUyNUU2MjEyNzhDMDAxMDBBODQ3NzggLyog
U1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1NEIwMDIxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNW
R0lubGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJT
VkdJbmxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODU0QjAwMzEyNTVF
NEU2MDBCOUNERDAgLyogUmVuZGVyU1ZHSW5saW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlclNWR0lubGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODU0QjAwNDEyNTVFNEU2MDBCOUNERDAgLyogUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdJbmxpbmVUZXh0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2MzcsNyArNTYzMCw2IEBACiAJCTA4
NzNCODZBMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR2x5cGhQYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA4NzU1OEMzMTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Vycm9nYXRlUGFp
ckF3YXJlVGV4dEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg3
NTU4QzQxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0
SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg3Qjg0OTUxMjcyQ0VD
NzAwQTE0NDE3IC8qIFNWR0FuaW1hdGVkQW5nbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHQW5pbWF0ZWRBbmdsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODg1MDY3RDExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwODg1MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQYWludFBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4OEEwREZCMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZExpc3RQcm9w
ZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
NjU4LDcgKzU2NTAsNiBAQAogCQkwOEM5MjUxNzBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZm
ZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbHRlckVmZmVj
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4QzkyNTE4MEZDQzdDNEEwMDQ4
MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmlsdGVyRWZmZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4Q0EzRDQzMTI4
OTRBMzgwMEZGRjI2MCAvKiBTVkdNYXRyaXhUZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR01hdHJpeFRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMDhENDZDRTIxMjdBRDVGQzAwODk2OTRCIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEVERTE5RTEyQTUwQjhFMDBCOTU3
OTcgLyogU1ZHUmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdSZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RjBCRkJEMTI1NUM1M0MwMDA3NTE4
NSAvKiBTVkdUZXh0Q2h1bmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHVGV4dENodW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGMEJG
QkUxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdUZXh0Q2h1bmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc1NzYsNyArNzU2Nyw2IEBACiAJCTQzNThFODgyMTM2MEEzM0IwMEU0NzQ4QyAvKiBTVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MzU4RTg4MzEzNjBBMzNCMDBFNDc0OEMgLyogU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdGRURyb3BTaGFkb3dFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNThFODg0MTM2MEEzM0IwMEU0NzQ4
QyAvKiBTVkdGRURyb3BTaGFkb3dFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
VkdGRURyb3BTaGFkb3dFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDM2MkM3QjgxM0FDNkYxQTAwMzQ0QkVCIC8qIFNWR0FuaW1hdGVkQW5nbGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRBbmdsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNjcwODgxMTJEOUNBNEEwMDA0NDIzNCAvKiBSZW5k
ZXJTVkdCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJTVkdCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNjcwODgyMTJE
OUNBNEEwMDA0NDIzNCAvKiBSZW5kZXJTVkdCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJTVkdCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MzY3MDg4MzEyRDlDQTRBMDAwNDQyMzQgLyogUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR0NvbnRhaW5lci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjM5LDYgKzg2MjksMTAgQEAKIAkJNTU0
Njc1NzgxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElt
YWdlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NTBDQjQxMUU5NTVF
M0MwMDExMUFBMCAvKiBJbWFnZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU1MTMwMDAx
RTdDQ0NDQTAwQTY5RTM4IC8qIERlY29kaW5nT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZWNvZGluZ09wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTU1MzU5MjAyMjQ0MUExNjAwOEY1RUM5IC8qIFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJv
cGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTUzNTkyMTIyNDQxQjk3MDA4RjVFQzkgLyog
U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRGVjb3JhdGVkRW51
bWVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU1MzU5MjIyMjQ0MUJF
OTAwOEY1RUM5IC8qIFNWR0RlY29yYXRlZFByaW1pdGl2ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdE
ZWNvcmF0ZWRQcmltaXRpdmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU1MzU5
MjMyMjQ0MUMxODAwOEY1RUM5IC8qIFNWR0RlY29yYXRlZFByb3BlcnR5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNWR0RlY29yYXRlZFByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURlY29kZXJDRy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURl
Y29kZXJDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURlY29kZXJD
Ry5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTc2QTU2MjFEODhBNzA4MDBDQ0Mw
NEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbWFnZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0NjksNyAr
OTQ2Myw2IEBACiAJCTcxQzI5RTMxMjAzQ0U3NkMwMDhGMzZEMiAvKiBDU1NBbmltYXRpb24uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU0FuaW1hdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcxQzVCQjFCMUZCNjExRUEwMDA3QTJBRSAvKiBBbmltYXRhYmxlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBbmltYXRhYmxlLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzFDOTE2MDcxRDE0ODNBMzAwQUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MUNDN0ExRjE1MkEwQkZFMDA5RUVBRjkgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZEVudW1lcmF0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDRTJDNTEyMjA5REM3RjAwQzQ5
NEJEIC8qIE1vdXNlRXZlbnRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTW91c2VFdmVudElPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
RDAyRDkwMURCNTVDNEUwMERENUNGNSAvKiBtYWluLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBwYXRoID0gbWFpbi5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzFEMDJEOTIxREI1NUM0RTAwREQ1Q0Y1IC8qIG1lZGlhLWNvbnRyb2xsZXIuanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAibWVkaWEtY29udHJvbGxlci5qcyI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDk2LDcgKzk0ODksNiBAQAogCQk3MUVGQ0VE
QTIwMkIzODhGMDBEN0M0MTEgLyogQW5pbWF0aW9uRWZmZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFuaW1hdGlvbkVmZmVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcxRUZDRURFMjAyQjM5QzcwMEQ3QzQxMSAvKiBKU0FuaW1hdGlvbkVm
ZmVjdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Fu
aW1hdGlvbkVmZmVjdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
RjkzNkY3MURENEY5OUIwMDkyMkNDNyAvKiB0cmFja3Mtc3VwcG9ydC5qcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJ0cmFja3Mtc3VwcG9ydC5qcyI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcxRkI5NjdBMTM4M0Q2NDYwMEFDOEE0QyAvKiBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxNDQzNDUyMjQwQzhCQTAwRjEyRkY3IC8qIFNWR0Fu
aW1hdGVkVmFsdWVQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFZhbHVlUHJv
cGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxNDQzNDYyMjQwQ0FEMjAw
RjEyRkY3IC8qIFNWR1ZhbHVlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9w
ZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjNGOTdCQzIyMzhFRTA4MDA3
RjA3OUMgLyogU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTk3MzQsOCArOTcyNiw2IEBACiAJCTdDMzNGMzYwMUI0QTA1MDQw
MDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzOUMzNjIxRERBODY0OTAwRkVGQjI5IC8qIFNWR0xl
bmd0aExpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MzlDMzYzMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0xlbmd0aExpc3RWYWx1ZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0MzOUMzNjgxRERCODZEMzAwRkVGQjI5IC8qIFNWR051bWJl
ckxpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
TnVtYmVyTGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMzlD
MzY5MUREQjg2RDMwMEZFRkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR051bWJlckxpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0MzOUMzNkMxRERCOEJCMDAwRkVGQjI5IC8qIFNWR1RyYW5zZm9y
bUxpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
VHJhbnNmb3JtTGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MzlDMzZEMUREQjhCQjAwMEZFRkIyOSAvKiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzOUMzNkUxRERCQTNFMDAwRkVGQjI5IC8qIFNW
R1BhdGhTZWdMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE2MjA3LDcgKzE2MTk3LDcgQEAKIAkJMDgxQ0RGQkQxMjZFQ0ZFODAwRDIxNUNBIC8qIHBy
b3BlcnRpZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CTcxRkI5NjdBMTM4M0Q2NDYwMEFDOEE0QyAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVy
dHlUZWFyT2ZmLmggKi8sCisJCQkJNTU1MzU5MjAyMjQ0MUExNjAwOEY1RUM5IC8qIFNWR0FuaW1h
dGVkRGVjb3JhdGVkUHJvcGVydHkuaCAqLywKIAkJCQkwODhBMERGQjEyNkVGMURCMDA5NzhGN0Eg
LyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJNTVGQTdGRkMyMTEw
RjgxMzAwNUFFRkU3IC8qIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3Bw
ICovLAogCQkJCTA4OUE4RTA2MTI4RDhCM0QwMEU3QTUzNCAvKiBTVkdBbmltYXRlZFBhdGhTZWdM
aXN0UHJvcGVydHlUZWFyT2ZmLmggKi8sCkBAIC0xNjIyNyw3ICsxNjIxNyw2IEBACiAJCQkJNTVF
RTUzNUIyMjNCMkEwQzAwRkJBOTQ0IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJ
bXBsLmggKi8sCiAJCQkJMDg4QTBERkYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJv
cGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJNTVGQTdGRkUyMTExMEU2RTAwNUFFRkU3IC8qIFNWR0Fu
aW1hdGVkUHJvcGVydHlUeXBlLmggKi8sCi0JCQkJMDg1MjVFNjIxMjc4QzAwMTAwQTg0Nzc4IC8q
IFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg1QTE1OTIxMjg5
QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5o
ICovLAogCQkJCTcyMTQ0MzQ1MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmltYXRlZFZhbHVlUHJv
cGVydHkuaCAqLywKIAkJCQk1NUJFMDI1RjIyM0IyOUM1MDAzMkYwOEEgLyogU1ZHQW5pbWF0aW9u
QWRkaXRpdmVGdW5jdGlvbi5oICovLApAQCAtMTYyNDcsNiArMTYyMzYsOSBAQAogCQkJCTU1MzQ2
QUYwMjExNTBGQUYwMDU5QkNERCAvKiBTVkdBdHRyaWJ1dGVPd25lclByb3h5LmggKi8sCiAJCQkJ
NTUzNDZBRkEyMTE3RkZBRjAwNTlCQ0REIC8qIFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsLmgg
Ki8sCiAJCQkJNTVGQTdGRjYyMTBGQkUzRTAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZVJlZ2lzdHJ5
LmggKi8sCisJCQkJNTU1MzU5MjEyMjQ0MUI5NzAwOEY1RUM5IC8qIFNWR0RlY29yYXRlZEVudW1l
cmF0aW9uLmggKi8sCisJCQkJNTU1MzU5MjIyMjQ0MUJFOTAwOEY1RUM5IC8qIFNWR0RlY29yYXRl
ZFByaW1pdGl2ZS5oICovLAorCQkJCTU1NTM1OTIzMjI0NDFDMTgwMDhGNUVDOSAvKiBTVkdEZWNv
cmF0ZWRQcm9wZXJ0eS5oICovLAogCQkJCTU1RDcwRDIxMjIzQjAwQkIwMDA0NEI4RSAvKiBTVkdM
ZWdhY3lBbmltYXRlZFByb3BlcnR5LmNwcCAqLywKIAkJCQk1NUQ3MEQyMDIyM0IwMDkxMDAwNDRC
OEUgLyogU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oICovLAogCQkJCTU1RDcwRDIyMjIzQjAw
RUEwMDA0NEI4RSAvKiBTVkdMZWdhY3lQcm9wZXJ0eS5oICovLApAQCAtMTYyNzAsNyArMTYyNjIs
NiBAQAogCQkJCTU1QkUwMjU3MjIzQjI5QzAwMDMyRjA4QSAvKiBTVkdQcm9wZXJ0eVJlZ2lzdHJ5
LmggKi8sCiAJCQkJMDg4QTBFMDIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VGVhck9m
Zi5oICovLAogCQkJCTA4OEEwRTAzMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0
cy5oICovLAotCQkJCTA4MTNBNEU5MTI4NDEzMjYwMDk5MjUxMSAvKiBTVkdTdGF0aWNQcm9wZXJ0
eVRlYXJPZmYuaCAqLywKIAkJCQk3MjE0NDM0NjIyNDBDQUQyMDBGMTJGRjcgLyogU1ZHVmFsdWVQ
cm9wZXJ0eS5oICovLAogCQkJCTcyNjZGMDI1MjI0MzBGOEMwMDgzMzk3NSAvKiBTVkdWYWx1ZVBy
b3BlcnR5TGlzdC5oICovLAogCQkJKTsKQEAgLTI0MTM1LDEyICsyNDEyNiw4IEBACiAJCQkJQjIy
Mjc3RTMwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwICovLAog
CQkJCUIyMjI3N0U0MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50Lmgg
Ki8sCiAJCQkJQjIyMjc3RTUwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1l
bnQuaWRsICovLAotCQkJCTQzNjJDN0I4MTNBQzZGMUEwMDM0NEJFQiAvKiBTVkdBbmltYXRlZEFu
Z2xlLmNwcCAqLywKLQkJCQkwODdCODQ5NTEyNzJDRUM3MDBBMTQ0MTcgLyogU1ZHQW5pbWF0ZWRB
bmdsZS5oICovLAogCQkJCUIyMjI3N0U2MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZEFu
Z2xlLmlkbCAqLywKIAkJCQlCMjIyNzdFNzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRC
b29sZWFuLmlkbCAqLywKLQkJCQk3MUNDN0ExRjE1MkEwQkZFMDA5RUVBRjkgLyogU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5jcHAgKi8sCi0JCQkJMDhENDZDRTIxMjdBRDVGQzAwODk2OTRCIC8qIFNW
R0FuaW1hdGVkRW51bWVyYXRpb24uaCAqLywKIAkJCQlCMjIyNzdFODBEMDBCRjFGMDA3MUI3ODIg
LyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5pZGwgKi8sCiAJCQkJQjIyMjc3RTkwRDAwQkYxRjAw
NzFCNzgyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5pZGwgKi8sCiAJCQkJNDM4MTc2M0ExM0E2OTdE
NDAwN0QxMTg3IC8qIFNWR0FuaW1hdGVkTGVuZ3RoLmNwcCAqLywKQEAgLTI0MTUwLDggKzI0MTM3
LDYgQEAKIAkJCQkwODkwMjFBQzEyNkVGNUU5MDA5MkQ1RUEgLyogU1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0LmggKi8sCiAJCQkJQjIyMjc3RUIwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkTGVu
Z3RoTGlzdC5pZGwgKi8sCiAJCQkJQjIyMjc3RUMwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1h
dGVkTnVtYmVyLmlkbCAqLywKLQkJCQk0MzMxQUM3NzEzQjY4NzAwMDBBOUU1QUUgLyogU1ZHQW5p
bWF0ZWROdW1iZXJMaXN0LmNwcCAqLywKLQkJCQkwOEIzNUIxNjEyN0I2QTg4MDA1MzE0REQgLyog
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggKi8sCiAJCQkJQjIyMjc3RUQwRDAwQkYxRjAwNzFCNzgy
IC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5pZGwgKi8sCiAJCQkJMDg2Mzk1MTMxM0I1RkU1NzAw
QkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5jcHAgKi8sCiAJCQkJMDg2Mzk1MTQxM0I1RkU1NzAw
QkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oICovLApAQCAtMzE5MTcsMTkgKzMxOTAyLDE0IEBA
CiAJCQkJMjREOTEyQjgxM0NBOUE2OTAwRDIxOTE1IC8qIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTc3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmds
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5N0EwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Fu
aW1hdGVDb2xvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTA4N0I4NDk2MTI3MkNFQzgw
MEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwOEQ0NkNF
MzEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNzFGQjk2N0IxMzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRp
b25Qcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OTAyMUE5MTI2RUY1REUw
MDkyRDVFQSAvKiBTVkdBbmltYXRlZExlbmd0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg5MDIx
QUQxMjZFRjVFOTAwOTJENUVBIC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg4QTBFMDQxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDhCMzVCMTcxMjdCNkE4ODAwNTMxNERE
IC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg2Mzk1MTYx
M0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDg5QThFMDcxMjhEOEIzRDAwRTdBNTM0IC8qIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTA2MTI2RUYxREIwMDk3OEY3QSAv
KiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA4
OEEwRTA4MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTVGQTdGRkYyMTExMEU2RTAwNUFFRkU3IC8qIFNWR0FuaW1hdGVk
UHJvcGVydHlUeXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3
NzggLyogU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4MjUwOTM5MTI4QkQ0RDgwMEUyRUQ4RSAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTQz
OUQzMzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBpbiBIZWFkZXJzICov
LApAQCAtMzIxMDgsNyArMzIwODgsNiBAQAogCQkJCUIyMjI3QUEzMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBNjBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBRkQwMTAw
REFGMzM1NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkw
ODEzQTRFQTEyODQxMzI2MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0FBOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUFDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdT
dHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FCODBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHU3R5bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmdsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmds
ZS5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiwzMiArMjYsMzcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
U1ZHQW5nbGVWYWx1ZS5oIgotI2luY2x1ZGUgIlNWR1Byb3BlcnR5VGVhck9mZi5oIgorI2luY2x1
ZGUgIlNWR1ZhbHVlUHJvcGVydHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
VkdBbmdsZSA6IHB1YmxpYyBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHQW5nbGVWYWx1ZT4geworY2xh
c3MgU1ZHQW5nbGUgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eTxTVkdBbmdsZVZhbHVlPiB7Cisg
ICAgdXNpbmcgQmFzZSA9IFNWR1ZhbHVlUHJvcGVydHk8U1ZHQW5nbGVWYWx1ZT47CisgICAgdXNp
bmcgQmFzZTo6QmFzZTsKKyAgICB1c2luZyBCYXNlOjptX3ZhbHVlOworCiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxTVkdBbmdsZT4gY3JlYXRlKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkmIGFu
aW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdBbmdsZVZhbHVlJiB2YWx1
ZSkKKyAgICBzdGF0aWMgUmVmPFNWR0FuZ2xlPiBjcmVhdGUoY29uc3QgU1ZHQW5nbGVWYWx1ZSYg
dmFsdWUgPSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmds
ZShhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTVkdBbmdsZSh2YWx1ZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8U1ZHQW5n
bGU+IGNyZWF0ZShjb25zdCBTVkdBbmdsZVZhbHVlJiBpbml0aWFsVmFsdWUgPSB7IH0pCisgICAg
c3RhdGljIFJlZjxTVkdBbmdsZT4gY3JlYXRlKFNWR1Byb3BlcnR5T3duZXIqIG93bmVyLCBTVkdQ
cm9wZXJ0eUFjY2VzcyBhY2Nlc3MsIGNvbnN0IFNWR0FuZ2xlVmFsdWUmIHZhbHVlID0geyB9KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5nbGUoaW5pdGlhbFZhbHVl
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FuZ2xlKG93bmVyLCBhY2Nlc3Ms
IHZhbHVlKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxTVkdBbmdsZT4+IGNyZWF0ZShFeGNlcHRpb25PcjxUPiYmIGluaXRpYWxWYWx1
ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
U1ZHQW5nbGU+PiBjcmVhdGUoRXhjZXB0aW9uT3I8VD4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IGlmIChpbml0aWFsVmFsdWUuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gaW5p
dGlhbFZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShpbml0
aWFsVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICBpZiAodmFsdWUuaGFzRXhj
ZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmdsZSh2YWx1ZS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSkpOwogICAgIH0KIAogICAgIFNWR0FuZ2xlVmFsdWU6OlR5cGUgdW5pdFR5cGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVmZXJlbmNlKCkudW5pdFR5cGUoKTsKKyAg
ICAgICAgcmV0dXJuIG1fdmFsdWUudW5pdFR5cGUoKTsKICAgICB9CiAKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBzZXRWYWx1ZUZvckJpbmRpbmdzKGZsb2F0IHZhbHVlKQpAQCAtNTksMTUgKzY0LDE0
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9OwogCi0gICAgICAgIHBy
b3BlcnR5UmVmZXJlbmNlKCkuc2V0VmFsdWUodmFsdWUpOworICAgICAgICBtX3ZhbHVlLnNldFZh
bHVlKHZhbHVlKTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0KICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAgICAgCiAgICAgZmxvYXQgdmFsdWVGb3JCaW5kaW5ncygpCiAgICAgewotICAg
ICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS52YWx1ZSgpOworICAgICAgICByZXR1cm4g
bV92YWx1ZS52YWx1ZSgpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVl
SW5TcGVjaWZpZWRVbml0cyhmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpCkBAIC03NSwxNSAr
NzksMTQgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAg
ICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHModmFsdWVJblNw
ZWNpZmllZFVuaXRzKTsKKyAgICAgICAgbV92YWx1ZS5zZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHMo
dmFsdWVJblNwZWNpZmllZFVuaXRzKTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0gICAgICAg
IAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICAKICAgICBmbG9hdCB2YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVmZXJlbmNlKCku
dmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlLnZhbHVlSW5T
cGVjaWZpZWRVbml0cygpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVl
QXNTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAgLTkxLDcgKzk0LDcgQEAgcHVibGljOgog
ICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1bHQgPSBw
cm9wZXJ0eVJlZmVyZW5jZSgpLnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBhdXRv
IHJlc3VsdCA9IG1fdmFsdWUuc2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICAKQEAgLTk5LDkgKzEwMiw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpCisgICAgU3RyaW5nIHZhbHVlQXNTdHJp
bmcoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVmZXJl
bmNlKCkudmFsdWVBc1N0cmluZygpOworICAgICAgICByZXR1cm4gbV92YWx1ZS52YWx1ZUFzU3Ry
aW5nKCk7CiAgICAgfQogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gbmV3VmFsdWVTcGVjaWZpZWRV
bml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRz
KQpAQCAtMTA5LDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkK
ICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJv
ciB9OwogCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gcHJvcGVydHlSZWZlcmVuY2UoKS5uZXdWYWx1
ZVNwZWNpZmllZFVuaXRzKHVuaXRUeXBlLCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IG1fdmFsdWUubmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bml0VHlwZSwg
dmFsdWVJblNwZWNpZmllZFVuaXRzKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIApAQCAtMTIyLDI0ICsxMjUs
MTMgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAg
YXV0byByZXN1bHQgPSBwcm9wZXJ0eVJlZmVyZW5jZSgpLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRz
KHVuaXRUeXBlKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVlLmNvbnZlcnRUb1NwZWNp
ZmllZFVuaXRzKHVuaXRUeXBlKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICBjb21taXRDaGFu
Z2UoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU1ZH
QW5nbGUoU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJv
cGVydHlSb2xlIHJvbGUsIFNWR0FuZ2xlVmFsdWUmIHZhbHVlKQotICAgICAgICA6IFNWR1Byb3Bl
cnR5VGVhck9mZjxTVkdBbmdsZVZhbHVlPigmYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUp
Ci0gICAgewotICAgIH0KLQotICAgIGV4cGxpY2l0IFNWR0FuZ2xlKGNvbnN0IFNWR0FuZ2xlVmFs
dWUmIGluaXRpYWxWYWx1ZSkKLSAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHQW5nbGVW
YWx1ZT4oaW5pdGlhbFZhbHVlKQotICAgIHsKLSAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwCShyZXZp
c2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwxMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMSwgMjAxMi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuaCIKLQotI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIgotI2luY2x1ZGUgIlNWR01hcmtlckVsZW1l
bnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6
OlNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25F
bGVtZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKLSAgICA6IFNWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yKEFuaW1hdGVkQW5nbGUsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50
KQotewotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZEFu
Z2xlQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17
Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlKFNWR1Byb3BlcnR5VHJhaXRzPHN0
ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4+Ojpmcm9tU3RyaW5nKHN0cmluZykpOwot
fQotCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZEFuZ2xlQW5p
bWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZyb21CYXNl
VmFsdWVzPFNWR0FuaW1hdGVkQW5nbGUsIFNWR0FuaW1hdGVkRW51bWVyYXRpb24+KGFuaW1hdGVk
VHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6c3RvcEFuaW1WYWxB
bmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5
cGVzKQotewotICAgIHN0b3BBbmltVmFsQW5pbWF0aW9uRm9yVHlwZXM8U1ZHQW5pbWF0ZWRBbmds
ZSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZH
QW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzLCBTVkdBbmltYXRlZFR5cGUm
IHR5cGUpCi17Ci0gICAgcmVzZXRGcm9tQmFzZVZhbHVlczxTVkdBbmltYXRlZEFuZ2xlLCBTVkdB
bmltYXRlZEVudW1lcmF0aW9uPihhbmltYXRlZFR5cGVzLCB0eXBlKTsKLX0KLQotdm9pZCBTVkdB
bmltYXRlZEFuZ2xlQW5pbWF0b3I6OmFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBhbmltVmFsV2lsbENo
YW5nZUZvclR5cGVzPFNWR0FuaW1hdGVkQW5nbGUsIFNWR0FuaW1hdGVkRW51bWVyYXRpb24+KGFu
aW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6YW5pbVZh
bERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVk
VHlwZXMpCi17Ci0gICAgYW5pbVZhbERpZENoYW5nZUZvclR5cGVzPFNWR0FuaW1hdGVkQW5nbGUs
IFNWR0FuaW1hdGVkRW51bWVyYXRpb24+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0Fu
aW1hdGVkQW5nbGVBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZy
b20sIFNWR0FuaW1hdGVkVHlwZSogdG8pCi17Ci0gICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSBB
bmltYXRlZEFuZ2xlKTsKLSAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwot
Ci0gICAgY29uc3QgYXV0byYgZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24gPSBmcm9tLT5hczxzdGQ6
OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5zaWduZWQ+PigpOwotICAgIGF1dG8mIHRvQW5nbGVBbmRF
bnVtZXJhdGlvbiA9IHRvLT5hczxzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5zaWduZWQ+Pigp
OwotICAgIC8vIE9ubHkgcmVzcGVjdCBieSBhbmltYXRpb25zLCBpZiBmcm9tIGFuZCBieSBhcmUg
Ym90aCBzcGVjaWZpZWQgaW4gYW5nbGVzIChhbmQgbm90IGVnLiAnYXV0bycpLgotICAgIGlmIChm
cm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgIT0gdG9BbmdsZUFuZEVudW1lcmF0aW9uLnNl
Y29uZCB8fCBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgIT0gU1ZHTWFya2VyT3JpZW50
QW5nbGUpCi0gICAgICAgIHJldHVybjsKLSAgICBjb25zdCBhdXRvJiBmcm9tQW5nbGUgPSBmcm9t
QW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdDsKLSAgICBhdXRvJiB0b0FuZ2xlID0gdG9BbmdsZUFu
ZEVudW1lcmF0aW9uLmZpcnN0OwotICAgIHRvQW5nbGUuc2V0VmFsdWUodG9BbmdsZS52YWx1ZSgp
ICsgZnJvbUFuZ2xlLnZhbHVlKCkpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRv
cjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBl
YXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvLCBTVkdB
bmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1cmF0aW9uLCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVk
KQotewotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIEFTU0VSVChtX2NvbnRl
eHRFbGVtZW50KTsKLQotICAgIGNvbnN0IGF1dG8mIGZyb21BbmdsZUFuZEVudW1lcmF0aW9uID0g
KG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbk1vZGU6OlRv
ID8gYW5pbWF0ZWQgOiBmcm9tKS0+YXM8c3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIHVuc2lnbmVk
Pj4oKTsKLSAgICBhdXRvJiB0b0FuZ2xlQW5kRW51bWVyYXRpb24gPSB0by0+YXM8c3RkOjpwYWly
PFNWR0FuZ2xlVmFsdWUsIHVuc2lnbmVkPj4oKTsKLSAgICBhdXRvJiB0b0F0RW5kT2ZEdXJhdGlv
bkFuZ2xlQW5kRW51bWVyYXRpb24gPSB0b0F0RW5kT2ZEdXJhdGlvbi0+YXM8c3RkOjpwYWlyPFNW
R0FuZ2xlVmFsdWUsIHVuc2lnbmVkPj4oKTsKLSAgICBhdXRvJiBhbmltYXRlZEFuZ2xlQW5kRW51
bWVyYXRpb24gPSBhbmltYXRlZC0+YXM8c3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIHVuc2lnbmVk
Pj4oKTsKLQotICAgIGlmIChmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgIT0gdG9Bbmds
ZUFuZEVudW1lcmF0aW9uLnNlY29uZCkgewotICAgICAgICAvLyBEaXNjcmV0ZSBhbmltYXRpb24g
LSBubyBsaW5lYXIgaW50ZXJwb2xhdGlvbiBwb3NzaWJsZSBiZXR3ZWVuIHZhbHVlcyAoZS5nLiBh
dXRvIHRvIGFuZ2xlKS4KLSAgICAgICAgaWYgKHBlcmNlbnRhZ2UgPCAwLjVmKSB7Ci0gICAgICAg
ICAgICBhbmltYXRlZEFuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kID0gZnJvbUFuZ2xlQW5kRW51
bWVyYXRpb24uc2Vjb25kOwotICAgICAgICAgICAgaWYgKGZyb21BbmdsZUFuZEVudW1lcmF0aW9u
LnNlY29uZCA9PSBTVkdNYXJrZXJPcmllbnRBbmdsZSkKLSAgICAgICAgICAgICAgICBhbmltYXRl
ZEFuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3QgPSBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJz
dDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhbmltYXRlZEFuZ2xlQW5kRW51
bWVyYXRpb24uZmlyc3Quc2V0VmFsdWUoMCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCA9IHRvQW5nbGVB
bmRFbnVtZXJhdGlvbi5zZWNvbmQ7Ci0gICAgICAgIGlmICh0b0FuZ2xlQW5kRW51bWVyYXRpb24u
c2Vjb25kID09IFNWR01hcmtlck9yaWVudEFuZ2xlKQotICAgICAgICAgICAgYW5pbWF0ZWRBbmds
ZUFuZEVudW1lcmF0aW9uLmZpcnN0ID0gdG9BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBhbmltYXRlZEFuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3Qu
c2V0VmFsdWUoMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZnJvbUFuZ2xl
QW5kRW51bWVyYXRpb24uc2Vjb25kID09IFNWR01hcmtlck9yaWVudEFuZ2xlKSB7Ci0gICAgICAg
IC8vIFJlZ3VsYXIgZnJvbSBhbmdsZSB0byBhbmdsZSBhbmltYXRpb24sIHdpdGggc3VwcG9ydCBm
b3Igc21vb3RoIGludGVycG9sYXRpb24sIGFuZCBhZGRpdGl2ZSBhbmQgYWNjdW11bGF0ZWQgYW5p
bWF0aW9uLgotICAgICAgICBhbmltYXRlZEFuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kID0gU1ZH
TWFya2VyT3JpZW50QW5nbGU7Ci0KLSAgICAgICAgYXV0byYgYW5pbWF0ZWRTVkdBbmdsZSA9IGFu
aW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdDsKLSAgICAgICAgY29uc3QgYXV0byYgdG9B
dEVuZE9mRHVyYXRpb25TVkdBbmdsZSA9IHRvQXRFbmRPZkR1cmF0aW9uQW5nbGVBbmRFbnVtZXJh
dGlvbi5maXJzdDsKLSAgICAgICAgZmxvYXQgYW5pbWF0ZWRBbmdsZSA9IGFuaW1hdGVkU1ZHQW5n
bGUudmFsdWUoKTsKLSAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVO
dW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLmZp
cnN0LnZhbHVlKCksIHRvQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdC52YWx1ZSgpLCB0b0F0RW5k
T2ZEdXJhdGlvblNWR0FuZ2xlLnZhbHVlKCksIGFuaW1hdGVkQW5nbGUpOwotICAgICAgICBhbmlt
YXRlZFNWR0FuZ2xlLnNldFZhbHVlKGFuaW1hdGVkQW5nbGUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gYXV0bywgYXV0by1zdGFydC1yZXZlcnNlLCBvciB1bmtub3duLgotICAg
IGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdC5zZXRWYWx1ZSgwKTsKLQotICAgIGlm
IChmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgPT0gU1ZHTWFya2VyT3JpZW50QXV0byB8
fCBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgPT0gU1ZHTWFya2VyT3JpZW50QXV0b1N0
YXJ0UmV2ZXJzZSkKLSAgICAgICAgYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCA9
IGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZDsKLSAgICBlbHNlCi0gICAgICAgIGFuaW1h
dGVkQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgPSBTVkdNYXJrZXJPcmllbnRVbmtub3duOwot
fQotCi1mbG9hdCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKLXsKLSAgICBh
dXRvIGZyb20gPSBTVkdBbmdsZVZhbHVlKCk7Ci0gICAgZnJvbS5zZXRWYWx1ZUFzU3RyaW5nKGZy
b21TdHJpbmcpOwotICAgIGF1dG8gdG8gPSBTVkdBbmdsZVZhbHVlKCk7Ci0gICAgdG8uc2V0VmFs
dWVBc1N0cmluZyh0b1N0cmluZyk7Ci0gICAgcmV0dXJuIGZhYnNmKHRvLnZhbHVlKCkgLSBmcm9t
LnZhbHVlKCkpOwotfQotCi19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgJKHJldmlzaW9uIDI0MzQ2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgJKG5vbmV4aXN0ZW50KQpA
QCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJTVkdBbmdsZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmgiCi0j
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCIKLSNpbmNsdWRlICJTVkdBdHRyaWJ1
dGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTVkdBbmltYXRpb25FbGVtZW50
OwotCi11c2luZyBTVkdBbmltYXRlZEFuZ2xlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8
U1ZHQW5nbGU+OwotdXNpbmcgU1ZHQW5pbWF0ZWRBbmdsZUF0dHJpYnV0ZSA9IFNWR0FuaW1hdGVk
QXR0cmlidXRlPFNWR0FuaW1hdGVkQW5nbGU+OwotCi1jbGFzcyBTVkdBbmltYXRlZEFuZ2xlQW5p
bWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewotcHVibGljOgot
ICAgIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxl
bWVudCopOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFu
aW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wQW5pbVZhbEFuaW1h
dGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFuaW1WYWxX
aWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRl
OwotICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmlt
YXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLQotICAgIHZvaWQgY2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwg
U1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZH
QW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29u
c3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlkZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRp
b24uY3BwCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNjQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1l
cmF0aW9uLmgiCi0KLSNpbmNsdWRlICJTVkdBbmltYXRpb25FbGVtZW50LmgiCi0jaW5jbHVkZSAi
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGRUJs
ZW5kRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgiCi0jaW5j
bHVkZSAiU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaCIK
LSNpbmNsdWRlICJTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0dyYWRpZW50RWxlbWVudC5oIgotI2luY2x1
ZGUgIlNWR01hcmtlckVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUg
IlNWR1RleHRDb250ZW50RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1RleHRQYXRoRWxlbWVudC5o
IgotI2luY2x1ZGUgIlNWR1VuaXRUeXBlcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
YXRpYyBpbmxpbmUgdW5zaWduZWQgZW51bWVyYXRpb25WYWx1ZUZvclRhcmdldEF0dHJpYnV0ZShT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7Ci0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0cgotICAgICAgICB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6Om1hc2tVbml0c0F0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBh
dHRlcm5Db250ZW50VW5pdHNBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpw
YXR0ZXJuVW5pdHNBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmltaXRp
dmVVbml0c0F0dHIpCi0gICAgICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpCi0gICAgICAgIHJldHVybiBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdMZW5ndGhBZGp1c3RUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7Ci0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIpCi0gICAgICAgIHJldHVybiBT
VkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJVbml0c1R5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1ldGhvZEF0dHIpCi0gICAgICAgIHJldHVy
biBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0aE1ldGhvZFR5cGU+Ojpmcm9tU3RyaW5nKHZh
bHVlKTsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwYWNpbmdBdHRyKQotICAgICAg
ICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5nVHlwZT46OmZyb21T
dHJpbmcodmFsdWUpOwotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3ByZWFkTWV0aG9k
QXR0cikKLSAgICAgICAgcmV0dXJuIFNWR1Byb3BlcnR5VHJhaXRzPFNWR1NwcmVhZE1ldGhvZFR5
cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
ZWRnZU1vZGVBdHRyKQotICAgICAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8RWRnZU1vZGVU
eXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
Om9wZXJhdG9yQXR0cikgewotICAgICAgICBpZiAodGFyZ2V0RWxlbWVudC0+aGFzVGFnTmFtZShT
VkdOYW1lczo6ZmVDb21wb3NpdGVUYWcpKQotICAgICAgICAgICAgcmV0dXJuIFNWR1Byb3BlcnR5
VHJhaXRzPENvbXBvc2l0ZU9wZXJhdGlvblR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKLSAgICAg
ICAgQVNTRVJUKHRhcmdldEVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlTW9ycGhvbG9n
eVRhZykpOwotICAgICAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8TW9ycGhvbG9neU9wZXJh
dG9yVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKLSAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQtPmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmZlQ29sb3JNYXRyaXhUYWcpKQotICAgICAgICAgICAgcmV0dXJuIFNW
R1Byb3BlcnR5VHJhaXRzPENvbG9yTWF0cml4VHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwotICAg
ICAgICBpZiAodGFyZ2V0RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVUdXJidWxlbmNl
VGFnKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHUHJvcGVy
dHlUcmFpdHM8VHVyYnVsZW5jZVR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKSk7Ci0KLSAgICAgICAg
QVNTRVJUKHRhcmdldEVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRnVuY0FUYWcpCi0g
ICAgICAgICAgICAgICB8fCB0YXJnZXRFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1
bmNCVGFnKQotICAgICAgICAgICAgICAgfHwgdGFyZ2V0RWxlbWVudC0+aGFzVGFnTmFtZShTVkdO
YW1lczo6ZmVGdW5jR1RhZykKLSAgICAgICAgICAgICAgIHx8IHRhcmdldEVsZW1lbnQtPmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmZlRnVuY1JUYWcpKTsKLSAgICAgICAgcmV0dXJuIFNWR1Byb3BlcnR5
VHJhaXRzPENvbXBvbmVudFRyYW5zZmVyVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bW9kZUF0dHIpIHsKLSAgICAgICAgQmxl
bmRNb2RlIG1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbDsKLSAgICAgICAgcGFyc2VCbGVuZE1vZGUo
dmFsdWUsIG1vZGUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1vZGUp
OwotICAgIH0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0cikK
LSAgICAgICAgcmV0dXJuIFNWR1Byb3BlcnR5VHJhaXRzPFNWR1N0aXRjaE9wdGlvbnM+Ojpmcm9t
U3RyaW5nKHZhbHVlKTsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2Vs
ZWN0b3JBdHRyKQotICAgICAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8Q2hhbm5lbFNlbGVj
dG9yVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6eUNoYW5uZWxTZWxlY3RvckF0dHIpCi0gICAgICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0
czxDaGFubmVsU2VsZWN0b3JUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7Ci0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bkFuaW1hdG9yOjpTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxl
bWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCi0gICAg
OiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZEVudW1lcmF0aW9uLCBhbmltYXRpb25F
bGVtZW50LCBjb250ZXh0RWxlbWVudCkKLXsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1h
dGVkVHlwZT4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1l
bnQpOwotICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZShlbnVtZXJhdGlvblZhbHVl
Rm9yVGFyZ2V0QXR0cmlidXRlKG1fYW5pbWF0aW9uRWxlbWVudC0+dGFyZ2V0RWxlbWVudCgpLCBt
X2FuaW1hdGlvbkVsZW1lbnQtPmF0dHJpYnV0ZU5hbWUoKSwgc3RyaW5nKSk7Ci19Ci0KLXN0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRv
cjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5
TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICByZXR1cm4gY29uc3RydWN0RnJvbUJhc2VWYWx1
ZTxTVkdBbmltYXRlZEVudW1lcmF0aW9uPihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdB
bmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNW
R0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBzdG9w
QW5pbVZhbEFuaW1hdGlvbkZvclR5cGU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4oYW5pbWF0ZWRU
eXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpyZXNldEFu
aW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmlt
YXRlZFR5cGVzLCBTVkdBbmltYXRlZFR5cGUmIHR5cGUpCi17Ci0gICAgcmVzZXRGcm9tQmFzZVZh
bHVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+KGFuaW1hdGVkVHlwZXMsIHR5cGUpOwotfQotCi12
b2lkIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjo6YW5pbVZhbFdpbGxDaGFuZ2UoY29u
c3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAg
IGFuaW1WYWxXaWxsQ2hhbmdlRm9yVHlwZTxTVkdBbmltYXRlZEVudW1lcmF0aW9uPihhbmltYXRl
ZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I6OmFuaW1W
YWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRl
ZFR5cGVzKQotewotICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkRW51bWVy
YXRpb24+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkRW51bWVyYXRpb25B
bmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5
cGUqKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFNWR0FuaW1hdGVk
RW51bWVyYXRpb25BbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50
YWdlLCB1bnNpZ25lZCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRv
LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVkKQotewotICAgIEFT
U0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsK
LQotICAgIGNvbnN0IGF1dG8gZnJvbUVudW1lcmF0aW9uID0gKG1fYW5pbWF0aW9uRWxlbWVudC0+
YW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbk1vZGU6OlRvID8gYW5pbWF0ZWQgOiBmcm9tKS0+
YXM8dW5zaWduZWQ+KCk7Ci0gICAgY29uc3QgYXV0byB0b0VudW1lcmF0aW9uID0gdG8tPmFzPHVu
c2lnbmVkPigpOwotICAgIGF1dG8mIGFuaW1hdGVkRW51bWVyYXRpb24gPSBhbmltYXRlZC0+YXM8
dW5zaWduZWQ+KCk7Ci0KLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVEaXNjcmV0ZVR5
cGU8dW5zaWduZWQ+KHBlcmNlbnRhZ2UsIGZyb21FbnVtZXJhdGlvbiwgdG9FbnVtZXJhdGlvbiwg
YW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci19Ci0KLWZsb2F0IFNWR0FuaW1hdGVkRW51bWVyYXRpb25B
bmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikK
LXsKLSAgICAvLyBObyBwYWNlZCBhbmltYXRpb25zIGZvciBlbnVtZXJhdGlvbnMuCi0gICAgcmV0
dXJuIC0xOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVu
dW1lcmF0aW9uLmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZEVudW1lcmF0aW9uLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLCAyMDEyLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdBbmltYXRlZEVu
dW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5p
bWF0b3IuaCIKLSNpbmNsdWRlICJTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7Ci0KLXVzaW5nIFNWR0FuaW1h
dGVkRW51bWVyYXRpb24gPSBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZjx1bnNpZ25l
ZD47Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEVudW1UeXBlPgotdXNpbmcgU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbkF0dHJpYnV0ZSA9IFNWR0FuaW1hdGVkQXR0cmlidXRlPFNWR0FuaW1hdGVkRW51bWVy
YXRpb25Qcm9wZXJ0eVRlYXJPZmY8RW51bVR5cGU+PjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgT3du
ZXJUeXBlLCB0eXBlbmFtZSBFbnVtVHlwZT4KLXVzaW5nIFNWR0FuaW1hdGVkRW51bWVyYXRpb25B
dHRyaWJ1dGVBY2Nlc3NvciA9IFNWR0FuaW1hdGVkQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBl
LCBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPEVudW1UeXBlPiwgQW5pbWF0ZWRFbnVt
ZXJhdGlvbj47Ci0KLWNsYXNzIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvciBmaW5hbCA6
IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7Ci1wdWJsaWM6Ci0gICAgU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbkFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7
Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3Ry
aW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmlt
YXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYW5pbVZhbFdpbGxDaGFu
Z2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIHZvaWQgY2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0
ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRU
eXBlKikgb3ZlcnJpZGU7Ci0gICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlkZTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9s
LXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCShyZXZpc2lvbiAyNDM0
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDI0ICs0NSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihXVEZNb3ZlKHByb3BlcnR5KSk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlMSwgdHlwZW5hbWUgUHJvcGVydHlUeXBlMj4K
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHlwZT4oU1ZH
UHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPFByb3BlcnR5VHlwZTEsIFByb3BlcnR5VHlwZTI+Pjo6
aW5pdGlhbFZhbHVlKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5
VHlwZTEsIHR5cGVuYW1lIFByb3BlcnR5VHlwZTI+Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZShjb25zdCBzdGQ6OnBhaXI8UHJvcGVydHlUeXBlMSwg
UHJvcGVydHlUeXBlMj4mIHByb3BlcnRpZXMpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+KHByb3BlcnRpZXMpOwotICAgIH0KLQotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZTEsIHR5cGVuYW1lIFByb3BlcnR5VHlwZTI+Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZShzdGQ6OnBh
aXI8UHJvcGVydHlUeXBlMSwgUHJvcGVydHlUeXBlMj4mJiBwcm9wZXJ0aWVzKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihXVEZNb3ZlKHBy
b3BlcnRpZXMpKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+
CiAgICAgU1ZHQW5pbWF0ZWRUeXBlKGNvbnN0IFByb3BlcnR5VHlwZSYgcHJvcGVydHkpCiAgICAg
ICAgIDogbV92YWx1ZShzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5VHlwZT4ocHJvcGVydHkpLnJl
bGVhc2UoKSkKQEAgLTc1LDE4ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlMSwgdHlwZW5hbWUgUHJvcGVydHlUeXBlMj4K
LSAgICBTVkdBbmltYXRlZFR5cGUoY29uc3Qgc3RkOjpwYWlyPFByb3BlcnR5VHlwZTEsIFByb3Bl
cnR5VHlwZTI+JiBwcm9wZXJ0aWVzKQotICAgICAgICA6IG1fdmFsdWUoc3RkOjptYWtlX3VuaXF1
ZTxzdGQ6OnBhaXI8UHJvcGVydHlUeXBlMSwgUHJvcGVydHlUeXBlMj4+KHByb3BlcnRpZXMpLnJl
bGVhc2UoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlU
eXBlMSwgdHlwZW5hbWUgUHJvcGVydHlUeXBlMj4KLSAgICBTVkdBbmltYXRlZFR5cGUoc3RkOjpw
YWlyPFByb3BlcnR5VHlwZTEsIFByb3BlcnR5VHlwZTI+JiYgcHJvcGVydGllcykKLSAgICAgICAg
OiBtX3ZhbHVlKHN0ZDo6bWFrZV91bmlxdWU8c3RkOjpwYWlyPFByb3BlcnR5VHlwZTEsIFByb3Bl
cnR5VHlwZTI+PihXVEZNb3ZlKHByb3BlcnRpZXMpKS5yZWxlYXNlKCkpCi0gICAgewotICAgIH0K
LQogICAgIH5TVkdBbmltYXRlZFR5cGUoKQogICAgIHsKICAgICAgICAgV1RGOjp2aXNpdChbXShh
dXRvJiB2YWx1ZSkgewpAQCAtMTExLDggKzgxLDYgQEAgcHVibGljOgogICAgIEFuaW1hdGVkUHJv
cGVydHlUeXBlIHR5cGUoKSBjb25zdAogICAgIHsKICAgICAgICAgc3RhdGljIEFuaW1hdGVkUHJv
cGVydHlUeXBlIGFuaW1hdGVkVHlwZXNbXSA9IHsKLSAgICAgICAgICAgIEFuaW1hdGVkQW5nbGUs
Ci0gICAgICAgICAgICBBbmltYXRlZEVudW1lcmF0aW9uLAogICAgICAgICAgICAgQW5pbWF0ZWRM
ZW5ndGgsCiAgICAgICAgICAgICBBbmltYXRlZExlbmd0aExpc3QsCiAgICAgICAgICAgICBBbmlt
YXRlZFBhdGgsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCShy
ZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJTVkdBbmltYXRlZEFuZ2xlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQYXRoLmgiCkBAIC0zOCw4
ICszNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CiAKICAg
ICAgICAgc3dpdGNoIChhdHRyaWJ1dGVUeXBlKSB7CisgICAgICAgIGNhc2UgQW5pbWF0ZWRBbmds
ZToKICAgICAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRD
b2xvcjoKKyAgICAgICAgY2FzZSBBbmltYXRlZEVudW1lcmF0aW9uOgogICAgICAgICBjYXNlIEFu
aW1hdGVkSW50ZWdlcjoKICAgICAgICAgY2FzZSBBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVn
ZXI6CiAgICAgICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CkBAIC01MSwxMCArNTEsNiBAQCBwdWJs
aWM6CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1l
bnQsIGNvbnRleHRFbGVtZW50KTsKLSAgICAgICAgY2FzZSBBbmltYXRlZEVudW1lcmF0aW9uOgot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bkFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNh
c2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZExlbmd0aEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVu
dCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGhMaXN0OgpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSwyOCArMzksMjMgQEAgaW5saW5lIFNWR0NsaXBQYXRoRWxlbWVudDo6U1ZHQ2xpcFBhdGhFbAog
ICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCh0aGlzKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpjbGlwUGF0aFRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRl
cygpOwotfQorCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lz
dGVyUHJvcGVydHk8U1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlLCAmU1ZHQ2xpcFBhdGhFbGVtZW50OjptX2NsaXBQYXRoVW5pdHM+KCk7CisgICAg
fSk7fQogCiBSZWY8U1ZHQ2xpcFBhdGhFbGVtZW50PiBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQ2xpcFBhdGhFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KSk7CiB9CiAKLXZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMo
KQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAo
IXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lz
dGVyQXR0cmlidXRlPFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZSwgJlNWR0NsaXBQYXRoRWxlbWVudDo6bV9jbGlwUGF0aFVuaXRzPigpOwotfQot
CiB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9
PSBTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHIpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eVZh
bHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT46OmZyb21T
dHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAgICAgICAg
ICBtX2NsaXBQYXRoVW5pdHMuc2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAgICBt
X2NsaXBQYXRoVW5pdHMtPnNldEJhc2VWYWxJbnRlcm5hbDxTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzAsNyAr
NjUsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoCiAKIHZvaWQg
U1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogewotICAgIGlmIChpc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewor
ICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewog
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAogICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3
ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbi5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNs
dWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdVbml0VHlwZXMuaCIKQEAg
LTM1LDI1ICszNCwxOCBAQCBjbGFzcyBTVkdDbGlwUGF0aEVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdDbGlwUGF0aEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5p
dFR5cGUgY2xpcFBhdGhVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcFBhdGhVbml0cy5jdXJy
ZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRl
ZEVudW1lcmF0aW9uPiBjbGlwUGF0aFVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX2NsaXBQYXRo
VW5pdHMuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZSBjbGlwUGF0aFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9j
bGlwUGF0aFVuaXRzLT5jdXJyZW50VmFsdWU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4oKTsg
fQorICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIGNsaXBQYXRoVW5pdHNBbmltYXRlZCgpIHsg
cmV0dXJuIG1fY2xpcFBhdGhVbml0czsgfQogCiBwcml2YXRlOgogICAgIFNWR0NsaXBQYXRoRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJp
YnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdDbGlwUGF0aEVs
ZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47
Ci0gICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRy
aWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJl
Z2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBj
b25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKICAgICB1c2luZyBQcm9w
ZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0NsaXBQYXRoRWxlbWVu
dCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAg
ICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tu
b3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewot
ICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOwotICAgIH0KLQogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKQEAgLTY2LDcgKzU4LDcgQEAgcHJpdmF0
ZToKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRo
aXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlPiBtX2NsaXBQYXRoVW5pdHMgeyBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNF
UlNQQUNFT05VU0UgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9jbGlwUGF0
aFVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBl
czo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMjQzNDY2KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFNWR0NvbXBvbmVudAogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6
OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiB7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgCiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6
OnR5cGVBdHRyLCBDb21wb25lbnRUcmFuc2ZlclR5cGUsICZTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudDo6bV90eXBlPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdp
c3RlclByb3BlcnR5PFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIsICZTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudDo6bV90YWJsZVZhbHVlcz4oKTsKICAgICAgICAgUHJvcGVydHlS
ZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6c2xvcGVBdHRyLCAmU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6Om1fc2xvcGU+KCk7CiAgICAgICAgIFByb3BlcnR5
UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmludGVyY2VwdEF0dHIsICZTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6bV9pbnRlcmNlcHQ+KCk7CkBAIC00Nywy
MCArNDYsMTIgQEAgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OlNWRwogICAg
IH0pOwogfQogCi12b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpyZWdp
c3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0
cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp0eXBlQXR0ciwgQ29tcG9uZW50
VHJhbnNmZXJUeXBlLCAmU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6Om1fdHlw
ZT4oKTsKLX0KLQogdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKICAgICAg
ICAgQ29tcG9uZW50VHJhbnNmZXJUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0
czxDb21wb25lbnRUcmFuc2ZlclR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYg
KHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV90eXBlLnNldFZhbHVlKHByb3BlcnR5
VmFsdWUpOworICAgICAgICAgICAgbV90eXBlLT5zZXRCYXNlVmFsSW50ZXJuYWw8Q29tcG9uZW50
VHJhbnNmZXJUeXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50LmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMiw3ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZFQ29tcG9uZW50
VHJhbnNmZXIuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Myw3ICs3Miw3IEBA
IGNsYXNzIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW4KIHB1YmxpYzoKICAgICBD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb24oKSBjb25zdDsKIAotICAg
IENvbXBvbmVudFRyYW5zZmVyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmN1cnJl
bnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgQ29tcG9uZW50VHJhbnNmZXJU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUtPmN1cnJlbnRWYWx1ZTxDb21wb25lbnRU
cmFuc2ZlclR5cGU+KCk7IH0KICAgICBjb25zdCBTVkdOdW1iZXJMaXN0JiB0YWJsZVZhbHVlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdGFibGVWYWx1ZXMtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgZmxv
YXQgc2xvcGUoKSBjb25zdCB7IHJldHVybiBtX3Nsb3BlLT5jdXJyZW50VmFsdWUoKTsgfQogICAg
IGZsb2F0IGludGVyY2VwdCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJjZXB0LT5jdXJyZW50VmFs
dWUoKTsgfQpAQCAtODEsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZXhwb25lbnQoKSBj
b25zdCB7IHJldHVybiBtX2V4cG9uZW50LT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGZsb2F0IG9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0LT5jdXJyZW50VmFsdWUoKTsgfQogCi0gICAg
UmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IHR5cGVBbmltYXRlZCgpIHsgcmV0dXJuIG1f
dHlwZS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdB
bmltYXRlZEVudW1lcmF0aW9uJiB0eXBlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3R5cGU7IH0KICAg
ICBTVkdBbmltYXRlZE51bWJlckxpc3QmIHRhYmxlVmFsdWVzQW5pbWF0ZWQoKSB7IHJldHVybiBt
X3RhYmxlVmFsdWVzOyB9CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXImIHNsb3BlQW5pbWF0ZWQoKSB7
IHJldHVybiBtX3Nsb3BlOyB9CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGludGVyY2VwdEFuaW1h
dGVkKCkgeyByZXR1cm4gbV9pbnRlcmNlcHQ7IH0KQEAgLTkzLDE4ICs5MiwxMSBAQCBwcm90ZWN0
ZWQ6CiAgICAgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0g
U1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQsIFNWR0VsZW1lbnQ+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRy
aWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJB
dHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRl
T3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeTxTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHRWxlbWVudD47CiAg
ICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wg
aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC0xMTMs
NyArMTA1LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBBdHRyaWJ1dGVPd25lclByb3h5
IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25B
dHRyaWJ1dGU8Q29tcG9uZW50VHJhbnNmZXJUeXBlPiBtX3R5cGUgeyBGRUNPTVBPTkVOVFRSQU5T
RkVSX1RZUEVfSURFTlRJVFkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV90
eXBlIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIEZFQ09NUE9ORU5UVFJB
TlNGRVJfVFlQRV9JREVOVElUWSkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0PiBt
X3RhYmxlVmFsdWVzIHsgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0OjpjcmVhdGUodGhpcykgfTsKICAg
ICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fc2xvcGUgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3Jl
YXRlKHRoaXMsIDEpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2ludGVyY2VwdCB7
IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQwLDcgKzc0MCwxMyBAQCB2b2lkIFNWR0Vs
ZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWCiB2b2lkIFNWR0VsZW1lbnQ6OmNvbW1pdFBy
b3BlcnR5Q2hhbmdlKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHkpCiB7CiAg
ICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVOYW1lID0gcHJvcGVydHlSZWdpc3RyeSgpLmFuaW1h
dGVkUHJvcGVydHlBdHRyaWJ1dGVOYW1lKGFuaW1hdGVkUHJvcGVydHkpOwotICAgIHNldFN5bmNo
cm9uaXplZExhenlBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eS5iYXNl
VmFsQXNTdHJpbmcoKSk7CisKKyAgICAvLyBBIGNoYW5nZSBpbiBhIHN0eWxlIHByb3BlcnR5LCBl
LmcgU1ZHUmVjdEVsZW1lbnQ6Onggc2hvdWxkIGJlIHNlcmlhbGl6ZWQgdG8KKyAgICAvLyB0aGUg
YXR0cmlidXRlIGltbWVkaWF0ZWx5LiBPdGhlcndpc2UgaXQgaXMgb2theSB0byBiZSBsYXp5IGlu
IHRoaXMgcmVnYXJkLgorICAgIGlmICghcHJvcGVydHlSZWdpc3RyeSgpLmlzQW5pbWF0ZWRTdHls
ZVByb3BlcnR5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKQorICAgICAgICBhbmltYXRlZFByb3Bl
cnR5LnNldERpcnR5KCk7CisgICAgZWxzZQorICAgICAgICBzZXRTeW5jaHJvbml6ZWRMYXp5QXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHkuYmFzZVZhbEFzU3RyaW5nKCkp
OwogCiAgICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKICAgICBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJpYnV0ZU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMCArMzcsMTAgQEAgaW5saW5l
IFNWR0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbQogICAgIDogU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpmZUJsZW5kVGFnKSk7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVz
KCk7CiAgICAgCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lz
dGVyUHJvcGVydHk8U1ZHTmFtZXM6Om1vZGVBdHRyLCBCbGVuZE1vZGUsICZTVkdGRUJsZW5kRWxl
bWVudDo6bV9tb2RlPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3Bl
cnR5PFNWR05hbWVzOjppbkF0dHIsICZTVkdGRUJsZW5kRWxlbWVudDo6bV9pbjE+KCk7CiAgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmluMkF0dHIs
ICZTVkdGRUJsZW5kRWxlbWVudDo6bV9pbjI+KCk7CiAgICAgfSk7CkBAIC01MSwyMCArNTEsMTIg
QEAgUmVmPFNWR0ZFQmxlbmRFbGVtZW50PiBTVkdGRUJsZW5kRWxlbWVudAogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNWR0ZFQmxlbmRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAg
ICAgCi12b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAg
IGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjptb2RlQXR0ciwgQmxlbmRNb2RlLCAmU1ZHRkVCbGVuZEVsZW1lbnQ6Om1f
bW9kZT4oKTsKLX0KLQogdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6bW9kZUF0dHIpIHsKICAgICAgICAgQmxlbmRNb2RlIG1v
ZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbDsKICAgICAgICAgaWYgKHBhcnNlQmxlbmRNb2RlKHZhbHVl
LCBtb2RlKSkKLSAgICAgICAgICAgIG1fbW9kZS5zZXRWYWx1ZShtb2RlKTsKKyAgICAgICAgICAg
IG1fbW9kZS0+c2V0QmFzZVZhbEludGVybmFsPEJsZW5kTW9kZT4obW9kZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
CShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bi5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMiw2ICszMSwxMyBAQCB0ZW1wbGF0ZTw+CiBzdHJ1
Y3QgU1ZHUHJvcGVydHlUcmFpdHM8QmxlbmRNb2RlPiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhp
Z2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQmxlbmRNb2Rl
OjpMdW1pbm9zaXR5KTsgfQogCisgICAgc3RhdGljIEJsZW5kTW9kZSBmcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQorICAgIHsKKyAgICAgICAgQmxlbmRNb2RlIG1vZGUgPSBCbGVuZE1v
ZGU6Ok5vcm1hbDsKKyAgICAgICAgcGFyc2VCbGVuZE1vZGUoc3RyaW5nLCBtb2RlKTsKKyAgICAg
ICAgcmV0dXJuIG1vZGU7CisgICAgfQorCiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhCbGVu
ZE1vZGUgdHlwZSkKICAgICB7CiAgICAgICAgIGlmICh0eXBlIDwgQmxlbmRNb2RlOjpQbHVzRGFy
a2VyKQpAQCAtNDgsMjggKzU0LDIxIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBpbjEoKSBjb25z
dCB7IHJldHVybiBtX2luMS0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBTdHJpbmcgaW4yKCkgY29u
c3QgeyByZXR1cm4gbV9pbjItPmN1cnJlbnRWYWx1ZSgpOyB9Ci0gICAgQmxlbmRNb2RlIG1vZGUo
KSBjb25zdCB7IHJldHVybiBtX21vZGUuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KKyAgICBCbGVuZE1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZS0+Y3VycmVu
dFZhbHVlPEJsZW5kTW9kZT4oKTsgfQogCiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcmIGluMUFuaW1h
dGVkKCkgeyByZXR1cm4gbV9pbjE7IH0KICAgICBTVkdBbmltYXRlZFN0cmluZyYgaW4yQW5pbWF0
ZWQoKSB7IHJldHVybiBtX2luMjsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9u
PiBtb2RlQW5pbWF0ZWQoKSB7IHJldHVybiBtX21vZGUuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgbW9kZUFuaW1h
dGVkKCkgeyByZXR1cm4gbV9tb2RlOyB9CiAKIHByaXZhdGU6CiAgICAgU1ZHRkVCbGVuZEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB1c2luZyBBdHRyaWJ1
dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVCbGVuZEVsZW1l
bnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47Ci0gICAgc3RhdGljIEF0
dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgp
IHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBTVkdBdHRyaWJ1
dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0g
U1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkm
IHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0
cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0
cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKIApAQCAtODAsNyArNzksNyBAQCBwcml2YXRlOgogICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0
ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwogICAg
IFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjIgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRl
KHRoaXMpIH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxCbGVuZE1vZGU+
IG1fbW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVy
YXRpb24+IG1fbW9kZSB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBCbGVu
ZE1vZGU6Ok5vcm1hbCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNp
b24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDExIEBAIGlubGluZSBTVkdGRUNvbG9y
TWF0cml4RWxlbWVudDo6U1ZHRkVDb2wKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6ZmVDb2xvck1hdHJpeFRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwot
ICAgIAorCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVy
UHJvcGVydHk8U1ZHTmFtZXM6OmluQXR0ciwgJlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjptX2lu
MT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1l
czo6dHlwZUF0dHIsIENvbG9yTWF0cml4VHlwZSwgJlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Ojpt
X3R5cGU+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZH
TmFtZXM6OnZhbHVlc0F0dHIsICZTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6bV92YWx1ZXM+KCk7
CiAgICAgfSk7CiB9CkBAIC00OSwyMCArNDksMTIgQEAgUmVmPFNWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50PiBTVkdGRUNvbG9yTQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBh
dHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnR5cGVB
dHRyLCBDb2xvck1hdHJpeFR5cGUsICZTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6bV90eXBlPigp
OwotfQotCiB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmIChuYW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgewogICAgICAgICBhdXRvIHByb3BlcnR5
VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxDb2xvck1hdHJpeFR5cGU+Ojpmcm9tU3RyaW5nKHZh
bHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV90eXBl
LnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgbV90eXBlLT5zZXRCYXNlVmFs
SW50ZXJuYWw8Q29sb3JNYXRyaXhUeXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bG9yTWF0cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw2IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXguaCIKLSNpbmNsdWRlICJTVkdBbmlt
YXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDI5ICs2OSwyMiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdGRUNvbG9yTWF0cml4RWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgU3RyaW5nIGluMSgpIGNvbnN0
IHsgcmV0dXJuIG1faW4xLT5jdXJyZW50VmFsdWUoKTsgfQotICAgIENvbG9yTWF0cml4VHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9CisgICAgQ29sb3JNYXRyaXhUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUtPmN1cnJlbnRWYWx1ZTxDb2xvck1hdHJpeFR5cGU+KCk7IH0KICAgICBjb25zdCBTVkdOdW1i
ZXJMaXN0JiB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlcy0+Y3VycmVudFZhbHVlKCk7
IH0KIAogICAgIFNWR0FuaW1hdGVkU3RyaW5nJiBpbjFBbmltYXRlZCgpIHsgcmV0dXJuIG1faW4x
OyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IHR5cGVBbmltYXRlZCgpIHsg
cmV0dXJuIG1fdHlwZS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
KyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiB0eXBlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3R5
cGU7IH0KICAgICBTVkdBbmltYXRlZE51bWJlckxpc3QmIHZhbHVlc0FuaW1hdGVkKCkgeyByZXR1
cm4gbV92YWx1ZXM7IH0KIAogcHJpdmF0ZToKICAgICBTVkdGRUNvbG9yTWF0cml4RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93
bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUNvbG9yTWF0cml4RWxl
bWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKLSAgICBzdGF0aWMg
QXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5
KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQot
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNvbnN0IFNWR0F0dHJp
YnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkg
PSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlS
ZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVy
dHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJp
YnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVy
dHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC0xMDIsNyArOTQsNyBAQCBwcml2YXRlOgogICAg
IEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVm
PFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhp
cykgfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPENvbG9yTWF0cml4VHlw
ZT4gbV90eXBlIHsgRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCB9OworICAgIFJlZjxTVkdBbmlt
YXRlZEVudW1lcmF0aW9uPiBtX3R5cGUgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUo
dGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0PiBtX3ZhbHVlcyB7IFNWR0FuaW1hdGVkTnVtYmVyTGlzdDo6Y3JlYXRlKHRoaXMp
IH07CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9zaXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEyICszNSwxMiBAQCBpbmxp
bmUgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpTVkdGRUNvbXBvCiAgICAgOiBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29tcG9zaXRlVGFnKSk7Ci0gICAgcmVnaXN0ZXJBdHRy
aWJ1dGVzKCk7Ci0gICAgCisKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgUHJvcGVydHlSZWdpc3Ry
eTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6aW5BdHRyLCAmU1ZHRkVDb21wb3NpdGVFbGVt
ZW50OjptX2luMT4oKTsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0
eTxTVkdOYW1lczo6aW4yQXR0ciwgJlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6bV9pbjI+KCk7Cisg
ICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om9wZXJh
dG9yQXR0ciwgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSwgJlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6
bV9zdmdPcGVyYXRvcj4oKTsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9w
ZXJ0eTxTVkdOYW1lczo6azFBdHRyLCAmU1ZHRkVDb21wb3NpdGVFbGVtZW50OjptX2sxPigpOwog
ICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjprMkF0
dHIsICZTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6Om1fazI+KCk7CiAgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmszQXR0ciwgJlNWR0ZFQ29tcG9zaXRl
RWxlbWVudDo6bV9rMz4oKTsKQEAgLTUzLDIwICs1MywxMiBAQCBSZWY8U1ZHRkVDb21wb3NpdGVF
bGVtZW50PiBTVkdGRUNvbXBvc2l0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVDb21w
b3NpdGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHRkVDb21wb3Np
dGVFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0g
YXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpvcGVy
YXRvckF0dHIsIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUsICZTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6
Om1fc3ZnT3BlcmF0b3I+KCk7Ci19Ci0KIHZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIpIHsKICAg
ICAgICAgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlU
cmFpdHM8Q29tcG9zaXRlT3BlcmF0aW9uVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAg
ICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAgICAgICAgICBtX3N2Z09wZXJhdG9yLnNldFZh
bHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgbV9zdmdPcGVyYXRvci0+c2V0QmFzZVZh
bEludGVybmFsPENvbXBvc2l0ZU9wZXJhdGlvblR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9z
aXRlRWxlbWVudC5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb3NpdGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRkVDb21wb3NpdGUuaCIKLSNpbmNsdWRlICJTVkdBbmlt
YXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg2LDcgKzg1LDcgQEAgcHVi
bGljOgogCiAgICAgU3RyaW5nIGluMSgpIGNvbnN0IHsgcmV0dXJuIG1faW4xLT5jdXJyZW50VmFs
dWUoKTsgfQogICAgIFN0cmluZyBpbjIoKSBjb25zdCB7IHJldHVybiBtX2luMi0+Y3VycmVudFZh
bHVlKCk7IH0KLSAgICBDb21wb3NpdGVPcGVyYXRpb25UeXBlIHN2Z09wZXJhdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9zdmdPcGVyYXRvci5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQorICAgIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgc3ZnT3BlcmF0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3N2Z09wZXJhdG9yLT5jdXJyZW50VmFsdWU8Q29tcG9zaXRlT3BlcmF0aW9uVHlwZT4o
KTsgfQogICAgIGZsb2F0IGsxKCkgY29uc3QgeyByZXR1cm4gbV9rMS0+Y3VycmVudFZhbHVlKCk7
IH0KICAgICBmbG9hdCBrMigpIGNvbnN0IHsgcmV0dXJuIG1fazItPmN1cnJlbnRWYWx1ZSgpOyB9
CiAgICAgZmxvYXQgazMoKSBjb25zdCB7IHJldHVybiBtX2szLT5jdXJyZW50VmFsdWUoKTsgfQpA
QCAtOTQsNyArOTMsNyBAQCBwdWJsaWM6CiAKICAgICBTVkdBbmltYXRlZFN0cmluZyYgaW4xQW5p
bWF0ZWQoKSB7IHJldHVybiBtX2luMTsgfQogICAgIFNWR0FuaW1hdGVkU3RyaW5nJiBpbjJBbmlt
YXRlZCgpIHsgcmV0dXJuIG1faW4yOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRp
b24+IHN2Z09wZXJhdG9yQW5pbWF0ZWQoKSB7IHJldHVybiBtX3N2Z09wZXJhdG9yLmFuaW1hdGVk
UHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkRW51bWVy
YXRpb24mIHN2Z09wZXJhdG9yQW5pbWF0ZWQoKSB7IHJldHVybiBtX3N2Z09wZXJhdG9yOyB9CiAg
ICAgU1ZHQW5pbWF0ZWROdW1iZXImIGsxQW5pbWF0ZWQoKSB7IHJldHVybiBtX2sxOyB9CiAgICAg
U1ZHQW5pbWF0ZWROdW1iZXImIGsyQW5pbWF0ZWQoKSB7IHJldHVybiBtX2syOyB9CiAgICAgU1ZH
QW5pbWF0ZWROdW1iZXImIGszQW5pbWF0ZWQoKSB7IHJldHVybiBtX2szOyB9CkBAIC0xMDQsMTgg
KzEwMywxMSBAQCBwcml2YXRlOgogICAgIFNWR0ZFQ29tcG9zaXRlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkg
PSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47Ci0gICAgc3RhdGljIEF0dHJpYnV0ZU93
bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMg
dm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1
dGVPd25lclByb3h5OyB9CiAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5PFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9w
ZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9
CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KLQogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CiAKQEAgLTEyNiw3ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIFByb3BlcnR5UmVn
aXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRT
dHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFJl
ZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjIgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRo
aXMpIH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxDb21wb3NpdGVPcGVy
YXRpb25UeXBlPiBtX3N2Z09wZXJhdG9yIHsgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUiB9Owor
ICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3N2Z09wZXJhdG9yIHsgU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIpIH07
CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2sxIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNy
ZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9rMiB7IFNWR0FuaW1h
dGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1f
azMgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAJKHJldmlzaW9u
IDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgaW5saW5lIFNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjpTVkdGRQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpmZUNvbnZvbHZlTWF0cml4VGFnKSk7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7
CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFtdIHsKQEAgLTQ5LDYgKzQ4LDcgQEAgaW5saW5lIFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpTVkdGRQogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclBy
b3BlcnR5PFNWR05hbWVzOjpiaWFzQXR0ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Ojpt
X2JpYXM+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZH
TmFtZXM6OnRhcmdldFhBdHRyLCAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fdGFyZ2V0
WD4oKTsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1l
czo6dGFyZ2V0WUF0dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV90YXJnZXRZPigp
OworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpl
ZGdlTW9kZUF0dHIsIEVkZ2VNb2RlVHlwZSwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Ojpt
X2VkZ2VNb2RlPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5
PFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50OjptX2tlcm5lbFVuaXRMZW5ndGhYLCAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1f
a2VybmVsVW5pdExlbmd0aFk+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVy
UHJvcGVydHk8U1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyLCAmU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6Om1fcHJlc2VydmVBbHBoYT4oKTsKICAgICB9KTsKQEAgLTU5LDE0ICs1OSw2IEBA
IFJlZjxTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudD4gU1ZHRkVDb24KICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0
ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBp
ZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjplZGdlTW9kZUF0dHIsIEVkZ2VNb2RlVHlwZSwgJlNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX2VkZ2VNb2RlPigpOwotfQotCiB2b2lkIFNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjppbkF0dHIpIHsKQEAgLTg3LDcgKzc5LDcgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6cGFyc2VBdAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjplZGdlTW9kZUF0
dHIpIHsKICAgICAgICAgRWRnZU1vZGVUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRy
YWl0czxFZGdlTW9kZVR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3Bl
cnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9lZGdlTW9kZS5zZXRWYWx1ZShwcm9wZXJ0eVZh
bHVlKTsKKyAgICAgICAgICAgIG1fZWRnZU1vZGUtPnNldEJhc2VWYWxJbnRlcm5hbDxFZGdlTW9k
ZVR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkb2N1bWVu
dCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRXYXJuaW5nKCJmZUNvbnZvbHZlTWF0cml4
OiBwcm9ibGVtIHBhcnNpbmcgZWRnZU1vZGU9XCIiICsgdmFsdWUgKyAiXCIuIEZpbHRlcmVkIGVs
ZW1lbnQgd2lsbCBub3QgYmUgZGlzcGxheWVkLiIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAkocmV2
aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIGZs
b2F0IGJpYXMoKSBjb25zdCB7IHJldHVybiBtX2JpYXMtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAg
aW50IHRhcmdldFgoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFgtPmN1cnJlbnRWYWx1ZSgpOyB9
CiAgICAgaW50IHRhcmdldFkoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFktPmN1cnJlbnRWYWx1
ZSgpOyB9Ci0gICAgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lZGdl
TW9kZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIEVkZ2VNb2Rl
VHlwZSBlZGdlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZU1vZGUtPmN1cnJlbnRWYWx1ZTxF
ZGdlTW9kZVR5cGU+KCk7IH0KICAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCgpIGNvbnN0IHsg
cmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFgtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgZmxvYXQg
a2VybmVsVW5pdExlbmd0aFkoKSBjb25zdCB7IHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhZLT5j
dXJyZW50VmFsdWUoKTsgfQogICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJlc2VydmVBbHBoYS0+Y3VycmVudFZhbHVlKCk7IH0KQEAgLTg4LDcgKzg4LDcgQEAgcHVi
bGljOgogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiBiaWFzQW5pbWF0ZWQoKSB7IHJldHVybiBtX2Jp
YXM7IH0KICAgICBTVkdBbmltYXRlZEludGVnZXImIHRhcmdldFhBbmltYXRlZCgpIHsgcmV0dXJu
IG1fdGFyZ2V0WDsgfQogICAgIFNWR0FuaW1hdGVkSW50ZWdlciYgdGFyZ2V0WUFuaW1hdGVkKCkg
eyByZXR1cm4gbV90YXJnZXRZOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+
IGVkZ2VNb2RlQW5pbWF0ZWQoKSB7IHJldHVybiBtX2VkZ2VNb2RlLmFuaW1hdGVkUHJvcGVydHko
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIGVk
Z2VNb2RlQW5pbWF0ZWQoKSB7IHJldHVybiBtX2VkZ2VNb2RlOyB9CiAgICAgU1ZHQW5pbWF0ZWRO
dW1iZXImIGtlcm5lbFVuaXRMZW5ndGhYQW5pbWF0ZWQoKSB7IHJldHVybiBtX2tlcm5lbFVuaXRM
ZW5ndGhYOyB9CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGtlcm5lbFVuaXRMZW5ndGhZQW5pbWF0
ZWQoKSB7IHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhZOyB9CiAgICAgU1ZHQW5pbWF0ZWRCb29s
ZWFuJiBwcmVzZXJ2ZUFscGhhQW5pbWF0ZWQoKSB7IHJldHVybiBtX3ByZXNlcnZlQWxwaGE7IH0K
QEAgLTk3LDE4ICs5NywxMSBAQCBwcml2YXRlOgogICAgIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdXNpbmcgQXR0cmli
dXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwotICAg
IHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRl
UmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3Ry
eSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3Qg
U1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlS
ZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBjb25zdCBT
VkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwot
ICAgIH0KLQogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKQEAgLTEyNSw3ICsxMTgsNyBAQCBw
cml2YXRlOgogICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9iaWFzIHsgU1ZHQW5pbWF0ZWRO
dW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEludGVnZXI+IG1fdGFy
Z2V0WCB7IFNWR0FuaW1hdGVkSW50ZWdlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNWR0Fu
aW1hdGVkSW50ZWdlcj4gbV90YXJnZXRZIHsgU1ZHQW5pbWF0ZWRJbnRlZ2VyOjpjcmVhdGUodGhp
cykgfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPEVkZ2VNb2RlVHlwZT4g
bV9lZGdlTW9kZSB7IEVER0VNT0RFX0RVUExJQ0FURSB9OworICAgIFJlZjxTVkdBbmltYXRlZEVu
dW1lcmF0aW9uPiBtX2VkZ2VNb2RlIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIEVER0VNT0RFX0RVUExJQ0FURSkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1f
a2VybmVsVW5pdExlbmd0aFggeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiAg
ICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2tlcm5lbFVuaXRMZW5ndGhZIHsgU1ZHQW5pbWF0
ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEJvb2xlYW4+IG1f
cHJlc2VydmVBbHBoYSB7IFNWR0FuaW1hdGVkQm9vbGVhbjo6Y3JlYXRlKHRoaXMpIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMyBAQCBp
bmxpbmUgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpTVkdGCiAgICAgOiBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRGlzcGxhY2VtZW50TWFwVGFnKSk7Ci0gICAgcmVn
aXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgCisKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgUHJvcGVy
dHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6aW5BdHRyLCAmU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjptX2luMT4oKTsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6
cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6aW4yQXR0ciwgJlNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6bV9pbjI+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHk8U1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyLCBDaGFubmVsU2VsZWN0b3JUeXBl
LCAmU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjptX3hDaGFubmVsU2VsZWN0b3I+KCk7Cisg
ICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnlDaGFu
bmVsU2VsZWN0b3JBdHRyLCBDaGFubmVsU2VsZWN0b3JUeXBlLCAmU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50OjptX3lDaGFubmVsU2VsZWN0b3I+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0
cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnNjYWxlQXR0ciwgJlNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudDo6bV9zY2FsZT4oKTsKICAgICB9KTsKIH0KQEAgLTQ5LDI4ICs1MCwxOSBA
QCBSZWY8U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50PiBTVkdGRURpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KSk7CiB9CiAKLXZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpyZWdpc3RlckF0dHJp
YnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAg
ICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciwgQ2hhbm5l
bFNlbGVjdG9yVHlwZSwgJlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6bV94Q2hhbm5lbFNl
bGVjdG9yPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp5Q2hh
bm5lbFNlbGVjdG9yQXR0ciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSwgJlNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudDo6bV95Q2hhbm5lbFNlbGVjdG9yPigpOwotfQotCiB2b2lkIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1l
czo6eENoYW5uZWxTZWxlY3RvckF0dHIpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0g
U1ZHUHJvcGVydHlUcmFpdHM8Q2hhbm5lbFNlbGVjdG9yVHlwZT46OmZyb21TdHJpbmcodmFsdWUp
OwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAgICAgICAgICBtX3hDaGFubmVs
U2VsZWN0b3Iuc2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX3hDaGFubmVs
U2VsZWN0b3ItPnNldEJhc2VWYWxJbnRlcm5hbDxDaGFubmVsU2VsZWN0b3JUeXBlPihwcm9wZXJ0
eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05h
bWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0cikgewogICAgICAgICBhdXRvIHByb3BlcnR5VmFsdWUg
PSBTVkdQcm9wZXJ0eVRyYWl0czxDaGFubmVsU2VsZWN0b3JUeXBlPjo6ZnJvbVN0cmluZyh2YWx1
ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1feUNoYW5u
ZWxTZWxlY3Rvci5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1feUNoYW5u
ZWxTZWxlY3Rvci0+c2V0QmFzZVZhbEludGVybmFsPENoYW5uZWxTZWxlY3RvclR5cGU+KHByb3Bl
cnR5VmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCShyZXZpc2lvbiAyNDM0
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiRkVEaXNwbGFjZW1lbnRNYXAuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9u
LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcyLDMyICs3MSwyNSBAQCBwdWJsaWM6CiAKICAgICBT
dHJpbmcgaW4xKCkgY29uc3QgeyByZXR1cm4gbV9pbjEtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAg
U3RyaW5nIGluMigpIGNvbnN0IHsgcmV0dXJuIG1faW4yLT5jdXJyZW50VmFsdWUoKTsgfQotICAg
IENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
eENoYW5uZWxTZWxlY3Rvci5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQot
ICAgIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1feUNoYW5uZWxTZWxlY3Rvci5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQorICAgIENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1feENoYW5uZWxTZWxlY3Rvci0+Y3VycmVudFZhbHVlPENoYW5uZWxTZWxlY3RvclR5cGU+
KCk7IH0KKyAgICBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3lDaGFubmVsU2VsZWN0b3ItPmN1cnJlbnRWYWx1ZTxDaGFubmVsU2VsZWN0b3JU
eXBlPigpOyB9CiAgICAgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlLT5jdXJy
ZW50VmFsdWUoKTsgfQogCiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcmIGluMUFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV9pbjE7IH0KICAgICBTVkdBbmltYXRlZFN0cmluZyYgaW4yQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX2luMjsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiB4Q2hhbm5l
bFNlbGVjdG9yQW5pbWF0ZWQoKSB7IHJldHVybiBtX3hDaGFubmVsU2VsZWN0b3IuYW5pbWF0ZWRQ
cm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVk
RW51bWVyYXRpb24+IHlDaGFubmVsU2VsZWN0b3JBbmltYXRlZCgpIHsgcmV0dXJuIG1feUNoYW5u
ZWxTZWxlY3Rvci5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAg
ICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiB4Q2hhbm5lbFNlbGVjdG9yQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX3hDaGFubmVsU2VsZWN0b3I7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiB5
Q2hhbm5lbFNlbGVjdG9yQW5pbWF0ZWQoKSB7IHJldHVybiBtX3lDaGFubmVsU2VsZWN0b3I7IH0K
ICAgICBTVkdBbmltYXRlZE51bWJlciYgc2NhbGVBbmltYXRlZCgpIHsgcmV0dXJuIG1fc2NhbGU7
IH0KIAogcHJpdmF0ZToKICAgICBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93
bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47Ci0gICAgc3Rh
dGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdp
c3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7
IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBTVkdB
dHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lz
dHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBjb25zdCBTVkdQ
cm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsK
LSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC0xMDgsOCArMTAwLDggQEAg
cHJpdmF0ZToKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5n
OjpjcmVhdGUodGhpcykgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4yIHsgU1ZH
QW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRp
b25BdHRyaWJ1dGU8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gbV94Q2hhbm5lbFNlbGVjdG9yIHsgQ0hB
Tk5FTF9BIH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxDaGFubmVsU2Vs
ZWN0b3JUeXBlPiBtX3lDaGFubmVsU2VsZWN0b3IgeyBDSEFOTkVMX0EgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV94Q2hhbm5lbFNlbGVjdG9yIHsgU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIENIQU5ORUxfQSkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbj4gbV95Q2hhbm5lbFNlbGVjdG9yIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6
Y3JlYXRlKHRoaXMsIENIQU5ORUxfQSkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1f
c2NhbGUgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2
aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwxMiBAQCBpbmxpbmUgU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50OjpTVkdGRUdhCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmZlR2F1c3NpYW5CbHVyVGFnKSk7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVz
KCk7CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQ
cm9wZXJ0eTxTVkdOYW1lczo6aW5BdHRyLCAmU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjptX2lu
MT4oKTsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1l
czo6c3RkRGV2aWF0aW9uQXR0ciwgJlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6bV9zdGREZXZp
YXRpb25YLCAmU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjptX3N0ZERldmlhdGlvblk+KCk7Cisg
ICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmVkZ2VN
b2RlQXR0ciwgRWRnZU1vZGVUeXBlLCAmU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjptX2VkZ2VN
b2RlPigpOwogICAgIH0pOwogfQogCkBAIC01NywxNCArNTcsNiBAQCB2b2lkIFNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudDo6c2V0U3RkRGV2CiAgICAgaW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRv
JiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxT
VkdOYW1lczo6ZWRnZU1vZGVBdHRyLCBFZGdlTW9kZVR5cGUsICZTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6Om1fZWRnZU1vZGU+KCk7Ci19Ci0KIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzdGREZXZpYXRpb25B
dHRyKSB7CkBAIC04NCw3ICs3Niw3IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Ojpw
YXJzZUF0dHIKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVBdHRyKSB7CiAgICAg
ICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VNb2RlVHlwZT46
OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAg
ICAgICAgICBtX2VkZ2VNb2RlLnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAg
bV9lZGdlTW9kZS0+c2V0QmFzZVZhbEludGVybmFsPEVkZ2VNb2RlVHlwZT4ocHJvcGVydHlWYWx1
ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLnJlcG9ydFdhcm5pbmcoImZlR2F1c3NpYW5CbHVyOiBwcm9ibGVtIHBhcnNpbmcgZWRn
ZU1vZGU9XCIiICsgdmFsdWUgKyAiXCIuIEZpbHRlcmVkIGVsZW1lbnQgd2lsbCBub3QgYmUgZGlz
cGxheWVkLiIpOwogICAgICAgICByZXR1cm47CkBAIC05NSw3ICs4Nyw3IEBAIHZvaWQgU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50OjpwYXJzZUF0dHIKIAogdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiB7Ci0gICAgaWYgKGlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3Bl
cnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3Rh
bmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpbnZhbGlkYXRlKCk7
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIs
NiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGRUdhdXNzaWFuQmx1ci5oIgotI2luY2x1
ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5oIgogCkBAIC0zOCwyOSArMzcsMjIgQEAgcHVibGljOgogICAgIFN0cmluZyBpbjEoKSBj
b25zdCB7IHJldHVybiBtX2luMS0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBmbG9hdCBzdGREZXZp
YXRpb25YKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb25YLT5jdXJyZW50VmFsdWUoKTsg
fQogICAgIGZsb2F0IHN0ZERldmlhdGlvblkoKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlv
blktPmN1cnJlbnRWYWx1ZSgpOyB9Ci0gICAgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9lZGdlTW9kZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQorICAgIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZU1vZGUt
PmN1cnJlbnRWYWx1ZTxFZGdlTW9kZVR5cGU+KCk7IH0KIAogICAgIFNWR0FuaW1hdGVkU3RyaW5n
JiBpbjFBbmltYXRlZCgpIHsgcmV0dXJuIG1faW4xOyB9CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXIm
IHN0ZERldmlhdGlvblhBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWDsgfQogICAg
IFNWR0FuaW1hdGVkTnVtYmVyJiBzdGREZXZpYXRpb25ZQW5pbWF0ZWQoKSB7IHJldHVybiBtX3N0
ZERldmlhdGlvblk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gZWRnZU1v
ZGVBbmltYXRlZCgpIHsgcmV0dXJuIG1fZWRnZU1vZGUuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgZWRnZU1vZGVB
bmltYXRlZCgpIHsgcmV0dXJuIG1fZWRnZU1vZGU7IH0KIAogcHJpdmF0ZToKICAgICBTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAg
ICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3Ry
eSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRy
aWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7
CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNp
bmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAg
ICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC03MSw3ICs2
Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0Fu
aW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+
IG1fc3RkRGV2aWF0aW9uWCB7IFNWR0FuaW1hdGVkTnVtYmVyOjpjcmVhdGUodGhpcykgfTsKICAg
ICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fc3RkRGV2aWF0aW9uWSB7IFNWR0FuaW1hdGVkTnVt
YmVyOjpjcmVhdGUodGhpcykgfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRl
PEVkZ2VNb2RlVHlwZT4gbV9lZGdlTW9kZSB7IEVER0VNT0RFX05PTkUgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9lZGdlTW9kZSB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246
OmNyZWF0ZSh0aGlzLCBFREdFTU9ERV9OT05FKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50
LmNwcAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsMTEgQEAgaW5saW5l
IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OlNWR0ZFTW9ycAogICAgIDogU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpmZU1vcnBob2xvZ3lUYWcpKTsKLSAgICByZWdpc3RlckF0dHJp
YnV0ZXMoKTsKICAgICAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6
cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6aW5BdHRyLCAmU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dDo6bV9pbjE+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8
U1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgJlNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQ6Om1fc3ZnT3BlcmF0b3I+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0
cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnJhZGl1c0F0dHIsICZTVkdGRU1vcnBob2xv
Z3lFbGVtZW50OjptX3JhZGl1c1gsICZTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjptX3JhZGl1c1k+
KCk7CiAgICAgfSk7CiB9CkBAIC01NiwyMCArNTYsMTIgQEAgdm9pZCBTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpzZXRSYWRpdXMoZgogICAgIGludmFsaWRhdGUoKTsKIH0KIAotdm9pZCBTVkdGRU1v
cnBob2xvZ3lFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lz
dHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
OjpvcGVyYXRvckF0dHIsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUsICZTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjptX3N2Z09wZXJhdG9yPigpOwotfQotCiB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0
cikgewogICAgICAgICBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQ
cm9wZXJ0eVRyYWl0czxNb3JwaG9sb2d5T3BlcmF0b3JUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7
CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fc3ZnT3BlcmF0
b3Iuc2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX3N2Z09wZXJhdG9yLT5z
ZXRCYXNlVmFsSW50ZXJuYWw8TW9ycGhvbG9neU9wZXJhdG9yVHlwZT4ocHJvcGVydHlWYWx1ZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuaAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyAr
MjEsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGRU1vcnBob2xvZ3kuaCIKLSNpbmNs
dWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYzLDEy
ICs2MiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSYWRpdXMoZmxvYXQgcmFkaXVzWCwgZmxv
YXQgcmFkaXVzWSk7CiAKICAgICBTdHJpbmcgaW4xKCkgY29uc3QgeyByZXR1cm4gbV9pbjEtPmN1
cnJlbnRWYWx1ZSgpOyB9Ci0gICAgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBzdmdPcGVyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIG1fc3ZnT3BlcmF0b3IuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KKyAgICBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHN2Z09wZXJhdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9zdmdPcGVyYXRvci0+Y3VycmVudFZhbHVlPE1vcnBob2xvZ3lPcGVyYXRv
clR5cGU+KCk7IH0KICAgICBmbG9hdCByYWRpdXNYKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNY
LT5jdXJyZW50VmFsdWUoKTsgfQogICAgIGZsb2F0IHJhZGl1c1koKSBjb25zdCB7IHJldHVybiBt
X3JhZGl1c1ktPmN1cnJlbnRWYWx1ZSgpOyB9CiAKICAgICBTVkdBbmltYXRlZFN0cmluZyYgaW4x
QW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1l
cmF0aW9uPiBzdmdPcGVyYXRvckFuaW1hdGVkKCkgeyByZXR1cm4gbV9zdmdPcGVyYXRvci5hbmlt
YXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uJiBzdmdPcGVyYXRvckFuaW1hdGVkKCkgeyByZXR1cm4gbV9zdmdPcGVyYXRvcjsg
fQogICAgIFNWR0FuaW1hdGVkTnVtYmVyJiByYWRpdXNYQW5pbWF0ZWQoKSB7IHJldHVybiBtX3Jh
ZGl1c1g7IH0KICAgICBTVkdBbmltYXRlZE51bWJlciYgcmFkaXVzWUFuaW1hdGVkKCkgeyByZXR1
cm4gbV9yYWRpdXNZOyB9CiAKQEAgLTk3LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBBdHRyaWJ1
dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmlt
YXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07Ci0g
ICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxNb3JwaG9sb2d5T3BlcmF0b3JUeXBl
PiBtX3N2Z09wZXJhdG9yIHsgRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fc3ZnT3BlcmF0b3IgeyBTVkdBbmltYXRlZEVudW1l
cmF0aW9uOjpjcmVhdGUodGhpcywgRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFKSB9OwogICAg
IFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9yYWRpdXNYIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNy
ZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9yYWRpdXNZIHsgU1ZH
QW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzQ2NikKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsMTMgKzM0LDE0IEBAIGlubGluZSBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpT
VkdGRVR1cmIKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdO
YW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVUdXJi
dWxlbmNlVGFnKSk7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgCisKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcs
IFtdIHsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1l
czo6YmFzZUZyZXF1ZW5jeUF0dHIsICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjptX2Jhc2VGcmVx
dWVuY3lYLCAmU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6bV9iYXNlRnJlcXVlbmN5WT4oKTsKICAg
ICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6bnVtT2N0
YXZlc0F0dHIsICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjptX251bU9jdGF2ZXM+KCk7CiAgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnNlZWRBdHRy
LCAmU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6bV9zZWVkPigpOworICAgICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIsIFNWR1N0
aXRjaE9wdGlvbnMsICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjptX3N0aXRjaFRpbGVzPigpOwor
ICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp0eXBl
QXR0ciwgVHVyYnVsZW5jZVR5cGUsICZTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjptX3R5cGU+KCk7
CiAgICAgfSk7CiB9CiAKQEAgLTQ5LDI4ICs1MCwxOSBAQCBSZWY8U1ZHRkVUdXJidWxlbmNlRWxl
bWVudD4gU1ZHRkVUdXJidWxlCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVUdXJidWxl
bmNlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBh
dHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnN0aXRj
aFRpbGVzQXR0ciwgU1ZHU3RpdGNoT3B0aW9ucywgJlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6Om1f
c3RpdGNoVGlsZXM+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6
OnR5cGVBdHRyLCBUdXJidWxlbmNlVHlwZSwgJlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6Om1fdHlw
ZT4oKTsKLX0KLQogdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewog
ICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgewogICAgICAgICBUdXJidWxlbmNl
VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8VHVyYnVsZW5jZVR5cGU+Ojpm
cm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgIT0gVHVyYnVsZW5j
ZVR5cGU6OlVua25vd24pCi0gICAgICAgICAgICBtX3R5cGUuc2V0VmFsdWUocHJvcGVydHlWYWx1
ZSk7CisgICAgICAgICAgICBtX3R5cGUtPnNldEJhc2VWYWxJbnRlcm5hbDxUdXJidWxlbmNlVHlw
ZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyKSB7CiAgICAgICAgIFNWR1N0aXRjaE9wdGlv
bnMgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1N0aXRjaE9wdGlvbnM+Ojpm
cm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAg
ICAgICAgbV9zdGl0Y2hUaWxlcy5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAg
IG1fc3RpdGNoVGlsZXMtPnNldEJhc2VWYWxJbnRlcm5hbDxTVkdTdGl0Y2hPcHRpb25zPihwcm9w
ZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE2LDcgKzEwOCw3IEBA
IGJvb2wgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c2V0RmlsdGVyRWYKIAogdm9pZCBTVkdGRVR1
cmJ1bGVuY2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogewotICAgIGlmIChpc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAg
ICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgcHJp
bWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkocmV2aXNpb24g
MjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJGRVR1cmJ1bGVuY2UuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAj
aW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTEwMCwzMiArOTksMjUgQEAgcHVibGljOgogICAgIGZsb2F0IGJh
c2VGcmVxdWVuY3lZKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlRnJlcXVlbmN5WS0+Y3VycmVudFZh
bHVlKCk7IH0KICAgICBpbnQgbnVtT2N0YXZlcygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtT2N0YXZl
cy0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBmbG9hdCBzZWVkKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWVkLT5jdXJyZW50VmFsdWUoKTsgfQotICAgIFNWR1N0aXRjaE9wdGlvbnMgc3RpdGNoVGlsZXMo
KSBjb25zdCB7IHJldHVybiBtX3N0aXRjaFRpbGVzLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9Ci0gICAgVHVyYnVsZW5jZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR1N0aXRj
aE9wdGlvbnMgc3RpdGNoVGlsZXMoKSBjb25zdCB7IHJldHVybiBtX3N0aXRjaFRpbGVzLT5jdXJy
ZW50VmFsdWU8U1ZHU3RpdGNoT3B0aW9ucz4oKTsgfQorICAgIFR1cmJ1bGVuY2VUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGUtPmN1cnJlbnRWYWx1ZTxUdXJidWxlbmNlVHlwZT4oKTsg
fQogCiAgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGJhc2VGcmVxdWVuY3lYQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX2Jhc2VGcmVxdWVuY3lYOyB9CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXImIGJhc2VGcmVx
dWVuY3lZQW5pbWF0ZWQoKSB7IHJldHVybiBtX2Jhc2VGcmVxdWVuY3lZOyB9CiAgICAgU1ZHQW5p
bWF0ZWRJbnRlZ2VyJiBudW1PY3RhdmVzQW5pbWF0ZWQoKSB7IHJldHVybiBtX251bU9jdGF2ZXM7
IH0KICAgICBTVkdBbmltYXRlZE51bWJlciYgc2VlZEFuaW1hdGVkKCkgeyByZXR1cm4gbV9zZWVk
OyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IHN0aXRjaFRpbGVzQW5pbWF0
ZWQoKSB7IHJldHVybiBtX3N0aXRjaFRpbGVzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiB0eXBlQW5p
bWF0ZWQoKSB7IHJldHVybiBtX3R5cGUuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgc3RpdGNoVGlsZXNBbmltYXRl
ZCgpIHsgcmV0dXJuIG1fc3RpdGNoVGlsZXM7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9u
JiB0eXBlQW5pbWF0ZWQoKSB7IHJldHVybiBtX3R5cGU7IH0KIAogcHJpdmF0ZToKICAgICBTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAg
ICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
PFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcz47Ci0gICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5
JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJp
YnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsK
ICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKICAgICB1c2lu
ZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAg
Y29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC0xMzgsOCArMTMw
LDggQEAgcHJpdmF0ZToKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fYmFzZUZyZXF1ZW5j
eVkgeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNWR0FuaW1h
dGVkSW50ZWdlcj4gbV9udW1PY3RhdmVzIHsgU1ZHQW5pbWF0ZWRJbnRlZ2VyOjpjcmVhdGUodGhp
cywgMSkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fc2VlZCB7IFNWR0FuaW1hdGVk
TnVtYmVyOjpjcmVhdGUodGhpcykgfTsKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmli
dXRlPFNWR1N0aXRjaE9wdGlvbnM+IG1fc3RpdGNoVGlsZXMgeyBTVkdfU1RJVENIVFlQRV9OT1NU
SVRDSCB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8VHVyYnVsZW5jZVR5
cGU+IG1fdHlwZSB7IFR1cmJ1bGVuY2VUeXBlOjpUdXJidWxlbmNlIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkRW51bWVyYXRpb24+IG1fc3RpdGNoVGlsZXMgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9u
OjpjcmVhdGUodGhpcywgU1ZHX1NUSVRDSFRZUEVfTk9TVElUQ0gpIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkRW51bWVyYXRpb24+IG1fdHlwZSB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0
ZSh0aGlzLCBUdXJidWxlbmNlVHlwZTo6VHVyYnVsZW5jZSkgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
OSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ3LDYgKzQ3LDEyIEBAIGlubGluZSBTVkdG
aWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW4KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgv
aGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEg
dmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpmaWx0ZXJUYWcpKTsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05h
bWVzOjpmaWx0ZXJVbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdGaWx0
ZXJFbGVtZW50OjptX2ZpbHRlclVuaXRzPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5Ojpy
ZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIsIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUsICZTVkdGaWx0ZXJFbGVtZW50OjptX3ByaW1pdGl2ZVVuaXRzPigpOwor
ICAgIH0pOwogfQogCiBSZWY8U1ZHRmlsdGVyRWxlbWVudD4gU1ZHRmlsdGVyRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAg
LTU5LDggKzY1LDYgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZQog
ICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKICAgICBpZiAoIXJlZ2lz
dHJ5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0
cmlidXRlPFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUsICZTVkdGaWx0ZXJFbGVtZW50OjptX2ZpbHRlclVuaXRzPigpOwotICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIsIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUsICZTVkdGaWx0ZXJFbGVtZW50OjptX3ByaW1pdGl2ZVVuaXRzPigpOwog
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp4QXR0ciwgJlNWR0ZpbHRl
ckVsZW1lbnQ6Om1feD4oKTsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1l
czo6eUF0dHIsICZTVkdGaWx0ZXJFbGVtZW50OjptX3k+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0
ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR0ZpbHRlckVsZW1lbnQ6Om1fd2lk
dGg+KCk7CkBAIC03NCwxMSArNzgsMTEgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjbwogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIpIHsK
ICAgICAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJv
cGVydHlUcmFpdHM8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT46OmZyb21TdHJpbmcodmFsdWUp
OwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAgICAgICAgICBtX2ZpbHRlclVu
aXRzLnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgbV9maWx0ZXJVbml0cy0+
c2V0QmFzZVZhbEludGVybmFsPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KHByb3BlcnR5VmFs
dWUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRy
KSB7CiAgICAgICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNW
R1Byb3BlcnR5VHJhaXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZh
bHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9wcmlt
aXRpdmVVbml0cy5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1fcHJpbWl0
aXZlVW5pdHMtPnNldEJhc2VWYWxJbnRlcm5hbDxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPihw
cm9wZXJ0eVZhbHVlKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQog
ICAgICAgICBtX3guc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6eUF0dHIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHJldmlz
aW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGgu
aCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZC5oIgpAQCAtMzcsMTUgKzM2LDE1IEBAIGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQg
ZmluYWwgOiBwdWJsaWMgU1YKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR0ZpbHRlckVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUgZmlsdGVyVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRl
clVuaXRzLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgU1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZSBwcmltaXRpdmVVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
bWl0aXZlVW5pdHMuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGZpbHRlclVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9m
aWx0ZXJVbml0cy0+Y3VycmVudFZhbHVlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KCk7IH0K
KyAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmltaXRpdmVVbml0cy0+Y3VycmVudFZhbHVlPFNWR1VuaXRUeXBlczo6U1ZHVW5p
dFR5cGU+KCk7IH0KICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0IHsgcmV0dXJu
IG1feC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIGNvbnN0IFNW
R0xlbmd0aFZhbHVlJiB5KCkgY29uc3QgeyByZXR1cm4gbV95LmN1cnJlbnRWYWx1ZShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9CiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV93aWR0aC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQogICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hl
aWdodC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogCi0gICAgUmVmUHRy
PFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IGZpbHRlclVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBt
X2ZpbHRlclVuaXRzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQot
ICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBwcmltaXRpdmVVbml0c0FuaW1hdGVk
KCkgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0cy5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93
bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBmaWx0ZXJVbml0c0Fu
aW1hdGVkKCkgeyByZXR1cm4gbV9maWx0ZXJVbml0czsgfQorICAgIFNWR0FuaW1hdGVkRW51bWVy
YXRpb24mIHByaW1pdGl2ZVVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRz
OyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB4QW5pbWF0ZWQoKSB7IHJldHVybiBt
X3guYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgUmVmUHRy
PFNWR0FuaW1hdGVkTGVuZ3RoPiB5QW5pbWF0ZWQoKSB7IHJldHVybiBtX3kuYW5pbWF0ZWRQcm9w
ZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVu
Z3RoPiB3aWR0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV93aWR0aC5hbmltYXRlZFByb3BlcnR5KGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KQEAgLTgyLDggKzgxLDggQEAgcHJpdmF0ZToKIAogICAg
IEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPiBt
X2ZpbHRlclVuaXRzIHsgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5H
Qk9YIH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdVbml0VHlwZXM6
OlNWR1VuaXRUeXBlPiBtX3ByaW1pdGl2ZVVuaXRzIHsgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9U
WVBFX1VTRVJTUEFDRU9OVVNFIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1f
ZmlsdGVyVW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5p
dFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB9OworICAgIFJlZjxTVkdB
bmltYXRlZEVudW1lcmF0aW9uPiBtX3ByaW1pdGl2ZVVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VP
TlVTRSkgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2Rl
V2lkdGgsICItMTAlIiB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feSB7IExl
bmd0aE1vZGVIZWlnaHQsICItMTAlIiB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRl
IG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGgsICIxMjAlIiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw2ICs0NSwxMiBAQCBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR0dyYWRpZW50RWxlbWVudChjCiAg
ICAgLCBTVkdVUklSZWZlcmVuY2UodGhpcykKIHsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsK
KworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3Bl
cnR5PFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyLCBTVkdTcHJlYWRNZXRob2RUeXBlLCAmU1ZH
R3JhZGllbnRFbGVtZW50OjptX3NwcmVhZE1ldGhvZD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdp
c3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIsIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdHcmFkaWVudEVsZW1lbnQ6Om1fZ3JhZGllbnRVbml0
cz4oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnJlZ2lzdGVyQXR0
cmlidXRlcygpCkBAIC01Miw4ICs1OCw2IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpyZWdp
c3RlckF0dHJpYnUKICAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7CiAg
ICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICByZWdpc3Ry
eS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0ciwgU1ZHU3ByZWFk
TWV0aG9kVHlwZSwgJlNWR0dyYWRpZW50RWxlbWVudDo6bV9zcHJlYWRNZXRob2Q+KCk7Ci0gICAg
cmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyLCBT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHR3JhZGllbnRFbGVtZW50OjptX2dyYWRpZW50
VW5pdHM+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmdyYWRp
ZW50VHJhbnNmb3JtQXR0ciwgJlNWR0dyYWRpZW50RWxlbWVudDo6bV9ncmFkaWVudFRyYW5zZm9y
bT4oKTsKIH0KIApAQCAtNjIsNyArNjYsNyBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRy
KSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHBy
b3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9ncmFkaWVudFVuaXRzLnNldFZhbHVlKHBy
b3BlcnR5VmFsdWUpOworICAgICAgICAgICAgbV9ncmFkaWVudFVuaXRzLT5zZXRCYXNlVmFsSW50
ZXJuYWw8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTc3LDcgKzgxLDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzcHJlYWRNZXRo
b2RBdHRyKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRz
PFNWR1NwcmVhZE1ldGhvZFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHBy
b3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9zcHJlYWRNZXRob2Quc2V0VmFsdWUocHJv
cGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX3NwcmVhZE1ldGhvZC0+c2V0QmFzZVZhbEludGVy
bmFsPFNWR1NwcmVhZE1ldGhvZFR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCShy
ZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiR3JhZGllbnQuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTg5LDEy
ICs4OCwxMiBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJv
cGVydHlPd25lclJlZ2lzdHJ5PFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKIAotICAgIFNWR1NwcmVh
ZE1ldGhvZFR5cGUgc3ByZWFkTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9zcHJlYWRNZXRob2Qu
Y3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBTVkdVbml0VHlwZXM6
OlNWR1VuaXRUeXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50VW5p
dHMuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdTcHJlYWRN
ZXRob2RUeXBlIHNwcmVhZE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ByZWFkTWV0aG9kLT5j
dXJyZW50VmFsdWU8U1ZHU3ByZWFkTWV0aG9kVHlwZT4oKTsgfQorICAgIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGllbnRVbml0
cy0+Y3VycmVudFZhbHVlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KCk7IH0KICAgICBjb25z
dCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiBncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0
dXJuIG1fZ3JhZGllbnRUcmFuc2Zvcm0uY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBzcHJlYWRNZXRob2RB
bmltYXRlZCgpIHsgcmV0dXJuIG1fc3ByZWFkTWV0aG9kLmFuaW1hdGVkUHJvcGVydHkoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBn
cmFkaWVudFVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX2dyYWRpZW50VW5pdHMuYW5pbWF0ZWRQ
cm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbiYgc3ByZWFkTWV0aG9kQW5pbWF0ZWQoKSB7IHJldHVybiBtX3NwcmVhZE1ldGhvZDsgfQor
ICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIGdyYWRpZW50VW5pdHNBbmltYXRlZCgpIHsgcmV0
dXJuIG1fZ3JhZGllbnRVbml0czsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3Q+IGdyYWRpZW50VHJhbnNmb3JtQW5pbWF0ZWQoKSB7IHJldHVybiBtX2dyYWRpZW50VHJhbnNm
b3JtLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogCiBwcm90ZWN0
ZWQ6CkBAIC0xMTksOCArMTE4LDggQEAgcHJpdmF0ZToKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJv
eHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bkF0dHJpYnV0ZTxTVkdTcHJlYWRNZXRob2RUeXBlPiBtX3NwcmVhZE1ldGhvZCB7IFNWR1NwcmVh
ZE1ldGhvZFBhZCB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZT4gbV9ncmFkaWVudFVuaXRzIHsgU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVy
YXRpb24+IG1fc3ByZWFkTWV0aG9kIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIFNWR1NwcmVhZE1ldGhvZFBhZCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bj4gbV9ncmFkaWVudFVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMs
IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgfTsKICAgICBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGUgbV9ncmFkaWVudFRyYW5zZm9ybTsKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHJldmlzaW9u
IDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5
LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MSw2
ICs0MSwxMiBAQCBpbmxpbmUgU1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyRWxlbWVuCiAgICAg
Ly8gU3BlYzogSWYgdGhlIG1hcmtlcldpZHRoL21hcmtlckhlaWdodCBhdHRyaWJ1dGUgaXMgbm90
IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIzIiB3ZXJlIHNwZWNp
ZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bWFya2VyVGFnKSk7CiAgICAg
cmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZs
YWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlS
ZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLCBTVkdN
YXJrZXJVbml0c1R5cGUsICZTVkdNYXJrZXJFbGVtZW50OjptX21hcmtlclVuaXRzPigpOworICAg
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpvcmllbnRB
dHRyLCAmU1ZHTWFya2VyRWxlbWVudDo6bV9vcmllbnRBbmdsZSwgJlNWR01hcmtlckVsZW1lbnQ6
Om1fb3JpZW50VHlwZT4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR01hcmtlckVsZW1lbnQ+IFNW
R01hcmtlckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYgZG9jdW1lbnQpCkBAIC00OCwxOCArNTQsNiBAQCBSZWY8U1ZHTWFya2VyRWxlbWVudD4g
U1ZHTWFya2VyRWxlbWVudDo6CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTWFya2VyRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFNWR01h
cmtlckVsZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlmaWVyKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR09yaWVudFR5cGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gc19pZGVudGlmaWVy
OwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIFNWR01hcmtlckVsZW1lbnQ6Om9yaWVudEFuZ2xl
SWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
c19pZGVudGlmaWVyKCJTVkdPcmllbnRBbmdsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBzX2lkZW50aWZpZXI7Ci19Ci0KIEFmZmluZVRyYW5zZm9y
bSBTVkdNYXJrZXJFbGVtZW50Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0
aCwgZmxvYXQgdmlld0hlaWdodCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHRml0VG9WaWV3Qm94
Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHZpZXdCb3goKSwgcHJlc2VydmVBc3BlY3RSYXRpbygp
LCB2aWV3V2lkdGgsIHZpZXdIZWlnaHQpOwpAQCAtNzQsMTAgKzY4LDYgQEAgdm9pZCBTVkdNYXJr
ZXJFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZQogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpyZWZZQXR0ciwgJlNWR01hcmtlckVsZW1lbnQ6Om1fcmVmWT4oKTsKICAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyLCAm
U1ZHTWFya2VyRWxlbWVudDo6bV9tYXJrZXJXaWR0aD4oKTsKICAgICByZWdpc3RyeS5yZWdpc3Rl
ckF0dHJpYnV0ZTxTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgJlNWR01hcmtlckVsZW1lbnQ6
Om1fbWFya2VySGVpZ2h0PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05h
bWVzOjptYXJrZXJVbml0c0F0dHIsIFNWR01hcmtlclVuaXRzVHlwZSwgJlNWR01hcmtlckVsZW1l
bnQ6Om1fbWFya2VyVW5pdHM+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGUoU1ZH
QW5pbWF0ZWRDdXN0b21BbmdsZUF0dHJpYnV0ZUFjY2Vzc29yOjpzaW5nbGV0b248U1ZHTmFtZXM6
Om9yaWVudEF0dHIsCi0gICAgICAgICZTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRBbmdsZUlkZW50
aWZpZXIsICZTVkdNYXJrZXJFbGVtZW50OjptX29yaWVudEFuZ2xlLAotICAgICAgICAmU1ZHTWFy
a2VyRWxlbWVudDo6b3JpZW50VHlwZUlkZW50aWZpZXIsICZTVkdNYXJrZXJFbGVtZW50OjptX29y
aWVudFR5cGU+KCkpOwogfQogCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBA
IC04NSwxNyArNzUsMTQgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
bwogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIpIHsKICAgICAgICAg
YXV0byBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyVW5pdHNUeXBl
Pjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAg
ICAgICAgICAgIG1fbWFya2VyVW5pdHMuc2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAg
ICAgICBtX21hcmtlclVuaXRzLT5zZXRCYXNlVmFsSW50ZXJuYWw8U1ZHTWFya2VyVW5pdHNUeXBl
Pihwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjpvcmllbnRBdHRyKSB7Ci0gICAgICAgIFNWR0FuZ2xlVmFsdWUgYW5nbGU7
Ci0gICAgICAgIGF1dG8gb3JpZW50VHlwZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlck9y
aWVudFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlLCBhbmdsZSk7Ci0gICAgICAgIGlmIChvcmllbnRU
eXBlID4gMCkKLSAgICAgICAgICAgIG1fb3JpZW50VHlwZS5zZXRWYWx1ZShvcmllbnRUeXBlKTsK
LSAgICAgICAgaWYgKG9yaWVudFR5cGUgPT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpCi0gICAgICAg
ICAgICBtX29yaWVudEFuZ2xlLnNldFZhbHVlKGFuZ2xlKTsKKyAgICAgICAgYXV0byBwYWlyID0g
U1ZHUHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIFNWR01hcmtlck9yaWVu
dFR5cGU+Pjo6ZnJvbVN0cmluZyh2YWx1ZSk7CisgICAgICAgIG1fb3JpZW50QW5nbGUtPnNldEJh
c2VWYWxJbnRlcm5hbChwYWlyLmZpcnN0KTsKKyAgICAgICAgbV9vcmllbnRUeXBlLT5zZXRCYXNl
VmFsSW50ZXJuYWwocGFpci5zZWNvbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
NTEsMTQgKzEzOCw5IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGMK
IAogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnQoU1ZHTWFya2VyT3JpZW50VHlwZSBv
cmllbnRUeXBlLCBjb25zdCBTVkdBbmdsZVZhbHVlJiBhbmdsZSkKIHsKLSAgICBtX29yaWVudFR5
cGUuc2V0VmFsdWUob3JpZW50VHlwZSk7Ci0gICAgbV9vcmllbnRBbmdsZS5zZXRWYWx1ZShhbmds
ZSk7Ci0KLSAgICAvLyBNYXJrIG9yaWVudEF0dHIgZGlydHkgLSB0aGUgbmV4dCBYTUwgRE9NIGFj
Y2VzcyBvZiB0aGF0IGF0dHJpYnV0ZSBraWNrcyBpbiBzeW5jaHJvbml6YXRpb24uCi0gICAgbV9v
cmllbnRBbmdsZS5zZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKLSAgICBtX29yaWVudFR5cGUu
c2V0U2hvdWxkU3luY2hyb25pemUodHJ1ZSk7Ci0gICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMo
KTsKLSAgICBzdmdBdHRyaWJ1dGVDaGFuZ2VkKFNWR05hbWVzOjpvcmllbnRBdHRyKTsKKyAgICBt
X29yaWVudFR5cGUtPnNldEJhc2VWYWxJbnRlcm5hbChvcmllbnRUeXBlKTsKKyAgICBtX29yaWVu
dEFuZ2xlLT5zZXRCYXNlVmFsSW50ZXJuYWwoYW5nbGUpOworICAgIG1fb3JpZW50QW5nbGUtPmJh
c2VWYWwoKS0+Y29tbWl0Q2hhbmdlKCk7CiB9CiAKIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0
T3JpZW50VG9BdXRvKCkKQEAgLTE2OCw3ICsxNTAsNyBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6
OnNldE9yaWVudFRvQXV0bygpCiAKIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9B
bmdsZShTVkdBbmdsZSYgYW5nbGUpCiB7Ci0gICAgc2V0T3JpZW50KFNWR01hcmtlck9yaWVudEFu
Z2xlLCBhbmdsZS5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKKyAgICBzZXRPcmllbnQoU1ZHTWFya2Vy
T3JpZW50QW5nbGUsIGFuZ2xlLnZhbHVlKCkpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWFya2VyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEFuZ2xlLmgiCi0jaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgi
CiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQuaCIKQEAgLTU5LDE3ICs1NywxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU1ZHTGVu
Z3RoVmFsdWUmIHJlZlkoKSBjb25zdCB7IHJldHVybiBtX3JlZlkuY3VycmVudFZhbHVlKGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgbWFya2VyV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX21hcmtlcldpZHRoLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9CiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIG1hcmtlckhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFya2VySGVpZ2h0LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9Ci0gICAgU1ZHTWFya2VyVW5pdHNUeXBlIG1hcmtlclVuaXRzKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXJrZXJVbml0cy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQotICAgIGNvbnN0IFNWR0FuZ2xlVmFsdWUmIG9yaWVudEFuZ2xlKCkgY29uc3QgeyByZXR1
cm4gbV9vcmllbnRBbmdsZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQot
ICAgIFNWR01hcmtlck9yaWVudFR5cGUgb3JpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
ZW50VHlwZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR01h
cmtlclVuaXRzVHlwZSBtYXJrZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2VyVW5pdHMt
PmN1cnJlbnRWYWx1ZTxTVkdNYXJrZXJVbml0c1R5cGU+KCk7IH0KKyAgICBjb25zdCBTVkdBbmds
ZVZhbHVlJiBvcmllbnRBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50QW5nbGUtPmN1cnJl
bnRWYWx1ZSgpOyB9CisgICAgU1ZHTWFya2VyT3JpZW50VHlwZSBvcmllbnRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRUeXBlLT5jdXJyZW50VmFsdWU8U1ZHTWFya2VyT3JpZW50VHlwZT4o
KTsgfQogCiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiByZWZYQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX3JlZlguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAg
ICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiByZWZZQW5pbWF0ZWQoKSB7IHJldHVybiBtX3Jl
ZlkuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgUmVmUHRy
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtYXJrZXJXaWR0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV9tYXJr
ZXJXaWR0aC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBS
ZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1hcmtlckhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4g
bV9tYXJrZXJIZWlnaHQuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1hcmtlclVuaXRzQW5pbWF0ZWQo
KSB7IHJldHVybiBtX21hcmtlclVuaXRzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEFuZ2xlPiBvcmllbnRBbmdsZUFuaW1h
dGVkKCkgeyByZXR1cm4gbV9vcmllbnRBbmdsZS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93
bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gb3JpZW50
VHlwZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9vcmllbnRUeXBlLmFuaW1hdGVkUHJvcGVydHkoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIG1hcmtl
clVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX21hcmtlclVuaXRzOyB9CisgICAgU1ZHQW5pbWF0
ZWRBbmdsZSYgb3JpZW50QW5nbGVBbmltYXRlZCgpIHsgcmV0dXJuIG1fb3JpZW50QW5nbGU7IH0K
KyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gb3JpZW50VHlwZUFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV9vcmllbnRUeXBlLmNvcHlSZWYoKTsgfQogCiBwcml2YXRlOgogICAgIFNWR01hcmtl
ckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CkBAIC0xMDEsNDMgKzk5
LDE2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldE9yaWVudChTVkdNYXJrZXJPcmllbnRUeXBl
LCBjb25zdCBTVkdBbmdsZVZhbHVlJik7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBvcmllbnRUeXBlSWRlbnRpZmllcigpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IG9yaWVudEFuZ2xlSWRlbnRpZmllcigpOwotCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0
dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogCi0gICAgY2xhc3MgU1ZHQW5pbWF0ZWRDdXN0
b21PcmllbnRUeXBlQXR0cmlidXRlIDogcHVibGljIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRy
aWJ1dGU8U1ZHTWFya2VyT3JpZW50VHlwZT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgdXNpbmcg
QmFzZSA9IFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHTWFya2VyT3JpZW50VHlw
ZT47Ci0KLSAgICAgICAgU1ZHQW5pbWF0ZWRDdXN0b21PcmllbnRUeXBlQXR0cmlidXRlKFNWR01h
cmtlck9yaWVudFR5cGUgYmFzZVZhbHVlKQotICAgICAgICAgICAgOiBCYXNlKGJhc2VWYWx1ZSkK
LSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIHZvaWQgc3luY2hyb25pemUoRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYXV0b1N0cmlu
ZyA9IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJhdXRvIik7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nID0gTUFL
RV9TVEFUSUNfU1RSSU5HX0lNUEwoImF1dG8tc3RhcnQtcmV2ZXJzZSIpOwotCi0gICAgICAgICAg
ICBpZiAoIXNob3VsZFN5bmNocm9uaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgaWYgKHZhbHVlKCkgPT0gU1ZHTWFya2VyT3JpZW50QXV0bykKLSAgICAgICAgICAg
ICAgICBlbGVtZW50LnNldFN5bmNocm9uaXplZExhenlBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwg
YXV0b1N0cmluZy5nZXQoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSgpID09IFNWR01h
cmtlck9yaWVudEF1dG9TdGFydFJldmVyc2UpCi0gICAgICAgICAgICAgICAgZWxlbWVudC5zZXRT
eW5jaHJvbml6ZWRMYXp5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGF1dG9TdGFydFJldmVyc2VT
dHJpbmcuZ2V0KCkpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHVzaW5nIFNWR0FuaW1hdGVk
Q3VzdG9tQW5nbGVBdHRyaWJ1dGVBY2Nlc3NvciA9IFNWR0FuaW1hdGVkUGFpckF0dHJpYnV0ZUFj
Y2Vzc29yPFNWR01hcmtlckVsZW1lbnQsIFNWR0FuaW1hdGVkQW5nbGVBdHRyaWJ1dGUsIEFuaW1h
dGVkQW5nbGUsIFNWR0FuaW1hdGVkQ3VzdG9tT3JpZW50VHlwZUF0dHJpYnV0ZSwgQW5pbWF0ZWRF
bnVtZXJhdGlvbj47Ci0KICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7
ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9yZWZYIHsgTGVuZ3Ro
TW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9yZWZZIHsgTGVu
Z3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fbWFya2Vy
V2lkdGggeyBMZW5ndGhNb2RlV2lkdGgsICIzIiB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1fbWFya2VySGVpZ2h0IHsgTGVuZ3RoTW9kZUhlaWdodCwgIjMiIH07Ci0gICAgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdNYXJrZXJVbml0c1R5cGU+IG1fbWFya2Vy
VW5pdHMgeyBTVkdNYXJrZXJVbml0c1N0cm9rZVdpZHRoIH07Ci0gICAgU1ZHQW5pbWF0ZWRBbmds
ZUF0dHJpYnV0ZSBtX29yaWVudEFuZ2xlOwotICAgIFNWR0FuaW1hdGVkQ3VzdG9tT3JpZW50VHlw
ZUF0dHJpYnV0ZSBtX29yaWVudFR5cGUgeyBTVkdNYXJrZXJPcmllbnRBbmdsZSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX21hcmtlclVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR01hcmtlclVuaXRzU3Ryb2tlV2lkdGgpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkQW5nbGU+IG1fb3JpZW50QW5nbGUgeyBTVkdBbmltYXRlZEFuZ2xlOjpj
cmVhdGUodGhpcykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlPiBtX29yaWVudFR5
cGUgeyBTVkdBbmltYXRlZE9yaWVudFR5cGU6OmNyZWF0ZSh0aGlzLCBTVkdNYXJrZXJPcmllbnRB
bmdsZSkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJUeXBlcy5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWFya2VyVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc1LDE3ICs3NSwzMiBAQCBzdHJ1
Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyVW5pdHNUCiAKIHRlbXBsYXRlPD4KIHN0cnVj
dCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPiB7CisgICAgc3RhdGljIGNv
bnN0IFN0cmluZyBhdXRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGF1dG9TdHJpbmcgPSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgi
YXV0byIpOworICAgICAgICByZXR1cm4gYXV0b1N0cmluZzsKKyAgICB9CisgICAgc3RhdGljIGNv
bnN0IFN0cmluZyBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nKCkKKyAgICB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGF1dG9TdGFydFJldmVyc2VTdHJpbmcgPSBN
QUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiYXV0by1zdGFydC1yZXZlcnNlIik7CisgICAgICAgIHJl
dHVybiBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nOworICAgIH0KICAgICBzdGF0aWMgdW5zaWduZWQg
aGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIFNWR01hcmtlck9yaWVudEF1dG9TdGFydFJldmVy
c2U7IH0KLSAgICBzdGF0aWMgU1ZHTWFya2VyT3JpZW50VHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUsIFNWR0FuZ2xlVmFsdWUmIGFuZ2xlKQorICAgIHN0YXRpYyBTVkdNYXJrZXJP
cmllbnRUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAgICAg
ICBpZiAodmFsdWUgPT0gImF1dG8iKQorICAgICAgICBpZiAoc3RyaW5nID09IGF1dG9TdHJpbmco
KSkKICAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRBdXRvOwotICAgICAgICBpZiAo
dmFsdWUgPT0gImF1dG8tc3RhcnQtcmV2ZXJzZSIpCisgICAgICAgIGlmIChzdHJpbmcgPT0gYXV0
b1N0YXJ0UmV2ZXJzZVN0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIFNWR01hcmtlck9yaWVu
dEF1dG9TdGFydFJldmVyc2U7Ci0gICAgICAgIGF1dG8gc2V0VmFsdWVSZXN1bHQgPSBhbmdsZS5z
ZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKLSAgICAgICAgaWYgKHNldFZhbHVlUmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIFNWR01hcmtlck9yaWVudFVua25vd247Ci0g
ICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRBbmdsZTsKKyAgICAgICAgcmV0dXJuIFNWR01h
cmtlck9yaWVudFVua25vd247CisgICAgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoU1ZH
TWFya2VyT3JpZW50VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGUgPT0gU1ZHTWFy
a2VyT3JpZW50QXV0bykKKyAgICAgICAgICAgIHJldHVybiBhdXRvU3RyaW5nKCk7CisgICAgICAg
IGlmICh0eXBlID09IFNWR01hcmtlck9yaWVudEF1dG9TdGFydFJldmVyc2UpCisgICAgICAgICAg
ICByZXR1cm4gYXV0b1N0YXJ0UmV2ZXJzZVN0cmluZygpOworICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKICAgICB9CiB9OwogCkBAIC05MywxOCArMTA4LDE4IEBAIHRlbXBsYXRlPD4KIGlu
bGluZSB1bnNpZ25lZCBTVkdJRExFbnVtTGltaXRzPFNWR01hcmtlck9yaWVudFR5cGU+OjpoaWdo
ZXN0RXhwb3NlZEVudW1WYWx1ZSgpIHsgcmV0dXJuIFNWR01hcmtlck9yaWVudEFuZ2xlOyB9CiAK
IHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxzdGQ6OnBhaXI8U1ZHQW5nbGVW
YWx1ZSwgdW5zaWduZWQ+PiB7Ci0gICAgc3RhdGljIHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1
bnNpZ25lZD4gaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4geyB9OyB9Ci0gICAgc3RhdGljIHN0ZDo6
cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4gZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZykKK3N0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwg
U1ZHTWFya2VyT3JpZW50VHlwZT4+IHsKKyAgICBzdGF0aWMgc3RkOjpwYWlyPFNWR0FuZ2xlVmFs
dWUsIFNWR01hcmtlck9yaWVudFR5cGU+IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAgICAgewogICAgICAgICBTVkdBbmdsZVZhbHVlIGFuZ2xlOwotICAgICAgICBTVkdNYXJrZXJP
cmllbnRUeXBlIG9yaWVudFR5cGUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmllbnRU
eXBlPjo6ZnJvbVN0cmluZyhzdHJpbmcsIGFuZ2xlKTsKLSAgICAgICAgaWYgKG9yaWVudFR5cGUg
IT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpCi0gICAgICAgICAgICBhbmdsZSA9IHsgfTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4oYW5nbGUsIG9yaWVu
dFR5cGUpOworICAgICAgICBTVkdNYXJrZXJPcmllbnRUeXBlIG9yaWVudFR5cGUgPSBTVkdQcm9w
ZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6ZnJvbVN0cmluZyhzdHJpbmcpOworICAg
ICAgICBpZiAob3JpZW50VHlwZSA9PSBTVkdNYXJrZXJPcmllbnRVbmtub3duKSB7CisgICAgICAg
ICAgICBhdXRvIHJlc3VsdCA9IGFuZ2xlLnNldFZhbHVlQXNTdHJpbmcoc3RyaW5nKTsKKyAgICAg
ICAgICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIG9yaWVu
dFR5cGUgPSBTVkdNYXJrZXJPcmllbnRBbmdsZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoYW5nbGUsIG9yaWVudFR5cGUpOwogICAgIH0KLSAgICBzdGF0aWMgT3B0
aW9uYWw8c3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIHVuc2lnbmVkPj4gcGFyc2UoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biBpbml0aWFsVmFsdWUoKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3Qgc3Rk
OjpwYWlyPFNWR0FuZ2xlVmFsdWUsIHVuc2lnbmVkPiYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzQ2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDEyIEBAIGlubGluZSBTVkdNYXNrRWxlbWVudDo6U1ZHTWFza0VsZW1lbnQo
Y28KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3Bl
Y2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lm
aWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjptYXNrVGFnKSk7CiAgICAgcmVn
aXN0ZXJBdHRyaWJ1dGVzKCk7CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdp
c3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6bWFza1VuaXRzQXR0ciwgU1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZSwgJlNWR01hc2tFbGVtZW50OjptX21hc2tVbml0cz4oKTsKKyAgICAg
ICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6bWFza0NvbnRl
bnRVbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdNYXNrRWxlbWVudDo6
bV9tYXNrQ29udGVudFVuaXRzPigpOworICAgIH0pOwogfQogCiBSZWY8U1ZHTWFza0VsZW1lbnQ+
IFNWR01hc2tFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50KQpAQCAtNjQsOCArNzAsNiBAQCB2b2lkIFNWR01hc2tFbGVtZW50Ojpy
ZWdpc3RlckF0dHJpYnV0ZXMoCiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFt
ZXM6OnlBdHRyLCAmU1ZHTWFza0VsZW1lbnQ6Om1feT4oKTsKICAgICByZWdpc3RyeS5yZWdpc3Rl
ckF0dHJpYnV0ZTxTVkdOYW1lczo6d2lkdGhBdHRyLCAmU1ZHTWFza0VsZW1lbnQ6Om1fd2lkdGg+
KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmhlaWdodEF0dHIs
ICZTVkdNYXNrRWxlbWVudDo6bV9oZWlnaHQ+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRy
aWJ1dGU8U1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUs
ICZTVkdNYXNrRWxlbWVudDo6bV9tYXNrVW5pdHM+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJB
dHRyaWJ1dGU8U1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlLCAmU1ZHTWFza0VsZW1lbnQ6Om1fbWFza0NvbnRlbnRVbml0cz4oKTsKIH0KIAog
dm9pZCBTVkdNYXNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTczLDEzICs3NywxMyBAQCB2b2lk
IFNWR01hc2tFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zCiAgICAgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6Om1hc2tVbml0c0F0dHIpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0gU1ZH
UHJvcGVydHlUcmFpdHM8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT46OmZyb21TdHJpbmcodmFs
dWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0gICAgICAgICAgICBtX21hc2tV
bml0cy5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIG1fbWFza1VuaXRzLT5z
ZXRCYXNlVmFsSW50ZXJuYWw8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4ocHJvcGVydHlWYWx1
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om1h
c2tDb250ZW50VW5pdHNBdHRyKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1By
b3BlcnR5VHJhaXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVl
KTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9tYXNrQ29u
dGVudFVuaXRzLnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgbV9tYXNrQ29u
dGVudFVuaXRzLT5zZXRCYXNlVmFsSW50ZXJuYWw8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4o
cHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC0zOSwxNSArMzgsMTUg
QEAgcHVibGljOgogICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB5KCkgY29uc3QgeyByZXR1cm4g
bV95LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aC5jdXJyZW50VmFsdWUo
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBoZWln
aHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgbWFza1VuaXRzKCkgY29u
c3QgeyByZXR1cm4gbV9tYXNrVW5pdHMuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KLSAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tDb250ZW50VW5pdHMoKSBj
b25zdCB7IHJldHVybiBtX21hc2tDb250ZW50VW5pdHMuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93
bmVyUHJveHkoKSk7IH0KKyAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tVbml0cygp
IGNvbnN0IHsgcmV0dXJuIG1fbWFza1VuaXRzLT5jdXJyZW50VmFsdWU8U1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZT4oKTsgfQorICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgbWFza0NvbnRl
bnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbWFza0NvbnRlbnRVbml0cy0+Y3VycmVudFZhbHVl
PFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KCk7IH0KIAogICAgIFJlZlB0cjxTVkdBbmltYXRl
ZExlbmd0aD4geEFuaW1hdGVkKCkgeyByZXR1cm4gbV94LmFuaW1hdGVkUHJvcGVydHkoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geUFuaW1h
dGVkKCkgeyByZXR1cm4gbV95LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gd2lkdGhBbmltYXRlZCgpIHsgcmV0
dXJuIG1fd2lkdGguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAg
ICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBoZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1f
aGVpZ2h0LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJl
ZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtYXNrVW5pdHNBbmltYXRlZCgpIHsgcmV0dXJu
IG1fbWFza1VuaXRzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQot
ICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtYXNrQ29udGVudFVuaXRzQW5pbWF0
ZWQoKSB7IHJldHVybiBtX21hc2tDb250ZW50VW5pdHMuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgbWFza1VuaXRz
QW5pbWF0ZWQoKSB7IHJldHVybiBtX21hc2tVbml0czsgfQorICAgIFNWR0FuaW1hdGVkRW51bWVy
YXRpb24mIG1hc2tDb250ZW50VW5pdHNBbmltYXRlZCgpIHsgcmV0dXJuIG1fbWFza0NvbnRlbnRV
bml0czsgfQogCiBwcml2YXRlOgogICAgIFNWR01hc2tFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYpOwpAQCAtODIsOCArODEsOCBAQCBwcml2YXRlOgogICAgIFNWR0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlIG1feSB7IExlbmd0aE1vZGVIZWlnaHQsICItMTAlIiB9OwogICAg
IFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGgsICIx
MjAlIiB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1faGVpZ2h0IHsgTGVuZ3Ro
TW9kZUhlaWdodCwgIjEyMCUiIH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0
ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPiBtX21hc2tVbml0cyB7IFNWR1VuaXRUeXBlczo6
U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVy
YXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9tYXNrQ29udGVudFVu
aXRzIHsgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbWFza1VuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RC
T1VORElOR0JPWCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9tYXNrQ29u
dGVudFVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRU
eXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNw
cAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTQsNiArNTQsMTIg
QEAgaW5saW5lIFNWR1BhdHRlcm5FbGVtZW50OjpTVkdQYXR0ZXJuRWxlbQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpwYXR0ZXJuVGFnKSk7CiAgICAgcmVnaXN0ZXJBdHRyaWJ1
dGVzKCk7CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0
ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZSwgJlNWR1BhdHRlcm5FbGVtZW50OjptX3BhdHRlcm5Vbml0cz4oKTsKKyAgICAgICAg
UHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cGF0dGVybkNvbnRl
bnRVbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdQYXR0ZXJuRWxlbWVu
dDo6bV9wYXR0ZXJuQ29udGVudFVuaXRzPigpOworICAgIH0pOwogfQogCiBSZWY8U1ZHUGF0dGVy
bkVsZW1lbnQ+IFNWR1BhdHRlcm5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNzAsOCArNzYsNiBAQCB2b2lkIFNWR1Bh
dHRlcm5FbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRy
aWJ1dGU8U1ZHTmFtZXM6OnlBdHRyLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1feT4oKTsKICAgICBy
ZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6d2lkdGhBdHRyLCAmU1ZHUGF0dGVy
bkVsZW1lbnQ6Om1fd2lkdGg+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZH
TmFtZXM6OmhlaWdodEF0dHIsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV9oZWlnaHQ+KCk7Ci0gICAg
cmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIsIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV9wYXR0ZXJuVW5p
dHM+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnBhdHRlcm5D
b250ZW50VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHUGF0dGVybkVs
ZW1lbnQ6Om1fcGF0dGVybkNvbnRlbnRVbml0cz4oKTsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0
dHJpYnV0ZTxTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsICZTVkdQYXR0ZXJuRWxlbWVu
dDo6bV9wYXR0ZXJuVHJhbnNmb3JtPigpOwogfQogCkBAIC04MCwxMyArODQsMTMgQEAgdm9pZCBT
VkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYwogICAgIGlmIChuYW1lID09IFNWR05h
bWVzOjpwYXR0ZXJuVW5pdHNBdHRyKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNW
R1Byb3BlcnR5VHJhaXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZh
bHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9wYXR0
ZXJuVW5pdHMuc2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAgICBtX3BhdHRlcm5V
bml0cy0+c2V0QmFzZVZhbEludGVybmFsPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KHByb3Bl
cnR5VmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChuYW1lID09IFNWR05h
bWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0cikgewogICAgICAgICBhdXRvIHByb3BlcnR5VmFs
dWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0
cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAg
IG1fcGF0dGVybkNvbnRlbnRVbml0cy5zZXRWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAg
ICAgIG1fcGF0dGVybkNvbnRlbnRVbml0cy0+c2V0QmFzZVZhbEludGVybmFsPFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0cikgewpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHJldmlzaW9uIDI0MzQ2NikKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw3ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpAQCAt
NDksMTYgKzQ4LDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNv
bnN0IHsgcmV0dXJuIG1feS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQog
ICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGgu
Y3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQuY3VycmVudFZhbHVlKGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHBh
dHRlcm5Vbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblVuaXRzLmN1cnJlbnRWYWx1ZShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBw
YXR0ZXJuQ29udGVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuQ29udGVudFVuaXRz
LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHVW5pdFR5cGVz
OjpTVkdVbml0VHlwZSBwYXR0ZXJuVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5Vbml0
cy0+Y3VycmVudFZhbHVlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KCk7IH0KKyAgICBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlIHBhdHRlcm5Db250ZW50VW5pdHMoKSBjb25zdCB7IHJldHVy
biBtX3BhdHRlcm5Db250ZW50VW5pdHMtPmN1cnJlbnRWYWx1ZTxTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlPigpOyB9CiAgICAgY29uc3QgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyYgcGF0dGVyblRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblRyYW5zZm9ybS5jdXJyZW50VmFsdWUo
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogCiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3Ro
PiB4QW5pbWF0ZWQoKSB7IHJldHVybiBtX3guYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB5QW5pbWF0ZWQoKSB7
IHJldHVybiBtX3kuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAg
ICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB3aWR0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV93
aWR0aC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBSZWZQ
dHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IGhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWlnaHQu
YW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNW
R0FuaW1hdGVkRW51bWVyYXRpb24+IHBhdHRlcm5Vbml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9w
YXR0ZXJuVW5pdHMuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0g
ICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IHBhdHRlcm5Db250ZW50VW5pdHNBbmlt
YXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVybkNvbnRlbnRVbml0cy5hbmltYXRlZFByb3BlcnR5KGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBwYXR0
ZXJuVW5pdHNBbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVyblVuaXRzOyB9CisgICAgU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbiYgcGF0dGVybkNvbnRlbnRVbml0c0FuaW1hdGVkKCkgeyByZXR1cm4g
bV9wYXR0ZXJuQ29udGVudFVuaXRzOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdD4gcGF0dGVyblRyYW5zZm9ybUFuaW1hdGVkKCkgeyByZXR1cm4gbV9wYXR0ZXJuVHJhbnNm
b3JtLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogCiBwcml2YXRl
OgpAQCAtOTQsOCArOTMsOCBAQCBwcml2YXRlOgogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlIG1feSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3dpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUgbV9oZWlnaHQgeyBMZW5ndGhNb2RlSGVpZ2h0IH07Ci0gICAgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPiBtX3BhdHRlcm5V
bml0cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCB9Owot
ICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0
VHlwZT4gbV9wYXR0ZXJuQ29udGVudFVuaXRzIHsgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBF
X1VTRVJTUEFDRU9OVVNFIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fcGF0
dGVyblVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRU
eXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbj4gbV9wYXR0ZXJuQ29udGVudFVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BB
Q0VPTlVTRSkgfTsKICAgICBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGUgbV9wYXR0
ZXJuVHJhbnNmb3JtOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiU1ZHTnVtYmVy
LmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJTVkdSZWN0LmgiCi0jaW5jbHVk
ZSAiU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgi
CiAjaW5jbHVkZSAiU1ZHVmlld0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdWaWV3U3BlYy5oIgpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMjQz
NDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDExIEBAIFNWR1RleHRDb250
ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGUKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQodGhpcykKIHsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVz
OjpsZW5ndGhBZGp1c3RBdHRyLCBTVkdMZW5ndGhBZGp1c3RUeXBlLCAmU1ZHVGV4dENvbnRlbnRF
bGVtZW50OjptX2xlbmd0aEFkanVzdD4oKTsKKyAgICB9KTsKIH0KIAogdW5zaWduZWQgU1ZHVGV4
dENvbnRlbnRFbGVtZW50OjpnZXROdW1iZXJPZkNoYXJzKCkKQEAgLTE2NCw3ICsxNjksNiBAQCB2
b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6cmVnaXN0ZXJBdHRyCiAgICAgaWYgKCFyZWdpc3Ry
eS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJp
YnV0ZShTVkdBbmltYXRlZEN1c3RvbUxlbmd0aEF0dHJpYnV0ZUFjY2Vzc29yOjpzaW5nbGV0b248
U1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLCAmU1ZHVGV4dENvbnRlbnRFbGVtZW50OjptX3RleHRM
ZW5ndGg+KCkpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpsZW5n
dGhBZGp1c3RBdHRyLCBTVkdMZW5ndGhBZGp1c3RUeXBlLCAmU1ZHVGV4dENvbnRlbnRFbGVtZW50
OjptX2xlbmd0aEFkanVzdD4oKTsKIH0KIAogdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCkBAIC0xNzQsNyArMTc4LDcgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OnBhcnNlQXR0cmlidQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRy
KSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xl
bmd0aEFkanVzdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5
VmFsdWUgPiAwKQotICAgICAgICAgICAgbV9sZW5ndGhBZGp1c3Quc2V0VmFsdWUocHJvcGVydHlW
YWx1ZSk7CisgICAgICAgICAgICBtX2xlbmd0aEFkanVzdC0+c2V0QmFzZVZhbEludGVybmFsPFNW
R0xlbmd0aEFkanVzdFR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9
PSBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIpCiAgICAgICAgIG1fdGV4dExlbmd0aC5zZXRWYWx1
ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVPdGhlciwgdmFsdWUsIHBhcnNl
RXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIx
LDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1l
cmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50
LmgiCkBAIC05MiwxMCArOTEsMTAgQEAgcHVibGljOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0
cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdH
cmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogCiAgICAgY29u
c3QgU1ZHTGVuZ3RoVmFsdWUmIHRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3RleHRMZW5n
dGguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBTVkdMZW5ndGhB
ZGp1c3RUeXBlIGxlbmd0aEFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoQWRqdXN0LmN1
cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHTGVuZ3RoQWRqdXN0
VHlwZSBsZW5ndGhBZGp1c3QoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aEFkanVzdC0+Y3VycmVu
dFZhbHVlPFNWR0xlbmd0aEFkanVzdFR5cGU+KCk7IH0KIAogICAgIFJlZlB0cjxTVkdBbmltYXRl
ZExlbmd0aD4gdGV4dExlbmd0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV90ZXh0TGVuZ3RoLmFuaW1h
dGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmlt
YXRlZEVudW1lcmF0aW9uPiBsZW5ndGhBZGp1c3RBbmltYXRlZCgpIHsgcmV0dXJuIG1fbGVuZ3Ro
QWRqdXN0LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNW
R0FuaW1hdGVkRW51bWVyYXRpb24mIGxlbmd0aEFkanVzdEFuaW1hdGVkKCkgeyByZXR1cm4gbV9s
ZW5ndGhBZGp1c3Q7IH0KIAogcHJvdGVjdGVkOgogICAgIFNWR1RleHRDb250ZW50RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTE1OSw3ICsxNTgsNyBAQCBwcml2
YXRlOgogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRo
aXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
CiAgICAgU1ZHQW5pbWF0ZWRDdXN0b21MZW5ndGhBdHRyaWJ1dGUgbV90ZXh0TGVuZ3RoIHsgKnRo
aXMsIExlbmd0aE1vZGVPdGhlciB9OwotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1
dGU8U1ZHTGVuZ3RoQWRqdXN0VHlwZT4gbV9sZW5ndGhBZGp1c3QgeyBTVkdMZW5ndGhBZGp1c3RT
cGFjaW5nIH07CisgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbGVuZ3RoQWRqdXN0
IHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aEFkanVzdFNw
YWNpbmcpIH07CiAgICAgU1ZHTGVuZ3RoVmFsdWUgbV9zcGVjaWZpZWRUZXh0TGVuZ3RoIHsgTGVu
Z3RoTW9kZU90aGVyIH07CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDEyIEBAIGlu
bGluZSBTVkdUZXh0UGF0aEVsZW1lbnQ6OlNWR1RleHRQYXRoRWwKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6dGV4dFBhdGhUYWcpKTsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMo
KTsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxf
b25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclBy
b3BlcnR5PFNWR05hbWVzOjptZXRob2RBdHRyLCBTVkdUZXh0UGF0aE1ldGhvZFR5cGUsICZTVkdU
ZXh0UGF0aEVsZW1lbnQ6Om1fbWV0aG9kPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5Ojpy
ZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpzcGFjaW5nQXR0ciwgU1ZHVGV4dFBhdGhTcGFjaW5n
VHlwZSwgJlNWR1RleHRQYXRoRWxlbWVudDo6bV9zcGFjaW5nPigpOworICAgIH0pOwogfQogCiBS
ZWY8U1ZHVGV4dFBhdGhFbGVtZW50PiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC02Miw4ICs2OCw2
IEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpyZWdpc3RlckF0dHJpYnUKICAgICBpZiAoIXJl
Z2lzdHJ5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVy
QXR0cmlidXRlPFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsICZTVkdUZXh0UGF0aEVsZW1lbnQ6
Om1fc3RhcnRPZmZzZXQ+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFt
ZXM6Om1ldGhvZEF0dHIsIFNWR1RleHRQYXRoTWV0aG9kVHlwZSwgJlNWR1RleHRQYXRoRWxlbWVu
dDo6bV9tZXRob2Q+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6
OnNwYWNpbmdBdHRyLCBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlLCAmU1ZHVGV4dFBhdGhFbGVtZW50
OjptX3NwYWNpbmc+KCk7CiB9CiAKIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQpAQCAtNzUsMTEgKzc5LDExIEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSgKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjptZXRob2RBdHRyKSB7CiAgICAg
ICAgIFNWR1RleHRQYXRoTWV0aG9kVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFp
dHM8U1ZHVGV4dFBhdGhNZXRob2RUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlm
IChwcm9wZXJ0eVZhbHVlID4gMCkKLSAgICAgICAgICAgIG1fbWV0aG9kLnNldFZhbHVlKHByb3Bl
cnR5VmFsdWUpOworICAgICAgICAgICAgbV9tZXRob2QtPnNldEJhc2VWYWxJbnRlcm5hbDxTVkdU
ZXh0UGF0aE1ldGhvZFR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9
PSBTVkdOYW1lczo6c3BhY2luZ0F0dHIpIHsKICAgICAgICAgU1ZHVGV4dFBhdGhTcGFjaW5nVHlw
ZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5nVHlw
ZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCi0g
ICAgICAgICAgICBtX3NwYWNpbmcuc2V0VmFsdWUocHJvcGVydHlWYWx1ZSk7CisgICAgICAgICAg
ICBtX3NwYWNpbmctPnNldEJhc2VWYWxJbnRlcm5hbDxTVkdUZXh0UGF0aFNwYWNpbmdUeXBlPihw
cm9wZXJ0eVZhbHVlKTsKICAgICB9CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3Io
cGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
UGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsMTIgKzExMiwxMiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdUZXh0UGF0aEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBz
dGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQuY3VycmVudFZhbHVlKGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBTVkdUZXh0UGF0aE1ldGhvZFR5cGUgbWV0aG9k
KCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2QuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSk7IH0KLSAgICBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlIHNwYWNpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3NwYWNpbmcuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAg
ICBTVkdUZXh0UGF0aE1ldGhvZFR5cGUgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2Qt
PmN1cnJlbnRWYWx1ZTxTVkdUZXh0UGF0aE1ldGhvZFR5cGU+KCk7IH0KKyAgICBTVkdUZXh0UGF0
aFNwYWNpbmdUeXBlIHNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBtX3NwYWNpbmctPmN1cnJlbnRW
YWx1ZTxTVkdUZXh0UGF0aFNwYWNpbmdUeXBlPigpOyB9CiAKICAgICBSZWZQdHI8U1ZHQW5pbWF0
ZWRMZW5ndGg+IHN0YXJ0T2Zmc2V0QW5pbWF0ZWQoKSB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0LmFu
aW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdB
bmltYXRlZEVudW1lcmF0aW9uPiBtZXRob2RBbmltYXRlZCgpIHsgcmV0dXJuIG1fbWV0aG9kLmFu
aW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdB
bmltYXRlZEVudW1lcmF0aW9uPiBzcGFjaW5nQW5pbWF0ZWQoKSB7IHJldHVybiBtX3NwYWNpbmcu
YW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbiYgbWV0aG9kQW5pbWF0ZWQoKSB7IHJldHVybiBtX21ldGhvZDsgfQorICAg
IFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIHNwYWNpbmdBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3Bh
Y2luZzsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkg
b3ZlcnJpZGU7CkBAIC0xNTYsOCArMTU2LDggQEAgcHJpdmF0ZToKICAgICBBdHRyaWJ1dGVPd25l
clByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdp
c3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
QXR0cmlidXRlIG1fc3RhcnRPZmZzZXQgeyBMZW5ndGhNb2RlT3RoZXIgfTsKLSAgICBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPFNWR1RleHRQYXRoTWV0aG9kVHlwZT4gbV9tZXRob2Qg
eyBTVkdUZXh0UGF0aE1ldGhvZEFsaWduIH07Ci0gICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0
dHJpYnV0ZTxTVkdUZXh0UGF0aFNwYWNpbmdUeXBlPiBtX3NwYWNpbmcgeyBTVkdUZXh0UGF0aFNw
YWNpbmdFeGFjdCB9OworICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX21ldGhvZCB7
IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdUZXh0UGF0aE1ldGhvZEFs
aWduKSB9OworICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3NwYWNpbmcgeyBTVkdB
bmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3Qp
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUu
aAkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDE1ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJTVkdBbmdsZVZh
bHVlLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oIgogI2luY2x1ZGUgIlNWR0xl
bmd0aFZhbHVlLmgiCi0jaW5jbHVkZSAiU1ZHTWFya2VyVHlwZXMuaCIKICNpbmNsdWRlICJTVkdQ
YXRoQnl0ZVN0cmVhbS5oIgotI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5o
IgotI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3Jt
TGlzdFZhbHVlcy5oIgogCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KQEAgLTQxLDggKzM1LDYg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgU1ZHVmFsdWVWYXJpYW50ID0gVmFyaWFu
dDwKLSAgICBzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5zaWduZWQ+KiwKLSAgICB1bnNpZ25l
ZCosCiAgICAgU1ZHTGVuZ3RoVmFsdWUqLAogICAgIFNWR0xlbmd0aExpc3RWYWx1ZXMqLAogICAg
IFNWR1BhdGhCeXRlU3RyZWFtKiwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNv
cmF0ZWRQcm9wZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCisjaW5jbHVkZSAiU1ZHRGVjb3Jh
dGVkUHJvcGVydHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0ZW1wbGF0
ZSA8dHlwZW5hbWUsIHR5cGVuYW1lPiBjbGFzcyBEZWNvcmF0ZWRQcm9wZXJ0eSwgdHlwZW5hbWUg
RGVjb3JhdGlvblR5cGU+CitjbGFzcyBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5IDogcHVi
bGljIFNWR0FuaW1hdGVkUHJvcGVydHkgeworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFByb3BlcnR5VHlwZSwgdHlwZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eSA9IFNWR0FuaW1hdGVkRGVj
b3JhdGVkUHJvcGVydHk+CisgICAgc3RhdGljIFJlZjxBbmltYXRlZFByb3BlcnR5PiBjcmVhdGUo
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBzdGQ6Om1ha2VfdW5pcXVl
PERlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlLCBQcm9wZXJ0eVR5cGU+PigpKSk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlLCB0eXBlbmFtZSBBbmlt
YXRlZFByb3BlcnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eT4KKyAgICBzdGF0aWMg
UmVmPEFuaW1hdGVkUHJvcGVydHk+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwg
Y29uc3QgUHJvcGVydHlUeXBlJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFuaW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIERlY29yYXRlZFByb3BlcnR5
PERlY29yYXRpb25UeXBlLCBQcm9wZXJ0eVR5cGU+OjpjcmVhdGUodmFsdWUpKSk7CisgICAgfQor
CisgICAgU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNWR0RlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBl
Pj4mJiBiYXNlVmFsKQorICAgICAgICA6IFNWR0FuaW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1l
bnQpCisgICAgICAgICwgbV9iYXNlVmFsKFdURk1vdmUoYmFzZVZhbCkpCisgICAgeworICAgIH0K
KworICAgIC8vIFVzZWQgYnkgdGhlIERPTS4KKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRCYXNl
VmFsKGNvbnN0IERlY29yYXRpb25UeXBlJiBiYXNlVmFsKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2Jhc2VWYWwtPnNldFZhbHVlKGJhc2VWYWwpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciB9OworICAgICAgICBjb21taXRQcm9wZXJ0eUNoYW5nZShudWxscHRyKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICAvLyBVc2VkIGJ5IFNWR0VsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKCkuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgor
ICAgIHZvaWQgc2V0QmFzZVZhbEludGVybmFsKGNvbnN0IFByb3BlcnR5VHlwZSYgYmFzZVZhbCkK
KyAgICB7CisgICAgICAgIG1fYmFzZVZhbC0+c2V0VmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxE
ZWNvcmF0aW9uVHlwZT4oYmFzZVZhbCkpOworICAgICAgICBpZiAobV9hbmltVmFsKQorICAgICAg
ICAgICAgbV9hbmltVmFsLT5zZXRWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PERlY29yYXRpb25U
eXBlPihiYXNlVmFsKSk7CisgICAgfQorCisgICAgRGVjb3JhdGlvblR5cGUgYmFzZVZhbCgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFzZVZhbC0+dmFsdWUoKTsgfQorCisgICAgLy8gVXNlZCBieSBTVkdB
bmltYXRvcjo6cHJvZ3Jlc3MuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgor
ICAgIHZvaWQgc2V0QW5pbVZhbChjb25zdCBQcm9wZXJ0eVR5cGUmIGFuaW1WYWwpCisgICAgewor
ICAgICAgICBBU1NFUlQoaXNBbmltYXRpbmcoKSAmJiBtX2FuaW1WYWwpOworICAgICAgICBtX2Fu
aW1WYWwtPnNldFZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8RGVjb3JhdGlvblR5cGU+KGFuaW1W
YWwpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUgPSBEZWNv
cmF0aW9uVHlwZT4KKyAgICBQcm9wZXJ0eVR5cGUgYW5pbVZhbCgpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlRfSU1QTElFUyhpc0FuaW1hdGluZygpLCBtX2FuaW1WYWwpOworICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UHJvcGVydHlUeXBlPigoaXNBbmltYXRpbmcoKSA/IG1fYW5pbVZh
bCA6IG1fYmFzZVZhbCktPnZhbHVlKCkpOworICAgIH0KKworICAgIC8vIFVzZWQgd2hlbiBjb21t
aXR0aW5nIGEgY2hhbmdlIGZyb20gdGhlIFNWR0FuaW1hdGVkUHJvcGVydHkgdG8gdGhlIGF0dHJp
YnV0ZS4KKyAgICBTdHJpbmcgYmFzZVZhbEFzU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9iYXNlVmFsLT52YWx1ZUFzU3RyaW5nKCk7IH0KKworICAgIC8vIFVzZWQgdG8gYXBwbHkg
dGhlIFNWR0FuaW1hdG9yIGNoYW5nZSB0byB0aGUgdGFyZ2V0IGVsZW1lbnQuCisgICAgU3RyaW5n
IGFuaW1WYWxBc1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQo
aXNBbmltYXRpbmcoKSAmJiAhIW1fYW5pbVZhbCk7CisgICAgICAgIHJldHVybiBtX2FuaW1WYWwt
PnZhbHVlQXNTdHJpbmcoKTsKKyAgICB9CisKKyAgICAvLyBNYW5hZ2luZyB0aGUgcmVsYXRpb25z
aGlwIHdpdGggdGhlIG93bmVyLgorICAgIHZvaWQgc2V0RGlydHkoKSBvdmVycmlkZSB7IG1fc3Rh
dGUgPSBTVkdQcm9wZXJ0eVN0YXRlOjpEaXJ0eTsgfQorICAgIGJvb2wgaXNEaXJ0eSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fc3RhdGUgPT0gU1ZHUHJvcGVydHlTdGF0ZTo6RGlydHk7IH0K
KyAgICBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGlmIChtX3N0YXRlID09IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9zdGF0ZSA9IFNWR1Byb3BlcnR5U3RhdGU6
OkNsZWFuOworICAgICAgICByZXR1cm4gYmFzZVZhbEFzU3RyaW5nKCk7CisgICAgfQorCisgICAg
Ly8gVXNlZCBieSBSZW5kZXJTVkdFbGVtZW50cyBhbmQgRHVtcFJlbmRlclRyZWUuCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgorICAgIFByb3BlcnR5VHlwZSBjdXJyZW50VmFs
dWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb3BlcnR5VHlw
ZT4oKGlzQW5pbWF0aW5nKCkgPyBtX2FuaW1WYWwgOiBtX2Jhc2VWYWwpLT52YWx1ZUludGVybmFs
KCkpOworICAgIH0KKworICAgIC8vIENvbnRyb2xsaW5nIHRoZSBhbmltYXRpb24uCisgICAgdm9p
ZCBzdGFydEFuaW1hdGlvbigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoaXNBbmltYXRp
bmcoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9hbmltVmFsID0gbV9iYXNlVmFs
LT5jbG9uZSgpOworICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5OjpzdGFydEFuaW1hdGlvbigp
OworICAgIH0KKyAgICB2b2lkIHN0b3BBbmltYXRpb24oKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgaWYgKCFpc0FuaW1hdGluZygpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Fu
aW1WYWwgPSBudWxscHRyOworICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5OjpzdG9wQW5pbWF0
aW9uKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0RlY29y
YXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlPj4gbV9iYXNlVmFsOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTVkdEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0aW9uVHlwZT4+IG1fYW5pbVZhbDsKKyAg
ICBTVkdQcm9wZXJ0eVN0YXRlIG1fc3RhdGUgeyBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbiB9Owor
fTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaAko
cmV2aXNpb24gMjQzNDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oCShub25leGlzdGVudCkKQEAgLTEsODYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQg
MjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdB
bmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oIgotI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJh
aXRzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRW51bVR5
cGU+Ci1jbGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmIGZpbmFsIDog
cHVibGljIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPHVuc2lnbmVkPiB7Ci1wdWJs
aWM6Ci0gICAgdXNpbmcgQ29udGVudFR5cGUgPSBFbnVtVHlwZTsKLQotICAgIGNvbnN0IHVuc2ln
bmVkJiBiYXNlVmFsKCkgZmluYWwKLSAgICB7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkJiBiYXNl
VmFsID0gU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmY6OmJhc2VWYWwoKTsKLQotICAg
ICAgICBpZiAoYmFzZVZhbCA+IFNWR0lETEVudW1MaW1pdHM8RW51bVR5cGU+OjpoaWdoZXN0RXhw
b3NlZEVudW1WYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIG1fb3V0T2ZSYW5nZUVudW1WYWx1
ZTsKLQotICAgICAgICByZXR1cm4gYmFzZVZhbDsKLSAgICB9Ci0KLSAgICBjb25zdCB1bnNpZ25l
ZCYgYW5pbVZhbCgpIGZpbmFsCi0gICAgewotICAgICAgICBjb25zdCB1bnNpZ25lZCYgYW5pbVZh
bCA9IFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmOjphbmltVmFsKCk7Ci0KLSAgICAg
ICAgaWYgKGFuaW1WYWwgPiBTVkdJRExFbnVtTGltaXRzPEVudW1UeXBlPjo6aGlnaGVzdEV4cG9z
ZWRFbnVtVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiBtX291dE9mUmFuZ2VFbnVtVmFsdWU7
Ci0KLSAgICAgICAgcmV0dXJuIGFuaW1WYWw7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0QmFzZVZhbChjb25zdCB1bnNpZ25lZCYgcHJvcGVydHkpIGZpbmFsCi0gICAgewotICAg
ICAgICAvLyBBbGwgU1ZHIGVudW1lcmF0aW9uIHZhbHVlcywgdGhhdCBhcmUgYWxsb3dlZCB0byBi
ZSBzZXQgdmlhIFNWRyBET00gc3RhcnQgd2l0aCAxLCAwIGNvcnJlc3BvbmRzIHRvIHVua25vd24g
YW5kIGlzIG5vdCBzZXR0YWJsZSB0aHJvdWdoIFNWRyBET00uCi0gICAgICAgIGlmICghcHJvcGVy
dHkgfHwgcHJvcGVydHkgPiBTVkdJRExFbnVtTGltaXRzPEVudW1UeXBlPjo6aGlnaGVzdEV4cG9z
ZWRFbnVtVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Ig
fTsKLSAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPHVuc2ln
bmVkPjo6c2V0QmFzZVZhbChwcm9wZXJ0eSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFJlZjxTVkdB
bmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmPEVudW1UeXBlPj4gY3JlYXRlKFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZSwgRW51bVR5cGUmIHBy
b3BlcnR5KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9m
ZjxFbnVtVHlwZT4oY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVy
dHlUeXBlLCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkJj4ocHJvcGVydHkpKSk7Ci0gICAgfQot
Ci0gICAgRW51bVR5cGUmIGN1cnJlbnRBbmltYXRlZFZhbHVlKCkKLSAgICB7Ci0gICAgICAgIHVu
c2lnbmVkJiBhbmltYXRlZFZhbHVlID0gU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8
dW5zaWduZWQ+OjpjdXJyZW50QW5pbWF0ZWRWYWx1ZSgpOwotICAgICAgICBBU1NFUlQoYW5pbWF0
ZWRWYWx1ZSA8PSBTVkdQcm9wZXJ0eVRyYWl0czxFbnVtVHlwZT46OmhpZ2hlc3RFbnVtVmFsdWUo
KSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEVudW1UeXBlJj4oYW5pbWF0ZWRW
YWx1ZSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9w
ZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlU
eXBlLCB1bnNpZ25lZCYgcHJvcGVydHkpCi0gICAgICAgIDogU1ZHQW5pbWF0ZWRTdGF0aWNQcm9w
ZXJ0eVRlYXJPZmY8dW5zaWduZWQ+KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmlt
YXRlZFByb3BlcnR5VHlwZSwgcHJvcGVydHkpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyB1
bnNpZ25lZCBtX291dE9mUmFuZ2VFbnVtVmFsdWU7Ci19OwotCi0vLyBCeSBjb252ZW50aW9uLCBh
bGwgZW51bSB2YWx1ZXMgdGhhdCByZXByZXNlbnQgVU5LTk9XTiBpbiBTVkcgYXJlIGVxdWFsIHRv
IHplcm8uCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbnVtVHlwZT4KLXVuc2lnbmVkIFNWR0FuaW1hdGVk
RW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8RW51bVR5cGU+OjptX291dE9mUmFuZ2VFbnVtVmFs
dWUgPSAwOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVy
dHlUZWFyT2ZmLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAg
IyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFjY2Vzc29ySW1wbC5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkQW5nbGVBY2Nlc3NvciBm
aW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdB
bmltYXRlZEFuZ2xlPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nl
c3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkQW5nbGU+OworCitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4gT3duZXJUeXBl
OjoqcHJvcGVydHk+CisgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBTVkdNZW1iZXJBY2Nlc3Nv
cjxPd25lclR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0
b248U1ZHQW5pbWF0ZWRBbmdsZUFjY2Vzc29yLCBwcm9wZXJ0eT4oKTsgfQorfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgT3duZXJUeXBlPgogY2xhc3MgU1ZHQW5pbWF0ZWRCb29sZWFuQWNjZXNzb3Ig
ZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZH
QW5pbWF0ZWRCb29sZWFuPiB7CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlB
Y2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkQm9vbGVhbj47CiAgICAgdXNpbmcgQmFzZTo6
cHJvcGVydHk7CkBAIC01NCw2ICs2NCwyOCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgRW51bVR5cGU+CitjbGFzcyBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uQWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4geworICAgIHVzaW5n
IEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRl
ZEVudW1lcmF0aW9uPjsKKyAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTsKKworcHVibGljOgorICAg
IHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdGVtcGxhdGU8UmVmPFNWR0FuaW1hdGVkRW51bWVyYXRp
b24+IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAgIGNvbnN0ZXhwciBzdGF0aWMgY29uc3QgU1ZH
TWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPiYgc2luZ2xldG9uKCkgeyByZXR1cm4gQmFzZTo6dGVt
cGxhdGUgc2luZ2xldG9uPFNWR0FuaW1hdGVkRW51bWVyYXRpb25BY2Nlc3NvciwgcHJvcGVydHk+
KCk7IH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0cmlidXRlQW5pbWF0
b3I+IGNyZWF0ZUFuaW1hdG9yKE93bmVyVHlwZSYgb3duZXIsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2Fs
Y01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxFbnVt
VHlwZT46OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eShvd25lciksIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9CisKKyAgICB2
b2lkIGFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoT3duZXJUeXBlJiBvd25lciwgU1ZHQXR0cmlidXRl
QW5pbWF0b3ImIGFuaW1hdG9yKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgc3RhdGljX2Nh
c3Q8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPiY+KGFuaW1hdG9yKS5h
cHBlbmRBbmltYXRlZEluc3RhbmNlKHByb3BlcnR5KG93bmVyKSk7CisgICAgfQorfTsKKwogdGVt
cGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgogY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyQWNjZXNz
b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwg
U1ZHQW5pbWF0ZWRJbnRlZ2VyPiB7CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVy
dHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkSW50ZWdlcj47CkBAIC0xNDMsNiArMTc1
LDE2IEBAIHByaXZhdGU6CiB9OwogICAgIAogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgor
Y2xhc3MgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlPiB7
CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUs
IFNWR0FuaW1hdGVkT3JpZW50VHlwZT47CisKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlOjpCYXNl
OworICAgIHRlbXBsYXRlPFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+IE93bmVyVHlwZTo6KnBy
b3BlcnR5PgorICAgIGNvbnN0ZXhwciBzdGF0aWMgY29uc3QgU1ZHTWVtYmVyQWNjZXNzb3I8T3du
ZXJUeXBlPiYgc2luZ2xldG9uKCkge3JldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZH
QW5pbWF0ZWRPcmllbnRUeXBlQWNjZXNzb3IsIHByb3BlcnR5PigpOyB9Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBPd25lclR5cGU+CiBjbGFzcyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW9BY2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3du
ZXJUeXBlLCBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+IHsKICAgICB1c2luZyBCYXNl
ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvPjsKICAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOwogY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2Vy
UGFpckFuaW1hdG9yOworY2xhc3MgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEsIHR5cGVuYW1lIEFuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjI+CiBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1h
dG9yOwogCitjbGFzcyBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1hdGVkQW5nbGUsIFNWR0FuaW1hdGlvbkFu
Z2xlRnVuY3Rpb24+IHsKKyAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJB
bmltYXRvcjxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IsIFNWR0FuaW1hdGVkT3JpZW50VHlwZUFu
aW1hdG9yPjsKKyAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9y
OworICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0
ZWRBbmdsZSwgU1ZHQW5pbWF0aW9uQW5nbGVGdW5jdGlvbj47CisgICAgdXNpbmcgQmFzZTo6QmFz
ZTsKKworcHVibGljOgorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4mIGFuaW1hdGVkLCBBbmltYXRp
b25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0
ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50
LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgZmluYWwKKyAgICB7Cisg
ICAgICAgIG1fZnVuY3Rpb24ucHJvZ3Jlc3ModGFyZ2V0RWxlbWVudCwgcGVyY2VudGFnZSwgcmVw
ZWF0Q291bnQsIG1fYW5pbWF0ZWQtPmFuaW1WYWwoKS0+dmFsdWUoKSk7CisgICAgfQorfTsKKwog
Y2xhc3MgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1hdGVkQm9vbGVhbiwgU1ZHQW5pbWF0aW9uQm9vbGVh
bkZ1bmN0aW9uPiAgewogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3I8U1ZHQW5pbWF0ZWRCb29sZWFuLCBTVkdBbmltYXRpb25Cb29sZWFuRnVuY3Rpb24+OwogCkBA
IC01Nyw2ICs3OCwyOCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IEVudW1UeXBlPgorY2xhc3MgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yIGZpbmFsIDog
cHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZEVudW1lcmF0aW9u
LCBTVkdBbmltYXRpb25FbnVtZXJhdGlvbkZ1bmN0aW9uPEVudW1UeXBlPj4geworICAgIHVzaW5n
IEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
biwgU1ZHQW5pbWF0aW9uRW51bWVyYXRpb25GdW5jdGlvbjxFbnVtVHlwZT4+OworICAgIHVzaW5n
IEJhc2U6OkJhc2U7CisgICAgdXNpbmcgQmFzZTo6bV9hbmltYXRlZDsKKyAgICB1c2luZyBCYXNl
OjptX2Z1bmN0aW9uOworCitwdWJsaWM6CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiYg
YW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1U
eXBlPj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBw
cm9ncmVzcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNp
Z25lZCByZXBlYXRDb3VudCkgZmluYWwKKyAgICB7CisgICAgICAgIEVudW1UeXBlIGFuaW1hdGVk
OworICAgICAgICBtX2Z1bmN0aW9uLnByb2dyZXNzKHRhcmdldEVsZW1lbnQsIHBlcmNlbnRhZ2Us
IHJlcGVhdENvdW50LCBhbmltYXRlZCk7CisgICAgICAgIG1fYW5pbWF0ZWQtPnRlbXBsYXRlIHNl
dEFuaW1WYWw8RW51bVR5cGU+KGFuaW1hdGVkKTsKKyAgICB9Cit9OworCiBjbGFzcyBTVkdBbmlt
YXRlZEludGVnZXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5p
bWF0b3I8U1ZHQW5pbWF0ZWRJbnRlZ2VyLCBTVkdBbmltYXRpb25JbnRlZ2VyRnVuY3Rpb24+IHsK
ICAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcjxTVkdBbmlt
YXRlZEludGVnZXJBbmltYXRvciwgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I+OwogICAgIGZy
aWVuZCBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I7CkBAIC04Niw3ICsxMjks
NyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yIGZpbmFsIDogCiBwdWJsaWM6CiAg
ICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRp
dGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRO
dW1iZXJBbmltYXRvcj4obmV3IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVt
YmVyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAt
MTMwLDYgKzE3MywyNyBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKK2NsYXNzIFNWR0FuaW1hdGVk
T3JpZW50VHlwZUFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmlt
YXRvcjxTVkdBbmltYXRlZE9yaWVudFR5cGUsIFNWR0FuaW1hdGlvbk9yaWVudFR5cGVGdW5jdGlv
bj4geworICAgIGZyaWVuZCBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yPFNW
R0FuaW1hdGVkQW5nbGVBbmltYXRvciwgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+Owor
ICAgIGZyaWVuZCBjbGFzcyBTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I7CisgICAgdXNp
bmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZE9yaWVudFR5
cGUsIFNWR0FuaW1hdGlvbk9yaWVudFR5cGVGdW5jdGlvbj47CisgICAgdXNpbmcgQmFzZTo6QmFz
ZTsKKworcHVibGljOgorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlPiYgYW5pbWF0ZWQsIEFu
aW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1
bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgcHJvZ3Jlc3MoU1ZHRWxlbWVudCogdGFy
Z2V0RWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZpbmFs
CisgICAgeworICAgICAgICBTVkdNYXJrZXJPcmllbnRUeXBlIGFuaW1hdGVkOworICAgICAgICBt
X2Z1bmN0aW9uLnByb2dyZXNzKHRhcmdldEVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50
LCBhbmltYXRlZCk7CisgICAgICAgIG1fYW5pbWF0ZWQtPnNldEFuaW1WYWwoYW5pbWF0ZWQpOwor
ICAgIH0KK307CisKIGNsYXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9y
IGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIFNWR0FuaW1hdGlvblByZXNlcnZlQXNwZWN0UmF0aW9GdW5jdGlv
bj4gewogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBTVkdBbmltYXRpb25QcmVzZXJ2ZUFzcGVjdFJhdGlv
RnVuY3Rpb24+OwogICAgIHVzaW5nIEJhc2U6OkJhc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmgJKHJl
dmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE0ICsyNSwxNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuaCIKLSNpbmNsdWRlICJT
VkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCisjaW5jbHVkZSAiU1ZHQW5nbGUuaCIKKyNpbmNsdWRl
ICJTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRM
ZW5ndGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKICNpbmNsdWRlICJT
VkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZFZhbHVlUHJvcGVydHkuaCIKKyNpbmNsdWRlICJTVkdEZWNvcmF0ZWRF
bnVtZXJhdGlvbi5oIgorI2luY2x1ZGUgIlNWR01hcmtlclR5cGVzLmgiCiAjaW5jbHVkZSAiU1ZH
TnVtYmVyTGlzdC5oIgogI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8uaCIKQEAgLTQ1LDEwICs0NywyMyBAQCB1c2luZyBTVkdBbmltYXRl
ZEludGVnZXIgPSBTVkdBbmltYXRlZFByCiB1c2luZyBTVkdBbmltYXRlZE51bWJlciA9IFNWR0Fu
aW1hdGVkUHJpbWl0aXZlUHJvcGVydHk8ZmxvYXQ+OwogdXNpbmcgU1ZHQW5pbWF0ZWRTdHJpbmcg
PSBTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5PFN0cmluZz47CiAKK3VzaW5nIFNWR0FuaW1h
dGVkRW51bWVyYXRpb24gPSBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5PFNWR0RlY29yYXRl
ZEVudW1lcmF0aW9uLCB1bnNpZ25lZD47CisKK3VzaW5nIFNWR0FuaW1hdGVkQW5nbGUgPSBTVkdB
bmltYXRlZFZhbHVlUHJvcGVydHk8U1ZHQW5nbGU+OwogdXNpbmcgU1ZHQW5pbWF0ZWRSZWN0ID0g
U1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5PFNWR1JlY3Q+OwogdXNpbmcgU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5PFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8+OwogCiB1c2luZyBTVkdBbmltYXRlZE51bWJlckxpc3QgPSBTVkdBbmltYXRlZFBy
b3BlcnR5TGlzdDxTVkdOdW1iZXJMaXN0PjsKIHVzaW5nIFNWR0FuaW1hdGVkUG9pbnRMaXN0ID0g
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3Q8U1ZHUG9pbnRMaXN0PjsKIAorY2xhc3MgU1ZHQW5pbWF0
ZWRPcmllbnRUeXBlIDogcHVibGljIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geworcHVibGljOgor
ICAgIHVzaW5nIFNWR0FuaW1hdGVkRW51bWVyYXRpb246OlNWR0FuaW1hdGVkRW51bWVyYXRpb247
CisKKyAgICBzdGF0aWMgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4gY3JlYXRlKFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBTVkdNYXJrZXJPcmllbnRUeXBlIGJhc2VWYWx1ZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGU8U1ZHTWFya2Vy
T3JpZW50VHlwZSwgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlPihjb250ZXh0RWxlbWVudCwgYmFzZVZh
bHVlKTsKKyAgICB9Cit9OworCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNz
b3JJbXBsLmgJKHJldmlzaW9uIDI0MzQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3JJbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDQzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIE93bmVyVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBY2Nlc3NvciBmaW5h
bCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29yPE93bmVyVHlwZSwgU1ZH
QW5pbWF0ZWRBbmdsZUFjY2Vzc29yPE93bmVyVHlwZT4sIFNWR0FuaW1hdGVkT3JpZW50VHlwZUFj
Y2Vzc29yPE93bmVyVHlwZT4+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVBhaXJBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkQW5nbGVBY2Nlc3NvcjxPd25lclR5
cGU+LCBTVkdBbmltYXRlZE9yaWVudFR5cGVBY2Nlc3NvcjxPd25lclR5cGU+PjsKKyAgICB1c2lu
ZyBCYXNlOjpwcm9wZXJ0eTE7CisgICAgdXNpbmcgQmFzZTo6cHJvcGVydHkyOworCitwdWJsaWM6
CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8U1ZHQW5pbWF0ZWRBbmds
ZT4gT3duZXJUeXBlOjoqcHJvcGVydHkxLCBSZWY8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlPiBPd25l
clR5cGU6Oipwcm9wZXJ0eTI+CisgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBTVkdNZW1iZXJB
Y2Nlc3NvcjxPd25lclR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBz
aW5nbGV0b248U1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFjY2Vzc29yLCBwcm9wZXJ0eTEsIHByb3Bl
cnR5Mj4oKTsgfQorCitwcml2YXRlOgorICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUo
Y29uc3QgT3duZXJUeXBlJiBvd25lcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIGJvb2wg
ZGlydHkxID0gcHJvcGVydHkxKG93bmVyKS0+aXNEaXJ0eSgpOworICAgICAgICBib29sIGRpcnR5
MiA9IHByb3BlcnR5Mihvd25lciktPmlzRGlydHkoKTsKKyAgICAgICAgaWYgKCEoZGlydHkxIHx8
IGRpcnR5MikpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGF1
dG8gdHlwZSA9IHByb3BlcnR5Mihvd25lciktPmJhc2VWYWwoKTsKKworICAgICAgICBTdHJpbmcg
c3RyaW5nMSA9IGRpcnR5MSA/ICpwcm9wZXJ0eTEob3duZXIpLT5zeW5jaHJvbml6ZSgpIDogcHJv
cGVydHkxKG93bmVyKS0+YmFzZVZhbEFzU3RyaW5nKCk7CisgICAgICAgIFN0cmluZyBzdHJpbmcy
ID0gZGlydHkyID8gKnByb3BlcnR5Mihvd25lciktPnN5bmNocm9uaXplKCkgOiBwcm9wZXJ0eTIo
b3duZXIpLT5iYXNlVmFsQXNTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gU1ZHTWFy
a2VyT3JpZW50QXV0byB8fCB0eXBlID09IFNWR01hcmtlck9yaWVudEF1dG9TdGFydFJldmVyc2Ug
PyBzdHJpbmcyIDogc3RyaW5nMTsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0
cmlidXRlQW5pbWF0b3I+IGNyZWF0ZUFuaW1hdG9yKE93bmVyVHlwZSYgb3duZXIsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwg
Q2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkQW5nbGVPcmllbnRB
bmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5MShvd25lciksIHByb3BlcnR5
Mihvd25lciksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoT3duZXJUeXBl
JiBvd25lciwgU1ZHQXR0cmlidXRlQW5pbWF0b3ImIGFuaW1hdG9yKSBjb25zdCBmaW5hbAorICAg
IHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yJj4o
YW5pbWF0b3IpLmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UocHJvcGVydHkxKG93bmVyKSwgcHJvcGVy
dHkyKG93bmVyKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgog
Y2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFjY2Vzc29yIGZpbmFsIDogcHVibGljIFNWR0Fu
aW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZEludGVnZXJB
Y2Nlc3NvcjxPd25lclR5cGU+LCBTVkdBbmltYXRlZEludGVnZXJBY2Nlc3NvcjxPd25lclR5cGU+
PiB7CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3I8T3du
ZXJUeXBlLCBTVkdBbmltYXRlZEludGVnZXJBY2Nlc3NvcjxPd25lclR5cGU+LCBTVkdBbmltYXRl
ZEludGVnZXJBY2Nlc3NvcjxPd25lclR5cGU+PjsKICAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTE7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
UGFpckFuaW1hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvci5oCShyZXZpc2lvbiAyNDM0NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFu
aW1hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNyw2IEBAIHB1YmxpYzoKICAgICB1
c2luZyBBbmltYXRlZFByb3BlcnR5MSA9IHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHlBbmltYXRv
cjE6OkFuaW1hdG9yQW5pbWF0ZWRQcm9wZXJ0eTsKICAgICB1c2luZyBBbmltYXRlZFByb3BlcnR5
MiA9IHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHlBbmltYXRvcjI6OkFuaW1hdG9yQW5pbWF0ZWRQ
cm9wZXJ0eTsKIAotICAgIHZvaWQgYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShSZWY8QW5pbWF0ZWRQ
cm9wZXJ0eTE+JiBhbmltYXRlZDEsIFJlZjxBbmltYXRlZFByb3BlcnR5Mj4mIGFuaW1hdGVkMikK
LSAgICB7Ci0gICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+YXBwZW5kQW5pbWF0
ZWRJbnN0YW5jZShhbmltYXRlZDEpOwotICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRv
cjItPmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoYW5pbWF0ZWQyKTsKLSAgICB9Ci0KLXByb3RlY3Rl
ZDoKICAgICBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxBbmltYXRlZFByb3BlcnR5MT4mIGFuaW1hdGVkMSwgUmVm
PEFuaW1hdGVkUHJvcGVydHkyPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1v
ZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2
ZSkKICAgICAgICAgOiBTVkdBdHRyaWJ1dGVBbmltYXRvcihhdHRyaWJ1dGVOYW1lKQogICAgICAg
ICAsIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMShBbmltYXRlZFByb3BlcnR5QW5pbWF0b3Ix
OjpjcmVhdGUoYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSkpCkBAIC01MSw2ICs0NCwxMyBAQCBwcm90ZWN0
ZWQ6CiAgICAgewogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShSZWY8
QW5pbWF0ZWRQcm9wZXJ0eTE+JiBhbmltYXRlZDEsIFJlZjxBbmltYXRlZFByb3BlcnR5Mj4mIGFu
aW1hdGVkMikKKyAgICB7CisgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+YXBw
ZW5kQW5pbWF0ZWRJbnN0YW5jZShhbmltYXRlZDEpOworICAgICAgICBtX2FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvcjItPmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoYW5pbWF0ZWQyKTsKKyAgICB9CisK
K3Byb3RlY3RlZDoKICAgICB2b2lkIHN0YXJ0KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEtPnN0YXJ0
KHRhcmdldEVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1w
bC5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0VsZW1lbnQ7CiAK
K2NsYXNzIFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdB
bmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yPFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvciwgU1ZH
QW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcjxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IsIFNWR0FuaW1h
dGVkT3JpZW50VHlwZUFuaW1hdG9yPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCitwdWJsaWM6
CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIFJlZjxTVkdBbmltYXRlZEFuZ2xlPiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWRPcmll
bnRUeXBlPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYg
ZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgZmluYWwKKyAgICB7CisgICAgICAgIGF1dG8gcGFpckZy
b20gPSBTVkdQcm9wZXJ0eVRyYWl0czxzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgU1ZHTWFya2Vy
T3JpZW50VHlwZT4+Ojpmcm9tU3RyaW5nKGZyb20pOworICAgICAgICBhdXRvIHBhaXJUbyA9IFNW
R1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCBTVkdNYXJrZXJPcmllbnRU
eXBlPj46OmZyb21TdHJpbmcodG8pOworCisgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9yMS0+bV9mdW5jdGlvbi5tX2Zyb20gPSBwYWlyRnJvbS5maXJzdDsKKyAgICAgICAgbV9hbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3IxLT5tX2Z1bmN0aW9uLm1fdG8gPSBwYWlyVG8uZmlyc3Q7CisK
KyAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1bmN0aW9uLm1fZnJvbSA9
IHBhaXJGcm9tLnNlY29uZDsKKyAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5t
X2Z1bmN0aW9uLm1fdG8gPSBwYWlyVG8uc2Vjb25kOworICAgIH0KKworICAgIHZvaWQgc2V0RnJv
bUFuZEJ5VmFsdWVzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYgZnJv
bSwgY29uc3QgU3RyaW5nJiBieSkgZmluYWwKKyAgICB7CisgICAgICAgIHNldEZyb21BbmRUb1Zh
bHVlcyh0YXJnZXRFbGVtZW50LCBmcm9tLCBieSk7CisgICAgICAgIGlmIChtX2FuaW1hdGVkUHJv
cGVydHlBbmltYXRvcjItPm1fZnVuY3Rpb24ubV9mcm9tICE9IFNWR01hcmtlck9yaWVudEFuZ2xl
IHx8IG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX3RvICE9IFNWR01h
cmtlck9yaWVudEFuZ2xlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2FuaW1hdGVk
UHJvcGVydHlBbmltYXRvcjEtPm1fZnVuY3Rpb24uYWRkRnJvbUFuZFRvVmFsdWVzKHRhcmdldEVs
ZW1lbnQpOworICAgIH0KKworICAgIHZvaWQgcHJvZ3Jlc3MoU1ZHRWxlbWVudCogdGFyZ2V0RWxl
bWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZpbmFsCisgICAg
eworICAgICAgICBpZiAobV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1bmN0aW9uLm1f
ZnJvbSAhPSBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1fZnVuY3Rpb24ubV90bykgewor
ICAgICAgICAgICAgLy8gRGlzY3JldGUgYW5pbWF0aW9uIC0gbm8gbGluZWFyIGludGVycG9sYXRp
b24gcG9zc2libGUgYmV0d2VlbiB2YWx1ZXMgKGUuZy4gYXV0byB0byBhbmdsZSkuCisgICAgICAg
ICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPnByb2dyZXNzKHRhcmdldEVsZW1lbnQs
IHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50KTsKKworICAgICAgICAgICAgU1ZHQW5nbGVWYWx1ZSBh
bmltYXRlZEFuZ2xlOworICAgICAgICAgICAgaWYgKHBlcmNlbnRhZ2UgPCAwLjVmICYmIG1fYW5p
bWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX2Zyb20gPT0gU1ZHTWFya2VyT3Jp
ZW50QW5nbGUpCisgICAgICAgICAgICAgICAgYW5pbWF0ZWRBbmdsZSA9IG1fYW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9yMS0+bV9mdW5jdGlvbi5tX2Zyb207CisgICAgICAgICAgICBlbHNlIGlmIChw
ZXJjZW50YWdlID49IDAuNWYgJiYgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1bmN0
aW9uLm1fdG8gPT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpCisgICAgICAgICAgICAgICAgYW5pbWF0
ZWRBbmdsZSA9IG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+bV9mdW5jdGlvbi5tX3RvOwor
CisgICAgICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEtPm1fYW5pbWF0ZWQtPnNl
dEFuaW1WYWwoYW5pbWF0ZWRBbmdsZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAobV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1bmN0aW9uLm1f
ZnJvbSA9PSBTVkdNYXJrZXJPcmllbnRBbmdsZSkgeworICAgICAgICAgICAgLy8gUmVndWxhciBm
cm9tLSB0b2FuZ2xlIGFuaW1hdGlvbiwgd2l0aCBzdXBwb3J0IGZvciBzbW9vdGggaW50ZXJwb2xh
dGlvbiwgYW5kIGFkZGl0aXZlIGFuZCBhY2N1bXVsYXRlZCBhbmltYXRpb24uCisgICAgICAgICAg
ICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1fYW5pbWF0ZWQtPnNldEFuaW1WYWwoU1ZH
TWFya2VyT3JpZW50QW5nbGUpOworCisgICAgICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmlt
YXRvcjEtPnByb2dyZXNzKHRhcmdldEVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGF1dG8sIGF1dG8t
c3RhcnQtcmV2ZXJzZSwgb3IgdW5rbm93bi4KKyAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5p
bWF0b3IxLT5tX2FuaW1hdGVkLT5hbmltVmFsKCktPnZhbHVlKCkuc2V0VmFsdWUoMCk7CisKKyAg
ICAgICAgaWYgKG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX2Zyb20g
PT0gU1ZHTWFya2VyT3JpZW50QXV0byB8fCBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1f
ZnVuY3Rpb24ubV9mcm9tID09IFNWR01hcmtlck9yaWVudEF1dG9TdGFydFJldmVyc2UpCisgICAg
ICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjItPm1fYW5pbWF0ZWQtPnNldEFuaW1W
YWwobV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1bmN0aW9uLm1fZnJvbSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9hbmlt
YXRlZC0+c2V0QW5pbVZhbChTVkdNYXJrZXJPcmllbnRVbmtub3duKTsKKyAgICB9CisKKyAgICB2
b2lkIHN0b3AoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgZmluYWwKKyAgICB7CisgICAgICAg
IGlmICghbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxLT5tX2FuaW1hdGVkLT5pc0FuaW1hdGlu
ZygpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhcHBseSh0YXJnZXRFbGVtZW50KTsK
KyAgICAgICAgQmFzZTo6c3RvcCh0YXJnZXRFbGVtZW50KTsKKyAgICB9Cit9OworCiBjbGFzcyBT
VkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVBhaXJBbmltYXRvcjxTVkdBbmltYXRlZEludGVnZXJBbmltYXRvciwgU1ZHQW5pbWF0
ZWRJbnRlZ2VyQW5pbWF0b3I+IHsKICAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVBhaXJBbmltYXRvcjxTVkdBbmltYXRlZEludGVnZXJBbmltYXRvciwgU1ZHQW5pbWF0ZWRJbnRl
Z2VyQW5pbWF0b3I+OwogICAgIHVzaW5nIEJhc2U6OkJhc2U7CkBAIC00MCw3ICsxMTMsNyBAQCBj
bGFzcyBTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3IgZmluCiBwdWJsaWM6CiAgICAgc3Rh
dGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxT
VkdBbmltYXRlZEludGVnZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBh
bmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KG5ldyBT
VkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3IoYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBh
bmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdl
clBhaXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAK
IHByaXZhdGU6CkBAIC04Myw3ICsxNTYsNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlclBhaXJB
bmltYXRvciBmaW5hCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVk
MSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWROdW1iZXJQYWlyQW5pbWF0b3I+KG5ldyBTVkdBbmltYXRlZE51bWJlclBhaXJBbmltYXRvcihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFN0YXRpY1By
b3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oCShub25leGlzdGVu
dCkKQEAgLTEsMTE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMTAtMjAxMi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNsdWRlICJTVkdMZWdhY3lBbmltYXRlZFBy
b3BlcnR5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUHJv
cGVydHlUeXBlPgotY2xhc3MgU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYgOiBwdWJs
aWMgU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBQcm9w
ZXJ0eVR5cGUgQ29udGVudFR5cGU7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFByb3BlcnR5VHlwZSYg
YmFzZVZhbCgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eTsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIGNvbnN0IFByb3BlcnR5VHlwZSYgYW5pbVZhbCgpCi0gICAgewotICAgICAgICBp
ZiAobV9hbmltYXRlZFByb3BlcnR5KQotICAgICAgICAgICAgcmV0dXJuICptX2FuaW1hdGVkUHJv
cGVydHk7Ci0gICAgICAgIHJldHVybiBtX3Byb3BlcnR5OwotICAgIH0KLQotICAgIHZpcnR1YWwg
RXhjZXB0aW9uT3I8dm9pZD4gc2V0QmFzZVZhbChjb25zdCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5
KQotICAgIHsKLSAgICAgICAgbV9wcm9wZXJ0eSA9IHByb3BlcnR5OwotICAgICAgICBjb21taXRD
aGFuZ2UoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBib29sIGlzQW5pbWF0
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbmltYXRlZFByb3BlcnR5OyB9Ci0KLSAg
ICBzdGF0aWMgUmVmPFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlw
ZT4+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5
cGUsIFByb3BlcnR5VHlwZSYgcHJvcGVydHkpCi0gICAgewotICAgICAgICBBU1NFUlQoY29udGV4
dEVsZW1lbnQpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmltYXRlZFN0YXRp
Y1Byb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgcHJvcGVydHkpKTsKLSAgICB9Ci0KLSAgICBQcm9w
ZXJ0eVR5cGUmIGN1cnJlbnRBbmltYXRlZFZhbHVlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChp
c0FuaW1hdGluZygpKTsKLSAgICAgICAgcmV0dXJuICptX2FuaW1hdGVkUHJvcGVydHk7Ci0gICAg
fQotCi0gICAgY29uc3QgUHJvcGVydHlUeXBlJiBjdXJyZW50QmFzZVZhbHVlKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX3Byb3BlcnR5OwotICAgIH0KLQotICAgIHZvaWQgYW5pbWF0
aW9uU3RhcnRlZChQcm9wZXJ0eVR5cGUqIG5ld0FuaW1WYWwpCi0gICAgewotICAgICAgICBBU1NF
UlQoIWlzQW5pbWF0aW5nKCkpOwotICAgICAgICBBU1NFUlQobmV3QW5pbVZhbCk7Ci0gICAgICAg
IG1fYW5pbWF0ZWRQcm9wZXJ0eSA9IG5ld0FuaW1WYWw7Ci0gICAgfQotCi0gICAgdm9pZCBhbmlt
YXRpb25FbmRlZCgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNBbmltYXRpbmcoKSk7Ci0gICAg
ICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eSA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgdm9pZCBhbmlt
VmFsV2lsbENoYW5nZSgpCi0gICAgewotICAgICAgICAvLyBuby1vcCBmb3Igbm9uIGxpc3QgdHlw
ZXMuCi0gICAgICAgIEFTU0VSVChpc0FuaW1hdGluZygpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFu
aW1WYWxEaWRDaGFuZ2UoKQotICAgIHsKLSAgICAgICAgLy8gbm8tb3AgZm9yIG5vbiBsaXN0IHR5
cGVzLgotICAgICAgICBBU1NFUlQoaXNBbmltYXRpbmcoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBz
eW5jaHJvbml6ZVdyYXBwZXJzSWZOZWVkZWQoKQotICAgIHsKLSAgICAgICAgLy8gbm8tb3AKLSAg
ICB9Ci0KLXByb3RlY3RlZDoKLSAgICBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZihT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFByb3BlcnR5
VHlwZSYgcHJvcGVydHkpCi0gICAgICAgIDogU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eShjb250
ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpCi0gICAgICAg
ICwgbV9wcm9wZXJ0eShwcm9wZXJ0eSkKLSAgICAgICAgLCBtX2FuaW1hdGVkUHJvcGVydHkobnVs
bHB0cikKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFByb3BlcnR5VHlwZSYgbV9wcm9w
ZXJ0eTsKLSAgICBQcm9wZXJ0eVR5cGUqIG1fYW5pbWF0ZWRQcm9wZXJ0eTsKLX07Ci0KLX0KClBy
b3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0
eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2
ZVZhbHVlRnVuY3Rpb25JbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCShyZXZpc2lv
biAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25B
ZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDMz
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU1ZHQW5pbWF0aW9uQW5nbGVGdW5j
dGlvbiA6IHB1YmxpYyBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb248U1ZHQW5nbGVW
YWx1ZT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRpb25BZGRpdGl2ZVZh
bHVlRnVuY3Rpb248U1ZHQW5nbGVWYWx1ZT47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAg
IHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgLy8gVmFsdWVzIHdpbGwgYmUgc2V0
IGJ5IFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmltYXRvci4KKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorCisgICAgdm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiwgZmxvYXQg
cGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuZ2xlVmFsdWUmIGFuaW1hdGVk
KQorICAgIHsKKyAgICAgICAgZmxvYXQgbnVtYmVyID0gYW5pbWF0ZWQudmFsdWUoKTsKKyAgICAg
ICAgbnVtYmVyID0gQmFzZTo6cHJvZ3Jlc3MocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIG1fZnJv
bS52YWx1ZSgpLCBtX3RvLnZhbHVlKCksIHRvQXRFbmRPZkR1cmF0aW9uKCkudmFsdWUoKSwgbnVt
YmVyKTsKKyAgICAgICAgYW5pbWF0ZWQuc2V0VmFsdWUobnVtYmVyKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmltYXRvcjsKKwor
ICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgbV90by5zZXRWYWx1ZShtX3RvLnZhbHVlKCkgKyBtX2Zyb20udmFsdWUoKSk7Cisg
ICAgfQorfTsKKwogY2xhc3MgU1ZHQW5pbWF0aW9uQ29sb3JGdW5jdGlvbiA6IHB1YmxpYyBTVkdB
bmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb248Q29sb3I+IHsKIHB1YmxpYzoKICAgICB1c2lu
ZyBCYXNlID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uPENvbG9yPjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rp
b25JbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbkltcGwuaAkocmV2aXNpb24gMjQzNDY2KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbklt
cGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMzcgQEAgcHVibGljOgogICAgIH0KIH07
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEVudW1UeXBlPgorY2xhc3MgU1ZHQW5pbWF0aW9uRW51bWVy
YXRpb25GdW5jdGlvbiA6IHB1YmxpYyBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uPEVudW1U
eXBlPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb248RW51
bVR5cGU+OworICAgIHVzaW5nIEJhc2U6Om1fZnJvbTsKKyAgICB1c2luZyBCYXNlOjptX3RvOwor
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAgIHZvaWQgc2V0RnJvbUFuZFRv
VmFsdWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8p
IG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2Zyb20gPSBTVkdQcm9wZXJ0eVRyYWl0czxFbnVt
VHlwZT46OmZyb21TdHJpbmcoZnJvbSk7CisgICAgICAgIG1fdG8gPSBTVkdQcm9wZXJ0eVRyYWl0
czxFbnVtVHlwZT46OmZyb21TdHJpbmcodG8pOworICAgIH0KK307CisKK2NsYXNzIFNWR0FuaW1h
dGlvbk9yaWVudFR5cGVGdW5jdGlvbiA6IHB1YmxpYyBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0
aW9uPFNWR01hcmtlck9yaWVudFR5cGU+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gU1ZH
QW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbjxTVkdNYXJrZXJPcmllbnRUeXBlPjsKKyAgICB1c2lu
ZyBCYXNlOjpCYXNlOworCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCos
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlCisgICAgeworICAgICAgICAv
LyBWYWx1ZXMgd2lsbCBiZSBzZXQgYnkgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yLgor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJp
ZW5kIGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmltYXRvcjsKK307CisKIGNsYXNzIFNW
R0FuaW1hdGlvblByZXNlcnZlQXNwZWN0UmF0aW9GdW5jdGlvbiA6IHB1YmxpYyBTVkdBbmltYXRp
b25EaXNjcmV0ZUZ1bmN0aW9uPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZT4gewogcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uPFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW9WYWx1ZT47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDI0MzQ2NikKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGgu
aCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3QuaCIKQEAgLTUyLDEyICs1MSw2IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICAvLyBBbmltYXRhYmxlIGF0dHJpYnV0ZXMKLSAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIHR5cGVuYW1l
IEVudW1UeXBlLCBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPEVudW1UeXBlPiBPd25l
clR5cGU6OiphdHRyaWJ1dGU+Ci0gICAgdm9pZCByZWdpc3RlckF0dHJpYnV0ZSgpCi0gICAgewot
ICAgICAgICByZWdpc3RlckF0dHJpYnV0ZShTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRl
QWNjZXNzb3I8T3duZXJUeXBlLCBFbnVtVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxhdHRyaWJ1
dGVOYW1lLCBhdHRyaWJ1dGU+KCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPGNvbnN0IExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgU1ZHQW5p
bWF0ZWRMZW5ndGhBdHRyaWJ1dGUgT3duZXJUeXBlOjoqYXR0cmlidXRlPgogICAgIHZvaWQgcmVn
aXN0ZXJBdHRyaWJ1dGUoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdE
ZWNvcmF0ZWRQcmltaXRpdmUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBEZWNvcmF0aW9uVHlwZSwgdHlwZW5hbWUgRW51bVR5cGU+CitjbGFzcyBTVkdEZWNv
cmF0ZWRFbnVtZXJhdGlvbiA6IHB1YmxpYyBTVkdEZWNvcmF0ZWRQcmltaXRpdmU8RGVjb3JhdGlv
blR5cGUsIEVudW1UeXBlPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR0RlY29yYXRlZFByaW1pdGl2
ZTxEZWNvcmF0aW9uVHlwZSwgRW51bVR5cGU+OworICAgIHVzaW5nIEJhc2U6OkJhc2U7CisgICAg
dXNpbmcgQmFzZTo6bV92YWx1ZTsKKworcHVibGljOgorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShj
b25zdCBFbnVtVHlwZSYgdmFsdWUpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfaW50ZWdyYWw8RGVjb3JhdGlvblR5cGU+Ojp2YWx1ZSwgIkRlY29yYXRpb25UeXBlIGZvcm0g
ZW51bSBzaG91bGQgYmUgaW50ZWdyYWwuIik7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0RlY29yYXRlZEVudW1lcmF0aW9uPih2YWx1ZSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIGJvb2wgc2V0VmFsdWUoY29uc3QgRGVjb3JhdGlvblR5cGUmIHZhbHVlKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA+IFNWR0lETEVudW1MaW1pdHM8RW51
bVR5cGU+OjpoaWdoZXN0RXhwb3NlZEVudW1WYWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBCYXNlOjpzZXRWYWx1ZUludGVybmFsKHZhbHVlKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgRGVjb3JhdGlvblR5cGUgdmFsdWUoKSBjb25zdCBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKEJhc2U6OnZhbHVlKCkgPiBTVkdJRExFbnVtTGltaXRz
PEVudW1UeXBlPjo6aGlnaGVzdEV4cG9zZWRFbnVtVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVy
biBtX291dE9mUmFuZ2VFbnVtVmFsdWU7CisgICAgICAgIHJldHVybiBCYXNlOjp2YWx1ZSgpOwor
ICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0
aW9uVHlwZT4+IGNsb25lKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUo
bV92YWx1ZSk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IERlY29yYXRpb25UeXBlIG1fb3V0
T2ZSYW5nZUVudW1WYWx1ZSA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcmltaXRpdmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcmltaXRpdmUuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcmltaXRp
dmUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZH
RGVjb3JhdGVkUHJvcGVydHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBEZWNvcmF0aW9uVHlwZSwgdHlwZW5hbWUgUHJvcGVydHlUeXBlPgorY2xhc3MgU1ZH
RGVjb3JhdGVkUHJpbWl0aXZlIDogcHVibGljIFNWR0RlY29yYXRlZFByb3BlcnR5PERlY29yYXRp
b25UeXBlPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR0RlY29yYXRlZFByb3BlcnR5PERlY29yYXRp
b25UeXBlPjsKKworcHVibGljOgorICAgIFNWR0RlY29yYXRlZFByaW1pdGl2ZShjb25zdCBQcm9w
ZXJ0eVR5cGUmIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeworICAgIH0K
KworcHJvdGVjdGVkOgorICAgIHVzaW5nIEJhc2U6OkJhc2U7CisKKyAgICB2b2lkIHNldFZhbHVl
SW50ZXJuYWwoY29uc3QgRGVjb3JhdGlvblR5cGUmIHZhbHVlKSBvdmVycmlkZSB7IG1fdmFsdWUg
PSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVR5cGU+KHZhbHVlKTsgfQorICAgIERlY29yYXRpb25UeXBl
IHZhbHVlSW50ZXJuYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGF0aWNfY2FzdDxEZWNv
cmF0aW9uVHlwZT4obV92YWx1ZSk7IH0KKworICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6dG9T
dHJpbmcobV92YWx1ZSk7IH0KKworICAgIFByb3BlcnR5VHlwZSBtX3ZhbHVlOworfTsKKworfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0
ZWRQcm9wZXJ0eS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvcmF0
aW9uVHlwZT4KK2NsYXNzIFNWR0RlY29yYXRlZFByb3BlcnR5IHsKK3B1YmxpYzoKKyAgICBTVkdE
ZWNvcmF0ZWRQcm9wZXJ0eSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5TVkdEZWNvcmF0ZWRQ
cm9wZXJ0eSgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUludGVybmFs
KGNvbnN0IERlY29yYXRpb25UeXBlJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZShj
b25zdCBEZWNvcmF0aW9uVHlwZSYgdmFsdWUpCisgICAgeworICAgICAgICBzZXRWYWx1ZUludGVy
bmFsKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gVXNlZCBp
bnRlcm5hbGx5LiBJdCBkb2Vzbid0IGNoZWNrIGZvciBoaWdoZXN0RXhwb3NlZEVudW1WYWx1ZSBm
b3IgZXhhbXBsZS4KKyAgICB2aXJ0dWFsIERlY29yYXRpb25UeXBlIHZhbHVlSW50ZXJuYWwoKSBj
b25zdCA9IDA7CisKKyAgICAvLyBVc2VkIGJ5IHRoZSBET00gQVBJcy4KKyAgICB2aXJ0dWFsIERl
Y29yYXRpb25UeXBlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVJbnRlcm5hbCgpOyB9CisK
KyAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0RlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlPj4g
Y2xvbmUoKSA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaAkocmV2aXNpb24gMjQz
NDY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJl
Z2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmVnaXN0ZXJQcm9wZXJ0eShhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZEJvb2xlYW5BY2Nl
c3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOwogICAgIH0K
IAorICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWRO
YW1lPiYgYXR0cmlidXRlTmFtZSwgdHlwZW5hbWUgRW51bVR5cGUsIFJlZjxTVkdBbmltYXRlZEVu
dW1lcmF0aW9uPiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KKyAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
clByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJlZ2lzdGVyUHJvcGVydHkoYXR0cmlidXRlTmFt
ZSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFjY2Vzc29yPE93bmVyVHlwZSwgRW51bVR5cGU+Ojp0
ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOworICAgIH0KKwogICAgIHRlbXBsYXRlPGNv
bnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFt
ZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4gT3duZXJUeXBlOjoqcHJvcGVydHk+CiAgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCiAgICAgewpAQCAtNzMsNiArNzksMTIgQEAgcHVi
bGljOgogICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVk
TnVtYmVyTGlzdEFjY2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxwcm9wZXJ0
eT4oKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNv
bnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4g
T3duZXJUeXBlOjoqcHJvcGVydHkxLCBSZWY8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlPiBPd25lclR5
cGU6Oipwcm9wZXJ0eTI+CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCisgICAg
eworICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkQW5n
bGVPcmllbnRBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHkx
LCBwcm9wZXJ0eTI+KCkpOworICAgIH0KKwogICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRl
c3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1h
dGVkUG9pbnRMaXN0PiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KICAgICBzdGF0aWMgdm9pZCByZWdp
c3RlclByb3BlcnR5KCkKICAgICB7CkBAIC0xMjcsNiArMTM5LDE1IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGZpbmRBY2Nlc3NvcihhdHRyaWJ1dGVOYW1lKTsKICAgICB9CiAKKyAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgT3duZXJUeXBlIG93bnMgYSBwcm9wZXJ0eSB3aG9zZSBuYW1lIGlzIGF0
dHJpYnV0ZU5hbWUKKyAgICAvLyBhbmQgaXRzIHR5cGUgaXMgU1ZHQW5pbWF0ZWRMZW5ndGguCisg
ICAgc3RhdGljIGJvb2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKGNvbnN0IGF1dG8qIGFjY2Vz
c29yID0gZmluZEFjY2Vzc29yKGF0dHJpYnV0ZU5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGFj
Y2Vzc29yLT5pc0FuaW1hdGVkTGVuZ3RoKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKICAgICBRdWFsaWZpZWROYW1lIHByb3BlcnR5QXR0cmlidXRlTmFtZShjb25zdCBTVkdQcm9w
ZXJ0eSYgcHJvcGVydHkpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBRdWFsaWZpZWRO
YW1lIGF0dHJpYnV0ZU5hbWUgPSBudWxsUU5hbWUoKTsKQEAgLTE5OSw2ICsyMjAsMjIgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gaXNBbmltYXRlZFByb3BlcnR5QXR0cmlidXRlOwogICAgIH0K
IAorICAgIGJvb2wgaXNBbmltYXRlZFN0eWxlUHJvcGVydHlBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJ
bXBsKj4+IGFuaW1hdGVkU3R5bGVBdHRyaWJ1dGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFF1
YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsKj4geworICAgICAgICAgICAgU1ZHTmFtZXM6
OmN4QXR0ci0+aW1wbCgpLAorICAgICAgICAgICAgU1ZHTmFtZXM6OmN5QXR0ci0+aW1wbCgpLAor
ICAgICAgICAgICAgU1ZHTmFtZXM6OnJBdHRyLT5pbXBsKCksCisgICAgICAgICAgICBTVkdOYW1l
czo6cnhBdHRyLT5pbXBsKCksCisgICAgICAgICAgICBTVkdOYW1lczo6cnlBdHRyLT5pbXBsKCks
CisgICAgICAgICAgICBTVkdOYW1lczo6aGVpZ2h0QXR0ci0+aW1wbCgpLAorICAgICAgICAgICAg
U1ZHTmFtZXM6OndpZHRoQXR0ci0+aW1wbCgpLAorICAgICAgICAgICAgU1ZHTmFtZXM6OnhBdHRy
LT5pbXBsKCksCisgICAgICAgICAgICBTVkdOYW1lczo6eUF0dHItPmltcGwoKQorICAgICAgICB9
OworICAgICAgICByZXR1cm4gaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KSAmJiBhbmltYXRlZFN0eWxlQXR0cmlidXRlcy5nZXQoKS5jb250YWlucyhhdHRyaWJ1dGVOYW1l
LmltcGwoKSk7CisgICAgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1h
dG9yPiBjcmVhdGVBbmltYXRvcihjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gYW5pbWF0b3I7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVJlZ2lzdHJ5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdpc3Ry
eS5oCShyZXZpc2lvbiAyNDM0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBTdHJpbmc+IHN5bmNocm9u
aXplQWxsQXR0cmlidXRlcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0FuaW1h
dGVkUHJvcGVydHlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRlZFN0eWxlUHJvcGVydHlBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdB
dHRyaWJ1dGVBbmltYXRvcj4gY3JlYXRlQW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYsIEFu
aW1hdGlvbk1vZGUsIENhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2
ZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRBbmltYXRlZEluc3RhbmNlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFNWR0F0dHJpYnV0ZUFuaW1hdG9yJikg
Y29uc3QgPSAwOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1N0
YXRpY1Byb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyNDM0NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYu
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBDT01QSUxFUihNU1ZDKQotLy8g
VXBkYXRlTWV0aG9kIGlzIDEyIGJ5dGVzLiBXZSBoYXZlIHRvIHBhY2sgdG8gYSBzaXplIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byB0aGF0IHRvIGF2b2lkIGFuCi0vLyBhbGlnbm1lbnQgd2Fybmlu
ZyAoQzQxMjEpLiAxNiBpcyB0aGUgbmV4dC1sYXJnZXN0IHNpemUgYWxsb3dlZCBmb3IgcGFja2lu
Zywgc28gd2UgdXNlIHRoYXQuCi0jcHJhZ21hIHBhY2socHVzaCwgMTYpCi0jZW5kaWYKLXRlbXBs
YXRlPHR5cGVuYW1lIENvbnRleHRFbGVtZW50LCB0eXBlbmFtZSBQcm9wZXJ0eVRlYXJPZmY+Ci1j
bGFzcyBTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYgZmluYWwgOiBwdWJsaWMgUHJvcGVydHlUZWFy
T2ZmIHsKLXB1YmxpYzoKLSAgICB1c2luZyBTZWxmID0gU1ZHU3RhdGljUHJvcGVydHlUZWFyT2Zm
PENvbnRleHRFbGVtZW50LCBQcm9wZXJ0eVRlYXJPZmY+OwotICAgIHVzaW5nIFByb3BlcnR5VHlw
ZSA9IHR5cGVuYW1lIFByb3BlcnR5VGVhck9mZjo6UHJvcGVydHlUeXBlOwotCi0gICAgdHlwZWRl
ZiB2b2lkIChDb250ZXh0RWxlbWVudDo6KlVwZGF0ZU1ldGhvZCkoKTsKLQotICAgIC8vIFVzZWQg
Zm9yIG5vbi1hbmltYXRlZCBQT0QgdHlwZXMgdGhhdCBhcmUgbm90IGFzc29jaWF0ZWQgd2l0aCBh
IFNWR0FuaW1hdGVkUHJvcGVydHkgb2JqZWN0LCBub3Igd2l0aCBhIFhNTCBET00gYXR0cmlidXRl
Ci0gICAgLy8gKGZvciBleGFtcGxlOiBTVkdTVkdFbGVtZW50OjpjdXJyZW50VHJhbnNsYXRlKS4K
LSAgICBzdGF0aWMgUmVmPFNlbGY+IGNyZWF0ZShDb250ZXh0RWxlbWVudCYgY29udGV4dEVsZW1l
bnQsIFByb3BlcnR5VHlwZSYgdmFsdWUsIFVwZGF0ZU1ldGhvZCB1cGRhdGUpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWxmKGNvbnRleHRFbGVtZW50LCB2YWx1ZSwgdXBk
YXRlKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb21taXRDaGFuZ2UoKSBmaW5hbCB7IChtX2NvbnRl
eHRFbGVtZW50LmdldCgpLT4qbV91cGRhdGUpKCk7IH0KLQotcHJpdmF0ZToKLSAgICBTVkdTdGF0
aWNQcm9wZXJ0eVRlYXJPZmYoQ29udGV4dEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBQcm9wZXJ0
eVR5cGUmIHZhbHVlLCBVcGRhdGVNZXRob2QgdXBkYXRlKQotICAgICAgICA6IFByb3BlcnR5VGVh
ck9mZihVbmRlZmluZWRSb2xlLCB2YWx1ZSkKLSAgICAgICAgLCBtX3VwZGF0ZSh1cGRhdGUpCi0g
ICAgICAgICwgbV9jb250ZXh0RWxlbWVudCgmY29udGV4dEVsZW1lbnQpCi0gICAgewotICAgIH0K
LQotICAgIFVwZGF0ZU1ldGhvZCBtX3VwZGF0ZTsKLSAgICBSZWZQdHI8Q29udGV4dEVsZW1lbnQ+
IG1fY29udGV4dEVsZW1lbnQ7Ci19OwotI2lmIENPTVBJTEVSKE1TVkMpCi0jcHJhZ21hIHBhY2so
cG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY1Byb3BlcnR5VGVhck9m
Zi5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRp
dmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQz
NDcxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTktMDMtMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFNWRyB0ZWFyIG9mZiBvYmplY3RzIGZvciBTVkdB
bmdsZSwgU1ZHQW5pbWF0ZWRBbmdsZSBhbmQgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MDg3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogc3ZnL2RvbS9TVkdBbmlt
YXRlZEVudW1lcmF0aW9uLVNWR01hcmtlckVsZW1lbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN2Zy9kb20vU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi1TVkdNYXJrZXJFbGVtZW50Lmh0bWw6Cisg
ICAgICAgIEZpeGVzIGNhc2VzIHRoYXQgdGhlIHRlYXIgb2ZmIG9iamVjdHMgY291bGQgbm90IGhh
bmRsZSBjb3JyZWN0bHkgZm9yIHRoZQorICAgICAgICBwYWlyZWQgeyBhbmdsZSwgb3JpZW50VHlw
ZSB9LiBBbHNvIHdoZW4gc2V0dGluZyB0aGUgb3JpZW50IHR5cGUgdG8gImF1dG8iCisgICAgICAg
IG9yICJhdXRvLXN0YXJ0LXJldmVyc2UiLCB0aGUgb3JpZW50IGFuZ2xlIHNob3VsZCBiZSByZXNl
dCB0bworICAgICAgICBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEIGFuZCBpcyBub3Qgc3VwcHNl
ZCB0byBrZWVwIGl0cyBvcmlnaW5hbCB2YWx1ZS4KKwogMjAxOS0wMy0yNSAgU2hhd24gUm9iZXJ0
cyAgPHNyb2JlcnRzQGFwcGxlLmNvbT4KIAogICAgICAgICBwZXJmb3JtYW5jZS1hcGkvcGVyZm9y
bWFuY2Utb2JzZXJ2ZXItcGVyaW9kaWMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9kb20vU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi1TVkdNYXJrZXJFbGVtZW50
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0FuaW1h
dGVkRW51bWVyYXRpb24tU1ZHTWFya2VyRWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI0
MzQ2NikKKysrIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi1TVkdN
YXJrZXJFbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDE2ICsxMDEs
MTYgQEAgUEFTUyBtYXJrZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnb3JpZW50JwogCiBUZXN0IGNh
c2Ugc2Vuc2l0aXZpdHkgb2YgYXR0cmlidXRlcyAtIHRyeSBzZXR0aW5nIGludmFsaWQgdmFsdWVz
CiBQQVNTIG1hcmtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdvcmllbnQnLCAnQVVUTy1TVEFSVC1S
RVZFUlNFJykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1GQUlMIG1hcmtlckVsZW1lbnQuZ2V0
QXR0cmlidXRlKCdvcmllbnQnKSBzaG91bGQgYmUgQVVUTy1TVEFSVC1SRVZFUlNFLiBXYXMgMTBk
ZWcuCi1QQVNTIG1hcmtlckVsZW1lbnQub3JpZW50VHlwZS5iYXNlVmFsIGlzIFNWR01hcmtlckVs
ZW1lbnQuU1ZHX01BUktFUl9PUklFTlRfQU5HTEUKK1BBU1MgbWFya2VyRWxlbWVudC5nZXRBdHRy
aWJ1dGUoJ29yaWVudCcpIGlzICJBVVRPLVNUQVJULVJFVkVSU0UiCitQQVNTIG1hcmtlckVsZW1l
bnQub3JpZW50VHlwZS5iYXNlVmFsIGlzIFNWR01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9PUklF
TlRfVU5LTk9XTgogUEFTUyBtYXJrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnb3JpZW50JywgJ0FV
VE8nKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLUZBSUwgbWFya2VyRWxlbWVudC5nZXRBdHRy
aWJ1dGUoJ29yaWVudCcpIHNob3VsZCBiZSBBVVRPLiBXYXMgMTBkZWcuCi1QQVNTIG1hcmtlckVs
ZW1lbnQub3JpZW50VHlwZS5iYXNlVmFsIGlzIFNWR01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9P
UklFTlRfQU5HTEUKK1BBU1MgbWFya2VyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ29yaWVudCcpIGlz
ICJBVVRPIgorUEFTUyBtYXJrZXJFbGVtZW50Lm9yaWVudFR5cGUuYmFzZVZhbCBpcyBTVkdNYXJr
ZXJFbGVtZW50LlNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04KIAogU3dpdGNoIGJhY2sgdG8gJ2F1
dG8nIHZhbHVlCiBQQVNTIG1hcmtlckVsZW1lbnQub3JpZW50VHlwZS5iYXNlVmFsID0gU1ZHTWFy
a2VyRWxlbWVudC5TVkdfTUFSS0VSX09SSUVOVF9BVVRPIGlzIFNWR01hcmtlckVsZW1lbnQuU1ZH
X01BUktFUl9PUklFTlRfQVVUTwotUEFTUyBtYXJrZXJFbGVtZW50Lm9yaWVudEFuZ2xlLmJhc2VW
YWwudmFsdWUgaXMgMTAKLVBBU1MgbWFya2VyRWxlbWVudC5vcmllbnRBbmdsZS5iYXNlVmFsLnVu
aXRUeXBlIGlzIFNWR0FuZ2xlLlNWR19BTkdMRVRZUEVfREVHCitQQVNTIG1hcmtlckVsZW1lbnQu
b3JpZW50QW5nbGUuYmFzZVZhbC52YWx1ZSBpcyAwCitQQVNTIG1hcmtlckVsZW1lbnQub3JpZW50
QW5nbGUuYmFzZVZhbC51bml0VHlwZSBpcyBTVkdBbmdsZS5TVkdfQU5HTEVUWVBFX1VOU1BFQ0lG
SUVECiBQQVNTIG1hcmtlckVsZW1lbnQub3JpZW50VHlwZS5iYXNlVmFsIGlzIFNWR01hcmtlckVs
ZW1lbnQuU1ZHX01BUktFUl9PUklFTlRfQVVUTwogUEFTUyBtYXJrZXJFbGVtZW50LmdldEF0dHJp
YnV0ZSgnb3JpZW50JykgaXMgImF1dG8iCiAKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbi1TVkdNYXJrZXJFbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdBbmltYXRlZEVudW1lcmF0aW9uLVNWR01hcmtlckVsZW1l
bnQuaHRtbAkocmV2aXNpb24gMjQzNDY2KQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdBbmlt
YXRlZEVudW1lcmF0aW9uLVNWR01hcmtlckVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTMyLDI0ICsxMzIsMTggQEAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZXJFbGVtZW50Lmdl
dAogZGVidWcoIiIpOwogZGVidWcoIlRlc3QgY2FzZSBzZW5zaXRpdml0eSBvZiBhdHRyaWJ1dGVz
IC0gdHJ5IHNldHRpbmcgaW52YWxpZCB2YWx1ZXMiKTsKIHNob3VsZE5vdFRocm93KCJtYXJrZXJF
bGVtZW50LnNldEF0dHJpYnV0ZSgnb3JpZW50JywgJ0FVVE8tU1RBUlQtUkVWRVJTRScpIik7Ci0v
LyBUaGUgbGluZSBiZWxvdyBmYWlscyBhcyBhIHJlc3VsdCBvZiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTQxCi0vLyBUaGUgYXR0cmlidXRlIHZhbHVlIGlzIG5v
dCB1cGRhdGVkIHRvIHRoZSBpbnZhbGlkIHZhbHVlLgotLy8gVGhlIGV4cGVjdGVkIHJlc3VsdCBy
ZWNvZ25pc2VzIHRoaXMgYW5kIHNob3VsZCBiZSB1cGRhdGVkIHdoZW4gdGhlIGFib3ZlIGJ1Zwot
Ly8gaXMgcmVzb2x2ZWQuCi0vLyBXaGF0J3MgaW1wb3J0YW50IGhlcmUgdGhvdWdoIGlzIHRoYXQg
dGhlIERPTSB2YWx1ZXMgYXJlIHVuY2hhbmdlZCwgYW5kIHRoaXMKLS8vIGlzIGRlbW9uc3RyYXRl
ZCBjb3JyZWN0bHkuCiBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm1hcmtlckVsZW1lbnQuZ2V0QXR0
cmlidXRlKCdvcmllbnQnKSIsICJBVVRPLVNUQVJULVJFVkVSU0UiKTsKLXNob3VsZEJlKCJtYXJr
ZXJFbGVtZW50Lm9yaWVudFR5cGUuYmFzZVZhbCIsICJTVkdNYXJrZXJFbGVtZW50LlNWR19NQVJL
RVJfT1JJRU5UX0FOR0xFIik7CitzaG91bGRCZSgibWFya2VyRWxlbWVudC5vcmllbnRUeXBlLmJh
c2VWYWwiLCAiU1ZHTWFya2VyRWxlbWVudC5TVkdfTUFSS0VSX09SSUVOVF9VTktOT1dOIik7CiAK
IHNob3VsZE5vdFRocm93KCJtYXJrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnb3JpZW50JywgJ0FV
VE8nKSIpOwogc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZXJFbGVtZW50LmdldEF0dHJpYnV0
ZSgnb3JpZW50JykiLCAiQVVUTyIpOwotc2hvdWxkQmUoIm1hcmtlckVsZW1lbnQub3JpZW50VHlw
ZS5iYXNlVmFsIiwgIlNWR01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9PUklFTlRfQU5HTEUiKTsg
CitzaG91bGRCZSgibWFya2VyRWxlbWVudC5vcmllbnRUeXBlLmJhc2VWYWwiLCAiU1ZHTWFya2Vy
RWxlbWVudC5TVkdfTUFSS0VSX09SSUVOVF9VTktOT1dOIik7IAogCiBkZWJ1ZygiIik7CiBkZWJ1
ZygiU3dpdGNoIGJhY2sgdG8gJ2F1dG8nIHZhbHVlIik7CiBzaG91bGRCZSgibWFya2VyRWxlbWVu
dC5vcmllbnRUeXBlLmJhc2VWYWwgPSBTVkdNYXJrZXJFbGVtZW50LlNWR19NQVJLRVJfT1JJRU5U
X0FVVE8iLCAiU1ZHTWFya2VyRWxlbWVudC5TVkdfTUFSS0VSX09SSUVOVF9BVVRPIik7Ci1zaG91
bGRCZSgibWFya2VyRWxlbWVudC5vcmllbnRBbmdsZS5iYXNlVmFsLnZhbHVlIiwgIjEwIik7Ci1z
aG91bGRCZSgibWFya2VyRWxlbWVudC5vcmllbnRBbmdsZS5iYXNlVmFsLnVuaXRUeXBlIiwgIlNW
R0FuZ2xlLlNWR19BTkdMRVRZUEVfREVHIik7CitzaG91bGRCZSgibWFya2VyRWxlbWVudC5vcmll
bnRBbmdsZS5iYXNlVmFsLnZhbHVlIiwgIjAiKTsKK3Nob3VsZEJlKCJtYXJrZXJFbGVtZW50Lm9y
aWVudEFuZ2xlLmJhc2VWYWwudW5pdFR5cGUiLCAiU1ZHQW5nbGUuU1ZHX0FOR0xFVFlQRV9VTlNQ
RUNJRklFRCIpOwogc2hvdWxkQmUoIm1hcmtlckVsZW1lbnQub3JpZW50VHlwZS5iYXNlVmFsIiwg
IlNWR01hcmtlckVsZW1lbnQuU1ZHX01BUktFUl9PUklFTlRfQVVUTyIpOwogc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJtYXJrZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnb3JpZW50JykiLCAiYXV0byIp
OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>