<?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>221834</bug_id>
          
          <creation_ts>2021-02-12 11:36:51 -0800</creation_ts>
          <short_desc>enum LengthType -&gt; enum class LengthType</short_desc>
          <delta_ts>2021-02-12 13:51:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>221744</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>rego</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1728698</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-12 11:36:51 -0800</bug_when>
    <thetext>enum LengthType -&gt; enum class LengthType</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728706</commentid>
    <comment_count>1</comment_count>
      <attachid>420158</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-12 11:47:37 -0800</bug_when>
    <thetext>Created attachment 420158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728712</commentid>
    <comment_count>2</comment_count>
      <attachid>420158</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-12 11:59:36 -0800</bug_when>
    <thetext>Comment on attachment 420158
Patch

rs=me, but get it compiling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728719</commentid>
    <comment_count>3</comment_count>
      <attachid>420160</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-12 12:14:57 -0800</bug_when>
    <thetext>Created attachment 420160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728726</commentid>
    <comment_count>4</comment_count>
      <attachid>420164</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-12 12:25:47 -0800</bug_when>
    <thetext>Created attachment 420164
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728751</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-12 13:31:47 -0800</bug_when>
    <thetext>Committed r272805: &lt;https://commits.webkit.org/r272805&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420164.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728752</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-12 13:32:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/74289873&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728765</commentid>
    <comment_count>7</comment_count>
      <attachid>420164</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-12 13:51:32 -0800</bug_when>
    <thetext>Comment on attachment 420164
Patch for committing

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

&gt; Source/WebCore/ChangeLog:24
&gt; +        iPhoneOS14.2.sdk/usr/include/MacTypes.h:193 has:
&gt; +
&gt; +        typedef SInt32 Fixed;
&gt; +
&gt; +        but we have:
&gt; +
&gt; +        enum LengthType {
&gt; +            ... Fixed ...
&gt; +        }
&gt; +
&gt; +        This leads to: error: reference to &apos;Fixed&apos; is ambiguous
&gt; +
&gt; +        Unfortunately, this error occurs in
&gt; +        /System/Library/Frameworks/CoreText.framework/Headers/SFNTLayoutTypes.h,
&gt; +        which means we can&apos;t modify the error site to qualify the name. Therefore,
&gt; +        the best solution is to turn enum LengthType into enum class LengthType.
&gt; +        This is in accordance with WebKit&apos;s style guide.

This is only an issue if someone does:

    using namespace WebCore;

Then later includes SFNTLayoutTypes.h.

While this big enum class change is fine, another fix would be to reduce use of &quot;using namespace WebCore&quot; or technically to find the *incorrect* use of it, because it’s not correct to include a system framework after that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420158</attachid>
            <date>2021-02-12 11:47:37 -0800</date>
            <delta_ts>2021-02-12 12:34:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221834-20210212114736.patch</filename>
            <type>text/plain</type>
            <size>180366</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjcxY2Q3MWY0MTk0ZmVl
ZDM0NjQwMTZkZDFkOTMwMTY5MDBlNGIxNi4uY2ZlYTU2OTdkZmY2ODU2ZGVmZTVlZmE5M2YxZmVi
MzJkMDljMzI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2OSBAQAorMjAyMS0wMi0xMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIGVudW0gTGVu
Z3RoVHlwZSAtPiBlbnVtIGNsYXNzIExlbmd0aFR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGlQaG9uZU9TMTQuMi5zZGsvdXNyL2luY2x1ZGUvTWFj
VHlwZXMuaDoxOTMgaGFzOgorCisgICAgICAgIHR5cGVkZWYgU0ludDMyIEZpeGVkOworCisgICAg
ICAgIGJ1dCB3ZSBoYXZlOgorCisgICAgICAgIGVudW0gTGVuZ3RoVHlwZSB7CisgICAgICAgICAg
ICAuLi4gRml4ZWQgLi4uCisgICAgICAgIH0KKworICAgICAgICBUaGlzIGxlYWRzIHRvOiBlcnJv
cjogcmVmZXJlbmNlIHRvICdGaXhlZCcgaXMgYW1iaWd1b3VzCisKKyAgICAgICAgVW5mb3J0dW5h
dGVseSwgdGhpcyBlcnJvciBvY2N1cnMgaW4KKyAgICAgICAgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvU0ZOVExheW91dFR5cGVzLmgsCisgICAg
ICAgIHdoaWNoIG1lYW5zIHdlIGNhbid0IG1vZGlmeSB0aGUgZXJyb3Igc2l0ZSB0byBxdWFsaWZ5
IHRoZSBuYW1lLiBUaGVyZWZvcmUsCisgICAgICAgIHRoZSBiZXN0IHNvbHV0aW9uIGlzIHRvIHR1
cm4gZW51bSBMZW5ndGhUeXBlIGludG8gZW51bSBjbGFzcyBMZW5ndGhUeXBlLgorICAgICAgICBU
aGlzIGlzIGluIGFjY29yZGFuY2Ugd2l0aCBXZWJLaXQncyBzdHlsZSBndWlkZS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBhbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKiBjc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGhTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUpOgorICAgICAgICAqIGNzcy9DU1NCYXNpY1No
YXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zm
c2V0KToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDYWxjUHJpbWl0aXZlVmFsdWVOb2RlOjpjcmVhdGVDYWxjRXhwcmVzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDU1MpOgorICAgICAgICAqIGNzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5n
dGggY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29udmVydFRvTGVuZ3RoIGNvbnN0
KToKKyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUXVhZCk6CisgICAgICAgICogY3NzL0xl
bmd0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpmbG9hdFZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvTGVu
Z3RoRnVuY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjptaW5pbXVtVmFsdWVGb3JMZW5ndGgp
OgorICAgICAgICAqIGNzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udmVydFRvRmxvYXRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3Jtc0Zv
clZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zbGF0ZUZvclZhbHVlKToKKyAgICAgICAg
KiBkaXNwbGF5L2Nzcy9EaXNwbGF5RmlsbExheWVySW1hZ2VHZW9tZXRyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpjYWxjdWxhdGVJbWFnZUludHJpbnNpY0RpbWVuc2lvbnMpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
dXBkYXRlTGF5b3V0SWZEaW1lbnNpb25zT3V0T2ZEYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y3Jl
YXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJp
Y0ZpZWxkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZU51bWVyaWNGaWVs
ZEVsZW1lbnQ6OmFkanVzdE1pbldpZHRoIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9E
YXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVU
aW1lU3ltYm9saWNGaWVsZEVsZW1lbnQ6OmFkanVzdE1pbldpZHRoIGNvbnN0KToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAg
ICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6YnVpbGRMYXlvdXRUcmVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveCk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwZXJm
b3JtRml4ZWRXaWR0aEF1dG9TaXplKToKKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUm9vdE1hcmdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcnNlY3Rpb25PYnNlcnZlcjo6cm9vdE1hcmdpbiBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpibGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5n
dGguaDoKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6Okxlbmd0aDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6c2V0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc0F1dG8gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoOjppc0ZpeGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0
aDo6aXNNYXhDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNNaW5D
b250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNQZXJjZW50IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNSZWxhdGl2ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZW5ndGg6OmlzVW5kZWZpbmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okxlbmd0aDo6aXNDYWxjdWxhdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
aXNMZWdhY3lJbnRyaW5zaWMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc0lu
dHJpbnNpYyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzRmlsbEF2YWlsYWJs
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzRml0Q29udGVudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzTWluSW50cmluc2ljIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6
TGVuZ3RoQm94KToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaGVtZTo6bWluaW11bUNvbnRyb2xTaXplIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Y29tcHV0ZUlu
dHJpbnNpY0RpbWVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OnNpemVGcm9tTlNDb250cm9sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaGVt
ZU1hYzo6bWluaW11bUNvbnRyb2xTaXplIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvQXV0
b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91dDo6cmVj
YWxjQ29sdW1uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVj
dGl2ZUxvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRvVGFibGVMYXlvdXQ6Omxh
eW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rml4ZWRUYWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkpOgorICAgICAgICAq
IHJlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjYWxjdWxhdGVHcmlkVHJhY2tTaXplIGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzTm9uQmxvY2tzT3JOb25GaXhlZEhlaWdodExpc3RJdGVtcyk6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRCUE1XaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxXaWR0aEluRnJh
Z21lbnRCeU1pbk1heCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnN0
cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmFkanVzdEJvcmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhG
b3JCb3hTaXppbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRl
TG9naWNhbFdpZHRoSW5GcmFnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OnNpemVzTG9naWNhbFdpZHRoVG9GaXRDb250ZW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdp
bnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhl
aWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aFVzaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQmxvY2tTdGF0aWNEaXN0YW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVz
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9u
ZWRMb2dpY2FsV2lkdGhSZXBsYWNlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFJlcGxhY2VkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFi
bGUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQnV0dG9uOjp1cGRhdGVBbm9ueW1vdXNDaGlsZFN0eWxlIGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YWxsb3dlZENo
aWxkRmxleCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW5jbHVkZU5vbkZpeGVkSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVC
b3g6OmNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6Om1haW5TaXplRm9yUGVyY2VudGFnZVJlc29sdXRp
b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUZ1bGxTY3JlZW5TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpsYXlvdXRTaGFk
b3dDb250ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpoYXNOb25aZXJvVHJhbnNmb3JtT3JpZ2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjp1cGRh
dGVNYXJnaW5zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OmFkanVzdElubmVyU3R5bGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVDZWxsOjpsb2dpY2FsV2lkdGhGcm9tQ29sdW1ucyBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRh
dGVMb2dpY2FsSGVpZ2h0Rm9yQ2VsbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9s
TXVsdGlMaW5lOjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc2V0
T3ZlcnJpZGRlbkhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmU6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNvY29hOjphZGp1c3RBcHBsZVBheUJ1
dHRvblN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6c2V0U2l6ZUZyb21Gb250IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RMaXN0QnV0dG9uU3R5
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmFkanVzdE1lbnVM
aXN0U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmFkanVz
dE1lbnVMaXN0QnV0dG9uU3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkRGVj
b3JhdGlvblBhcnRTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1h
Yzo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHlsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uU3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmFk
anVzdFNsaWRlclRodW1iU2l6ZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRv
U2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVz
dFRleHROb2RlU2l6ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZTo6dXBkYXRl
Q29tcHV0ZWRMZW5ndGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVJhZGl1czo6QmFzaWNTaGFwZVJhZGl1cyk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkJvcmRlckRhdGE6OkJvcmRlckRhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9G
aWxsTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjppbml0aWFsRmlsbFlQb3NpdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWRUcmFja1NpemU6OkdyaWRUcmFja1NpemUpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UGFnZVNj
YWxlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRXb3JkU3Bh
Y2luZyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVzZXRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmluaXRpYWxTaGFwZU1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6aW5pdGlhbEJvcmRlclJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6aW5pdGlhbE9iamVjdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjppbml0aWFsV29yZFNwYWNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmluaXRpYWxNYXhTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFs
TWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsUGFkZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxaZXJvTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsT25lTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhCYXNpcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6aW5pdGlhbE1hcnF1ZWVJbmNyZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5YKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjppbml0aWFsVHJhbnNmb3JtT3JpZ2luWSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6aW5pdGlhbFNwZWNpZmllZExpbmVIZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxTY3JvbGxNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxTY3JvbGxQYWRkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9Db2x1bW5zKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9Sb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRCb3JkZXJSYWRpdXMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVk
SW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TdHlsZVJlZmxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVmbGVjdGlv
bjo6U3R5bGVSZWZsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJy
b3VuZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTdXJyb3VuZERhdGE6OlN0eWxl
U3Vycm91bmREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXJGdWxsU2NyZWVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVy
OjpGdWxsU2NyZWVuOjpjcmVhdGVQbGFjZWhvbGRlcik6CisgICAgICAgICogc3R5bGUvU3R5bGVB
ZGp1c3Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6YWRkSW50cmluc2ljTWFyZ2lu
cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QWRqdXN0ZXI6OmFkanVzdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QWRqdXN0ZXI6OmFkanVzdEZvclRleHRBdXRvc2l6aW5n
KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoT3JBdXRvKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3Ro
U2l6aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0TGVuZ3RoTWF4U2l6aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VG9SYWRpdXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9u
Q29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpj
cmVhdGVHcmlkVHJhY2tCcmVhZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KToKKyAgICAgICAgKiBzdHlsZS9T
dHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBcHBseVByb3Bl
cnR5Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAqIHN0
eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyU3RhdGU6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAqIHN0eWxlL1N0eWxl
UmVzb2x2ZUZvckRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZl
Rm9yRG9jdW1lbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JGb250UmF3KToKKyAgICAgICAg
KiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50
OjppbnRyaW5zaWNXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50
OjppbnRyaW5zaWNIZWlnaHQgY29uc3QpOgorCiAyMDIxLTAyLTEyICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IFdpbmRvd3MgYnVpbGQgYWZ0
ZXIgcjI3Mjc3MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3Bl
cnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFu
aW1hdGlvbi5jcHAKaW5kZXggYTQ0ZmE1MWFkNDgzMGY3NTYxOTE1ZDNjN2IwMjA4YjM4ZTYwNjEy
Mi4uZjBjMGZjOWRhYzM0NjIxNWViNDRiNGU5ZjU1NDUxZDJiYmEwODM3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0yMTQs
MTAgKzIxNCwxMCBAQCBzdGF0aWMgUmVmUHRyPFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbj4g
YmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbAogCiAgICAgUmVmUHRyPFRyYW5z
bGF0ZVRyYW5zZm9ybU9wZXJhdGlvbj4gaWRlbnRpdHk7CiAgICAgaWYgKCFmcm9tKSB7Ci0gICAg
ICAgIGlkZW50aXR5ID0gVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3Ro
KDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgdG8tPnR5cGUo
KSk7CisgICAgICAgIGlkZW50aXR5ID0gVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVh
dGUoTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZp
eGVkKSwgTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSwgdG8tPnR5cGUoKSk7CiAgICAgICAg
IGZyb20gPSBpZGVudGl0eS5nZXQoKTsKICAgICB9IGVsc2UgaWYgKCF0bykgewotICAgICAgICBp
ZGVudGl0eSA9IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgwLCBG
aXhlZCksIExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCksIGZyb20tPnR5cGUoKSk7
CisgICAgICAgIGlkZW50aXR5ID0gVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUo
TGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVk
KSwgTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSwgZnJvbS0+dHlwZSgpKTsKICAgICAgICAg
dG8gPSBpZGVudGl0eS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1No
YXBlRnVuY3Rpb25zLmNwcAppbmRleCBiMGQ4YmQxMTZmMjllNjI2YzE4NDZkZTBlYjA1MzAxZGRk
MWY5YTM0Li4xYWFhZTk2YjE5NWJiMWU0M2EyYzExZWUxYTU5NTcxZDE3OWQxYjg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCkBAIC0xNDQsNyArMTQ0LDcg
QEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGMKIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRUb0xl
bmd0aFNpemUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEs
IGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlKQotICAg
ICAgICByZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9OworICAgICAgICByZXR1
cm4geyB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9
OwogCiAgICAgYXV0byYgcGFpciA9ICp2YWx1ZS0+cGFpclZhbHVlKCk7CiAgICAgcmV0dXJuIHsg
Y29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLmZpcnN0KCkpLCBjb252ZXJ0VG9M
ZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXIuc2Vjb25kKCkpIH07CkBAIC0xNTMsNyArMTUzLDcg
QEAgc3RhdGljIExlbmd0aFNpemUgY29udmVydFRvTGVuZ3RoU2l6ZShjb25zdCBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW8KIHN0YXRpYyBCYXNpY1NoYXBlQ2VudGVyQ29vcmRp
bmF0ZSBjb252ZXJ0VG9DZW50ZXJDb29yZGluYXRlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEmIGNvbnZlcnNpb25EYXRhLCBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUpCiB7CiAgICAg
Q1NTVmFsdWVJRCBrZXl3b3JkID0gQ1NTVmFsdWVUb3A7Ci0gICAgTGVuZ3RoIG9mZnNldCB7IDAs
IEZpeGVkIH07CisgICAgTGVuZ3RoIG9mZnNldCB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH07CiAg
ICAgaWYgKCF2YWx1ZSkKICAgICAgICAga2V5d29yZCA9IENTU1ZhbHVlQ2VudGVyOwogICAgIGVs
c2UgaWYgKHZhbHVlLT5pc1ZhbHVlSUQoKSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMgQmFz
aWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRpbmF0ZShjb25zdCBD
U1NUb0xlbmd0aENvbgogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlQ2VudGVyOgog
ICAgICAgICBkaXJlY3Rpb24gPSBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZTo6VG9wTGVmdDsK
LSAgICAgICAgb2Zmc2V0ID0gTGVuZ3RoKDUwLCBQZXJjZW50KTsKKyAgICAgICAgb2Zmc2V0ID0g
TGVuZ3RoKDUwLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jh
c2ljU2hhcGVzLmNwcAppbmRleCBjNzVlNmVkYjJkZWRmNTFiNDkxMTU0MWQ3MTQwZWYxZjgxMjFk
YzJjLi43ZWU4YWVkMWFjMzIyNGQ3YjdjYzVkMDc3Y2M2MjZkZTE3NGIwNTJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKQEAgLTY1LDE5ICs2NSwxOSBAQCBzdGF0aWMgUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KENTU1By
aW1pdGl2ZVZhbHVlKgogCiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKTsKICAgICBpZiAoIWFtb3VudCkKLSAgICAgICAgYW1vdW50ID0gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKExlbmd0aChzaWRlID09IENTU1ZhbHVlQ2VudGVyID8gNTAgOiAwLCBQ
ZXJjZW50KSk7CisgICAgICAgIGFtb3VudCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShMZW5n
dGgoc2lkZSA9PSBDU1NWYWx1ZUNlbnRlciA/IDUwIDogMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCkp
OwogICAgIAogICAgIGlmIChzaWRlID09IENTU1ZhbHVlQ2VudGVyKQogICAgICAgICBzaWRlID0g
ZGVmYXVsdFNpZGU7CiAgICAgZWxzZSBpZiAoKHNpZGUgPT0gQ1NTVmFsdWVSaWdodCB8fCBzaWRl
ID09IENTU1ZhbHVlQm90dG9tKQogICAgICAgICAmJiBhbW91bnQtPmlzUGVyY2VudGFnZSgpKSB7
CiAgICAgICAgIHNpZGUgPSBkZWZhdWx0U2lkZTsKLSAgICAgICAgYW1vdW50ID0gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKExlbmd0aCgxMDAgLSBhbW91bnQtPmZsb2F0VmFsdWUoKSwgUGVyY2Vu
dCkpOworICAgICAgICBhbW91bnQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoTGVuZ3RoKDEw
MCAtIGFtb3VudC0+ZmxvYXRWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KSk7CiAgICAgfSBl
bHNlIGlmIChhbW91bnQtPmlzTGVuZ3RoKCkgJiYgIWFtb3VudC0+ZmxvYXRWYWx1ZSgpKSB7CiAg
ICAgICAgIGlmIChzaWRlID09IENTU1ZhbHVlUmlnaHQgfHwgc2lkZSA9PSBDU1NWYWx1ZUJvdHRv
bSkKLSAgICAgICAgICAgIGFtb3VudCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShMZW5ndGgo
MTAwLCBQZXJjZW50KSk7CisgICAgICAgICAgICBhbW91bnQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoTGVuZ3RoKDEwMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBhbW91bnQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoTGVuZ3RoKDAsIFBl
cmNlbnQpKTsKKyAgICAgICAgICAgIGFtb3VudCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShM
ZW5ndGgoMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpOwogICAgICAgICBzaWRlID0gZGVmYXVsdFNp
ZGU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRp
b25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
aW5kZXggMjAxOTU5NzUzY2VlZjhhZDMzMGVmNzA0YmFmYmFkODljNWIwNWNjNy4uZTIxMWFlZDFm
ZTM5NDViMzVmZjZjM2Y1Y2Q0OTRjOWFkOGJiYWQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxDYWxjRXhwcmVzc2lvbk5vZGU+IENTU0NhbGNQcmltaXRpdmVWYWx1ZU5vZGU6OmNyZWF0ZUNh
bGNFeHByZXNzCiAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpOdW1iZXI6CiAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5mbG9hdFZh
bHVlKCkpOwogICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TGVuZ3RoOgotICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1fdmFsdWUtPmNv
bXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKSwgV2ViQ29yZTo6Rml4ZWQpKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aChtX3Zh
bHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSksIExlbmd0aFR5cGU6OkZp
eGVkKSk7CiAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50OgogICAgIGNhc2Ug
Q2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudExlbmd0aDogewogICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obV92YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZp
eGVkRmxvYXRDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSk7
CkBAIC0yMDI3LDIwICsyMDI3LDIwIEBAIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25O
b2RlPiBjcmVhdGVDU1MoY29uc3QgQ2FsY0V4cHJlc3Npb25Ob2RlJiBub2RlLCBjCiBzdGF0aWMg
UmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gY3JlYXRlQ1NTKGNvbnN0IExlbmd0aCYgbGVu
Z3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChsZW5ndGgudHlw
ZSgpKSB7Ci0gICAgY2FzZSBQZXJjZW50OgotICAgIGNhc2UgRml4ZWQ6CisgICAgY2FzZSBMZW5n
dGhUeXBlOjpQZXJjZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CiAgICAgICAgIHJl
dHVybiBDU1NDYWxjUHJpbWl0aXZlVmFsdWVOb2RlOjpjcmVhdGUoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShsZW5ndGgsIHN0eWxlKSk7Ci0gICAgY2FzZSBDYWxjdWxhdGVkOgorICAgIGNhc2Ug
TGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZDoKICAgICAgICAgcmV0dXJuIGNyZWF0ZUNTUyhsZW5ndGgu
Y2FsY3VsYXRpb25WYWx1ZSgpLmV4cHJlc3Npb24oKSwgc3R5bGUpOwotICAgIGNhc2UgQXV0bzoK
LSAgICBjYXNlIEludHJpbnNpYzoKLSAgICBjYXNlIE1pbkludHJpbnNpYzoKLSAgICBjYXNlIE1p
bkNvbnRlbnQ6Ci0gICAgY2FzZSBNYXhDb250ZW50OgotICAgIGNhc2UgRmlsbEF2YWlsYWJsZToK
LSAgICBjYXNlIEZpdENvbnRlbnQ6Ci0gICAgY2FzZSBSZWxhdGl2ZToKLSAgICBjYXNlIFVuZGVm
aW5lZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkF1dG86CisgICAgY2FzZSBMZW5ndGhUeXBlOjpJ
bnRyaW5zaWM6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5JbnRyaW5zaWM6CisgICAgY2FzZSBM
ZW5ndGhUeXBlOjpNaW5Db250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWF4Q29udGVudDoK
KyAgICBjYXNlIExlbmd0aFR5cGU6OkZpbGxBdmFpbGFibGU6CisgICAgY2FzZSBMZW5ndGhUeXBl
OjpGaXRDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6UmVsYXRpdmU6CisgICAgY2FzZSBM
ZW5ndGhUeXBlOjpVbmRlZmluZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCmluZGV4IDZmN2FlZmIxNzY4NjFlOGE5NmQzNTVkYzQ2ZTEyZmY2ZmNjOTZmYzMuLjRk
ZGQxNDY1ZDkwMDZkOGZhNzI3Y2RhZjQxZGZkODc2NmI4YTdlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMjc5LDI2ICsyNzksMjYgQEAgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3QKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIHN3
aXRjaCAobGVuZ3RoLnR5cGUoKSkgewotICAgIGNhc2UgQXV0bzoKLSAgICBjYXNlIEludHJpbnNp
YzoKLSAgICBjYXNlIE1pbkludHJpbnNpYzoKLSAgICBjYXNlIE1pbkNvbnRlbnQ6Ci0gICAgY2Fz
ZSBNYXhDb250ZW50OgotICAgIGNhc2UgRmlsbEF2YWlsYWJsZToKLSAgICBjYXNlIEZpdENvbnRl
bnQ6Ci0gICAgY2FzZSBQZXJjZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6QXV0bzoKKyAgICBj
YXNlIExlbmd0aFR5cGU6OkludHJpbnNpYzoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkludHJp
bnNpYzoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhU
eXBlOjpNYXhDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6RmlsbEF2YWlsYWJsZToKKyAg
ICBjYXNlIExlbmd0aFR5cGU6OkZpdENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpQZXJj
ZW50OgogICAgICAgICBpbml0KGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEZp
eGVkOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CiAgICAgICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfUFgpOwogICAgICAgICBtX3ZhbHVlLm51bSA9IGFkanVz
dEZsb2F0Rm9yQWJzb2x1dGVab29tKGxlbmd0aC52YWx1ZSgpLCBzdHlsZSk7CiAgICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENhbGN1bGF0ZWQ6IHsKKyAgICBjYXNlIExlbmd0aFR5cGU6OkNhbGN1
bGF0ZWQ6IHsKICAgICAgICAgaW5pdChDU1NDYWxjVmFsdWU6OmNyZWF0ZShsZW5ndGguY2FsY3Vs
YXRpb25WYWx1ZSgpLCBzdHlsZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ug
UmVsYXRpdmU6Ci0gICAgY2FzZSBVbmRlZmluZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpSZWxh
dGl2ZToKKyAgICBjYXNlIExlbmd0aFR5cGU6OlVuZGVmaW5lZDoKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMzIsNDYgKzMzMiw0NiBA
QCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoU3RhdGljQ1NTVmFsdWVUYWcs
IGRvdWJsZSBudW0sIENTU1VuaXRUeXBlCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KGNv
bnN0IExlbmd0aCYgbGVuZ3RoKQogewogICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewotICAg
IGNhc2UgQXV0bzoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkF1dG86CiAgICAgICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOwogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIFdlYkNv
cmU6OkZpeGVkOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CiAgICAgICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfUFgpOwogICAgICAgICBtX3ZhbHVlLm51bSA9
IGxlbmd0aC52YWx1ZSgpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJbnRyaW5zaWM6Cisg
ICAgY2FzZSBMZW5ndGhUeXBlOjpJbnRyaW5zaWM6CiAgICAgICAgIHNldFByaW1pdGl2ZVVuaXRU
eXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOwogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUludHJpbnNpYzsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWluSW50cmlu
c2ljOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWluSW50cmluc2ljOgogICAgICAgICBzZXRQcmlt
aXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVNaW5JbnRyaW5zaWM7CiAgICAgICAgIHJldHVybjsKLSAgICBj
YXNlIE1pbkNvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5Db250ZW50OgogICAgICAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNaW5Db250ZW50OwogICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBNYXhDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWF4Q29udGVudDoK
ICAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTWF4Q29udGVudDsKICAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgRmlsbEF2YWlsYWJsZToKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZp
bGxBdmFpbGFibGU6CiAgICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpD
U1NfVkFMVUVfSUQpOwogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdlYmtpdEZp
bGxBdmFpbGFibGU7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEZpdENvbnRlbnQ6CisgICAg
Y2FzZSBMZW5ndGhUeXBlOjpGaXRDb250ZW50OgogICAgICAgICBzZXRQcmltaXRpdmVVbml0VHlw
ZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVGaXRDb250ZW50OwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBQZXJjZW50Ogor
ICAgIGNhc2UgTGVuZ3RoVHlwZTo6UGVyY2VudDoKICAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5
cGUoQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICAgICAgQVNTRVJUKHN0ZDo6aXNm
aW5pdGUobGVuZ3RoLnBlcmNlbnQoKSkpOwogICAgICAgICBtX3ZhbHVlLm51bSA9IGxlbmd0aC5w
ZXJjZW50KCk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIENhbGN1bGF0ZWQ6Ci0gICAgY2Fz
ZSBSZWxhdGl2ZToKLSAgICBjYXNlIFVuZGVmaW5lZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkNh
bGN1bGF0ZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpSZWxhdGl2ZToKKyAgICBjYXNlIExlbmd0
aFR5cGU6OlVuZGVmaW5lZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC01NDEsNyArNTQxLDcgQEAgdGVtcGxhdGU8PiB1bnNpZ25lZCBD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNp
b24KIAogdGVtcGxhdGU8PiBMZW5ndGggQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgo
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIExlbmd0aChjbGFtcFRvPGZsb2F0Pihjb21wdXRlTGVuZ3RoRG91YmxlKGNv
bnZlcnNpb25EYXRhKSwgbWluVmFsdWVGb3JDc3NMZW5ndGgsIG1heFZhbHVlRm9yQ3NzTGVuZ3Ro
KSwgRml4ZWQpOworICAgIHJldHVybiBMZW5ndGgoY2xhbXBUbzxmbG9hdD4oY29tcHV0ZUxlbmd0
aERvdWJsZShjb252ZXJzaW9uRGF0YSksIG1pblZhbHVlRm9yQ3NzTGVuZ3RoLCBtYXhWYWx1ZUZv
ckNzc0xlbmd0aCksIExlbmd0aFR5cGU6OkZpeGVkKTsKIH0KIAogdGVtcGxhdGU8PiBzaG9ydCBD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhJiBjb252ZXJzaW9uRGF0YSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCmluZGV4IDQ1NWY5YjczOGJhYmVkZDM1MDBhNTQzNTIy
ZGVhMzAwMzIwYjdiNGUuLmM3OGQ2MjljYzg0NDQ1ZTExZWQ2YTQ4ZWQwYjNiMzc5YTYzMzhjMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaApA
QCAtNDU1NywxOCArNDU1NywxOCBAQCBpbmxpbmUgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29u
dmVydGluZ1RvTGVuZ3RoUmVxdWlyZXNOb25OdWxsU3R5bGUoaW50IGxlbmd0aAogdGVtcGxhdGU8
aW50IHN1cHBvcnRlZD4gTGVuZ3RoIENTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJ0VG9MZW5ndGgo
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpIGNvbnN0CiB7
CiAgICAgaWYgKGlzRm9udFJlbGF0aXZlTGVuZ3RoKCkgJiYgY29udmVydGluZ1RvTGVuZ3RoUmVx
dWlyZXNOb25OdWxsU3R5bGUoc3VwcG9ydGVkKSAmJiAhY29udmVyc2lvbkRhdGEuc3R5bGUoKSkK
LSAgICAgICAgcmV0dXJuIExlbmd0aChVbmRlZmluZWQpOworICAgICAgICByZXR1cm4gTGVuZ3Ro
KExlbmd0aFR5cGU6OlVuZGVmaW5lZCk7CiAgICAgaWYgKChzdXBwb3J0ZWQgJiBGaXhlZEludGVn
ZXJDb252ZXJzaW9uKSAmJiBpc0xlbmd0aCgpKQogICAgICAgICByZXR1cm4gY29tcHV0ZUxlbmd0
aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKICAgICBpZiAoKHN1cHBvcnRlZCAmIEZpeGVkRmxv
YXRDb252ZXJzaW9uKSAmJiBpc0xlbmd0aCgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoKGNvbXB1
dGVMZW5ndGg8ZG91YmxlPihjb252ZXJzaW9uRGF0YSksIEZpeGVkKTsKKyAgICAgICAgcmV0dXJu
IExlbmd0aChjb21wdXRlTGVuZ3RoPGRvdWJsZT4oY29udmVyc2lvbkRhdGEpLCBMZW5ndGhUeXBl
OjpGaXhlZCk7CiAgICAgaWYgKChzdXBwb3J0ZWQgJiBQZXJjZW50Q29udmVyc2lvbikgJiYgaXNQ
ZXJjZW50YWdlKCkpCi0gICAgICAgIHJldHVybiBMZW5ndGgoZG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoZG91YmxlVmFsdWUoKSwgTGVuZ3RoVHlwZTo6UGVy
Y2VudCk7CiAgICAgaWYgKChzdXBwb3J0ZWQgJiBBdXRvQ29udmVyc2lvbikgJiYgdmFsdWVJRCgp
ID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgcmV0dXJuIExlbmd0aChBdXRvKTsKKyAgICAgICAg
cmV0dXJuIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKTsKICAgICBpZiAoKHN1cHBvcnRlZCAmIENh
bGN1bGF0ZWRDb252ZXJzaW9uKSAmJiBpc0NhbGN1bGF0ZWQoKSkKICAgICAgICAgcmV0dXJuIExl
bmd0aChjc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb252ZXJzaW9uRGF0
YSkpOwotICAgIHJldHVybiBMZW5ndGgoVW5kZWZpbmVkKTsKKyAgICByZXR1cm4gTGVuZ3RoKExl
bmd0aFR5cGU6OlVuZGVmaW5lZCk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShCdWZmZXJlZFJlbmRlcmluZyBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1RvU3R5bGVNYXAuY3BwCmluZGV4IDI0NjI2NGZlNTRlMWRhZTFmNmE0M2MxODg5Nzhl
MzliMjI3M2Q3NjYuLmI4YWQ3ZThjYjg5ZDE1YTdkZGU5N2RiMzQwNjJlNDAyNTZiOGY3MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKQEAgLTU1NywyMSArNTU3LDIxIEBAIHZv
aWQgQ1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZShDU1NWYWx1ZSYgdmFsdWUs
IE5pbmVQaWVjZUltYWdlJiBpbWFnCiAgICAgTGVuZ3RoQm94IGJveDsKICAgICBRdWFkKiBzbGlj
ZXMgPSBib3JkZXJJbWFnZVNsaWNlLnNsaWNlcygpOwogICAgIGlmIChzbGljZXMtPnRvcCgpLT5p
c1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCkt
PmRvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xp
Y2VzLT50b3AoKS0+ZG91YmxlVmFsdWUoKSwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CiAgICAgZWxz
ZQotICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+aW50VmFsdWUoQ1NT
VW5pdFR5cGU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC50b3AoKSA9IExlbmd0
aChzbGljZXMtPnRvcCgpLT5pbnRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiksIExlbmd0
aFR5cGU6OkZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50YWdlKCkp
Ci0gICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5kb3VibGVW
YWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+
Ym90dG9tKCktPmRvdWJsZVZhbHVlKCksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgIGVsc2UK
LSAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Zmxv
YXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAgICAgYm94LmJv
dHRvbSgpID0gTGVuZ3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+ZmxvYXRWYWx1ZShDU1NVbml0
VHlwZTo6Q1NTX05VTUJFUiksIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5s
ZWZ0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNsaWNl
cy0+bGVmdCgpLT5kb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmxlZnQoKSA9
IExlbmd0aChzbGljZXMtPmxlZnQoKS0+ZG91YmxlVmFsdWUoKSwgTGVuZ3RoVHlwZTo6UGVyY2Vu
dCk7CiAgICAgZWxzZQotICAgICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgp
LT5pbnRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAgICAgYm94
LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+aW50VmFsdWUoQ1NTVW5pdFR5cGU6OkNT
U19OVU1CRVIpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+cmlnaHQoKS0+
aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmln
aHQoKS0+ZG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5yaWdodCgpID0gTGVu
Z3RoKHNsaWNlcy0+cmlnaHQoKS0+ZG91YmxlVmFsdWUoKSwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7
CiAgICAgZWxzZQotICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCkt
PmludFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAgICAgICBib3gu
cmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmludFZhbHVlKENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgIGltYWdlLnNldEltYWdlU2xpY2Vz
KGJveCk7CiAKICAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4KQEAgLTU5MywzMCArNTkzLDMwIEBA
IExlbmd0aEJveCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQoQ1NTVmFsdWUm
IHZhbHVlKQogICAgIExlbmd0aEJveCBib3g7IC8vIERlZmF1bHRzIHRvICdhdXRvJyBzbyB3ZSBk
b24ndCBoYXZlIHRvIGhhbmRsZSB0aGF0IGV4cGxpY2l0bHkgYmVsb3cuCiAgICAgUXVhZCogc2xp
Y2VzID0gYm9yZGVyV2lkdGhzLnF1YWRWYWx1ZSgpOwogICAgIGlmIChzbGljZXMtPnRvcCgpLT5p
c051bWJlcigpKQotICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+aW50
VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50
b3AoKS0+aW50VmFsdWUoKSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNs
aWNlcy0+dG9wKCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgo
c2xpY2VzLT50b3AoKS0+ZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKSwg
UGVyY2VudCk7CisgICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5kb3Vi
bGVWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpLCBMZW5ndGhUeXBlOjpQZXJjZW50
KTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRv
KQogICAgICAgICBib3gudG9wKCkgPSBzbGljZXMtPnRvcCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0
aD4oY29udmVyc2lvbkRhdGEpOwogCiAgICAgaWYgKHNsaWNlcy0+cmlnaHQoKS0+aXNOdW1iZXIo
KSkKLSAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgpLT5pbnRWYWx1
ZSgpLCBSZWxhdGl2ZSk7CisgICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmln
aHQoKS0+aW50VmFsdWUoKSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNs
aWNlcy0+cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5yaWdodCgpID0gTGVu
Z3RoKHNsaWNlcy0+cmlnaHQoKS0+ZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5U
QUdFKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmln
aHQoKS0+ZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKSwgTGVuZ3RoVHlw
ZTo6UGVyY2VudCk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdodCgpLT52YWx1ZUlEKCkgIT0g
Q1NTVmFsdWVBdXRvKQogICAgICAgICBib3gucmlnaHQoKSA9IHNsaWNlcy0+cmlnaHQoKS0+Y29t
cHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPmJv
dHRvbSgpLT5pc051bWJlcigpKQotICAgICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoc2xpY2Vz
LT5ib3R0b20oKS0+aW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3guYm90dG9tKCkg
PSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+aW50VmFsdWUoKSwgTGVuZ3RoVHlwZTo6UmVsYXRp
dmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzUGVyY2VudGFnZSgpKQotICAg
ICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+ZG91YmxlVmFsdWUo
Q1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5ib3R0
b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6
Q1NTX1BFUkNFTlRBR0UpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICBlbHNlIGlmIChzbGlj
ZXMtPmJvdHRvbSgpLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICBib3guYm90
dG9tKCkgPSBzbGljZXMtPmJvdHRvbSgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lv
bkRhdGEpOwogCiAgICAgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc051bWJlcigpKQotICAgICAgICBi
b3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5pbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7
CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmludFZhbHVlKCks
IExlbmd0aFR5cGU6OlJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPmxlZnQoKS0+aXNQ
ZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCkt
PmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAg
ICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5kb3VibGVWYWx1ZShDU1NV
bml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICBlbHNl
IGlmIChzbGljZXMtPmxlZnQoKS0+dmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKICAgICAgICAg
Ym94LmxlZnQoKSA9IHNsaWNlcy0+bGVmdCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVy
c2lvbkRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCmluZGV4IDY5
NTMzZWVmMTVjOWU4MzdiN2FkNjExOTNlY2ZmMzlmMzdlYzk3NDMuLmNjMDJhNGI0ZmY3ZTJkNjQy
OTBkYWQwN2MwZmVjZjg3MTAzY2JmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9M
ZW5ndGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlv
bnMuY3BwCkBAIC0zOSwyMCArMzksMjAgQEAgaW50IGludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExl
bmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSkKIExheW91dFVuaXQgdmFsdWVG
b3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKQog
ewogICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewotICAgIGNhc2UgRml4ZWQ6Ci0gICAgY2Fz
ZSBQZXJjZW50OgotICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZp
eGVkOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6UGVyY2VudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6
OkNhbGN1bGF0ZWQ6CiAgICAgICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGVuZ3Ro
LCBtYXhpbXVtVmFsdWUpOwotICAgIGNhc2UgRmlsbEF2YWlsYWJsZToKLSAgICBjYXNlIEF1dG86
CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaWxsQXZhaWxhYmxlOgorICAgIGNhc2UgTGVuZ3RoVHlw
ZTo6QXV0bzoKICAgICAgICAgcmV0dXJuIG1heGltdW1WYWx1ZTsKLSAgICBjYXNlIFJlbGF0aXZl
OgotICAgIGNhc2UgSW50cmluc2ljOgotICAgIGNhc2UgTWluSW50cmluc2ljOgotICAgIGNhc2Ug
TWluQ29udGVudDoKLSAgICBjYXNlIE1heENvbnRlbnQ6Ci0gICAgY2FzZSBGaXRDb250ZW50Ogot
ICAgIGNhc2UgVW5kZWZpbmVkOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6UmVsYXRpdmU6CisgICAg
Y2FzZSBMZW5ndGhUeXBlOjpJbnRyaW5zaWM6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5JbnRy
aW5zaWM6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5Db250ZW50OgorICAgIGNhc2UgTGVuZ3Ro
VHlwZTo6TWF4Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZpdENvbnRlbnQ6CisgICAg
Y2FzZSBMZW5ndGhUeXBlOjpVbmRlZmluZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC02NCwyMiArNjQsMjIgQEAgTGF5b3V0VW5p
dCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVt
VmFsdWUpCiBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBM
YXlvdXRVbml0IG1heGltdW1WYWx1ZSkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsK
LSAgICBjYXNlIEZpeGVkOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CiAgICAgICAgIHJl
dHVybiBsZW5ndGgudmFsdWUoKTsKLSAgICBjYXNlIFBlcmNlbnQ6CisgICAgY2FzZSBMZW5ndGhU
eXBlOjpQZXJjZW50OgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1W
YWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpOwotICAgIGNhc2UgRmlsbEF2YWlsYWJs
ZToKLSAgICBjYXNlIEF1dG86CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaWxsQXZhaWxhYmxlOgor
ICAgIGNhc2UgTGVuZ3RoVHlwZTo6QXV0bzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0PihtYXhpbXVtVmFsdWUpOwotICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAgICBjYXNlIExlbmd0
aFR5cGU6OkNhbGN1bGF0ZWQ6CiAgICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRl
ZFZhbHVlKG1heGltdW1WYWx1ZSk7Ci0gICAgY2FzZSBSZWxhdGl2ZToKLSAgICBjYXNlIEludHJp
bnNpYzoKLSAgICBjYXNlIE1pbkludHJpbnNpYzoKLSAgICBjYXNlIE1pbkNvbnRlbnQ6Ci0gICAg
Y2FzZSBNYXhDb250ZW50OgotICAgIGNhc2UgRml0Q29udGVudDoKLSAgICBjYXNlIFVuZGVmaW5l
ZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlJlbGF0aXZlOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6
SW50cmluc2ljOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWluSW50cmluc2ljOgorICAgIGNhc2Ug
TGVuZ3RoVHlwZTo6TWluQ29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1heENvbnRlbnQ6
CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXRDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6
VW5kZWZpbmVkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQpAQCAtOTAsMjIgKzkwLDIyIEBAIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgo
Y29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKQogZmxvYXQgZmxv
YXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgZmxvYXQgbWF4aW11bVZhbHVl
KQogewogICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewotICAgIGNhc2UgRml4ZWQ6CisgICAg
Y2FzZSBMZW5ndGhUeXBlOjpGaXhlZDoKICAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSgpOwot
ICAgIGNhc2UgUGVyY2VudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6CiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlICogbGVuZ3RoLnBlcmNlbnQo
KSAvIDEwMC4wZik7Ci0gICAgY2FzZSBGaWxsQXZhaWxhYmxlOgotICAgIGNhc2UgQXV0bzoKKyAg
ICBjYXNlIExlbmd0aFR5cGU6OkZpbGxBdmFpbGFibGU6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpB
dXRvOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSk7Ci0g
ICAgY2FzZSBDYWxjdWxhdGVkOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZDoKICAg
ICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZhbHVlKTsK
LSAgICBjYXNlIFJlbGF0aXZlOgotICAgIGNhc2UgSW50cmluc2ljOgotICAgIGNhc2UgTWluSW50
cmluc2ljOgotICAgIGNhc2UgTWluQ29udGVudDoKLSAgICBjYXNlIE1heENvbnRlbnQ6Ci0gICAg
Y2FzZSBGaXRDb250ZW50OgotICAgIGNhc2UgVW5kZWZpbmVkOgorICAgIGNhc2UgTGVuZ3RoVHlw
ZTo6UmVsYXRpdmU6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpJbnRyaW5zaWM6CisgICAgY2FzZSBM
ZW5ndGhUeXBlOjpNaW5JbnRyaW5zaWM6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5Db250ZW50
OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWF4Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6
OkZpdENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpVbmRlZmluZWQ6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTGVuZ3RoRnVuY3Rpb25zLmgKaW5kZXggNWMwNWFiMWJhZjQ1Y2Y2NzhjMjcyOTZmN2FjMDUw
MWY0ZmNhMjk5Ny4uZDg1ZjQzZjM0NDA1YTE1YmE3MDQ3MTM4NDRlZWY1YjQwMzU4OTJlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaApAQCAtNTAsMjMgKzUwLDIzIEBAIEZsb2F0
UG9pbnQgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KGNvbnN0IExlbmd0aFBvaW50JiwgY29uc3Qg
RmxvYXRTaXplJiBtYXhpbXVtCiBpbmxpbmUgTGF5b3V0VW5pdCBtaW5pbXVtVmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKQogewogICAg
IHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewotICAgIGNhc2UgRml4ZWQ6CisgICAgY2FzZSBMZW5n
dGhUeXBlOjpGaXhlZDoKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQobGVuZ3RoLnZhbHVlKCkp
OwotICAgIGNhc2UgUGVyY2VudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6CiAgICAg
ICAgIC8vIERvbid0IHJlbW92ZSB0aGUgZXh0cmEgY2FzdCB0byBmbG9hdC4gSXQgaXMgbmVlZGVk
IGZvciByb3VuZGluZyBvbiAzMi1iaXQgSW50ZWwgbWFjaGluZXMgdGhhdCB1c2UgdGhlIEZQVSBz
dGFjay4KICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGlt
dW1WYWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpKTsKLSAgICBjYXNlIENhbGN1bGF0
ZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkOgogICAgICAgICByZXR1cm4gTGF5
b3V0VW5pdChsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heGltdW1WYWx1ZSkpOwotICAg
IGNhc2UgRmlsbEF2YWlsYWJsZToKLSAgICBjYXNlIEF1dG86CisgICAgY2FzZSBMZW5ndGhUeXBl
OjpGaWxsQXZhaWxhYmxlOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6QXV0bzoKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgY2FzZSBSZWxhdGl2ZToKLSAgICBjYXNlIEludHJpbnNpYzoKLSAgICBjYXNl
IE1pbkludHJpbnNpYzoKLSAgICBjYXNlIE1pbkNvbnRlbnQ6Ci0gICAgY2FzZSBNYXhDb250ZW50
OgotICAgIGNhc2UgRml0Q29udGVudDoKLSAgICBjYXNlIFVuZGVmaW5lZDoKKyAgICBjYXNlIExl
bmd0aFR5cGU6OlJlbGF0aXZlOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6SW50cmluc2ljOgorICAg
IGNhc2UgTGVuZ3RoVHlwZTo6TWluSW50cmluc2ljOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWlu
Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1heENvbnRlbnQ6CisgICAgY2FzZSBMZW5n
dGhUeXBlOjpGaXRDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6VW5kZWZpbmVkOgogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJhbnNmb3JtRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwCmluZGV4IDM4YjM2YzI5OTlmNWFjMmFkMjg3
YmNjOGI1NjUxMTNhY2FiNjY3ODEuLmU2MDQ2YzBhODgwYzBjNjY3MjI4MGJkYmRkMTUyNDQ4N2Q5
M2Q5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwCkBAIC05
OSw3ICs5OSw3IEBAIHN0YXRpYyBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJh
bnNmb3JtT3BlcmF0aW9uVHlwZShDU1NWYWx1ZUlEIHR5cGUpCiAKIExlbmd0aCBjb252ZXJ0VG9G
bG9hdExlbmd0aChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIGNvbnN0
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhKQogewotICAgIHJldHVy
biBwcmltaXRpdmVWYWx1ZSA/IHByaW1pdGl2ZVZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRG
bG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9u
Pihjb252ZXJzaW9uRGF0YSkgOiBMZW5ndGgoVW5kZWZpbmVkKTsKKyAgICByZXR1cm4gcHJpbWl0
aXZlVmFsdWUgPyBwcmltaXRpdmVWYWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkRmxvYXRDb252
ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29udmVy
c2lvbkRhdGEpIDogTGVuZ3RoKExlbmd0aFR5cGU6OlVuZGVmaW5lZCk7CiB9CiAKIGJvb2wgdHJh
bnNmb3Jtc0ZvclZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIFRyYW5zZm9ybU9wZXJhdGlvbnMmIG91dE9w
ZXJhdGlvbnMpCkBAIC0xNzksOCArMTc5LDggQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29u
c3QgQ1NTVmFsdWUmIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJgogICAg
ICAgICBjYXNlIENTU1ZhbHVlVHJhbnNsYXRlOgogICAgICAgICBjYXNlIENTU1ZhbHVlVHJhbnNs
YXRlWDoKICAgICAgICAgY2FzZSBDU1NWYWx1ZVRyYW5zbGF0ZVk6IHsKLSAgICAgICAgICAgIExl
bmd0aCB0eCA9IExlbmd0aCgwLCBGaXhlZCk7Ci0gICAgICAgICAgICBMZW5ndGggdHkgPSBMZW5n
dGgoMCwgRml4ZWQpOworICAgICAgICAgICAgTGVuZ3RoIHR4ID0gTGVuZ3RoKDAsIExlbmd0aFR5
cGU6OkZpeGVkKTsKKyAgICAgICAgICAgIExlbmd0aCB0eSA9IExlbmd0aCgwLCBMZW5ndGhUeXBl
OjpGaXhlZCk7CiAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUubmFtZSgpID09IENTU1Zh
bHVlVHJhbnNsYXRlWSkKICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3Ro
KCZmaXJzdFZhbHVlLCBjb252ZXJzaW9uRGF0YSk7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTE5
OCwxNCArMTk4LDE0IEBAIGJvb2wgdHJhbnNmb3Jtc0ZvclZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG9wZXJhdGlvbnMuYXBw
ZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHR4LCB0eSwgTGVuZ3RoKDAs
IEZpeGVkKSwgdHJhbnNmb3JtT3BlcmF0aW9uVHlwZSh0cmFuc2Zvcm1WYWx1ZS5uYW1lKCkpKSk7
CisgICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRp
b246OmNyZWF0ZSh0eCwgdHksIExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCksIHRyYW5zZm9y
bU9wZXJhdGlvblR5cGUodHJhbnNmb3JtVmFsdWUubmFtZSgpKSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NWYWx1ZVRyYW5zbGF0ZVo6CiAgICAgICAg
IGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGUzZDogewotICAgICAgICAgICAgTGVuZ3RoIHR4ID0gTGVu
Z3RoKDAsIEZpeGVkKTsKLSAgICAgICAgICAgIExlbmd0aCB0eSA9IExlbmd0aCgwLCBGaXhlZCk7
Ci0gICAgICAgICAgICBMZW5ndGggdHogPSBMZW5ndGgoMCwgRml4ZWQpOworICAgICAgICAgICAg
TGVuZ3RoIHR4ID0gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKTsKKyAgICAgICAgICAgIExl
bmd0aCB0eSA9IExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7CisgICAgICAgICAgICBMZW5n
dGggdHogPSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgICAgICAgICAgaWYgKHRy
YW5zZm9ybVZhbHVlLm5hbWUoKSA9PSBDU1NWYWx1ZVRyYW5zbGF0ZVopCiAgICAgICAgICAgICAg
ICAgdHogPSBjb252ZXJ0VG9GbG9hdExlbmd0aCgmZmlyc3RWYWx1ZSwgY29udmVyc2lvbkRhdGEp
OwogICAgICAgICAgICAgZWxzZSBpZiAodHJhbnNmb3JtVmFsdWUubmFtZSgpID09IENTU1ZhbHVl
VHJhbnNsYXRlWSkKQEAgLTMyMiwxMyArMzIyLDEzIEBAIGJvb2wgdHJhbnNmb3Jtc0ZvclZhbHVl
KGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVQZXJz
cGVjdGl2ZTogewotICAgICAgICAgICAgTGVuZ3RoIHAgPSBMZW5ndGgoMCwgRml4ZWQpOworICAg
ICAgICAgICAgTGVuZ3RoIHAgPSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgICAg
ICAgICAgaWYgKGZpcnN0VmFsdWUuaXNMZW5ndGgoKSkKICAgICAgICAgICAgICAgICBwID0gY29u
dmVydFRvRmxvYXRMZW5ndGgoJmZpcnN0VmFsdWUsIGNvbnZlcnNpb25EYXRhKTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBxdWlyayB0aGF0IHNob3Vs
ZCBnbyBhd2F5IHdoZW4gM2QgdHJhbnNmb3JtcyBhcmUgZmluYWxpemVkLgogICAgICAgICAgICAg
ICAgIGRvdWJsZSB2YWwgPSBmaXJzdFZhbHVlLmRvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICAg
ICAgcCA9IHZhbCA+PSAwID8gTGVuZ3RoKGNsYW1wVG9Qb3NpdGl2ZUludGVnZXIodmFsKSwgRml4
ZWQpIDogTGVuZ3RoKFVuZGVmaW5lZCk7CisgICAgICAgICAgICAgICAgcCA9IHZhbCA+PSAwID8g
TGVuZ3RoKGNsYW1wVG9Qb3NpdGl2ZUludGVnZXIodmFsKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpIDog
TGVuZ3RoKExlbmd0aFR5cGU6OlVuZGVmaW5lZCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChwLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTM1OCw5ICszNTgsOSBAQCBSZWZQdHI8VHJh
bnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uPiB0cmFuc2xhdGVGb3JWYWx1ZShjb25zdCBDU1NWYWx1
ZSYgdmFsdWUsIGNvbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gdHlwZSA9
IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOwotICAgIExlbmd0aCB0eCA9IExlbmd0aCgw
LCBGaXhlZCk7Ci0gICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAsIEZpeGVkKTsKLSAgICBMZW5ndGgg
dHogPSBMZW5ndGgoMCwgRml4ZWQpOworICAgIExlbmd0aCB0eCA9IExlbmd0aCgwLCBMZW5ndGhU
eXBlOjpGaXhlZCk7CisgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVk
KTsKKyAgICBMZW5ndGggdHogPSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QubGVuZ3RoKCk7ICsraSkgewogICAgICAg
ICBhdXRvKiB2YWx1ZUl0ZW0gPSB2YWx1ZUxpc3QuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsK
ICAgICAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWVJdGVtKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21l
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlGaWxsTGF5ZXJJbWFn
ZUdlb21ldHJ5LmNwcAppbmRleCA2M2EzMGI0Mjk2YWI4YjUzOThkMjA5ZjQ0ZGU5OWY1M2ZmNjU5
ZTVjLi5iZWNlNDcwZTNmYTI1MGI0OWU2N2RmZDBjZGNiNjdkZmZlNTQ4YmJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5RmlsbExheWVySW1hZ2VHZW9tZXRy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUZpbGxMYXllcklt
YWdlR2VvbWV0cnkuY3BwCkBAIC05OSw4ICs5OSw4IEBAIHN0YXRpYyBMYXlvdXRTaXplIGNhbGN1
bGF0ZUltYWdlSW50cmluc2ljRGltZW5zaW9ucyhTdHlsZUltYWdlKiBpbWFnZSwgTGF5b3V0U2l6
CiAgICAgLy8gRklYTUU6IENhbGwgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoKS4KICAgICBh
dXRvIGltYWdlU2l6ZSA9IGltYWdlLT5pbWFnZVNpemUobnVsbHB0ciwgMSk7CiAgICAgYXV0byBp
bnRyaW5zaWNSYXRpbyA9IGltYWdlU2l6ZTsKLSAgICBMZW5ndGggaW50cmluc2ljV2lkdGggPSBM
ZW5ndGgoaW50cmluc2ljUmF0aW8ud2lkdGgoKSwgRml4ZWQpOwotICAgIExlbmd0aCBpbnRyaW5z
aWNIZWlnaHQgPSBMZW5ndGgoaW50cmluc2ljUmF0aW8uaGVpZ2h0KCksIEZpeGVkKTsKKyAgICBM
ZW5ndGggaW50cmluc2ljV2lkdGggPSBMZW5ndGgoaW50cmluc2ljUmF0aW8ud2lkdGgoKSwgTGVu
Z3RoVHlwZTo6Rml4ZWQpOworICAgIExlbmd0aCBpbnRyaW5zaWNIZWlnaHQgPSBMZW5ndGgoaW50
cmluc2ljUmF0aW8uaGVpZ2h0KCksIExlbmd0aFR5cGU6OkZpeGVkKTsKIAogICAgIEFTU0VSVCgh
aW50cmluc2ljV2lkdGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpOwogICAgIEFTU0VSVCghaW50
cmluc2ljSGVpZ2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDQ0ZjlkMGVhNTA1MmMwMTllNzhiYWViZTgwOGI4ZjJjNzVkMzE5OTUuLjM4ZWMx
OGI5ZjRiNmI3MjI5ZDRlMmZlZGM0MzQ3YmM2OGI2Y2EwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtMjI2Niw3ICsyMjY2LDcgQEAgYm9vbCBEb2N1bWVudDo6dXBkYXRlTGF5b3V0SWZE
aW1lbnNpb25zT3V0T2ZEYXRlKEVsZW1lbnQmIGVsZW1lbnQsIERpbWVuc2lvbnNDaGUKICAgICBi
b29sIGlzVmVydGljYWwgPSByZW5kZXJlciAmJiAhcmVuZGVyZXItPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCk7CiAgICAgYm9vbCBjaGVja2luZ0xvZ2ljYWxXaWR0aCA9ICgoZGltZW5zaW9uc0No
ZWNrICYgV2lkdGhEaW1lbnNpb25zQ2hlY2spICYmICFpc1ZlcnRpY2FsKSB8fCAoKGRpbWVuc2lv
bnNDaGVjayAmIEhlaWdodERpbWVuc2lvbnNDaGVjaykgJiYgaXNWZXJ0aWNhbCk7CiAgICAgYm9v
bCBjaGVja2luZ0xvZ2ljYWxIZWlnaHQgPSAoKGRpbWVuc2lvbnNDaGVjayAmIEhlaWdodERpbWVu
c2lvbnNDaGVjaykgJiYgIWlzVmVydGljYWwpIHx8ICgoZGltZW5zaW9uc0NoZWNrICYgV2lkdGhE
aW1lbnNpb25zQ2hlY2spICYmIGlzVmVydGljYWwpOwotICAgIGJvb2wgaGFzU3BlY2lmaWVkTG9n
aWNhbEhlaWdodCA9IHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zdHlsZSgpLmxvZ2ljYWxNaW5IZWln
aHQoKSA9PSBMZW5ndGgoMCwgRml4ZWQpICYmIHJlbmRlcmVyLT5zdHlsZSgpLmxvZ2ljYWxIZWln
aHQoKS5pc0ZpeGVkKCkgJiYgcmVuZGVyZXItPnN0eWxlKCkubG9naWNhbE1heEhlaWdodCgpLmlz
QXV0bygpOworICAgIGJvb2wgaGFzU3BlY2lmaWVkTG9naWNhbEhlaWdodCA9IHJlbmRlcmVyICYm
IHJlbmRlcmVyLT5zdHlsZSgpLmxvZ2ljYWxNaW5IZWlnaHQoKSA9PSBMZW5ndGgoMCwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpICYmIHJlbmRlcmVyLT5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0ZpeGVk
KCkgJiYgcmVuZGVyZXItPnN0eWxlKCkubG9naWNhbE1heEhlaWdodCgpLmlzQXV0bygpOwogICAg
IAogICAgIGlmICghcmVxdWlyZUZ1bGxMYXlvdXQpIHsKICAgICAgICAgUmVuZGVyQm94KiBwcmV2
aW91c0JveCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAppbmRleCAwMjM3MGJjNDdiYmIyMTg0YWVkNzUwZmQxYTJmY2ViZWQyYjdlOGQxLi4zZjBlM2U3
OGY3ZTI1MzFhMWU4MWUxNjA3NzQ0YWI0YmI2NzMxMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTIwODUsNyArMjA4NSw3IEBAIFJlbmRlclN0eWxlIEhU
TUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkKIAogICAgIGlmIChoYXNBdXRvRmlsbFN0cm9uZ1Bhc3N3b3JkQnV0dG9uKCkgJiYgIWlz
RGlzYWJsZWRPclJlYWRPbmx5KCkpIHsKICAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0RGlzcGxh
eShEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2spOwotICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRN
YXhXaWR0aChMZW5ndGggeyAxMDAsIFBlcmNlbnQgfSk7CisgICAgICAgIHRleHRCbG9ja1N0eWxl
LnNldE1heFdpZHRoKExlbmd0aCB7IDEwMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCB9KTsKICAgICAg
ICAgdGV4dEJsb2NrU3R5bGUuc2V0Q29sb3IoQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0
ZSgxNTMpKTsKICAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0VGV4dE92ZXJmbG93KFRleHRPdmVy
Zmxvdzo6Q2xpcCk7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldE1hc2tJbWFnZShTdHlsZUdl
bmVyYXRlZEltYWdlOjpjcmVhdGUoYXV0b0ZpbGxTdHJvbmdQYXNzd29yZE1hc2tJbWFnZSgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNG
aWVsZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1l
cmljRmllbGRFbGVtZW50LmNwcAppbmRleCA4NGY1NmRiYzdhZThhNmU2OGY3Y2ZmMGRiMjg3ODVi
YTU5MTI3NTYzLi5hYTUzMWQ1YjljNmQwNmQ1N2E3MTIzZmE5ZDY0YzI3MWUzN2E0ZGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJp
Y0ZpZWxkRWxlbWVudC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBEYXRlVGltZU51bWVyaWNG
aWVsZEVsZW1lbnQ6OmFkanVzdE1pbldpZHRoKFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKICAg
ICAgICAgd2lkdGggPSBzdGQ6Om1heCh3aWR0aCwgZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29u
c3RydWN0VGV4dFJ1bihudW1iZXJTdHJpbmcsIHN0eWxlKSkpOwogICAgIH0KIAotICAgIHN0eWxl
LnNldE1pbldpZHRoKHsgd2lkdGgsIEZpeGVkIH0pOworICAgIHN0eWxlLnNldE1pbldpZHRoKHsg
d2lkdGgsIExlbmd0aFR5cGU6OkZpeGVkIH0pOwogfQogCiBpbnQgRGF0ZVRpbWVOdW1lcmljRmll
bGRFbGVtZW50OjptYXhpbXVtKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5jcHAKaW5kZXggNmFk
NTFiOTI4NmJhNGQwMzA4M2YyYWI4MjQ4YWY2Njg2MDM2YmY0ZS4uYzcwYTk0YmZhMWI3YzlmZDM2
ZDMxNDg3YjkxZmFhY2ZmZGRmNzljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5jcHAKQEAgLTU3LDcg
KzU3LDcgQEAgdm9pZCBEYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50OjphZGp1c3RNaW5XaWR0
aChSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiAgICAgZm9yIChhdXRvJiBzeW1ib2wgOiBtX3N5
bWJvbHMpCiAgICAgICAgIHdpZHRoID0gc3RkOjptYXgod2lkdGgsIGZvbnQud2lkdGgoUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oc3ltYm9sLCBzdHlsZSkpKTsKIAotICAgIHN0eWxlLnNl
dE1pbldpZHRoKHsgd2lkdGgsIEZpeGVkIH0pOworICAgIHN0eWxlLnNldE1pbldpZHRoKHsgd2lk
dGgsIExlbmd0aFR5cGU6OkZpeGVkIH0pOwogfQogCiBib29sIERhdGVUaW1lU3ltYm9saWNGaWVs
ZEVsZW1lbnQ6Omhhc1ZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDAzYTJkNzMwNGNm
OWZjNzliYjRmMTgyODlkMGJlYzc0OTdiODJkMWUuLmNiYmEyMDIyMDJiZWViOGYwZjNkY2UwMTQw
MzIxNDNhNTllMzUyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIE9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0
ZVB0cigpOwogICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbSgqc2hhZG93SG9zdFN0eWxlKTsKICAg
ICBuZXdTdHlsZS0+c2V0RmxleEdyb3coMSk7Ci0gICAgbmV3U3R5bGUtPnNldE1pbldpZHRoKExl
bmd0aCB7IDAsIEZpeGVkIH0pOyAvLyBOZWVkZWQgZm9yIGNvcnJlY3Qgc2hyaW5raW5nLgorICAg
IG5ld1N0eWxlLT5zZXRNaW5XaWR0aChMZW5ndGggeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9KTsg
Ly8gTmVlZGVkIGZvciBjb3JyZWN0IHNocmlua2luZy4KICAgICBuZXdTdHlsZS0+c2V0RGlzcGxh
eShEaXNwbGF5VHlwZTo6QmxvY2spOwogICAgIG5ld1N0eWxlLT5zZXREaXJlY3Rpb24oVGV4dERp
cmVjdGlvbjo6TFRSKTsKICAgICAvLyBXZSBkb24ndCB3YW50IHRoZSBzaGFkb3cgRE9NIHRvIGJl
IGVkaXRhYmxlLCBzbyB3ZSBzZXQgdGhpcyBibG9jayB0byByZWFkLW9ubHkgaW4gY2FzZSB0aGUg
aW5wdXQgaXRzZWxmIGlzIGVkaXRhYmxlLgpAQCAtMTI0LDcgKzEyNCw3IEBAIE9wdGlvbmFsPFN0
eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QKICAgICAgICAgLy8gZm9yIHRoZSByb290IGVsZW1lbnQgc3R5bGUsIHRoZSBw
YXJlbnQgZWxlbWVudCBzdHlsZSwgYW5kIHRoZSByZW5kZXIgdmlldy4KICAgICAgICAgYXV0byBl
bVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEsIENTU1VuaXRUeXBlOjpDU1NfRU1T
KTsKICAgICAgICAgaW50IHBpeGVscyA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEgeyBuZXdTdHlsZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgMS4wLCBXVEY6Om51bGxvcHQgfSk7Ci0gICAgICAgIG5ld1N0eWxlLT5zZXRGbGV4
QmFzaXMoTGVuZ3RoIHsgcGl4ZWxzLCBGaXhlZCB9KTsKKyAgICAgICAgbmV3U3R5bGUtPnNldEZs
ZXhCYXNpcyhMZW5ndGggeyBwaXhlbHMsIExlbmd0aFR5cGU6OkZpeGVkIH0pOwogICAgIH0KIAog
ICAgIHJldHVybiB7IFdURk1vdmUobmV3U3R5bGUpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggZWMyMjkx
NjQyZDRmMDc5NGJmNTMxYWRiYmIwZWFiMGE3MmUyNTkwOS4uOTQ4OWVjMDg0ZjJlODQ5ODQ1ZDhm
YjY2NDg3MWQ5MDEzZGUxZjE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtMTE2LDggKzExNiw4IEBAIHN0
ZDo6dW5pcXVlX3B0cjxMYXlvdXQ6OkxheW91dFRyZWU+IFRyZWVCdWlsZGVyOjpidWlsZExheW91
dFRyZWUoY29uc3QgUmVuZGVyVmllCiAgICAgUGhhc2VTY29wZSBzY29wZShQaGFzZTo6VHlwZTo6
VHJlZUJ1aWxkaW5nKTsKIAogICAgIGF1dG8gcm9vdFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25l
KHJlbmRlclZpZXcuc3R5bGUoKSk7Ci0gICAgcm9vdFN0eWxlLnNldExvZ2ljYWxXaWR0aChMZW5n
dGgocmVuZGVyVmlldy53aWR0aCgpLCBGaXhlZCkpOwotICAgIHJvb3RTdHlsZS5zZXRMb2dpY2Fs
SGVpZ2h0KExlbmd0aChyZW5kZXJWaWV3LmhlaWdodCgpLCBGaXhlZCkpOworICAgIHJvb3RTdHls
ZS5zZXRMb2dpY2FsV2lkdGgoTGVuZ3RoKHJlbmRlclZpZXcud2lkdGgoKSwgTGVuZ3RoVHlwZTo6
Rml4ZWQpKTsKKyAgICByb290U3R5bGUuc2V0TG9naWNhbEhlaWdodChMZW5ndGgocmVuZGVyVmll
dy5oZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKIAogICAgIGF1dG8gcm9vdExheW91dEJv
eCA9IG1ha2VVbmlxdWU8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4oV1RGTW92ZShyb290U3R5bGUp
KTsKICAgICBhdXRvJiByb290Q29udGFpbmVyID0gKnJvb3RMYXlvdXRCb3g7CkBAIC0yMzcsOCAr
MjM3LDggQEAgQm94KiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IENvbnRhaW5l
ckJveCYgcGFyZW50Q29udGFpbmVyLCBjb25zdCBSZW4KICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6QmxvY2spIHsKICAgICAgICAg
ICAgICAgICBpZiAoYXV0byBvZmZzZXQgPSBhY2N1bXVsYXRlZE9mZnNldEZvckluRmxvd1Bvc2l0
aW9uZWRDb250aW51YXRpb24oZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcikpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNsb25lZFN0eWxlLnNldFRvcCh7IG9mZnNldC0+aGVpZ2h0KCksIEZp
eGVkIH0pOwotICAgICAgICAgICAgICAgICAgICBjbG9uZWRTdHlsZS5zZXRMZWZ0KHsgb2Zmc2V0
LT53aWR0aCgpLCBGaXhlZCB9KTsKKyAgICAgICAgICAgICAgICAgICAgY2xvbmVkU3R5bGUuc2V0
VG9wKHsgb2Zmc2V0LT5oZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSk7CisgICAgICAgICAg
ICAgICAgICAgIGNsb25lZFN0eWxlLnNldExlZnQoeyBvZmZzZXQtPndpZHRoKCksIExlbmd0aFR5
cGU6OkZpeGVkIH0pOwogICAgICAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9ICZjcmVh
dGVDb250YWluZXIoZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKGNsb25lZFN0
eWxlKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNoaWxk
TGF5b3V0Qm94ID0gJmNyZWF0ZUNvbnRhaW5lcihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciks
IFdURk1vdmUoY2xvbmVkU3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA4
ZGEwZmViYjY3MzBkYzk2MTIxMmYxYzc1ZjUzMmQ3MTQzZGIzYmIzLi41YWYxZGMyYjU4NWNiYmVh
MTA3MjliODdhODg5YWM0ZGQyNjljYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC0zNDk1LDcgKzM0OTUsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9ybUZpeGVkV2lkdGhBdXRv
U2l6ZSgpCiAKICAgICBBU1NFUlQoaXM8UmVuZGVyRWxlbWVudD4oKmZpcnN0Q2hpbGQpKTsKICAg
ICBhdXRvJiBkb2N1bWVudFJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmZpcnN0
Q2hpbGQpOwotICAgIGRvY3VtZW50UmVuZGVyZXIubXV0YWJsZVN0eWxlKCkuc2V0TWF4V2lkdGgo
TGVuZ3RoKG1fYXV0b1NpemVDb25zdHJhaW50LndpZHRoKCksIEZpeGVkKSk7CisgICAgZG9jdW1l
bnRSZW5kZXJlci5tdXRhYmxlU3R5bGUoKS5zZXRNYXhXaWR0aChMZW5ndGgobV9hdXRvU2l6ZUNv
bnN0cmFpbnQud2lkdGgoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICByZXNpemUobV9hdXRv
U2l6ZUNvbnN0cmFpbnQud2lkdGgoKSwgbV9hdXRvU2l6ZUNvbnN0cmFpbnQuaGVpZ2h0KCkpOwog
CiAgICAgUmVmPEZyYW1lVmlldz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IDI3NjJhNGIxYjhlZDNmOWFj
MDI2ZjExMzE1MWU4MGRhZTJmNGQ3MGUuLjU5YTE2YThiZWUxNDZkMjMwNzY1MjQxY2FiOTlhMWIy
NzljZWQzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIu
Y3BwCkBAIC01MywxNiArNTMsMTYgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPExlbmd0aEJveD4gcGFy
c2VSb290TWFyZ2luKFN0cmluZyYgcm9vdE1hcmdpbikKICAgICAgICAgaWYgKCFwYXJzZWRWYWx1
ZSB8fCBwYXJzZWRWYWx1ZS0+aXNDYWxjdWxhdGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU3ludGF4RXJyb3IsICJGYWlsZWQgdG8gY29uc3RydWN0ICdJbnRlcnNlY3Rpb25P
YnNlcnZlcic6IHJvb3RNYXJnaW4gbXVzdCBiZSBzcGVjaWZpZWQgaW4gcGl4ZWxzIG9yIHBlcmNl
bnQuIiB9OwogICAgICAgICBpZiAocGFyc2VkVmFsdWUtPmlzUGVyY2VudGFnZSgpKQotICAgICAg
ICAgICAgbWFyZ2lucy5hcHBlbmQoTGVuZ3RoKHBhcnNlZFZhbHVlLT5kb3VibGVWYWx1ZSgpLCBQ
ZXJjZW50KSk7CisgICAgICAgICAgICBtYXJnaW5zLmFwcGVuZChMZW5ndGgocGFyc2VkVmFsdWUt
PmRvdWJsZVZhbHVlKCksIExlbmd0aFR5cGU6OlBlcmNlbnQpKTsKICAgICAgICAgZWxzZSBpZiAo
cGFyc2VkVmFsdWUtPmlzUHgoKSkKLSAgICAgICAgICAgIG1hcmdpbnMuYXBwZW5kKExlbmd0aChw
YXJzZWRWYWx1ZS0+aW50VmFsdWUoKSwgRml4ZWQpKTsKKyAgICAgICAgICAgIG1hcmdpbnMuYXBw
ZW5kKExlbmd0aChwYXJzZWRWYWx1ZS0+aW50VmFsdWUoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9y
LCAiRmFpbGVkIHRvIGNvbnN0cnVjdCAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInOiByb290TWFyZ2lu
IG11c3QgYmUgc3BlY2lmaWVkIGluIHBpeGVscyBvciBwZXJjZW50LiIgfTsKICAgICB9CiAgICAg
c3dpdGNoIChtYXJnaW5zLnNpemUoKSkgewogICAgIGNhc2UgMDoKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IDQ7ICsraSkKLSAgICAgICAgICAgIG1hcmdpbnMuYXBwZW5kKExlbmd0
aCgwLCBGaXhlZCkpOworICAgICAgICAgICAgbWFyZ2lucy5hcHBlbmQoTGVuZ3RoKDAsIExlbmd0
aFR5cGU6OkZpeGVkKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMToKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IDM7ICsraSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBTdHJpbmcg
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnJvb3RNYXJnaW4oKSBjb25zdAogICAgIGZvciAoYXV0byBz
aWRlIDogYWxsQm94U2lkZXMpIHsKICAgICAgICAgYXV0byYgbGVuZ3RoID0gbV9yb290TWFyZ2lu
LmF0KHNpZGUpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihsZW5ndGguaW50
VmFsdWUoKSk7Ci0gICAgICAgIGlmIChsZW5ndGgudHlwZSgpID09IFBlcmNlbnQpCisgICAgICAg
IGlmIChsZW5ndGguaXNQZXJjZW50KCkpCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnJScpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoInB4Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAppbmRleCAzZmM0MzFhNDc0
NjFkOGM0NDNkYjRiNjIyZDZlYTkwNjM0ZGEwZjJmLi4zOTcwZjgyNmZmYzA4ZDJlYzYwYjUxZDk1
NzRlYjI5NGU1MzUyODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIExlbmd0aCBwYXJzZUxlbmd0aChj
b25zdCBVQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmIChsZW5ndGggPT0g
MCkKLSAgICAgICAgcmV0dXJuIExlbmd0aCgxLCBSZWxhdGl2ZSk7CisgICAgICAgIHJldHVybiBM
ZW5ndGgoMSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUpOwogCiAgICAgdW5zaWduZWQgaSA9IDA7CiAg
ICAgd2hpbGUgKGkgPCBsZW5ndGggJiYgaXNTcGFjZU9yTmV3bGluZShkYXRhW2ldKSkKQEAgLTYz
LDE4ICs2MywxOCBAQCBzdGF0aWMgTGVuZ3RoIHBhcnNlTGVuZ3RoKGNvbnN0IFVDaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgIC8vIElFIHF1aXJrOiBhY2NlcHQgZGVjaW1hbCBm
cmFjdGlvbnMgZm9yIHBlcmNlbnRhZ2VzLgogICAgICAgICBkb3VibGUgciA9IGNoYXJhY3RlcnNU
b0RvdWJsZShkYXRhLCBkb3VibGVMZW5ndGgsICZvayk7CiAgICAgICAgIGlmIChvaykKLSAgICAg
ICAgICAgIHJldHVybiBMZW5ndGgociwgUGVyY2VudCk7Ci0gICAgICAgIHJldHVybiBMZW5ndGgo
MSwgUmVsYXRpdmUpOworICAgICAgICAgICAgcmV0dXJuIExlbmd0aChyLCBMZW5ndGhUeXBlOjpQ
ZXJjZW50KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aCgxLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7
CiAgICAgfQogICAgIGludCByID0gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGRhdGEsIGludExlbmd0
aCwgJm9rKTsKICAgICBpZiAobmV4dCA9PSAnKicpIHsKICAgICAgICAgaWYgKG9rKQotICAgICAg
ICAgICAgcmV0dXJuIExlbmd0aChyLCBSZWxhdGl2ZSk7Ci0gICAgICAgIHJldHVybiBMZW5ndGgo
MSwgUmVsYXRpdmUpOworICAgICAgICAgICAgcmV0dXJuIExlbmd0aChyLCBMZW5ndGhUeXBlOjpS
ZWxhdGl2ZSk7CisgICAgICAgIHJldHVybiBMZW5ndGgoMSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUp
OwogICAgIH0KICAgICBpZiAob2spCi0gICAgICAgIHJldHVybiBMZW5ndGgociwgRml4ZWQpOwot
ICAgIHJldHVybiBMZW5ndGgoMCwgUmVsYXRpdmUpOworICAgICAgICByZXR1cm4gTGVuZ3RoKHIs
IExlbmd0aFR5cGU6OkZpeGVkKTsKKyAgICByZXR1cm4gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OlJl
bGF0aXZlKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGNvdW50Q2hhcmFjdGVyKFN0cmluZ0ltcGwm
IHN0cmluZywgVUNoYXIgY2hhcmFjdGVyKQpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyBDYWxj
dWxhdGlvblZhbHVlTWFwJiBjYWxjdWxhdGlvblZhbHVlcygpCiAKIExlbmd0aDo6TGVuZ3RoKFJl
ZjxDYWxjdWxhdGlvblZhbHVlPiYmIHZhbHVlKQogICAgIDogbV9oYXNRdWlyayhmYWxzZSkKLSAg
ICAsIG1fdHlwZShDYWxjdWxhdGVkKQorICAgICwgbV90eXBlKExlbmd0aFR5cGU6OkNhbGN1bGF0
ZWQpCiAgICAgLCBtX2lzRmxvYXQoZmFsc2UpCiB7CiAgICAgbV9jYWxjdWxhdGlvblZhbHVlSGFu
ZGxlID0gY2FsY3VsYXRpb25WYWx1ZXMoKS5pbnNlcnQoV1RGTW92ZSh2YWx1ZSkpOwpAQCAtMjgz
LDEyICsyODMsMTIgQEAgYm9vbCBMZW5ndGg6OmlzQ2FsY3VsYXRlZEVxdWFsKGNvbnN0IExlbmd0
aCYgb3RoZXIpIGNvbnN0CiBMZW5ndGggY29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNv
bnN0IExlbmd0aCYgbGVuZ3RoKQogewogICAgIGlmIChsZW5ndGguaXNQZXJjZW50KCkpCi0gICAg
ICAgIHJldHVybiBMZW5ndGgoMTAwIC0gbGVuZ3RoLnZhbHVlKCksIFBlcmNlbnQpOworICAgICAg
ICByZXR1cm4gTGVuZ3RoKDEwMCAtIGxlbmd0aC52YWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50
KTsKICAgICAKICAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygx
MDAlIC0gbGVuZ3RoKQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25O
b2RlPj4gbGVuZ3RoczsKICAgICBsZW5ndGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0g
ICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0
aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZCht
YWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBMZW5ndGhUeXBlOjpQ
ZXJjZW50KSkpOwogICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4
cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOwogICAgIGF1dG8gb3AgPSBtYWtlVW5pcXVlPENhbGNF
eHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRy
YWN0KTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3Zl
KG9wKSwgVmFsdWVSYW5nZUFsbCkpOwpAQCAtMzE0LDcgKzMxNCw3IEBAIExlbmd0aCBibGVuZChj
b25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYgdG8sIGRvdWJsZSBwcm9ncmVzcykKICAg
ICBpZiAoZnJvbS5pc1VuZGVmaW5lZCgpIHx8IHRvLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJl
dHVybiB0bzsKIAotICAgIGlmIChmcm9tLnR5cGUoKSA9PSBDYWxjdWxhdGVkIHx8IHRvLnR5cGUo
KSA9PSBDYWxjdWxhdGVkKQorICAgIGlmIChmcm9tLmlzQ2FsY3VsYXRlZCgpIHx8IHRvLmlzQ2Fs
Y3VsYXRlZCgpKQogICAgICAgICByZXR1cm4gYmxlbmRNaXhlZFR5cGVzKGZyb20sIHRvLCBwcm9n
cmVzcyk7CiAKICAgICBpZiAoIWZyb20uaXNaZXJvKCkgJiYgIXRvLmlzWmVybygpICYmIGZyb20u
dHlwZSgpICE9IHRvLnR5cGUoKSkKQEAgLTMyNCwxMCArMzI0LDEwIEBAIExlbmd0aCBibGVuZChj
b25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYgdG8sIGRvdWJsZSBwcm9ncmVzcykKICAg
ICBpZiAodG8uaXNaZXJvKCkpCiAgICAgICAgIHJlc3VsdFR5cGUgPSBmcm9tLnR5cGUoKTsKIAot
ICAgIGlmIChyZXN1bHRUeXBlID09IFBlcmNlbnQpIHsKKyAgICBpZiAocmVzdWx0VHlwZSA9PSBM
ZW5ndGhUeXBlOjpQZXJjZW50KSB7CiAgICAgICAgIGZsb2F0IGZyb21QZXJjZW50ID0gZnJvbS5p
c1plcm8oKSA/IDAgOiBmcm9tLnBlcmNlbnQoKTsKICAgICAgICAgZmxvYXQgdG9QZXJjZW50ID0g
dG8uaXNaZXJvKCkgPyAwIDogdG8ucGVyY2VudCgpOwotICAgICAgICByZXR1cm4gTGVuZ3RoKFdl
YkNvcmU6OmJsZW5kKGZyb21QZXJjZW50LCB0b1BlcmNlbnQsIHByb2dyZXNzKSwgUGVyY2VudCk7
CisgICAgICAgIHJldHVybiBMZW5ndGgoV2ViQ29yZTo6YmxlbmQoZnJvbVBlcmNlbnQsIHRvUGVy
Y2VudCwgcHJvZ3Jlc3MpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICB9CiAKICAgICBmbG9h
dCBmcm9tVmFsdWUgPSBmcm9tLmlzWmVybygpID8gMCA6IGZyb20udmFsdWUoKTsKQEAgLTM0NCwx
OCArMzQ0LDE4IEBAIENPTVBJTEVfQVNTRVJUKHNpemVvZihMZW5ndGgpID09IHNpemVvZihTYW1l
U2l6ZUFzTGVuZ3RoKSwgbGVuZ3RoX3Nob3VsZF9zdGF5X3NtCiBzdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgTGVuZ3RoVHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAodHlwZSkgewotICAgIGNhc2UgQXV0bzogdHMgPDwgImF1dG8iOyBicmVhazsKLSAgICBjYXNl
IFJlbGF0aXZlOiB0cyA8PCAicmVsYXRpdmUiOyBicmVhazsKLSAgICBjYXNlIFBlcmNlbnQ6IHRz
IDw8ICJwZXJjZW50IjsgYnJlYWs7Ci0gICAgY2FzZSBGaXhlZDogdHMgPDwgImZpeGVkIjsgYnJl
YWs7Ci0gICAgY2FzZSBJbnRyaW5zaWM6IHRzIDw8ICJpbnRyaW5zaWMiOyBicmVhazsKLSAgICBj
YXNlIE1pbkludHJpbnNpYzogdHMgPDwgIm1pbi1pbnRyaW5zaWMiOyBicmVhazsKLSAgICBjYXNl
IE1pbkNvbnRlbnQ6IHRzIDw8ICJtaW4tY29udGVudCI7IGJyZWFrOwotICAgIGNhc2UgTWF4Q29u
dGVudDogdHMgPDwgIm1heC1jb250ZW50IjsgYnJlYWs7Ci0gICAgY2FzZSBGaWxsQXZhaWxhYmxl
OiB0cyA8PCAiZmlsbC1hdmFpbGFibGUiOyBicmVhazsKLSAgICBjYXNlIEZpdENvbnRlbnQ6IHRz
IDw8ICJmaXQtY29udGVudCI7IGJyZWFrOwotICAgIGNhc2UgQ2FsY3VsYXRlZDogdHMgPDwgImNh
bGMiOyBicmVhazsKLSAgICBjYXNlIFVuZGVmaW5lZDogdHMgPDwgInVuZGVmaW5lZCI7IGJyZWFr
OworICAgIGNhc2UgTGVuZ3RoVHlwZTo6QXV0bzogdHMgPDwgImF1dG8iOyBicmVhazsKKyAgICBj
YXNlIExlbmd0aFR5cGU6OlJlbGF0aXZlOiB0cyA8PCAicmVsYXRpdmUiOyBicmVhazsKKyAgICBj
YXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6IHRzIDw8ICJwZXJjZW50IjsgYnJlYWs7CisgICAgY2Fz
ZSBMZW5ndGhUeXBlOjpGaXhlZDogdHMgPDwgImZpeGVkIjsgYnJlYWs7CisgICAgY2FzZSBMZW5n
dGhUeXBlOjpJbnRyaW5zaWM6IHRzIDw8ICJpbnRyaW5zaWMiOyBicmVhazsKKyAgICBjYXNlIExl
bmd0aFR5cGU6Ok1pbkludHJpbnNpYzogdHMgPDwgIm1pbi1pbnRyaW5zaWMiOyBicmVhazsKKyAg
ICBjYXNlIExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQ6IHRzIDw8ICJtaW4tY29udGVudCI7IGJyZWFr
OworICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWF4Q29udGVudDogdHMgPDwgIm1heC1jb250ZW50Ijsg
YnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaWxsQXZhaWxhYmxlOiB0cyA8PCAiZmlsbC1h
dmFpbGFibGUiOyBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZpdENvbnRlbnQ6IHRzIDw8
ICJmaXQtY29udGVudCI7IGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZDog
dHMgPDwgImNhbGMiOyBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGU6OlVuZGVmaW5lZDogdHMg
PDwgInVuZGVmaW5lZCI7IGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gdHM7CiB9CkBAIC0zNjMs
MjYgKzM2MywyNiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgTGVuZ3RoVHlwZSB0eXBlKQogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgTGVuZ3RoIGxlbmd0aCkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKLSAgICBj
YXNlIEF1dG86Ci0gICAgY2FzZSBVbmRlZmluZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpBdXRv
OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6VW5kZWZpbmVkOgogICAgICAgICB0cyA8PCBsZW5ndGgu
dHlwZSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpeGVkOgorICAgIGNhc2UgTGVuZ3Ro
VHlwZTo6Rml4ZWQ6CiAgICAgICAgIHRzIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3Bl
Y3RpbmdJbnRlZ2VycyhsZW5ndGgudmFsdWUoKSkgPDwgInB4IjsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBSZWxhdGl2ZToKLSAgICBjYXNlIEludHJpbnNpYzoKLSAgICBjYXNlIE1pbkludHJp
bnNpYzoKLSAgICBjYXNlIE1pbkNvbnRlbnQ6Ci0gICAgY2FzZSBNYXhDb250ZW50OgotICAgIGNh
c2UgRmlsbEF2YWlsYWJsZToKLSAgICBjYXNlIEZpdENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhU
eXBlOjpSZWxhdGl2ZToKKyAgICBjYXNlIExlbmd0aFR5cGU6OkludHJpbnNpYzoKKyAgICBjYXNl
IExlbmd0aFR5cGU6Ok1pbkludHJpbnNpYzoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkNvbnRl
bnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNYXhDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlw
ZTo6RmlsbEF2YWlsYWJsZToKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZpdENvbnRlbnQ6CiAgICAg
ICAgIHRzIDw8IGxlbmd0aC50eXBlKCkgPDwgIiAiIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJl
clJlc3BlY3RpbmdJbnRlZ2VycyhsZW5ndGgudmFsdWUoKSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUGVyY2VudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6CiAgICAgICAgIHRz
IDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhsZW5ndGgucGVy
Y2VudCgpKSA8PCAiJSI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAg
ICBjYXNlIExlbmd0aFR5cGU6OkNhbGN1bGF0ZWQ6CiAgICAgICAgIHRzIDw8IGxlbmd0aC5jYWxj
dWxhdGlvblZhbHVlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoLmgKaW5kZXggMTRiZWZmOWMzZDI2ZmY5MDc4Y2RhMDUzOWE5ZDc4ZjRjNGE2Y2Y1ZC4uODEw
ZDFlNDgwZDdkOWZlNWE2MTI2OTFmZTE1M2UzYjVjZGJkMTY5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1lbnVtIExlbmd0aFR5cGUgeworZW51bSBjbGFzcyBMZW5ndGhUeXBlIDog
dWludDhfdCB7CiAgICAgQXV0bywgUmVsYXRpdmUsIFBlcmNlbnQsIEZpeGVkLAogICAgIEludHJp
bnNpYywgTWluSW50cmluc2ljLAogICAgIE1pbkNvbnRlbnQsIE1heENvbnRlbnQsIEZpbGxBdmFp
bGFibGUsIEZpdENvbnRlbnQsCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIENhbGN1bGF0aW9uVmFs
dWU7CiBzdHJ1Y3QgTGVuZ3RoIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBMZW5ndGgoTGVuZ3RoVHlwZSA9IEF1dG8pOworICAgIExlbmd0aChMZW5ndGhUeXBl
ID0gTGVuZ3RoVHlwZTo6QXV0byk7CiAKICAgICBMZW5ndGgoaW50IHZhbHVlLCBMZW5ndGhUeXBl
LCBib29sIGhhc1F1aXJrID0gZmFsc2UpOwogICAgIExlbmd0aChMYXlvdXRVbml0IHZhbHVlLCBM
ZW5ndGhUeXBlLCBib29sIGhhc1F1aXJrID0gZmFsc2UpOwpAQCAtOTcsNiArOTcsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0OwogICAgIGJvb2wgaXNGaWxsQXZhaWxh
YmxlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpdENvbnRlbnQoKSBjb25zdDsKKyAgICBib29sIGlz
TWluSW50cmluc2ljKCkgY29uc3Q7CiAKICAgICBib29sIGhhc1F1aXJrKCkgY29uc3Q7CiAKQEAg
LTEzMSw3ICsxMzIsNyBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX2NhbGN1bGF0aW9u
VmFsdWVIYW5kbGU7CiAgICAgfTsKICAgICBib29sIG1faGFzUXVpcms7Ci0gICAgdW5zaWduZWQg
Y2hhciBtX3R5cGU7CisgICAgTGVuZ3RoVHlwZSBtX3R5cGU7CiAgICAgYm9vbCBtX2lzRmxvYXQ7
CiB9OwogCkBAIC0xNDQsMzEgKzE0NSwzMSBAQCBVbmlxdWVBcnJheTxMZW5ndGg+IG5ld0xlbmd0
aEFycmF5KGNvbnN0IFN0cmluZyYsIGludCYgbGVuZ3RoKTsKIGlubGluZSBMZW5ndGg6Okxlbmd0
aChMZW5ndGhUeXBlIHR5cGUpCiAgICAgOiBtX2ludFZhbHVlKDApLCBtX2hhc1F1aXJrKGZhbHNl
KSwgbV90eXBlKHR5cGUpLCBtX2lzRmxvYXQoZmFsc2UpCiB7Ci0gICAgQVNTRVJUKHR5cGUgIT0g
Q2FsY3VsYXRlZCk7CisgICAgQVNTRVJUKHR5cGUgIT0gTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZCk7
CiB9CiAKIGlubGluZSBMZW5ndGg6Okxlbmd0aChpbnQgdmFsdWUsIExlbmd0aFR5cGUgdHlwZSwg
Ym9vbCBoYXNRdWlyaykKICAgICA6IG1faW50VmFsdWUodmFsdWUpLCBtX2hhc1F1aXJrKGhhc1F1
aXJrKSwgbV90eXBlKHR5cGUpLCBtX2lzRmxvYXQoZmFsc2UpCiB7Ci0gICAgQVNTRVJUKHR5cGUg
IT0gQ2FsY3VsYXRlZCk7CisgICAgQVNTRVJUKHR5cGUgIT0gTGVuZ3RoVHlwZTo6Q2FsY3VsYXRl
ZCk7CiB9CiAKIGlubGluZSBMZW5ndGg6Okxlbmd0aChMYXlvdXRVbml0IHZhbHVlLCBMZW5ndGhU
eXBlIHR5cGUsIGJvb2wgaGFzUXVpcmspCiAgICAgOiBtX2Zsb2F0VmFsdWUodmFsdWUudG9GbG9h
dCgpKSwgbV9oYXNRdWlyayhoYXNRdWlyayksIG1fdHlwZSh0eXBlKSwgbV9pc0Zsb2F0KHRydWUp
CiB7Ci0gICAgQVNTRVJUKHR5cGUgIT0gQ2FsY3VsYXRlZCk7CisgICAgQVNTRVJUKHR5cGUgIT0g
TGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZCk7CiB9CiAKIGlubGluZSBMZW5ndGg6Okxlbmd0aChmbG9h
dCB2YWx1ZSwgTGVuZ3RoVHlwZSB0eXBlLCBib29sIGhhc1F1aXJrKQogICAgIDogbV9mbG9hdFZh
bHVlKHZhbHVlKSwgbV9oYXNRdWlyayhoYXNRdWlyayksIG1fdHlwZSh0eXBlKSwgbV9pc0Zsb2F0
KHRydWUpCiB7Ci0gICAgQVNTRVJUKHR5cGUgIT0gQ2FsY3VsYXRlZCk7CisgICAgQVNTRVJUKHR5
cGUgIT0gTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZCk7CiB9CiAKIGlubGluZSBMZW5ndGg6Okxlbmd0
aChkb3VibGUgdmFsdWUsIExlbmd0aFR5cGUgdHlwZSwgYm9vbCBoYXNRdWlyaykKICAgICA6IG1f
ZmxvYXRWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKSwgbV9oYXNRdWlyayhoYXNRdWly
ayksIG1fdHlwZSh0eXBlKSwgbV9pc0Zsb2F0KHRydWUpCiB7Ci0gICAgQVNTRVJUKHR5cGUgIT0g
Q2FsY3VsYXRlZCk7CisgICAgQVNTRVJUKHR5cGUgIT0gTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZCk7
CiB9CiAKIGlubGluZSBMZW5ndGg6Okxlbmd0aChjb25zdCBMZW5ndGgmIG90aGVyKQpAQCAtMTgy
LDcgKzE4Myw3IEBAIGlubGluZSBMZW5ndGg6Okxlbmd0aChjb25zdCBMZW5ndGgmIG90aGVyKQog
aW5saW5lIExlbmd0aDo6TGVuZ3RoKExlbmd0aCYmIG90aGVyKQogewogICAgIG1lbWNweShzdGF0
aWNfY2FzdDx2b2lkKj4odGhpcyksIHN0YXRpY19jYXN0PHZvaWQqPigmb3RoZXIpLCBzaXplb2Yo
TGVuZ3RoKSk7Ci0gICAgb3RoZXIubV90eXBlID0gQXV0bzsKKyAgICBvdGhlci5tX3R5cGUgPSBM
ZW5ndGhUeXBlOjpBdXRvOwogfQogCiBpbmxpbmUgTGVuZ3RoJiBMZW5ndGg6Om9wZXJhdG9yPShj
b25zdCBMZW5ndGgmIG90aGVyKQpAQCAtMjA4LDcgKzIwOSw3IEBAIGlubGluZSBMZW5ndGgmIExl
bmd0aDo6b3BlcmF0b3I9KExlbmd0aCYmIG90aGVyKQogICAgICAgICBkZXJlZigpOwogCiAgICAg
bWVtY3B5KHN0YXRpY19jYXN0PHZvaWQqPih0aGlzKSwgc3RhdGljX2Nhc3Q8dm9pZCo+KCZvdGhl
ciksIHNpemVvZihMZW5ndGgpKTsKLSAgICBvdGhlci5tX3R5cGUgPSBBdXRvOworICAgIG90aGVy
Lm1fdHlwZSA9IExlbmd0aFR5cGU6OkF1dG87CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0y
ODksOCArMjkwLDggQEAgaW5saW5lIHZvaWQgTGVuZ3RoOjpzZXRIYXNRdWlyayhib29sIGhhc1F1
aXJrKQogCiBpbmxpbmUgdm9pZCBMZW5ndGg6OnNldFZhbHVlKExlbmd0aFR5cGUgdHlwZSwgaW50
IHZhbHVlKQogewotICAgIEFTU0VSVChtX3R5cGUgIT0gQ2FsY3VsYXRlZCk7Ci0gICAgQVNTRVJU
KHR5cGUgIT0gQ2FsY3VsYXRlZCk7CisgICAgQVNTRVJUKG1fdHlwZSAhPSBMZW5ndGhUeXBlOjpD
YWxjdWxhdGVkKTsKKyAgICBBU1NFUlQodHlwZSAhPSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkKTsK
ICAgICBtX3R5cGUgPSB0eXBlOwogICAgIG1faW50VmFsdWUgPSB2YWx1ZTsKICAgICBtX2lzRmxv
YXQgPSBmYWxzZTsKQEAgLTI5OCw4ICsyOTksOCBAQCBpbmxpbmUgdm9pZCBMZW5ndGg6OnNldFZh
bHVlKExlbmd0aFR5cGUgdHlwZSwgaW50IHZhbHVlKQogCiBpbmxpbmUgdm9pZCBMZW5ndGg6OnNl
dFZhbHVlKExlbmd0aFR5cGUgdHlwZSwgZmxvYXQgdmFsdWUpCiB7Ci0gICAgQVNTRVJUKG1fdHlw
ZSAhPSBDYWxjdWxhdGVkKTsKLSAgICBBU1NFUlQodHlwZSAhPSBDYWxjdWxhdGVkKTsKKyAgICBB
U1NFUlQobV90eXBlICE9IExlbmd0aFR5cGU6OkNhbGN1bGF0ZWQpOworICAgIEFTU0VSVCh0eXBl
ICE9IExlbmd0aFR5cGU6OkNhbGN1bGF0ZWQpOwogICAgIG1fdHlwZSA9IHR5cGU7CiAgICAgbV9m
bG9hdFZhbHVlID0gdmFsdWU7CiAgICAgbV9pc0Zsb2F0ID0gdHJ1ZTsKQEAgLTMwNyw4ICszMDgs
OCBAQCBpbmxpbmUgdm9pZCBMZW5ndGg6OnNldFZhbHVlKExlbmd0aFR5cGUgdHlwZSwgZmxvYXQg
dmFsdWUpCiAKIGlubGluZSB2b2lkIExlbmd0aDo6c2V0VmFsdWUoTGVuZ3RoVHlwZSB0eXBlLCBM
YXlvdXRVbml0IHZhbHVlKQogewotICAgIEFTU0VSVChtX3R5cGUgIT0gQ2FsY3VsYXRlZCk7Ci0g
ICAgQVNTRVJUKHR5cGUgIT0gQ2FsY3VsYXRlZCk7CisgICAgQVNTRVJUKG1fdHlwZSAhPSBMZW5n
dGhUeXBlOjpDYWxjdWxhdGVkKTsKKyAgICBBU1NFUlQodHlwZSAhPSBMZW5ndGhUeXBlOjpDYWxj
dWxhdGVkKTsKICAgICBtX3R5cGUgPSB0eXBlOwogICAgIG1fZmxvYXRWYWx1ZSA9IHZhbHVlOwog
ICAgIG1faXNGbG9hdCA9IHRydWU7CkBAIC0zMTYsMjIgKzMxNywyMiBAQCBpbmxpbmUgdm9pZCBM
ZW5ndGg6OnNldFZhbHVlKExlbmd0aFR5cGUgdHlwZSwgTGF5b3V0VW5pdCB2YWx1ZSkKIAogaW5s
aW5lIGJvb2wgTGVuZ3RoOjppc0F1dG8oKSBjb25zdAogewotICAgIHJldHVybiB0eXBlKCkgPT0g
QXV0bzsKKyAgICByZXR1cm4gdHlwZSgpID09IExlbmd0aFR5cGU6OkF1dG87CiB9CiAKIGlubGlu
ZSBib29sIExlbmd0aDo6aXNGaXhlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHR5cGUoKSA9PSBG
aXhlZDsKKyAgICByZXR1cm4gdHlwZSgpID09IExlbmd0aFR5cGU6OkZpeGVkOwogfQogCiBpbmxp
bmUgYm9vbCBMZW5ndGg6OmlzTWF4Q29udGVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHR5cGUo
KSA9PSBNYXhDb250ZW50OworICAgIHJldHVybiB0eXBlKCkgPT0gTGVuZ3RoVHlwZTo6TWF4Q29u
dGVudDsKIH0KIAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc01pbkNvbnRlbnQoKSBjb25zdAogewot
ICAgIHJldHVybiB0eXBlKCkgPT0gTWluQ29udGVudDsKKyAgICByZXR1cm4gdHlwZSgpID09IExl
bmd0aFR5cGU6Ok1pbkNvbnRlbnQ7CiB9CiAKIGlubGluZSBib29sIExlbmd0aDo6aXNOZWdhdGl2
ZSgpIGNvbnN0CkBAIC0zNDMsMTcgKzM0NCwxNyBAQCBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzTmVn
YXRpdmUoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzUGVyY2VudCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHR5cGUoKSA9PSBQZXJjZW50OworICAgIHJldHVybiB0eXBlKCkgPT0gTGVu
Z3RoVHlwZTo6UGVyY2VudDsKIH0KIAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc1JlbGF0aXZlKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gdHlwZSgpID09IFJlbGF0aXZlOworICAgIHJldHVybiB0eXBl
KCkgPT0gTGVuZ3RoVHlwZTo6UmVsYXRpdmU7CiB9CiAKIGlubGluZSBib29sIExlbmd0aDo6aXNV
bmRlZmluZWQoKSBjb25zdAogewotICAgIHJldHVybiB0eXBlKCkgPT0gVW5kZWZpbmVkOworICAg
IHJldHVybiB0eXBlKCkgPT0gTGVuZ3RoVHlwZTo6VW5kZWZpbmVkOwogfQogCiBpbmxpbmUgYm9v
bCBMZW5ndGg6OmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpIGNvbnN0CkBAIC0zODAsMTcgKzM4MSwx
OCBAQCBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzWmVybygpIGNvbnN0CiAKIGlubGluZSBib29sIExl
bmd0aDo6aXNDYWxjdWxhdGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHlwZSgpID09IENhbGN1
bGF0ZWQ7CisgICAgcmV0dXJuIHR5cGUoKSA9PSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkOwogfQog
CiBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzTGVnYWN5SW50cmluc2ljKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gdHlwZSgpID09IEludHJpbnNpYyB8fCB0eXBlKCkgPT0gTWluSW50cmluc2ljOworICAg
IHJldHVybiB0eXBlKCkgPT0gTGVuZ3RoVHlwZTo6SW50cmluc2ljIHx8IHR5cGUoKSA9PSBMZW5n
dGhUeXBlOjpNaW5JbnRyaW5zaWM7CiB9CiAKIGlubGluZSBib29sIExlbmd0aDo6aXNJbnRyaW5z
aWMoKSBjb25zdAogewotICAgIHJldHVybiB0eXBlKCkgPT0gTWluQ29udGVudCB8fCB0eXBlKCkg
PT0gTWF4Q29udGVudCB8fCB0eXBlKCkgPT0gRmlsbEF2YWlsYWJsZSB8fCB0eXBlKCkgPT0gRml0
Q29udGVudDsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBtaXNsZWFkaW5nbHkgbmFtZWQuIE9uZSB3
b3VsZCBleHBlY3QgdGhpcyBmdW5jdGlvbiBkb2VzICJyZXR1cm4gdHlwZSgpID09IExlbmd0aFR5
cGU6OkludHJpbnNpYzsiLgorICAgIHJldHVybiB0eXBlKCkgPT0gTGVuZ3RoVHlwZTo6TWluQ29u
dGVudCB8fCB0eXBlKCkgPT0gTGVuZ3RoVHlwZTo6TWF4Q29udGVudCB8fCB0eXBlKCkgPT0gTGVu
Z3RoVHlwZTo6RmlsbEF2YWlsYWJsZSB8fCB0eXBlKCkgPT0gTGVuZ3RoVHlwZTo6Rml0Q29udGVu
dDsKIH0KIAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc0ludHJpbnNpY09yQXV0bygpIGNvbnN0CkBA
IC00MTAsMTIgKzQxMiwxNyBAQCBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzU3BlY2lmaWVkT3JJbnRy
aW5zaWMoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzRmlsbEF2YWlsYWJsZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHR5cGUoKSA9PSBGaWxsQXZhaWxhYmxlOworICAgIHJldHVybiB0
eXBlKCkgPT0gTGVuZ3RoVHlwZTo6RmlsbEF2YWlsYWJsZTsKIH0KIAogaW5saW5lIGJvb2wgTGVu
Z3RoOjppc0ZpdENvbnRlbnQoKSBjb25zdAogewotICAgIHJldHVybiB0eXBlKCkgPT0gRml0Q29u
dGVudDsKKyAgICByZXR1cm4gdHlwZSgpID09IExlbmd0aFR5cGU6OkZpdENvbnRlbnQ7Cit9CisK
K2lubGluZSBib29sIExlbmd0aDo6aXNNaW5JbnRyaW5zaWMoKSBjb25zdAoreworICAgIHJldHVy
biB0eXBlKCkgPT0gTGVuZ3RoVHlwZTo6TWluSW50cmluc2ljOwogfQogCiBMZW5ndGggY29udmVy
dFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGhCb3guaAppbmRleCA4OWE3NWM4YjZlNDI0NzYzNTkzODg0YWU2NDVlZGRlYmI4MDNh
NGJhLi43ZjI2NjlkM2E1MDIzZWJiZjEzY2QwNWNmNTZlNzliMGRiZGM4YmRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGhCb3guaApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBMZW5ndGhCb3ggOiBwdWJsaWMgUmVjdEVkZ2VzPExlbmd0aD4gewogcHVibGlj
OgogICAgIExlbmd0aEJveCgpCi0gICAgICAgIDogTGVuZ3RoQm94KEF1dG8pCisgICAgICAgIDog
TGVuZ3RoQm94KExlbmd0aFR5cGU6OkF1dG8pCiAgICAgewogICAgIH0KIApAQCAtNDAsMTIgKzQw
LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBleHBsaWNpdCBMZW5ndGhCb3goaW50IHYpCi0g
ICAgICAgIDogUmVjdEVkZ2VzKExlbmd0aCh2LCBGaXhlZCksIExlbmd0aCh2LCBGaXhlZCksIExl
bmd0aCh2LCBGaXhlZCksIExlbmd0aCh2LCBGaXhlZCkpCisgICAgICAgIDogUmVjdEVkZ2VzKExl
bmd0aCh2LCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCh2LCBMZW5ndGhUeXBlOjpGaXhlZCks
IExlbmd0aCh2LCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCh2LCBMZW5ndGhUeXBlOjpGaXhl
ZCkpCiAgICAgewogICAgIH0KIAogICAgIExlbmd0aEJveChpbnQgdG9wLCBpbnQgcmlnaHQsIGlu
dCBib3R0b20sIGludCBsZWZ0KQotICAgICAgICA6IFJlY3RFZGdlcyhMZW5ndGgodG9wLCBGaXhl
ZCksIExlbmd0aChyaWdodCwgRml4ZWQpLCBMZW5ndGgoYm90dG9tLCBGaXhlZCksIExlbmd0aChs
ZWZ0LCBGaXhlZCkpCisgICAgICAgIDogUmVjdEVkZ2VzKExlbmd0aCh0b3AsIExlbmd0aFR5cGU6
OkZpeGVkKSwgTGVuZ3RoKHJpZ2h0LCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChib3R0b20s
IExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKGxlZnQsIExlbmd0aFR5cGU6OkZpeGVkKSkKICAg
ICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKaW5kZXggMzFlNjIwZTk3NTMz
ZDkyNzAwM2YxMWFlOGZhZGFjZmExODNiNTExZC4uNDUzZDExOTI0MjJmYmNhNzI2ZjdkNWU5NzFm
ODY4ZGMxMmY4NzZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcApAQCAtNTAsNyArNTAs
NyBAQCBMZW5ndGhTaXplIFRoZW1lOjpjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9u
dENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJgogCiBMZW5ndGhTaXplIFRoZW1lOjptaW5pbXVt
Q29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3Ro
U2l6ZSYsIGZsb2F0KSBjb25zdAogewotICAgIHJldHVybiB7IHsgMCwgRml4ZWQgfSwgeyAwLCBG
aXhlZCB9IH07CisgICAgcmV0dXJuIHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAsIExl
bmd0aFR5cGU6OkZpeGVkIH0gfTsKIH0KIAogYm9vbCBUaGVtZTo6Y29udHJvbFJlcXVpcmVzUHJl
V2hpdGVTcGFjZShDb250cm9sUGFydCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmNwcAppbmRleCA5MzdhYTRkMzU5M2QxZDIzOTE3MzNmMGMwMjc3NGEyMTEx
MzM2NWUxLi4zMDMwMjhmNDFmMGNhY2ZmMjllNjg2NTRmMTdlNzRjMDViNmFjNTg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0zMzQsOCArMzM0LDgg
QEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QKIHZvaWQgSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNE
aW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0
LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewogICAgIGludHJpbnNpY1JhdGlvID0gc2l6
ZSgpOwotICAgIGludHJpbnNpY1dpZHRoID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLndpZHRoKCks
IEZpeGVkKTsKLSAgICBpbnRyaW5zaWNIZWlnaHQgPSBMZW5ndGgoaW50cmluc2ljUmF0aW8uaGVp
Z2h0KCksIEZpeGVkKTsKKyAgICBpbnRyaW5zaWNXaWR0aCA9IExlbmd0aChpbnRyaW5zaWNSYXRp
by53aWR0aCgpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CisgICAgaW50cmluc2ljSGVpZ2h0ID0gTGVu
Z3RoKGludHJpbnNpY1JhdGlvLmhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiB9CiAKIHZv
aWQgSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5bmNocm9ub3VzbHkoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5z
Zm9ybU9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCBlZmI5MzUzZmE1
OTRlOThlY2NhMTA5Mzc0MjEwN2M3NjEyMTdjZmFkLi5kNGNkZTljODljZjA1ZmZkYzU1ODAwNzEz
YWNhN2ZmOTAxZDFiZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJh
bnNmb3JtT3BlcmF0aW9uLmNwcApAQCAtNDcsNyArNDcsNyBAQCBSZWY8VHJhbnNmb3JtT3BlcmF0
aW9uPiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3Jt
T3BlcgogICAgIGlmIChibGVuZFRvSWRlbnRpdHkpIHsKICAgICAgICAgZG91YmxlIHAgPSBmbG9h
dFZhbHVlRm9yTGVuZ3RoKG1fcCwgMSk7CiAgICAgICAgIHAgPSBXZWJDb3JlOjpibGVuZChwLCAx
LjAsIHByb2dyZXNzKTsgLy8gRklYTUU6IHRoaXMgc2VlbXMgd3JvbmcuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjcwMAotICAgICAgICByZXR1cm4gUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoY2xhbXBUb1Bvc2l0aXZlSW50ZWdl
cihwKSwgRml4ZWQpKTsKKyAgICAgICAgcmV0dXJuIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0
aW9uOjpjcmVhdGUoTGVuZ3RoKGNsYW1wVG9Qb3NpdGl2ZUludGVnZXIocCksIExlbmd0aFR5cGU6
OkZpeGVkKSk7CiAgICAgfQogICAgIAogICAgIGNvbnN0IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3Bl
cmF0aW9uKiBmcm9tT3AgPSBkb3duY2FzdDxQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbj4o
ZnJvbSk7CkBAIC02NCw5ICs2NCw5IEBAIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IFBlcnNwZWN0
aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyCiAKICAgICBp
ZiAoZGVjb21wLnBlcnNwZWN0aXZlWikgewogICAgICAgICBkb3VibGUgdmFsID0gLTEuMCAvIGRl
Y29tcC5wZXJzcGVjdGl2ZVo7Ci0gICAgICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9w
ZXJhdGlvbjo6Y3JlYXRlKExlbmd0aChjbGFtcFRvUG9zaXRpdmVJbnRlZ2VyKHZhbCksIEZpeGVk
KSk7CisgICAgICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRl
KExlbmd0aChjbGFtcFRvUG9zaXRpdmVJbnRlZ2VyKHZhbCksIExlbmd0aFR5cGU6OkZpeGVkKSk7
CiAgICAgfQotICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRl
KExlbmd0aCgwLCBGaXhlZCkpOworICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogfQogCiB2b2lkIFBl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCmluZGV4
IGI1ZDNlYjk1MDVhYmQ4NjgzNjk3MjBlMzFlNGU5OTU2ZDVkMGY1ZmEuLjk2OTczYmUzNDEyY2Y3
MTA4NTMwZDQ0ZTJlMjliYjYxZmUxYmYwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
bGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPFRyYW5zZm9y
bU9wZXJhdGlvbj4gVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFu
c2Zvcm1PcGVyYXQKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAg
ICAgICAgIHJldHVybiAqdGhpczsKIAotICAgIExlbmd0aCB6ZXJvTGVuZ3RoKDAsIEZpeGVkKTsK
KyAgICBMZW5ndGggemVyb0xlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgaWYgKGJs
ZW5kVG9JZGVudGl0eSkKICAgICAgICAgcmV0dXJuIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bjo6Y3JlYXRlKFdlYkNvcmU6OmJsZW5kKG1feCwgemVyb0xlbmd0aCwgcHJvZ3Jlc3MpLCBXZWJD
b3JlOjpibGVuZChtX3ksIHplcm9MZW5ndGgsIHByb2dyZXNzKSwgV2ViQ29yZTo6YmxlbmQobV96
LCB6ZXJvTGVuZ3RoLCBwcm9ncmVzcyksIHR5cGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IDAxMWUxMDFmYjUxOTBiMmYzNWMwYmYy
NjEwZDZjMDBmOTJiZjA4MGUuLmVkN2M4ZmRkNjk3MDcxYTk5NTM3NjZiZWRkYjJiNTU1YTdhYWQ0
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaApA
QCAtMzUsNyArMzUsNyBAQCBjbGFzcyBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24gZmluYWwg
OiBwdWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFRy
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IExlbmd0aCYgdHgsIGNvbnN0
IExlbmd0aCYgdHksIE9wZXJhdGlvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbih0eCwgdHksIExlbmd0aCgw
LCBGaXhlZCksIHR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uKHR4LCB0eSwgTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSwg
dHlwZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWY8VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uPiBjcmVhdGUoY29uc3QgTGVuZ3RoJiB0eCwgY29uc3QgTGVuZ3RoJiB0eSwgY29uc3QgTGVu
Z3RoJiB0eiwgT3BlcmF0aW9uVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Ro
ZW1lTWFjLm1tCmluZGV4IGU5YWQ4YmFkYWZiZDExODViMmY2MTc5NjNjNDJlOTZjMzJjYjE2MTgu
LjRhMDQ3NjdhZWU5OTUwMDdjNTgzOThlODczZTBmMGFmZTE2YmYwYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTE1NSw5ICsxNTUsOSBAQCBzdGF0aWMgTGVu
Z3RoU2l6ZSBzaXplRnJvbU5TQ29udHJvbFNpemUoTlNDb250cm9sU2l6ZSBuc0NvbnRyb2xTaXpl
LCBjb25zdCBMZW5ndAogICAgICAgICBjb250cm9sU2l6ZSA9IEludFNpemUoY29udHJvbFNpemUu
d2lkdGgoKSAqIHpvb21GYWN0b3IsIGNvbnRyb2xTaXplLmhlaWdodCgpICogem9vbUZhY3Rvcik7
CiAgICAgTGVuZ3RoU2l6ZSByZXN1bHQgPSB6b29tZWRTaXplOwogICAgIGlmICh6b29tZWRTaXpl
LndpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgY29udHJvbFNpemUud2lkdGgoKSA+IDApCi0g
ICAgICAgIHJlc3VsdC53aWR0aCA9IHsgY29udHJvbFNpemUud2lkdGgoKSwgRml4ZWQgfTsKKyAg
ICAgICAgcmVzdWx0LndpZHRoID0geyBjb250cm9sU2l6ZS53aWR0aCgpLCBMZW5ndGhUeXBlOjpG
aXhlZCB9OwogICAgIGlmICh6b29tZWRTaXplLmhlaWdodC5pc0ludHJpbnNpY09yQXV0bygpICYm
IGNvbnRyb2xTaXplLmhlaWdodCgpID4gMCkKLSAgICAgICAgcmVzdWx0LmhlaWdodCA9IHsgY29u
dHJvbFNpemUuaGVpZ2h0KCksIEZpeGVkIH07CisgICAgICAgIHJlc3VsdC5oZWlnaHQgPSB7IGNv
bnRyb2xTaXplLmhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhlZCB9OwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTgzNiwxMSArODM2LDExIEBAIExlbmd0aFNpemUgVGhlbWVNYWM6Om1pbmlt
dW1Db250cm9sU2l6ZShDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9uCiAj
ZW5kaWYKICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgogICAgIGNhc2UgQnV0dG9uUGFydDoK
LSAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IHN0YXRpY19jYXN0PGludD4oMTUgKiB6
b29tRmFjdG9yKSwgRml4ZWQgfSB9OworICAgICAgICByZXR1cm4geyB7IDAsIExlbmd0aFR5cGU6
OkZpeGVkIH0sIHsgc3RhdGljX2Nhc3Q8aW50PigxNSAqIHpvb21GYWN0b3IpLCBMZW5ndGhUeXBl
OjpGaXhlZCB9IH07CiAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OiB7CiAgICAgICAgIGF1
dG8mIGJhc2UgPSBzdGVwcGVyU2l6ZXMoKVtOU0NvbnRyb2xTaXplTWluaV07Ci0gICAgICAgIHJl
dHVybiB7IHsgc3RhdGljX2Nhc3Q8aW50PihiYXNlLndpZHRoKCkgKiB6b29tRmFjdG9yKSwgRml4
ZWQgfSwKLSAgICAgICAgICAgIHsgc3RhdGljX2Nhc3Q8aW50PihiYXNlLmhlaWdodCgpICogem9v
bUZhY3RvciksIEZpeGVkIH0gfTsKKyAgICAgICAgcmV0dXJuIHsgeyBzdGF0aWNfY2FzdDxpbnQ+
KGJhc2Uud2lkdGgoKSAqIHpvb21GYWN0b3IpLCBMZW5ndGhUeXBlOjpGaXhlZCB9LAorICAgICAg
ICAgICAgeyBzdGF0aWNfY2FzdDxpbnQ+KGJhc2UuaGVpZ2h0KCkgKiB6b29tRmFjdG9yKSwgTGVu
Z3RoVHlwZTo6Rml4ZWQgfSB9OwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
VGhlbWU6Om1pbmltdW1Db250cm9sU2l6ZShwYXJ0LCBmb250LCB6b29tZWRTaXplLCB6b29tRmFj
dG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKaW5k
ZXggODE0M2FkMjljZDIwY2QxNThlYjM5OTY0ZTlmMmU4OTNmZjc2MzBmYS4uOTNhN2I5MjQ2YWUz
NmUxZjZiYmExM2QzMGVhMTg3MGZjNTZlNzAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0F1dG9UYWJsZUxheW91dC5jcHAKQEAgLTg4LDExICs4OCwxMSBAQCB2b2lkIEF1dG9UYWJs
ZUxheW91dDo6cmVjYWxjQ29sdW1uKHVuc2lnbmVkIGVmZkNvbCkKICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZmxvYXQgY0NlbGxNYXhXaWR0aCA9IDMyNzYwOwogICAgICAgICAgICAgICAgICAg
ICBMZW5ndGggY2VsbExvZ2ljYWxXaWR0aCA9IGNlbGwtPnN0eWxlT3JDb2xMb2dpY2FsV2lkdGgo
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGgudmFsdWUoKSA+IGND
ZWxsTWF4V2lkdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNl
dFZhbHVlKEZpeGVkLCBjQ2VsbE1heFdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNl
bGxMb2dpY2FsV2lkdGguc2V0VmFsdWUoTGVuZ3RoVHlwZTo6Rml4ZWQsIGNDZWxsTWF4V2lkdGgp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc05lZ2F0aXZlKCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNldFZhbHVlKEZpeGVk
LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0VmFsdWUo
TGVuZ3RoVHlwZTo6Rml4ZWQsIDApOwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNlbGxM
b2dpY2FsV2lkdGgudHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgRml4ZWQ6Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBpZ25vcmUgd2lkdGg9MAogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGNlbGxMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICFjb2x1bW5MYXlvdXQubG9naWNhbFdp
ZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgbG9naWNhbFdpZHRoID0gY2VsbC0+YWRqdXN0Qm9yZGVyQm94TG9naWNhbFdpZHRo
Rm9yQm94U2l6aW5nKGNlbGxMb2dpY2FsV2lkdGgpOwpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9p
ZCBBdXRvVGFibGVMYXlvdXQ6OnJlY2FsY0NvbHVtbih1bnNpZ25lZCBlZmZDb2wpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5hdi9JRSB3ZWlyZG5lc3MKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKChsb2dpY2FsV2lkdGggPiBjb2x1bW5MYXlvdXQubG9n
aWNhbFdpZHRoLnZhbHVlKCkpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fHwgKChjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnZhbHVlKCkgPT0gbG9naWNhbFdpZHRoKSAm
JiAobWF4Q29udHJpYnV0b3IgPT0gY2VsbCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnNldFZhbHVlKEZpeGVkLCBsb2dp
Y2FsV2lkdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5
b3V0LmxvZ2ljYWxXaWR0aC5zZXRWYWx1ZShMZW5ndGhUeXBlOjpGaXhlZCwgbG9naWNhbFdpZHRo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkQ29udHJpYnV0b3Ig
PSBjZWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5zZXRWYWx1ZShGaXhlZCwgbG9naWNhbFdpZHRoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0
aC5zZXRWYWx1ZShMZW5ndGhUeXBlOjpGaXhlZCwgbG9naWNhbFdpZHRoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZml4ZWRDb250cmlidXRvciA9IGNlbGw7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUGVyY2VudDoK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBMZW5ndGhUeXBlOjpQZXJjZW50OgogICAgICAgICAg
ICAgICAgICAgICAgICAgbV9oYXNQZXJjZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUoKSAmJiAoIWNvbHVtbkxheW91dC5s
b2dpY2FsV2lkdGguaXNQZXJjZW50KCkgfHwgY2VsbExvZ2ljYWxXaWR0aC5wZXJjZW50KCkgPiBj
b2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnBlcmNlbnQoKSkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aCA9IGNlbGxMb2dpY2FsV2lkdGg7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBS
ZWxhdGl2ZToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBMZW5ndGhUeXBlOjpSZWxhdGl2ZToK
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHVuZGVyc3RhbmQgdGhp
cyBjYXNlIGFuZCB3aGV0aGVyIGl0IG1ha2VzIHNlbnNlIHRvIGNvbXBhcmUgdmFsdWVzCiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgbm90IG5lY2Vzc2FyaWx5IG9mIHRoZSBz
YW1lIHR5cGUuCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC52
YWx1ZSgpID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpKQpAQCAtMzI4LDExICsz
MjgsMTEgQEAgZmxvYXQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRo
KCkKICAgICAgICAgd2hpbGUgKGxhc3RDb2wgPCBuRWZmQ29scyAmJiBzcGFuID4gMCkgewogICAg
ICAgICAgICAgTGF5b3V0JiBjb2x1bW5MYXlvdXQgPSBtX2xheW91dFN0cnVjdFtsYXN0Q29sXTsK
ICAgICAgICAgICAgIHN3aXRjaCAoY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC50eXBlKCkpIHsK
LSAgICAgICAgICAgIGNhc2UgUGVyY2VudDoKKyAgICAgICAgICAgIGNhc2UgTGVuZ3RoVHlwZTo6
UGVyY2VudDoKICAgICAgICAgICAgICAgICB0b3RhbFBlcmNlbnQgKz0gY29sdW1uTGF5b3V0Lmxv
Z2ljYWxXaWR0aC5wZXJjZW50KCk7CiAgICAgICAgICAgICAgICAgYWxsQ29sc0FyZUZpeGVkID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEZpeGVkOgor
ICAgICAgICAgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXhlZDoKICAgICAgICAgICAgICAgICBpZiAo
Y29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpID4gMCkgewogICAgICAgICAgICAgICAg
ICAgICBmaXhlZFdpZHRoICs9IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUoKTsKICAg
ICAgICAgICAgICAgICAgICAgYWxsQ29sc0FyZVBlcmNlbnQgPSBmYWxzZTsKQEAgLTM0MSw3ICsz
NDEsNyBAQCBmbG9hdCBBdXRvVGFibGVMYXlvdXQ6OmNhbGNFZmZlY3RpdmVMb2dpY2FsV2lkdGgo
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgICAgICAgICBjYXNlIEF1dG86CisgICAgICAgICAg
ICBjYXNlIExlbmd0aFR5cGU6OkF1dG86CiAgICAgICAgICAgICAgICAgaGF2ZUF1dG8gPSB0cnVl
OwogICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICAgICAgZGVmYXVsdDoKQEAg
LTM5Miw3ICszOTIsNyBAQCBmbG9hdCBBdXRvVGFibGVMYXlvdXQ6OmNhbGNFZmZlY3RpdmVMb2dp
Y2FsV2lkdGgoKQogICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxXaWR0aCAtPSBtX2xheW91
dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZU1heExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHBlcmNlbnRNaXNzaW5nIC09IHBlcmNlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocGVyY2VudCA+IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRT
dHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGguc2V0VmFsdWUoUGVyY2VudCwgcGVyY2Vu
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZl
Y3RpdmVMb2dpY2FsV2lkdGguc2V0VmFsdWUoTGVuZ3RoVHlwZTo6UGVyY2VudCwgcGVyY2VudCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGggPSBMZW5ndGgoKTsK
ICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNTQ0LDE4ICs1NDQsMTggQEAgdm9pZCBBdXRvVGFi
bGVMYXlvdXQ6OmxheW91dCgpCiAgICAgICAgIGF2YWlsYWJsZSAtPSBjZWxsTG9naWNhbFdpZHRo
OwogICAgICAgICBMZW5ndGgmIGxvZ2ljYWxXaWR0aCA9IG1fbGF5b3V0U3RydWN0W2ldLmVmZmVj
dGl2ZUxvZ2ljYWxXaWR0aDsKICAgICAgICAgc3dpdGNoIChsb2dpY2FsV2lkdGgudHlwZSgpKSB7
Ci0gICAgICAgIGNhc2UgUGVyY2VudDoKKyAgICAgICAgY2FzZSBMZW5ndGhUeXBlOjpQZXJjZW50
OgogICAgICAgICAgICAgaGF2ZVBlcmNlbnQgPSB0cnVlOwogICAgICAgICAgICAgdG90YWxQZXJj
ZW50ICs9IGxvZ2ljYWxXaWR0aC5wZXJjZW50KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBSZWxhdGl2ZToKKyAgICAgICAgY2FzZSBMZW5ndGhUeXBlOjpSZWxhdGl2ZToKICAg
ICAgICAgICAgIHRvdGFsUmVsYXRpdmUgKz0gbG9naWNhbFdpZHRoLnZhbHVlKCk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGaXhlZDoKKyAgICAgICAgY2FzZSBMZW5ndGhUeXBl
OjpGaXhlZDoKICAgICAgICAgICAgIG51bUZpeGVkKys7CiAgICAgICAgICAgICB0b3RhbEZpeGVk
ICs9IG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZU1heExvZ2ljYWxXaWR0aDsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEF1dG86CisgICAgICAgIGNhc2UgTGVuZ3RoVHlwZTo6
QXV0bzoKICAgICAgICAgICAgIGlmIChtX2xheW91dFN0cnVjdFtpXS5lbXB0eUNlbGxzT25seSkK
ICAgICAgICAgICAgICAgICBudW1BdXRvRW1wdHlDZWxsc09ubHkrKzsKICAgICAgICAgICAgIGVs
c2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCmlu
ZGV4IDIzYjM4YTk4ZTFhNDM2NWMxNmZkOTQ2YTk0ZmYyMzNlY2RkODdhZWUuLjhiZmUzOTkzNmRi
Nzk1ODc0MzZjNmUyNjY5YjZmZjVkMmUwMTliYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgZmxvYXQgRml4ZWRU
YWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkoKQogICAgIC8vIGl0ZXJhdGUgb3ZlciBhbGwgPGNv
bD4gZWxlbWVudHMKICAgICB1bnNpZ25lZCBuRWZmQ29scyA9IG1fdGFibGUtPm51bUVmZkNvbHMo
KTsKICAgICBtX3dpZHRoLnJlc2l6ZShuRWZmQ29scyk7Ci0gICAgbV93aWR0aC5maWxsKExlbmd0
aChBdXRvKSk7CisgICAgbV93aWR0aC5maWxsKExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7CiAK
ICAgICB1bnNpZ25lZCBjdXJyZW50RWZmZWN0aXZlQ29sdW1uID0gMDsKICAgICBmb3IgKFJlbmRl
clRhYmxlQ29sKiBjb2wgPSBtX3RhYmxlLT5maXJzdENvbHVtbigpOyBjb2w7IGNvbCA9IGNvbC0+
bmV4dENvbHVtbigpKSB7CkBAIC0xNDMsMTQgKzE0MywxNCBAQCBmbG9hdCBGaXhlZFRhYmxlTGF5
b3V0OjpjYWxjV2lkdGhBcnJheSgpCiAgICAgICAgIC8vIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2lj
YWxXaWR0aEluRnJhZ21lbnRVc2luZyB0byBjb21wdXRlIHRoZSB3aWR0aC4KICAgICAgICAgaWYg
KGxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkgJiYgbG9naWNhbFdpZHRoLmlzUG9zaXRpdmUoKSkgewog
ICAgICAgICAgICAgZml4ZWRCb3JkZXJCb3hMb2dpY2FsV2lkdGggPSBjZWxsLT5hZGp1c3RCb3Jk
ZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcobG9naWNhbFdpZHRoKTsKLSAgICAgICAgICAg
IGxvZ2ljYWxXaWR0aC5zZXRWYWx1ZShGaXhlZCwgZml4ZWRCb3JkZXJCb3hMb2dpY2FsV2lkdGgp
OworICAgICAgICAgICAgbG9naWNhbFdpZHRoLnNldFZhbHVlKExlbmd0aFR5cGU6OkZpeGVkLCBm
aXhlZEJvcmRlckJveExvZ2ljYWxXaWR0aCk7CiAgICAgICAgIH0KIAogICAgICAgICB1bnNpZ25l
ZCB1c2VkU3BhbiA9IDA7CiAgICAgICAgIHdoaWxlICh1c2VkU3BhbiA8IHNwYW4gJiYgY3VycmVu
dENvbHVtbiA8IG5FZmZDb2xzKSB7CiAgICAgICAgICAgICBmbG9hdCBlU3BhbiA9IG1fdGFibGUt
PnNwYW5PZkVmZkNvbChjdXJyZW50Q29sdW1uKTsKICAgICAgICAgICAgIC8vIE9ubHkgc2V0IGlm
IG5vIGNvbCBlbGVtZW50IGhhcyBhbHJlYWR5IHNldCBpdC4KLSAgICAgICAgICAgIGlmIChtX3dp
ZHRoW2N1cnJlbnRDb2x1bW5dLmlzQXV0bygpICYmIGxvZ2ljYWxXaWR0aC50eXBlKCkgIT0gQXV0
bykgeworICAgICAgICAgICAgaWYgKG1fd2lkdGhbY3VycmVudENvbHVtbl0uaXNBdXRvKCkgJiYg
bG9naWNhbFdpZHRoLnR5cGUoKSAhPSBMZW5ndGhUeXBlOjpBdXRvKSB7CiAgICAgICAgICAgICAg
ICAgbV93aWR0aFtjdXJyZW50Q29sdW1uXSA9IGxvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgICAg
ICBtX3dpZHRoW2N1cnJlbnRDb2x1bW5dICo9IGVTcGFuIC8gc3BhbjsKICAgICAgICAgICAgICAg
ICB1c2VkV2lkdGggKz0gZml4ZWRCb3JkZXJCb3hMb2dpY2FsV2lkdGggKiBlU3BhbiAvIHNwYW47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxn
b3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdv
cml0aG0uY3BwCmluZGV4IGU5ZjlmODlmNmFlZWMwMWU1M2RiMTk5YjQ5OTNmNzgxYzY1Yzc4ZWMu
LjIwNTUxNzhhYTMzNzkxMjM1ZmQ1NGE4NjIyZTc1ZmYzZGJmZDY2MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCkBA
IC02NDMsMjUgKzY0MywyNSBAQCBHcmlkVHJhY2tTaXplIEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bTo6Y2FsY3VsYXRlR3JpZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdEaQogICAgIEFTU0VSVCh3
YXNTZXR1cCgpKTsKICAgICAvLyBDb2xsYXBzZSBlbXB0eSBhdXRvIHJlcGVhdCB0cmFja3MgaWYg
YXV0by1maXQuCiAgICAgaWYgKG1fZ3JpZC5oYXNBdXRvUmVwZWF0RW1wdHlUcmFja3MoZGlyZWN0
aW9uKSAmJiBtX2dyaWQuaXNFbXB0eUF1dG9SZXBlYXRUcmFjayhkaXJlY3Rpb24sIHRyYW5zbGF0
ZWRJbmRleCkpCi0gICAgICAgIHJldHVybiB7IExlbmd0aChGaXhlZCksIExlbmd0aFRyYWNrU2l6
aW5nIH07CisgICAgICAgIHJldHVybiB7IExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0
aFRyYWNrU2l6aW5nIH07CiAKICAgICBhdXRvJiB0cmFja1NpemUgPSByYXdHcmlkVHJhY2tTaXpl
KGRpcmVjdGlvbiwgdHJhbnNsYXRlZEluZGV4KTsKICAgICBpZiAodHJhY2tTaXplLmlzRml0Q29u
dGVudCgpKQotICAgICAgICByZXR1cm4gaXNSZWxhdGl2ZUdyaWRMZW5ndGhBc0F1dG8odHJhY2tT
aXplLmZpdENvbnRlbnRUcmFja0JyZWFkdGgoKSwgZGlyZWN0aW9uKSA/IEdyaWRUcmFja1NpemUo
TGVuZ3RoKEF1dG8pLCBMZW5ndGgoTWF4Q29udGVudCkpIDogdHJhY2tTaXplOworICAgICAgICBy
ZXR1cm4gaXNSZWxhdGl2ZUdyaWRMZW5ndGhBc0F1dG8odHJhY2tTaXplLmZpdENvbnRlbnRUcmFj
a0JyZWFkdGgoKSwgZGlyZWN0aW9uKSA/IEdyaWRUcmFja1NpemUoTGVuZ3RoKExlbmd0aFR5cGU6
OkF1dG8pLCBMZW5ndGgoTGVuZ3RoVHlwZTo6TWF4Q29udGVudCkpIDogdHJhY2tTaXplOwogCiAg
ICAgR3JpZExlbmd0aCBtaW5UcmFja0JyZWFkdGggPSB0cmFja1NpemUubWluVHJhY2tCcmVhZHRo
KCk7CiAgICAgR3JpZExlbmd0aCBtYXhUcmFja0JyZWFkdGggPSB0cmFja1NpemUubWF4VHJhY2tC
cmVhZHRoKCk7CiAgICAgLy8gSWYgdGhlIGxvZ2ljYWwgd2lkdGgvaGVpZ2h0IG9mIHRoZSBncmlk
IGNvbnRhaW5lciBpcyBpbmRlZmluaXRlLCBwZXJjZW50YWdlCiAgICAgLy8gdmFsdWVzIGFyZSB0
cmVhdGVkIGFzIDxhdXRvPi4KICAgICBpZiAoaXNSZWxhdGl2ZUdyaWRMZW5ndGhBc0F1dG8odHJh
Y2tTaXplLm1pblRyYWNrQnJlYWR0aCgpLCBkaXJlY3Rpb24pKQotICAgICAgICBtaW5UcmFja0Jy
ZWFkdGggPSBMZW5ndGgoQXV0byk7CisgICAgICAgIG1pblRyYWNrQnJlYWR0aCA9IExlbmd0aChM
ZW5ndGhUeXBlOjpBdXRvKTsKICAgICBpZiAoaXNSZWxhdGl2ZUdyaWRMZW5ndGhBc0F1dG8odHJh
Y2tTaXplLm1heFRyYWNrQnJlYWR0aCgpLCBkaXJlY3Rpb24pKQotICAgICAgICBtYXhUcmFja0Jy
ZWFkdGggPSBMZW5ndGgoQXV0byk7CisgICAgICAgIG1heFRyYWNrQnJlYWR0aCA9IExlbmd0aChM
ZW5ndGhUeXBlOjpBdXRvKTsKIAogICAgIC8vIEZsZXggc2l6ZXMgYXJlIGludmFsaWQgYXMgYSBt
aW4gc2l6aW5nIGZ1bmN0aW9uLiBIb3dldmVyIHdlIHN0aWxsIGNhbiBoYXZlIGEgZmxleGlibGUg
fG1pblRyYWNrQnJlYWR0aHwKICAgICAvLyBpZiB0aGUgdHJhY2sgc2l6ZSBpcyBqdXN0IGEgZmxl
eCBzaXplIChlLmcuICIxZnIiKSwgdGhlIHNwZWMgc2F5cyB0aGF0IGluIHRoaXMgY2FzZSBpdCBp
bXBsaWVzIGFuIGF1dG9tYXRpYyBtaW5pbXVtLgogICAgIGlmIChtaW5UcmFja0JyZWFkdGguaXNG
bGV4KCkpCi0gICAgICAgIG1pblRyYWNrQnJlYWR0aCA9IExlbmd0aChBdXRvKTsKKyAgICAgICAg
bWluVHJhY2tCcmVhZHRoID0gTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pOwogCiAgICAgcmV0dXJu
IEdyaWRUcmFja1NpemUobWluVHJhY2tCcmVhZHRoLCBtYXhUcmFja0JyZWFkdGgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA0MzE4NDdj
NDY1N2ZjMDNjMmNhNzE1M2EzNzYzOWE1OGEyYzEwYTEwLi5hNWU4ZDEyNTcyZmI0NzdkMmJlNTFh
OWU4NzdjOGIwOGRmNDIwN2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcApAQCAtMzg0Myw3ICszODQzLDcgQEAgc3RhdGljIGJvb2wgaXNOb25CbG9j
a3NPck5vbkZpeGVkSGVpZ2h0TGlzdEl0ZW1zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIp
CiAgICAgaWYgKCFyZW5kZXJlci5pc1JlbmRlckJsb2NrKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIGlmIChyZW5kZXJlci5pc0xpc3RJdGVtKCkpCi0gICAgICAgIHJldHVybiByZW5kZXJl
ci5zdHlsZSgpLmhlaWdodCgpLnR5cGUoKSAhPSBGaXhlZDsKKyAgICAgICAgcmV0dXJuIHJlbmRl
cmVyLnN0eWxlKCkuaGVpZ2h0KCkudHlwZSgpICE9IExlbmd0aFR5cGU6OkZpeGVkOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtNDE0Nyw3ICs0MTQ3LDcgQEAgUmVuZGVyT2JqZWN0KiBJbmxp
bmVNaW5NYXhJdGVyYXRvcjo6bmV4dCgpCiAKIHN0YXRpYyBMYXlvdXRVbml0IGdldEJQTVdpZHRo
KExheW91dFVuaXQgY2hpbGRWYWx1ZSwgTGVuZ3RoIGNzc1VuaXQpCiB7Ci0gICAgaWYgKGNzc1Vu
aXQudHlwZSgpICE9IEF1dG8pCisgICAgaWYgKGNzc1VuaXQudHlwZSgpICE9IExlbmd0aFR5cGU6
OkF1dG8pCiAgICAgICAgIHJldHVybiAoY3NzVW5pdC5pc0ZpeGVkKCkgPyBMYXlvdXRVbml0KGNz
c1VuaXQudmFsdWUoKSkgOiBjaGlsZFZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggMjhjMDgyZTQ4MGFkMGFjMmEwMjA1MDE3
MTdhMDU4ZGY3MzA0Njc4Zi4uNjEwYmQxOTU4YTYxYTY0NWEzN2U5MGJmNTA0OTMzMGRlMjc2YTUx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTY2Niw3ICs2NjYs
NyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbFdpZHRoSW5GcmFnbWVu
dEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbAogICAgIGlmIChzdHlsZVRvVXNlLmhhc0FzcGVj
dFJhdGlvKCkgJiYgc3R5bGVUb1VzZS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKSAmJiBtaW5MZW5n
dGguaXNBdXRvKCkgJiYgc3R5bGVUb1VzZS5vdmVyZmxvd0lubGluZURpcmVjdGlvbigpID09IE92
ZXJmbG93OjpWaXNpYmxlKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBhY3R1YWxseSB1c2Vk
IHRoZSBhc3BlY3QgcmF0aW8uCiAgICAgICAgIGlmIChzaG91bGRDb21wdXRlTG9naWNhbFdpZHRo
RnJvbUFzcGVjdFJhdGlvKCkpCi0gICAgICAgICAgICBtaW5MZW5ndGggPSBMZW5ndGgoTWluQ29u
dGVudCk7CisgICAgICAgICAgICBtaW5MZW5ndGggPSBMZW5ndGgoTGVuZ3RoVHlwZTo6TWluQ29u
dGVudCk7CiAgICAgfQogICAgIHJldHVybiBzdGQ6Om1heChsb2dpY2FsV2lkdGgsIGNvbXB1dGVM
b2dpY2FsV2lkdGhJbkZyYWdtZW50VXNpbmcoTWluU2l6ZSwgbWluTGVuZ3RoLCBhdmFpbGFibGVX
aWR0aCwgY2IsIGZyYWdtZW50KSk7CiB9CkBAIC02ODAsNyArNjgwLDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQsIE8KICAgICB9CiAgICAgYXV0byBsb2dpY2FsTWluSGVpZ2h0ID0gc3R5bGVUb1Vz
ZS5sb2dpY2FsTWluSGVpZ2h0KCk7CiAgICAgaWYgKGxvZ2ljYWxNaW5IZWlnaHQuaXNBdXRvKCkg
JiYgc2hvdWxkQ29tcHV0ZUxvZ2ljYWxIZWlnaHRGcm9tQXNwZWN0UmF0aW8oKSAmJiBpbnRyaW5z
aWNDb250ZW50SGVpZ2h0ICYmIHN0eWxlVG9Vc2Uub3ZlcmZsb3dCbG9ja0RpcmVjdGlvbigpID09
IE92ZXJmbG93OjpWaXNpYmxlKQotICAgICAgICBsb2dpY2FsTWluSGVpZ2h0ID0gTGVuZ3RoKCpp
bnRyaW5zaWNDb250ZW50SGVpZ2h0LCBGaXhlZCk7CisgICAgICAgIGxvZ2ljYWxNaW5IZWlnaHQg
PSBMZW5ndGgoKmludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExlbmd0aFR5cGU6OkZpeGVkKTsKICAg
ICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRMb2dpY2FsSGVpZ2h0ID0gY29tcHV0
ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBsb2dpY2FsTWluSGVpZ2h0LCBpbnRyaW5zaWND
b250ZW50SGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGxvZ2ljYWxIZWlnaHQsIGNv
bXB1dGVkTG9naWNhbEhlaWdodC52YWx1ZSgpKTsKICAgICByZXR1cm4gbG9naWNhbEhlaWdodDsK
QEAgLTEyOTgsOCArMTI5OCw4IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjphZGp1c3RCb3JkZXJC
b3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoY29uc3QgTGVuZ3RoJiBsb2dpCiAKIExheW91dFVu
aXQgUmVuZGVyQm94OjphZGp1c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoTGF5
b3V0VW5pdCBjb21wdXRlZExvZ2ljYWxXaWR0aCwgTGVuZ3RoVHlwZSBvcmlnaW5hbFR5cGUpIGNv
bnN0CiB7Ci0gICAgaWYgKG9yaWdpbmFsVHlwZSA9PSBDYWxjdWxhdGVkKQotICAgICAgICByZXR1
cm4gYWRqdXN0Qm9yZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHsgY29tcHV0ZWRMb2dp
Y2FsV2lkdGgsIEZpeGVkLCBmYWxzZSB9KTsKKyAgICBpZiAob3JpZ2luYWxUeXBlID09IExlbmd0
aFR5cGU6OkNhbGN1bGF0ZWQpCisgICAgICAgIHJldHVybiBhZGp1c3RCb3JkZXJCb3hMb2dpY2Fs
V2lkdGhGb3JCb3hTaXppbmcoeyBjb21wdXRlZExvZ2ljYWxXaWR0aCwgTGVuZ3RoVHlwZTo6Rml4
ZWQsIGZhbHNlIH0pOwogICAgIHJldHVybiBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JC
b3hTaXppbmcoeyBjb21wdXRlZExvZ2ljYWxXaWR0aCwgb3JpZ2luYWxUeXBlLCBmYWxzZSB9KTsK
IH0KIApAQCAtMTMyMSw4ICsxMzIxLDggQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmFkanVzdENv
bnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoY29uc3QgTGVuZ3RoJiBsb2cKIAogTGF5
b3V0VW5pdCBSZW5kZXJCb3g6OmFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXpp
bmcoTGF5b3V0VW5pdCBjb21wdXRlZExvZ2ljYWxXaWR0aCwgTGVuZ3RoVHlwZSBvcmlnaW5hbFR5
cGUpIGNvbnN0CiB7Ci0gICAgaWYgKG9yaWdpbmFsVHlwZSA9PSBDYWxjdWxhdGVkKQotICAgICAg
ICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyh7IGNvbXB1
dGVkTG9naWNhbFdpZHRoLCBGaXhlZCwgZmFsc2UgfSk7CisgICAgaWYgKG9yaWdpbmFsVHlwZSA9
PSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkKQorICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJv
eExvZ2ljYWxXaWR0aEZvckJveFNpemluZyh7IGNvbXB1dGVkTG9naWNhbFdpZHRoLCBMZW5ndGhU
eXBlOjpGaXhlZCwgZmFsc2UgfSk7CiAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2Fs
V2lkdGhGb3JCb3hTaXppbmcoeyBjb21wdXRlZExvZ2ljYWxXaWR0aCwgb3JpZ2luYWxUeXBlLCBm
YWxzZSB9KTsKIH0KIApAQCAtMjUyOSw3ICsyNTI5LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVMb2dpY2FsV2lkdGhJbkZyYWdtZW50KExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29t
cHUKICAgICB0cmVhdEFzUmVwbGFjZWQgPSB0cmVhdEFzUmVwbGFjZWQgJiYgKCFpc0dyaWRJdGVt
KCkgfHwgIWhhc1N0cmV0Y2hlZExvZ2ljYWxXaWR0aCgpKTsKIAogICAgIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKLSAgICBMZW5ndGggbG9naWNhbFdpZHRoTGVuZ3Ro
ID0gdHJlYXRBc1JlcGxhY2VkID8gTGVuZ3RoKGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aCgp
LCBGaXhlZCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxXaWR0aCgpOworICAgIExlbmd0aCBsb2dpY2Fs
V2lkdGhMZW5ndGggPSB0cmVhdEFzUmVwbGFjZWQgPyBMZW5ndGgoY29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoKCksIExlbmd0aFR5cGU6OkZpeGVkKSA6IHN0eWxlVG9Vc2UubG9naWNhbFdpZHRo
KCk7CiAKICAgICBSZW5kZXJCbG9jayYgY2IgPSAqY29udGFpbmluZ0Jsb2NrKCk7CiAgICAgTGF5
b3V0VW5pdCBjb250YWluZXJMb2dpY2FsV2lkdGggPSBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBj
b250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50SW5GcmFnbWVudChmcmFnbWVudCkp
OwpAQCAtMjYwNSwyMCArMjYwNSwyMCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6ZmlsbEF2YWls
YWJsZU1lYXN1cmUoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIExheQogCiBMYXlv
dXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVzaW5nKExlbmd0
aCBsb2dpY2FsV2lkdGhMZW5ndGgsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBM
YXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmcpIGNvbnN0CiB7Ci0gICAgaWYgKGxvZ2ljYWxXaWR0
aExlbmd0aC50eXBlKCkgPT0gRmlsbEF2YWlsYWJsZSkKKyAgICBpZiAobG9naWNhbFdpZHRoTGVu
Z3RoLmlzRmlsbEF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gc3RkOjptYXgoYm9yZGVyQW5k
UGFkZGluZywgZmlsbEF2YWlsYWJsZU1lYXN1cmUoYXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7CiAK
ICAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxXaWR0aDsKICAgICBMYXlvdXRVbml0IG1heExvZ2lj
YWxXaWR0aDsKICAgICBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhtaW5Mb2dpY2FsV2lk
dGgsIG1heExvZ2ljYWxXaWR0aCk7CiAKLSAgICBpZiAobG9naWNhbFdpZHRoTGVuZ3RoLnR5cGUo
KSA9PSBNaW5Db250ZW50KQorICAgIGlmIChsb2dpY2FsV2lkdGhMZW5ndGguaXNNaW5Db250ZW50
KCkpCiAgICAgICAgIHJldHVybiBtaW5Mb2dpY2FsV2lkdGggKyBib3JkZXJBbmRQYWRkaW5nOwog
Ci0gICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0aC50eXBlKCkgPT0gTWF4Q29udGVudCkKKyAgICBp
ZiAobG9naWNhbFdpZHRoTGVuZ3RoLmlzTWF4Q29udGVudCgpKQogICAgICAgICByZXR1cm4gbWF4
TG9naWNhbFdpZHRoICsgYm9yZGVyQW5kUGFkZGluZzsKIAotICAgIGlmIChsb2dpY2FsV2lkdGhM
ZW5ndGgudHlwZSgpID09IEZpdENvbnRlbnQpIHsKKyAgICBpZiAobG9naWNhbFdpZHRoTGVuZ3Ro
LmlzRml0Q29udGVudCgpKSB7CiAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCArPSBib3JkZXJBbmRQ
YWRkaW5nOwogICAgICAgICBtYXhMb2dpY2FsV2lkdGggKz0gYm9yZGVyQW5kUGFkZGluZzsKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4KG1pbkxvZ2ljYWxXaWR0aCwgc3RkOjptaW4obWF4TG9naWNh
bFdpZHRoLCBmaWxsQXZhaWxhYmxlTWVhc3VyZShhdmFpbGFibGVMb2dpY2FsV2lkdGgpKSk7CkBA
IC0yNzA3LDcgKzI3MDcsNyBAQCBib29sIFJlbmRlckJveDo6c2l6ZXNMb2dpY2FsV2lkdGhUb0Zp
dENvbnRlbnQoU2l6ZVR5cGUgd2lkdGhUeXBlKSBjb25zdAogICAgIC8vIFRoaXMgY29kZSBtYXkg
bG9vayBhIGJpdCBzdHJhbmdlLiAgQmFzaWNhbGx5IHdpZHRoOmludHJpbnNpYyBzaG91bGQgY2xh
bXAgdGhlIHNpemUgd2hlbiB0ZXN0aW5nIGJvdGgKICAgICAvLyBtaW4td2lkdGggYW5kIHdpZHRo
LiAgbWF4LXdpZHRoIGlzIG9ubHkgY2xhbXBlZCBpZiBpdCBpcyBhbHNvIGludHJpbnNpYy4KICAg
ICBMZW5ndGggbG9naWNhbFdpZHRoID0gKHdpZHRoVHlwZSA9PSBNYXhTaXplKSA/IHN0eWxlKCku
bG9naWNhbE1heFdpZHRoKCkgOiBzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpOwotICAgIGlmIChsb2dp
Y2FsV2lkdGgudHlwZSgpID09IEludHJpbnNpYykKKyAgICBpZiAobG9naWNhbFdpZHRoLnR5cGUo
KSA9PSBMZW5ndGhUeXBlOjpJbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gQ2hpbGRyZW4gb2YgYSBob3Jpem9udGFsIG1hcnF1ZWUgZG8gbm90IGZpbGwgdGhlIGNvbnRh
aW5lciBieSBkZWZhdWx0LgpAQCAtMjc0OSw3ICsyNzQ5LDcgQEAgYm9vbCBSZW5kZXJCb3g6OnNp
emVzTG9naWNhbFdpZHRoVG9GaXRDb250ZW50KFNpemVUeXBlIHdpZHRoVHlwZSkgY29uc3QKICAg
ICAvLyBzdHJldGNoaW5nIGNvbHVtbiBmbGV4Ym94LgogICAgIC8vIEZJWE1FOiBUaGluayBhYm91
dCBibG9jay1mbG93IGhlcmUuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ2NDczCi0gICAgaWYgKGxvZ2ljYWxXaWR0aC50eXBlKCkgPT0gQXV0byAmJiAh
aXNTdHJldGNoaW5nQ29sdW1uRmxleEl0ZW0oKSAmJiBlbGVtZW50KCkgJiYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KCplbGVtZW50KCkpIHx8IGlzPEhUTUxTZWxlY3RFbGVtZW50PigqZWxlbWVudCgp
KSB8fCBpczxIVE1MQnV0dG9uRWxlbWVudD4oKmVsZW1lbnQoKSkgfHwgaXM8SFRNTFRleHRBcmVh
RWxlbWVudD4oKmVsZW1lbnQoKSkgfHwgaXM8SFRNTExlZ2VuZEVsZW1lbnQ+KCplbGVtZW50KCkp
KSkKKyAgICBpZiAobG9naWNhbFdpZHRoLmlzQXV0bygpICYmICFpc1N0cmV0Y2hpbmdDb2x1bW5G
bGV4SXRlbSgpICYmIGVsZW1lbnQoKSAmJiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQo
KSkgfHwgaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KCplbGVtZW50KCkpIHx8IGlzPEhUTUxCdXR0b25F
bGVtZW50PigqZWxlbWVudCgpKSB8fCBpczxIVE1MVGV4dEFyZWFFbGVtZW50PigqZWxlbWVudCgp
KSB8fCBpczxIVE1MTGVnZW5kRWxlbWVudD4oKmVsZW1lbnQoKSkpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9IGNvbnRhaW5pbmdC
bG9jaygpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQpAQCAtMjc3Nyw5ICsyNzc3LDkgQEAg
dm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKGNvbnN0IFJlbmRl
ckJsb2NrJiBjb250YWluaW5nQmxvY2sKICAgICAgICAgLy8gd2lsbCB0aGluayB3ZSdyZSB3aWRl
ciB0aGFuIHdlIGFjdHVhbGx5IGFyZSBhbmQgY2FsY3VsYXRlIGxpbmUgc2l6ZXMKICAgICAgICAg
Ly8gd3JvbmcuIFNlZSBhbHNvIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1mbGV4Ym94LyNh
dXRvLW1hcmdpbnMKICAgICAgICAgaWYgKG1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygpKQotICAg
ICAgICAgICAgbWFyZ2luU3RhcnRMZW5ndGggPSBMZW5ndGgoMCwgRml4ZWQpOworICAgICAgICAg
ICAgbWFyZ2luU3RhcnRMZW5ndGggPSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAg
ICAgICBpZiAobWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpKQotICAgICAgICAgICAgbWFyZ2luRW5k
TGVuZ3RoID0gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICAgICAgICAgIG1hcmdpbkVuZExlbmd0aCA9
IExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgfQogCiAgICAgLy8gQ2FzZSBPbmU6
IFRoZSBvYmplY3QgaXMgYmVpbmcgY2VudGVyZWQgaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBh
dmFpbGFibGUgbG9naWNhbCB3aWR0aC4KQEAgLTI5MjQsOSArMjkyNCw5IEBAIFJlbmRlckJveDo6
TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWln
aHQoTGF5b3V0VW5pCiAgICAgICAgIC8vIEZJWE1FOiBBY2NvdW50IGZvciBibG9jay1mbG93IGlu
IGZsZXhpYmxlIGJveGVzLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDY0MTgKICAgICAgICAgaWYgKGhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0
KCkgJiYgKHBhcmVudCgpLT5pc0ZsZXhpYmxlQm94SW5jbHVkaW5nRGVwcmVjYXRlZCgpIHx8IHBh
cmVudCgpLT5pc1JlbmRlckdyaWQoKSkpIHsKLSAgICAgICAgICAgIGggPSBMZW5ndGgob3ZlcnJp
ZGluZ0xvZ2ljYWxIZWlnaHQoKSwgRml4ZWQpOworICAgICAgICAgICAgaCA9IExlbmd0aChvdmVy
cmlkaW5nTG9naWNhbEhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAodHJlYXRBc1JlcGxhY2VkKQotICAgICAgICAgICAgaCA9IExlbmd0aChjb21wdXRlUmVw
bGFjZWRMb2dpY2FsSGVpZ2h0KCkgKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpLCBG
aXhlZCk7CisgICAgICAgICAgICBoID0gTGVuZ3RoKGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWln
aHQoKSArIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCksIExlbmd0aFR5cGU6OkZpeGVk
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBoID0gc3R5bGUoKS5sb2dpY2FsSGVpZ2h0
KCk7CiAgICAgICAgICAgICBjaGVja01pbk1heEhlaWdodCA9IHRydWU7CkBAIC0yOTM3LDcgKzI5
MzcsNyBAQCBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBSZW5kZXJCb3g6
OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaQogICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0MTgKICAgICAgICAgaWYgKGguaXNBdXRvKCkg
JiYgaXM8UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94PigqcGFyZW50KCkpICYmIHBhcmVudCgp
LT5zdHlsZSgpLmJveE9yaWVudCgpID09IEJveE9yaWVudDo6SG9yaXpvbnRhbAogICAgICAgICAg
ICAgICAgICYmIGRvd25jYXN0PFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveD4oKnBhcmVudCgp
KS5pc1N0cmV0Y2hpbmdDaGlsZHJlbigpKSB7Ci0gICAgICAgICAgICBoID0gTGVuZ3RoKHBhcmVu
dEJveCgpLT5jb250ZW50TG9naWNhbEhlaWdodCgpIC0gbWFyZ2luQmVmb3JlKCkgLSBtYXJnaW5B
ZnRlcigpLCBGaXhlZCk7CisgICAgICAgICAgICBoID0gTGVuZ3RoKHBhcmVudEJveCgpLT5jb250
ZW50TG9naWNhbEhlaWdodCgpIC0gbWFyZ2luQmVmb3JlKCkgLSBtYXJnaW5BZnRlcigpLCBMZW5n
dGhUeXBlOjpGaXhlZCk7CiAgICAgICAgICAgICBjaGVja01pbk1heEhlaWdodCA9IGZhbHNlOwog
ICAgICAgICB9CiAKQEAgLTMxNjgsMzcgKzMxNjgsMzcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6
OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoVHlwZSwgTGVu
Z3QKICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXpp
bmcoMCwgbG9naWNhbFdpZHRoLnR5cGUoKSk7CiAKICAgICBzd2l0Y2ggKGxvZ2ljYWxXaWR0aC50
eXBlKCkpIHsKLSAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgIHJldHVybiBhZGp1c3RD
b250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKGxvZ2ljYWxXaWR0aCk7Ci0gICAgICAg
IGNhc2UgTWluQ29udGVudDoKLSAgICAgICAgY2FzZSBNYXhDb250ZW50OiB7Ci0gICAgICAgICAg
ICAvLyBNaW5Db250ZW50L01heENvbnRlbnQgZG9uJ3QgbmVlZCB0aGUgYXZhaWxhYmxlTG9naWNh
bFdpZHRoIGFyZ3VtZW50LgotICAgICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2Fs
V2lkdGg7Ci0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVz
aW5nKGxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBib3JkZXJBbmRQYWRkaW5n
TG9naWNhbFdpZHRoKCkpIC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgRml0Q29udGVudDoKLSAgICAgICAgY2FzZSBGaWxsQXZhaWxhYmxl
OgotICAgICAgICBjYXNlIFBlcmNlbnQ6IAotICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6IHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50
KCkgaXMgd3JvbmcgaWYgdGhlIHJlcGxhY2VkIGVsZW1lbnQncyBibG9jay1mbG93IGlzIHBlcnBl
bmRpY3VsYXIgdG8gdGhlCi0gICAgICAgICAgICAvLyBjb250YWluaW5nIGJsb2NrJ3MgYmxvY2st
Zmxvdy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NjQ5NgotICAgICAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBjdyA9IGlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpID8gY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9zaXRpb25lZChk
b3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKmNvbnRhaW5lcigpKSkgOiBjb250YWluaW5n
QmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCk7Ci0gICAgICAgICAgICBMZW5ndGggY29udGFp
bmVyTG9naWNhbFdpZHRoID0gY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkubG9naWNhbFdpZHRo
KCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIGNhc2VzIHdoZW4gY29udGFpbmluZyBi
bG9jayB3aWR0aCBpcyBjYWxjdWxhdGVkIG9yIHZpZXdwb3J0IHBlcmNlbnQuCi0gICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEwNzEKLSAgICAg
ICAgICAgIGlmIChsb2dpY2FsV2lkdGguaXNJbnRyaW5zaWMoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVzaW5nKGxvZ2ljYWxXaWR0aCwgY3cs
IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSkgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNh
bFdpZHRoKCk7Ci0gICAgICAgICAgICBpZiAoY3cgPiAwIHx8ICghY3cgJiYgKGNvbnRhaW5lckxv
Z2ljYWxXaWR0aC5pc0ZpeGVkKCkgfHwgY29udGFpbmVyTG9naWNhbFdpZHRoLmlzUGVyY2VudE9y
Q2FsY3VsYXRlZCgpKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hM
b2dpY2FsV2lkdGhGb3JCb3hTaXppbmcobWluaW11bVZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0
aCwgY3cpLCBsb2dpY2FsV2lkdGgudHlwZSgpKTsKLSAgICAgICAgICAgIHJldHVybiAwX2x1Owot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgSW50cmluc2ljOgotICAgICAgICBjYXNlIE1pbkludHJp
bnNpYzoKLSAgICAgICAgY2FzZSBBdXRvOgotICAgICAgICBjYXNlIFJlbGF0aXZlOgotICAgICAg
ICBjYXNlIFVuZGVmaW5lZDoKLSAgICAgICAgICAgIHJldHVybiBpbnRyaW5zaWNMb2dpY2FsV2lk
dGgoKTsKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZpeGVkOgorICAgICAgICByZXR1cm4gYWRqdXN0
Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhsb2dpY2FsV2lkdGgpOworICAgIGNh
c2UgTGVuZ3RoVHlwZTo6TWluQ29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1heENvbnRl
bnQ6IHsKKyAgICAgICAgLy8gTWluQ29udGVudC9NYXhDb250ZW50IGRvbid0IG5lZWQgdGhlIGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCBhcmd1bWVudC4KKyAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFi
bGVMb2dpY2FsV2lkdGg7CisgICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNhbFdp
ZHRoVXNpbmcobG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGJvcmRlckFuZFBh
ZGRpbmdMb2dpY2FsV2lkdGgoKSkgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7Cisg
ICAgfQorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml0Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5
cGU6OkZpbGxBdmFpbGFibGU6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpQZXJjZW50OgorICAgIGNh
c2UgTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZDogeworICAgICAgICAvLyBGSVhNRTogY29udGFpbmlu
Z0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpIGlzIHdyb25nIGlmIHRoZSByZXBsYWNlZCBl
bGVtZW50J3MgYmxvY2stZmxvdyBpcyBwZXJwZW5kaWN1bGFyIHRvIHRoZQorICAgICAgICAvLyBj
b250YWluaW5nIGJsb2NrJ3MgYmxvY2stZmxvdy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NDk2CisgICAgICAgIGNvbnN0IExheW91dFVuaXQg
Y3cgPSBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0
aEZvclBvc2l0aW9uZWQoZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpjb250YWluZXIo
KSkpIDogY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpOworICAgICAgICBM
ZW5ndGggY29udGFpbmVyTG9naWNhbFdpZHRoID0gY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCku
bG9naWNhbFdpZHRoKCk7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgY2FzZXMgd2hlbiBjb250
YWluaW5nIGJsb2NrIHdpZHRoIGlzIGNhbGN1bGF0ZWQgb3Igdmlld3BvcnQgcGVyY2VudC4KKyAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDcxCisg
ICAgICAgIGlmIChsb2dpY2FsV2lkdGguaXNJbnRyaW5zaWMoKSkKKyAgICAgICAgICAgIHJldHVy
biBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcobG9naWNhbFdpZHRoLCBjdywgYm9y
ZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpKSAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lk
dGgoKTsKKyAgICAgICAgaWYgKGN3ID4gMCB8fCAoIWN3ICYmIChjb250YWluZXJMb2dpY2FsV2lk
dGguaXNGaXhlZCgpIHx8IGNvbnRhaW5lckxvZ2ljYWxXaWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0
ZWQoKSkpKQorICAgICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhG
b3JCb3hTaXppbmcobWluaW11bVZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY3cpLCBsb2dp
Y2FsV2lkdGgudHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIDBfbHU7CisgICAgfQorICAgIGNhc2Ug
TGVuZ3RoVHlwZTo6SW50cmluc2ljOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWluSW50cmluc2lj
OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6QXV0bzoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlJlbGF0
aXZlOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6VW5kZWZpbmVkOgorICAgICAgICByZXR1cm4gaW50
cmluc2ljTG9naWNhbFdpZHRoKCk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0zMjc5LDc3ICszMjc5LDc2IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVw
bGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgTGVuCiAgICAgICAg
IHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhPcHRpb25h
bDxMYXlvdXRVbml0PigwKSk7CiAKICAgICBzd2l0Y2ggKGxvZ2ljYWxIZWlnaHQudHlwZSgpKSB7
Ci0gICAgICAgIGNhc2UgRml4ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJv
eExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdChsb2dpY2FsSGVpZ2h0LnZhbHVl
KCkpKTsKLSAgICAgICAgY2FzZSBQZXJjZW50OgotICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8qIGNvbnRhaW5lciA9IGlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpID8gdGhpcy0+Y29udGFpbmVyKCkgOiBjb250YWluaW5nQmxvY2soKTsKLSAgICAgICAg
ICAgIHdoaWxlIChjb250YWluZXIgJiYgY29udGFpbmVyLT5pc0Fub255bW91cygpKSB7Ci0gICAg
ICAgICAgICAgICAgLy8gU3RvcCBhdCByZW5kZXJpbmcgY29udGV4dCByb290LgotICAgICAgICAg
ICAgICAgIGlmIChpczxSZW5kZXJWaWV3PigqY29udGFpbmVyKSkKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250YWlu
aW5nQmxvY2soKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJvb2wgaGFzUGVycGVuZGlj
dWxhckNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5lci0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSAhPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwotICAgICAgICAgICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gc3RyZXRjaGVkSGVpZ2h0OwotICAgICAgICAgICAgaWYgKGlzPFJlbmRlckJsb2Nr
Pihjb250YWluZXIpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byogYmxvY2sgPSBkb3duY2FzdDxS
ZW5kZXJCbG9jaz4oY29udGFpbmVyKTsKLSAgICAgICAgICAgICAgICBibG9jay0+YWRkUGVyY2Vu
dEhlaWdodERlc2NlbmRhbnQoKmNvbnN0X2Nhc3Q8UmVuZGVyQm94Kj4odGhpcykpOwotICAgICAg
ICAgICAgICAgIGlmIChibG9jay0+aXNGbGV4SXRlbSgpKQotICAgICAgICAgICAgICAgICAgICBz
dHJldGNoZWRIZWlnaHQgPSBkb3duY2FzdDxSZW5kZXJGbGV4aWJsZUJveD4oYmxvY2stPnBhcmVu
dCgpKS0+Y2hpbGRMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZVJlc29sdXRpb24oKmJsb2NrKTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChibG9jay0+aXNHcmlkSXRlbSgpICYmIGJsb2NrLT5o
YXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpICYmICFoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmlu
Z0Jsb2NrKQotICAgICAgICAgICAgICAgICAgICBzdHJldGNoZWRIZWlnaHQgPSBibG9jay0+b3Zl
cnJpZGluZ0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICB9CisgICAgY2FzZSBM
ZW5ndGhUeXBlOjpGaXhlZDoKKyAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2Fs
SGVpZ2h0Rm9yQm94U2l6aW5nKExheW91dFVuaXQobG9naWNhbEhlaWdodC52YWx1ZSgpKSk7Cisg
ICAgY2FzZSBMZW5ndGhUeXBlOjpQZXJjZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Q2FsY3Vs
YXRlZDogeworICAgICAgICBhdXRvKiBjb250YWluZXIgPSBpc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSA/IHRoaXMtPmNvbnRhaW5lcigpIDogY29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIHdoaWxl
IChjb250YWluZXIgJiYgY29udGFpbmVyLT5pc0Fub255bW91cygpKSB7CisgICAgICAgICAgICAv
LyBTdG9wIGF0IHJlbmRlcmluZyBjb250ZXh0IHJvb3QuCisgICAgICAgICAgICBpZiAoaXM8UmVu
ZGVyVmlldz4oKmNvbnRhaW5lcikpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICB9Cisg
ICAgICAgIGJvb2wgaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5lci0+
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAhPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwor
ICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBzdHJldGNoZWRIZWlnaHQ7CisgICAgICAgIGlm
IChpczxSZW5kZXJCbG9jaz4oY29udGFpbmVyKSkgeworICAgICAgICAgICAgYXV0byogYmxvY2sg
PSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oY29udGFpbmVyKTsKKyAgICAgICAgICAgIGJsb2NrLT5h
ZGRQZXJjZW50SGVpZ2h0RGVzY2VuZGFudCgqY29uc3RfY2FzdDxSZW5kZXJCb3gqPih0aGlzKSk7
CisgICAgICAgICAgICBpZiAoYmxvY2stPmlzRmxleEl0ZW0oKSkKKyAgICAgICAgICAgICAgICBz
dHJldGNoZWRIZWlnaHQgPSBkb3duY2FzdDxSZW5kZXJGbGV4aWJsZUJveD4oYmxvY2stPnBhcmVu
dCgpKS0+Y2hpbGRMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZVJlc29sdXRpb24oKmJsb2NrKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKGJsb2NrLT5pc0dyaWRJdGVtKCkgJiYgYmxvY2stPmhhc092
ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgJiYgIWhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxv
Y2spCisgICAgICAgICAgICAgICAgc3RyZXRjaGVkSGVpZ2h0ID0gYmxvY2stPm92ZXJyaWRpbmdD
b250ZW50TG9naWNhbEhlaWdodCgpOworICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGNhbGN1bGF0aW9uIGlzIG5vdCBwYXRjaGVkIGZvciBibG9jay1mbG93IHlldC4KLSAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjUw
MAotICAgICAgICAgICAgaWYgKGNvbnRhaW5lci0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkKLSAg
ICAgICAgICAgICAgICAmJiBjb250YWluZXItPnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkKLSAg
ICAgICAgICAgICAgICAmJiAhKGNvbnRhaW5lci0+c3R5bGUoKS50b3AoKS5pc0F1dG8oKSB8fCBj
b250YWluZXItPnN0eWxlKCkuYm90dG9tKCkuaXNBdXRvKCkpKSB7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGFpbmVyLT5pc1JlbmRlckJsb2Nr
KCkpOwotICAgICAgICAgICAgICAgIGF1dG8mIGJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+
KCpjb250YWluZXIpOwotICAgICAgICAgICAgICAgIGF1dG8gY29tcHV0ZWRWYWx1ZXMgPSBibG9j
ay5jb21wdXRlTG9naWNhbEhlaWdodChibG9jay5sb2dpY2FsSGVpZ2h0KCksIDApOwotICAgICAg
ICAgICAgICAgIExheW91dFVuaXQgbmV3Q29udGVudEhlaWdodCA9IGNvbXB1dGVkVmFsdWVzLm1f
ZXh0ZW50IC0gYmxvY2suYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIGJsb2NrLnNj
cm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRqdXN0Q29u
dGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbEhl
aWdodCwgbmV3Q29udGVudEhlaWdodCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0g
ICAgICAgICAgICAvLyBGSVhNRTogYXZhaWxhYmxlTG9naWNhbEhlaWdodCgpIGlzIHdyb25nIGlm
IHRoZSByZXBsYWNlZCBlbGVtZW50J3MgYmxvY2stZmxvdyBpcyBwZXJwZW5kaWN1bGFyIHRvIHRo
ZQotICAgICAgICAgICAgLy8gY29udGFpbmluZyBibG9jaydzIGJsb2NrLWZsb3cuCi0gICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTYKLSAg
ICAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlSGVpZ2h0OwotICAgICAgICAgICAgaWYgKGlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpKQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9
IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRGb3JQb3NpdGlvbmVkKGRvd25jYXN0PFJlbmRl
ckJveE1vZGVsT2JqZWN0PigqY29udGFpbmVyKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdHJl
dGNoZWRIZWlnaHQpCi0gICAgICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gc3RyZXRjaGVk
SGVpZ2h0LnZhbHVlKCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdmFp
bGFibGVIZWlnaHQgPSBoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrID8gY29udGFpbmlu
Z0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpIDogY29udGFpbmluZ0Jsb2NrTG9naWNhbEhl
aWdodEZvckNvbnRlbnQoSW5jbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOwotICAgICAgICAgICAg
ICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGJvcmRlci1ib3ggdG8gbWF0Y2ggV2lu
SUUncyBicm9rZW4KLSAgICAgICAgICAgICAgICAvLyBib3ggbW9kZWwuICBUaGlzIGlzIGVzc2Vu
dGlhbCBmb3Igc2l6aW5nIGluc2lkZQotICAgICAgICAgICAgICAgIC8vIHRhYmxlIGNlbGxzIHVz
aW5nIHBlcmNlbnRhZ2UgaGVpZ2h0cy4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBu
ZWVkcyB0byBiZSBtYWRlIGJsb2NrLWZsb3ctYXdhcmUuICBJZiB0aGUgY2VsbCBhbmQgaW1hZ2Ug
YXJlIHBlcnBlbmRpY3VsYXIgYmxvY2stZmxvd3MsIHRoaXMgaXNuJ3QgcmlnaHQuCi0gICAgICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2OTk3
Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGNvbnRhaW5lciAmJiAhaXM8UmVuZGVyVmlldz4oKmNv
bnRhaW5lcikKLSAgICAgICAgICAgICAgICAgICAgJiYgKGNvbnRhaW5lci0+c3R5bGUoKS5sb2dp
Y2FsSGVpZ2h0KCkuaXNBdXRvKCkgfHwgY29udGFpbmVyLT5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQo
KS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNv
bnRhaW5lci0+aXNUYWJsZUNlbGwoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG9u
J3QgbGV0IHRhYmxlIGNlbGxzIHNxdWVlemUgcGVyY2VudC1oZWlnaHQgcmVwbGFjZWQgZWxlbWVu
dHMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTM1OT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUhl
aWdodCA9IHN0ZDo6bWF4KGF2YWlsYWJsZUhlaWdodCwgaW50cmluc2ljTG9naWNhbEhlaWdodCgp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
SGVpZ2h0LCBhdmFpbGFibGVIZWlnaHQgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgp
KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxS
ZW5kZXJCbG9jaz4oKmNvbnRhaW5lcikuYWRkUGVyY2VudEhlaWdodERlc2NlbmRhbnQoY29uc3Rf
Y2FzdDxSZW5kZXJCb3gmPigqdGhpcykpOwotICAgICAgICAgICAgICAgICAgICBjb250YWluZXIg
PSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICAvLyBGSVhNRTogVGhpcyBj
YWxjdWxhdGlvbiBpcyBub3QgcGF0Y2hlZCBmb3IgYmxvY2stZmxvdyB5ZXQuCisgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjUwMAorICAgICAgICBp
ZiAoY29udGFpbmVyLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKQorICAgICAgICAgICAgJiYgY29u
dGFpbmVyLT5zdHlsZSgpLmhlaWdodCgpLmlzQXV0bygpCisgICAgICAgICAgICAmJiAhKGNvbnRh
aW5lci0+c3R5bGUoKS50b3AoKS5pc0F1dG8oKSB8fCBjb250YWluZXItPnN0eWxlKCkuYm90dG9t
KCkuaXNBdXRvKCkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGNvbnRhaW5lci0+aXNSZW5kZXJCbG9jaygpKTsKKyAgICAgICAgICAgIGF1
dG8mIGJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpjb250YWluZXIpOworICAgICAgICAg
ICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IGJsb2NrLmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGJsb2Nr
LmxvZ2ljYWxIZWlnaHQoKSwgMCk7CisgICAgICAgICAgICBMYXlvdXRVbml0IG5ld0NvbnRlbnRI
ZWlnaHQgPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAtIGJsb2NrLmJvcmRlckFuZFBhZGRpbmdM
b2dpY2FsSGVpZ2h0KCkgLSBibG9jay5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAg
ICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcodmFs
dWVGb3JMZW5ndGgobG9naWNhbEhlaWdodCwgbmV3Q29udGVudEhlaWdodCkpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICAvLyBGSVhNRTogYXZhaWxhYmxlTG9naWNhbEhlaWdodCgpIGlz
IHdyb25nIGlmIHRoZSByZXBsYWNlZCBlbGVtZW50J3MgYmxvY2stZmxvdyBpcyBwZXJwZW5kaWN1
bGFyIHRvIHRoZQorICAgICAgICAvLyBjb250YWluaW5nIGJsb2NrJ3MgYmxvY2stZmxvdy4KKyAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NDk2Cisg
ICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlSGVpZ2h0OworICAgICAgICBpZiAoaXNPdXRPZkZs
b3dQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBjb250YWluaW5n
QmxvY2tMb2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25lZChkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9i
amVjdD4oKmNvbnRhaW5lcikpOworICAgICAgICBlbHNlIGlmIChzdHJldGNoZWRIZWlnaHQpCisg
ICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBzdHJldGNoZWRIZWlnaHQudmFsdWUoKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoYXNQZXJwZW5kaWN1
bGFyQ29udGFpbmluZ0Jsb2NrID8gY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVu
dCgpIDogY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvckNvbnRlbnQoSW5jbHVkZU1hcmdp
bkJvcmRlclBhZGRpbmcpOworICAgICAgICAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIHVzZSB0
aGUgYm9yZGVyLWJveCB0byBtYXRjaCBXaW5JRSdzIGJyb2tlbgorICAgICAgICAgICAgLy8gYm94
IG1vZGVsLiBUaGlzIGlzIGVzc2VudGlhbCBmb3Igc2l6aW5nIGluc2lkZQorICAgICAgICAgICAg
Ly8gdGFibGUgY2VsbHMgdXNpbmcgcGVyY2VudGFnZSBoZWlnaHRzLgorICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgbWFkZSBibG9jay1mbG93LWF3YXJlLiBJZiB0aGUgY2Vs
bCBhbmQgaW1hZ2UgYXJlIHBlcnBlbmRpY3VsYXIgYmxvY2stZmxvd3MsIHRoaXMgaXNuJ3Qgcmln
aHQuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDY5OTcKKyAgICAgICAgICAgIHdoaWxlIChjb250YWluZXIgJiYgIWlzPFJlbmRlclZpZXc+
KCpjb250YWluZXIpCisgICAgICAgICAgICAgICAgJiYgKGNvbnRhaW5lci0+c3R5bGUoKS5sb2dp
Y2FsSGVpZ2h0KCkuaXNBdXRvKCkgfHwgY29udGFpbmVyLT5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQo
KS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29udGFp
bmVyLT5pc1RhYmxlQ2VsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGxldCB0
YWJsZSBjZWxscyBzcXVlZXplIHBlcmNlbnQtaGVpZ2h0IHJlcGxhY2VkIGVsZW1lbnRzCisgICAg
ICAgICAgICAgICAgICAgIC8vIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTM1OT4KKyAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gc3RkOjptYXgo
YXZhaWxhYmxlSGVpZ2h0LCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgobG9naWNhbEhlaWdodCwgYXZhaWxhYmxlSGVp
Z2h0IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CiAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckJsb2NrPigqY29udGFpbmVyKS5hZGRQ
ZXJjZW50SGVpZ2h0RGVzY2VuZGFudChjb25zdF9jYXN0PFJlbmRlckJveCY+KCp0aGlzKSk7Cisg
ICAgICAgICAgICAgICAgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250YWluaW5nQmxvY2soKTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNh
bEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0LCBhdmFpbGFi
bGVIZWlnaHQpKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIE1pbkNvbnRlbnQ6Ci0gICAgICAg
IGNhc2UgTWF4Q29udGVudDoKLSAgICAgICAgY2FzZSBGaXRDb250ZW50OgotICAgICAgICBjYXNl
IEZpbGxBdmFpbGFibGU6Ci0gICAgICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2lj
YWxIZWlnaHRGb3JCb3hTaXppbmcoY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0
VXNpbmcobG9naWNhbEhlaWdodCwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpLCBib3JkZXJBbmRQ
YWRkaW5nTG9naWNhbEhlaWdodCgpKSk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gaW50cmluc2ljTG9naWNhbEhlaWdodCgpOworICAgICAgICByZXR1cm4gYWRqdXN0Q29u
dGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbEhl
aWdodCwgYXZhaWxhYmxlSGVpZ2h0KSk7CisgICAgfQorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWlu
Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1heENvbnRlbnQ6CisgICAgY2FzZSBMZW5n
dGhUeXBlOjpGaXRDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6RmlsbEF2YWlsYWJsZToK
KyAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5n
KGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKGxvZ2ljYWxIZWlnaHQs
IGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSwgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQo
KSkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0
KCk7CiAgICAgfQogfQogCkBAIC0zNTU1LDkgKzM1NTQsOSBAQCBzdGF0aWMgdm9pZCBjb21wdXRl
SW5saW5lU3RhdGljRGlzdGFuY2UoTGVuZ3RoJiBsb2dpY2FsTGVmdCwgTGVuZ3RoJiBsb2dpY2Fs
UmlnaAogICAgIC8vIHRoZW0gKGRlcGVuZGluZyBvbiB0aGUgZGlyZWN0aW9uKSBpcyBzaW1wbHkg
IjAiLgogICAgIGlmIChwYXJlbnQtPmlzUmVuZGVyR3JpZCgpICYmIHBhcmVudCA9PSBjaGlsZC0+
Y29udGFpbmluZ0Jsb2NrKCkpIHsKICAgICAgICAgaWYgKHBhcmVudERpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCi0gICAgICAgICAgICBsb2dpY2FsTGVmdC5zZXRWYWx1ZShGaXhlZCwg
MCk7CisgICAgICAgICAgICBsb2dpY2FsTGVmdC5zZXRWYWx1ZShMZW5ndGhUeXBlOjpGaXhlZCwg
MCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZ2ljYWxSaWdodC5zZXRWYWx1ZShGaXhl
ZCwgMCk7CisgICAgICAgICAgICBsb2dpY2FsUmlnaHQuc2V0VmFsdWUoTGVuZ3RoVHlwZTo6Rml4
ZWQsIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNTc5LDEyICszNTc4LDEyIEBA
IHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZShMZW5ndGgmIGxvZ2ljYWxM
ZWZ0LCBMZW5ndGgmIGxvZ2ljYWxSaWdoCiAgICAgICAgICAgICAgICAgICAgIHN0YXRpY1Bvc2l0
aW9uICs9IGJveEluZm8tPmxvZ2ljYWxMZWZ0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgbG9naWNhbExlZnQuc2V0VmFsdWUoRml4ZWQsIHN0YXRpY1Bvc2l0aW9uKTsKKyAg
ICAgICAgbG9naWNhbExlZnQuc2V0VmFsdWUoTGVuZ3RoVHlwZTo6Rml4ZWQsIHN0YXRpY1Bvc2l0
aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICBMYXlvdXRVbml0IHN0YXRpY1Bvc2l0aW9uID0g
Y2hpbGQtPmxheWVyKCktPnN0YXRpY0lubGluZVBvc2l0aW9uKCkgKyBjb250YWluZXJMb2dpY2Fs
V2lkdGggKyBjb250YWluZXJCbG9jay5ib3JkZXJMb2dpY2FsTGVmdCgpOwogICAgICAgICBhdXRv
JiBlbmNsb3NpbmdCb3ggPSBwYXJlbnQtPmVuY2xvc2luZ0JveCgpOwogICAgICAgICBpZiAoJmVu
Y2xvc2luZ0JveCAhPSAmY29udGFpbmVyQmxvY2sgJiYgY29udGFpbmVyQmxvY2suaXNEZXNjZW5k
YW50T2YoJmVuY2xvc2luZ0JveCkpIHsKLSAgICAgICAgICAgIGxvZ2ljYWxSaWdodC5zZXRWYWx1
ZShGaXhlZCwgc3RhdGljUG9zaXRpb24pOworICAgICAgICAgICAgbG9naWNhbFJpZ2h0LnNldFZh
bHVlKExlbmd0aFR5cGU6OkZpeGVkLCBzdGF0aWNQb3NpdGlvbik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMzYxMyw3ICszNjEyLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0
ZUlubGluZVN0YXRpY0Rpc3RhbmNlKExlbmd0aCYgbG9naWNhbExlZnQsIExlbmd0aCYgbG9naWNh
bFJpZ2gKICAgICAgICAgICAgIGlmIChjdXJyZW50ID09ICZjb250YWluZXJCbG9jaykKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBsb2dpY2FsUmlnaHQuc2V0VmFs
dWUoRml4ZWQsIHN0YXRpY1Bvc2l0aW9uKTsKKyAgICAgICAgbG9naWNhbFJpZ2h0LnNldFZhbHVl
KExlbmd0aFR5cGU6OkZpeGVkLCBzdGF0aWNQb3NpdGlvbik7CiAgICAgfQogfQogCkBAIC0zNzEw
LDcgKzM3MDksNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lk
dGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1heFZhbHVlcyk7CiAgICAgfQogICAgIGlmICh0cmFu
c2ZlcnJlZE1heFNpemUgPCBtYXhWYWx1ZXMubV9leHRlbnQpIHsKLSAgICAgICAgY29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhNYXhTaXplLCBMZW5ndGgodHJhbnNmZXJyZWRNYXhT
aXplLCBGaXhlZCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgICAg
IGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTWF4U2l6ZSwgTGVuZ3RoKHRyYW5z
ZmVycmVkTWF4U2l6ZSwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBjb250YWluZXJCbG9jaywgY29udGFp
bmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJz
UGx1c1BhZGRpbmcsCiAgICAgICAgICAgICBsb2dpY2FsTGVmdExlbmd0aCwgbG9naWNhbFJpZ2h0
TGVuZ3RoLCBtYXJnaW5Mb2dpY2FsTGVmdCwgbWFyZ2luTG9naWNhbFJpZ2h0LAogICAgICAgICAg
ICAgbWF4VmFsdWVzKTsKQEAgLTM3MzIsNyArMzczMSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNv
bXB1CiAgICAgICAgICAgICBtaW5WYWx1ZXMpOwogICAgIH0KICAgICBpZiAodHJhbnNmZXJyZWRN
aW5TaXplID4gbWluVmFsdWVzLm1fZXh0ZW50KSB7Ci0gICAgICAgIGNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbFdpZHRoVXNpbmcoTWluU2l6ZSwgTGVuZ3RoKHRyYW5zZmVycmVkTWluU2l6ZSwgRml4
ZWQpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAorICAgICAgICBjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKE1pblNpemUsIExlbmd0aCh0cmFuc2ZlcnJlZE1p
blNpemUsIExlbmd0aFR5cGU6OkZpeGVkKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVj
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlu
ZXJMb2dpY2FsV2lkdGgsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdExlbmd0aCwgbG9naWNhbFJpZ2h0TGVu
Z3RoLCBtYXJnaW5Mb2dpY2FsTGVmdCwgbWFyZ2luTG9naWNhbFJpZ2h0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblZhbHVlcyk7CkBAIC0zNzkzLDEzICsz
NzkyLDEzIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVz
aW5nKFNpemVUeXBlIHdpZHRoVHlwZSwgTGVuZ3RoIGxvCiAgICAgICAgICAgICBMYXlvdXRVbml0
IG1pbkxvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgIExheW91dFVuaXQgbWF4TG9naWNhbFdpZHRo
OwogICAgICAgICAgICAgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMobWluTG9naWNhbFdp
ZHRoLCBtYXhMb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgbG9naWNhbFdpZHRoID0gTGVuZ3Ro
KG1pbkxvZ2ljYWxXaWR0aCwgRml4ZWQpOworICAgICAgICAgICAgbG9naWNhbFdpZHRoID0gTGVu
Z3RoKG1pbkxvZ2ljYWxXaWR0aCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgICAg
ICBsb2dpY2FsV2lkdGggPSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgIH0gZWxz
ZSBpZiAod2lkdGhUeXBlID09IE1haW5PclByZWZlcnJlZFNpemUgJiYgbG9naWNhbFdpZHRoLmlz
QXV0bygpICYmIHNob3VsZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8oKSkKLSAg
ICAgICAgbG9naWNhbFdpZHRoID0gTGVuZ3RoKGNvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0
UmF0aW8oKSwgRml4ZWQpOworICAgICAgICBsb2dpY2FsV2lkdGggPSBMZW5ndGgoY29tcHV0ZUxv
Z2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgZWxz
ZSBpZiAobG9naWNhbFdpZHRoLmlzSW50cmluc2ljKCkpCi0gICAgICAgIGxvZ2ljYWxXaWR0aCA9
IExlbmd0aChjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcobG9naWNhbFdpZHRoLCBj
b250YWluZXJMb2dpY2FsV2lkdGgsIGJvcmRlcnNQbHVzUGFkZGluZykgLSBib3JkZXJzUGx1c1Bh
ZGRpbmcsIEZpeGVkKTsKKyAgICAgICAgbG9naWNhbFdpZHRoID0gTGVuZ3RoKGNvbXB1dGVJbnRy
aW5zaWNMb2dpY2FsV2lkdGhVc2luZyhsb2dpY2FsV2lkdGgsIGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCwgYm9yZGVyc1BsdXNQYWRkaW5nKSAtIGJvcmRlcnNQbHVzUGFkZGluZywgTGVuZ3RoVHlwZTo6
Rml4ZWQpOwogCiAgICAgLy8gJ2xlZnQnIGFuZCAncmlnaHQnIGNhbm5vdCBib3RoIGJlICdhdXRv
JyBiZWNhdXNlIG9uZSB3b3VsZCBvZiBiZWVuCiAgICAgLy8gY29udmVydGVkIHRvIHRoZSBzdGF0
aWMgcG9zaXRpb24gYWxyZWFkeQpAQCAtMzk5MSw3ICszOTkwLDcgQEAgc3RhdGljIHZvaWQgY29t
cHV0ZUJsb2NrU3RhdGljRGlzdGFuY2UoTGVuZ3RoJiBsb2dpY2FsVG9wLCBMZW5ndGgmIGxvZ2lj
YWxCb3R0b20KICAgICAgICAgaWYgKHJlbmRlckJveC5pc0luRmxvd1Bvc2l0aW9uZWQoKSkKICAg
ICAgICAgICAgIHN0YXRpY0xvZ2ljYWxUb3AgKz0gcmVuZGVyQm94LmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyByZW5kZXJCb3gub2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24oKS5oZWlnaHQoKSA6
IHJlbmRlckJveC5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbigpLndpZHRoKCk7CiAgICAgfQotICAg
IGxvZ2ljYWxUb3Auc2V0VmFsdWUoRml4ZWQsIHN0YXRpY0xvZ2ljYWxUb3ApOworICAgIGxvZ2lj
YWxUb3Auc2V0VmFsdWUoTGVuZ3RoVHlwZTo6Rml4ZWQsIHN0YXRpY0xvZ2ljYWxUb3ApOwogfQog
CiB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0KExvZ2ljYWxF
eHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0CkBAIC00MTM1LDkgKzQx
MzQsOSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNp
bmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgTGVuZ3RoCiAgICAgQVNTRVJUKGhlaWdodFR5cGUgPT0g
TWluU2l6ZSB8fCBoZWlnaHRUeXBlID09IE1haW5PclByZWZlcnJlZFNpemUgfHwgIWxvZ2ljYWxI
ZWlnaHRMZW5ndGguaXNBdXRvKCkpOwogICAgIGlmIChoZWlnaHRUeXBlID09IE1pblNpemUgJiYg
bG9naWNhbEhlaWdodExlbmd0aC5pc0F1dG8oKSkgewogICAgICAgICBpZiAoc2hvdWxkQ29tcHV0
ZUxvZ2ljYWxIZWlnaHRGcm9tQXNwZWN0UmF0aW8oKSkKLSAgICAgICAgICAgIGxvZ2ljYWxIZWln
aHRMZW5ndGggPSBMZW5ndGgobG9naWNhbEhlaWdodCwgRml4ZWQpOworICAgICAgICAgICAgbG9n
aWNhbEhlaWdodExlbmd0aCA9IExlbmd0aChsb2dpY2FsSGVpZ2h0LCBMZW5ndGhUeXBlOjpGaXhl
ZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRMZW5ndGggPSBMZW5n
dGgoMCwgRml4ZWQpOworICAgICAgICAgICAgbG9naWNhbEhlaWdodExlbmd0aCA9IExlbmd0aCgw
LCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgfQogCiAgICAgLy8gJ3RvcCcgYW5kICdib3R0b20n
IGNhbm5vdCBib3RoIGJlICdhdXRvJyBiZWNhdXNlICd0b3Agd291bGQgb2YgYmVlbgpAQCAtNDMy
Miw5ICs0MzIxLDkgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdp
ZHRoUmVwbGFjZWQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWUKICAgICBcKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KICAgICBpZiAobG9naWNhbExlZnQuaXNBdXRvKCkgfHwgbG9naWNhbFJpZ2h0LmlzQXV0
bygpKSB7CiAgICAgICAgIGlmIChtYXJnaW5Mb2dpY2FsTGVmdC5pc0F1dG8oKSkKLSAgICAgICAg
ICAgIG1hcmdpbkxvZ2ljYWxMZWZ0LnNldFZhbHVlKEZpeGVkLCAwKTsKKyAgICAgICAgICAgIG1h
cmdpbkxvZ2ljYWxMZWZ0LnNldFZhbHVlKExlbmd0aFR5cGU6OkZpeGVkLCAwKTsKICAgICAgICAg
aWYgKG1hcmdpbkxvZ2ljYWxSaWdodC5pc0F1dG8oKSkKLSAgICAgICAgICAgIG1hcmdpbkxvZ2lj
YWxSaWdodC5zZXRWYWx1ZShGaXhlZCwgMCk7CisgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsUmln
aHQuc2V0VmFsdWUoTGVuZ3RoVHlwZTo6Rml4ZWQsIDApOwogICAgIH0KIAogICAgIC8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qXApAQCAtNDQ4Niw5ICs0NDg1LDkgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbEhlaWdodFJlcGxhY2VkKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHUK
ICAgICAvLyBhdXRvLCBidXQgaWYgb25seSB0b3AgaXMgYXV0bywgdGhpcyBtYWtlcyBzdGVwIDQg
aW1wb3NzaWJsZS4KICAgICBpZiAobG9naWNhbFRvcC5pc0F1dG8oKSB8fCBsb2dpY2FsQm90dG9t
LmlzQXV0bygpKSB7CiAgICAgICAgIGlmIChtYXJnaW5CZWZvcmUuaXNBdXRvKCkpCi0gICAgICAg
ICAgICBtYXJnaW5CZWZvcmUuc2V0VmFsdWUoRml4ZWQsIDApOworICAgICAgICAgICAgbWFyZ2lu
QmVmb3JlLnNldFZhbHVlKExlbmd0aFR5cGU6OkZpeGVkLCAwKTsKICAgICAgICAgaWYgKG1hcmdp
bkFmdGVyLmlzQXV0bygpKQotICAgICAgICAgICAgbWFyZ2luQWZ0ZXIuc2V0VmFsdWUoRml4ZWQs
IDApOworICAgICAgICAgICAgbWFyZ2luQWZ0ZXIuc2V0VmFsdWUoTGVuZ3RoVHlwZTo6Rml4ZWQs
IDApOwogICAgIH0KIAogICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXApAQCAtNDgxOSw3ICs0ODE4LDcg
QEAgYm9vbCBSZW5kZXJCb3g6OnBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0SXNSZXNvbHZhYmxlKCkg
Y29uc3QKIHsKICAgICAvLyBEbyB0aGlzIHRvIGF2b2lkIGR1cGxpY2F0aW5nIGFsbCB0aGUgbG9n
aWMgdGhhdCBhbHJlYWR5IGV4aXN0cyB3aGVuIGNvbXB1dGluZwogICAgIC8vIGFuIGFjdHVhbCBw
ZXJjZW50YWdlIGhlaWdodC4KLSAgICBMZW5ndGggZmFrZUxlbmd0aCgxMDAsIFBlcmNlbnQpOwor
ICAgIExlbmd0aCBmYWtlTGVuZ3RoKDEwMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CiAgICAgcmV0
dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChmYWtlTGVuZ3RoKSAhPSBXVEY6Om51
bGxvcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
dXR0b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKaW5k
ZXggNTdmMmRkOTg5NGU3NzE3MDk4ZDU5NmUwN2MzMzQ1OTAzYjU5NjdlNy4uN2VkODE1Yzc2YTRl
MTI5N2E2ZDE4NmEzMjIyZjA3NTI2ZDc0NGIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJ1dHRvbi5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZW5kZXJCdXR0b246OnVw
ZGF0ZUFub255bW91c0NoaWxkU3R5bGUoUmVuZGVyU3R5bGUmIGNoaWxkU3R5bGUpIGNvbnN0CiB7
CiAgICAgY2hpbGRTdHlsZS5zZXRGbGV4R3JvdygxLjBmKTsKICAgICAvLyBtaW4td2lkdGg6IDA7
IGlzIG5lZWRlZCBmb3IgY29ycmVjdCBzaHJpbmtpbmcuCi0gICAgY2hpbGRTdHlsZS5zZXRNaW5X
aWR0aChMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICBjaGlsZFN0eWxlLnNldE1pbldpZHRoKExlbmd0
aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgIC8vIFVzZSBtYXJnaW46YXV0byBpbnN0ZWFk
IG9mIGFsaWduLWl0ZW1zOmNlbnRlciB0byBnZXQgc2FmZSBjZW50ZXJpbmcsIGkuZS4KICAgICAv
LyB3aGVuIHRoZSBjb250ZW50IG92ZXJmbG93cywgdHJlYXQgaXQgdGhlIHNhbWUgYXMgYWxpZ24t
aXRlbXM6IGZsZXgtc3RhcnQuCiAgICAgY2hpbGRTdHlsZS5zZXRNYXJnaW5Ub3AoTGVuZ3RoKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcAppbmRleCBlYjMxNDI3NDNkOTRiNzZkOWVhMGE5NmVkNGUxYzc3ZTdm
ZjQ1NmU1Li40ZjJkMWYzZGIxYjc5MDM1NGZmYzY4NTlmYzNiZDcyNzc2MmZlMThlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcApAQCAtMTEzMyw5ICsxMTMzLDkgQEAgTGF5b3V0VW5pdCBSZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3g6OmFsbG93ZWRDaGlsZEZsZXgoUmVuZGVyQm94KiBjaGlsZCwgYm9vbAog
ICAgICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aCA9IGNvbnRlbnRXaWR0aEZvckNoaWxkKGNoaWxk
KTsKICAgICAgICAgICAgIGlmICghY2hpbGQtPnN0eWxlKCkubWF4V2lkdGgoKS5pc1VuZGVmaW5l
ZCgpICYmIGNoaWxkLT5zdHlsZSgpLm1heFdpZHRoKCkuaXNGaXhlZCgpKQogICAgICAgICAgICAg
ICAgIG1heFdpZHRoID0gY2hpbGQtPnN0eWxlKCkubWF4V2lkdGgoKS52YWx1ZSgpOwotICAgICAg
ICAgICAgZWxzZSBpZiAoY2hpbGQtPnN0eWxlKCkubWF4V2lkdGgoKS50eXBlKCkgPT0gSW50cmlu
c2ljKQorICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQtPnN0eWxlKCkubWF4V2lkdGgoKS50eXBl
KCkgPT0gTGVuZ3RoVHlwZTo6SW50cmluc2ljKQogICAgICAgICAgICAgICAgIG1heFdpZHRoID0g
Y2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwotICAgICAgICAgICAgZWxzZSBpZiAo
Y2hpbGQtPnN0eWxlKCkubWF4V2lkdGgoKS50eXBlKCkgPT0gTWluSW50cmluc2ljKQorICAgICAg
ICAgICAgZWxzZSBpZiAoY2hpbGQtPnN0eWxlKCkubWF4V2lkdGgoKS5pc01pbkludHJpbnNpYygp
KQogICAgICAgICAgICAgICAgIG1heFdpZHRoID0gY2hpbGQtPm1pblByZWZlcnJlZExvZ2ljYWxX
aWR0aCgpOwogICAgICAgICAgICAgaWYgKG1heFdpZHRoID09IExheW91dFVuaXQ6Om1heCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBtYXhXaWR0aDsKQEAgLTExNTgsMTEgKzExNTgsMTEgQEAg
TGF5b3V0VW5pdCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmFsbG93ZWRDaGlsZEZsZXgo
UmVuZGVyQm94KiBjaGlsZCwgYm9vbAogICAgICAgICBMYXlvdXRVbml0IHdpZHRoID0gY29udGVu
dFdpZHRoRm9yQ2hpbGQoY2hpbGQpOwogICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCkubWluV2lk
dGgoKS5pc0ZpeGVkKCkpCiAgICAgICAgICAgICBtaW5XaWR0aCA9IGNoaWxkLT5zdHlsZSgpLm1p
bldpZHRoKCkudmFsdWUoKTsKLSAgICAgICAgZWxzZSBpZiAoY2hpbGQtPnN0eWxlKCkubWluV2lk
dGgoKS50eXBlKCkgPT0gSW50cmluc2ljKQorICAgICAgICBlbHNlIGlmIChjaGlsZC0+c3R5bGUo
KS5taW5XaWR0aCgpLnR5cGUoKSA9PSBMZW5ndGhUeXBlOjpJbnRyaW5zaWMpCiAgICAgICAgICAg
ICBtaW5XaWR0aCA9IGNoaWxkLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKLSAgICAgICAg
ZWxzZSBpZiAoY2hpbGQtPnN0eWxlKCkubWluV2lkdGgoKS50eXBlKCkgPT0gTWluSW50cmluc2lj
KQorICAgICAgICBlbHNlIGlmIChjaGlsZC0+c3R5bGUoKS5taW5XaWR0aCgpLmlzTWluSW50cmlu
c2ljKCkpCiAgICAgICAgICAgICBtaW5XaWR0aCA9IGNoaWxkLT5taW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGgoKTsKLSAgICAgICAgZWxzZSBpZiAoY2hpbGQtPnN0eWxlKCkubWluV2lkdGgoKS50eXBl
KCkgPT0gQXV0bykKKyAgICAgICAgZWxzZSBpZiAoY2hpbGQtPnN0eWxlKCkubWluV2lkdGgoKS5p
c0F1dG8oKSkKICAgICAgICAgICAgIG1pbldpZHRoID0gMDsKIAogICAgICAgICBMYXlvdXRVbml0
IGFsbG93ZWRTaHJpbmthZ2UgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PigwLCBtaW5XaWR0aCAtIHdp
ZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA4
MTcxNzIwN2RmY2Q3YjNlMWIwMjYwNDZjYjI3ZmQ3ZWFlZWE0ODEzLi5iMDJjODg1YTQwMjE4YmQ5
Y2E5Nzk5OGE0Y2EwOWJmODZhNjE0MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCkBAIC0yMjM5LDcgKzIyMzksNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6
OnJlc2V0RW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dBbmRDaGlsZEluZm9JbmNsdWRpbmdEZXNjZW5k
YW50cwogc3RhdGljIFJlbmRlck9iamVjdDo6QmxvY2tDb250ZW50SGVpZ2h0VHlwZSBpbmNsdWRl
Tm9uRml4ZWRIZWlnaHQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOwotICAgIGlmIChzdHlsZS5o
ZWlnaHQoKS50eXBlKCkgPT0gRml4ZWQpIHsKKyAgICBpZiAoc3R5bGUuaGVpZ2h0KCkuaXNGaXhl
ZCgpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJCbG9jaz4ocmVuZGVyZXIpKSB7CiAgICAgICAg
ICAgICAvLyBGb3IgZml4ZWQgaGVpZ2h0IHN0eWxlcywgaWYgdGhlIG92ZXJmbG93IHNpemUgb2Yg
dGhlIGVsZW1lbnQgc3BpbGxzIG91dCBvZiB0aGUgc3BlY2lmaWVkCiAgICAgICAgICAgICAvLyBo
ZWlnaHQsIGFzc3VtZSB3ZSBjYW4gYXBwbHkgdGV4dCBhdXRvLXNpemluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDJmMjRkNDMwNzE2
ZTQ5ZDg5NjI3ODkyNzZlYzcyYmUxOWZlYjIzMTMuLjY1YmYxZjQzYWEyYWY5MDY1MWUxYWNmNWVh
MTBiOWM4MDU2NmJmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmNwcApAQCAtNTcwLDkgKzU3MCw5IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJl
bmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjb25zdCBSZW5k
CiAgICAgLy8gdGhhdCBoZXJlLiAoQ29tcGFyZSBjb2RlIGluIExheW91dEJsb2NrOjpjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocykKICAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmcg
PSBjaGlsZC5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CiAgICAgaWYgKGNoaWxkLnN0
eWxlKCkubG9naWNhbFdpZHRoKCkuaXNBdXRvKCkgJiYgIWNoaWxkLmhhc0FzcGVjdFJhdGlvKCkp
IHsKLSAgICAgICAgaWYgKHNpemUudHlwZSgpID09IE1pbkNvbnRlbnQpCisgICAgICAgIGlmIChz
aXplLmlzTWluQ29udGVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGNoaWxkLm1pblByZWZlcnJl
ZExvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyQW5kUGFkZGluZzsKLSAgICAgICAgaWYgKHNpemUudHlw
ZSgpID09IE1heENvbnRlbnQpCisgICAgICAgIGlmIChzaXplLmlzTWF4Q29udGVudCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGNoaWxkLm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gYm9yZGVy
QW5kUGFkZGluZzsKICAgICB9CiAgICAgCkBAIC0xMTQ5LDcgKzExNDksNyBAQCBMYXlvdXRVbml0
IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoY29uc3QgUmVu
ZGVyQm94JiBjaGlsZAogICAgIGlmIChzaG91bGRBcHBseU1pblNpemVBdXRvRm9yQ2hpbGQoY2hp
bGQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgbWluIHZhbHVlIGlzIGV4cGVjdGVkIHRv
IGJlIHZhbGlkIGhlcmUsIHdlIG5lZWQgdG8gY29tZSB1cCB3aXRoIGEgbm9uIG9wdGlvbmFsIHZl
cnNpb24gb2YgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQgYW5kCiAgICAgICAgIC8vIGVu
c3VyZSBpdCdzIHZhbGlkIHRocm91Z2ggdGhlIHZpcnR1YWwgY2FsbHMgb2YgY29tcHV0ZUludHJp
bnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcuCi0gICAgICAgIExheW91dFVuaXQgY29udGVu
dFNpemUgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgTGVu
Z3RoKE1pbkNvbnRlbnQpKS52YWx1ZU9yKDApOworICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRT
aXplID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1pblNpemUsIExlbmd0
aChMZW5ndGhUeXBlOjpNaW5Db250ZW50KSkudmFsdWVPcigwKTsKICAgICAgICAgQVNTRVJUKGNv
bnRlbnRTaXplID49IDApOwogICAgICAgICBpZiAoY2hpbGQuaGFzQXNwZWN0UmF0aW8oKSAmJiBj
aGlsZC5pbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgPiAwKQogICAgICAgICAgICAgY29udGVudFNp
emUgPSBhZGp1c3RDaGlsZFNpemVGb3JBc3BlY3RSYXRpb0Nyb3NzQXhpc01pbkFuZE1heChjaGls
ZCwgY29udGVudFNpemUpOwpAQCAtMTIwMyw3ICsxMjAzLDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gUmVuZGVyRmxleGlibGVCb3g6Om1haW5TaXplRm9yUGVyY2VudGFnZVJlc29sdXRpb24oY29u
c3QgUmUKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgc2VjdGlvbiA5LjguIERlZmlu
aXRlIGFuZCBJbmRlZmluaXRlIFNpemVzLCBjYXNlIDIpIG9mIHRoZSBmbGV4Ym94IHNwZWMuCiAg
ICAgLy8gSWYgdGhlIGZsZXggY29udGFpbmVyIGhhcyBhIGRlZmluaXRlIG1haW4gc2l6ZSB0aGUg
ZmxleCBpdGVtIHBvc3QtZmxleGluZyBtYWluIHNpemUgaXMgYWxzbyB0cmVhdGVkCiAgICAgLy8g
YXMgZGVmaW5pdGUuIFdlIG1ha2UgdXAgYSBwZXJjZW50YWdlIHRvIGNoZWNrIHdoZXRoZXIgd2Ug
aGF2ZSBhIGRlZmluaXRlIHNpemUuCi0gICAgaWYgKCFjaGlsZE1haW5TaXplSXNEZWZpbml0ZShj
aGlsZCwgTGVuZ3RoKDAsIFBlcmNlbnQpKSkKKyAgICBpZiAoIWNoaWxkTWFpblNpemVJc0RlZmlu
aXRlKGNoaWxkLCBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGNoaWxkLmhhc092ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0KCkgPyBPcHRpb25hbDxMYXlvdXRVbml0PihjaGlsZC5vdmVycmlkaW5nQ29udGVudExv
Z2ljYWxIZWlnaHQoKSkgOiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKaW5kZXggNzI0ZmIyN2IyNDk1YWY0ZmYzZTU2Y2MzYmEz
MjhiNWI3ZTQ0ZmNjZS4uYzVjYWRmMDE4MGFjMzE4NjA1YmUxYzcyZjkwMjAwOGM0ZTlhMWUwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcApAQCAt
NzgsMTAgKzc4LDEwIEBAIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVGdWxsU2NyZWVuU3R5bGUo
KQogICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRGbGV4RGlyZWN0aW9uKEZsZXhEaXJlY3Rpb246OkNv
bHVtbik7CiAgICAgCiAgICAgZnVsbHNjcmVlblN0eWxlLnNldFBvc2l0aW9uKFBvc2l0aW9uVHlw
ZTo6Rml4ZWQpOwotICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRXaWR0aChMZW5ndGgoMTAwLjAsIFBl
cmNlbnQpKTsKLSAgICBmdWxsc2NyZWVuU3R5bGUuc2V0SGVpZ2h0KExlbmd0aCgxMDAuMCwgUGVy
Y2VudCkpOwotICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRMZWZ0KExlbmd0aCgwLCBXZWJDb3JlOjpG
aXhlZCkpOwotICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRUb3AoTGVuZ3RoKDAsIFdlYkNvcmU6OkZp
eGVkKSk7CisgICAgZnVsbHNjcmVlblN0eWxlLnNldFdpZHRoKExlbmd0aCgxMDAuMCwgTGVuZ3Ro
VHlwZTo6UGVyY2VudCkpOworICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKDEw
MC4wLCBMZW5ndGhUeXBlOjpQZXJjZW50KSk7CisgICAgZnVsbHNjcmVlblN0eWxlLnNldExlZnQo
TGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAgZnVsbHNjcmVlblN0eWxlLnNldFRv
cChMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICAKICAgICBmdWxsc2NyZWVuU3R5
bGUuc2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpibGFjayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDQ0ZTNmNjM4NDQyMTY1NzgyYjc0YmVkZGQxNjM4
NzgxOTRkNGVmOGIuLjcxMjRlNzNkZTFmODFjMmI1ODY3NDJmMTdjMTk4ZTA2NDcyZDZkMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtODMzLDggKzgzMyw4
IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmxheW91dFNoYWRvd0NvbnRlbnQoY29uc3QgTGF5b3V0U2l6
ZSYgb2xkU2l6ZSkKICAgICAgICAgLy8gYW5kIHRoaXMgbWV0aG9kIG1pZ2h0IGJlIGNhbGxlZCBt
YW55IHRpbWVzIHBlciBzZWNvbmQgZHVyaW5nIHZpZGVvIHBsYXliYWNrLCB1c2UgYSBMYXlvdXRT
dGF0ZU1haW50YWluZXI6CiAgICAgICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hl
cigqdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgaGFzVHJhbnNmb3JtKCkgfHwgaGFzUmVmbGVjdGlv
bigpIHx8IHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSk7CiAgICAgICAgIHJl
bmRlckJveC5zZXRMb2NhdGlvbihMYXlvdXRQb2ludChib3JkZXJMZWZ0KCksIGJvcmRlclRvcCgp
KSArIExheW91dFNpemUocGFkZGluZ0xlZnQoKSwgcGFkZGluZ1RvcCgpKSk7Ci0gICAgICAgIHJl
bmRlckJveC5tdXRhYmxlU3R5bGUoKS5zZXRIZWlnaHQoTGVuZ3RoKG5ld1NpemUuaGVpZ2h0KCks
IEZpeGVkKSk7Ci0gICAgICAgIHJlbmRlckJveC5tdXRhYmxlU3R5bGUoKS5zZXRXaWR0aChMZW5n
dGgobmV3U2l6ZS53aWR0aCgpLCBGaXhlZCkpOworICAgICAgICByZW5kZXJCb3gubXV0YWJsZVN0
eWxlKCkuc2V0SGVpZ2h0KExlbmd0aChuZXdTaXplLmhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhl
ZCkpOworICAgICAgICByZW5kZXJCb3gubXV0YWJsZVN0eWxlKCkuc2V0V2lkdGgoTGVuZ3RoKG5l
d1NpemUud2lkdGgoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICAgICAgcmVuZGVyQm94LnNl
dE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAgICAgIHJlbmRlckJveC5sYXlvdXQoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBkODEx
YmYwN2M3OTM5NTliMTM1NDQ1Y2ExMjQ1ZmU2MTk3YWFjOWEzLi4yOGExNGQ3NmUwZWIyNmExY2M0
MTMzOTZhNmYyY2Y2OTUyM2Y3NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKQEAgLTUzODAsMjQgKzUzODAsMjQgQEAgUmVuZGVyU3R5bGUgUmVuZGVyTGF5ZXI6
OmNyZWF0ZVJlZmxlY3Rpb25TdHlsZSgpCiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyB0cmFuc2Zv
cm07CiAgICAgc3dpdGNoIChyZW5kZXJlcigpLnN0eWxlKCkuYm94UmVmbGVjdCgpLT5kaXJlY3Rp
b24oKSkgewogICAgIGNhc2UgUmVmbGVjdGlvbkRpcmVjdGlvbjo6QmVsb3c6Ci0gICAgICAgIHRy
YW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6
Y3JlYXRlKExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgxMDAuLCBQZXJjZW50KSwgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKLSAgICAgICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5h
cHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDAsIEZpeGVk
KSwgcmVuZGVyZXIoKS5zdHlsZSgpLmJveFJlZmxlY3QoKS0+b2Zmc2V0KCksIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6VFJBTlNMQVRFKSk7CisgICAgICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBw
ZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgwLCBMZW5ndGhU
eXBlOjpGaXhlZCksIExlbmd0aCgxMDAuLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKKyAgICAgICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5h
cHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDAsIExlbmd0
aFR5cGU6OkZpeGVkKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmJveFJlZmxlY3QoKS0+b2Zmc2V0KCks
IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFKSk7CiAgICAgICAgIHRyYW5zZm9ybS5vcGVy
YXRpb25zKCkuYXBwZW5kKFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoMS4wLCAtMS4w
LCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEUpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBSZWZsZWN0aW9uRGlyZWN0aW9uOjpBYm92ZToKICAgICAgICAgdHJhbnNmb3JtLm9wZXJh
dGlvbnMoKS5hcHBlbmQoU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgxLjAsIC0xLjAs
IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRSkpOwotICAgICAgICB0cmFuc2Zvcm0ub3Bl
cmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5n
dGgoMCwgRml4ZWQpLCBMZW5ndGgoMTAwLiwgUGVyY2VudCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6
VFJBTlNMQVRFKSk7Ci0gICAgICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5z
bGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgwLCBGaXhlZCksIHJlbmRlcmVy
KCkuc3R5bGUoKS5ib3hSZWZsZWN0KCktPm9mZnNldCgpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRS
QU5TTEFURSkpOworICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQp
LCBMZW5ndGgoMTAwLiwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6
VFJBTlNMQVRFKSk7CisgICAgICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5z
bGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhl
ZCksIHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hSZWZsZWN0KCktPm9mZnNldCgpLCBUcmFuc2Zvcm1P
cGVyYXRpb246OlRSQU5TTEFURSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlZmxlY3Rp
b25EaXJlY3Rpb246OlJpZ2h0OgotICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVu
ZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMTAwLiwgUGVyY2Vu
dCksIExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFKSk7Ci0g
ICAgICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbjo6Y3JlYXRlKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hSZWZsZWN0KCktPm9mZnNldCgp
LCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURSkpOworICAg
ICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb246OmNyZWF0ZShMZW5ndGgoMTAwLiwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCgw
LCBMZW5ndGhUeXBlOjpGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFKSk7Cisg
ICAgICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbjo6Y3JlYXRlKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hSZWZsZWN0KCktPm9mZnNldCgp
LCBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5T
TEFURSkpOwogICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5z
Zm9ybU9wZXJhdGlvbjo6Y3JlYXRlKC0xLjAsIDEuMCwgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246
OlNDQUxFKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVmbGVjdGlvbkRpcmVjdGlvbjo6
TGVmdDoKICAgICAgICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQoU2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb246OmNyZWF0ZSgtMS4wLCAxLjAsIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRSkpOwotICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMTAwLiwgUGVyY2VudCksIExlbmd0aCgw
LCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFKSk7Ci0gICAgICAgIHRyYW5z
Zm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hSZWZsZWN0KCktPm9mZnNldCgpLCBMZW5ndGgoMCwg
Rml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURSkpOworICAgICAgICB0cmFuc2Zv
cm0ub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZShMZW5ndGgoMTAwLiwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCgwLCBMZW5ndGhUeXBl
OjpGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFKSk7CisgICAgICAgIHRyYW5z
Zm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hSZWZsZWN0KCktPm9mZnNldCgpLCBMZW5ndGgoMCwg
TGVuZ3RoVHlwZTo6Rml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURSkpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgbmV3U3R5bGUuc2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmlu
ZGV4IGM3MGMxNGFkZTFmZjViZGVkZTQ3NGNlZmJlMzgxMzA4MDE0NWQxNTEuLjA5ZmY0MDg4Yjhj
Yjk4NWViMzgxZmRhYTFjYTBmMzZjOWJjNzc2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC04MDUsOCArODA1LDggQEAgYm9vbCBS
ZW5kZXJMYXllckJhY2tpbmc6OnNob3VsZENsaXBDb21wb3NpdGVkQm91bmRzKCkgY29uc3QKIHN0
YXRpYyBib29sIGhhc05vblplcm9UcmFuc2Zvcm1PcmlnaW4oY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlcikKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlci5zdHls
ZSgpOwotICAgIHJldHVybiAoc3R5bGUudHJhbnNmb3JtT3JpZ2luWCgpLnR5cGUoKSA9PSBGaXhl
ZCAmJiBzdHlsZS50cmFuc2Zvcm1PcmlnaW5YKCkudmFsdWUoKSkKLSAgICAgICAgfHwgKHN0eWxl
LnRyYW5zZm9ybU9yaWdpblkoKS50eXBlKCkgPT0gRml4ZWQgJiYgc3R5bGUudHJhbnNmb3JtT3Jp
Z2luWSgpLnZhbHVlKCkpOworICAgIHJldHVybiAoc3R5bGUudHJhbnNmb3JtT3JpZ2luWCgpLmlz
Rml4ZWQoKSAmJiBzdHlsZS50cmFuc2Zvcm1PcmlnaW5YKCkudmFsdWUoKSkKKyAgICAgICAgfHwg
KHN0eWxlLnRyYW5zZm9ybU9yaWdpblkoKS5pc0ZpeGVkKCkgJiYgc3R5bGUudHJhbnNmb3JtT3Jp
Z2luWSgpLnZhbHVlKCkpOwogfQogCiBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29t
cG9zaXRlZEJvdW5kcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKaW5kZXggNzI5M2JiZWNkNTE2NzQ2MzcwODgyYWQyNjNkM2Q5ODExNTIzYWM4MS4u
Y2EwZjI1NTRiNmUzMzlhYzBkZDUzZGEyNWQ0ZThhODdjZmMwYTdjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTc3OCw4ICsxNzc4LDgg
QEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjp1cGRhdGVNYXJnaW5zKCkKICAgICAgICAgfQogICAg
IH0KIAotICAgIG11dGFibGVTdHlsZSgpLnNldE1hcmdpblN0YXJ0KExlbmd0aChtYXJnaW5TdGFy
dCwgRml4ZWQpKTsKLSAgICBtdXRhYmxlU3R5bGUoKS5zZXRNYXJnaW5FbmQoTGVuZ3RoKG1hcmdp
bkVuZCwgRml4ZWQpKTsKKyAgICBtdXRhYmxlU3R5bGUoKS5zZXRNYXJnaW5TdGFydChMZW5ndGgo
bWFyZ2luU3RhcnQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAgbXV0YWJsZVN0eWxlKCkuc2V0
TWFyZ2luRW5kKExlbmd0aChtYXJnaW5FbmQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiB9CiAKIExh
eW91dFVuaXQgUmVuZGVyTGlzdE1hcmtlcjo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1v
ZGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApp
bmRleCA3YTZlNzM5ZjVlNDRmNzUxZjU1YmZlMzA0MjFlNmM4OWU4YjYyZDJlLi5mMzk0YmQ2MzM2
ZTQ0NDgyMjdmMTZhZTk5OTZkZTU1ZjI0Y2NmOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFJlbmRlck1l
bnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICBpbm5lclN0eWxlLnNldEZsZXhHcm93KDEp
OwogICAgIGlubmVyU3R5bGUuc2V0RmxleFNocmluaygxKTsKICAgICAvLyBtaW4td2lkdGg6IDA7
IGlzIG5lZWRlZCBmb3IgY29ycmVjdCBzaHJpbmtpbmcuCi0gICAgaW5uZXJTdHlsZS5zZXRNaW5X
aWR0aChMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICBpbm5lclN0eWxlLnNldE1pbldpZHRoKExlbmd0
aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgIC8vIFVzZSBtYXJnaW46YXV0byBpbnN0ZWFk
IG9mIGFsaWduLWl0ZW1zOmNlbnRlciB0byBnZXQgc2FmZSBjZW50ZXJpbmcsIGkuZS4KICAgICAv
LyB3aGVuIHRoZSBjb250ZW50IG92ZXJmbG93cywgdHJlYXQgaXQgdGhlIHNhbWUgYXMgYWxpZ24t
aXRlbXM6IGZsZXgtc3RhcnQuCiAgICAgLy8gQnV0IHdlIG9ubHkgZG8gdGhhdCBmb3IgdGhlIGNh
c2VzIHdoZXJlIGh0bWwuY3NzIHdvdWxkIG90aGVyd2lzZSB1c2UgY2VudGVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCAwZjRjM2YxMzJkZTY0
YjgxMjRkMTE3N2VlZWYyNmYwMjVkYzY1M2UzLi4xZDk1MTFkY2IxZmMwMWU2ZWMwMGQ3OWRhNDA2
YjhlZGM2MGY3MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcApAQCAtMTc2LDggKzE3Niw4IEBAIExlbmd0aCBSZW5kZXJUYWJsZUNlbGw6OmxvZ2lj
YWxXaWR0aEZyb21Db2x1bW5zKFJlbmRlclRhYmxlQ29sKiBmaXJzdENvbEZvclRoaXNDCiAgICAg
Ly8gQ29sdW1uIHdpZHRocyBzcGVjaWZpZWQgb24gPGNvbD4gYXBwbHkgdG8gdGhlIGJvcmRlciBi
b3ggb2YgdGhlIGNlbGwsIHNlZSBidWcgODEyNi4KICAgICAvLyBGSVhNRTogV2h5IGlzIGJvcmRl
ci9wYWRkaW5nIGlnbm9yZWQgaW4gdGhlIG5lZ2F0aXZlIHdpZHRoIGNhc2U/CiAgICAgaWYgKGNv
bFdpZHRoU3VtID4gMCkKLSAgICAgICAgcmV0dXJuIExlbmd0aChzdGQ6Om1heDxMYXlvdXRVbml0
PigwLCBjb2xXaWR0aFN1bSAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSksIEZpeGVk
KTsKLSAgICByZXR1cm4gTGVuZ3RoKGNvbFdpZHRoU3VtLCBGaXhlZCk7CisgICAgICAgIHJldHVy
biBMZW5ndGgoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY29sV2lkdGhTdW0gLSBib3JkZXJBbmRQ
YWRkaW5nTG9naWNhbFdpZHRoKCkpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CisgICAgcmV0dXJuIExl
bmd0aChjb2xXaWR0aFN1bSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogfQogCiB2b2lkIFJlbmRlclRh
YmxlQ2VsbDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBiYTYyZGZmZDgzMTBm
NzYwY2YzZDUyMmYyZDBkZjFiZTAxMTk0OWQ5Li4xZTE5YjNkYjM1MTFhMjlhZTZlY2Y2YzNlYjMz
MzljNzczMDg1OWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmNwcApAQCAtNzEsMTYgKzcxLDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRh
dGVMb2dpY2FsSGVpZ2h0Rm9yQ2VsbChSZW5kZXJUYWJsZVNlY3Rpb246OlJvd1N0cnVjdCYgcm93
CiAgICAgaWYgKGxvZ2ljYWxIZWlnaHQuaXNQb3NpdGl2ZSgpIHx8IChsb2dpY2FsSGVpZ2h0Lmlz
UmVsYXRpdmUoKSAmJiBsb2dpY2FsSGVpZ2h0LnZhbHVlKCkgPj0gMCkpIHsKICAgICAgICAgTGVu
Z3RoIGNSb3dMb2dpY2FsSGVpZ2h0ID0gcm93LmxvZ2ljYWxIZWlnaHQ7CiAgICAgICAgIHN3aXRj
aCAobG9naWNhbEhlaWdodC50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBQZXJjZW50OgorICAgICAg
ICBjYXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6CiAgICAgICAgICAgICBpZiAoIWNSb3dMb2dpY2Fs
SGVpZ2h0LmlzUGVyY2VudCgpIHx8IGNSb3dMb2dpY2FsSGVpZ2h0LnBlcmNlbnQoKSA8IGxvZ2lj
YWxIZWlnaHQucGVyY2VudCgpKQogICAgICAgICAgICAgICAgIHJvdy5sb2dpY2FsSGVpZ2h0ID0g
bG9naWNhbEhlaWdodDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpeGVkOgor
ICAgICAgICBjYXNlIExlbmd0aFR5cGU6OkZpeGVkOgogICAgICAgICAgICAgaWYgKGNSb3dMb2dp
Y2FsSGVpZ2h0LmlzQXV0bygpIHx8IGNSb3dMb2dpY2FsSGVpZ2h0LmlzUmVsYXRpdmUoKQogICAg
ICAgICAgICAgICAgIHx8IChjUm93TG9naWNhbEhlaWdodC5pc0ZpeGVkKCkgJiYgY1Jvd0xvZ2lj
YWxIZWlnaHQudmFsdWUoKSA8IGxvZ2ljYWxIZWlnaHQudmFsdWUoKSkpCiAgICAgICAgICAgICAg
ICAgcm93LmxvZ2ljYWxIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0OwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgUmVsYXRpdmU6CisgICAgICAgIGNhc2UgTGVuZ3RoVHlwZTo6UmVsYXRp
dmU6CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRp
TGluZS5jcHAKaW5kZXggMmMzMTMxY2UxYzBjNjRmYzM1NDExNDM5NmM3OTE1OTZkMWE5OTI4Zi4u
MjgzNWM3OTY0NmE2ZDU3Nzc3MmVjY2Q4ZDBhYjg0MmQ4Y2M5NWI1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3Bw
CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6bGF5
b3V0RXhjbHVkZWRDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIHJldHVy
bjsKICAgICBpZiAoaXM8UmVuZGVyQm94PihwbGFjZWhvbGRlclJlbmRlcmVyKSkgewogICAgICAg
ICBhdXRvJiBwbGFjZWhvbGRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnBsYWNlaG9sZGVy
UmVuZGVyZXIpOwotICAgICAgICBwbGFjZWhvbGRlckJveC5tdXRhYmxlU3R5bGUoKS5zZXRMb2dp
Y2FsV2lkdGgoTGVuZ3RoKGNvbnRlbnRMb2dpY2FsV2lkdGgoKSAtIHBsYWNlaG9sZGVyQm94LmJv
cmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgRml4ZWQpKTsKKyAgICAgICAgcGxhY2Vob2xk
ZXJCb3gubXV0YWJsZVN0eWxlKCkuc2V0TG9naWNhbFdpZHRoKExlbmd0aChjb250ZW50TG9naWNh
bFdpZHRoKCkgLSBwbGFjZWhvbGRlckJveC5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCks
IExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgICAgIHBsYWNlaG9sZGVyQm94LmxheW91dElmTmVl
ZGVkKCk7CiAgICAgICAgIHBsYWNlaG9sZGVyQm94LnNldFgoYm9yZGVyTGVmdCgpICsgcGFkZGlu
Z0xlZnQoKSk7CiAgICAgICAgIHBsYWNlaG9sZGVyQm94LnNldFkoYm9yZGVyVG9wKCkgKyBwYWRk
aW5nVG9wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCAxNDI1ZTM2MGY2ZTAwYzk0YzY1OWI5MmJk
MWZkYjIyOTlmMDBmZGU0Li43YTcwNDQ4Y2RmMjU2ZWMxZDNhNTM4NzRmMGU3NTkyYjVhYWFjZDFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgdm9pZCByZXNldE92
ZXJyaWRkZW5IZWlnaHQoUmVuZGVyQm94KiBib3gsIGNvbnN0IFJlbmRlck9iamVjdCogYW5jZXN0
b3IpCiAgICAgQVNTRVJUKGJveCAhPSBhbmNlc3Rvcik7CiAgICAgaWYgKCFib3ggfHwgYm94LT5z
dHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuOyAvLyBOdWxs
IGJveCBvciBpdHMgaGVpZ2h0IHdhcyBub3Qgb3ZlcnJpZGRlbi4KLSAgICBib3gtPm11dGFibGVT
dHlsZSgpLnNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoIHsgQXV0byB9KTsKKyAgICBib3gtPm11dGFi
bGVTdHlsZSgpLnNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoIHsgTGVuZ3RoVHlwZTo6QXV0byB9KTsK
ICAgICBmb3IgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBib3g7IHJlbmRlcmVyICE9IGFuY2Vz
dG9yOyByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgewogICAgICAgICBBU1NFUlQocmVu
ZGVyZXIpOwogICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsK
QEAgLTEzMCwxMCArMTMwLDEwIEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjps
YXlvdXQoKQogICAgICAgICBpZiAoZGVzaXJlZExvZ2ljYWxIZWlnaHQgIT0gaW5uZXJUZXh0TG9n
aWNhbEhlaWdodCkKICAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAK
LSAgICAgICAgaW5uZXJUZXh0UmVuZGVyZXItPm11dGFibGVTdHlsZSgpLnNldExvZ2ljYWxIZWln
aHQoTGVuZ3RoKGRlc2lyZWRMb2dpY2FsSGVpZ2h0LCBGaXhlZCkpOworICAgICAgICBpbm5lclRl
eHRSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0TG9naWNhbEhlaWdodChMZW5ndGgoZGVzaXJl
ZExvZ2ljYWxIZWlnaHQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgICAgIGlubmVyVGV4dFJl
bmRlcmVyLT5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwogICAgICAgICBpZiAoaW5uZXJC
bG9ja1JlbmRlcmVyKSB7Ci0gICAgICAgICAgICBpbm5lckJsb2NrUmVuZGVyZXItPm11dGFibGVT
dHlsZSgpLnNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoKGRlc2lyZWRMb2dpY2FsSGVpZ2h0LCBGaXhl
ZCkpOworICAgICAgICAgICAgaW5uZXJCbG9ja1JlbmRlcmVyLT5tdXRhYmxlU3R5bGUoKS5zZXRM
b2dpY2FsSGVpZ2h0KExlbmd0aChkZXNpcmVkTG9naWNhbEhlaWdodCwgTGVuZ3RoVHlwZTo6Rml4
ZWQpKTsKICAgICAgICAgICAgIGlubmVyQmxvY2tSZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQoTWFy
a09ubHlUaGlzKTsKICAgICAgICAgfQogICAgICAgICBpbm5lclRleHRMb2dpY2FsSGVpZ2h0ID0g
ZGVzaXJlZExvZ2ljYWxIZWlnaHQ7CkBAIC0xNDUsMTYgKzE0NSwxNiBAQCB2b2lkIFJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZTo6bGF5b3V0KCkKICAgICAgICAgb2xkQ29udGFpbmVyTG9naWNh
bFRvcCA9IGNvbnRhaW5lclJlbmRlcmVyLT5sb2dpY2FsVG9wKCk7CiAgICAgICAgIExheW91dFVu
aXQgY29udGFpbmVyTG9naWNhbEhlaWdodCA9IGNvbnRhaW5lclJlbmRlcmVyLT5sb2dpY2FsSGVp
Z2h0KCk7CiAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQoKS5oYXNBdXRvRmlsbFN0cm9uZ1Bhc3N3
b3JkQnV0dG9uKCkgJiYgaW5uZXJUZXh0UmVuZGVyZXIgJiYgY29udGFpbmVyTG9naWNhbEhlaWdo
dCAhPSBpbm5lclRleHRMb2dpY2FsSGVpZ2h0KSB7Ci0gICAgICAgICAgICBjb250YWluZXJSZW5k
ZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0TG9naWNhbEhlaWdodChMZW5ndGggeyBpbm5lclRleHRM
b2dpY2FsSGVpZ2h0LCBGaXhlZCB9KTsKKyAgICAgICAgICAgIGNvbnRhaW5lclJlbmRlcmVyLT5t
dXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0aCB7IGlubmVyVGV4dExvZ2ljYWxI
ZWlnaHQsIExlbmd0aFR5cGU6OkZpeGVkIH0pOwogICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXQo
TWFya09ubHlUaGlzKTsKICAgICAgICAgfSBlbHNlIGlmIChjb250YWluZXJMb2dpY2FsSGVpZ2h0
ID4gbG9naWNhbEhlaWdodExpbWl0KSB7Ci0gICAgICAgICAgICBjb250YWluZXJSZW5kZXJlci0+
bXV0YWJsZVN0eWxlKCkuc2V0TG9naWNhbEhlaWdodChMZW5ndGgobG9naWNhbEhlaWdodExpbWl0
LCBGaXhlZCkpOworICAgICAgICAgICAgY29udGFpbmVyUmVuZGVyZXItPm11dGFibGVTdHlsZSgp
LnNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoKGxvZ2ljYWxIZWlnaHRMaW1pdCwgTGVuZ3RoVHlwZTo6
Rml4ZWQpKTsKICAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoY29udGFpbmVyUmVuZGVyZXItPmxvZ2ljYWxIZWlnaHQoKSA8IGNvbnRl
bnRMb2dpY2FsSGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIGNvbnRhaW5lclJlbmRlcmVyLT5tdXRh
YmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0aChjb250ZW50TG9naWNhbEhlaWdodCgp
LCBGaXhlZCkpOworICAgICAgICAgICAgY29udGFpbmVyUmVuZGVyZXItPm11dGFibGVTdHlsZSgp
LnNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoKGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCksIExlbmd0aFR5
cGU6OkZpeGVkKSk7CiAgICAgICAgICAgICBzZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNvbnRhaW5lclJlbmRlcmVyLT5tdXRhYmxlU3R5
bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0aChjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBGaXhl
ZCkpOworICAgICAgICAgICAgY29udGFpbmVyUmVuZGVyZXItPm11dGFibGVTdHlsZSgpLnNldExv
Z2ljYWxIZWlnaHQoTGVuZ3RoKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIExlbmd0aFR5cGU6OkZp
eGVkKSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgbmVlZCBhbm90aGVyIGxheW91dCBwYXNzLCB3
ZSBoYXZlIGNoYW5nZWQgb25lIG9mIGNoaWxkcmVuJ3MgaGVpZ2h0IHNvIHdlIG5lZWQgdG8gcmVs
YXlvdXQgdGhlbS4KQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6bGF5b3V0KCkKICAgICAgICAgYXV0byBpbm5lclRleHRXaWR0aCA9IExheW91dFVu
aXQgeyB9OwogICAgICAgICBpZiAoaW5uZXJUZXh0UmVuZGVyZXIpCiAgICAgICAgICAgICBpbm5l
clRleHRXaWR0aCA9IGlubmVyVGV4dFJlbmRlcmVyLT5sb2dpY2FsV2lkdGgoKTsKLSAgICAgICAg
cGxhY2Vob2xkZXJCb3gtPm11dGFibGVTdHlsZSgpLnNldFdpZHRoKExlbmd0aChpbm5lclRleHRX
aWR0aCAtIHBsYWNlaG9sZGVyQm94LT5ob3Jpem9udGFsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgp
LCBGaXhlZCkpOworICAgICAgICBwbGFjZWhvbGRlckJveC0+bXV0YWJsZVN0eWxlKCkuc2V0V2lk
dGgoTGVuZ3RoKGlubmVyVGV4dFdpZHRoIC0gcGxhY2Vob2xkZXJCb3gtPmhvcml6b250YWxCb3Jk
ZXJBbmRQYWRkaW5nRXh0ZW50KCksIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgICAgIGJvb2wg
bmVlZGVkTGF5b3V0ID0gcGxhY2Vob2xkZXJCb3gtPm5lZWRzTGF5b3V0KCk7CiAgICAgICAgIGJv
b2wgcGxhY2Vob2xkZXJCb3hIYWRMYXlvdXQgPSBwbGFjZWhvbGRlckJveC0+ZXZlckhhZExheW91
dCgpOwogICAgICAgICBpZiAoaW5uZXJUZXh0U2l6ZUNoYW5nZWQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KaW5kZXggZDc1ZTg3MjZkZjBkNDgwZjEx
NzU1YTdkOWZlZTYwMmFjZGVlODg0Mi4uYzFiMTg0NWMzYmVhZmU5ZGI0MDgzNTBjOGM3ZjBkNzUz
ZjdhYjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2Eu
bW0KQEAgLTY5LDE0ICs2OSwxNCBAQCBzdGF0aWMgY29uc3QgYXV0byBhcHBsZVBheUJ1dHRvbk1p
bmltdW1IZWlnaHQgPSAzMDsKIHZvaWQgUmVuZGVyVGhlbWVDb2NvYTo6YWRqdXN0QXBwbGVQYXlC
dXR0b25TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqKSBjb25zdAogewog
ICAgIGlmIChzdHlsZS5hcHBsZVBheUJ1dHRvblR5cGUoKSA9PSBBcHBsZVBheUJ1dHRvblR5cGU6
OlBsYWluKQotICAgICAgICBzdHlsZS5zZXRNaW5XaWR0aChMZW5ndGgoYXBwbGVQYXlCdXR0b25Q
bGFpbk1pbmltdW1XaWR0aCwgRml4ZWQpKTsKKyAgICAgICAgc3R5bGUuc2V0TWluV2lkdGgoTGVu
Z3RoKGFwcGxlUGF5QnV0dG9uUGxhaW5NaW5pbXVtV2lkdGgsIExlbmd0aFR5cGU6OkZpeGVkKSk7
CiAgICAgZWxzZQotICAgICAgICBzdHlsZS5zZXRNaW5XaWR0aChMZW5ndGgoYXBwbGVQYXlCdXR0
b25NaW5pbXVtV2lkdGgsIEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0TWluSGVpZ2h0KExlbmd0aChh
cHBsZVBheUJ1dHRvbk1pbmltdW1IZWlnaHQsIEZpeGVkKSk7CisgICAgICAgIHN0eWxlLnNldE1p
bldpZHRoKExlbmd0aChhcHBsZVBheUJ1dHRvbk1pbmltdW1XaWR0aCwgTGVuZ3RoVHlwZTo6Rml4
ZWQpKTsKKyAgICBzdHlsZS5zZXRNaW5IZWlnaHQoTGVuZ3RoKGFwcGxlUGF5QnV0dG9uTWluaW11
bUhlaWdodCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKIAogICAgIGlmICghc3R5bGUuaGFzRXhwbGlj
aXRseVNldEJvcmRlclJhZGl1cygpKSB7CiAgICAgICAgIGF1dG8gY29ybmVyUmFkaXVzID0gUEFM
OjpnZXRfUGFzc0tpdF9QS0FwcGxlUGF5QnV0dG9uRGVmYXVsdENvcm5lclJhZGl1cygpOwotICAg
ICAgICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMoeyB7IGNvcm5lclJhZGl1cywgRml4ZWQgfSwgeyBj
b3JuZXJSYWRpdXMsIEZpeGVkIH0gfSk7CisgICAgICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyh7
IHsgY29ybmVyUmFkaXVzLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IGNvcm5lclJhZGl1cywgTGVu
Z3RoVHlwZTo6Rml4ZWQgfSB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA0NWRmMmEyMzY0MWE5ODhlODU3MjgzMWFkYWVkM2Vj
YzgyYWY0OTcwLi5iZGRmMjU3NDYyNzgzNjM5YjRlYjlhMTZjMzAxYWViNDdkYzJhYjMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC05ODksOSArOTg5
LDkgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0U2l6ZUZyb21Gb250KFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgSW50U2l6ZSogc2l6ZXMpIGMKICAgICAvLyBGSVhNRTogQ2hlY2sgaXMgZmxh
d2VkLCBzaW5jZSBpdCBkb2Vzbid0IHRha2UgbWluLXdpZHRoL21heC13aWR0aCBpbnRvIGFjY291
bnQuCiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvckZvbnQoc3R5bGUsIHNpemVzKTsKICAgICBp
ZiAoc3R5bGUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmIHNpemUud2lkdGgoKSA+IDAp
Ci0gICAgICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7Cisg
ICAgICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIExlbmd0aFR5cGU6OkZp
eGVkKSk7CiAgICAgaWYgKHN0eWxlLmhlaWdodCgpLmlzQXV0bygpICYmIHNpemUuaGVpZ2h0KCkg
PiAwKQotICAgICAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKHNpemUuaGVpZ2h0KCksIEZpeGVk
KSk7CisgICAgICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpKTsKIH0KIAogdm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0Rm9udEZyb21Db250
cm9sU2l6ZShSZW5kZXJTdHlsZSYgc3R5bGUsIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUpIGNv
bnN0CkBAIC0xMDY5LDkgKzEwNjksOSBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RMaXN0
QnV0dG9uU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KikgYwogewogICAg
IC8vIEFkZCBhIG1hcmdpbiB0byBwbGFjZSB0aGUgYnV0dG9uIGF0IGVuZCBvZiB0aGUgaW5wdXQg
ZmllbGQuCiAgICAgaWYgKHN0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAg
c3R5bGUuc2V0TWFyZ2luUmlnaHQoTGVuZ3RoKC00LCBGaXhlZCkpOworICAgICAgICBzdHlsZS5z
ZXRNYXJnaW5SaWdodChMZW5ndGgoLTQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgZWxzZQot
ICAgICAgICBzdHlsZS5zZXRNYXJnaW5MZWZ0KExlbmd0aCgtNCwgRml4ZWQpKTsKKyAgICAgICAg
c3R5bGUuc2V0TWFyZ2luTGVmdChMZW5ndGgoLTQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiB9CiAK
ICNlbmRpZgpAQCAtMTYwNiw3ICsxNjA2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0
TWVudUxpc3RTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqIGUpIGMKICAg
ICBzdHlsZS5yZXNldFBhZGRpbmcoKTsKIAogICAgIC8vIEhlaWdodCBpcyBsb2NrZWQgdG8gYXV0
by4KLSAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKEF1dG8pKTsKKyAgICBzdHlsZS5zZXRIZWln
aHQoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsKIAogICAgIC8vIFdoaXRlLXNwYWNlIGlzIGxv
Y2tlZCB0byBwcmUKICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRlU3BhY2U6OlByZSk7CkBA
IC0xNjgzLDcgKzE2ODMsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdEJ1
dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudAogICAgIHN0eWxlLnNl
dEJvcmRlclJhZGl1cyhJbnRTaXplKGludChiYXNlQm9yZGVyUmFkaXVzICsgZm9udFNjYWxlIC0g
MSksIGludChiYXNlQm9yZGVyUmFkaXVzICsgZm9udFNjYWxlIC0gMSkpKTsgLy8gRklYTUU6IFJv
dW5kIHVwPwogCiAgICAgY29uc3QgaW50IG1pbkhlaWdodCA9IDE1OwotICAgIHN0eWxlLnNldE1p
bkhlaWdodChMZW5ndGgobWluSGVpZ2h0LCBGaXhlZCkpOworICAgIHN0eWxlLnNldE1pbkhlaWdo
dChMZW5ndGgobWluSGVpZ2h0LCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogCiAgICAgc3R5bGUuc2V0
TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CiB9CkBAIC0xOTI5
LDE1ICsxOTI5LDE1IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkU3R5
bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KikKICAgICBzZXRGb250RnJvbUNv
bnRyb2xTaXplKHN0eWxlLCBjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpKTsKIAogICAgIC8vIE92
ZXJyaWRlIGhlaWdodC4KLSAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKEF1dG8pKTsKKyAgICBz
dHlsZS5zZXRIZWlnaHQoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsKICAgICBzZXRTZWFyY2hG
aWVsZFNpemUoc3R5bGUpOwogCiAgICAgLy8gT3ZlcnJpZGUgcGFkZGluZyBzaXplIHRvIG1hdGNo
IEFwcEtpdCB0ZXh0IHBvc2l0aW9uaW5nLgogICAgIGNvbnN0IGludCBwYWRkaW5nID0gMSAqIHN0
eWxlLmVmZmVjdGl2ZVpvb20oKTsKLSAgICBzdHlsZS5zZXRQYWRkaW5nTGVmdChMZW5ndGgocGFk
ZGluZywgRml4ZWQpKTsKLSAgICBzdHlsZS5zZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKHBhZGRpbmcs
IEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0UGFkZGluZ1RvcChMZW5ndGgocGFkZGluZywgRml4ZWQp
KTsKLSAgICBzdHlsZS5zZXRQYWRkaW5nQm90dG9tKExlbmd0aChwYWRkaW5nLCBGaXhlZCkpOwor
ICAgIHN0eWxlLnNldFBhZGRpbmdMZWZ0KExlbmd0aChwYWRkaW5nLCBMZW5ndGhUeXBlOjpGaXhl
ZCkpOworICAgIHN0eWxlLnNldFBhZGRpbmdSaWdodChMZW5ndGgocGFkZGluZywgTGVuZ3RoVHlw
ZTo6Rml4ZWQpKTsKKyAgICBzdHlsZS5zZXRQYWRkaW5nVG9wKExlbmd0aChwYWRkaW5nLCBMZW5n
dGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKHBhZGRp
bmcsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAKICAgICBzdHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0
cik7CiB9CkBAIC0yMDA1LDggKzIwMDUsOCBAQCBjb25zdCBJbnRTaXplKiBSZW5kZXJUaGVtZU1h
Yzo6Y2FuY2VsQnV0dG9uU2l6ZXMoKSBjb25zdAogdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0
U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVs
ZW1lbnQqKSBjb25zdAogewogICAgIEludFNpemUgc2l6ZSA9IHNpemVGb3JTeXN0ZW1Gb250KHN0
eWxlLCBjYW5jZWxCdXR0b25TaXplcygpKTsKLSAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6
ZS53aWR0aCgpLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWln
aHQoKSwgRml4ZWQpKTsKKyAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBM
ZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWln
aHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICBzdHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0
cik7CiB9CiAKQEAgLTIwMjEsOCArMjAyMSw4IEBAIGNvbnN0IGludCBlbXB0eVJlc3VsdHNPZmZz
ZXQgPSA5Owogdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9u
UGFydFN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGNvbnN0CiB7CiAg
ICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQoc3R5bGUsIHJlc3VsdHNCdXR0b25T
aXplcygpKTsKLSAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpIC0gZW1wdHlS
ZXN1bHRzT2Zmc2V0LCBGaXhlZCkpOwotICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5o
ZWlnaHQoKSwgRml4ZWQpKTsKKyAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgp
IC0gZW1wdHlSZXN1bHRzT2Zmc2V0LCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNl
dEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICBz
dHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAKQEAgLTIwMzQsOCArMjAzNCw4IEBAIGJv
b2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydChjb25zdCBS
ZW5kZXJPYmplY3QmLCBjb25zdCBQCiB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hG
aWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydFN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
RWxlbWVudCopIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQo
c3R5bGUsIHJlc3VsdHNCdXR0b25TaXplcygpKTsKLSAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgo
c2l6ZS53aWR0aCgpLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5o
ZWlnaHQoKSwgRml4ZWQpKTsKKyAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgp
LCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5o
ZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICBzdHlsZS5zZXRCb3hTaGFkb3cobnVs
bHB0cik7CiB9CiAKQEAgLTIwNzAsOCArMjA3MCw4IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBh
aW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyQm94JiBib3gs
CiB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHls
ZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqKSBjb25zdAogewogICAgIEludFNp
emUgc2l6ZSA9IHNpemVGb3JTeXN0ZW1Gb250KHN0eWxlLCByZXN1bHRzQnV0dG9uU2l6ZXMoKSk7
Ci0gICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSArIHJlc3VsdHNBcnJvd1dp
ZHRoLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwg
Rml4ZWQpKTsKKyAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpICsgcmVzdWx0
c0Fycm93V2lkdGgsIExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAgc3R5bGUuc2V0SGVpZ2h0KExl
bmd0aChzaXplLmhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgIHN0eWxlLnNldEJv
eFNoYWRvdyhudWxscHRyKTsKIH0KIApAQCAtMjE1Miw4ICsyMTUyLDggQEAgdm9pZCBSZW5kZXJU
aGVtZU1hYzo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
RWxlbWVudCopIGMKIHsKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBzdHlsZS5lZmZlY3RpdmVab29t
KCk7CiAgICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQ
YXJ0IHx8IHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkgewot
ICAgICAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihzbGlkZXJUaHVt
YldpZHRoICogem9vbUxldmVsKSwgRml4ZWQpKTsKLSAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KExl
bmd0aChzdGF0aWNfY2FzdDxpbnQ+KHNsaWRlclRodW1iSGVpZ2h0ICogem9vbUxldmVsKSwgRml4
ZWQpKTsKKyAgICAgICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKHN0YXRpY19jYXN0PGludD4oc2xp
ZGVyVGh1bWJXaWR0aCAqIHpvb21MZXZlbCksIExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAgICAg
IHN0eWxlLnNldEhlaWdodChMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihzbGlkZXJUaHVtYkhlaWdo
dCAqIHpvb21MZXZlbCksIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAppbmRleCBhYzBlYTA1MmYwYjNm
ZDM2MmQxMjcxZDBkNjRhNDA1ZjlkZTc5YjFiLi5hYjM2YmQwZDEyYmFiZWMwMjFiZWU4NzgzMzY4
MmY5YTgyZWY4MjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1
dG9TaXppbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1Npemlu
Zy5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBhdXRvIFRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVz
dFRleHROb2RlU2l6ZXMoKSAtPiBTdGlsbEhhc05vZGVzCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBhdXRvIG5ld1BhcmVudFN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0
ZShwYXJlbnRTdHlsZSk7Ci0gICAgICAgIG5ld1BhcmVudFN0eWxlLnNldExpbmVIZWlnaHQobGlu
ZUhlaWdodExlbmd0aC5pc05lZ2F0aXZlKCkgPyBMZW5ndGgobGluZUhlaWdodExlbmd0aCkgOiBM
ZW5ndGgobGluZUhlaWdodCwgRml4ZWQpKTsKKyAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0TGlu
ZUhlaWdodChsaW5lSGVpZ2h0TGVuZ3RoLmlzTmVnYXRpdmUoKSA/IExlbmd0aChsaW5lSGVpZ2h0
TGVuZ3RoKSA6IExlbmd0aChsaW5lSGVpZ2h0LCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgICAg
ICBuZXdQYXJlbnRTdHlsZS5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KExlbmd0aCB7IGxpbmVIZWln
aHRMZW5ndGggfSk7CiAgICAgICAgIG5ld1BhcmVudFN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihX
VEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwogICAgICAgICBuZXdQYXJlbnRTdHlsZS5mb250Q2Fz
Y2FkZSgpLnVwZGF0ZSgmbm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAppbmRleCAyZDlkZWEz
NWQ2YjQ0M2ZiYTdiZGRmOWMzNTcyOWVlZjQyN2Y2MDg0Li44ZGRjMTcyOWFjOGZlNWU2YzVlNmNh
ZTUyNTNlZGI2MjM0MzEzN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTQ5LDEyICs0OSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB2b2lkIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlOjp1cGRhdGVDb21wdXRlZExlbmd0aCgp
CiB7CiAgICAgaWYgKG1fZGlyZWN0aW9uID09IFRvcExlZnQpIHsKLSAgICAgICAgbV9jb21wdXRl
ZExlbmd0aCA9IG1fbGVuZ3RoLmlzVW5kZWZpbmVkKCkgPyBMZW5ndGgoMCwgRml4ZWQpIDogbV9s
ZW5ndGg7CisgICAgICAgIG1fY29tcHV0ZWRMZW5ndGggPSBtX2xlbmd0aC5pc1VuZGVmaW5lZCgp
ID8gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSA6IG1fbGVuZ3RoOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKG1fbGVuZ3RoLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAg
bV9jb21wdXRlZExlbmd0aCA9IExlbmd0aCgxMDAsIFBlcmNlbnQpOworICAgICAgICBtX2NvbXB1
dGVkTGVuZ3RoID0gTGVuZ3RoKDEwMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oCmluZGV4IDc1NzZhNDVkNTcyYWVmMmY5MjNiYjA1OGIyN2Q5NTQ1MThiY2ZiYjcu
Ljg1NTBjZjkyMGJlYmJlNDVlYjc0NjVkOGMyODViYWY4ODQ1NmZiODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC0xMTIsNyArMTEyLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNvbXB1dGVkTGVuZ3RoKCk7CiAKICAgICBEaXJlY3Rp
b24gbV9kaXJlY3Rpb24geyBUb3BMZWZ0IH07Ci0gICAgTGVuZ3RoIG1fbGVuZ3RoIHsgVW5kZWZp
bmVkIH07CisgICAgTGVuZ3RoIG1fbGVuZ3RoIHsgTGVuZ3RoVHlwZTo6VW5kZWZpbmVkIH07CiAg
ICAgTGVuZ3RoIG1fY29tcHV0ZWRMZW5ndGg7CiB9OwogCkBAIC0xMzEsNyArMTMxLDcgQEAgcHVi
bGljOgogICAgICAgICAsIG1fdHlwZShWYWx1ZSkKICAgICB7IH0KICAgICBleHBsaWNpdCBCYXNp
Y1NoYXBlUmFkaXVzKFR5cGUgdCkKLSAgICAgICAgOiBtX3ZhbHVlKFVuZGVmaW5lZCkKKyAgICAg
ICAgOiBtX3ZhbHVlKExlbmd0aFR5cGU6OlVuZGVmaW5lZCkKICAgICAgICAgLCBtX3R5cGUodCkK
ICAgICB7IH0KIApAQCAtMTU4LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgTGVuZ3RoIG1fdmFsdWUgeyBVbmRlZmluZWQgfTsKKyAgICBMZW5ndGggbV92YWx1ZSB7
IExlbmd0aFR5cGU6OlVuZGVmaW5lZCB9OwogICAgIFR5cGUgbV90eXBlIHsgQ2xvc2VzdFNpZGUg
fTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3Jk
ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCmlu
ZGV4IDZmZDViMDNlZGNlMjE1MjNkMTA3ODViZWEyY2I4ZWVmNTYwOTg5Y2IuLjdjMDQ4ZmJiMjNl
NmEyNzY2NDZjZWQ2NTA2NTdmMGY0ZDJmNjA4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0JvcmRlckRhdGEuaApAQCAtMzYsMTAgKzM2LDEwIEBAIGNsYXNzIEJvcmRlckRh
dGEgewogZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOwogcHVibGljOgogICAgIEJvcmRlckRhdGEo
KQotICAgICAgICA6IG1fdG9wTGVmdFJhZGl1cyB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9
IH0KLSAgICAgICAgLCBtX3RvcFJpZ2h0UmFkaXVzIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVk
IH0gfQotICAgICAgICAsIG1fYm90dG9tTGVmdFJhZGl1cyB7IHsgMCwgRml4ZWQgfSwgeyAwLCBG
aXhlZCB9IH0KLSAgICAgICAgLCBtX2JvdHRvbVJpZ2h0UmFkaXVzIHsgeyAwLCBGaXhlZCB9LCB7
IDAsIEZpeGVkIH0gfQorICAgICAgICA6IG1fdG9wTGVmdFJhZGl1cyB7IHsgMCwgTGVuZ3RoVHlw
ZTo6Rml4ZWQgfSwgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9IH0KKyAgICAgICAgLCBtX3RvcFJp
Z2h0UmFkaXVzIHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAsIExlbmd0aFR5cGU6OkZp
eGVkIH0gfQorICAgICAgICAsIG1fYm90dG9tTGVmdFJhZGl1cyB7IHsgMCwgTGVuZ3RoVHlwZTo6
Rml4ZWQgfSwgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9IH0KKyAgICAgICAgLCBtX2JvdHRvbVJp
Z2h0UmFkaXVzIHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAsIExlbmd0aFR5cGU6OkZp
eGVkIH0gfQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9GaWxsTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9G
aWxsTGF5ZXIuaAppbmRleCA5N2NkODMzZmM5Y2IzY2MwNzk3YzI2ZTc3Y2I4YmQ3ZmI3ODUwZTQ0
Li5hZWRhZmZkZjNlYTcxNTQwZjY3ZDA1MWQxN2VhMTIzMmUzMjMzMTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCkBAIC0xNjksOCArMTY5LDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBDb21wb3NpdGVPcGVyYXRvciBpbml0aWFsRmlsbENvbXBvc2l0ZShG
aWxsTGF5ZXJUeXBlKSB7IHJldHVybiBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlcjsgfQog
ICAgIHN0YXRpYyBCbGVuZE1vZGUgaW5pdGlhbEZpbGxCbGVuZE1vZGUoRmlsbExheWVyVHlwZSkg
eyByZXR1cm4gQmxlbmRNb2RlOjpOb3JtYWw7IH0KICAgICBzdGF0aWMgRmlsbFNpemUgaW5pdGlh
bEZpbGxTaXplKEZpbGxMYXllclR5cGUpIHsgcmV0dXJuIHsgfTsgfQotICAgIHN0YXRpYyBMZW5n
dGggaW5pdGlhbEZpbGxYUG9zaXRpb24oRmlsbExheWVyVHlwZSkgeyByZXR1cm4gTGVuZ3RoKDAu
MGYsIFBlcmNlbnQpOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsRmlsbFlQb3NpdGlvbihG
aWxsTGF5ZXJUeXBlKSB7IHJldHVybiBMZW5ndGgoMC4wZiwgUGVyY2VudCk7IH0KKyAgICBzdGF0
aWMgTGVuZ3RoIGluaXRpYWxGaWxsWFBvc2l0aW9uKEZpbGxMYXllclR5cGUpIHsgcmV0dXJuIExl
bmd0aCgwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5p
dGlhbEZpbGxZUG9zaXRpb24oRmlsbExheWVyVHlwZSkgeyByZXR1cm4gTGVuZ3RoKDAuMGYsIExl
bmd0aFR5cGU6OlBlcmNlbnQpOyB9CiAgICAgc3RhdGljIFN0eWxlSW1hZ2UqIGluaXRpYWxGaWxs
SW1hZ2UoRmlsbExheWVyVHlwZSkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0YXRpYyBNYXNr
U291cmNlVHlwZSBpbml0aWFsRmlsbE1hc2tTb3VyY2VUeXBlKEZpbGxMYXllclR5cGUpIHsgcmV0
dXJuIE1hc2tTb3VyY2VUeXBlOjpBbHBoYTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaAppbmRleCBkMzMzYTg3YjZiMjg4OGQ2ZjNmNmUwMjNk
ODNkNDNjOWVhZTM4MjhkLi43OGU2NWNjNzM3ODY5YWFiYzA4MDVmZDU1Mzg4NDU5Yzk5NjJmN2I0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkVHJhY2tTaXplLmgK
QEAgLTU2LDkgKzU2LDkgQEAgY2xhc3MgR3JpZFRyYWNrU2l6ZSB7CiBwdWJsaWM6CiAgICAgR3Jp
ZFRyYWNrU2l6ZShjb25zdCBHcmlkTGVuZ3RoJiBsZW5ndGgsIEdyaWRUcmFja1NpemVUeXBlIHRy
YWNrU2l6ZVR5cGUgPSBMZW5ndGhUcmFja1NpemluZykKICAgICAgICAgOiBtX3R5cGUodHJhY2tT
aXplVHlwZSkKLSAgICAgICAgLCBtX21pblRyYWNrQnJlYWR0aCh0cmFja1NpemVUeXBlID09IEZp
dENvbnRlbnRUcmFja1NpemluZyA/IExlbmd0aChBdXRvKSA6IGxlbmd0aCkKLSAgICAgICAgLCBt
X21heFRyYWNrQnJlYWR0aCh0cmFja1NpemVUeXBlID09IEZpdENvbnRlbnRUcmFja1NpemluZyA/
IExlbmd0aChBdXRvKSA6IGxlbmd0aCkKLSAgICAgICAgLCBtX2ZpdENvbnRlbnRUcmFja0JyZWFk
dGgodHJhY2tTaXplVHlwZSA9PSBGaXRDb250ZW50VHJhY2tTaXppbmcgPyBsZW5ndGggOiBHcmlk
TGVuZ3RoKExlbmd0aChGaXhlZCkpKQorICAgICAgICAsIG1fbWluVHJhY2tCcmVhZHRoKHRyYWNr
U2l6ZVR5cGUgPT0gRml0Q29udGVudFRyYWNrU2l6aW5nID8gTGVuZ3RoKExlbmd0aFR5cGU6OkF1
dG8pIDogbGVuZ3RoKQorICAgICAgICAsIG1fbWF4VHJhY2tCcmVhZHRoKHRyYWNrU2l6ZVR5cGUg
PT0gRml0Q29udGVudFRyYWNrU2l6aW5nID8gTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pIDogbGVu
Z3RoKQorICAgICAgICAsIG1fZml0Q29udGVudFRyYWNrQnJlYWR0aCh0cmFja1NpemVUeXBlID09
IEZpdENvbnRlbnRUcmFja1NpemluZyA/IGxlbmd0aCA6IEdyaWRMZW5ndGgoTGVuZ3RoKExlbmd0
aFR5cGU6OkZpeGVkKSkpCiAgICAgewogICAgICAgICBBU1NFUlQodHJhY2tTaXplVHlwZSA9PSBM
ZW5ndGhUcmFja1NpemluZyB8fCB0cmFja1NpemVUeXBlID09IEZpdENvbnRlbnRUcmFja1Npemlu
Zyk7CiAgICAgICAgIEFTU0VSVCh0cmFja1NpemVUeXBlICE9IEZpdENvbnRlbnRUcmFja1Npemlu
ZyB8fCBsZW5ndGguaXNMZW5ndGgoKSk7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgOiBtX3R5cGUoTWluTWF4VHJhY2tTaXppbmcpCiAgICAgICAgICwgbV9taW5UcmFja0JyZWFk
dGgobWluVHJhY2tCcmVhZHRoKQogICAgICAgICAsIG1fbWF4VHJhY2tCcmVhZHRoKG1heFRyYWNr
QnJlYWR0aCkKLSAgICAgICAgLCBtX2ZpdENvbnRlbnRUcmFja0JyZWFkdGgoR3JpZExlbmd0aChM
ZW5ndGgoRml4ZWQpKSkKKyAgICAgICAgLCBtX2ZpdENvbnRlbnRUcmFja0JyZWFkdGgoR3JpZExl
bmd0aChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSkKICAgICB7CiAgICAgICAgIGNhY2hlTWlu
TWF4VHJhY2tCcmVhZHRoVHlwZXMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCmluZGV4IGQzNTNkODc5OGZkMTFmNmE2MjNiMGQy
MWEyMjk4YzY0NTI4OTJhMzQuLjE0YzMzNWQ3ODg1ZDY1NTJhMjI3MWRjMTcyMDhjNzRkOWEwYzc5
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFn
ZS5oCkBAIC0xOTgsOCArMTk4LDggQEAgcHJpdmF0ZToKICAgICAgICAgTmluZVBpZWNlSW1hZ2VS
dWxlIGhvcml6b250YWxSdWxlIHsgTmluZVBpZWNlSW1hZ2VSdWxlOjpTdHJldGNoIH07CiAgICAg
ICAgIE5pbmVQaWVjZUltYWdlUnVsZSB2ZXJ0aWNhbFJ1bGUgeyBOaW5lUGllY2VJbWFnZVJ1bGU6
OlN0cmV0Y2ggfTsKICAgICAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlOwotICAgICAgICBM
ZW5ndGhCb3ggaW1hZ2VTbGljZXMgeyB7IDEwMCwgUGVyY2VudCB9LCB7IDEwMCwgUGVyY2VudCB9
LCB7IDEwMCwgUGVyY2VudCB9LCB7IDEwMCwgUGVyY2VudCB9IH07Ci0gICAgICAgIExlbmd0aEJv
eCBib3JkZXJTbGljZXMgeyB7IDEsIFJlbGF0aXZlIH0sIHsgMSwgUmVsYXRpdmUgfSwgeyAxLCBS
ZWxhdGl2ZSB9LCB7IDEsIFJlbGF0aXZlIH0gfTsKKyAgICAgICAgTGVuZ3RoQm94IGltYWdlU2xp
Y2VzIHsgeyAxMDAsIExlbmd0aFR5cGU6OlBlcmNlbnQgfSwgeyAxMDAsIExlbmd0aFR5cGU6OlBl
cmNlbnQgfSwgeyAxMDAsIExlbmd0aFR5cGU6OlBlcmNlbnQgfSwgeyAxMDAsIExlbmd0aFR5cGU6
OlBlcmNlbnQgfSB9OworICAgICAgICBMZW5ndGhCb3ggYm9yZGVyU2xpY2VzIHsgeyAxLCBMZW5n
dGhUeXBlOjpSZWxhdGl2ZSB9LCB7IDEsIExlbmd0aFR5cGU6OlJlbGF0aXZlIH0sIHsgMSwgTGVu
Z3RoVHlwZTo6UmVsYXRpdmUgfSwgeyAxLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSB9IH07CiAgICAg
ICAgIExlbmd0aEJveCBvdXRzZXQgeyAwIH07CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggODkxZDQzYmQxMDdk
ZjQwZDYwYTAyZjQzZTk0NDZjYzYwMmQwODI1Ni4uMmFhN2NlYTZiYWE1YzdmNTBjNWUxZGM2OTNj
MThhMzJiN2I5ZGJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCkBAIC0xNDM1LDggKzE0MzUsOCBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRQ
YWdlU2NhbGVUcmFuc2Zvcm0oZmxvYXQgc2NhbGUpCiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyB0
cmFuc2Zvcm07CiAgICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQoU2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb246OmNyZWF0ZShzY2FsZSwgc2NhbGUsIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9u
OjpTQ0FMRSkpOwogICAgIHNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwotICAgIHNldFRyYW5zZm9y
bU9yaWdpblgoTGVuZ3RoKDAsIEZpeGVkKSk7Ci0gICAgc2V0VHJhbnNmb3JtT3JpZ2luWShMZW5n
dGgoMCwgRml4ZWQpKTsKKyAgICBzZXRUcmFuc2Zvcm1PcmlnaW5YKExlbmd0aCgwLCBMZW5ndGhU
eXBlOjpGaXhlZCkpOworICAgIHNldFRyYW5zZm9ybU9yaWdpblkoTGVuZ3RoKDAsIExlbmd0aFR5
cGU6OkZpeGVkKSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldFRleHRTaGFkb3coc3RkOjp1
bmlxdWVfcHRyPFNoYWRvd0RhdGE+IHNoYWRvd0RhdGEsIGJvb2wgYWRkKQpAQCAtMTgyNSwxNiAr
MTgyNSwxNiBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRXb3JkU3BhY2luZyhMZW5ndGgmJiB2YWx1
ZSkKIHsKICAgICBmbG9hdCBmb250V29yZFNwYWNpbmc7CiAgICAgc3dpdGNoICh2YWx1ZS50eXBl
KCkpIHsKLSAgICBjYXNlIEF1dG86CisgICAgY2FzZSBMZW5ndGhUeXBlOjpBdXRvOgogICAgICAg
ICBmb250V29yZFNwYWNpbmcgPSAwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBlcmNlbnQ6
CisgICAgY2FzZSBMZW5ndGhUeXBlOjpQZXJjZW50OgogICAgICAgICBmb250V29yZFNwYWNpbmcg
PSB2YWx1ZS5wZXJjZW50KCkgKiBmb250Q2FzY2FkZSgpLnNwYWNlV2lkdGgoKSAvIDEwMDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaXhlZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZpeGVk
OgogICAgICAgICBmb250V29yZFNwYWNpbmcgPSB2YWx1ZS52YWx1ZSgpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVk
OgogICAgICAgICBmb250V29yZFNwYWNpbmcgPSB2YWx1ZS5ub25OYW5DYWxjdWxhdGVkVmFsdWUo
bWF4VmFsdWVGb3JDc3NMZW5ndGgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBmMTVhZDc0
YjhhMTFiNTYzODQxZjM2MDRiZWEyODgwZTBmYjYzMzYyLi4zNTkzN2RlMzQ0OGJhNDE3ZDFkMmI1
NzIwZjc4M2YwNjZmMTU3ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaApAQCAtMTAzMiw3ICsxMDMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
TGlzdFN0eWxlSW1hZ2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYpOwogICAgIHZvaWQgc2V0TGlzdFN0
eWxlUG9zaXRpb24oTGlzdFN0eWxlUG9zaXRpb24gdikgeyBtX2luaGVyaXRlZEZsYWdzLmxpc3RT
dHlsZVBvc2l0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAKLSAgICB2b2lkIHJl
c2V0TWFyZ2luKCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBtYXJnaW4sIExlbmd0aEJveChG
aXhlZCkpOyB9CisgICAgdm9pZCByZXNldE1hcmdpbigpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0
YSwgbWFyZ2luLCBMZW5ndGhCb3goTGVuZ3RoVHlwZTo6Rml4ZWQpKTsgfQogICAgIHZvaWQgc2V0
TWFyZ2luVG9wKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBtYXJn
aW4udG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KICAgICB2b2lkIHNldE1hcmdpbkJvdHRvbShM
ZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLmJvdHRvbSgp
LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CiAgICAgdm9pZCBzZXRNYXJnaW5MZWZ0KExlbmd0aCYmIGxl
bmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBtYXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxl
bmd0aCkpOyB9CkBAIC0xNDI1LDcgKzE0MjUsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBMZW5n
dGgmIHNoYXBlTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
c2hhcGVNYXJnaW47IH0KICAgICB2b2lkIHNldFNoYXBlTWFyZ2luKExlbmd0aCYmIHNoYXBlTWFy
Z2luKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2hhcGVNYXJnaW4sIFdURk1v
dmUoc2hhcGVNYXJnaW4pKTsgfQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNoYXBlTWFyZ2lu
KCkgeyByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlh
bFNoYXBlTWFyZ2luKCkgeyByZXR1cm4gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKTsgfQog
CiAgICAgZmxvYXQgc2hhcGVJbWFnZVRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnNoYXBlSW1hZ2VUaHJlc2hvbGQ7IH0KICAgICB2b2lkIHNldFNoYXBl
SW1hZ2VUaHJlc2hvbGQoZmxvYXQpOwpAQCAtMTUzMSw3ICsxNTMxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBCb3JkZXJTdHlsZSBpbml0aWFsQm9yZGVyU3R5bGUoKSB7IHJldHVybiBCb3JkZXJT
dHlsZTo6Tm9uZTsgfQogICAgIHN0YXRpYyBPdXRsaW5lSXNBdXRvIGluaXRpYWxPdXRsaW5lU3R5
bGVJc0F1dG8oKSB7IHJldHVybiBPdXRsaW5lSXNBdXRvOjpPZmY7IH0KICAgICBzdGF0aWMgTmlu
ZVBpZWNlSW1hZ2UgaW5pdGlhbE5pbmVQaWVjZUltYWdlKCkgeyByZXR1cm4gTmluZVBpZWNlSW1h
Z2UoKTsgfQotICAgIHN0YXRpYyBMZW5ndGhTaXplIGluaXRpYWxCb3JkZXJSYWRpdXMoKSB7IHJl
dHVybiB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH07IH0KKyAgICBzdGF0aWMgTGVuZ3Ro
U2l6ZSBpbml0aWFsQm9yZGVyUmFkaXVzKCkgeyByZXR1cm4geyB7IDAsIExlbmd0aFR5cGU6OkZp
eGVkIH0sIHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9OyB9CiAgICAgc3RhdGljIENhcHRpb25T
aWRlIGluaXRpYWxDYXB0aW9uU2lkZSgpIHsgcmV0dXJuIENhcHRpb25TaWRlOjpUb3A7IH0KICAg
ICBzdGF0aWMgQ29sdW1uQXhpcyBpbml0aWFsQ29sdW1uQXhpcygpIHsgcmV0dXJuIENvbHVtbkF4
aXM6OkF1dG87IH0KICAgICBzdGF0aWMgQ29sdW1uUHJvZ3Jlc3Npb24gaW5pdGlhbENvbHVtblBy
b2dyZXNzaW9uKCkgeyByZXR1cm4gQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbDsgfQpAQCAtMTU0
MCw3ICsxNTQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBUZXh0Q29tYmluZSBpbml0aWFsVGV4
dENvbWJpbmUoKSB7IHJldHVybiBUZXh0Q29tYmluZTo6Tm9uZTsgfQogICAgIHN0YXRpYyBUZXh0
T3JpZW50YXRpb24gaW5pdGlhbFRleHRPcmllbnRhdGlvbigpIHsgcmV0dXJuIFRleHRPcmllbnRh
dGlvbjo6TWl4ZWQ7IH0KICAgICBzdGF0aWMgT2JqZWN0Rml0IGluaXRpYWxPYmplY3RGaXQoKSB7
IHJldHVybiBPYmplY3RGaXQ6OkZpbGw7IH0KLSAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlh
bE9iamVjdFBvc2l0aW9uKCkgeyByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3RoKDUwLjBmLCBQZXJj
ZW50KSwgTGVuZ3RoKDUwLjBmLCBQZXJjZW50KSk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoUG9pbnQg
aW5pdGlhbE9iamVjdFBvc2l0aW9uKCkgeyByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3RoKDUwLjBm
LCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50
KSk7IH0KICAgICBzdGF0aWMgRW1wdHlDZWxsIGluaXRpYWxFbXB0eUNlbGxzKCkgeyByZXR1cm4g
RW1wdHlDZWxsOjpTaG93OyB9CiAgICAgc3RhdGljIExpc3RTdHlsZVBvc2l0aW9uIGluaXRpYWxM
aXN0U3R5bGVQb3NpdGlvbigpIHsgcmV0dXJuIExpc3RTdHlsZVBvc2l0aW9uOjpPdXRzaWRlOyB9
CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGluaXRpYWxMaXN0U3R5bGVTdHJpbmdWYWx1
ZSgpIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KQEAgLTE1NTcsMjEgKzE1NTcsMjEgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbml0aWFsQ29sdW1uUnVsZVdpZHRoKCkgeyBy
ZXR1cm4gMzsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsT3V0bGluZVdpZHRoKCkgeyByZXR1
cm4gMzsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsTGV0dGVyU3BhY2luZygpIHsgcmV0dXJu
IDA7IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxXb3JkU3BhY2luZygpIHsgcmV0dXJuIExl
bmd0aChGaXhlZCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxXb3JkU3BhY2luZygpIHsg
cmV0dXJuIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGlu
aXRpYWxTaXplKCkgeyByZXR1cm4gTGVuZ3RoKCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRp
YWxNaW5TaXplKCkgeyByZXR1cm4gTGVuZ3RoKCk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRp
YWxNYXhTaXplKCkgeyByZXR1cm4gTGVuZ3RoKFVuZGVmaW5lZCk7IH0KKyAgICBzdGF0aWMgTGVu
Z3RoIGluaXRpYWxNYXhTaXplKCkgeyByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6OlVuZGVmaW5l
ZCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxPZmZzZXQoKSB7IHJldHVybiBMZW5ndGgo
KTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFJhZGl1cygpIHsgcmV0dXJuIExlbmd0aCgp
OyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsTWFyZ2luKCkgeyByZXR1cm4gTGVuZ3RoKEZp
eGVkKTsgfQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFBhZGRpbmcoKSB7IHJldHVybiBMZW5n
dGgoRml4ZWQpOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsVGV4dEluZGVudCgpIHsgcmV0
dXJuIExlbmd0aChGaXhlZCk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxaZXJvTGVuZ3Ro
KCkgeyByZXR1cm4gTGVuZ3RoKEZpeGVkKTsgfQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbE9u
ZUxlbmd0aCgpIHsgcmV0dXJuIExlbmd0aCgxLCBGaXhlZCk7IH0KKyAgICBzdGF0aWMgTGVuZ3Ro
IGluaXRpYWxNYXJnaW4oKSB7IHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpOyB9Cisg
ICAgc3RhdGljIExlbmd0aCBpbml0aWFsUGFkZGluZygpIHsgcmV0dXJuIExlbmd0aChMZW5ndGhU
eXBlOjpGaXhlZCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxUZXh0SW5kZW50KCkgeyBy
ZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5p
dGlhbFplcm9MZW5ndGgoKSB7IHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpOyB9Cisg
ICAgc3RhdGljIExlbmd0aCBpbml0aWFsT25lTGVuZ3RoKCkgeyByZXR1cm4gTGVuZ3RoKDEsIExl
bmd0aFR5cGU6OkZpeGVkKTsgfQogICAgIHN0YXRpYyBzaG9ydCBpbml0aWFsV2lkb3dzKCkgeyBy
ZXR1cm4gMjsgfQogICAgIHN0YXRpYyBzaG9ydCBpbml0aWFsT3JwaGFucygpIHsgcmV0dXJuIDI7
IH0KICAgICAvLyBSZXR1cm5pbmcgLTEwMCUgcGVyY2VudCBoZXJlIG1lYW5zIHRoZSBsaW5lLWhl
aWdodCBpcyBub3Qgc2V0LgotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbExpbmVIZWlnaHQoKSB7
IHJldHVybiBMZW5ndGgoLTEwMC4wZiwgUGVyY2VudCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGlu
aXRpYWxMaW5lSGVpZ2h0KCkgeyByZXR1cm4gTGVuZ3RoKC0xMDAuMGYsIExlbmd0aFR5cGU6OlBl
cmNlbnQpOyB9CiAgICAgc3RhdGljIFRleHRBbGlnbk1vZGUgaW5pdGlhbFRleHRBbGlnbigpIHsg
cmV0dXJuIFRleHRBbGlnbk1vZGU6OlN0YXJ0OyB9CiAgICAgc3RhdGljIE9wdGlvblNldDxUZXh0
RGVjb3JhdGlvbj4gaW5pdGlhbFRleHREZWNvcmF0aW9uKCkgeyByZXR1cm4gT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uPiB7IH07IH0KICAgICBzdGF0aWMgVGV4dERlY29yYXRpb25TdHlsZSBpbml0
aWFsVGV4dERlY29yYXRpb25TdHlsZSgpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGU6OlNv
bGlkOyB9CkBAIC0xNTk2LDcgKzE1OTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0eWxlUmVm
bGVjdGlvbiogaW5pdGlhbEJveFJlZmxlY3QoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIGZs
b2F0IGluaXRpYWxGbGV4R3JvdygpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5p
dGlhbEZsZXhTaHJpbmsoKSB7IHJldHVybiAxOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFs
RmxleEJhc2lzKCkgeyByZXR1cm4gTGVuZ3RoKEF1dG8pOyB9CisgICAgc3RhdGljIExlbmd0aCBp
bml0aWFsRmxleEJhc2lzKCkgeyByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pOyB9CiAg
ICAgc3RhdGljIGludCBpbml0aWFsT3JkZXIoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIFN0
eWxlU2VsZkFsaWdubWVudERhdGEgaW5pdGlhbEp1c3RpZnlJdGVtcygpIHsgcmV0dXJuIFN0eWxl
U2VsZkFsaWdubWVudERhdGEoSXRlbVBvc2l0aW9uOjpMZWdhY3ksIE92ZXJmbG93QWxpZ25tZW50
OjpEZWZhdWx0KTsgfQogICAgIHN0YXRpYyBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGluaXRpYWxT
ZWxmQWxpZ25tZW50KCkgeyByZXR1cm4gU3R5bGVTZWxmQWxpZ25tZW50RGF0YShJdGVtUG9zaXRp
b246OkF1dG8sIE92ZXJmbG93QWxpZ25tZW50OjpEZWZhdWx0KTsgfQpAQCAtMTYwNiw3ICsxNjA2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBGbGV4V3JhcCBpbml0aWFsRmxleFdyYXAoKSB7IHJl
dHVybiBGbGV4V3JhcDo6Tm9XcmFwOyB9CiAgICAgc3RhdGljIGludCBpbml0aWFsTWFycXVlZUxv
b3BDb3VudCgpIHsgcmV0dXJuIC0xOyB9CiAgICAgc3RhdGljIGludCBpbml0aWFsTWFycXVlZVNw
ZWVkKCkgeyByZXR1cm4gODU7IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxNYXJxdWVlSW5j
cmVtZW50KCkgeyByZXR1cm4gTGVuZ3RoKDYsIEZpeGVkKTsgfQorICAgIHN0YXRpYyBMZW5ndGgg
aW5pdGlhbE1hcnF1ZWVJbmNyZW1lbnQoKSB7IHJldHVybiBMZW5ndGgoNiwgTGVuZ3RoVHlwZTo6
Rml4ZWQpOyB9CiAgICAgc3RhdGljIE1hcnF1ZWVCZWhhdmlvciBpbml0aWFsTWFycXVlZUJlaGF2
aW9yKCkgeyByZXR1cm4gTWFycXVlZUJlaGF2aW9yOjpTY3JvbGw7IH0KICAgICBzdGF0aWMgTWFy
cXVlZURpcmVjdGlvbiBpbml0aWFsTWFycXVlZURpcmVjdGlvbigpIHsgcmV0dXJuIE1hcnF1ZWVE
aXJlY3Rpb246OkF1dG87IH0KICAgICBzdGF0aWMgVXNlck1vZGlmeSBpbml0aWFsVXNlck1vZGlm
eSgpIHsgcmV0dXJuIFVzZXJNb2RpZnk6OlJlYWRPbmx5OyB9CkBAIC0xNjM5LDggKzE2MzksOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEdhcExlbmd0aCBpbml0aWFsQ29sdW1uR2FwKCkgeyByZXR1
cm4gR2FwTGVuZ3RoKCk7IH0KICAgICBzdGF0aWMgR2FwTGVuZ3RoIGluaXRpYWxSb3dHYXAoKSB7
IHJldHVybiBHYXBMZW5ndGgoKTsgfQogICAgIHN0YXRpYyBjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b25zJiBpbml0aWFsVHJhbnNmb3JtKCkgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VHJhbnNmb3Jt
T3BlcmF0aW9ucz4gb3BzOyByZXR1cm4gb3BzOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFs
VHJhbnNmb3JtT3JpZ2luWCgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KLSAg
ICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxUcmFuc2Zvcm1PcmlnaW5ZKCkgeyByZXR1cm4gTGVuZ3Ro
KDUwLjBmLCBQZXJjZW50KTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5zZm9ybU9y
aWdpblgoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIExlbmd0aFR5cGU6OlBlcmNlbnQpOyB9Cisg
ICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0
aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7IH0KICAgICBzdGF0aWMgVHJhbnNmb3JtQm94
IGluaXRpYWxUcmFuc2Zvcm1Cb3goKSB7IHJldHVybiBUcmFuc2Zvcm1Cb3g6OlZpZXdCb3g7IH0K
ICAgICBzdGF0aWMgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKiBpbml0aWFsUm90YXRlKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0YXRpYyBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbiogaW5p
dGlhbFNjYWxlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtMTY1MCw4ICsxNjUwLDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBUcmFuc2Zvcm1TdHlsZTNEIGluaXRpYWxUcmFuc2Zvcm1TdHlsZTNE
KCkgeyByZXR1cm4gVHJhbnNmb3JtU3R5bGUzRDo6RmxhdDsgfQogICAgIHN0YXRpYyBCYWNrZmFj
ZVZpc2liaWxpdHkgaW5pdGlhbEJhY2tmYWNlVmlzaWJpbGl0eSgpIHsgcmV0dXJuIEJhY2tmYWNl
VmlzaWJpbGl0eTo6VmlzaWJsZTsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsUGVyc3BlY3Rp
dmUoKSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsUGVyc3BlY3RpdmVP
cmlnaW5YKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjBmLCBQZXJjZW50KTsgfQotICAgIHN0YXRpYyBM
ZW5ndGggaW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwg
UGVyY2VudCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblgo
KSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIExlbmd0aFR5cGU6OlBlcmNlbnQpOyB9CisgICAgc3Rh
dGljIExlbmd0aCBpbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5ZKCkgeyByZXR1cm4gTGVuZ3RoKDUw
LjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsgfQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsQmFj
a2dyb3VuZENvbG9yKCkgeyByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7IH0KICAgICBz
dGF0aWMgQ29sb3IgaW5pdGlhbFRleHRFbXBoYXNpc0NvbG9yKCkgeyByZXR1cm4gY3VycmVudENv
bG9yKCk7IH0KICAgICBzdGF0aWMgVGV4dEVtcGhhc2lzRmlsbCBpbml0aWFsVGV4dEVtcGhhc2lz
RmlsbCgpIHsgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZDsgfQpAQCAtMTY4Nyw3ICsx
Njg3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQot
ICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNwZWNpZmllZExpbmVIZWlnaHQoKSB7IHJldHVybiBM
ZW5ndGgoLTEwMC4wZiwgUGVyY2VudCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTcGVj
aWZpZWRMaW5lSGVpZ2h0KCkgeyByZXR1cm4gTGVuZ3RoKC0xMDAuMGYsIExlbmd0aFR5cGU6OlBl
cmNlbnQpOyB9CiAgICAgc3RhdGljIFRleHRTaXplQWRqdXN0bWVudCBpbml0aWFsVGV4dFNpemVB
ZGp1c3QoKSB7IHJldHVybiBUZXh0U2l6ZUFkanVzdG1lbnQoKTsgfQogI2VuZGlmCiAKQEAgLTE2
OTUsOCArMTY5NSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBUb3VjaEFjdGlvbiBpbml0aWFs
VG91Y2hBY3Rpb25zKCkgeyByZXR1cm4gVG91Y2hBY3Rpb246OkF1dG87IH0KIAotICAgIHN0YXRp
YyBMZW5ndGggaW5pdGlhbFNjcm9sbE1hcmdpbigpIHsgcmV0dXJuIExlbmd0aChGaXhlZCk7IH0K
LSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTY3JvbGxQYWRkaW5nKCkgeyByZXR1cm4gTGVuZ3Ro
KEF1dG8pOyB9CisgICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2Nyb2xsTWFyZ2luKCkgeyByZXR1
cm4gTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlh
bFNjcm9sbFBhZGRpbmcoKSB7IHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byk7IH0KIAog
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgc3RhdGljIFNjcm9sbFNuYXBUeXBlIGlu
aXRpYWxTY3JvbGxTbmFwVHlwZSgpOwpAQCAtMTcyMyw4ICsxNzIzLDggQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIEdyaWRBdXRvRmxvdyBpbml0aWFsR3JpZEF1dG9GbG93KCkgeyByZXR1cm4gQXV0
b0Zsb3dSb3c7IH0KIAotICAgIHN0YXRpYyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gaW5pdGlhbEdy
aWRBdXRvQ29sdW1ucygpIHsgcmV0dXJuIHsgR3JpZFRyYWNrU2l6ZShMZW5ndGgoQXV0bykpIH07
IH0KLSAgICBzdGF0aWMgVmVjdG9yPEdyaWRUcmFja1NpemU+IGluaXRpYWxHcmlkQXV0b1Jvd3Mo
KSB7IHJldHVybiB7IEdyaWRUcmFja1NpemUoTGVuZ3RoKEF1dG8pKSB9OyB9CisgICAgc3RhdGlj
IFZlY3RvcjxHcmlkVHJhY2tTaXplPiBpbml0aWFsR3JpZEF1dG9Db2x1bW5zKCkgeyByZXR1cm4g
eyBHcmlkVHJhY2tTaXplKExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSkgfTsgfQorICAgIHN0YXRp
YyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gaW5pdGlhbEdyaWRBdXRvUm93cygpIHsgcmV0dXJuIHsg
R3JpZFRyYWNrU2l6ZShMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpIH07IH0KIAogICAgIHN0YXRp
YyBOYW1lZEdyaWRBcmVhTWFwIGluaXRpYWxOYW1lZEdyaWRBcmVhKCkgeyByZXR1cm4gTmFtZWRH
cmlkQXJlYU1hcCgpOyB9CiAgICAgc3RhdGljIHNpemVfdCBpbml0aWFsTmFtZWRHcmlkQXJlYUNv
dW50KCkgeyByZXR1cm4gMDsgfQpAQCAtMjIwMyw3ICsyMjAzLDcgQEAgaW5saW5lIHZvaWQgUmVu
ZGVyU3R5bGU6OnNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplJiYgc2l6ZSkKIAogaW5saW5lIHZv
aWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlclJhZGl1cyhjb25zdCBJbnRTaXplJiBzaXplKQogewot
ICAgIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplIHsgeyBzaXplLndpZHRoKCksIEZpeGVkIH0s
IHsgc2l6ZS5oZWlnaHQoKSwgRml4ZWQgfSB9KTsKKyAgICBzZXRCb3JkZXJSYWRpdXMoTGVuZ3Ro
U2l6ZSB7IHsgc2l6ZS53aWR0aCgpLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IHNpemUuaGVpZ2h0
KCksIExlbmd0aFR5cGU6OkZpeGVkIH0gfSk7CiB9CiAKIGlubGluZSBib29sIFJlbmRlclN0eWxl
OjpzZXRab29tKGZsb2F0IHpvb21MZXZlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBjMWQ0YjQ5ZTJlZjlh
OGQ2YjRjMTZlYjczZWY5NThiODNlYjE0MzkzLi43ZDEyMTVmMDE4NWU3NmJjNjVlZjJmMjM3N2Rm
MjFlYTcxMTQ2YzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC04MSw4ICs4MSw4IEBAIHZvaWQgU3R5bGVH
ZW5lcmF0ZWRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxl
bWVudCogcmVuZGVyCiB7CiAgICAgLy8gQXQgYSB6b29tIGxldmVsIG9mIDEgdGhlIGltYWdlIGlz
IGd1YXJhbnRlZWQgdG8gaGF2ZSBhIGRldmljZSBwaXhlbCBzaXplLgogICAgIEZsb2F0U2l6ZSBz
aXplID0gZmxvb3JTaXplVG9EZXZpY2VQaXhlbHMoTGF5b3V0U2l6ZShpbWFnZVNpemUocmVuZGVy
ZXIsIDEpKSwgcmVuZGVyZXIgPyByZW5kZXJlci0+ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rv
cigpIDogMSk7Ci0gICAgaW50cmluc2ljV2lkdGggPSBMZW5ndGgoc2l6ZS53aWR0aCgpLCBGaXhl
ZCk7Ci0gICAgaW50cmluc2ljSGVpZ2h0ID0gTGVuZ3RoKHNpemUuaGVpZ2h0KCksIEZpeGVkKTsK
KyAgICBpbnRyaW5zaWNXaWR0aCA9IExlbmd0aChzaXplLndpZHRoKCksIExlbmd0aFR5cGU6OkZp
eGVkKTsKKyAgICBpbnRyaW5zaWNIZWlnaHQgPSBMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpOwogICAgIGludHJpbnNpY1JhdGlvID0gc2l6ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmgKaW5kZXggN2RiMzdhYTdmNmZhNGRkZWFlNzQwNjBkNTc2YWM3M2M3NmQyOWVkYi4u
NWMzZjJiYmRhMDZkODdmN2EwMTQ3NDBjMWU1OGVhZTBlYmZlNDc3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YS5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIERhdGFSZWY8U3R5bGVHcmlk
SXRlbURhdGE+IGdyaWRJdGVtOwogCiAgICAgTGVuZ3RoQm94IHNjcm9sbE1hcmdpbiB7IDAsIDAs
IDAsIDAgfTsKLSAgICBMZW5ndGhCb3ggc2Nyb2xsUGFkZGluZyB7IExlbmd0aChBdXRvKSwgTGVu
Z3RoKEF1dG8pLCBMZW5ndGgoQXV0byksIExlbmd0aChBdXRvKSB9OworICAgIExlbmd0aEJveCBz
Y3JvbGxQYWRkaW5nIHsgTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pLCBMZW5ndGgoTGVuZ3RoVHlw
ZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkF1
dG8pIH07CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBTY3JvbGxTbmFwVHlwZSBz
Y3JvbGxTbmFwVHlwZTsKICAgICBTY3JvbGxTbmFwQWxpZ24gc2Nyb2xsU25hcEFsaWduOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmVmbGVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmVmbGVjdGlvbi5oCmluZGV4
IDk2ZTNlM2JkZmE0NDc1ZGZkYzlmODNhZGFkNGQ3NjM4Mzg4ZDI3MjUuLmNjYjMyNDE0Y2Q1M2Rl
YjdjYWYxMTJiZGM0YzhkZGIzMDUxN2NhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJlZmxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSZWZsZWN0aW9uLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIFN0eWxlUmVmbGVjdGlvbigpCi0gICAgICAgIDogbV9vZmZzZXQoMCwg
Rml4ZWQpCisgICAgICAgIDogbV9vZmZzZXQoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpCiAgICAgICAg
ICwgbV9tYXNrKE5pbmVQaWVjZUltYWdlOjpUeXBlOjpNYXNrKQogICAgIHsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmNw
cAppbmRleCAwNzkxODRjY2MzYjkyOTQyYjQ2NDJlNjU3MzgyZTZlYTM1MGJmYjg0Li41YzM3OTY3
NDEyNzU1ODgyZTc3MjVhMzEzY2I3OTY5ODA5NGJlNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHAKQEAgLTI3LDggKzI3
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURF
TlRJRklFUihTdHlsZVN1cnJvdW5kRGF0YSk7CiAKIFN0eWxlU3Vycm91bmREYXRhOjpTdHlsZVN1
cnJvdW5kRGF0YSgpCi0gICAgOiBtYXJnaW4oRml4ZWQpCi0gICAgLCBwYWRkaW5nKEZpeGVkKQor
ICAgIDogbWFyZ2luKExlbmd0aFR5cGU6OkZpeGVkKQorICAgICwgcGFkZGluZyhMZW5ndGhUeXBl
OjpGaXhlZCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRnVsbFNjcmVlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmNwcAppbmRleCBi
Mjg0MjBhNjNkOTZhMTEyNjczZWUwMTBjMzMyMjM0ZWIyY2JjNmI2Li4xMzdmMjI4NDNlYmRmY2Ri
YjZjMDkwZGNhODYyNmFkOGY2NjhlMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVu
LmNwcApAQCAtNDAsOSArNDAsOSBAQCBSZW5kZXJUcmVlQnVpbGRlcjo6RnVsbFNjcmVlbjo6RnVs
bFNjcmVlbihSZW5kZXJUcmVlQnVpbGRlciYgYnVpbGRlcikKIHZvaWQgUmVuZGVyVHJlZUJ1aWxk
ZXI6OkZ1bGxTY3JlZW46OmNyZWF0ZVBsYWNlaG9sZGVyKFJlbmRlckZ1bGxTY3JlZW4mIHJlbmRl
cmVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBMYXlvdXRSZWN0
JiBmcmFtZVJlY3QpCiB7CiAgICAgaWYgKHN0eWxlLT53aWR0aCgpLmlzQXV0bygpKQotICAgICAg
ICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKGZyYW1lUmVjdC53aWR0aCgpLCBGaXhlZCkpOworICAg
ICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKGZyYW1lUmVjdC53aWR0aCgpLCBMZW5ndGhUeXBl
OjpGaXhlZCkpOwogICAgIGlmIChzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAgIHN0
eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKGZyYW1lUmVjdC5oZWlnaHQoKSwgRml4ZWQpKTsKKyAgICAg
ICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoZnJhbWVSZWN0LmhlaWdodCgpLCBMZW5ndGhUeXBl
OjpGaXhlZCkpOwogCiAgICAgaWYgKGF1dG8qIHBsYWNlSG9sZGVyID0gcmVuZGVyZXIucGxhY2Vo
b2xkZXIoKSkgewogICAgICAgICBwbGFjZUhvbGRlci0+c2V0U3R5bGUoV1RGTW92ZSgqc3R5bGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5jcHAKaW5kZXggYzg5YTI0OTc4MzVh
OTM4Zjk4OTlkODJiNjE0OTYyNzkzZThiMjZhYi4uNmFkMmQwMDE5ODcxNDgyMzRlZmE0ZGE5MzIz
NmRhNzMwNDdjYzc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1
c3Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5jcHAKQEAg
LTc5LDE2ICs3OSwxNiBAQCBzdGF0aWMgdm9pZCBhZGRJbnRyaW5zaWNNYXJnaW5zKFJlbmRlclN0
eWxlJiBzdHlsZSkKICAgICAvLyBGSVhNRTogVXNpbmcgImhhc1F1aXJrIiB0byBkZWNpZGUgdGhl
IG1hcmdpbiB3YXNuJ3Qgc2V0IGlzIGtpbmQgb2YgbGFtZS4KICAgICBpZiAoc3R5bGUud2lkdGgo
KS5pc0ludHJpbnNpY09yQXV0bygpKSB7CiAgICAgICAgIGlmIChzdHlsZS5tYXJnaW5MZWZ0KCku
aGFzUXVpcmsoKSkKLSAgICAgICAgICAgIHN0eWxlLnNldE1hcmdpbkxlZnQoTGVuZ3RoKGludHJp
bnNpY01hcmdpbiwgRml4ZWQpKTsKKyAgICAgICAgICAgIHN0eWxlLnNldE1hcmdpbkxlZnQoTGVu
Z3RoKGludHJpbnNpY01hcmdpbiwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICAgICAgaWYgKHN0
eWxlLm1hcmdpblJpZ2h0KCkuaGFzUXVpcmsoKSkKLSAgICAgICAgICAgIHN0eWxlLnNldE1hcmdp
blJpZ2h0KExlbmd0aChpbnRyaW5zaWNNYXJnaW4sIEZpeGVkKSk7CisgICAgICAgICAgICBzdHls
ZS5zZXRNYXJnaW5SaWdodChMZW5ndGgoaW50cmluc2ljTWFyZ2luLCBMZW5ndGhUeXBlOjpGaXhl
ZCkpOwogICAgIH0KIAogICAgIGlmIChzdHlsZS5oZWlnaHQoKS5pc0F1dG8oKSkgewogICAgICAg
ICBpZiAoc3R5bGUubWFyZ2luVG9wKCkuaGFzUXVpcmsoKSkKLSAgICAgICAgICAgIHN0eWxlLnNl
dE1hcmdpblRvcChMZW5ndGgoaW50cmluc2ljTWFyZ2luLCBGaXhlZCkpOworICAgICAgICAgICAg
c3R5bGUuc2V0TWFyZ2luVG9wKExlbmd0aChpbnRyaW5zaWNNYXJnaW4sIExlbmd0aFR5cGU6OkZp
eGVkKSk7CiAgICAgICAgIGlmIChzdHlsZS5tYXJnaW5Cb3R0b20oKS5oYXNRdWlyaygpKQotICAg
ICAgICAgICAgc3R5bGUuc2V0TWFyZ2luQm90dG9tKExlbmd0aChpbnRyaW5zaWNNYXJnaW4sIEZp
eGVkKSk7CisgICAgICAgICAgICBzdHlsZS5zZXRNYXJnaW5Cb3R0b20oTGVuZ3RoKGludHJpbnNp
Y01hcmdpbiwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICB9CiB9CiAKQEAgLTM5Miw3ICszOTIs
NyBAQCB2b2lkIEFkanVzdGVyOjphZGp1c3QoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogdXNlckFnZW50QXBwZWFyYW5jZQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Ly8gQXBwYXJlbnRseSB0aGlzIGlzIHRoZSBleHBlY3RlZCBsZWdhY3kgYmVoYXZpb3IuCiAgICAg
ICAgICAgICBpZiAoaXNWZXJ0aWNhbCAmJiBzdHlsZS5oZWlnaHQoKS5pc0F1dG8oKSkKLSAgICAg
ICAgICAgICAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKDIwMCwgRml4ZWQpKTsKKyAgICAgICAg
ICAgICAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKDIwMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtNzAzLDcgKzcwMyw3IEBAIGJvb2wgQWRqdXN0ZXI6OmFk
anVzdEZvclRleHRBdXRvc2l6aW5nKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCYg
ZWxlbWVuCiAgICAgICAgIHN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCZlbGVtZW50LmRvY3Vt
ZW50KCkuZm9udFNlbGVjdG9yKCkpOwogICAgIH0KICAgICBpZiAoYXV0byBuZXdMaW5lSGVpZ2h0
ID0gYWRqdXN0bWVudC5uZXdMaW5lSGVpZ2h0KQotICAgICAgICBzdHlsZS5zZXRMaW5lSGVpZ2h0
KHsgKm5ld0xpbmVIZWlnaHQsIEZpeGVkIH0pOworICAgICAgICBzdHlsZS5zZXRMaW5lSGVpZ2h0
KHsgKm5ld0xpbmVIZWlnaHQsIExlbmd0aFR5cGU6OkZpeGVkIH0pOwogICAgIGlmIChhdXRvIG5l
d1N0YXR1cyA9IGFkanVzdG1lbnQubmV3U3RhdHVzKQogICAgICAgICBzdHlsZS5zZXRBdXRvc2l6
ZVN0YXR1cygqbmV3U3RhdHVzKTsKICAgICByZXR1cm4gYWRqdXN0bWVudC5uZXdGb250U2l6ZSB8
fCBhZGp1c3RtZW50Lm5ld0xpbmVIZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDY1OGRjYjkyOTJiNTA3NzgxOTZhMDQzOGVjNzUyMjZi
ZWI2NTM0NDkuLjNiMjkxMmYxOTAzNjM0ODRiNDU1NDQ0NzYyMWRhN2IzZjNmMDM1YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0yMDgsMTkg
KzIwOCwxOSBAQCBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgo
Y29uc3QgQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsCiAgICAgfQogCiAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLmlzUGVyY2VudGFnZSgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoKHByaW1pdGl2
ZVZhbHVlLmRvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICByZXR1cm4gTGVuZ3RoKHBy
aW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogCiAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCiAg
ICAgICAgIHJldHVybiBMZW5ndGgocHJpbWl0aXZlVmFsdWUuY3NzQ2FsY1ZhbHVlKCktPmNyZWF0
ZUNhbGN1bGF0aW9uVmFsdWUoY29udmVyc2lvbkRhdGEpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBMZW5ndGgoMCwgRml4ZWQpOworICAgIHJldHVybiBMZW5ndGgo
MCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogfQogCiBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRMZW5ndGhPckF1dG8oY29uc3QgQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICByZXR1cm4g
TGVuZ3RoKEF1dG8pOworICAgICAgICByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pOwog
ICAgIHJldHVybiBjb252ZXJ0TGVuZ3RoKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCkBAIC0y
MzEsMjIgKzIzMSwyMiBAQCBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRM
ZW5ndGhTaXppbmcoY29uc3QgQnVpbGRlclN0YXRlJiBidWlsZGVyUwogICAgIGNhc2UgQ1NTVmFs
dWVJbnZhbGlkOgogICAgICAgICByZXR1cm4gY29udmVydExlbmd0aChidWlsZGVyU3RhdGUsIHZh
bHVlKTsKICAgICBjYXNlIENTU1ZhbHVlSW50cmluc2ljOgotICAgICAgICByZXR1cm4gTGVuZ3Ro
KEludHJpbnNpYyk7CisgICAgICAgIHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6SW50cmluc2lj
KTsKICAgICBjYXNlIENTU1ZhbHVlTWluSW50cmluc2ljOgotICAgICAgICByZXR1cm4gTGVuZ3Ro
KE1pbkludHJpbnNpYyk7CisgICAgICAgIHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6TWluSW50
cmluc2ljKTsKICAgICBjYXNlIENTU1ZhbHVlTWluQ29udGVudDoKICAgICBjYXNlIENTU1ZhbHVl
V2Via2l0TWluQ29udGVudDoKLSAgICAgICAgcmV0dXJuIExlbmd0aChNaW5Db250ZW50KTsKKyAg
ICAgICAgcmV0dXJuIExlbmd0aChMZW5ndGhUeXBlOjpNaW5Db250ZW50KTsKICAgICBjYXNlIENT
U1ZhbHVlTWF4Q29udGVudDoKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TWF4Q29udGVudDoKLSAg
ICAgICAgcmV0dXJuIExlbmd0aChNYXhDb250ZW50KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aChM
ZW5ndGhUeXBlOjpNYXhDb250ZW50KTsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0RmlsbEF2YWls
YWJsZToKLSAgICAgICAgcmV0dXJuIExlbmd0aChGaWxsQXZhaWxhYmxlKTsKKyAgICAgICAgcmV0
dXJuIExlbmd0aChMZW5ndGhUeXBlOjpGaWxsQXZhaWxhYmxlKTsKICAgICBjYXNlIENTU1ZhbHVl
Rml0Q29udGVudDoKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Rml0Q29udGVudDoKLSAgICAgICAg
cmV0dXJuIExlbmd0aChGaXRDb250ZW50KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aChMZW5ndGhU
eXBlOjpGaXRDb250ZW50KTsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKLSAgICAgICAgcmV0dXJu
IExlbmd0aChBdXRvKTsKKyAgICAgICAgcmV0dXJuIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIExlbmd0aCgpOwpAQCAtMjU2LDcgKzI1Niw3IEBAIGlubGluZSBMZW5ndGggQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydExlbmd0aFNpemluZyhjb25zdCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
CiBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhNYXhTaXppbmco
Y29uc3QgQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVOb25lKQotICAgICAgICByZXR1cm4gTGVuZ3RoKFVuZGVmaW5lZCk7CisgICAg
ICAgIHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6VW5kZWZpbmVkKTsKICAgICByZXR1cm4gY29u
dmVydExlbmd0aFNpemluZyhidWlsZGVyU3RhdGUsIHZhbHVlKTsKIH0KIApAQCAtMzIwLDcgKzMy
MCw3IEBAIGlubGluZSBmbG9hdCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3BhY2luZyhCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QKIGlubGluZSBMZW5ndGggQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFRvUmFkaXVzTGVuZ3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNv
bnZlcnNpb25EYXRhLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYg
KHZhbHVlLmlzUGVyY2VudGFnZSgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoKHZhbHVlLmRvdWJs
ZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICByZXR1cm4gTGVuZ3RoKHZhbHVlLmRvdWJsZVZh
bHVlKCksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgIGlmICh2YWx1ZS5pc0NhbGN1bGF0ZWRQ
ZXJjZW50YWdlV2l0aExlbmd0aCgpKQogICAgICAgICByZXR1cm4gTGVuZ3RoKHZhbHVlLmNzc0Nh
bGNWYWx1ZSgpLT5jcmVhdGVDYWxjdWxhdGlvblZhbHVlKGNvbnZlcnNpb25EYXRhKSk7CiAgICAg
cmV0dXJuIHZhbHVlLmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CkBAIC0z
MzAsNyArMzMwLDcgQEAgaW5saW5lIExlbmd0aFNpemUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFJhZGl1cyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY28KIHsKICAgICBhdXRvKiBwYWly
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5wYWlyVmFsdWUoKTsKICAgICBp
ZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQotICAgICAgICBy
ZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9OworICAgICAgICByZXR1cm4geyB7
IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9OwogCiAg
ICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSA9IGJ1aWxkZXJTdGF0
ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCk7CiAgICAgTGVuZ3RoU2l6ZSByYWRpdXMgeyBj
b252ZXJ0VG9SYWRpdXNMZW5ndGgoY29udmVyc2lvbkRhdGEsICpwYWlyLT5maXJzdCgpKSwgY29u
dmVydFRvUmFkaXVzTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCAqcGFpci0+c2Vjb25kKCkpIH07CkBA
IC0zMzgsNyArMzM4LDcgQEAgaW5saW5lIExlbmd0aFNpemUgQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFJhZGl1cyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY28KICAgICBBU1NFUlQoIXJh
ZGl1cy53aWR0aC5pc05lZ2F0aXZlKCkpOwogICAgIEFTU0VSVCghcmFkaXVzLmhlaWdodC5pc05l
Z2F0aXZlKCkpOwogICAgIGlmIChyYWRpdXMud2lkdGguaXNaZXJvKCkgfHwgcmFkaXVzLmhlaWdo
dC5pc1plcm8oKSkKLSAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0g
fTsKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAsIExlbmd0
aFR5cGU6OkZpeGVkIH0gfTsKIAogICAgIHJldHVybiByYWRpdXM7CiB9CkBAIC0zNDYsMTIgKzM0
NiwxMiBAQCBpbmxpbmUgTGVuZ3RoU2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVz
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjbwogaW5saW5lIExlbmd0aCBCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5n
dGgpCiB7CiAgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkKLSAgICAgICAgcmV0dXJuIExlbmd0
aCgxMDAgLSBsZW5ndGgudmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIHJldHVybiBMZW5ndGgo
MTAwIC0gbGVuZ3RoLnZhbHVlKCksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgIAogICAgIC8v
IFR1cm4gdGhpcyBpbnRvIGEgY2FsYyBleHByZXNzaW9uOiBjYWxjKDEwMCUgLSBsZW5ndGgpCiAg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+PiBsZW5ndGhzOwog
ICAgIGxlbmd0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKLSAgICBsZW5ndGhzLnVuY2hl
Y2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQ
ZXJjZW50KSkpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4
cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIExlbmd0aFR5cGU6OlBlcmNlbnQpKSk7CiAgICAg
bGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4o
bGVuZ3RoKSk7CiAgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRp
b24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOwogICAgIHJldHVy
biBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBWYWx1ZVJhbmdl
QWxsKSk7CkBAIC0zODUsMTEgKzM4NSwxMSBAQCBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdAogICAg
IGlmICh2YWx1ZS5pc1ZhbHVlSUQoKSkgewogICAgICAgICBzd2l0Y2ggKHZhbHVlLnZhbHVlSUQo
KSkgewogICAgICAgICBjYXNlIGNzc1ZhbHVlRm9yMDoKLSAgICAgICAgICAgIHJldHVybiBMZW5n
dGgoMCwgUGVyY2VudCk7CisgICAgICAgICAgICByZXR1cm4gTGVuZ3RoKDAsIExlbmd0aFR5cGU6
OlBlcmNlbnQpOwogICAgICAgICBjYXNlIGNzc1ZhbHVlRm9yMTAwOgotICAgICAgICAgICAgcmV0
dXJuIExlbmd0aCgxMDAsIFBlcmNlbnQpOworICAgICAgICAgICAgcmV0dXJuIExlbmd0aCgxMDAs
IExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgICAgICBjYXNlIENTU1ZhbHVlQ2VudGVyOgotICAg
ICAgICAgICAgcmV0dXJuIExlbmd0aCg1MCwgUGVyY2VudCk7CisgICAgICAgICAgICByZXR1cm4g
TGVuZ3RoKDUwLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CkBAIC05NDIsMTAgKzk0Miwx
MCBAQCBpbmxpbmUgU2Nyb2xsU25hcFN0b3AgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNjcm9s
bFNuYXBTdG9wKEJ1aWxkZXJTdGF0ZSYsIGNvbgogaW5saW5lIEdyaWRMZW5ndGggQnVpbGRlckNv
bnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrQnJlYWR0aChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYg
cHJpbWl0aXZlVmFsdWUsIEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGlmIChw
cmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVNaW5Db250ZW50IHx8IHByaW1pdGl2
ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQpCi0gICAgICAgIHJl
dHVybiBMZW5ndGgoTWluQ29udGVudCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoTGVuZ3RoVHlw
ZTo6TWluQ29udGVudCk7CiAKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlTWF4Q29udGVudCB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVX
ZWJraXRNYXhDb250ZW50KQotICAgICAgICByZXR1cm4gTGVuZ3RoKE1heENvbnRlbnQpOworICAg
ICAgICByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6Ok1heENvbnRlbnQpOwogCiAgICAgLy8gRnJh
Y3Rpb25hbCB1bml0LgogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc0ZsZXgoKSkKQEAgLTEyMTUs
OSArMTIxNSw5IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRXb3JkU3BhY2luZyhCdWlsZGVyU3RhdGUmIGJ1aWxkCiAgICAgZWxzZSBpZiAocHJpbWl0
aXZlVmFsdWUuaXNMZW5ndGgoKSkKICAgICAgICAgd29yZFNwYWNpbmcgPSBwcmltaXRpdmVWYWx1
ZS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhUZXh0
Wm9vbUZhY3RvcihidWlsZGVyU3RhdGUpKTsKICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5p
c1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgd29yZFNwYWNpbmcgPSBMZW5ndGgoY2xhbXBUbzxmbG9h
dD4ocHJpbWl0aXZlVmFsdWUuZG91YmxlVmFsdWUoKSwgbWluVmFsdWVGb3JDc3NMZW5ndGgsIG1h
eFZhbHVlRm9yQ3NzTGVuZ3RoKSwgUGVyY2VudCk7CisgICAgICAgIHdvcmRTcGFjaW5nID0gTGVu
Z3RoKGNsYW1wVG88ZmxvYXQ+KHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCksIG1pblZhbHVl
Rm9yQ3NzTGVuZ3RoLCBtYXhWYWx1ZUZvckNzc0xlbmd0aCksIExlbmd0aFR5cGU6OlBlcmNlbnQp
OwogICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHdvcmRT
cGFjaW5nID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCksIEZpeGVkKTsKKyAg
ICAgICAgd29yZFNwYWNpbmcgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUuZG91YmxlVmFsdWUoKSwg
TGVuZ3RoVHlwZTo6Rml4ZWQpOwogCiAgICAgcmV0dXJuIHdvcmRTcGFjaW5nOwogfQpAQCAtMTU0
Miw3ICsxNTQyLDcgQEAgaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiBidWlsZGUKICAgICAgICAgYXV0byBjb252
ZXJzaW9uRGF0YSA9IGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkuY29w
eVdpdGhBZGp1c3RlZFpvb21BbmRQcm9wZXJ0eVRvQ29tcHV0ZSh6b29tV2l0aFRleHRab29tRmFj
dG9yKGJ1aWxkZXJTdGF0ZSksIENTU1Byb3BlcnR5TGluZUhlaWdodCk7CiAgICAgICAgIExlbmd0
aCBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lv
bkRhdGEpOwogICAgICAgICBpZiAobXVsdGlwbGllciAhPSAxLmYpCi0gICAgICAgICAgICBsZW5n
dGggPSBMZW5ndGgobGVuZ3RoLnZhbHVlKCkgKiBtdWx0aXBsaWVyLCBGaXhlZCk7CisgICAgICAg
ICAgICBsZW5ndGggPSBMZW5ndGgobGVuZ3RoLnZhbHVlKCkgKiBtdWx0aXBsaWVyLCBMZW5ndGhU
eXBlOjpGaXhlZCk7CiAgICAgICAgIHJldHVybiBsZW5ndGg7CiAgICAgfQogCkBAIC0xNTU0LDEw
ICsxNTU0LDEwIEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRMaW5lSGVpZ2h0KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlCiAgICAgLy8gdmFsdWVzIGFuZCBy
YXcgbnVtYmVycyB0byBwZXJjZW50YWdlcy4KICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNQZXJj
ZW50YWdlKCkpIHsKICAgICAgICAgLy8gRklYTUU6IHBlcmNlbnRhZ2Ugc2hvdWxkIG5vdCBiZSBy
ZXN0cmljdGVkIHRvIGFuIGludGVnZXIgaGVyZS4KLSAgICAgICAgcmV0dXJuIExlbmd0aCgoYnVp
bGRlclN0YXRlLnN0eWxlKCkuY29tcHV0ZWRGb250U2l6ZSgpICogcHJpbWl0aXZlVmFsdWUuaW50
VmFsdWUoKSkgLyAxMDAsIEZpeGVkKTsKKyAgICAgICAgcmV0dXJuIExlbmd0aCgoYnVpbGRlclN0
YXRlLnN0eWxlKCkuY29tcHV0ZWRGb250U2l6ZSgpICogcHJpbWl0aXZlVmFsdWUuaW50VmFsdWUo
KSkgLyAxMDAsIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICB9CiAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBMZW5ndGgocHJpbWl0aXZlVmFsdWUuZG91
YmxlVmFsdWUoKSAqIDEwMC4wLCBQZXJjZW50KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aChwcmlt
aXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpICogMTAwLjAsIExlbmd0aFR5cGU6OlBlcmNlbnQpOwog
CiAgICAgLy8gRklYTUU6IFRoZSBwYXJzZXIgc2hvdWxkIG9ubHkgZW1pdCB0aGUgYWJvdmUgdHlw
ZXMsIHNvIHRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuIFdlIHNob3VsZCBjaGFuZ2UgdGhl
CiAgICAgLy8gdHlwZSBvZiB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybiBqdXN0IGEgTGVuZ3RoIChh
bmQgbm90IGFuIE9wdGlvbmFsKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmgKaW5kZXggMjA5Yjg2NzI3NmU2YjgyMzY5NTI3NjY4NmE5NWM5ZTVmMGUxYWYzMy4uMWJm
NmVjNmQyMWE5MzU0NTZkMmZlNTNlZWMzZDNkYTMzMDhiN2MxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTUzOSwxNCArNTM5LDE0IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNsaWNlOgogICAgICAgICAgICAgLy8g
TWFza3MgaGF2ZSBhIGRpZmZlcmVudCBpbml0aWFsIHZhbHVlIGZvciBzbGljZXMuIFByZXNlcnZl
IHRoZSB2YWx1ZSBvZiAiMCBmaWxsIiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCi0gICAg
ICAgICAgICBpbWFnZS5zZXRJbWFnZVNsaWNlcyh0eXBlID09IEJvcmRlckltYWdlID8gTGVuZ3Ro
Qm94KExlbmd0aCgxMDAsIFBlcmNlbnQpLCBMZW5ndGgoMTAwLCBQZXJjZW50KSwgTGVuZ3RoKDEw
MCwgUGVyY2VudCksIExlbmd0aCgxMDAsIFBlcmNlbnQpKSA6IExlbmd0aEJveCgpKTsKKyAgICAg
ICAgICAgIGltYWdlLnNldEltYWdlU2xpY2VzKHR5cGUgPT0gQm9yZGVySW1hZ2UgPyBMZW5ndGhC
b3goTGVuZ3RoKDEwMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCgxMDAsIExlbmd0aFR5
cGU6OlBlcmNlbnQpLCBMZW5ndGgoMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVuZ3RoKDEw
MCwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpIDogTGVuZ3RoQm94KCkpOwogICAgICAgICAgICAgaW1h
Z2Uuc2V0RmlsbCh0eXBlICE9IEJvcmRlckltYWdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFdpZHRoOgogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBsb2NhbCB2
YXJpYWJsZSB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgR0NDIDguMSBBZGRyZXNzIFNhbml0
aXplci4KICAgICAgICAgICAgIC8vIE1pZ2h0IGJlIHNsaWdodGx5IGxlc3MgZWZmaWNpZW50IHdo
ZW4gdGhlIHR5cGUgaXMgbm90IEJvcmRlckltYWdlIHNpbmNlIHRoaXMgaXMgdW51c2VkIGluIHRo
YXQgY2FzZS4KICAgICAgICAgICAgIC8vIFNob3VsZCBiZSBzd2l0Y2hlZCBiYWNrIHRvIGEgdGVt
cG9yYXJ5IHdoZW4gcG9zc2libGUuIFNlZSBodHRwczovL3dlYmtpdC5vcmcvYi8xODY5ODAKLSAg
ICAgICAgICAgIExlbmd0aEJveCBsZW5ndGhCb3goTGVuZ3RoKDEsIFJlbGF0aXZlKSwgTGVuZ3Ro
KDEsIFJlbGF0aXZlKSwgTGVuZ3RoKDEsIFJlbGF0aXZlKSwgTGVuZ3RoKDEsIFJlbGF0aXZlKSk7
CisgICAgICAgICAgICBMZW5ndGhCb3ggbGVuZ3RoQm94KExlbmd0aCgxLCBMZW5ndGhUeXBlOjpS
ZWxhdGl2ZSksIExlbmd0aCgxLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSksIExlbmd0aCgxLCBMZW5n
dGhUeXBlOjpSZWxhdGl2ZSksIExlbmd0aCgxLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSkpOwogICAg
ICAgICAgICAgLy8gTWFza3MgaGF2ZSBhIGRpZmZlcmVudCBpbml0aWFsIHZhbHVlIGZvciB3aWR0
aHMuIFRoZXkgdXNlIGFuICdhdXRvJyB2YWx1ZSByYXRoZXIgdGhhbiB0cnlpbmcgdG8gZml0IHRv
IHRoZSBib3JkZXIuCiAgICAgICAgICAgICBpbWFnZS5zZXRCb3JkZXJTbGljZXModHlwZSA9PSBC
b3JkZXJJbWFnZSA/IGxlbmd0aEJveCA6IExlbmd0aEJveCgpKTsKICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCmluZGV4IDk2NmVh
ZTgyZWY0Mjg2NmRjNWM5ZjhkN2RkZDQ5NTE1ZWM2MDc4ZmEuLmM2NmM4YjI3YTY1YTg0NGI2NzRl
ZjFlZWEwZjhhZmFhMDIzMzNlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQnVpbGRlclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXJTdGF0ZS5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBib29sIEJ1aWxkZXJTdGF0ZTo6Y3JlYXRl
RmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1ZSYgaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OkJMVVI6IHsKLSAgICAgICAgICAgIExlbmd0aCBzdGREZXZpYXRpb24gPSBMZW5ndGgoMCwg
Rml4ZWQpOworICAgICAgICAgICAgTGVuZ3RoIHN0ZERldmlhdGlvbiA9IExlbmd0aCgwLCBMZW5n
dGhUeXBlOjpGaXhlZCk7CiAgICAgICAgICAgICBpZiAoZmlsdGVyVmFsdWUubGVuZ3RoKCkgPj0g
MSkKICAgICAgICAgICAgICAgICBzdGREZXZpYXRpb24gPSBjb252ZXJ0VG9GbG9hdExlbmd0aChm
aXJzdFZhbHVlLCBjc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwogICAgICAgICAgICAgaWYg
KHN0ZERldmlhdGlvbi5pc1VuZGVmaW5lZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCmluZGV4IGE5NTUzMjBhZWFkYjc3ZmM0OGJhMjMw
MGFiMDcxZGFjMWJkYWVmOWEuLjMzMTg5YmQ2NGNhY2JlZGY5MzY4ZDM0ZmE5ZmI1NjRkNThiZDFm
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVu
dC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgUmVuZGVyU3R5bGUgcmVzb2x2ZUZvckRvY3VtZW50KGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICBjb25zdCBQYWdpbmF0aW9uJiBwYWdpbmF0aW9u
ID0gcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5wYWdpbmF0aW9uKCk7CiAgICAgaWYgKHBhZ2luYXRp
b24ubW9kZSAhPSBQYWdpbmF0aW9uOjpVbnBhZ2luYXRlZCkgewogICAgICAgICBkb2N1bWVudFN0
eWxlLnNldENvbHVtblN0eWxlc0Zyb21QYWdpbmF0aW9uTW9kZShwYWdpbmF0aW9uLm1vZGUpOwot
ICAgICAgICBkb2N1bWVudFN0eWxlLnNldENvbHVtbkdhcChHYXBMZW5ndGgoTGVuZ3RoKChpbnQp
IHBhZ2luYXRpb24uZ2FwLCBGaXhlZCkpKTsKKyAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRDb2x1
bW5HYXAoR2FwTGVuZ3RoKExlbmd0aCgoaW50KSBwYWdpbmF0aW9uLmdhcCwgTGVuZ3RoVHlwZTo6
Rml4ZWQpKSk7CiAgICAgICAgIGlmIChyZW5kZXJWaWV3Lm11bHRpQ29sdW1uRmxvdygpKQogICAg
ICAgICAgICAgcmVuZGVyVmlldy51cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHlsZShkb2N1
bWVudFN0eWxlKTsKICAgICAgICAgaWYgKHJlbmRlclZpZXcucGFnZSgpLnBhZ2luYXRpb25MaW5l
R3JpZEVuYWJsZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlRm9yRm9udFJhdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVG
b3JGb250UmF3LmNwcAppbmRleCBlNWM4ZTFmZjljYzRiNTRlZmJmNzQyNTg2NmUzODlmMTc3ZTgw
ODY5Li41OWI3MWM1YzFjMjFkOGNmNzM2NmY1YmNmNGY2YjllNTViMzZkY2I0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNwcApAQCAtMjE2LDE0
ICsyMTYsMTQgQEAgT3B0aW9uYWw8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0
IEZvbnRSYXcmIGZvbnRSYXcsIEZvbnRDYXNjYWRlRGVzY3IKICAgICAgICAgICAgICAgICByZXR1
cm4gT3B0aW9uYWw8TGVuZ3RoPihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGVuZ3RoPihXVEY6Om51bGxvcHQpOwogICAgICAg
ICB9LCBbJl0gKGRvdWJsZSBudW1iZXIpIHsKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxM
ZW5ndGg+KExlbmd0aChudW1iZXIgKiAxMDAuMCwgUGVyY2VudCkpOworICAgICAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPExlbmd0aD4oTGVuZ3RoKG51bWJlciAqIDEwMC4wLCBMZW5ndGhUeXBlOjpQ
ZXJjZW50KSk7CiAgICAgICAgIH0sIFsmXSAoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OjpMZW5ndGhPclBlcmNlbnRSYXcmIGxlbmd0aE9yUGVyY2VudCkgewogICAgICAgICAgICAgcmV0
dXJuIHN3aXRjaE9uKGxlbmd0aE9yUGVyY2VudCwgWyZdIChjb25zdCBDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnM6Okxlbmd0aFJhdyYgbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgYXV0byBwYXJl
bnRTdHlsZSA9IGdldFBhcmVudFN0eWxlKCk7CiAgICAgICAgICAgICAgICAgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSB7IHBhcmVudFN0eWxlLmdldCgpLCBudWxscHRy
LCBwYXJlbnRTdHlsZS5nZXQoKSwgZG9jdW1lbnQucmVuZGVyVmlldygpLCAxLjBmLCBDU1NQcm9w
ZXJ0eUxpbmVIZWlnaHQgfTsKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGVuZ3Ro
PihMZW5ndGgoY2xhbXBUbzxmbG9hdD4oQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxj
TGVuZ3RoRG91YmxlKGNvbnZlcnNpb25EYXRhLCBsZW5ndGgudHlwZSwgbGVuZ3RoLnZhbHVlKSwg
bWluVmFsdWVGb3JDc3NMZW5ndGgsIG1heFZhbHVlRm9yQ3NzTGVuZ3RoKSwgRml4ZWQpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGVuZ3RoPihMZW5ndGgoY2xhbXBUbzxmbG9h
dD4oQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnZlcnNp
b25EYXRhLCBsZW5ndGgudHlwZSwgbGVuZ3RoLnZhbHVlKSwgbWluVmFsdWVGb3JDc3NMZW5ndGgs
IG1heFZhbHVlRm9yQ3NzTGVuZ3RoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICAgICAgICAg
IH0sIFsmXSAoZG91YmxlIHBlcmNlbnRhZ2UpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0
aW9uYWw8TGVuZ3RoPihMZW5ndGgoKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSAqIHN0
YXRpY19jYXN0PGludD4ocGVyY2VudGFnZSkpIC8gMTAwLCBGaXhlZCkpOworICAgICAgICAgICAg
ICAgIHJldHVybiBPcHRpb25hbDxMZW5ndGg+KExlbmd0aCgoZm9udERlc2NyaXB0aW9uLmNvbXB1
dGVkU2l6ZSgpICogc3RhdGljX2Nhc3Q8aW50PihwZXJjZW50YWdlKSkgLyAxMDAsIExlbmd0aFR5
cGU6OkZpeGVkKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCBiY2RmMWQ2Njc4MzhkNWZhOTFiZDI5OTQ5ZjVmMzQ5
MzM5N2ZjMGJiLi5lNmIxZWI3NTIxZmRlN2Q0Yzc5OTMzN2RiOTM3YjA0OWIyZmNhZjhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC01MjEsMTkgKzUyMSwxOSBAQCBib29s
IFNWR1NWR0VsZW1lbnQ6Omhhc0ludHJpbnNpY0hlaWdodCgpIGNvbnN0CiBMZW5ndGggU1ZHU1ZH
RWxlbWVudDo6aW50cmluc2ljV2lkdGgoKSBjb25zdAogewogICAgIGlmICh3aWR0aCgpLmxlbmd0
aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKQotICAgICAgICByZXR1cm4gTGVu
Z3RoKDAsIEZpeGVkKTsKKyAgICAgICAgcmV0dXJuIExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhl
ZCk7CiAKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGhpcyk7Ci0gICAgcmV0
dXJuIExlbmd0aCh3aWR0aCgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCBGaXhlZCk7CisgICAgcmV0
dXJuIExlbmd0aCh3aWR0aCgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCBMZW5ndGhUeXBlOjpGaXhl
ZCk7CiB9CiAKIExlbmd0aCBTVkdTVkdFbGVtZW50OjppbnRyaW5zaWNIZWlnaHQoKSBjb25zdAog
ewogICAgIGlmIChoZWlnaHQoKS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2Vu
dGFnZSkKLSAgICAgICAgcmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgIHJldHVybiBM
ZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5n
dGhDb250ZXh0KHRoaXMpOwotICAgIHJldHVybiBMZW5ndGgoaGVpZ2h0KCkudmFsdWUobGVuZ3Ro
Q29udGV4dCksIEZpeGVkKTsKKyAgICByZXR1cm4gTGVuZ3RoKGhlaWdodCgpLnZhbHVlKGxlbmd0
aENvbnRleHQpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiB9CiAKIEFmZmluZVRyYW5zZm9ybSBTVkdT
VkdFbGVtZW50Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQg
dmlld0hlaWdodCkgY29uc3QK
</data>
<flag name="commit-queue"
          id="438594"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420160</attachid>
            <date>2021-02-12 12:14:57 -0800</date>
            <delta_ts>2021-02-12 12:23:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221834-20210212121456.patch</filename>
            <type>text/plain</type>
            <size>192559</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjcxY2Q3MWY0MTk0ZmVl
ZDM0NjQwMTZkZDFkOTMwMTY5MDBlNGIxNi4uMjBjYTM5MDNkNWNkMGU0NWFlMmY1Y2RkZWM5NjM5
YWQ4NDY3MzUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2OSBAQAorMjAyMS0wMi0xMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIGVudW0gTGVu
Z3RoVHlwZSAtPiBlbnVtIGNsYXNzIExlbmd0aFR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCisKKyAgICAgICAgaVBob25lT1MxNC4yLnNkay91c3IvaW5jbHVkZS9NYWNUeXBl
cy5oOjE5MyBoYXM6CisKKyAgICAgICAgdHlwZWRlZiBTSW50MzIgRml4ZWQ7CisKKyAgICAgICAg
YnV0IHdlIGhhdmU6CisKKyAgICAgICAgZW51bSBMZW5ndGhUeXBlIHsKKyAgICAgICAgICAgIC4u
LiBGaXhlZCAuLi4KKyAgICAgICAgfQorCisgICAgICAgIFRoaXMgbGVhZHMgdG86IGVycm9yOiBy
ZWZlcmVuY2UgdG8gJ0ZpeGVkJyBpcyBhbWJpZ3VvdXMKKworICAgICAgICBVbmZvcnR1bmF0ZWx5
LCB0aGlzIGVycm9yIG9jY3VycyBpbgorICAgICAgICAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9TRk5UTGF5b3V0VHlwZXMuaCwKKyAgICAgICAg
d2hpY2ggbWVhbnMgd2UgY2FuJ3QgbW9kaWZ5IHRoZSBlcnJvciBzaXRlIHRvIHF1YWxpZnkgdGhl
IG5hbWUuIFRoZXJlZm9yZSwKKyAgICAgICAgdGhlIGJlc3Qgc29sdXRpb24gaXMgdG8gdHVybiBl
bnVtIExlbmd0aFR5cGUgaW50byBlbnVtIGNsYXNzIExlbmd0aFR5cGUuCisgICAgICAgIFRoaXMg
aXMgaW4gYWNjb3JkYW5jZSB3aXRoIFdlYktpdCdzIHN0eWxlIGd1aWRlLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAg
ICAqIGFuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpibGVuZEZ1bmMpOgorICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0xlbmd0aFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFRvQ2VudGVyQ29vcmRpbmF0ZSk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQp
OgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0NhbGNQcmltaXRpdmVWYWx1ZU5vZGU6OmNyZWF0ZUNhbGNFeHByZXNzaW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNTUyk6CisgICAgICAgICogY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aCBj
b25zdCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJ0VG9MZW5ndGggY29uc3QpOgor
ICAgICAgICAqIGNzcy9DU1NUb1N0eWxlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rv
U3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
VG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKToKKyAgICAgICAgKiBjc3MvTGVuZ3Ro
RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OmZsb2F0VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAqIGNzcy9MZW5ndGhG
dW5jdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbmltdW1WYWx1ZUZvckxlbmd0aCk6Cisg
ICAgICAgICogY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0VG9GbG9hdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1zRm9yVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNsYXRlRm9yVmFsdWUpOgorICAgICAgICAqIGRp
c3BsYXkvY3NzL0Rpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OmNhbGN1bGF0ZUltYWdlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRh
dGVMYXlvdXRJZkRpbWVuc2lvbnNPdXRPZkRhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVJ
bm5lclRleHRTdHlsZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmll
bGRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTnVtZXJpY0ZpZWxkRWxl
bWVudDo6YWRqdXN0TWluV2lkdGggY29uc3QpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVU
aW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVT
eW1ib2xpY0ZpZWxkRWxlbWVudDo6YWRqdXN0TWluV2lkdGggY29uc3QpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpidWlsZExheW91dFRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBlcmZvcm1G
aXhlZFdpZHRoQXV0b1NpemUpOgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VSb290TWFyZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjpyb290TWFyZ2luIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9MZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VMZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5o
OgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
TGVuZ3RoOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpzZXRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzQXV0byBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZW5ndGg6OmlzRml4ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpp
c01heENvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc01pbkNvbnRl
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1BlcmNlbnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1JlbGF0aXZlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6aXNVbmRlZmluZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVu
Z3RoOjppc0NhbGN1bGF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc0xl
Z2FjeUludHJpbnNpYyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzSW50cmlu
c2ljIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNGaWxsQXZhaWxhYmxlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNGaXRDb250ZW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNNaW5JbnRyaW5zaWMgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL0xlbmd0aEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpMZW5n
dGhCb3gpOgorICAgICAgICAqIHBsYXRmb3JtL1RoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpjb21wdXRlSW50cmlu
c2ljRGltZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Q
ZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJz
cGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6c2l6ZUZyb21OU0NvbnRyb2xTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFj
OjptaW5pbXVtQ29udHJvbFNpemUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9BdXRvVGFi
bGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpyZWNhbGND
b2x1bW4pOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZl
TG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91dDo6bGF5b3V0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheSk6CisgICAgICAgICogcmVu
ZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmNhbGN1bGF0ZUdyaWRUcmFja1NpemUgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNOb25CbG9ja3NPck5vbkZpeGVkSGVpZ2h0TGlzdEl0ZW1zKToKKyAgICAgICAgKFdlYkNv
cmU6OmdldEJQTVdpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbFdpZHRoSW5GcmFnbWVu
dEJ5TWluTWF4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29uc3RyYWlu
TG9naWNhbEhlaWdodEJ5TWluTWF4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6YWRqdXN0Qm9yZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJv
eFNpemluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dp
Y2FsV2lkdGhJbkZyYWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVzaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6c2l6ZXNMb2dpY2FsV2lkdGhUb0ZpdENvbnRlbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoVXNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21w
dXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcHV0ZUlubGluZVN0YXRpY0Rpc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVCbG9ja1N0YXRpY0Rpc3RhbmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxXaWR0aFJlcGxhY2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0UmVwbGFjZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpwZXJjZW50YWdlTG9naWNhbEhlaWdodElzUmVzb2x2YWJsZSBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCdXR0b246OnVwZGF0ZUFub255bW91c0NoaWxkU3R5bGUgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphbGxvd2VkQ2hpbGRG
bGV4KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppbmNsdWRlTm9uRml4ZWRIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6
Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bWFpblNpemVGb3JQZXJjZW50YWdlUmVzb2x1dGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnVsbFNjcmVlblN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmxheW91dFNoYWRvd0Nv
bnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhh
c05vblplcm9UcmFuc2Zvcm1PcmlnaW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZU1h
cmdpbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZUNlbGw6OmxvZ2ljYWxXaWR0aEZyb21Db2x1bW5zIGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxv
Z2ljYWxIZWlnaHRGb3JDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmU6OmxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXRPdmVy
cmlkZGVuSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZTo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29jb2E6OmFkanVzdEFwcGxlUGF5QnV0dG9u
U3R5bGUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzZXRTaXplRnJvbUZvbnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmFkanVzdExpc3RCdXR0b25TdHlsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RT
dHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVu
dUxpc3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1h
Yzo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0
aW9uUGFydFN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjph
ZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydFN0eWxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0
b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0
U2xpZGVyVGh1bWJTaXplIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEF1dG9TaXpp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdWYWx1ZTo6YWRqdXN0VGV4
dE5vZGVTaXplcyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlOjp1cGRhdGVDb21w
dXRlZExlbmd0aCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlUmFkaXVzOjpCYXNpY1NoYXBlUmFkaXVzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
Qm9yZGVyRGF0YTo6Qm9yZGVyRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxM
YXllci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjppbml0aWFsRmlsbFhQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OmluaXRpYWxGaWxsWVBvc2l0aW9uKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFRyYWNrU2l6ZTo6R3JpZFRyYWNrU2l6ZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL05pbmVQaWVjZUltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRQYWdlU2NhbGVU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFdvcmRTcGFjaW5n
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpyZXNldE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6aW5pdGlhbFNoYXBlTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjppbml0aWFsQm9yZGVyUmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
Ojppbml0aWFsT2JqZWN0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmluaXRpYWxXb3JkU3BhY2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5p
dGlhbE1heFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxNYXJn
aW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxQYWRkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFplcm9MZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxPbmVMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjppbml0aWFsRmxleEJhc2lzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
Ojppbml0aWFsTWFycXVlZUluY3JlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5ZKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjppbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5YKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5ZKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjppbml0aWFsU3BlY2lmaWVkTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6aW5pdGlhbFNjcm9sbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aW5pdGlhbFNjcm9sbFBhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b0NvbHVtbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1Jvd3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNldEJvcmRlclJhZGl1cyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFn
ZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmVmbGVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZWZsZWN0aW9uOjpT
dHlsZVJlZmxlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5k
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cnJvdW5kRGF0YTo6U3R5bGVTdXJy
b3VuZERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRl
ckZ1bGxTY3JlZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OkZ1
bGxTY3JlZW46OmNyZWF0ZVBsYWNlaG9sZGVyKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUFkanVz
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjphZGRJbnRyaW5zaWNNYXJnaW5zKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBZGp1c3Rlcjo6YWRqdXN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpBZGp1c3Rlcjo6YWRqdXN0Rm9yVGV4dEF1dG9zaXppbmcpOgor
ICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhPckF1dG8pOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhTaXpp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRM
ZW5ndGhNYXhTaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRUb1JhZGl1c0xlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21w
b25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0
ZUdyaWRUcmFja0JyZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQpOgorICAgICAgICAqIHN0eWxlL1N0eWxl
QnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkFwcGx5UHJvcGVydHlC
b3JkZXJJbWFnZU1vZGlmaWVyOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgICogc3R5bGUv
U3R5bGVCdWlsZGVyU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJT
dGF0ZTo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNv
bHZlRm9yRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JE
b2N1bWVudCk6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckZvbnRSYXcpOgorICAgICAgICAqIHN2
Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6Omlu
dHJpbnNpY1dpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6Omlu
dHJpbnNpY0hlaWdodCBjb25zdCk6CisKIDIwMjEtMDItMTIgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggV2luZG93cyBidWlsZCBhZnRlciBy
MjcyNzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0
aW9uLmNwcAppbmRleCBhNDRmYTUxYWQ0ODMwZjc1NjE5MTVkM2M3YjAyMDhiMzhlNjA2MTIyLi5m
MGMwZmM5ZGFjMzQ2MjE1ZWI0NGI0ZTlmNTU0NTFkMmJiYTA4MzdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTIxNCwxMCAr
MjE0LDEwIEBAIHN0YXRpYyBSZWZQdHI8VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uPiBibGVu
ZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsCiAKICAgICBSZWZQdHI8VHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uPiBpZGVudGl0eTsKICAgICBpZiAoIWZyb20pIHsKLSAgICAgICAg
aWRlbnRpdHkgPSBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMCwg
Rml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCB0by0+dHlwZSgpKTsK
KyAgICAgICAgaWRlbnRpdHkgPSBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShM
ZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQp
LCBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCB0by0+dHlwZSgpKTsKICAgICAgICAgZnJv
bSA9IGlkZW50aXR5LmdldCgpOwogICAgIH0gZWxzZSBpZiAoIXRvKSB7Ci0gICAgICAgIGlkZW50
aXR5ID0gVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDAsIEZpeGVk
KSwgTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgZnJvbS0+dHlwZSgpKTsKKyAg
ICAgICAgaWRlbnRpdHkgPSBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5n
dGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBM
ZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBmcm9tLT50eXBlKCkpOwogICAgICAgICB0byA9
IGlkZW50aXR5LmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVG
dW5jdGlvbnMuY3BwCmluZGV4IGIwZDhiZDExNmYyOWU2MjZjMTg0NmRlMGViMDUzMDFkZGQxZjlh
MzQuLjFhYWFlOTZiMTk1YmIxZTQzYTJjMTFlZTFhNTk1NzFkMTc5ZDFiODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBz
dGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGF0YSwgYwogc3RhdGljIExlbmd0aFNpemUgY29udmVydFRvTGVuZ3Ro
U2l6ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgY29u
c3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQogewogICAgIGlmICghdmFsdWUpCi0gICAgICAg
IHJldHVybiB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH07CisgICAgICAgIHJldHVybiB7
IHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9IH07CiAK
ICAgICBhdXRvJiBwYWlyID0gKnZhbHVlLT5wYWlyVmFsdWUoKTsKICAgICByZXR1cm4geyBjb252
ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXIuZmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0
aChjb252ZXJzaW9uRGF0YSwgcGFpci5zZWNvbmQoKSkgfTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBz
dGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0VG9MZW5ndGhTaXplKGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEmIGNvbnZlcnNpbwogc3RhdGljIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRl
IGNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSYgY29udmVyc2lvbkRhdGEsIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKIHsKICAgICBDU1NW
YWx1ZUlEIGtleXdvcmQgPSBDU1NWYWx1ZVRvcDsKLSAgICBMZW5ndGggb2Zmc2V0IHsgMCwgRml4
ZWQgfTsKKyAgICBMZW5ndGggb2Zmc2V0IHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfTsKICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICBrZXl3b3JkID0gQ1NTVmFsdWVDZW50ZXI7CiAgICAgZWxzZSBp
ZiAodmFsdWUtPmlzVmFsdWVJRCgpKQpAQCAtMTc2LDcgKzE3Niw3IEBAIHN0YXRpYyBCYXNpY1No
YXBlQ2VudGVyQ29vcmRpbmF0ZSBjb252ZXJ0VG9DZW50ZXJDb29yZGluYXRlKGNvbnN0IENTU1Rv
TGVuZ3RoQ29uCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVDZW50ZXI6CiAgICAg
ICAgIGRpcmVjdGlvbiA9IEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlOjpUb3BMZWZ0OwotICAg
ICAgICBvZmZzZXQgPSBMZW5ndGgoNTAsIFBlcmNlbnQpOworICAgICAgICBvZmZzZXQgPSBMZW5n
dGgoNTAsIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNT
aGFwZXMuY3BwCmluZGV4IGM3NWU2ZWRiMmRlZGY1MWI0OTExNTQxZDcxNDBlZjFmODEyMWRjMmMu
LjdlZThhZWQxYWMzMjI0ZDdiN2NjNWQwNzdjYzYyNmRlMTc0YjA1MmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtNjUsMTkgKzY1LDE5IEBAIHN0YXRpYyBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQoQ1NTUHJpbWl0
aXZlVmFsdWUqCiAKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpOwogICAgIGlmICghYW1vdW50KQotICAgICAgICBhbW91bnQgPSBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoTGVuZ3RoKHNpZGUgPT0gQ1NTVmFsdWVDZW50ZXIgPyA1MCA6IDAsIFBlcmNl
bnQpKTsKKyAgICAgICAgYW1vdW50ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKExlbmd0aChz
aWRlID09IENTU1ZhbHVlQ2VudGVyID8gNTAgOiAwLCBMZW5ndGhUeXBlOjpQZXJjZW50KSk7CiAg
ICAgCiAgICAgaWYgKHNpZGUgPT0gQ1NTVmFsdWVDZW50ZXIpCiAgICAgICAgIHNpZGUgPSBkZWZh
dWx0U2lkZTsKICAgICBlbHNlIGlmICgoc2lkZSA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHNpZGUgPT0g
Q1NTVmFsdWVCb3R0b20pCiAgICAgICAgICYmIGFtb3VudC0+aXNQZXJjZW50YWdlKCkpIHsKICAg
ICAgICAgc2lkZSA9IGRlZmF1bHRTaWRlOwotICAgICAgICBhbW91bnQgPSBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoTGVuZ3RoKDEwMCAtIGFtb3VudC0+ZmxvYXRWYWx1ZSgpLCBQZXJjZW50KSk7
CisgICAgICAgIGFtb3VudCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShMZW5ndGgoMTAwIC0g
YW1vdW50LT5mbG9hdFZhbHVlKCksIExlbmd0aFR5cGU6OlBlcmNlbnQpKTsKICAgICB9IGVsc2Ug
aWYgKGFtb3VudC0+aXNMZW5ndGgoKSAmJiAhYW1vdW50LT5mbG9hdFZhbHVlKCkpIHsKICAgICAg
ICAgaWYgKHNpZGUgPT0gQ1NTVmFsdWVSaWdodCB8fCBzaWRlID09IENTU1ZhbHVlQm90dG9tKQot
ICAgICAgICAgICAgYW1vdW50ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKExlbmd0aCgxMDAs
IFBlcmNlbnQpKTsKKyAgICAgICAgICAgIGFtb3VudCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShMZW5ndGgoMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50KSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGFtb3VudCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShMZW5ndGgoMCwgUGVyY2Vu
dCkpOworICAgICAgICAgICAgYW1vdW50ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKExlbmd0
aCgwLCBMZW5ndGhUeXBlOjpQZXJjZW50KSk7CiAgICAgICAgIHNpZGUgPSBkZWZhdWx0U2lkZTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRl
eCAyMDE5NTk3NTNjZWVmOGFkMzMwZWY3MDRiYWZiYWQ4OWM1YjA1Y2M3Li5lMjExYWVkMWZlMzk0
NWIzNWZmNmMzZjVjZDQ5NGM5YWQ4YmJhZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bGN1bGF0aW9uVmFsdWUuY3BwCkBAIC00MjAsNyArNDIwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENh
bGNFeHByZXNzaW9uTm9kZT4gQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlTm9kZTo6Y3JlYXRlQ2FsY0V4
cHJlc3MKICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlcjoKICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZsb2F0VmFsdWUo
KSk7CiAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpMZW5ndGg6Ci0gICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgobV92YWx1ZS0+Y29tcHV0
ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJDb3JlOjpGaXhlZCkpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1fdmFsdWUt
PmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKSwgTGVuZ3RoVHlwZTo6Rml4ZWQp
KTsKICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQ6CiAgICAgY2FzZSBDYWxj
dWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50TGVuZ3RoOiB7CiAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihtX3ZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRG
bG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKQEAg
LTIwMjcsMjAgKzIwMjcsMjAgQEAgc3RhdGljIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+
IGNyZWF0ZUNTUyhjb25zdCBDYWxjRXhwcmVzc2lvbk5vZGUmIG5vZGUsIGMKIHN0YXRpYyBSZWZQ
dHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVDU1MoY29uc3QgTGVuZ3RoJiBsZW5ndGgs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkp
IHsKLSAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgY2FzZSBGaXhlZDoKKyAgICBjYXNlIExlbmd0aFR5
cGU6OlBlcmNlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXhlZDoKICAgICAgICAgcmV0dXJu
IENTU0NhbGNQcmltaXRpdmVWYWx1ZU5vZGU6OmNyZWF0ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKGxlbmd0aCwgc3R5bGUpKTsKLSAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgY2FzZSBMZW5n
dGhUeXBlOjpDYWxjdWxhdGVkOgogICAgICAgICByZXR1cm4gY3JlYXRlQ1NTKGxlbmd0aC5jYWxj
dWxhdGlvblZhbHVlKCkuZXhwcmVzc2lvbigpLCBzdHlsZSk7Ci0gICAgY2FzZSBBdXRvOgotICAg
IGNhc2UgSW50cmluc2ljOgotICAgIGNhc2UgTWluSW50cmluc2ljOgotICAgIGNhc2UgTWluQ29u
dGVudDoKLSAgICBjYXNlIE1heENvbnRlbnQ6Ci0gICAgY2FzZSBGaWxsQXZhaWxhYmxlOgotICAg
IGNhc2UgRml0Q29udGVudDoKLSAgICBjYXNlIFJlbGF0aXZlOgotICAgIGNhc2UgVW5kZWZpbmVk
OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6QXV0bzoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkludHJp
bnNpYzoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkludHJpbnNpYzoKKyAgICBjYXNlIExlbmd0
aFR5cGU6Ok1pbkNvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNYXhDb250ZW50OgorICAg
IGNhc2UgTGVuZ3RoVHlwZTo6RmlsbEF2YWlsYWJsZToKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZp
dENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpSZWxhdGl2ZToKKyAgICBjYXNlIExlbmd0
aFR5cGU6OlVuZGVmaW5lZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAKaW5kZXggNmY3YWVmYjE3Njg2MWU4YTk2ZDM1NWRjNDZlMTJmZjZmY2M5NmZjMy4uNGRkZDE0
NjVkOTAwNmQ4ZmE3MjdjZGFmNDFkZmQ4NzY2YjhhN2U5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC0yNzksMjYgKzI3OSwyNiBAQCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdAogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgc3dpdGNo
IChsZW5ndGgudHlwZSgpKSB7Ci0gICAgY2FzZSBBdXRvOgotICAgIGNhc2UgSW50cmluc2ljOgot
ICAgIGNhc2UgTWluSW50cmluc2ljOgotICAgIGNhc2UgTWluQ29udGVudDoKLSAgICBjYXNlIE1h
eENvbnRlbnQ6Ci0gICAgY2FzZSBGaWxsQXZhaWxhYmxlOgotICAgIGNhc2UgRml0Q29udGVudDoK
LSAgICBjYXNlIFBlcmNlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpBdXRvOgorICAgIGNhc2Ug
TGVuZ3RoVHlwZTo6SW50cmluc2ljOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWluSW50cmluc2lj
OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWluQ29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6
Ok1heENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaWxsQXZhaWxhYmxlOgorICAgIGNh
c2UgTGVuZ3RoVHlwZTo6Rml0Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6
CiAgICAgICAgIGluaXQobGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRml4ZWQ6
CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXhlZDoKICAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5
cGUoQ1NTVW5pdFR5cGU6OkNTU19QWCk7CiAgICAgICAgIG1fdmFsdWUubnVtID0gYWRqdXN0Rmxv
YXRGb3JBYnNvbHV0ZVpvb20obGVuZ3RoLnZhbHVlKCksIHN0eWxlKTsKICAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ2FsY3VsYXRlZDogeworICAgIGNhc2UgTGVuZ3RoVHlwZTo6Q2FsY3VsYXRl
ZDogewogICAgICAgICBpbml0KENTU0NhbGNWYWx1ZTo6Y3JlYXRlKGxlbmd0aC5jYWxjdWxhdGlv
blZhbHVlKCksIHN0eWxlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBSZWxh
dGl2ZToKLSAgICBjYXNlIFVuZGVmaW5lZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlJlbGF0aXZl
OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6VW5kZWZpbmVkOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMzMiw0NiArMzMyLDQ2IEBAIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShTdGF0aWNDU1NWYWx1ZVRhZywgZG91
YmxlIG51bSwgQ1NTVW5pdFR5cGUKIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmluaXQoY29uc3Qg
TGVuZ3RoJiBsZW5ndGgpCiB7CiAgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7Ci0gICAgY2Fz
ZSBBdXRvOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6QXV0bzoKICAgICAgICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgV2ViQ29yZTo6
Rml4ZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXhlZDoKICAgICAgICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19QWCk7CiAgICAgICAgIG1fdmFsdWUubnVtID0gbGVu
Z3RoLnZhbHVlKCk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEludHJpbnNpYzoKKyAgICBj
YXNlIExlbmd0aFR5cGU6OkludHJpbnNpYzoKICAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlSW50cmluc2ljOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNaW5JbnRyaW5zaWM6
CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5JbnRyaW5zaWM6CiAgICAgICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOwogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZU1pbkludHJpbnNpYzsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
TWluQ29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQ6CiAgICAgICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOwogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1pbkNvbnRlbnQ7CiAgICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIE1heENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNYXhDb250ZW50OgogICAg
ICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYXhDb250ZW50OwogICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBGaWxsQXZhaWxhYmxlOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6RmlsbEF2
YWlsYWJsZToKICAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19W
QUxVRV9JRCk7CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlV2Via2l0RmlsbEF2
YWlsYWJsZTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRml0Q29udGVudDoKKyAgICBjYXNl
IExlbmd0aFR5cGU6OkZpdENvbnRlbnQ6CiAgICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOwogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZUZpdENvbnRlbnQ7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIFBlcmNlbnQ6CisgICAg
Y2FzZSBMZW5ndGhUeXBlOjpQZXJjZW50OgogICAgICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgICAgICBBU1NFUlQoc3RkOjppc2Zpbml0
ZShsZW5ndGgucGVyY2VudCgpKSk7CiAgICAgICAgIG1fdmFsdWUubnVtID0gbGVuZ3RoLnBlcmNl
bnQoKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ2FsY3VsYXRlZDoKLSAgICBjYXNlIFJl
bGF0aXZlOgotICAgIGNhc2UgVW5kZWZpbmVkOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Q2FsY3Vs
YXRlZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlJlbGF0aXZlOgorICAgIGNhc2UgTGVuZ3RoVHlw
ZTo6VW5kZWZpbmVkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTU0MSw3ICs1NDEsNyBAQCB0ZW1wbGF0ZTw+IHVuc2lnbmVkIENTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgog
CiB0ZW1wbGF0ZTw+IExlbmd0aCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChjb25z
dCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSkgY29uc3QKIHsKLSAg
ICByZXR1cm4gTGVuZ3RoKGNsYW1wVG88ZmxvYXQ+KGNvbXB1dGVMZW5ndGhEb3VibGUoY29udmVy
c2lvbkRhdGEpLCBtaW5WYWx1ZUZvckNzc0xlbmd0aCwgbWF4VmFsdWVGb3JDc3NMZW5ndGgpLCBG
aXhlZCk7CisgICAgcmV0dXJuIExlbmd0aChjbGFtcFRvPGZsb2F0Pihjb21wdXRlTGVuZ3RoRG91
YmxlKGNvbnZlcnNpb25EYXRhKSwgbWluVmFsdWVGb3JDc3NMZW5ndGgsIG1heFZhbHVlRm9yQ3Nz
TGVuZ3RoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogfQogCiB0ZW1wbGF0ZTw+IHNob3J0IENTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEmIGNvbnZlcnNpb25EYXRhKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5kZXggNDU1ZjliNzM4YmFiZWRkMzUwMGE1NDM1MjJkZWEz
MDAzMjBiN2I0ZS4uYzc4ZDYyOWNjODQ0NDVlMTFlZDZhNDhlZDBiM2IzNzlhNjMzOGMzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCkBAIC00
NTU3LDE4ICs0NTU3LDE4IEBAIGlubGluZSBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJ0
aW5nVG9MZW5ndGhSZXF1aXJlc05vbk51bGxTdHlsZShpbnQgbGVuZ3RoCiB0ZW1wbGF0ZTxpbnQg
c3VwcG9ydGVkPiBMZW5ndGggQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbnZlcnRUb0xlbmd0aChjb25z
dCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSkgY29uc3QKIHsKICAg
ICBpZiAoaXNGb250UmVsYXRpdmVMZW5ndGgoKSAmJiBjb252ZXJ0aW5nVG9MZW5ndGhSZXF1aXJl
c05vbk51bGxTdHlsZShzdXBwb3J0ZWQpICYmICFjb252ZXJzaW9uRGF0YS5zdHlsZSgpKQotICAg
ICAgICByZXR1cm4gTGVuZ3RoKFVuZGVmaW5lZCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoTGVu
Z3RoVHlwZTo6VW5kZWZpbmVkKTsKICAgICBpZiAoKHN1cHBvcnRlZCAmIEZpeGVkSW50ZWdlckNv
bnZlcnNpb24pICYmIGlzTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBjb21wdXRlTGVuZ3RoPExl
bmd0aD4oY29udmVyc2lvbkRhdGEpOwogICAgIGlmICgoc3VwcG9ydGVkICYgRml4ZWRGbG9hdENv
bnZlcnNpb24pICYmIGlzTGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBMZW5ndGgoY29tcHV0ZUxl
bmd0aDxkb3VibGU+KGNvbnZlcnNpb25EYXRhKSwgRml4ZWQpOworICAgICAgICByZXR1cm4gTGVu
Z3RoKGNvbXB1dGVMZW5ndGg8ZG91YmxlPihjb252ZXJzaW9uRGF0YSksIExlbmd0aFR5cGU6OkZp
eGVkKTsKICAgICBpZiAoKHN1cHBvcnRlZCAmIFBlcmNlbnRDb252ZXJzaW9uKSAmJiBpc1BlcmNl
bnRhZ2UoKSkKLSAgICAgICAgcmV0dXJuIExlbmd0aChkb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsK
KyAgICAgICAgcmV0dXJuIExlbmd0aChkb3VibGVWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50
KTsKICAgICBpZiAoKHN1cHBvcnRlZCAmIEF1dG9Db252ZXJzaW9uKSAmJiB2YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVBdXRvKQotICAgICAgICByZXR1cm4gTGVuZ3RoKEF1dG8pOworICAgICAgICByZXR1
cm4gTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pOwogICAgIGlmICgoc3VwcG9ydGVkICYgQ2FsY3Vs
YXRlZENvbnZlcnNpb24pICYmIGlzQ2FsY3VsYXRlZCgpKQogICAgICAgICByZXR1cm4gTGVuZ3Ro
KGNzc0NhbGNWYWx1ZSgpLT5jcmVhdGVDYWxjdWxhdGlvblZhbHVlKGNvbnZlcnNpb25EYXRhKSk7
Ci0gICAgcmV0dXJuIExlbmd0aChVbmRlZmluZWQpOworICAgIHJldHVybiBMZW5ndGgoTGVuZ3Ro
VHlwZTo6VW5kZWZpbmVkKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEJ1ZmZlcmVkUmVuZGVyaW5nIGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVG9TdHlsZU1hcC5jcHAKaW5kZXggMjQ2MjY0ZmU1NGUxZGFlMWY2YTQzYzE4ODk3OGUzOWIy
MjczZDc2Ni4uYjhhZDdlOGNiODlkMTVhN2RkZTk3ZGIzNDA2MmU0MDI1NmI4ZjcwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcApAQCAtNTU3LDIxICs1NTcsMjEgQEAgdm9pZCBD
U1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVNsaWNlKENTU1ZhbHVlJiB2YWx1ZSwgTmlu
ZVBpZWNlSW1hZ2UmIGltYWcKICAgICBMZW5ndGhCb3ggYm94OwogICAgIFF1YWQqIHNsaWNlcyA9
IGJvcmRlckltYWdlU2xpY2Uuc2xpY2VzKCk7CiAgICAgaWYgKHNsaWNlcy0+dG9wKCktPmlzUGVy
Y2VudGFnZSgpKQotICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+ZG91
YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMt
PnRvcCgpLT5kb3VibGVWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICBlbHNlCi0g
ICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5pbnRWYWx1ZShDU1NVbml0
VHlwZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNs
aWNlcy0+dG9wKCktPmludFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSwgTGVuZ3RoVHlw
ZTo6Rml4ZWQpOwogICAgIGlmIChzbGljZXMtPmJvdHRvbSgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAg
ICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmRvdWJsZVZhbHVl
KCksIFBlcmNlbnQpOworICAgICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoc2xpY2VzLT5ib3R0
b20oKS0+ZG91YmxlVmFsdWUoKSwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CiAgICAgZWxzZQotICAg
ICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoKGludClzbGljZXMtPmJvdHRvbSgpLT5mbG9hdFZh
bHVlKENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAgICAgICBib3guYm90dG9t
KCkgPSBMZW5ndGgoKGludClzbGljZXMtPmJvdHRvbSgpLT5mbG9hdFZhbHVlKENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgIGlmIChzbGljZXMtPmxlZnQo
KS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5s
ZWZ0KCktPmRvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gubGVmdCgpID0gTGVu
Z3RoKHNsaWNlcy0+bGVmdCgpLT5kb3VibGVWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsK
ICAgICBlbHNlCi0gICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmlu
dFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAgICAgICBib3gubGVm
dCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5pbnRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX05V
TUJFUiksIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5yaWdodCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgp
LT5kb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgo
c2xpY2VzLT5yaWdodCgpLT5kb3VibGVWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAg
ICBlbHNlCi0gICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+aW50
VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC5yaWdo
dCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+aW50VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19O
VU1CRVIpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgaW1hZ2Uuc2V0SW1hZ2VTbGljZXMoYm94
KTsKIAogICAgIC8vIFNldCBvdXIgZmlsbCBtb2RlLgpAQCAtNTkzLDMwICs1OTMsMzAgQEAgTGVu
Z3RoQm94IENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUXVhZChDU1NWYWx1ZSYgdmFs
dWUpCiAgICAgTGVuZ3RoQm94IGJveDsgLy8gRGVmYXVsdHMgdG8gJ2F1dG8nIHNvIHdlIGRvbid0
IGhhdmUgdG8gaGFuZGxlIHRoYXQgZXhwbGljaXRseSBiZWxvdy4KICAgICBRdWFkKiBzbGljZXMg
PSBib3JkZXJXaWR0aHMucXVhZFZhbHVlKCk7CiAgICAgaWYgKHNsaWNlcy0+dG9wKCktPmlzTnVt
YmVyKCkpCi0gICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5pbnRWYWx1
ZSgpLCBSZWxhdGl2ZSk7CisgICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgp
LT5pbnRWYWx1ZSgpLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2Vz
LT50b3AoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGlj
ZXMtPnRvcCgpLT5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJj
ZW50KTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmRvdWJsZVZh
bHVlKENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwog
ICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8pCiAg
ICAgICAgIGJveC50b3AoKSA9IHNsaWNlcy0+dG9wKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihj
b252ZXJzaW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2VzLT5yaWdodCgpLT5pc051bWJlcigpKQot
ICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmludFZhbHVlKCks
IFJlbGF0aXZlKTsKKyAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgp
LT5pbnRWYWx1ZSgpLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2Vz
LT5yaWdodCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgo
c2xpY2VzLT5yaWdodCgpLT5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0Up
LCBQZXJjZW50KTsKKyAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgp
LT5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpLCBMZW5ndGhUeXBlOjpQ
ZXJjZW50KTsKICAgICBlbHNlIGlmIChzbGljZXMtPnJpZ2h0KCktPnZhbHVlSUQoKSAhPSBDU1NW
YWx1ZUF1dG8pCiAgICAgICAgIGJveC5yaWdodCgpID0gc2xpY2VzLT5yaWdodCgpLT5jb21wdXRl
TGVuZ3RoPExlbmd0aD4oY29udmVyc2lvbkRhdGEpOwogCiAgICAgaWYgKHNsaWNlcy0+Ym90dG9t
KCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJv
dHRvbSgpLT5pbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExl
bmd0aChzbGljZXMtPmJvdHRvbSgpLT5pbnRWYWx1ZSgpLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7
CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAg
IGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5kb3VibGVWYWx1ZShDU1NV
bml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmJvdHRvbSgp
ID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1Nf
UEVSQ0VOVEFHRSksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+
Ym90dG9tKCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIGJveC5ib3R0b20o
KSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0
YSk7CiAKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5s
ZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAg
ICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+aW50VmFsdWUoKSwgTGVu
Z3RoVHlwZTo6UmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1BlcmNl
bnRhZ2UoKSkKLSAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+ZG91
YmxlVmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CisgICAgICAg
IGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmRvdWJsZVZhbHVlKENTU1VuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRSksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgIGVsc2UgaWYg
KHNsaWNlcy0+bGVmdCgpLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICBib3gu
bGVmdCgpID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9u
RGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKaW5kZXggNjk1MzNl
ZWYxNWM5ZTgzN2I3YWQ2MTE5M2VjZmYzOWYzN2VjOTc0My4uY2MwMmE0YjRmZjdlMmQ2NDI5MGRh
ZDA3YzBmZWNmODcxMDNjYmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0
aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5j
cHAKQEAgLTM5LDIwICszOSwyMCBAQCBpbnQgaW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3Ro
JiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKQogTGF5b3V0VW5pdCB2YWx1ZUZvckxl
bmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpCiB7CiAg
ICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7Ci0gICAgY2FzZSBGaXhlZDoKLSAgICBjYXNlIFBl
cmNlbnQ6Ci0gICAgY2FzZSBDYWxjdWxhdGVkOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6
CisgICAgY2FzZSBMZW5ndGhUeXBlOjpQZXJjZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Q2Fs
Y3VsYXRlZDoKICAgICAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIG1h
eGltdW1WYWx1ZSk7Ci0gICAgY2FzZSBGaWxsQXZhaWxhYmxlOgotICAgIGNhc2UgQXV0bzoKKyAg
ICBjYXNlIExlbmd0aFR5cGU6OkZpbGxBdmFpbGFibGU6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpB
dXRvOgogICAgICAgICByZXR1cm4gbWF4aW11bVZhbHVlOwotICAgIGNhc2UgUmVsYXRpdmU6Ci0g
ICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgY2FzZSBNaW5D
b250ZW50OgotICAgIGNhc2UgTWF4Q29udGVudDoKLSAgICBjYXNlIEZpdENvbnRlbnQ6Ci0gICAg
Y2FzZSBVbmRlZmluZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpSZWxhdGl2ZToKKyAgICBjYXNl
IExlbmd0aFR5cGU6OkludHJpbnNpYzoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkludHJpbnNp
YzoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBl
OjpNYXhDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml0Q29udGVudDoKKyAgICBjYXNl
IExlbmd0aFR5cGU6OlVuZGVmaW5lZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTY0LDIyICs2NCwyMiBAQCBMYXlvdXRVbml0IHZh
bHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1
ZSkKIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91
dFVuaXQgbWF4aW11bVZhbHVlKQogewogICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewotICAg
IGNhc2UgRml4ZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXhlZDoKICAgICAgICAgcmV0dXJu
IGxlbmd0aC52YWx1ZSgpOwotICAgIGNhc2UgUGVyY2VudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6
OlBlcmNlbnQ6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVl
ICogbGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZik7Ci0gICAgY2FzZSBGaWxsQXZhaWxhYmxlOgot
ICAgIGNhc2UgQXV0bzoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZpbGxBdmFpbGFibGU6CisgICAg
Y2FzZSBMZW5ndGhUeXBlOjpBdXRvOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KG1heGltdW1WYWx1ZSk7Ci0gICAgY2FzZSBDYWxjdWxhdGVkOgorICAgIGNhc2UgTGVuZ3RoVHlw
ZTo6Q2FsY3VsYXRlZDoKICAgICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFs
dWUobWF4aW11bVZhbHVlKTsKLSAgICBjYXNlIFJlbGF0aXZlOgotICAgIGNhc2UgSW50cmluc2lj
OgotICAgIGNhc2UgTWluSW50cmluc2ljOgotICAgIGNhc2UgTWluQ29udGVudDoKLSAgICBjYXNl
IE1heENvbnRlbnQ6Ci0gICAgY2FzZSBGaXRDb250ZW50OgotICAgIGNhc2UgVW5kZWZpbmVkOgor
ICAgIGNhc2UgTGVuZ3RoVHlwZTo6UmVsYXRpdmU6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpJbnRy
aW5zaWM6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5JbnRyaW5zaWM6CisgICAgY2FzZSBMZW5n
dGhUeXBlOjpNaW5Db250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWF4Q29udGVudDoKKyAg
ICBjYXNlIExlbmd0aFR5cGU6OkZpdENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpVbmRl
ZmluZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CkBAIC05MCwyMiArOTAsMjIgQEAgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25z
dCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpCiBmbG9hdCBmbG9hdFZh
bHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBmbG9hdCBtYXhpbXVtVmFsdWUpCiB7
CiAgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7Ci0gICAgY2FzZSBGaXhlZDoKKyAgICBjYXNl
IExlbmd0aFR5cGU6OkZpeGVkOgogICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlKCk7Ci0gICAg
Y2FzZSBQZXJjZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6UGVyY2VudDoKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhpbXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8g
MTAwLjBmKTsKLSAgICBjYXNlIEZpbGxBdmFpbGFibGU6Ci0gICAgY2FzZSBBdXRvOgorICAgIGNh
c2UgTGVuZ3RoVHlwZTo6RmlsbEF2YWlsYWJsZToKKyAgICBjYXNlIExlbmd0aFR5cGU6OkF1dG86
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlKTsKLSAgICBj
YXNlIENhbGN1bGF0ZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkOgogICAgICAg
ICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOwotICAg
IGNhc2UgUmVsYXRpdmU6Ci0gICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAgY2FzZSBNaW5JbnRyaW5z
aWM6Ci0gICAgY2FzZSBNaW5Db250ZW50OgotICAgIGNhc2UgTWF4Q29udGVudDoKLSAgICBjYXNl
IEZpdENvbnRlbnQ6Ci0gICAgY2FzZSBVbmRlZmluZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpS
ZWxhdGl2ZToKKyAgICBjYXNlIExlbmd0aFR5cGU6OkludHJpbnNpYzoKKyAgICBjYXNlIExlbmd0
aFR5cGU6Ok1pbkludHJpbnNpYzoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQ6Cisg
ICAgY2FzZSBMZW5ndGhUeXBlOjpNYXhDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml0
Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlVuZGVmaW5lZDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9M
ZW5ndGhGdW5jdGlvbnMuaAppbmRleCA1YzA1YWIxYmFmNDVjZjY3OGMyNzI5NmY3YWMwNTAxZjRm
Y2EyOTk3Li5kODVmNDNmMzQ0MDVhMTViYTcwNDcxMzg0NGVlZjViNDAzNTg5MmU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oCkBAIC01MCwyMyArNTAsMjMgQEAgRmxvYXRQb2lu
dCBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQoY29uc3QgTGVuZ3RoUG9pbnQmLCBjb25zdCBGbG9h
dFNpemUmIG1heGltdW0KIGlubGluZSBMYXlvdXRVbml0IG1pbmltdW1WYWx1ZUZvckxlbmd0aChj
b25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpCiB7CiAgICAgc3dp
dGNoIChsZW5ndGgudHlwZSgpKSB7Ci0gICAgY2FzZSBGaXhlZDoKKyAgICBjYXNlIExlbmd0aFR5
cGU6OkZpeGVkOgogICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChsZW5ndGgudmFsdWUoKSk7Ci0g
ICAgY2FzZSBQZXJjZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6UGVyY2VudDoKICAgICAgICAg
Ly8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRyYSBjYXN0IHRvIGZsb2F0LiBJdCBpcyBuZWVkZWQgZm9y
IHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRlbCBtYWNoaW5lcyB0aGF0IHVzZSB0aGUgRlBVIHN0YWNr
LgogICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZh
bHVlICogbGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZikpOwotICAgIGNhc2UgQ2FsY3VsYXRlZDoK
KyAgICBjYXNlIExlbmd0aFR5cGU6OkNhbGN1bGF0ZWQ6CiAgICAgICAgIHJldHVybiBMYXlvdXRV
bml0KGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZhbHVlKSk7Ci0gICAgY2Fz
ZSBGaWxsQXZhaWxhYmxlOgotICAgIGNhc2UgQXV0bzoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZp
bGxBdmFpbGFibGU6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpBdXRvOgogICAgICAgICByZXR1cm4g
MDsKLSAgICBjYXNlIFJlbGF0aXZlOgotICAgIGNhc2UgSW50cmluc2ljOgotICAgIGNhc2UgTWlu
SW50cmluc2ljOgotICAgIGNhc2UgTWluQ29udGVudDoKLSAgICBjYXNlIE1heENvbnRlbnQ6Ci0g
ICAgY2FzZSBGaXRDb250ZW50OgotICAgIGNhc2UgVW5kZWZpbmVkOgorICAgIGNhc2UgTGVuZ3Ro
VHlwZTo6UmVsYXRpdmU6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpJbnRyaW5zaWM6CisgICAgY2Fz
ZSBMZW5ndGhUeXBlOjpNaW5JbnRyaW5zaWM6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5Db250
ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWF4Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5
cGU6OkZpdENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpVbmRlZmluZWQ6CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAKaW5kZXggMzhiMzZjMjk5OWY1YWMyYWQyODdiY2M4
YjU2NTExM2FjYWI2Njc4MS4uZTYwNDZjMGE4ODBjMGM2NjcyMjgwYmRiZGQxNTI0NDg3ZDkzZDkz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAKQEAgLTk5LDcg
Kzk5LDcgQEAgc3RhdGljIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zv
cm1PcGVyYXRpb25UeXBlKENTU1ZhbHVlSUQgdHlwZSkKIAogTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0
TGVuZ3RoKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgY29uc3QgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCiB7Ci0gICAgcmV0dXJuIHBy
aW1pdGl2ZVZhbHVlID8gcHJpbWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZsb2F0
Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGNv
bnZlcnNpb25EYXRhKSA6IExlbmd0aChVbmRlZmluZWQpOworICAgIHJldHVybiBwcmltaXRpdmVW
YWx1ZSA/IHByaW1pdGl2ZVZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRGbG9hdENvbnZlcnNp
b24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihjb252ZXJzaW9u
RGF0YSkgOiBMZW5ndGgoTGVuZ3RoVHlwZTo6VW5kZWZpbmVkKTsKIH0KIAogYm9vbCB0cmFuc2Zv
cm1zRm9yVmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgVHJhbnNmb3JtT3BlcmF0aW9ucyYgb3V0T3BlcmF0
aW9ucykKQEAgLTE3OSw4ICsxNzksOCBAQCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBD
U1NWYWx1ZSYgdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmCiAgICAgICAg
IGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGU6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGVY
OgogICAgICAgICBjYXNlIENTU1ZhbHVlVHJhbnNsYXRlWTogewotICAgICAgICAgICAgTGVuZ3Ro
IHR4ID0gTGVuZ3RoKDAsIEZpeGVkKTsKLSAgICAgICAgICAgIExlbmd0aCB0eSA9IExlbmd0aCgw
LCBGaXhlZCk7CisgICAgICAgICAgICBMZW5ndGggdHggPSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6
Rml4ZWQpOworICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZp
eGVkKTsKICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS5uYW1lKCkgPT0gQ1NTVmFsdWVU
cmFuc2xhdGVZKQogICAgICAgICAgICAgICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5ndGgoJmZp
cnN0VmFsdWUsIGNvbnZlcnNpb25EYXRhKTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtMTk4LDE0
ICsxOTgsMTQgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVl
LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJgogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgb3BlcmF0aW9ucy5hcHBlbmQo
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodHgsIHR5LCBMZW5ndGgoMCwgRml4
ZWQpLCB0cmFuc2Zvcm1PcGVyYXRpb25UeXBlKHRyYW5zZm9ybVZhbHVlLm5hbWUoKSkpKTsKKyAg
ICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6
Y3JlYXRlKHR4LCB0eSwgTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSwgdHJhbnNmb3JtT3Bl
cmF0aW9uVHlwZSh0cmFuc2Zvcm1WYWx1ZS5uYW1lKCkpKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1ZhbHVlVHJhbnNsYXRlWjoKICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVRyYW5zbGF0ZTNkOiB7Ci0gICAgICAgICAgICBMZW5ndGggdHggPSBMZW5ndGgo
MCwgRml4ZWQpOwotICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAsIEZpeGVkKTsKLSAg
ICAgICAgICAgIExlbmd0aCB0eiA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgICAgICBMZW5n
dGggdHggPSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOworICAgICAgICAgICAgTGVuZ3Ro
IHR5ID0gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKTsKKyAgICAgICAgICAgIExlbmd0aCB0
eiA9IExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgICAgICAgICBpZiAodHJhbnNm
b3JtVmFsdWUubmFtZSgpID09IENTU1ZhbHVlVHJhbnNsYXRlWikKICAgICAgICAgICAgICAgICB0
eiA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKCZmaXJzdFZhbHVlLCBjb252ZXJzaW9uRGF0YSk7CiAg
ICAgICAgICAgICBlbHNlIGlmICh0cmFuc2Zvcm1WYWx1ZS5uYW1lKCkgPT0gQ1NTVmFsdWVUcmFu
c2xhdGVZKQpAQCAtMzIyLDEzICszMjIsMTMgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29u
c3QgQ1NTVmFsdWUmIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NWYWx1ZVBlcnNwZWN0
aXZlOiB7Ci0gICAgICAgICAgICBMZW5ndGggcCA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAg
ICAgICBMZW5ndGggcCA9IExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgICAgICAg
ICBpZiAoZmlyc3RWYWx1ZS5pc0xlbmd0aCgpKQogICAgICAgICAgICAgICAgIHAgPSBjb252ZXJ0
VG9GbG9hdExlbmd0aCgmZmlyc3RWYWx1ZSwgY29udmVyc2lvbkRhdGEpOwogICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHF1aXJrIHRoYXQgc2hvdWxkIGdv
IGF3YXkgd2hlbiAzZCB0cmFuc2Zvcm1zIGFyZSBmaW5hbGl6ZWQuCiAgICAgICAgICAgICAgICAg
ZG91YmxlIHZhbCA9IGZpcnN0VmFsdWUuZG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgICAgICBw
ID0gdmFsID49IDAgPyBMZW5ndGgoY2xhbXBUb1Bvc2l0aXZlSW50ZWdlcih2YWwpLCBGaXhlZCkg
OiBMZW5ndGgoVW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICBwID0gdmFsID49IDAgPyBMZW5n
dGgoY2xhbXBUb1Bvc2l0aXZlSW50ZWdlcih2YWwpLCBMZW5ndGhUeXBlOjpGaXhlZCkgOiBMZW5n
dGgoTGVuZ3RoVHlwZTo6VW5kZWZpbmVkKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKHAuaXNVbmRlZmluZWQoKSkgewpAQCAtMzU4LDkgKzM1OCw5IEBAIFJlZlB0cjxUcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24+IHRyYW5zbGF0ZUZvclZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSwgY29uCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byB0eXBlID0gVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU7Ci0gICAgTGVuZ3RoIHR4ID0gTGVuZ3RoKDAsIEZp
eGVkKTsKLSAgICBMZW5ndGggdHkgPSBMZW5ndGgoMCwgRml4ZWQpOwotICAgIExlbmd0aCB0eiA9
IExlbmd0aCgwLCBGaXhlZCk7CisgICAgTGVuZ3RoIHR4ID0gTGVuZ3RoKDAsIExlbmd0aFR5cGU6
OkZpeGVkKTsKKyAgICBMZW5ndGggdHkgPSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwor
ICAgIExlbmd0aCB0eiA9IExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGF1
dG8qIHZhbHVlSXRlbSA9IHZhbHVlTGlzdC5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwogICAg
ICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZUl0ZW0pKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUZpbGxMYXllckltYWdlR2VvbWV0cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUZpbGxMYXllckltYWdlR2Vv
bWV0cnkuY3BwCmluZGV4IDYzYTMwYjQyOTZhYjhiNTM5OGQyMDlmNDRkZTk5ZjUzZmY2NTllNWMu
LmJlY2U0NzBlM2ZhMjUwYjQ5ZTY3ZGZkMGNkY2I2N2RmZmU1NDhiYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5RmlsbExheWVySW1hZ2VH
ZW9tZXRyeS5jcHAKQEAgLTk5LDggKzk5LDggQEAgc3RhdGljIExheW91dFNpemUgY2FsY3VsYXRl
SW1hZ2VJbnRyaW5zaWNEaW1lbnNpb25zKFN0eWxlSW1hZ2UqIGltYWdlLCBMYXlvdXRTaXoKICAg
ICAvLyBGSVhNRTogQ2FsbCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucygpLgogICAgIGF1dG8g
aW1hZ2VTaXplID0gaW1hZ2UtPmltYWdlU2l6ZShudWxscHRyLCAxKTsKICAgICBhdXRvIGludHJp
bnNpY1JhdGlvID0gaW1hZ2VTaXplOwotICAgIExlbmd0aCBpbnRyaW5zaWNXaWR0aCA9IExlbmd0
aChpbnRyaW5zaWNSYXRpby53aWR0aCgpLCBGaXhlZCk7Ci0gICAgTGVuZ3RoIGludHJpbnNpY0hl
aWdodCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby5oZWlnaHQoKSwgRml4ZWQpOworICAgIExlbmd0
aCBpbnRyaW5zaWNXaWR0aCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby53aWR0aCgpLCBMZW5ndGhU
eXBlOjpGaXhlZCk7CisgICAgTGVuZ3RoIGludHJpbnNpY0hlaWdodCA9IExlbmd0aChpbnRyaW5z
aWNSYXRpby5oZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogCiAgICAgQVNTRVJUKCFpbnRy
aW5zaWNXaWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSk7CiAgICAgQVNTRVJUKCFpbnRyaW5z
aWNIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggNDRmOWQwZWE1MDUyYzAxOWU3OGJhZWJlODA4YjhmMmM3NWQzMTk5NS4uMzhlYzE4Yjlm
NGI2YjcyMjlkNGUyZmVkYzQzNDdiYzY4YjZjYTAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC0yMjY2LDcgKzIyNjYsNyBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZkRpbWVu
c2lvbnNPdXRPZkRhdGUoRWxlbWVudCYgZWxlbWVudCwgRGltZW5zaW9uc0NoZQogICAgIGJvb2wg
aXNWZXJ0aWNhbCA9IHJlbmRlcmVyICYmICFyZW5kZXJlci0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKTsKICAgICBib29sIGNoZWNraW5nTG9naWNhbFdpZHRoID0gKChkaW1lbnNpb25zQ2hlY2sg
JiBXaWR0aERpbWVuc2lvbnNDaGVjaykgJiYgIWlzVmVydGljYWwpIHx8ICgoZGltZW5zaW9uc0No
ZWNrICYgSGVpZ2h0RGltZW5zaW9uc0NoZWNrKSAmJiBpc1ZlcnRpY2FsKTsKICAgICBib29sIGNo
ZWNraW5nTG9naWNhbEhlaWdodCA9ICgoZGltZW5zaW9uc0NoZWNrICYgSGVpZ2h0RGltZW5zaW9u
c0NoZWNrKSAmJiAhaXNWZXJ0aWNhbCkgfHwgKChkaW1lbnNpb25zQ2hlY2sgJiBXaWR0aERpbWVu
c2lvbnNDaGVjaykgJiYgaXNWZXJ0aWNhbCk7Ci0gICAgYm9vbCBoYXNTcGVjaWZpZWRMb2dpY2Fs
SGVpZ2h0ID0gcmVuZGVyZXIgJiYgcmVuZGVyZXItPnN0eWxlKCkubG9naWNhbE1pbkhlaWdodCgp
ID09IExlbmd0aCgwLCBGaXhlZCkgJiYgcmVuZGVyZXItPnN0eWxlKCkubG9naWNhbEhlaWdodCgp
LmlzRml4ZWQoKSAmJiByZW5kZXJlci0+c3R5bGUoKS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNBdXRv
KCk7CisgICAgYm9vbCBoYXNTcGVjaWZpZWRMb2dpY2FsSGVpZ2h0ID0gcmVuZGVyZXIgJiYgcmVu
ZGVyZXItPnN0eWxlKCkubG9naWNhbE1pbkhlaWdodCgpID09IExlbmd0aCgwLCBMZW5ndGhUeXBl
OjpGaXhlZCkgJiYgcmVuZGVyZXItPnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzRml4ZWQoKSAm
JiByZW5kZXJlci0+c3R5bGUoKS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNBdXRvKCk7CiAgICAgCiAg
ICAgaWYgKCFyZXF1aXJlRnVsbExheW91dCkgewogICAgICAgICBSZW5kZXJCb3gqIHByZXZpb3Vz
Qm94ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmlu
ZGV4IDAyMzcwYmM0N2JiYjIxODRhZWQ3NTBmZDFhMmZjZWJlZDJiN2U4ZDEuLjNmMGUzZTc4Zjdl
MjUzMWExZTgxZTE2MDc3NDRhYjRiYjY3MzExNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcApAQCAtMjA4NSw3ICsyMDg1LDcgQEAgUmVuZGVyU3R5bGUgSFRNTElu
cHV0RWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogCiAgICAgaWYgKGhhc0F1dG9GaWxsU3Ryb25nUGFzc3dvcmRCdXR0b24oKSAmJiAhaXNEaXNh
YmxlZE9yUmVhZE9ubHkoKSkgewogICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXNwbGF5KERp
c3BsYXlUeXBlOjpJbmxpbmVCbG9jayk7Ci0gICAgICAgIHRleHRCbG9ja1N0eWxlLnNldE1heFdp
ZHRoKExlbmd0aCB7IDEwMCwgUGVyY2VudCB9KTsKKyAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0
TWF4V2lkdGgoTGVuZ3RoIHsgMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50IH0pOwogICAgICAgICB0
ZXh0QmxvY2tTdHlsZS5zZXRDb2xvcihDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDE1
MykpOwogICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRUZXh0T3ZlcmZsb3coVGV4dE92ZXJmbG93
OjpDbGlwKTsKICAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0TWFza0ltYWdlKFN0eWxlR2VuZXJh
dGVkSW1hZ2U6OmNyZWF0ZShhdXRvRmlsbFN0cm9uZ1Bhc3N3b3JkTWFza0ltYWdlKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxk
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNG
aWVsZEVsZW1lbnQuY3BwCmluZGV4IDg0ZjU2ZGJjN2FlOGE2ZTY4ZjdjZmYwZGIyODc4NWJhNTkx
Mjc1NjMuLmFhNTMxZDViOWM2ZDA2ZDU3YTcxMjNmYTlkNjRjMjcxZTM3YTRkYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmll
bGRFbGVtZW50LmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIERhdGVUaW1lTnVtZXJpY0ZpZWxk
RWxlbWVudDo6YWRqdXN0TWluV2lkdGgoUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogICAgICAg
ICB3aWR0aCA9IHN0ZDo6bWF4KHdpZHRoLCBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1
Y3RUZXh0UnVuKG51bWJlclN0cmluZywgc3R5bGUpKSk7CiAgICAgfQogCi0gICAgc3R5bGUuc2V0
TWluV2lkdGgoeyB3aWR0aCwgRml4ZWQgfSk7CisgICAgc3R5bGUuc2V0TWluV2lkdGgoeyB3aWR0
aCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSk7CiB9CiAKIGludCBEYXRlVGltZU51bWVyaWNGaWVsZEVs
ZW1lbnQ6Om1heGltdW0oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmNwcAppbmRleCA2YWQ1MWI5
Mjg2YmE0ZDAzMDgzZjJhYjgyNDhhZjY2ODYwMzZiZjRlLi5jNzBhOTRiZmExYjdjOWZkMzZkMzE0
ODdiOTFmYWFjZmZkZGY3OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmNwcApAQCAtNTcsNyArNTcs
NyBAQCB2b2lkIERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQ6OmFkanVzdE1pbldpZHRoKFJl
bmRlclN0eWxlJiBzdHlsZSkgY29uc3QKICAgICBmb3IgKGF1dG8mIHN5bWJvbCA6IG1fc3ltYm9s
cykKICAgICAgICAgd2lkdGggPSBzdGQ6Om1heCh3aWR0aCwgZm9udC53aWR0aChSZW5kZXJCbG9j
azo6Y29uc3RydWN0VGV4dFJ1bihzeW1ib2wsIHN0eWxlKSkpOwogCi0gICAgc3R5bGUuc2V0TWlu
V2lkdGgoeyB3aWR0aCwgRml4ZWQgfSk7CisgICAgc3R5bGUuc2V0TWluV2lkdGgoeyB3aWR0aCwg
TGVuZ3RoVHlwZTo6Rml4ZWQgfSk7CiB9CiAKIGJvb2wgRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxl
bWVudDo6aGFzVmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggMDNhMmQ3MzA0Y2Y5ZmM3
OWJiNGYxODI4OWQwYmVjNzQ5N2I4MmQxZS4uY2JiYTIwMjIwMmJlZWI4ZjBmM2RjZTAxNDAzMjE0
M2E1OWUzNTJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgT3B0aW9uYWw8
U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdAogICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRy
KCk7CiAgICAgbmV3U3R5bGUtPmluaGVyaXRGcm9tKCpzaGFkb3dIb3N0U3R5bGUpOwogICAgIG5l
d1N0eWxlLT5zZXRGbGV4R3JvdygxKTsKLSAgICBuZXdTdHlsZS0+c2V0TWluV2lkdGgoTGVuZ3Ro
IHsgMCwgRml4ZWQgfSk7IC8vIE5lZWRlZCBmb3IgY29ycmVjdCBzaHJpbmtpbmcuCisgICAgbmV3
U3R5bGUtPnNldE1pbldpZHRoKExlbmd0aCB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0pOyAvLyBO
ZWVkZWQgZm9yIGNvcnJlY3Qgc2hyaW5raW5nLgogICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KERp
c3BsYXlUeXBlOjpCbG9jayk7CiAgICAgbmV3U3R5bGUtPnNldERpcmVjdGlvbihUZXh0RGlyZWN0
aW9uOjpMVFIpOwogICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIHNoYWRvdyBET00gdG8gYmUgZWRp
dGFibGUsIHNvIHdlIHNldCB0aGlzIGJsb2NrIHRvIHJlYWQtb25seSBpbiBjYXNlIHRoZSBpbnB1
dCBpdHNlbGYgaXMgZWRpdGFibGUuCkBAIC0xMjQsNyArMTI0LDcgQEAgT3B0aW9uYWw8U3R5bGU6
OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHls
ZShjb25zdAogICAgICAgICAvLyBmb3IgdGhlIHJvb3QgZWxlbWVudCBzdHlsZSwgdGhlIHBhcmVu
dCBlbGVtZW50IHN0eWxlLCBhbmQgdGhlIHJlbmRlciB2aWV3LgogICAgICAgICBhdXRvIGVtU2l6
ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwgQ1NTVW5pdFR5cGU6OkNTU19FTVMpOwog
ICAgICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSB7IG5ld1N0eWxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCAxLjAsIFdURjo6bnVsbG9wdCB9KTsKLSAgICAgICAgbmV3U3R5bGUtPnNldEZsZXhCYXNp
cyhMZW5ndGggeyBwaXhlbHMsIEZpeGVkIH0pOworICAgICAgICBuZXdTdHlsZS0+c2V0RmxleEJh
c2lzKExlbmd0aCB7IHBpeGVscywgTGVuZ3RoVHlwZTo6Rml4ZWQgfSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIHsgV1RGTW92ZShuZXdTdHlsZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCBlYzIyOTE2NDJk
NGYwNzk0YmY1MzFhZGJiYjBlYWIwYTcyZTI1OTA5Li45NDg5ZWMwODRmMmU4NDk4NDVkOGZiNjY0
ODcxZDkwMTNkZTFmMTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0xMTYsOCArMTE2LDggQEAgc3RkOjp1
bmlxdWVfcHRyPExheW91dDo6TGF5b3V0VHJlZT4gVHJlZUJ1aWxkZXI6OmJ1aWxkTGF5b3V0VHJl
ZShjb25zdCBSZW5kZXJWaWUKICAgICBQaGFzZVNjb3BlIHNjb3BlKFBoYXNlOjpUeXBlOjpUcmVl
QnVpbGRpbmcpOwogCiAgICAgYXV0byByb290U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUocmVu
ZGVyVmlldy5zdHlsZSgpKTsKLSAgICByb290U3R5bGUuc2V0TG9naWNhbFdpZHRoKExlbmd0aChy
ZW5kZXJWaWV3LndpZHRoKCksIEZpeGVkKSk7Ci0gICAgcm9vdFN0eWxlLnNldExvZ2ljYWxIZWln
aHQoTGVuZ3RoKHJlbmRlclZpZXcuaGVpZ2h0KCksIEZpeGVkKSk7CisgICAgcm9vdFN0eWxlLnNl
dExvZ2ljYWxXaWR0aChMZW5ndGgocmVuZGVyVmlldy53aWR0aCgpLCBMZW5ndGhUeXBlOjpGaXhl
ZCkpOworICAgIHJvb3RTdHlsZS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0aChyZW5kZXJWaWV3Lmhl
aWdodCgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogCiAgICAgYXV0byByb290TGF5b3V0Qm94ID0g
bWFrZVVuaXF1ZTxJbml0aWFsQ29udGFpbmluZ0Jsb2NrPihXVEZNb3ZlKHJvb3RTdHlsZSkpOwog
ICAgIGF1dG8mIHJvb3RDb250YWluZXIgPSAqcm9vdExheW91dEJveDsKQEAgLTIzNyw4ICsyMzcs
OCBAQCBCb3gqIFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyQm94
JiBwYXJlbnRDb250YWluZXIsIGNvbnN0IFJlbgogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpCbG9jaykgewogICAgICAgICAgICAg
ICAgIGlmIChhdXRvIG9mZnNldCA9IGFjY3VtdWxhdGVkT2Zmc2V0Rm9ySW5GbG93UG9zaXRpb25l
ZENvbnRpbnVhdGlvbihkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2xvbmVkU3R5bGUuc2V0VG9wKHsgb2Zmc2V0LT5oZWlnaHQoKSwgRml4ZWQg
fSk7Ci0gICAgICAgICAgICAgICAgICAgIGNsb25lZFN0eWxlLnNldExlZnQoeyBvZmZzZXQtPndp
ZHRoKCksIEZpeGVkIH0pOworICAgICAgICAgICAgICAgICAgICBjbG9uZWRTdHlsZS5zZXRUb3Ao
eyBvZmZzZXQtPmhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhlZCB9KTsKKyAgICAgICAgICAgICAg
ICAgICAgY2xvbmVkU3R5bGUuc2V0TGVmdCh7IG9mZnNldC0+d2lkdGgoKSwgTGVuZ3RoVHlwZTo6
Rml4ZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gJmNyZWF0ZUNv
bnRhaW5lcihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoY2xvbmVkU3R5bGUp
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSAmY3JlYXRlQ29udGFpbmVyKGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RG
TW92ZShjbG9uZWRTdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDhkYTBm
ZWJiNjczMGRjOTYxMjEyZjFjNzVmNTMyZDcxNDNkYjNiYjMuLjVhZjFkYzJiNTg1Y2JiZWExMDcy
OWI4N2E4ODlhYzRkZDI2OWNiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTM0
OTUsNyArMzQ5NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtRml4ZWRXaWR0aEF1dG9TaXpl
KCkKIAogICAgIEFTU0VSVChpczxSZW5kZXJFbGVtZW50PigqZmlyc3RDaGlsZCkpOwogICAgIGF1
dG8mIGRvY3VtZW50UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqZmlyc3RDaGls
ZCk7Ci0gICAgZG9jdW1lbnRSZW5kZXJlci5tdXRhYmxlU3R5bGUoKS5zZXRNYXhXaWR0aChMZW5n
dGgobV9hdXRvU2l6ZUNvbnN0cmFpbnQud2lkdGgoKSwgRml4ZWQpKTsKKyAgICBkb2N1bWVudFJl
bmRlcmVyLm11dGFibGVTdHlsZSgpLnNldE1heFdpZHRoKExlbmd0aChtX2F1dG9TaXplQ29uc3Ry
YWludC53aWR0aCgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgIHJlc2l6ZShtX2F1dG9TaXpl
Q29uc3RyYWludC53aWR0aCgpLCBtX2F1dG9TaXplQ29uc3RyYWludC5oZWlnaHQoKSk7CiAKICAg
ICBSZWY8RnJhbWVWaWV3PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKaW5kZXggMjc2MmE0YjFiOGVkM2Y5YWMwMjZm
MTEzMTUxZTgwZGFlMmY0ZDcwZS4uNTlhMTZhOGJlZTE0NmQyMzA3NjUyNDFjYWI5OWExYjI3OWNl
ZDNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAK
QEAgLTUzLDE2ICs1MywxNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8TGVuZ3RoQm94PiBwYXJzZVJv
b3RNYXJnaW4oU3RyaW5nJiByb290TWFyZ2luKQogICAgICAgICBpZiAoIXBhcnNlZFZhbHVlIHx8
IHBhcnNlZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTeW50YXhFcnJvciwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2Vy
dmVyJzogcm9vdE1hcmdpbiBtdXN0IGJlIHNwZWNpZmllZCBpbiBwaXhlbHMgb3IgcGVyY2VudC4i
IH07CiAgICAgICAgIGlmIChwYXJzZWRWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgICAg
ICBtYXJnaW5zLmFwcGVuZChMZW5ndGgocGFyc2VkVmFsdWUtPmRvdWJsZVZhbHVlKCksIFBlcmNl
bnQpKTsKKyAgICAgICAgICAgIG1hcmdpbnMuYXBwZW5kKExlbmd0aChwYXJzZWRWYWx1ZS0+ZG91
YmxlVmFsdWUoKSwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpOwogICAgICAgICBlbHNlIGlmIChwYXJz
ZWRWYWx1ZS0+aXNQeCgpKQotICAgICAgICAgICAgbWFyZ2lucy5hcHBlbmQoTGVuZ3RoKHBhcnNl
ZFZhbHVlLT5pbnRWYWx1ZSgpLCBGaXhlZCkpOworICAgICAgICAgICAgbWFyZ2lucy5hcHBlbmQo
TGVuZ3RoKHBhcnNlZFZhbHVlLT5pbnRWYWx1ZSgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJG
YWlsZWQgdG8gY29uc3RydWN0ICdJbnRlcnNlY3Rpb25PYnNlcnZlcic6IHJvb3RNYXJnaW4gbXVz
dCBiZSBzcGVjaWZpZWQgaW4gcGl4ZWxzIG9yIHBlcmNlbnQuIiB9OwogICAgIH0KICAgICBzd2l0
Y2ggKG1hcmdpbnMuc2l6ZSgpKSB7CiAgICAgY2FzZSAwOgogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgNDsgKytpKQotICAgICAgICAgICAgbWFyZ2lucy5hcHBlbmQoTGVuZ3RoKDAs
IEZpeGVkKSk7CisgICAgICAgICAgICBtYXJnaW5zLmFwcGVuZChMZW5ndGgoMCwgTGVuZ3RoVHlw
ZTo6Rml4ZWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAxOgogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgMzsgKytpKQpAQCAtMTUzLDcgKzE1Myw3IEBAIFN0cmluZyBJbnRl
cnNlY3Rpb25PYnNlcnZlcjo6cm9vdE1hcmdpbigpIGNvbnN0CiAgICAgZm9yIChhdXRvIHNpZGUg
OiBhbGxCb3hTaWRlcykgewogICAgICAgICBhdXRvJiBsZW5ndGggPSBtX3Jvb3RNYXJnaW4uYXQo
c2lkZSk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKGxlbmd0aC5pbnRWYWx1
ZSgpKTsKLSAgICAgICAgaWYgKGxlbmd0aC50eXBlKCkgPT0gUGVyY2VudCkKKyAgICAgICAgaWYg
KGxlbmd0aC5pc1BlcmNlbnQoKSkKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcl
Jyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgicHgiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCmluZGV4IDNmYzQzMWE0NzQ2MWQ4
YzQ0M2RiNGI2MjJkNmVhOTA2MzRkYTBmMmYuLjM5NzBmODI2ZmZjMDhkMmVjNjBiNTFkOTU3NGVi
Mjk0ZTUzNTI4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgTGVuZ3RoIHBhcnNlTGVuZ3RoKGNvbnN0
IFVDaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKGxlbmd0aCA9PSAwKQot
ICAgICAgICByZXR1cm4gTGVuZ3RoKDEsIFJlbGF0aXZlKTsKKyAgICAgICAgcmV0dXJuIExlbmd0
aCgxLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7CiAKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICB3
aGlsZSAoaSA8IGxlbmd0aCAmJiBpc1NwYWNlT3JOZXdsaW5lKGRhdGFbaV0pKQpAQCAtNjMsMTgg
KzYzLDE4IEBAIHN0YXRpYyBMZW5ndGggcGFyc2VMZW5ndGgoY29uc3QgVUNoYXIqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkKICAgICAgICAgLy8gSUUgcXVpcms6IGFjY2VwdCBkZWNpbWFsIGZyYWN0
aW9ucyBmb3IgcGVyY2VudGFnZXMuCiAgICAgICAgIGRvdWJsZSByID0gY2hhcmFjdGVyc1RvRG91
YmxlKGRhdGEsIGRvdWJsZUxlbmd0aCwgJm9rKTsKICAgICAgICAgaWYgKG9rKQotICAgICAgICAg
ICAgcmV0dXJuIExlbmd0aChyLCBQZXJjZW50KTsKLSAgICAgICAgcmV0dXJuIExlbmd0aCgxLCBS
ZWxhdGl2ZSk7CisgICAgICAgICAgICByZXR1cm4gTGVuZ3RoKHIsIExlbmd0aFR5cGU6OlBlcmNl
bnQpOworICAgICAgICByZXR1cm4gTGVuZ3RoKDEsIExlbmd0aFR5cGU6OlJlbGF0aXZlKTsKICAg
ICB9CiAgICAgaW50IHIgPSBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoZGF0YSwgaW50TGVuZ3RoLCAm
b2spOwogICAgIGlmIChuZXh0ID09ICcqJykgewogICAgICAgICBpZiAob2spCi0gICAgICAgICAg
ICByZXR1cm4gTGVuZ3RoKHIsIFJlbGF0aXZlKTsKLSAgICAgICAgcmV0dXJuIExlbmd0aCgxLCBS
ZWxhdGl2ZSk7CisgICAgICAgICAgICByZXR1cm4gTGVuZ3RoKHIsIExlbmd0aFR5cGU6OlJlbGF0
aXZlKTsKKyAgICAgICAgcmV0dXJuIExlbmd0aCgxLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7CiAg
ICAgfQogICAgIGlmIChvaykKLSAgICAgICAgcmV0dXJuIExlbmd0aChyLCBGaXhlZCk7Ci0gICAg
cmV0dXJuIExlbmd0aCgwLCBSZWxhdGl2ZSk7CisgICAgICAgIHJldHVybiBMZW5ndGgociwgTGVu
Z3RoVHlwZTo6Rml4ZWQpOworICAgIHJldHVybiBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6UmVsYXRp
dmUpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgY291bnRDaGFyYWN0ZXIoU3RyaW5nSW1wbCYgc3Ry
aW5nLCBVQ2hhciBjaGFyYWN0ZXIpCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIENhbGN1bGF0
aW9uVmFsdWVNYXAmIGNhbGN1bGF0aW9uVmFsdWVzKCkKIAogTGVuZ3RoOjpMZW5ndGgoUmVmPENh
bGN1bGF0aW9uVmFsdWU+JiYgdmFsdWUpCiAgICAgOiBtX2hhc1F1aXJrKGZhbHNlKQotICAgICwg
bV90eXBlKENhbGN1bGF0ZWQpCisgICAgLCBtX3R5cGUoTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZCkK
ICAgICAsIG1faXNGbG9hdChmYWxzZSkKIHsKICAgICBtX2NhbGN1bGF0aW9uVmFsdWVIYW5kbGUg
PSBjYWxjdWxhdGlvblZhbHVlcygpLmluc2VydChXVEZNb3ZlKHZhbHVlKSk7CkBAIC0yODMsMTIg
KzI4MywxMiBAQCBib29sIExlbmd0aDo6aXNDYWxjdWxhdGVkRXF1YWwoY29uc3QgTGVuZ3RoJiBv
dGhlcikgY29uc3QKIExlbmd0aCBjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3Qg
TGVuZ3RoJiBsZW5ndGgpCiB7CiAgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkKLSAgICAgICAg
cmV0dXJuIExlbmd0aCgxMDAgLSBsZW5ndGgudmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIHJl
dHVybiBMZW5ndGgoMTAwIC0gbGVuZ3RoLnZhbHVlKCksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwog
ICAgIAogICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2FsYyBleHByZXNzaW9uOiBjYWxjKDEwMCUg
LSBsZW5ndGgpCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+
PiBsZW5ndGhzOwogICAgIGxlbmd0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKLSAgICBs
ZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihM
ZW5ndGgoMTAwLCBQZXJjZW50KSkpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VV
bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIExlbmd0aFR5cGU6OlBlcmNl
bnQpKSk7CiAgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVz
c2lvbkxlbmd0aD4obGVuZ3RoKSk7CiAgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJl
c3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3Qp
OwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3Ap
LCBWYWx1ZVJhbmdlQWxsKSk7CkBAIC0zMTQsNyArMzE0LDcgQEAgTGVuZ3RoIGJsZW5kKGNvbnN0
IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyZXNzKQogICAgIGlm
IChmcm9tLmlzVW5kZWZpbmVkKCkgfHwgdG8uaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJu
IHRvOwogCi0gICAgaWYgKGZyb20udHlwZSgpID09IENhbGN1bGF0ZWQgfHwgdG8udHlwZSgpID09
IENhbGN1bGF0ZWQpCisgICAgaWYgKGZyb20uaXNDYWxjdWxhdGVkKCkgfHwgdG8uaXNDYWxjdWxh
dGVkKCkpCiAgICAgICAgIHJldHVybiBibGVuZE1peGVkVHlwZXMoZnJvbSwgdG8sIHByb2dyZXNz
KTsKIAogICAgIGlmICghZnJvbS5pc1plcm8oKSAmJiAhdG8uaXNaZXJvKCkgJiYgZnJvbS50eXBl
KCkgIT0gdG8udHlwZSgpKQpAQCAtMzI0LDEwICszMjQsMTAgQEAgTGVuZ3RoIGJsZW5kKGNvbnN0
IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyZXNzKQogICAgIGlm
ICh0by5pc1plcm8oKSkKICAgICAgICAgcmVzdWx0VHlwZSA9IGZyb20udHlwZSgpOwogCi0gICAg
aWYgKHJlc3VsdFR5cGUgPT0gUGVyY2VudCkgeworICAgIGlmIChyZXN1bHRUeXBlID09IExlbmd0
aFR5cGU6OlBlcmNlbnQpIHsKICAgICAgICAgZmxvYXQgZnJvbVBlcmNlbnQgPSBmcm9tLmlzWmVy
bygpID8gMCA6IGZyb20ucGVyY2VudCgpOwogICAgICAgICBmbG9hdCB0b1BlcmNlbnQgPSB0by5p
c1plcm8oKSA/IDAgOiB0by5wZXJjZW50KCk7Ci0gICAgICAgIHJldHVybiBMZW5ndGgoV2ViQ29y
ZTo6YmxlbmQoZnJvbVBlcmNlbnQsIHRvUGVyY2VudCwgcHJvZ3Jlc3MpLCBQZXJjZW50KTsKKyAg
ICAgICAgcmV0dXJuIExlbmd0aChXZWJDb3JlOjpibGVuZChmcm9tUGVyY2VudCwgdG9QZXJjZW50
LCBwcm9ncmVzcyksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgIH0KIAogICAgIGZsb2F0IGZy
b21WYWx1ZSA9IGZyb20uaXNaZXJvKCkgPyAwIDogZnJvbS52YWx1ZSgpOwpAQCAtMzQ0LDE4ICsz
NDQsMTggQEAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKExlbmd0aCkgPT0gc2l6ZW9mKFNhbWVTaXpl
QXNMZW5ndGgpLCBsZW5ndGhfc2hvdWxkX3N0YXlfc20KIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBMZW5ndGhUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0
eXBlKSB7Ci0gICAgY2FzZSBBdXRvOiB0cyA8PCAiYXV0byI7IGJyZWFrOwotICAgIGNhc2UgUmVs
YXRpdmU6IHRzIDw8ICJyZWxhdGl2ZSI7IGJyZWFrOwotICAgIGNhc2UgUGVyY2VudDogdHMgPDwg
InBlcmNlbnQiOyBicmVhazsKLSAgICBjYXNlIEZpeGVkOiB0cyA8PCAiZml4ZWQiOyBicmVhazsK
LSAgICBjYXNlIEludHJpbnNpYzogdHMgPDwgImludHJpbnNpYyI7IGJyZWFrOwotICAgIGNhc2Ug
TWluSW50cmluc2ljOiB0cyA8PCAibWluLWludHJpbnNpYyI7IGJyZWFrOwotICAgIGNhc2UgTWlu
Q29udGVudDogdHMgPDwgIm1pbi1jb250ZW50IjsgYnJlYWs7Ci0gICAgY2FzZSBNYXhDb250ZW50
OiB0cyA8PCAibWF4LWNvbnRlbnQiOyBicmVhazsKLSAgICBjYXNlIEZpbGxBdmFpbGFibGU6IHRz
IDw8ICJmaWxsLWF2YWlsYWJsZSI7IGJyZWFrOwotICAgIGNhc2UgRml0Q29udGVudDogdHMgPDwg
ImZpdC1jb250ZW50IjsgYnJlYWs7Ci0gICAgY2FzZSBDYWxjdWxhdGVkOiB0cyA8PCAiY2FsYyI7
IGJyZWFrOwotICAgIGNhc2UgVW5kZWZpbmVkOiB0cyA8PCAidW5kZWZpbmVkIjsgYnJlYWs7Cisg
ICAgY2FzZSBMZW5ndGhUeXBlOjpBdXRvOiB0cyA8PCAiYXV0byI7IGJyZWFrOworICAgIGNhc2Ug
TGVuZ3RoVHlwZTo6UmVsYXRpdmU6IHRzIDw8ICJyZWxhdGl2ZSI7IGJyZWFrOworICAgIGNhc2Ug
TGVuZ3RoVHlwZTo6UGVyY2VudDogdHMgPDwgInBlcmNlbnQiOyBicmVhazsKKyAgICBjYXNlIExl
bmd0aFR5cGU6OkZpeGVkOiB0cyA8PCAiZml4ZWQiOyBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5
cGU6OkludHJpbnNpYzogdHMgPDwgImludHJpbnNpYyI7IGJyZWFrOworICAgIGNhc2UgTGVuZ3Ro
VHlwZTo6TWluSW50cmluc2ljOiB0cyA8PCAibWluLWludHJpbnNpYyI7IGJyZWFrOworICAgIGNh
c2UgTGVuZ3RoVHlwZTo6TWluQ29udGVudDogdHMgPDwgIm1pbi1jb250ZW50IjsgYnJlYWs7Cisg
ICAgY2FzZSBMZW5ndGhUeXBlOjpNYXhDb250ZW50OiB0cyA8PCAibWF4LWNvbnRlbnQiOyBicmVh
azsKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZpbGxBdmFpbGFibGU6IHRzIDw8ICJmaWxsLWF2YWls
YWJsZSI7IGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml0Q29udGVudDogdHMgPDwgImZp
dC1jb250ZW50IjsgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkOiB0cyA8
PCAiY2FsYyI7IGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZTo6VW5kZWZpbmVkOiB0cyA8PCAi
dW5kZWZpbmVkIjsgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiB0czsKIH0KQEAgLTM2MywyNiAr
MzYzLDI2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBM
ZW5ndGhUeXBlIHR5cGUpCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBM
ZW5ndGggbGVuZ3RoKQogewogICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewotICAgIGNhc2Ug
QXV0bzoKLSAgICBjYXNlIFVuZGVmaW5lZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkF1dG86Cisg
ICAgY2FzZSBMZW5ndGhUeXBlOjpVbmRlZmluZWQ6CiAgICAgICAgIHRzIDw8IGxlbmd0aC50eXBl
KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRml4ZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBl
OjpGaXhlZDoKICAgICAgICAgdHMgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGlu
Z0ludGVnZXJzKGxlbmd0aC52YWx1ZSgpKSA8PCAicHgiOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFJlbGF0aXZlOgotICAgIGNhc2UgSW50cmluc2ljOgotICAgIGNhc2UgTWluSW50cmluc2lj
OgotICAgIGNhc2UgTWluQ29udGVudDoKLSAgICBjYXNlIE1heENvbnRlbnQ6Ci0gICAgY2FzZSBG
aWxsQXZhaWxhYmxlOgotICAgIGNhc2UgRml0Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6
OlJlbGF0aXZlOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6SW50cmluc2ljOgorICAgIGNhc2UgTGVu
Z3RoVHlwZTo6TWluSW50cmluc2ljOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWluQ29udGVudDoK
KyAgICBjYXNlIExlbmd0aFR5cGU6Ok1heENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpG
aWxsQXZhaWxhYmxlOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml0Q29udGVudDoKICAgICAgICAg
dHMgPDwgbGVuZ3RoLnR5cGUoKSA8PCAiICIgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVz
cGVjdGluZ0ludGVnZXJzKGxlbmd0aC52YWx1ZSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQZXJjZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6UGVyY2VudDoKICAgICAgICAgdHMgPDwg
VGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKGxlbmd0aC5wZXJjZW50
KCkpIDw8ICIlIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDYWxjdWxhdGVkOgorICAgIGNh
c2UgTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZDoKICAgICAgICAgdHMgPDwgbGVuZ3RoLmNhbGN1bGF0
aW9uVmFsdWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGgu
aAppbmRleCAxNGJlZmY5YzNkMjZmZjkwNzhjZGEwNTM5YTlkNzhmNGM0YTZjZjVkLi44MTBkMWU0
ODBkN2Q5ZmU1YTYxMjY5MWZlMTUzZTNiNWNkYmQxNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGguaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBUZXh0U3RyZWFtOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWVudW0gTGVuZ3RoVHlwZSB7CitlbnVtIGNsYXNzIExlbmd0aFR5cGUgOiB1aW50
OF90IHsKICAgICBBdXRvLCBSZWxhdGl2ZSwgUGVyY2VudCwgRml4ZWQsCiAgICAgSW50cmluc2lj
LCBNaW5JbnRyaW5zaWMsCiAgICAgTWluQ29udGVudCwgTWF4Q29udGVudCwgRmlsbEF2YWlsYWJs
ZSwgRml0Q29udGVudCwKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZTsK
IHN0cnVjdCBMZW5ndGggewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIExlbmd0aChMZW5ndGhUeXBlID0gQXV0byk7CisgICAgTGVuZ3RoKExlbmd0aFR5cGUgPSBM
ZW5ndGhUeXBlOjpBdXRvKTsKIAogICAgIExlbmd0aChpbnQgdmFsdWUsIExlbmd0aFR5cGUsIGJv
b2wgaGFzUXVpcmsgPSBmYWxzZSk7CiAgICAgTGVuZ3RoKExheW91dFVuaXQgdmFsdWUsIExlbmd0
aFR5cGUsIGJvb2wgaGFzUXVpcmsgPSBmYWxzZSk7CkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpbGxBdmFpbGFibGUo
KSBjb25zdDsKICAgICBib29sIGlzRml0Q29udGVudCgpIGNvbnN0OworICAgIGJvb2wgaXNNaW5J
bnRyaW5zaWMoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzUXVpcmsoKSBjb25zdDsKIApAQCAtMTMx
LDcgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fY2FsY3VsYXRpb25WYWx1
ZUhhbmRsZTsKICAgICB9OwogICAgIGJvb2wgbV9oYXNRdWlyazsKLSAgICB1bnNpZ25lZCBjaGFy
IG1fdHlwZTsKKyAgICBMZW5ndGhUeXBlIG1fdHlwZTsKICAgICBib29sIG1faXNGbG9hdDsKIH07
CiAKQEAgLTE0NCwzMSArMTQ1LDMxIEBAIFVuaXF1ZUFycmF5PExlbmd0aD4gbmV3TGVuZ3RoQXJy
YXkoY29uc3QgU3RyaW5nJiwgaW50JiBsZW5ndGgpOwogaW5saW5lIExlbmd0aDo6TGVuZ3RoKExl
bmd0aFR5cGUgdHlwZSkKICAgICA6IG1faW50VmFsdWUoMCksIG1faGFzUXVpcmsoZmFsc2UpLCBt
X3R5cGUodHlwZSksIG1faXNGbG9hdChmYWxzZSkKIHsKLSAgICBBU1NFUlQodHlwZSAhPSBDYWxj
dWxhdGVkKTsKKyAgICBBU1NFUlQodHlwZSAhPSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkKTsKIH0K
IAogaW5saW5lIExlbmd0aDo6TGVuZ3RoKGludCB2YWx1ZSwgTGVuZ3RoVHlwZSB0eXBlLCBib29s
IGhhc1F1aXJrKQogICAgIDogbV9pbnRWYWx1ZSh2YWx1ZSksIG1faGFzUXVpcmsoaGFzUXVpcmsp
LCBtX3R5cGUodHlwZSksIG1faXNGbG9hdChmYWxzZSkKIHsKLSAgICBBU1NFUlQodHlwZSAhPSBD
YWxjdWxhdGVkKTsKKyAgICBBU1NFUlQodHlwZSAhPSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkKTsK
IH0KIAogaW5saW5lIExlbmd0aDo6TGVuZ3RoKExheW91dFVuaXQgdmFsdWUsIExlbmd0aFR5cGUg
dHlwZSwgYm9vbCBoYXNRdWlyaykKICAgICA6IG1fZmxvYXRWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkp
LCBtX2hhc1F1aXJrKGhhc1F1aXJrKSwgbV90eXBlKHR5cGUpLCBtX2lzRmxvYXQodHJ1ZSkKIHsK
LSAgICBBU1NFUlQodHlwZSAhPSBDYWxjdWxhdGVkKTsKKyAgICBBU1NFUlQodHlwZSAhPSBMZW5n
dGhUeXBlOjpDYWxjdWxhdGVkKTsKIH0KIAogaW5saW5lIExlbmd0aDo6TGVuZ3RoKGZsb2F0IHZh
bHVlLCBMZW5ndGhUeXBlIHR5cGUsIGJvb2wgaGFzUXVpcmspCiAgICAgOiBtX2Zsb2F0VmFsdWUo
dmFsdWUpLCBtX2hhc1F1aXJrKGhhc1F1aXJrKSwgbV90eXBlKHR5cGUpLCBtX2lzRmxvYXQodHJ1
ZSkKIHsKLSAgICBBU1NFUlQodHlwZSAhPSBDYWxjdWxhdGVkKTsKKyAgICBBU1NFUlQodHlwZSAh
PSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkKTsKIH0KIAogaW5saW5lIExlbmd0aDo6TGVuZ3RoKGRv
dWJsZSB2YWx1ZSwgTGVuZ3RoVHlwZSB0eXBlLCBib29sIGhhc1F1aXJrKQogICAgIDogbV9mbG9h
dFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpLCBtX2hhc1F1aXJrKGhhc1F1aXJrKSwg
bV90eXBlKHR5cGUpLCBtX2lzRmxvYXQodHJ1ZSkKIHsKLSAgICBBU1NFUlQodHlwZSAhPSBDYWxj
dWxhdGVkKTsKKyAgICBBU1NFUlQodHlwZSAhPSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkKTsKIH0K
IAogaW5saW5lIExlbmd0aDo6TGVuZ3RoKGNvbnN0IExlbmd0aCYgb3RoZXIpCkBAIC0xODIsNyAr
MTgzLDcgQEAgaW5saW5lIExlbmd0aDo6TGVuZ3RoKGNvbnN0IExlbmd0aCYgb3RoZXIpCiBpbmxp
bmUgTGVuZ3RoOjpMZW5ndGgoTGVuZ3RoJiYgb3RoZXIpCiB7CiAgICAgbWVtY3B5KHN0YXRpY19j
YXN0PHZvaWQqPih0aGlzKSwgc3RhdGljX2Nhc3Q8dm9pZCo+KCZvdGhlciksIHNpemVvZihMZW5n
dGgpKTsKLSAgICBvdGhlci5tX3R5cGUgPSBBdXRvOworICAgIG90aGVyLm1fdHlwZSA9IExlbmd0
aFR5cGU6OkF1dG87CiB9CiAKIGlubGluZSBMZW5ndGgmIExlbmd0aDo6b3BlcmF0b3I9KGNvbnN0
IExlbmd0aCYgb3RoZXIpCkBAIC0yMDgsNyArMjA5LDcgQEAgaW5saW5lIExlbmd0aCYgTGVuZ3Ro
OjpvcGVyYXRvcj0oTGVuZ3RoJiYgb3RoZXIpCiAgICAgICAgIGRlcmVmKCk7CiAKICAgICBtZW1j
cHkoc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCBzdGF0aWNfY2FzdDx2b2lkKj4oJm90aGVyKSwg
c2l6ZW9mKExlbmd0aCkpOwotICAgIG90aGVyLm1fdHlwZSA9IEF1dG87CisgICAgb3RoZXIubV90
eXBlID0gTGVuZ3RoVHlwZTo6QXV0bzsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTI4OSw4
ICsyOTAsOCBAQCBpbmxpbmUgdm9pZCBMZW5ndGg6OnNldEhhc1F1aXJrKGJvb2wgaGFzUXVpcmsp
CiAKIGlubGluZSB2b2lkIExlbmd0aDo6c2V0VmFsdWUoTGVuZ3RoVHlwZSB0eXBlLCBpbnQgdmFs
dWUpCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSAhPSBDYWxjdWxhdGVkKTsKLSAgICBBU1NFUlQodHlw
ZSAhPSBDYWxjdWxhdGVkKTsKKyAgICBBU1NFUlQobV90eXBlICE9IExlbmd0aFR5cGU6OkNhbGN1
bGF0ZWQpOworICAgIEFTU0VSVCh0eXBlICE9IExlbmd0aFR5cGU6OkNhbGN1bGF0ZWQpOwogICAg
IG1fdHlwZSA9IHR5cGU7CiAgICAgbV9pbnRWYWx1ZSA9IHZhbHVlOwogICAgIG1faXNGbG9hdCA9
IGZhbHNlOwpAQCAtMjk4LDggKzI5OSw4IEBAIGlubGluZSB2b2lkIExlbmd0aDo6c2V0VmFsdWUo
TGVuZ3RoVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAKIGlubGluZSB2b2lkIExlbmd0aDo6c2V0VmFs
dWUoTGVuZ3RoVHlwZSB0eXBlLCBmbG9hdCB2YWx1ZSkKIHsKLSAgICBBU1NFUlQobV90eXBlICE9
IENhbGN1bGF0ZWQpOwotICAgIEFTU0VSVCh0eXBlICE9IENhbGN1bGF0ZWQpOworICAgIEFTU0VS
VChtX3R5cGUgIT0gTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZCk7CisgICAgQVNTRVJUKHR5cGUgIT0g
TGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZCk7CiAgICAgbV90eXBlID0gdHlwZTsKICAgICBtX2Zsb2F0
VmFsdWUgPSB2YWx1ZTsKICAgICBtX2lzRmxvYXQgPSB0cnVlOwpAQCAtMzA3LDggKzMwOCw4IEBA
IGlubGluZSB2b2lkIExlbmd0aDo6c2V0VmFsdWUoTGVuZ3RoVHlwZSB0eXBlLCBmbG9hdCB2YWx1
ZSkKIAogaW5saW5lIHZvaWQgTGVuZ3RoOjpzZXRWYWx1ZShMZW5ndGhUeXBlIHR5cGUsIExheW91
dFVuaXQgdmFsdWUpCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSAhPSBDYWxjdWxhdGVkKTsKLSAgICBB
U1NFUlQodHlwZSAhPSBDYWxjdWxhdGVkKTsKKyAgICBBU1NFUlQobV90eXBlICE9IExlbmd0aFR5
cGU6OkNhbGN1bGF0ZWQpOworICAgIEFTU0VSVCh0eXBlICE9IExlbmd0aFR5cGU6OkNhbGN1bGF0
ZWQpOwogICAgIG1fdHlwZSA9IHR5cGU7CiAgICAgbV9mbG9hdFZhbHVlID0gdmFsdWU7CiAgICAg
bV9pc0Zsb2F0ID0gdHJ1ZTsKQEAgLTMxNiwyMiArMzE3LDIyIEBAIGlubGluZSB2b2lkIExlbmd0
aDo6c2V0VmFsdWUoTGVuZ3RoVHlwZSB0eXBlLCBMYXlvdXRVbml0IHZhbHVlKQogCiBpbmxpbmUg
Ym9vbCBMZW5ndGg6OmlzQXV0bygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHR5cGUoKSA9PSBBdXRv
OworICAgIHJldHVybiB0eXBlKCkgPT0gTGVuZ3RoVHlwZTo6QXV0bzsKIH0KIAogaW5saW5lIGJv
b2wgTGVuZ3RoOjppc0ZpeGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHlwZSgpID09IEZpeGVk
OworICAgIHJldHVybiB0eXBlKCkgPT0gTGVuZ3RoVHlwZTo6Rml4ZWQ7CiB9CiAKIGlubGluZSBi
b29sIExlbmd0aDo6aXNNYXhDb250ZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHlwZSgpID09
IE1heENvbnRlbnQ7CisgICAgcmV0dXJuIHR5cGUoKSA9PSBMZW5ndGhUeXBlOjpNYXhDb250ZW50
OwogfQogCiBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzTWluQ29udGVudCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHR5cGUoKSA9PSBNaW5Db250ZW50OworICAgIHJldHVybiB0eXBlKCkgPT0gTGVuZ3Ro
VHlwZTo6TWluQ29udGVudDsKIH0KIAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc05lZ2F0aXZlKCkg
Y29uc3QKQEAgLTM0MywxNyArMzQ0LDE3IEBAIGlubGluZSBib29sIExlbmd0aDo6aXNOZWdhdGl2
ZSgpIGNvbnN0CiAKIGlubGluZSBib29sIExlbmd0aDo6aXNQZXJjZW50KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gdHlwZSgpID09IFBlcmNlbnQ7CisgICAgcmV0dXJuIHR5cGUoKSA9PSBMZW5ndGhU
eXBlOjpQZXJjZW50OwogfQogCiBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzUmVsYXRpdmUoKSBjb25z
dAogewotICAgIHJldHVybiB0eXBlKCkgPT0gUmVsYXRpdmU7CisgICAgcmV0dXJuIHR5cGUoKSA9
PSBMZW5ndGhUeXBlOjpSZWxhdGl2ZTsKIH0KIAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc1VuZGVm
aW5lZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHR5cGUoKSA9PSBVbmRlZmluZWQ7CisgICAgcmV0
dXJuIHR5cGUoKSA9PSBMZW5ndGhUeXBlOjpVbmRlZmluZWQ7CiB9CiAKIGlubGluZSBib29sIExl
bmd0aDo6aXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgY29uc3QKQEAgLTM4MCwxNyArMzgxLDE4IEBA
IGlubGluZSBib29sIExlbmd0aDo6aXNaZXJvKCkgY29uc3QKIAogaW5saW5lIGJvb2wgTGVuZ3Ro
Ojppc0NhbGN1bGF0ZWQoKSBjb25zdAogewotICAgIHJldHVybiB0eXBlKCkgPT0gQ2FsY3VsYXRl
ZDsKKyAgICByZXR1cm4gdHlwZSgpID09IExlbmd0aFR5cGU6OkNhbGN1bGF0ZWQ7CiB9CiAKIGlu
bGluZSBib29sIExlbmd0aDo6aXNMZWdhY3lJbnRyaW5zaWMoKSBjb25zdAogewotICAgIHJldHVy
biB0eXBlKCkgPT0gSW50cmluc2ljIHx8IHR5cGUoKSA9PSBNaW5JbnRyaW5zaWM7CisgICAgcmV0
dXJuIHR5cGUoKSA9PSBMZW5ndGhUeXBlOjpJbnRyaW5zaWMgfHwgdHlwZSgpID09IExlbmd0aFR5
cGU6Ok1pbkludHJpbnNpYzsKIH0KIAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc0ludHJpbnNpYygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHR5cGUoKSA9PSBNaW5Db250ZW50IHx8IHR5cGUoKSA9PSBN
YXhDb250ZW50IHx8IHR5cGUoKSA9PSBGaWxsQXZhaWxhYmxlIHx8IHR5cGUoKSA9PSBGaXRDb250
ZW50OworICAgIC8vIEZJWE1FOiBUaGlzIGlzIG1pc2xlYWRpbmdseSBuYW1lZC4gT25lIHdvdWxk
IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIGRvZXMgInJldHVybiB0eXBlKCkgPT0gTGVuZ3RoVHlwZTo6
SW50cmluc2ljOyIuCisgICAgcmV0dXJuIHR5cGUoKSA9PSBMZW5ndGhUeXBlOjpNaW5Db250ZW50
IHx8IHR5cGUoKSA9PSBMZW5ndGhUeXBlOjpNYXhDb250ZW50IHx8IHR5cGUoKSA9PSBMZW5ndGhU
eXBlOjpGaWxsQXZhaWxhYmxlIHx8IHR5cGUoKSA9PSBMZW5ndGhUeXBlOjpGaXRDb250ZW50Owog
fQogCiBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzSW50cmluc2ljT3JBdXRvKCkgY29uc3QKQEAgLTQx
MCwxMiArNDEyLDE3IEBAIGlubGluZSBib29sIExlbmd0aDo6aXNTcGVjaWZpZWRPckludHJpbnNp
YygpIGNvbnN0CiAKIGlubGluZSBib29sIExlbmd0aDo6aXNGaWxsQXZhaWxhYmxlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gdHlwZSgpID09IEZpbGxBdmFpbGFibGU7CisgICAgcmV0dXJuIHR5cGUo
KSA9PSBMZW5ndGhUeXBlOjpGaWxsQXZhaWxhYmxlOwogfQogCiBpbmxpbmUgYm9vbCBMZW5ndGg6
OmlzRml0Q29udGVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHR5cGUoKSA9PSBGaXRDb250ZW50
OworICAgIHJldHVybiB0eXBlKCkgPT0gTGVuZ3RoVHlwZTo6Rml0Q29udGVudDsKK30KKworaW5s
aW5lIGJvb2wgTGVuZ3RoOjppc01pbkludHJpbnNpYygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHR5
cGUoKSA9PSBMZW5ndGhUeXBlOjpNaW5JbnRyaW5zaWM7CiB9CiAKIExlbmd0aCBjb252ZXJ0VG8x
MDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aEJveC5oCmluZGV4IDg5YTc1YzhiNmU0MjQ3NjM1OTM4ODRhZTY0NWVkZGViYjgwM2E0YmEu
LjdmMjY2OWQzYTUwMjNlYmJmMTNjZDA1Y2Y1NmU3OWIwZGJkYzhiZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aEJveC5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIExlbmd0aEJveCA6IHB1YmxpYyBSZWN0RWRnZXM8TGVuZ3RoPiB7CiBwdWJsaWM6CiAg
ICAgTGVuZ3RoQm94KCkKLSAgICAgICAgOiBMZW5ndGhCb3goQXV0bykKKyAgICAgICAgOiBMZW5n
dGhCb3goTGVuZ3RoVHlwZTo6QXV0bykKICAgICB7CiAgICAgfQogCkBAIC00MCwxMiArNDAsMTIg
QEAgcHVibGljOgogICAgIH0KIAogICAgIGV4cGxpY2l0IExlbmd0aEJveChpbnQgdikKLSAgICAg
ICAgOiBSZWN0RWRnZXMoTGVuZ3RoKHYsIEZpeGVkKSwgTGVuZ3RoKHYsIEZpeGVkKSwgTGVuZ3Ro
KHYsIEZpeGVkKSwgTGVuZ3RoKHYsIEZpeGVkKSkKKyAgICAgICAgOiBSZWN0RWRnZXMoTGVuZ3Ro
KHYsIExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKHYsIExlbmd0aFR5cGU6OkZpeGVkKSwgTGVu
Z3RoKHYsIExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKHYsIExlbmd0aFR5cGU6OkZpeGVkKSkK
ICAgICB7CiAgICAgfQogCiAgICAgTGVuZ3RoQm94KGludCB0b3AsIGludCByaWdodCwgaW50IGJv
dHRvbSwgaW50IGxlZnQpCi0gICAgICAgIDogUmVjdEVkZ2VzKExlbmd0aCh0b3AsIEZpeGVkKSwg
TGVuZ3RoKHJpZ2h0LCBGaXhlZCksIExlbmd0aChib3R0b20sIEZpeGVkKSwgTGVuZ3RoKGxlZnQs
IEZpeGVkKSkKKyAgICAgICAgOiBSZWN0RWRnZXMoTGVuZ3RoKHRvcCwgTGVuZ3RoVHlwZTo6Rml4
ZWQpLCBMZW5ndGgocmlnaHQsIExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKGJvdHRvbSwgTGVu
Z3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgobGVmdCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKQogICAgIHsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAppbmRleCAzMWU2MjBlOTc1MzNkOTI3
MDAzZjExYWU4ZmFkYWNmYTE4M2I1MTFkLi40NTNkMTE5MjQyMmZiY2E3MjZmN2Q1ZTk3MWY4Njhk
YzEyZjg3NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCkBAIC01MCw3ICs1MCw3IEBA
IExlbmd0aFNpemUgVGhlbWU6OmNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IExlbmd0aFNpemUmCiAKIExlbmd0aFNpemUgVGhlbWU6Om1pbmltdW1Db250
cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXpl
JiwgZmxvYXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVk
IH0gfTsKKyAgICByZXR1cm4geyB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgMCwgTGVuZ3Ro
VHlwZTo6Rml4ZWQgfSB9OwogfQogCiBib29sIFRoZW1lOjpjb250cm9sUmVxdWlyZXNQcmVXaGl0
ZVNwYWNlKENvbnRyb2xQYXJ0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwCmluZGV4IDkzN2FhNGQzNTkzZDFkMjM5MTczM2YwYzAyNzc0YTIxMTEzMzY1
ZTEuLjMwMzAyOGY0MWYwY2FjZmYyOWU2ODY1NGYxN2U3NGMwNWI2YWM1ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTMzNCw4ICszMzQsOCBAQCBJ
bWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdAogdm9pZCBJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVu
c2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZs
b2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pCiB7CiAgICAgaW50cmluc2ljUmF0aW8gPSBzaXplKCk7
Ci0gICAgaW50cmluc2ljV2lkdGggPSBMZW5ndGgoaW50cmluc2ljUmF0aW8ud2lkdGgoKSwgRml4
ZWQpOwotICAgIGludHJpbnNpY0hlaWdodCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby5oZWlnaHQo
KSwgRml4ZWQpOworICAgIGludHJpbnNpY1dpZHRoID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLndp
ZHRoKCksIExlbmd0aFR5cGU6OkZpeGVkKTsKKyAgICBpbnRyaW5zaWNIZWlnaHQgPSBMZW5ndGgo
aW50cmluc2ljUmF0aW8uaGVpZ2h0KCksIExlbmd0aFR5cGU6OkZpeGVkKTsKIH0KIAogdm9pZCBJ
bWFnZTo6c3RhcnRBbmltYXRpb25Bc3luY2hyb25vdXNseSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3Jt
T3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCmluZGV4IGVmYjkzNTNmYTU5NGU5
OGVjY2ExMDkzNzQyMTA3Yzc2MTIxN2NmYWQuLmQ0Y2RlOWM4OWNmMDVmZmRjNTU4MDA3MTNhY2E3
ZmY5MDFkMWJmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zv
cm1PcGVyYXRpb24uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+
IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVy
CiAgICAgaWYgKGJsZW5kVG9JZGVudGl0eSkgewogICAgICAgICBkb3VibGUgcCA9IGZsb2F0VmFs
dWVGb3JMZW5ndGgobV9wLCAxKTsKICAgICAgICAgcCA9IFdlYkNvcmU6OmJsZW5kKHAsIDEuMCwg
cHJvZ3Jlc3MpOyAvLyBGSVhNRTogdGhpcyBzZWVtcyB3cm9uZy4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNzAwCi0gICAgICAgIHJldHVybiBQZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aChjbGFtcFRvUG9zaXRpdmVJbnRlZ2VyKHAp
LCBGaXhlZCkpOworICAgICAgICByZXR1cm4gUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246
OmNyZWF0ZShMZW5ndGgoY2xhbXBUb1Bvc2l0aXZlSW50ZWdlcihwKSwgTGVuZ3RoVHlwZTo6Rml4
ZWQpKTsKICAgICB9CiAgICAgCiAgICAgY29uc3QgUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRp
b24qIGZyb21PcCA9IGRvd25jYXN0PFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uPihmcm9t
KTsKQEAgLTY0LDkgKzY0LDkgQEAgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gUGVyc3BlY3RpdmVU
cmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXIKIAogICAgIGlmIChk
ZWNvbXAucGVyc3BlY3RpdmVaKSB7CiAgICAgICAgIGRvdWJsZSB2YWwgPSAtMS4wIC8gZGVjb21w
LnBlcnNwZWN0aXZlWjsKLSAgICAgICAgcmV0dXJuIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0
aW9uOjpjcmVhdGUoTGVuZ3RoKGNsYW1wVG9Qb3NpdGl2ZUludGVnZXIodmFsKSwgRml4ZWQpKTsK
KyAgICAgICAgcmV0dXJuIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVu
Z3RoKGNsYW1wVG9Qb3NpdGl2ZUludGVnZXIodmFsKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAg
ICB9Ci0gICAgcmV0dXJuIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVu
Z3RoKDAsIEZpeGVkKSk7CisgICAgcmV0dXJuIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9u
OjpjcmVhdGUoTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiB9CiAKIHZvaWQgUGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
bGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKaW5kZXggYjVk
M2ViOTUwNWFiZDg2ODM2OTcyMGUzMWU0ZTk5NTZkNWQwZjVmYS4uOTY5NzNiZTM0MTJjZjcxMDg1
MzBkNDRlMmUyOWJiNjFmZTFiZjA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWY8VHJhbnNmb3JtT3Bl
cmF0aW9uPiBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9y
bU9wZXJhdAogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogCi0gICAgTGVuZ3RoIHplcm9MZW5ndGgoMCwgRml4ZWQpOworICAg
IExlbmd0aCB6ZXJvTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICBpZiAoYmxlbmRU
b0lkZW50aXR5KQogICAgICAgICByZXR1cm4gVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpj
cmVhdGUoV2ViQ29yZTo6YmxlbmQobV94LCB6ZXJvTGVuZ3RoLCBwcm9ncmVzcyksIFdlYkNvcmU6
OmJsZW5kKG1feSwgemVyb0xlbmd0aCwgcHJvZ3Jlc3MpLCBXZWJDb3JlOjpibGVuZChtX3osIHpl
cm9MZW5ndGgsIHByb2dyZXNzKSwgdHlwZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggMDExZTEwMWZiNTE5MGIyZjM1YzBiZjI2MTBk
NmMwMGY5MmJmMDgwZS4uZWQ3YzhmZGQ2OTcwNzFhOTk1Mzc2NmJlZGRiMmI1NTVhN2FhZDQ4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC0z
NSw3ICszNSw3IEBAIGNsYXNzIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiBmaW5hbCA6IHB1
YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgTGVuZ3RoJiB0eCwgY29uc3QgTGVu
Z3RoJiB0eSwgT3BlcmF0aW9uVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKHR4LCB0eSwgTGVuZ3RoKDAsIEZp
eGVkKSwgdHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb24odHgsIHR5LCBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCB0eXBl
KSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24+
IGNyZWF0ZShjb25zdCBMZW5ndGgmIHR4LCBjb25zdCBMZW5ndGgmIHR5LCBjb25zdCBMZW5ndGgm
IHR6LCBPcGVyYXRpb25UeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0KaW5kZXggZTlhZDhiYWRhZmJkMTE4NWIyZjYxNzk2M2M0MmU5NmMzMmNiMTYxOC4uNGEw
NDc2N2FlZTk5NTAwN2M1ODM5OGU4NzNlMGYwYWZlMTZiZjBiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMTU1LDkgKzE1NSw5IEBAIHN0YXRpYyBMZW5ndGhT
aXplIHNpemVGcm9tTlNDb250cm9sU2l6ZShOU0NvbnRyb2xTaXplIG5zQ29udHJvbFNpemUsIGNv
bnN0IExlbmd0CiAgICAgICAgIGNvbnRyb2xTaXplID0gSW50U2l6ZShjb250cm9sU2l6ZS53aWR0
aCgpICogem9vbUZhY3RvciwgY29udHJvbFNpemUuaGVpZ2h0KCkgKiB6b29tRmFjdG9yKTsKICAg
ICBMZW5ndGhTaXplIHJlc3VsdCA9IHpvb21lZFNpemU7CiAgICAgaWYgKHpvb21lZFNpemUud2lk
dGguaXNJbnRyaW5zaWNPckF1dG8oKSAmJiBjb250cm9sU2l6ZS53aWR0aCgpID4gMCkKLSAgICAg
ICAgcmVzdWx0LndpZHRoID0geyBjb250cm9sU2l6ZS53aWR0aCgpLCBGaXhlZCB9OworICAgICAg
ICByZXN1bHQud2lkdGggPSB7IGNvbnRyb2xTaXplLndpZHRoKCksIExlbmd0aFR5cGU6OkZpeGVk
IH07CiAgICAgaWYgKHpvb21lZFNpemUuaGVpZ2h0LmlzSW50cmluc2ljT3JBdXRvKCkgJiYgY29u
dHJvbFNpemUuaGVpZ2h0KCkgPiAwKQotICAgICAgICByZXN1bHQuaGVpZ2h0ID0geyBjb250cm9s
U2l6ZS5oZWlnaHQoKSwgRml4ZWQgfTsKKyAgICAgICAgcmVzdWx0LmhlaWdodCA9IHsgY29udHJv
bFNpemUuaGVpZ2h0KCksIExlbmd0aFR5cGU6OkZpeGVkIH07CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApAQCAtODM2LDExICs4MzYsMTEgQEAgTGVuZ3RoU2l6ZSBUaGVtZU1hYzo6bWluaW11bUNv
bnRyb2xTaXplKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb24KICNlbmRp
ZgogICAgIGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6CiAgICAgY2FzZSBCdXR0b25QYXJ0OgotICAg
ICAgICByZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgc3RhdGljX2Nhc3Q8aW50PigxNSAqIHpvb21G
YWN0b3IpLCBGaXhlZCB9IH07CisgICAgICAgIHJldHVybiB7IHsgMCwgTGVuZ3RoVHlwZTo6Rml4
ZWQgfSwgeyBzdGF0aWNfY2FzdDxpbnQ+KDE1ICogem9vbUZhY3RvciksIExlbmd0aFR5cGU6OkZp
eGVkIH0gfTsKICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6IHsKICAgICAgICAgYXV0byYg
YmFzZSA9IHN0ZXBwZXJTaXplcygpW05TQ29udHJvbFNpemVNaW5pXTsKLSAgICAgICAgcmV0dXJu
IHsgeyBzdGF0aWNfY2FzdDxpbnQ+KGJhc2Uud2lkdGgoKSAqIHpvb21GYWN0b3IpLCBGaXhlZCB9
LAotICAgICAgICAgICAgeyBzdGF0aWNfY2FzdDxpbnQ+KGJhc2UuaGVpZ2h0KCkgKiB6b29tRmFj
dG9yKSwgRml4ZWQgfSB9OworICAgICAgICByZXR1cm4geyB7IHN0YXRpY19jYXN0PGludD4oYmFz
ZS53aWR0aCgpICogem9vbUZhY3RvciksIExlbmd0aFR5cGU6OkZpeGVkIH0sCisgICAgICAgICAg
ICB7IHN0YXRpY19jYXN0PGludD4oYmFzZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpLCBMZW5ndGhU
eXBlOjpGaXhlZCB9IH07CiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBUaGVt
ZTo6bWluaW11bUNvbnRyb2xTaXplKHBhcnQsIGZvbnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAppbmRleCA4
MTQzYWQyOWNkMjBjZDE1OGViMzk5NjRlOWYyZTg5M2ZmNzYzMGZhLi45M2E3YjkyNDZhZTM2ZTFm
NmJiYTEzZDMwZWExODcwZmM1NmU3MDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QXV0b1RhYmxlTGF5b3V0LmNwcApAQCAtODgsMTEgKzg4LDExIEBAIHZvaWQgQXV0b1RhYmxlTGF5
b3V0OjpyZWNhbGNDb2x1bW4odW5zaWduZWQgZWZmQ29sKQogICAgICAgICAgICAgICAgICAgICBj
b25zdCBmbG9hdCBjQ2VsbE1heFdpZHRoID0gMzI3NjA7CiAgICAgICAgICAgICAgICAgICAgIExl
bmd0aCBjZWxsTG9naWNhbFdpZHRoID0gY2VsbC0+c3R5bGVPckNvbExvZ2ljYWxXaWR0aCgpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC52YWx1ZSgpID4gY0NlbGxN
YXhXaWR0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0VmFs
dWUoRml4ZWQsIGNDZWxsTWF4V2lkdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExv
Z2ljYWxXaWR0aC5zZXRWYWx1ZShMZW5ndGhUeXBlOjpGaXhlZCwgY0NlbGxNYXhXaWR0aCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzTmVnYXRpdmUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0VmFsdWUoRml4ZWQsIDAp
OworICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5zZXRWYWx1ZShMZW5n
dGhUeXBlOjpGaXhlZCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2VsbExvZ2lj
YWxXaWR0aC50eXBlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBGaXhlZDoKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXhlZDoKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGlnbm9yZSB3aWR0aD0wCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2Vs
bExvZ2ljYWxXaWR0aC5pc1Bvc2l0aXZlKCkgJiYgIWNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgu
aXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCBsb2dpY2FsV2lkdGggPSBjZWxsLT5hZGp1c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JC
b3hTaXppbmcoY2VsbExvZ2ljYWxXaWR0aCk7CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEF1
dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKHVuc2lnbmVkIGVmZkNvbCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gTmF2L0lFIHdlaXJkbmVzcwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKGxvZ2ljYWxXaWR0aCA+IGNvbHVtbkxheW91dC5sb2dpY2Fs
V2lkdGgudmFsdWUoKSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAo
KGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUoKSA9PSBsb2dpY2FsV2lkdGgpICYmICht
YXhDb250cmlidXRvciA9PSBjZWxsKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGguc2V0VmFsdWUoRml4ZWQsIGxvZ2ljYWxX
aWR0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQu
bG9naWNhbFdpZHRoLnNldFZhbHVlKExlbmd0aFR5cGU6OkZpeGVkLCBsb2dpY2FsV2lkdGgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRDb250cmlidXRvciA9IGNl
bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1
bW5MYXlvdXQubG9naWNhbFdpZHRoLnNldFZhbHVlKEZpeGVkLCBsb2dpY2FsV2lkdGgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnNl
dFZhbHVlKExlbmd0aFR5cGU6OkZpeGVkLCBsb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaXhlZENvbnRyaWJ1dG9yID0gY2VsbDsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBQZXJjZW50OgorICAg
ICAgICAgICAgICAgICAgICBjYXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2hhc1BlcmNlbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGNlbGxMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICghY29sdW1uTGF5b3V0LmxvZ2lj
YWxXaWR0aC5pc1BlcmNlbnQoKSB8fCBjZWxsTG9naWNhbFdpZHRoLnBlcmNlbnQoKSA+IGNvbHVt
bkxheW91dC5sb2dpY2FsV2lkdGgucGVyY2VudCgpKSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoID0gY2VsbExvZ2ljYWxXaWR0aDsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFJlbGF0
aXZlOgorICAgICAgICAgICAgICAgICAgICBjYXNlIExlbmd0aFR5cGU6OlJlbGF0aXZlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNh
c2UgYW5kIHdoZXRoZXIgaXQgbWFrZXMgc2Vuc2UgdG8gY29tcGFyZSB2YWx1ZXMKICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHNhbWUg
dHlwZS4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLnZhbHVl
KCkgPiBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnZhbHVlKCkpCkBAIC0zMjgsMTEgKzMyOCwx
MSBAQCBmbG9hdCBBdXRvVGFibGVMYXlvdXQ6OmNhbGNFZmZlY3RpdmVMb2dpY2FsV2lkdGgoKQog
ICAgICAgICB3aGlsZSAobGFzdENvbCA8IG5FZmZDb2xzICYmIHNwYW4gPiAwKSB7CiAgICAgICAg
ICAgICBMYXlvdXQmIGNvbHVtbkxheW91dCA9IG1fbGF5b3V0U3RydWN0W2xhc3RDb2xdOwogICAg
ICAgICAgICAgc3dpdGNoIChjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnR5cGUoKSkgewotICAg
ICAgICAgICAgY2FzZSBQZXJjZW50OgorICAgICAgICAgICAgY2FzZSBMZW5ndGhUeXBlOjpQZXJj
ZW50OgogICAgICAgICAgICAgICAgIHRvdGFsUGVyY2VudCArPSBjb2x1bW5MYXlvdXQubG9naWNh
bFdpZHRoLnBlcmNlbnQoKTsKICAgICAgICAgICAgICAgICBhbGxDb2xzQXJlRml4ZWQgPSBmYWxz
ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRml4ZWQ6CisgICAg
ICAgICAgICBjYXNlIExlbmd0aFR5cGU6OkZpeGVkOgogICAgICAgICAgICAgICAgIGlmIChjb2x1
bW5MYXlvdXQubG9naWNhbFdpZHRoLnZhbHVlKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAg
IGZpeGVkV2lkdGggKz0gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpOwogICAgICAg
ICAgICAgICAgICAgICBhbGxDb2xzQXJlUGVyY2VudCA9IGZhbHNlOwpAQCAtMzQxLDcgKzM0MSw3
IEBAIGZsb2F0IEF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0aCgpCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgICAgIGNhc2UgQXV0bzoKKyAgICAgICAgICAgIGNh
c2UgTGVuZ3RoVHlwZTo6QXV0bzoKICAgICAgICAgICAgICAgICBoYXZlQXV0byA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtMzky
LDcgKzM5Miw3IEBAIGZsb2F0IEF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxX
aWR0aCgpCiAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFdpZHRoIC09IG1fbGF5b3V0U3Ry
dWN0W3Bvc10uZWZmZWN0aXZlTWF4TG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcGVyY2VudE1pc3NpbmcgLT0gcGVyY2VudDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChwZXJjZW50ID4gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xheW91dFN0cnVj
dFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5zZXRWYWx1ZShQZXJjZW50LCBwZXJjZW50KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2
ZUxvZ2ljYWxXaWR0aC5zZXRWYWx1ZShMZW5ndGhUeXBlOjpQZXJjZW50LCBwZXJjZW50KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aCA9IExlbmd0aCgpOwogICAg
ICAgICAgICAgICAgICAgICB9CkBAIC01NDQsMTggKzU0NCwxOCBAQCB2b2lkIEF1dG9UYWJsZUxh
eW91dDo6bGF5b3V0KCkKICAgICAgICAgYXZhaWxhYmxlIC09IGNlbGxMb2dpY2FsV2lkdGg7CiAg
ICAgICAgIExlbmd0aCYgbG9naWNhbFdpZHRoID0gbV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZl
TG9naWNhbFdpZHRoOwogICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxXaWR0aC50eXBlKCkpIHsKLSAg
ICAgICAgY2FzZSBQZXJjZW50OgorICAgICAgICBjYXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6CiAg
ICAgICAgICAgICBoYXZlUGVyY2VudCA9IHRydWU7CiAgICAgICAgICAgICB0b3RhbFBlcmNlbnQg
Kz0gbG9naWNhbFdpZHRoLnBlcmNlbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFJlbGF0aXZlOgorICAgICAgICBjYXNlIExlbmd0aFR5cGU6OlJlbGF0aXZlOgogICAgICAg
ICAgICAgdG90YWxSZWxhdGl2ZSArPSBsb2dpY2FsV2lkdGgudmFsdWUoKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEZpeGVkOgorICAgICAgICBjYXNlIExlbmd0aFR5cGU6OkZp
eGVkOgogICAgICAgICAgICAgbnVtRml4ZWQrKzsKICAgICAgICAgICAgIHRvdGFsRml4ZWQgKz0g
bV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTWF4TG9naWNhbFdpZHRoOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQXV0bzoKKyAgICAgICAgY2FzZSBMZW5ndGhUeXBlOjpBdXRv
OgogICAgICAgICAgICAgaWYgKG1fbGF5b3V0U3RydWN0W2ldLmVtcHR5Q2VsbHNPbmx5KQogICAg
ICAgICAgICAgICAgIG51bUF1dG9FbXB0eUNlbGxzT25seSsrOwogICAgICAgICAgICAgZWxzZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKaW5kZXgg
MjNiMzhhOThlMWE0MzY1YzE2ZmQ5NDZhOTRmZjIzM2VjZGQ4N2FlZS4uOGJmZTM5OTM2ZGI3OTU4
NzQzNmM2ZTI2NjliNmZmNWQyZTAxOWJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaXhlZFRhYmxlTGF5b3V0LmNwcApAQCAtODMsNyArODMsNyBAQCBmbG9hdCBGaXhlZFRhYmxl
TGF5b3V0OjpjYWxjV2lkdGhBcnJheSgpCiAgICAgLy8gaXRlcmF0ZSBvdmVyIGFsbCA8Y29sPiBl
bGVtZW50cwogICAgIHVuc2lnbmVkIG5FZmZDb2xzID0gbV90YWJsZS0+bnVtRWZmQ29scygpOwog
ICAgIG1fd2lkdGgucmVzaXplKG5FZmZDb2xzKTsKLSAgICBtX3dpZHRoLmZpbGwoTGVuZ3RoKEF1
dG8pKTsKKyAgICBtX3dpZHRoLmZpbGwoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsKIAogICAg
IHVuc2lnbmVkIGN1cnJlbnRFZmZlY3RpdmVDb2x1bW4gPSAwOwogICAgIGZvciAoUmVuZGVyVGFi
bGVDb2wqIGNvbCA9IG1fdGFibGUtPmZpcnN0Q29sdW1uKCk7IGNvbDsgY29sID0gY29sLT5uZXh0
Q29sdW1uKCkpIHsKQEAgLTE0MywxNCArMTQzLDE0IEBAIGZsb2F0IEZpeGVkVGFibGVMYXlvdXQ6
OmNhbGNXaWR0aEFycmF5KCkKICAgICAgICAgLy8gUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdp
ZHRoSW5GcmFnbWVudFVzaW5nIHRvIGNvbXB1dGUgdGhlIHdpZHRoLgogICAgICAgICBpZiAobG9n
aWNhbFdpZHRoLmlzRml4ZWQoKSAmJiBsb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpKSB7CiAgICAg
ICAgICAgICBmaXhlZEJvcmRlckJveExvZ2ljYWxXaWR0aCA9IGNlbGwtPmFkanVzdEJvcmRlckJv
eExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhsb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgbG9n
aWNhbFdpZHRoLnNldFZhbHVlKEZpeGVkLCBmaXhlZEJvcmRlckJveExvZ2ljYWxXaWR0aCk7Cisg
ICAgICAgICAgICBsb2dpY2FsV2lkdGguc2V0VmFsdWUoTGVuZ3RoVHlwZTo6Rml4ZWQsIGZpeGVk
Qm9yZGVyQm94TG9naWNhbFdpZHRoKTsKICAgICAgICAgfQogCiAgICAgICAgIHVuc2lnbmVkIHVz
ZWRTcGFuID0gMDsKICAgICAgICAgd2hpbGUgKHVzZWRTcGFuIDwgc3BhbiAmJiBjdXJyZW50Q29s
dW1uIDwgbkVmZkNvbHMpIHsKICAgICAgICAgICAgIGZsb2F0IGVTcGFuID0gbV90YWJsZS0+c3Bh
bk9mRWZmQ29sKGN1cnJlbnRDb2x1bW4pOwogICAgICAgICAgICAgLy8gT25seSBzZXQgaWYgbm8g
Y29sIGVsZW1lbnQgaGFzIGFscmVhZHkgc2V0IGl0LgotICAgICAgICAgICAgaWYgKG1fd2lkdGhb
Y3VycmVudENvbHVtbl0uaXNBdXRvKCkgJiYgbG9naWNhbFdpZHRoLnR5cGUoKSAhPSBBdXRvKSB7
CisgICAgICAgICAgICBpZiAobV93aWR0aFtjdXJyZW50Q29sdW1uXS5pc0F1dG8oKSAmJiBsb2dp
Y2FsV2lkdGgudHlwZSgpICE9IExlbmd0aFR5cGU6OkF1dG8pIHsKICAgICAgICAgICAgICAgICBt
X3dpZHRoW2N1cnJlbnRDb2x1bW5dID0gbG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAgIG1f
d2lkdGhbY3VycmVudENvbHVtbl0gKj0gZVNwYW4gLyBzcGFuOwogICAgICAgICAgICAgICAgIHVz
ZWRXaWR0aCArPSBmaXhlZEJvcmRlckJveExvZ2ljYWxXaWR0aCAqIGVTcGFuIC8gc3BhbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0
aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRo
bS5jcHAKaW5kZXggZTlmOWY4OWY2YWVlYzAxZTUzZGIxOTliNDk5M2Y3ODFjNjVjNzhlYy4uMjA1
NTE3OGFhMzM3OTEyMzVmZDU0YTg2MjJlNzVmZjNkYmZkNjYzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKQEAgLTY0
MywyNSArNjQzLDI1IEBAIEdyaWRUcmFja1NpemUgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpj
YWxjdWxhdGVHcmlkVHJhY2tTaXplKEdyaWRUcmFja1NpemluZ0RpCiAgICAgQVNTRVJUKHdhc1Nl
dHVwKCkpOwogICAgIC8vIENvbGxhcHNlIGVtcHR5IGF1dG8gcmVwZWF0IHRyYWNrcyBpZiBhdXRv
LWZpdC4KICAgICBpZiAobV9ncmlkLmhhc0F1dG9SZXBlYXRFbXB0eVRyYWNrcyhkaXJlY3Rpb24p
ICYmIG1fZ3JpZC5pc0VtcHR5QXV0b1JlcGVhdFRyYWNrKGRpcmVjdGlvbiwgdHJhbnNsYXRlZElu
ZGV4KSkKLSAgICAgICAgcmV0dXJuIHsgTGVuZ3RoKEZpeGVkKSwgTGVuZ3RoVHJhY2tTaXppbmcg
fTsKKyAgICAgICAgcmV0dXJuIHsgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoVHJh
Y2tTaXppbmcgfTsKIAogICAgIGF1dG8mIHRyYWNrU2l6ZSA9IHJhd0dyaWRUcmFja1NpemUoZGly
ZWN0aW9uLCB0cmFuc2xhdGVkSW5kZXgpOwogICAgIGlmICh0cmFja1NpemUuaXNGaXRDb250ZW50
KCkpCi0gICAgICAgIHJldHVybiBpc1JlbGF0aXZlR3JpZExlbmd0aEFzQXV0byh0cmFja1NpemUu
Zml0Q29udGVudFRyYWNrQnJlYWR0aCgpLCBkaXJlY3Rpb24pID8gR3JpZFRyYWNrU2l6ZShMZW5n
dGgoQXV0byksIExlbmd0aChNYXhDb250ZW50KSkgOiB0cmFja1NpemU7CisgICAgICAgIHJldHVy
biBpc1JlbGF0aXZlR3JpZExlbmd0aEFzQXV0byh0cmFja1NpemUuZml0Q29udGVudFRyYWNrQnJl
YWR0aCgpLCBkaXJlY3Rpb24pID8gR3JpZFRyYWNrU2l6ZShMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0
byksIExlbmd0aChMZW5ndGhUeXBlOjpNYXhDb250ZW50KSkgOiB0cmFja1NpemU7CiAKICAgICBH
cmlkTGVuZ3RoIG1pblRyYWNrQnJlYWR0aCA9IHRyYWNrU2l6ZS5taW5UcmFja0JyZWFkdGgoKTsK
ICAgICBHcmlkTGVuZ3RoIG1heFRyYWNrQnJlYWR0aCA9IHRyYWNrU2l6ZS5tYXhUcmFja0JyZWFk
dGgoKTsKICAgICAvLyBJZiB0aGUgbG9naWNhbCB3aWR0aC9oZWlnaHQgb2YgdGhlIGdyaWQgY29u
dGFpbmVyIGlzIGluZGVmaW5pdGUsIHBlcmNlbnRhZ2UKICAgICAvLyB2YWx1ZXMgYXJlIHRyZWF0
ZWQgYXMgPGF1dG8+LgogICAgIGlmIChpc1JlbGF0aXZlR3JpZExlbmd0aEFzQXV0byh0cmFja1Np
emUubWluVHJhY2tCcmVhZHRoKCksIGRpcmVjdGlvbikpCi0gICAgICAgIG1pblRyYWNrQnJlYWR0
aCA9IExlbmd0aChBdXRvKTsKKyAgICAgICAgbWluVHJhY2tCcmVhZHRoID0gTGVuZ3RoKExlbmd0
aFR5cGU6OkF1dG8pOwogICAgIGlmIChpc1JlbGF0aXZlR3JpZExlbmd0aEFzQXV0byh0cmFja1Np
emUubWF4VHJhY2tCcmVhZHRoKCksIGRpcmVjdGlvbikpCi0gICAgICAgIG1heFRyYWNrQnJlYWR0
aCA9IExlbmd0aChBdXRvKTsKKyAgICAgICAgbWF4VHJhY2tCcmVhZHRoID0gTGVuZ3RoKExlbmd0
aFR5cGU6OkF1dG8pOwogCiAgICAgLy8gRmxleCBzaXplcyBhcmUgaW52YWxpZCBhcyBhIG1pbiBz
aXppbmcgZnVuY3Rpb24uIEhvd2V2ZXIgd2Ugc3RpbGwgY2FuIGhhdmUgYSBmbGV4aWJsZSB8bWlu
VHJhY2tCcmVhZHRofAogICAgIC8vIGlmIHRoZSB0cmFjayBzaXplIGlzIGp1c3QgYSBmbGV4IHNp
emUgKGUuZy4gIjFmciIpLCB0aGUgc3BlYyBzYXlzIHRoYXQgaW4gdGhpcyBjYXNlIGl0IGltcGxp
ZXMgYW4gYXV0b21hdGljIG1pbmltdW0uCiAgICAgaWYgKG1pblRyYWNrQnJlYWR0aC5pc0ZsZXgo
KSkKLSAgICAgICAgbWluVHJhY2tCcmVhZHRoID0gTGVuZ3RoKEF1dG8pOworICAgICAgICBtaW5U
cmFja0JyZWFkdGggPSBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byk7CiAKICAgICByZXR1cm4gR3Jp
ZFRyYWNrU2l6ZShtaW5UcmFja0JyZWFkdGgsIG1heFRyYWNrQnJlYWR0aCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDQzMTg0N2M0NjU3
ZmMwM2MyY2E3MTUzYTM3NjM5YTU4YTJjMTBhMTAuLmE1ZThkMTI1NzJmYjQ3N2QyYmU1MWE5ZTg3
N2M4YjA4ZGY0MjA3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCkBAIC0zODQzLDcgKzM4NDMsNyBAQCBzdGF0aWMgYm9vbCBpc05vbkJsb2Nrc09y
Tm9uRml4ZWRIZWlnaHRMaXN0SXRlbXMoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKICAg
ICBpZiAoIXJlbmRlcmVyLmlzUmVuZGVyQmxvY2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgaWYgKHJlbmRlcmVyLmlzTGlzdEl0ZW0oKSkKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnN0
eWxlKCkuaGVpZ2h0KCkudHlwZSgpICE9IEZpeGVkOworICAgICAgICByZXR1cm4gcmVuZGVyZXIu
c3R5bGUoKS5oZWlnaHQoKS50eXBlKCkgIT0gTGVuZ3RoVHlwZTo6Rml4ZWQ7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCkBAIC00MTQ3LDcgKzQxNDcsNyBAQCBSZW5kZXJPYmplY3QqIElubGluZU1p
bk1heEl0ZXJhdG9yOjpuZXh0KCkKIAogc3RhdGljIExheW91dFVuaXQgZ2V0QlBNV2lkdGgoTGF5
b3V0VW5pdCBjaGlsZFZhbHVlLCBMZW5ndGggY3NzVW5pdCkKIHsKLSAgICBpZiAoY3NzVW5pdC50
eXBlKCkgIT0gQXV0bykKKyAgICBpZiAoY3NzVW5pdC50eXBlKCkgIT0gTGVuZ3RoVHlwZTo6QXV0
bykKICAgICAgICAgcmV0dXJuIChjc3NVbml0LmlzRml4ZWQoKSA/IExheW91dFVuaXQoY3NzVW5p
dC52YWx1ZSgpKSA6IGNoaWxkVmFsdWUpOwogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAyOGMwODJlNDgwYWQwYWMyYTAyMDUwMTcxN2Ew
NThkZjczMDQ2NzhmLi42MTBiZDE5NThhNjFhNjQ1YTM3ZTkwYmY1MDQ5MzMwZGUyNzZhNTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNjY2LDcgKzY2Niw3IEBA
IExheW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsV2lkdGhJbkZyYWdtZW50QnlN
aW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsCiAgICAgaWYgKHN0eWxlVG9Vc2UuaGFzQXNwZWN0UmF0
aW8oKSAmJiBzdHlsZVRvVXNlLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpICYmIG1pbkxlbmd0aC5p
c0F1dG8oKSAmJiBzdHlsZVRvVXNlLm92ZXJmbG93SW5saW5lRGlyZWN0aW9uKCkgPT0gT3ZlcmZs
b3c6OlZpc2libGUpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGFjdHVhbGx5IHVzZWQgdGhl
IGFzcGVjdCByYXRpby4KICAgICAgICAgaWYgKHNob3VsZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9t
QXNwZWN0UmF0aW8oKSkKLSAgICAgICAgICAgIG1pbkxlbmd0aCA9IExlbmd0aChNaW5Db250ZW50
KTsKKyAgICAgICAgICAgIG1pbkxlbmd0aCA9IExlbmd0aChMZW5ndGhUeXBlOjpNaW5Db250ZW50
KTsKICAgICB9CiAgICAgcmV0dXJuIHN0ZDo6bWF4KGxvZ2ljYWxXaWR0aCwgY29tcHV0ZUxvZ2lj
YWxXaWR0aEluRnJhZ21lbnRVc2luZyhNaW5TaXplLCBtaW5MZW5ndGgsIGF2YWlsYWJsZVdpZHRo
LCBjYiwgZnJhZ21lbnQpKTsKIH0KQEAgLTY4MCw3ICs2ODAsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJveDo6Y29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbEhl
aWdodCwgTwogICAgIH0KICAgICBhdXRvIGxvZ2ljYWxNaW5IZWlnaHQgPSBzdHlsZVRvVXNlLmxv
Z2ljYWxNaW5IZWlnaHQoKTsKICAgICBpZiAobG9naWNhbE1pbkhlaWdodC5pc0F1dG8oKSAmJiBz
aG91bGRDb21wdXRlTG9naWNhbEhlaWdodEZyb21Bc3BlY3RSYXRpbygpICYmIGludHJpbnNpY0Nv
bnRlbnRIZWlnaHQgJiYgc3R5bGVUb1VzZS5vdmVyZmxvd0Jsb2NrRGlyZWN0aW9uKCkgPT0gT3Zl
cmZsb3c6OlZpc2libGUpCi0gICAgICAgIGxvZ2ljYWxNaW5IZWlnaHQgPSBMZW5ndGgoKmludHJp
bnNpY0NvbnRlbnRIZWlnaHQsIEZpeGVkKTsKKyAgICAgICAgbG9naWNhbE1pbkhlaWdodCA9IExl
bmd0aCgqaW50cmluc2ljQ29udGVudEhlaWdodCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgIGlm
IChPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZExvZ2ljYWxIZWlnaHQgPSBjb21wdXRlTG9n
aWNhbEhlaWdodFVzaW5nKE1pblNpemUsIGxvZ2ljYWxNaW5IZWlnaHQsIGludHJpbnNpY0NvbnRl
bnRIZWlnaHQpKQogICAgICAgICByZXR1cm4gc3RkOjptYXgobG9naWNhbEhlaWdodCwgY29tcHV0
ZWRMb2dpY2FsSGVpZ2h0LnZhbHVlKCkpOwogICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0OwpAQCAt
MTI5OCw4ICsxMjk4LDggQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmFkanVzdEJvcmRlckJveExv
Z2ljYWxXaWR0aEZvckJveFNpemluZyhjb25zdCBMZW5ndGgmIGxvZ2kKIAogTGF5b3V0VW5pdCBS
ZW5kZXJCb3g6OmFkanVzdEJvcmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhMYXlvdXRV
bml0IGNvbXB1dGVkTG9naWNhbFdpZHRoLCBMZW5ndGhUeXBlIG9yaWdpbmFsVHlwZSkgY29uc3QK
IHsKLSAgICBpZiAob3JpZ2luYWxUeXBlID09IENhbGN1bGF0ZWQpCi0gICAgICAgIHJldHVybiBh
ZGp1c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoeyBjb21wdXRlZExvZ2ljYWxX
aWR0aCwgRml4ZWQsIGZhbHNlIH0pOworICAgIGlmIChvcmlnaW5hbFR5cGUgPT0gTGVuZ3RoVHlw
ZTo6Q2FsY3VsYXRlZCkKKyAgICAgICAgcmV0dXJuIGFkanVzdEJvcmRlckJveExvZ2ljYWxXaWR0
aEZvckJveFNpemluZyh7IGNvbXB1dGVkTG9naWNhbFdpZHRoLCBMZW5ndGhUeXBlOjpGaXhlZCwg
ZmFsc2UgfSk7CiAgICAgcmV0dXJuIGFkanVzdEJvcmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNp
emluZyh7IGNvbXB1dGVkTG9naWNhbFdpZHRoLCBvcmlnaW5hbFR5cGUsIGZhbHNlIH0pOwogfQog
CkBAIC0xMzIxLDggKzEzMjEsOCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6YWRqdXN0Q29udGVu
dEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhjb25zdCBMZW5ndGgmIGxvZwogCiBMYXlvdXRV
bml0IFJlbmRlckJveDo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhM
YXlvdXRVbml0IGNvbXB1dGVkTG9naWNhbFdpZHRoLCBMZW5ndGhUeXBlIG9yaWdpbmFsVHlwZSkg
Y29uc3QKIHsKLSAgICBpZiAob3JpZ2luYWxUeXBlID09IENhbGN1bGF0ZWQpCi0gICAgICAgIHJl
dHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHsgY29tcHV0ZWRM
b2dpY2FsV2lkdGgsIEZpeGVkLCBmYWxzZSB9KTsKKyAgICBpZiAob3JpZ2luYWxUeXBlID09IExl
bmd0aFR5cGU6OkNhbGN1bGF0ZWQpCisgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9n
aWNhbFdpZHRoRm9yQm94U2l6aW5nKHsgY29tcHV0ZWRMb2dpY2FsV2lkdGgsIExlbmd0aFR5cGU6
OkZpeGVkLCBmYWxzZSB9KTsKICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0
aEZvckJveFNpemluZyh7IGNvbXB1dGVkTG9naWNhbFdpZHRoLCBvcmlnaW5hbFR5cGUsIGZhbHNl
IH0pOwogfQogCkBAIC0yNTI5LDcgKzI1MjksNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxXaWR0aEluRnJhZ21lbnQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdQog
ICAgIHRyZWF0QXNSZXBsYWNlZCA9IHRyZWF0QXNSZXBsYWNlZCAmJiAoIWlzR3JpZEl0ZW0oKSB8
fCAhaGFzU3RyZXRjaGVkTG9naWNhbFdpZHRoKCkpOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwotICAgIExlbmd0aCBsb2dpY2FsV2lkdGhMZW5ndGggPSB0
cmVhdEFzUmVwbGFjZWQgPyBMZW5ndGgoY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKCksIEZp
eGVkKSA6IHN0eWxlVG9Vc2UubG9naWNhbFdpZHRoKCk7CisgICAgTGVuZ3RoIGxvZ2ljYWxXaWR0
aExlbmd0aCA9IHRyZWF0QXNSZXBsYWNlZCA/IExlbmd0aChjb21wdXRlUmVwbGFjZWRMb2dpY2Fs
V2lkdGgoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpIDogc3R5bGVUb1VzZS5sb2dpY2FsV2lkdGgoKTsK
IAogICAgIFJlbmRlckJsb2NrJiBjYiA9ICpjb250YWluaW5nQmxvY2soKTsKICAgICBMYXlvdXRV
bml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGNvbnRh
aW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnRJbkZyYWdtZW50KGZyYWdtZW50KSk7CkBA
IC0yNjA1LDIwICsyNjA1LDIwIEBAIExheW91dFVuaXQgUmVuZGVyQm94OjpmaWxsQXZhaWxhYmxl
TWVhc3VyZShMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgTGF5CiAKIExheW91dFVu
aXQgUmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxv
Z2ljYWxXaWR0aExlbmd0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIExheW91
dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3QKIHsKLSAgICBpZiAobG9naWNhbFdpZHRoTGVu
Z3RoLnR5cGUoKSA9PSBGaWxsQXZhaWxhYmxlKQorICAgIGlmIChsb2dpY2FsV2lkdGhMZW5ndGgu
aXNGaWxsQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om1heChib3JkZXJBbmRQYWRk
aW5nLCBmaWxsQXZhaWxhYmxlTWVhc3VyZShhdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsKIAogICAg
IExheW91dFVuaXQgbWluTG9naWNhbFdpZHRoOwogICAgIExheW91dFVuaXQgbWF4TG9naWNhbFdp
ZHRoOwogICAgIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKG1pbkxvZ2ljYWxXaWR0aCwg
bWF4TG9naWNhbFdpZHRoKTsKIAotICAgIGlmIChsb2dpY2FsV2lkdGhMZW5ndGgudHlwZSgpID09
IE1pbkNvbnRlbnQpCisgICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0aC5pc01pbkNvbnRlbnQoKSkK
ICAgICAgICAgcmV0dXJuIG1pbkxvZ2ljYWxXaWR0aCArIGJvcmRlckFuZFBhZGRpbmc7CiAKLSAg
ICBpZiAobG9naWNhbFdpZHRoTGVuZ3RoLnR5cGUoKSA9PSBNYXhDb250ZW50KQorICAgIGlmIChs
b2dpY2FsV2lkdGhMZW5ndGguaXNNYXhDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBtYXhMb2dp
Y2FsV2lkdGggKyBib3JkZXJBbmRQYWRkaW5nOwogCi0gICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0
aC50eXBlKCkgPT0gRml0Q29udGVudCkgeworICAgIGlmIChsb2dpY2FsV2lkdGhMZW5ndGguaXNG
aXRDb250ZW50KCkpIHsKICAgICAgICAgbWluTG9naWNhbFdpZHRoICs9IGJvcmRlckFuZFBhZGRp
bmc7CiAgICAgICAgIG1heExvZ2ljYWxXaWR0aCArPSBib3JkZXJBbmRQYWRkaW5nOwogICAgICAg
ICByZXR1cm4gc3RkOjptYXgobWluTG9naWNhbFdpZHRoLCBzdGQ6Om1pbihtYXhMb2dpY2FsV2lk
dGgsIGZpbGxBdmFpbGFibGVNZWFzdXJlKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpKTsKQEAgLTI3
MDcsNyArMjcwNyw3IEBAIGJvb2wgUmVuZGVyQm94OjpzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29u
dGVudChTaXplVHlwZSB3aWR0aFR5cGUpIGNvbnN0CiAgICAgLy8gVGhpcyBjb2RlIG1heSBsb29r
IGEgYml0IHN0cmFuZ2UuICBCYXNpY2FsbHkgd2lkdGg6aW50cmluc2ljIHNob3VsZCBjbGFtcCB0
aGUgc2l6ZSB3aGVuIHRlc3RpbmcgYm90aAogICAgIC8vIG1pbi13aWR0aCBhbmQgd2lkdGguICBt
YXgtd2lkdGggaXMgb25seSBjbGFtcGVkIGlmIGl0IGlzIGFsc28gaW50cmluc2ljLgogICAgIExl
bmd0aCBsb2dpY2FsV2lkdGggPSAod2lkdGhUeXBlID09IE1heFNpemUpID8gc3R5bGUoKS5sb2dp
Y2FsTWF4V2lkdGgoKSA6IHN0eWxlKCkubG9naWNhbFdpZHRoKCk7Ci0gICAgaWYgKGxvZ2ljYWxX
aWR0aC50eXBlKCkgPT0gSW50cmluc2ljKQorICAgIGlmIChsb2dpY2FsV2lkdGgudHlwZSgpID09
IExlbmd0aFR5cGU6OkludHJpbnNpYykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBD
aGlsZHJlbiBvZiBhIGhvcml6b250YWwgbWFycXVlZSBkbyBub3QgZmlsbCB0aGUgY29udGFpbmVy
IGJ5IGRlZmF1bHQuCkBAIC0yNzQ5LDcgKzI3NDksNyBAQCBib29sIFJlbmRlckJveDo6c2l6ZXNM
b2dpY2FsV2lkdGhUb0ZpdENvbnRlbnQoU2l6ZVR5cGUgd2lkdGhUeXBlKSBjb25zdAogICAgIC8v
IHN0cmV0Y2hpbmcgY29sdW1uIGZsZXhib3guCiAgICAgLy8gRklYTUU6IFRoaW5rIGFib3V0IGJs
b2NrLWZsb3cgaGVyZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDY0NzMKLSAgICBpZiAobG9naWNhbFdpZHRoLnR5cGUoKSA9PSBBdXRvICYmICFpc1N0
cmV0Y2hpbmdDb2x1bW5GbGV4SXRlbSgpICYmIGVsZW1lbnQoKSAmJiAoaXM8SFRNTElucHV0RWxl
bWVudD4oKmVsZW1lbnQoKSkgfHwgaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KCplbGVtZW50KCkpIHx8
IGlzPEhUTUxCdXR0b25FbGVtZW50PigqZWxlbWVudCgpKSB8fCBpczxIVE1MVGV4dEFyZWFFbGVt
ZW50PigqZWxlbWVudCgpKSB8fCBpczxIVE1MTGVnZW5kRWxlbWVudD4oKmVsZW1lbnQoKSkpKQor
ICAgIGlmIChsb2dpY2FsV2lkdGguaXNBdXRvKCkgJiYgIWlzU3RyZXRjaGluZ0NvbHVtbkZsZXhJ
dGVtKCkgJiYgZWxlbWVudCgpICYmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCgpKSB8
fCBpczxIVE1MU2VsZWN0RWxlbWVudD4oKmVsZW1lbnQoKSkgfHwgaXM8SFRNTEJ1dHRvbkVsZW1l
bnQ+KCplbGVtZW50KCkpIHx8IGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCplbGVtZW50KCkpIHx8
IGlzPEhUTUxMZWdlbmRFbGVtZW50PigqZWxlbWVudCgpKSkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0gY29udGFpbmluZ0Jsb2Nr
KCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCkBAIC0yNzc3LDkgKzI3NzcsOSBAQCB2b2lk
IFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoY29uc3QgUmVuZGVyQmxv
Y2smIGNvbnRhaW5pbmdCbG9jawogICAgICAgICAvLyB3aWxsIHRoaW5rIHdlJ3JlIHdpZGVyIHRo
YW4gd2UgYWN0dWFsbHkgYXJlIGFuZCBjYWxjdWxhdGUgbGluZSBzaXplcwogICAgICAgICAvLyB3
cm9uZy4gU2VlIGFsc28gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLWZsZXhib3gvI2F1dG8t
bWFyZ2lucwogICAgICAgICBpZiAobWFyZ2luU3RhcnRMZW5ndGguaXNBdXRvKCkpCi0gICAgICAg
ICAgICBtYXJnaW5TdGFydExlbmd0aCA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgICAgICBt
YXJnaW5TdGFydExlbmd0aCA9IExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgICAg
IGlmIChtYXJnaW5FbmRMZW5ndGguaXNBdXRvKCkpCi0gICAgICAgICAgICBtYXJnaW5FbmRMZW5n
dGggPSBMZW5ndGgoMCwgRml4ZWQpOworICAgICAgICAgICAgbWFyZ2luRW5kTGVuZ3RoID0gTGVu
Z3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICB9CiAKICAgICAvLyBDYXNlIE9uZTogVGhl
IG9iamVjdCBpcyBiZWluZyBjZW50ZXJlZCBpbiB0aGUgY29udGFpbmluZyBibG9jaydzIGF2YWls
YWJsZSBsb2dpY2FsIHdpZHRoLgpAQCAtMjkyNCw5ICsyOTI0LDkgQEAgUmVuZGVyQm94OjpMb2dp
Y2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChM
YXlvdXRVbmkKICAgICAgICAgLy8gRklYTUU6IEFjY291bnQgZm9yIGJsb2NrLWZsb3cgaW4gZmxl
eGlibGUgYm94ZXMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NjQxOAogICAgICAgICBpZiAoaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSAm
JiAocGFyZW50KCktPmlzRmxleGlibGVCb3hJbmNsdWRpbmdEZXByZWNhdGVkKCkgfHwgcGFyZW50
KCktPmlzUmVuZGVyR3JpZCgpKSkgewotICAgICAgICAgICAgaCA9IExlbmd0aChvdmVycmlkaW5n
TG9naWNhbEhlaWdodCgpLCBGaXhlZCk7CisgICAgICAgICAgICBoID0gTGVuZ3RoKG92ZXJyaWRp
bmdMb2dpY2FsSGVpZ2h0KCksIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICAgICAgfSBlbHNlIGlm
ICh0cmVhdEFzUmVwbGFjZWQpCi0gICAgICAgICAgICBoID0gTGVuZ3RoKGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxIZWlnaHQoKSArIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCksIEZpeGVk
KTsKKyAgICAgICAgICAgIGggPSBMZW5ndGgoY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgp
ICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGggPSBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKTsK
ICAgICAgICAgICAgIGNoZWNrTWluTWF4SGVpZ2h0ID0gdHJ1ZTsKQEAgLTI5MzcsNyArMjkzNyw3
IEBAIFJlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJlbmRlckJveDo6Y29t
cHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQxOAogICAgICAgICBpZiAoaC5pc0F1dG8oKSAmJiBp
czxSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g+KCpwYXJlbnQoKSkgJiYgcGFyZW50KCktPnN0
eWxlKCkuYm94T3JpZW50KCkgPT0gQm94T3JpZW50OjpIb3Jpem9udGFsCiAgICAgICAgICAgICAg
ICAgJiYgZG93bmNhc3Q8UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94PigqcGFyZW50KCkpLmlz
U3RyZXRjaGluZ0NoaWxkcmVuKCkpIHsKLSAgICAgICAgICAgIGggPSBMZW5ndGgocGFyZW50Qm94
KCktPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgLSBtYXJnaW5CZWZvcmUoKSAtIG1hcmdpbkFmdGVy
KCksIEZpeGVkKTsKKyAgICAgICAgICAgIGggPSBMZW5ndGgocGFyZW50Qm94KCktPmNvbnRlbnRM
b2dpY2FsSGVpZ2h0KCkgLSBtYXJnaW5CZWZvcmUoKSAtIG1hcmdpbkFmdGVyKCksIExlbmd0aFR5
cGU6OkZpeGVkKTsKICAgICAgICAgICAgIGNoZWNrTWluTWF4SGVpZ2h0ID0gZmFsc2U7CiAgICAg
ICAgIH0KIApAQCAtMzE2OCwzNyArMzE2OCwzNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29t
cHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUgd2lkdGhUeXBlLCBMZW5ndAog
ICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZygw
LCBsb2dpY2FsV2lkdGgudHlwZSgpKTsKIAogICAgIHN3aXRjaCAobG9naWNhbFdpZHRoLnR5cGUo
KSkgewotICAgICAgICBjYXNlIEZpeGVkOgotICAgICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRl
bnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcobG9naWNhbFdpZHRoKTsKLSAgICAgICAgY2Fz
ZSBNaW5Db250ZW50OgotICAgICAgICBjYXNlIE1heENvbnRlbnQ6IHsKLSAgICAgICAgICAgIC8v
IE1pbkNvbnRlbnQvTWF4Q29udGVudCBkb24ndCBuZWVkIHRoZSBhdmFpbGFibGVMb2dpY2FsV2lk
dGggYXJndW1lbnQuCi0gICAgICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aDsKLSAgICAgICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmco
bG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGJvcmRlckFuZFBhZGRpbmdMb2dp
Y2FsV2lkdGgoKSkgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBGaXRDb250ZW50OgotICAgICAgICBjYXNlIEZpbGxBdmFpbGFibGU6Ci0g
ICAgICAgIGNhc2UgUGVyY2VudDogCi0gICAgICAgIGNhc2UgQ2FsY3VsYXRlZDogewotICAgICAg
ICAgICAgLy8gRklYTUU6IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSBp
cyB3cm9uZyBpZiB0aGUgcmVwbGFjZWQgZWxlbWVudCdzIGJsb2NrLWZsb3cgaXMgcGVycGVuZGlj
dWxhciB0byB0aGUKLSAgICAgICAgICAgIC8vIGNvbnRhaW5pbmcgYmxvY2sncyBibG9jay1mbG93
LgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ2NDk2Ci0gICAgICAgICAgICBjb25zdCBMYXlvdXRVbml0IGN3ID0gaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgPyBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKGRvd25j
YXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PigqY29udGFpbmVyKCkpKSA6IGNvbnRhaW5pbmdCbG9j
a0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKTsKLSAgICAgICAgICAgIExlbmd0aCBjb250YWluZXJM
b2dpY2FsV2lkdGggPSBjb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS5sb2dpY2FsV2lkdGgoKTsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgY2FzZXMgd2hlbiBjb250YWluaW5nIGJsb2Nr
IHdpZHRoIGlzIGNhbGN1bGF0ZWQgb3Igdmlld3BvcnQgcGVyY2VudC4KLSAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTA3MQotICAgICAgICAg
ICAgaWYgKGxvZ2ljYWxXaWR0aC5pc0ludHJpbnNpYygpKQotICAgICAgICAgICAgICAgIHJldHVy
biBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcobG9naWNhbFdpZHRoLCBjdywgYm9y
ZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpKSAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lk
dGgoKTsKLSAgICAgICAgICAgIGlmIChjdyA+IDAgfHwgKCFjdyAmJiAoY29udGFpbmVyTG9naWNh
bFdpZHRoLmlzRml4ZWQoKSB8fCBjb250YWluZXJMb2dpY2FsV2lkdGguaXNQZXJjZW50T3JDYWxj
dWxhdGVkKCkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2lj
YWxXaWR0aEZvckJveFNpemluZyhtaW5pbXVtVmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoLCBj
dyksIGxvZ2ljYWxXaWR0aC50eXBlKCkpOwotICAgICAgICAgICAgcmV0dXJuIDBfbHU7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAgICAgIGNhc2UgTWluSW50cmluc2lj
OgotICAgICAgICBjYXNlIEF1dG86Ci0gICAgICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgICAgIGNh
c2UgVW5kZWZpbmVkOgotICAgICAgICAgICAgcmV0dXJuIGludHJpbnNpY0xvZ2ljYWxXaWR0aCgp
OworICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CisgICAgICAgIHJldHVybiBhZGp1c3RDb250
ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKGxvZ2ljYWxXaWR0aCk7CisgICAgY2FzZSBM
ZW5ndGhUeXBlOjpNaW5Db250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWF4Q29udGVudDog
eworICAgICAgICAvLyBNaW5Db250ZW50L01heENvbnRlbnQgZG9uJ3QgbmVlZCB0aGUgYXZhaWxh
YmxlTG9naWNhbFdpZHRoIGFyZ3VtZW50LgorICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aDsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhV
c2luZyhsb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgYm9yZGVyQW5kUGFkZGlu
Z0xvZ2ljYWxXaWR0aCgpKSAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKKyAgICB9
CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXRDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6
RmlsbEF2YWlsYWJsZToKKyAgICBjYXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6CisgICAgY2FzZSBM
ZW5ndGhUeXBlOjpDYWxjdWxhdGVkOiB7CisgICAgICAgIC8vIEZJWE1FOiBjb250YWluaW5nQmxv
Y2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkgaXMgd3JvbmcgaWYgdGhlIHJlcGxhY2VkIGVsZW1l
bnQncyBibG9jay1mbG93IGlzIHBlcnBlbmRpY3VsYXIgdG8gdGhlCisgICAgICAgIC8vIGNvbnRh
aW5pbmcgYmxvY2sncyBibG9jay1mbG93LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTYKKyAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBjdyA9
IGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpID8gY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9y
UG9zaXRpb25lZChkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKmNvbnRhaW5lcigpKSkg
OiBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCk7CisgICAgICAgIExlbmd0
aCBjb250YWluZXJMb2dpY2FsV2lkdGggPSBjb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS5sb2dp
Y2FsV2lkdGgoKTsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBjYXNlcyB3aGVuIGNvbnRhaW5p
bmcgYmxvY2sgd2lkdGggaXMgY2FsY3VsYXRlZCBvciB2aWV3cG9ydCBwZXJjZW50LgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEwNzEKKyAgICAg
ICAgaWYgKGxvZ2ljYWxXaWR0aC5pc0ludHJpbnNpYygpKQorICAgICAgICAgICAgcmV0dXJuIGNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyhsb2dpY2FsV2lkdGgsIGN3LCBib3JkZXJB
bmRQYWRkaW5nTG9naWNhbFdpZHRoKCkpIC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgp
OworICAgICAgICBpZiAoY3cgPiAwIHx8ICghY3cgJiYgKGNvbnRhaW5lckxvZ2ljYWxXaWR0aC5p
c0ZpeGVkKCkgfHwgY29udGFpbmVyTG9naWNhbFdpZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgp
KSkpCisgICAgICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJv
eFNpemluZyhtaW5pbXVtVmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoLCBjdyksIGxvZ2ljYWxX
aWR0aC50eXBlKCkpOworICAgICAgICByZXR1cm4gMF9sdTsKKyAgICB9CisgICAgY2FzZSBMZW5n
dGhUeXBlOjpJbnRyaW5zaWM6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5JbnRyaW5zaWM6Cisg
ICAgY2FzZSBMZW5ndGhUeXBlOjpBdXRvOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6UmVsYXRpdmU6
CisgICAgY2FzZSBMZW5ndGhUeXBlOjpVbmRlZmluZWQ6CisgICAgICAgIHJldHVybiBpbnRyaW5z
aWNMb2dpY2FsV2lkdGgoKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTMyNzksNzcgKzMyNzksNzYgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRUeXBlLCBMZW4KICAgICAgICAgcmV0
dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKE9wdGlvbmFsPExh
eW91dFVuaXQ+KDApKTsKIAogICAgIHN3aXRjaCAobG9naWNhbEhlaWdodC50eXBlKCkpIHsKLSAg
ICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9n
aWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0KGxvZ2ljYWxIZWlnaHQudmFsdWUoKSkp
OwotICAgICAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgIGNhc2UgQ2FsY3VsYXRlZDoKLSAgICAg
ICAgewotICAgICAgICAgICAgYXV0byogY29udGFpbmVyID0gaXNPdXRPZkZsb3dQb3NpdGlvbmVk
KCkgPyB0aGlzLT5jb250YWluZXIoKSA6IGNvbnRhaW5pbmdCbG9jaygpOwotICAgICAgICAgICAg
d2hpbGUgKGNvbnRhaW5lciAmJiBjb250YWluZXItPmlzQW5vbnltb3VzKCkpIHsKLSAgICAgICAg
ICAgICAgICAvLyBTdG9wIGF0IHJlbmRlcmluZyBjb250ZXh0IHJvb3QuCi0gICAgICAgICAgICAg
ICAgaWYgKGlzPFJlbmRlclZpZXc+KCpjb250YWluZXIpKQotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdC
bG9jaygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYm9vbCBoYXNQZXJwZW5kaWN1bGFy
Q29udGFpbmluZ0Jsb2NrID0gY29udGFpbmVyLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9
IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7Ci0gICAgICAgICAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBzdHJldGNoZWRIZWlnaHQ7Ci0gICAgICAgICAgICBpZiAoaXM8UmVuZGVyQmxvY2s+KGNv
bnRhaW5lcikpIHsKLSAgICAgICAgICAgICAgICBhdXRvKiBibG9jayA9IGRvd25jYXN0PFJlbmRl
ckJsb2NrPihjb250YWluZXIpOwotICAgICAgICAgICAgICAgIGJsb2NrLT5hZGRQZXJjZW50SGVp
Z2h0RGVzY2VuZGFudCgqY29uc3RfY2FzdDxSZW5kZXJCb3gqPih0aGlzKSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGJsb2NrLT5pc0ZsZXhJdGVtKCkpCi0gICAgICAgICAgICAgICAgICAgIHN0cmV0
Y2hlZEhlaWdodCA9IGRvd25jYXN0PFJlbmRlckZsZXhpYmxlQm94PihibG9jay0+cGFyZW50KCkp
LT5jaGlsZExvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlUmVzb2x1dGlvbigqYmxvY2spOwotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGJsb2NrLT5pc0dyaWRJdGVtKCkgJiYgYmxvY2stPmhhc092
ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgJiYgIWhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxv
Y2spCi0gICAgICAgICAgICAgICAgICAgIHN0cmV0Y2hlZEhlaWdodCA9IGJsb2NrLT5vdmVycmlk
aW5nQ29udGVudExvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgIH0KKyAgICBjYXNlIExlbmd0
aFR5cGU6OkZpeGVkOgorICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWln
aHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdChsb2dpY2FsSGVpZ2h0LnZhbHVlKCkpKTsKKyAgICBj
YXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVk
OiB7CisgICAgICAgIGF1dG8qIGNvbnRhaW5lciA9IGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpID8g
dGhpcy0+Y29udGFpbmVyKCkgOiBjb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgd2hpbGUgKGNv
bnRhaW5lciAmJiBjb250YWluZXItPmlzQW5vbnltb3VzKCkpIHsKKyAgICAgICAgICAgIC8vIFN0
b3AgYXQgcmVuZGVyaW5nIGNvbnRleHQgcm9vdC4KKyAgICAgICAgICAgIGlmIChpczxSZW5kZXJW
aWV3PigqY29udGFpbmVyKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNv
bnRhaW5lciA9IGNvbnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIH0KKyAgICAg
ICAgYm9vbCBoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrID0gY29udGFpbmVyLT5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpICE9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CisgICAg
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHN0cmV0Y2hlZEhlaWdodDsKKyAgICAgICAgaWYgKGlz
PFJlbmRlckJsb2NrPihjb250YWluZXIpKSB7CisgICAgICAgICAgICBhdXRvKiBibG9jayA9IGRv
d25jYXN0PFJlbmRlckJsb2NrPihjb250YWluZXIpOworICAgICAgICAgICAgYmxvY2stPmFkZFBl
cmNlbnRIZWlnaHREZXNjZW5kYW50KCpjb25zdF9jYXN0PFJlbmRlckJveCo+KHRoaXMpKTsKKyAg
ICAgICAgICAgIGlmIChibG9jay0+aXNGbGV4SXRlbSgpKQorICAgICAgICAgICAgICAgIHN0cmV0
Y2hlZEhlaWdodCA9IGRvd25jYXN0PFJlbmRlckZsZXhpYmxlQm94PihibG9jay0+cGFyZW50KCkp
LT5jaGlsZExvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlUmVzb2x1dGlvbigqYmxvY2spOworICAg
ICAgICAgICAgZWxzZSBpZiAoYmxvY2stPmlzR3JpZEl0ZW0oKSAmJiBibG9jay0+aGFzT3ZlcnJp
ZGluZ0xvZ2ljYWxIZWlnaHQoKSAmJiAhaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jaykK
KyAgICAgICAgICAgICAgICBzdHJldGNoZWRIZWlnaHQgPSBibG9jay0+b3ZlcnJpZGluZ0NvbnRl
bnRMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgY2FsY3VsYXRpb24gaXMgbm90IHBhdGNoZWQgZm9yIGJsb2NrLWZsb3cgeWV0LgotICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NTAwCi0g
ICAgICAgICAgICBpZiAoY29udGFpbmVyLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKQotICAgICAg
ICAgICAgICAgICYmIGNvbnRhaW5lci0+c3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKQotICAgICAg
ICAgICAgICAgICYmICEoY29udGFpbmVyLT5zdHlsZSgpLnRvcCgpLmlzQXV0bygpIHx8IGNvbnRh
aW5lci0+c3R5bGUoKS5ib3R0b20oKS5pc0F1dG8oKSkpIHsKLSAgICAgICAgICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250YWluZXItPmlzUmVuZGVyQmxvY2soKSk7
Ci0gICAgICAgICAgICAgICAgYXV0byYgYmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKmNv
bnRhaW5lcik7Ci0gICAgICAgICAgICAgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IGJsb2NrLmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KGJsb2NrLmxvZ2ljYWxIZWlnaHQoKSwgMCk7Ci0gICAgICAgICAg
ICAgICAgTGF5b3V0VW5pdCBuZXdDb250ZW50SGVpZ2h0ID0gY29tcHV0ZWRWYWx1ZXMubV9leHRl
bnQgLSBibG9jay5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpIC0gYmxvY2suc2Nyb2xs
YmFyTG9naWNhbEhlaWdodCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50
Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0
LCBuZXdDb250ZW50SGVpZ2h0KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KCkgaXMgd3JvbmcgaWYgdGhl
IHJlcGxhY2VkIGVsZW1lbnQncyBibG9jay1mbG93IGlzIHBlcnBlbmRpY3VsYXIgdG8gdGhlCi0g
ICAgICAgICAgICAvLyBjb250YWluaW5nIGJsb2NrJ3MgYmxvY2stZmxvdy4KLSAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQ5NgotICAgICAg
ICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVIZWlnaHQ7Ci0gICAgICAgICAgICBpZiAoaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gY29u
dGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvclBvc2l0aW9uZWQoZG93bmNhc3Q8UmVuZGVyQm94
TW9kZWxPYmplY3Q+KCpjb250YWluZXIpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN0cmV0Y2hl
ZEhlaWdodCkKLSAgICAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBzdHJldGNoZWRIZWln
aHQudmFsdWUoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGF2YWlsYWJs
ZUhlaWdodCA9IGhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2sgPyBjb250YWluaW5nQmxv
Y2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkgOiBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0
Rm9yQ29udGVudChJbmNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyk7Ci0gICAgICAgICAgICAgICAg
Ly8gSXQgaXMgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgYm9yZGVyLWJveCB0byBtYXRjaCBXaW5JRSdz
IGJyb2tlbgotICAgICAgICAgICAgICAgIC8vIGJveCBtb2RlbC4gIFRoaXMgaXMgZXNzZW50aWFs
IGZvciBzaXppbmcgaW5zaWRlCi0gICAgICAgICAgICAgICAgLy8gdGFibGUgY2VsbHMgdXNpbmcg
cGVyY2VudGFnZSBoZWlnaHRzLgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRz
IHRvIGJlIG1hZGUgYmxvY2stZmxvdy1hd2FyZS4gIElmIHRoZSBjZWxsIGFuZCBpbWFnZSBhcmUg
cGVycGVuZGljdWxhciBibG9jay1mbG93cywgdGhpcyBpc24ndCByaWdodC4KLSAgICAgICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY5OTcKLSAg
ICAgICAgICAgICAgICB3aGlsZSAoY29udGFpbmVyICYmICFpczxSZW5kZXJWaWV3PigqY29udGFp
bmVyKQotICAgICAgICAgICAgICAgICAgICAmJiAoY29udGFpbmVyLT5zdHlsZSgpLmxvZ2ljYWxI
ZWlnaHQoKS5pc0F1dG8oKSB8fCBjb250YWluZXItPnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlz
UGVyY2VudE9yQ2FsY3VsYXRlZCgpKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFp
bmVyLT5pc1RhYmxlQ2VsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBs
ZXQgdGFibGUgY2VsbHMgc3F1ZWV6ZSBwZXJjZW50LWhlaWdodCByZXBsYWNlZCBlbGVtZW50cwot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MzU5PgotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0
ID0gc3RkOjptYXgoYXZhaWxhYmxlSGVpZ2h0LCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxIZWln
aHQsIGF2YWlsYWJsZUhlaWdodCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRl
ckJsb2NrPigqY29udGFpbmVyKS5hZGRQZXJjZW50SGVpZ2h0RGVzY2VuZGFudChjb25zdF9jYXN0
PFJlbmRlckJveCY+KCp0aGlzKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9IGNv
bnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhbGN1
bGF0aW9uIGlzIG5vdCBwYXRjaGVkIGZvciBibG9jay1mbG93IHlldC4KKyAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NTAwCisgICAgICAgIGlmIChj
b250YWluZXItPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpCisgICAgICAgICAgICAmJiBjb250YWlu
ZXItPnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkKKyAgICAgICAgICAgICYmICEoY29udGFpbmVy
LT5zdHlsZSgpLnRvcCgpLmlzQXV0bygpIHx8IGNvbnRhaW5lci0+c3R5bGUoKS5ib3R0b20oKS5p
c0F1dG8oKSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oY29udGFpbmVyLT5pc1JlbmRlckJsb2NrKCkpOworICAgICAgICAgICAgYXV0byYg
YmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKmNvbnRhaW5lcik7CisgICAgICAgICAgICBh
dXRvIGNvbXB1dGVkVmFsdWVzID0gYmxvY2suY29tcHV0ZUxvZ2ljYWxIZWlnaHQoYmxvY2subG9n
aWNhbEhlaWdodCgpLCAwKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgbmV3Q29udGVudEhlaWdo
dCA9IGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50IC0gYmxvY2suYm9yZGVyQW5kUGFkZGluZ0xvZ2lj
YWxIZWlnaHQoKSAtIGJsb2NrLnNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgICAg
IHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZv
ckxlbmd0aChsb2dpY2FsSGVpZ2h0LCBuZXdDb250ZW50SGVpZ2h0KSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIC8vIEZJWE1FOiBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KCkgaXMgd3Jv
bmcgaWYgdGhlIHJlcGxhY2VkIGVsZW1lbnQncyBibG9jay1mbG93IGlzIHBlcnBlbmRpY3VsYXIg
dG8gdGhlCisgICAgICAgIC8vIGNvbnRhaW5pbmcgYmxvY2sncyBibG9jay1mbG93LgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTYKKyAgICAg
ICAgTGF5b3V0VW5pdCBhdmFpbGFibGVIZWlnaHQ7CisgICAgICAgIGlmIChpc091dE9mRmxvd1Bv
c2l0aW9uZWQoKSkKKyAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGNvbnRhaW5pbmdCbG9j
a0xvZ2ljYWxIZWlnaHRGb3JQb3NpdGlvbmVkKGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0
PigqY29udGFpbmVyKSk7CisgICAgICAgIGVsc2UgaWYgKHN0cmV0Y2hlZEhlaWdodCkKKyAgICAg
ICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHN0cmV0Y2hlZEhlaWdodC52YWx1ZSgpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGhhc1BlcnBlbmRpY3VsYXJD
b250YWluaW5nQmxvY2sgPyBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkg
OiBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yQ29udGVudChJbmNsdWRlTWFyZ2luQm9y
ZGVyUGFkZGluZyk7CisgICAgICAgICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gdXNlIHRoZSBi
b3JkZXItYm94IHRvIG1hdGNoIFdpbklFJ3MgYnJva2VuCisgICAgICAgICAgICAvLyBib3ggbW9k
ZWwuIFRoaXMgaXMgZXNzZW50aWFsIGZvciBzaXppbmcgaW5zaWRlCisgICAgICAgICAgICAvLyB0
YWJsZSBjZWxscyB1c2luZyBwZXJjZW50YWdlIGhlaWdodHMuCisgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBuZWVkcyB0byBiZSBtYWRlIGJsb2NrLWZsb3ctYXdhcmUuIElmIHRoZSBjZWxsIGFu
ZCBpbWFnZSBhcmUgcGVycGVuZGljdWxhciBibG9jay1mbG93cywgdGhpcyBpc24ndCByaWdodC4K
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
Njk5NworICAgICAgICAgICAgd2hpbGUgKGNvbnRhaW5lciAmJiAhaXM8UmVuZGVyVmlldz4oKmNv
bnRhaW5lcikKKyAgICAgICAgICAgICAgICAmJiAoY29udGFpbmVyLT5zdHlsZSgpLmxvZ2ljYWxI
ZWlnaHQoKS5pc0F1dG8oKSB8fCBjb250YWluZXItPnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlz
UGVyY2VudE9yQ2FsY3VsYXRlZCgpKSkgeworICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIt
PmlzVGFibGVDZWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgbGV0IHRhYmxl
IGNlbGxzIHNxdWVlemUgcGVyY2VudC1oZWlnaHQgcmVwbGFjZWQgZWxlbWVudHMKKyAgICAgICAg
ICAgICAgICAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MzU5PgorICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBzdGQ6Om1heChhdmFp
bGFibGVIZWlnaHQsIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0LCBhdmFpbGFibGVIZWlnaHQg
LSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpjb250YWluZXIpLmFkZFBlcmNl
bnRIZWlnaHREZXNjZW5kYW50KGNvbnN0X2Nhc3Q8UmVuZGVyQm94Jj4oKnRoaXMpKTsKKyAgICAg
ICAgICAgICAgICBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVp
Z2h0Rm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxIZWlnaHQsIGF2YWlsYWJsZUhl
aWdodCkpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgTWluQ29udGVudDoKLSAgICAgICAgY2Fz
ZSBNYXhDb250ZW50OgotICAgICAgICBjYXNlIEZpdENvbnRlbnQ6Ci0gICAgICAgIGNhc2UgRmls
bEF2YWlsYWJsZToKLSAgICAgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhl
aWdodEZvckJveFNpemluZyhjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2lu
Zyhsb2dpY2FsSGVpZ2h0LCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCksIGJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsSGVpZ2h0KCkpKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50
Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0
LCBhdmFpbGFibGVIZWlnaHQpKTsKKyAgICB9CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5Db250
ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWF4Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5
cGU6OkZpdENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaWxsQXZhaWxhYmxlOgorICAg
ICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoY29t
cHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcobG9naWNhbEhlaWdodCwgaW50
cmluc2ljTG9naWNhbEhlaWdodCgpLCBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKSk7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKTsK
ICAgICB9CiB9CiAKQEAgLTM1NTUsOSArMzU1NCw5IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxp
bmVTdGF0aWNEaXN0YW5jZShMZW5ndGgmIGxvZ2ljYWxMZWZ0LCBMZW5ndGgmIGxvZ2ljYWxSaWdo
CiAgICAgLy8gdGhlbSAoZGVwZW5kaW5nIG9uIHRoZSBkaXJlY3Rpb24pIGlzIHNpbXBseSAiMCIu
CiAgICAgaWYgKHBhcmVudC0+aXNSZW5kZXJHcmlkKCkgJiYgcGFyZW50ID09IGNoaWxkLT5jb250
YWluaW5nQmxvY2soKSkgewogICAgICAgICBpZiAocGFyZW50RGlyZWN0aW9uID09IFRleHREaXJl
Y3Rpb246OkxUUikKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0LnNldFZhbHVlKEZpeGVkLCAwKTsK
KyAgICAgICAgICAgIGxvZ2ljYWxMZWZ0LnNldFZhbHVlKExlbmd0aFR5cGU6OkZpeGVkLCAwKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9naWNhbFJpZ2h0LnNldFZhbHVlKEZpeGVkLCAw
KTsKKyAgICAgICAgICAgIGxvZ2ljYWxSaWdodC5zZXRWYWx1ZShMZW5ndGhUeXBlOjpGaXhlZCwg
MCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM1NzksMTIgKzM1NzgsMTIgQEAgc3Rh
dGljIHZvaWQgY29tcHV0ZUlubGluZVN0YXRpY0Rpc3RhbmNlKExlbmd0aCYgbG9naWNhbExlZnQs
IExlbmd0aCYgbG9naWNhbFJpZ2gKICAgICAgICAgICAgICAgICAgICAgc3RhdGljUG9zaXRpb24g
Kz0gYm94SW5mby0+bG9naWNhbExlZnQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICBsb2dpY2FsTGVmdC5zZXRWYWx1ZShGaXhlZCwgc3RhdGljUG9zaXRpb24pOworICAgICAg
ICBsb2dpY2FsTGVmdC5zZXRWYWx1ZShMZW5ndGhUeXBlOjpGaXhlZCwgc3RhdGljUG9zaXRpb24p
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIExheW91dFVuaXQgc3RhdGljUG9zaXRpb24gPSBjaGls
ZC0+bGF5ZXIoKS0+c3RhdGljSW5saW5lUG9zaXRpb24oKSArIGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCArIGNvbnRhaW5lckJsb2NrLmJvcmRlckxvZ2ljYWxMZWZ0KCk7CiAgICAgICAgIGF1dG8mIGVu
Y2xvc2luZ0JveCA9IHBhcmVudC0+ZW5jbG9zaW5nQm94KCk7CiAgICAgICAgIGlmICgmZW5jbG9z
aW5nQm94ICE9ICZjb250YWluZXJCbG9jayAmJiBjb250YWluZXJCbG9jay5pc0Rlc2NlbmRhbnRP
ZigmZW5jbG9zaW5nQm94KSkgewotICAgICAgICAgICAgbG9naWNhbFJpZ2h0LnNldFZhbHVlKEZp
eGVkLCBzdGF0aWNQb3NpdGlvbik7CisgICAgICAgICAgICBsb2dpY2FsUmlnaHQuc2V0VmFsdWUo
TGVuZ3RoVHlwZTo6Rml4ZWQsIHN0YXRpY1Bvc2l0aW9uKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkBAIC0zNjEzLDcgKzM2MTIsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlSW5s
aW5lU3RhdGljRGlzdGFuY2UoTGVuZ3RoJiBsb2dpY2FsTGVmdCwgTGVuZ3RoJiBsb2dpY2FsUmln
aAogICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gJmNvbnRhaW5lckJsb2NrKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGxvZ2ljYWxSaWdodC5zZXRWYWx1ZShG
aXhlZCwgc3RhdGljUG9zaXRpb24pOworICAgICAgICBsb2dpY2FsUmlnaHQuc2V0VmFsdWUoTGVu
Z3RoVHlwZTo6Rml4ZWQsIHN0YXRpY1Bvc2l0aW9uKTsKICAgICB9CiB9CiAKQEAgLTM3MTAsNyAr
MzcwOSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChM
b2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF4VmFsdWVzKTsKICAgICB9CiAgICAgaWYgKHRyYW5zZmVy
cmVkTWF4U2l6ZSA8IG1heFZhbHVlcy5tX2V4dGVudCkgewotICAgICAgICBjb21wdXRlUG9zaXRp
b25lZExvZ2ljYWxXaWR0aFVzaW5nKE1heFNpemUsIExlbmd0aCh0cmFuc2ZlcnJlZE1heFNpemUs
IEZpeGVkKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKKyAgICAgICAgY29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhNYXhTaXplLCBMZW5ndGgodHJhbnNmZXJy
ZWRNYXhTaXplLCBMZW5ndGhUeXBlOjpGaXhlZCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJE
aXJlY3Rpb24sCiAgICAgICAgICAgICBjb250YWluZXJMb2dpY2FsV2lkdGgsIGJvcmRlcnNQbHVz
UGFkZGluZywKICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRMZW5n
dGgsIG1hcmdpbkxvZ2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAgICBt
YXhWYWx1ZXMpOwpAQCAtMzczMiw3ICszNzMxLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHUK
ICAgICAgICAgICAgIG1pblZhbHVlcyk7CiAgICAgfQogICAgIGlmICh0cmFuc2ZlcnJlZE1pblNp
emUgPiBtaW5WYWx1ZXMubV9leHRlbnQpIHsKLSAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dp
Y2FsV2lkdGhVc2luZyhNaW5TaXplLCBMZW5ndGgodHJhbnNmZXJyZWRNaW5TaXplLCBGaXhlZCks
IGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgICAgIGNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTWluU2l6ZSwgTGVuZ3RoKHRyYW5zZmVycmVkTWluU2l6
ZSwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRMZW5ndGgs
IG1hcmdpbkxvZ2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluVmFsdWVzKTsKQEAgLTM3OTMsMTMgKzM3OTIs
MTMgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmco
U2l6ZVR5cGUgd2lkdGhUeXBlLCBMZW5ndGggbG8KICAgICAgICAgICAgIExheW91dFVuaXQgbWlu
TG9naWNhbFdpZHRoOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2FsV2lkdGg7CiAg
ICAgICAgICAgICBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhtaW5Mb2dpY2FsV2lkdGgs
IG1heExvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICBsb2dpY2FsV2lkdGggPSBMZW5ndGgobWlu
TG9naWNhbFdpZHRoLCBGaXhlZCk7CisgICAgICAgICAgICBsb2dpY2FsV2lkdGggPSBMZW5ndGgo
bWluTG9naWNhbFdpZHRoLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgbG9naWNhbFdpZHRoID0gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICAgICAgICAgIGxv
Z2ljYWxXaWR0aCA9IExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgfSBlbHNlIGlm
ICh3aWR0aFR5cGUgPT0gTWFpbk9yUHJlZmVycmVkU2l6ZSAmJiBsb2dpY2FsV2lkdGguaXNBdXRv
KCkgJiYgc2hvdWxkQ29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpKQotICAgICAg
ICBsb2dpY2FsV2lkdGggPSBMZW5ndGgoY29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRp
bygpLCBGaXhlZCk7CisgICAgICAgIGxvZ2ljYWxXaWR0aCA9IExlbmd0aChjb21wdXRlTG9naWNh
bFdpZHRoRnJvbUFzcGVjdFJhdGlvKCksIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICBlbHNlIGlm
IChsb2dpY2FsV2lkdGguaXNJbnRyaW5zaWMoKSkKLSAgICAgICAgbG9naWNhbFdpZHRoID0gTGVu
Z3RoKGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyhsb2dpY2FsV2lkdGgsIGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVyc1BsdXNQYWRkaW5nKSAtIGJvcmRlcnNQbHVzUGFkZGlu
ZywgRml4ZWQpOworICAgICAgICBsb2dpY2FsV2lkdGggPSBMZW5ndGgoY29tcHV0ZUludHJpbnNp
Y0xvZ2ljYWxXaWR0aFVzaW5nKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCBi
b3JkZXJzUGx1c1BhZGRpbmcpIC0gYm9yZGVyc1BsdXNQYWRkaW5nLCBMZW5ndGhUeXBlOjpGaXhl
ZCk7CiAKICAgICAvLyAnbGVmdCcgYW5kICdyaWdodCcgY2Fubm90IGJvdGggYmUgJ2F1dG8nIGJl
Y2F1c2Ugb25lIHdvdWxkIG9mIGJlZW4KICAgICAvLyBjb252ZXJ0ZWQgdG8gdGhlIHN0YXRpYyBw
b3NpdGlvbiBhbHJlYWR5CkBAIC0zOTkxLDcgKzM5OTAsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRl
QmxvY2tTdGF0aWNEaXN0YW5jZShMZW5ndGgmIGxvZ2ljYWxUb3AsIExlbmd0aCYgbG9naWNhbEJv
dHRvbQogICAgICAgICBpZiAocmVuZGVyQm94LmlzSW5GbG93UG9zaXRpb25lZCgpKQogICAgICAg
ICAgICAgc3RhdGljTG9naWNhbFRvcCArPSByZW5kZXJCb3guaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IHJlbmRlckJveC5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbigpLmhlaWdodCgpIDogcmVu
ZGVyQm94Lm9mZnNldEZvckluRmxvd1Bvc2l0aW9uKCkud2lkdGgoKTsKICAgICB9Ci0gICAgbG9n
aWNhbFRvcC5zZXRWYWx1ZShGaXhlZCwgc3RhdGljTG9naWNhbFRvcCk7CisgICAgbG9naWNhbFRv
cC5zZXRWYWx1ZShMZW5ndGhUeXBlOjpGaXhlZCwgc3RhdGljTG9naWNhbFRvcCk7CiB9CiAKIHZv
aWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHQoTG9naWNhbEV4dGVu
dENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QKQEAgLTQxMzUsOSArNDEzNCw5
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhT
aXplVHlwZSBoZWlnaHRUeXBlLCBMZW5ndGgKICAgICBBU1NFUlQoaGVpZ2h0VHlwZSA9PSBNaW5T
aXplIHx8IGhlaWdodFR5cGUgPT0gTWFpbk9yUHJlZmVycmVkU2l6ZSB8fCAhbG9naWNhbEhlaWdo
dExlbmd0aC5pc0F1dG8oKSk7CiAgICAgaWYgKGhlaWdodFR5cGUgPT0gTWluU2l6ZSAmJiBsb2dp
Y2FsSGVpZ2h0TGVuZ3RoLmlzQXV0bygpKSB7CiAgICAgICAgIGlmIChzaG91bGRDb21wdXRlTG9n
aWNhbEhlaWdodEZyb21Bc3BlY3RSYXRpbygpKQotICAgICAgICAgICAgbG9naWNhbEhlaWdodExl
bmd0aCA9IExlbmd0aChsb2dpY2FsSGVpZ2h0LCBGaXhlZCk7CisgICAgICAgICAgICBsb2dpY2Fs
SGVpZ2h0TGVuZ3RoID0gTGVuZ3RoKGxvZ2ljYWxIZWlnaHQsIExlbmd0aFR5cGU6OkZpeGVkKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9naWNhbEhlaWdodExlbmd0aCA9IExlbmd0aCgw
LCBGaXhlZCk7CisgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0TGVuZ3RoID0gTGVuZ3RoKDAsIExl
bmd0aFR5cGU6OkZpeGVkKTsKICAgICB9CiAKICAgICAvLyAndG9wJyBhbmQgJ2JvdHRvbScgY2Fu
bm90IGJvdGggYmUgJ2F1dG8nIGJlY2F1c2UgJ3RvcCB3b3VsZCBvZiBiZWVuCkBAIC00MzIyLDkg
KzQzMjEsOSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhS
ZXBsYWNlZChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZQogICAgIFwqLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q
LwogICAgIGlmIChsb2dpY2FsTGVmdC5pc0F1dG8oKSB8fCBsb2dpY2FsUmlnaHQuaXNBdXRvKCkp
IHsKICAgICAgICAgaWYgKG1hcmdpbkxvZ2ljYWxMZWZ0LmlzQXV0bygpKQotICAgICAgICAgICAg
bWFyZ2luTG9naWNhbExlZnQuc2V0VmFsdWUoRml4ZWQsIDApOworICAgICAgICAgICAgbWFyZ2lu
TG9naWNhbExlZnQuc2V0VmFsdWUoTGVuZ3RoVHlwZTo6Rml4ZWQsIDApOwogICAgICAgICBpZiAo
bWFyZ2luTG9naWNhbFJpZ2h0LmlzQXV0bygpKQotICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJp
Z2h0LnNldFZhbHVlKEZpeGVkLCAwKTsKKyAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodC5z
ZXRWYWx1ZShMZW5ndGhUeXBlOjpGaXhlZCwgMCk7CiAgICAgfQogCiAgICAgLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSpcCkBAIC00NDg2LDkgKzQ0ODUsOSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0
aW9uZWRMb2dpY2FsSGVpZ2h0UmVwbGFjZWQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdQogICAg
IC8vIGF1dG8sIGJ1dCBpZiBvbmx5IHRvcCBpcyBhdXRvLCB0aGlzIG1ha2VzIHN0ZXAgNCBpbXBv
c3NpYmxlLgogICAgIGlmIChsb2dpY2FsVG9wLmlzQXV0bygpIHx8IGxvZ2ljYWxCb3R0b20uaXNB
dXRvKCkpIHsKICAgICAgICAgaWYgKG1hcmdpbkJlZm9yZS5pc0F1dG8oKSkKLSAgICAgICAgICAg
IG1hcmdpbkJlZm9yZS5zZXRWYWx1ZShGaXhlZCwgMCk7CisgICAgICAgICAgICBtYXJnaW5CZWZv
cmUuc2V0VmFsdWUoTGVuZ3RoVHlwZTo6Rml4ZWQsIDApOwogICAgICAgICBpZiAobWFyZ2luQWZ0
ZXIuaXNBdXRvKCkpCi0gICAgICAgICAgICBtYXJnaW5BZnRlci5zZXRWYWx1ZShGaXhlZCwgMCk7
CisgICAgICAgICAgICBtYXJnaW5BZnRlci5zZXRWYWx1ZShMZW5ndGhUeXBlOjpGaXhlZCwgMCk7
CiAgICAgfQogCiAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCkBAIC00ODE5LDcgKzQ4MTgsNyBAQCBi
b29sIFJlbmRlckJveDo6cGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUoKSBjb25z
dAogewogICAgIC8vIERvIHRoaXMgdG8gYXZvaWQgZHVwbGljYXRpbmcgYWxsIHRoZSBsb2dpYyB0
aGF0IGFscmVhZHkgZXhpc3RzIHdoZW4gY29tcHV0aW5nCiAgICAgLy8gYW4gYWN0dWFsIHBlcmNl
bnRhZ2UgaGVpZ2h0LgotICAgIExlbmd0aCBmYWtlTGVuZ3RoKDEwMCwgUGVyY2VudCk7CisgICAg
TGVuZ3RoIGZha2VMZW5ndGgoMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICByZXR1cm4g
Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGZha2VMZW5ndGgpICE9IFdURjo6bnVsbG9w
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAppbmRleCA1
N2YyZGQ5ODk0ZTc3MTcwOThkNTk2ZTA3YzMzNDU5MDNiNTk2N2U3Li43ZWQ4MTVjNzZhNGUxMjk3
YTZkMTg2YTMyMjJmMDc1MjZkNzQ0YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQnV0dG9uLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlbmRlckJ1dHRvbjo6dXBkYXRl
QW5vbnltb3VzQ2hpbGRTdHlsZShSZW5kZXJTdHlsZSYgY2hpbGRTdHlsZSkgY29uc3QKIHsKICAg
ICBjaGlsZFN0eWxlLnNldEZsZXhHcm93KDEuMGYpOwogICAgIC8vIG1pbi13aWR0aDogMDsgaXMg
bmVlZGVkIGZvciBjb3JyZWN0IHNocmlua2luZy4KLSAgICBjaGlsZFN0eWxlLnNldE1pbldpZHRo
KExlbmd0aCgwLCBGaXhlZCkpOworICAgIGNoaWxkU3R5bGUuc2V0TWluV2lkdGgoTGVuZ3RoKDAs
IExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgLy8gVXNlIG1hcmdpbjphdXRvIGluc3RlYWQgb2Yg
YWxpZ24taXRlbXM6Y2VudGVyIHRvIGdldCBzYWZlIGNlbnRlcmluZywgaS5lLgogICAgIC8vIHdo
ZW4gdGhlIGNvbnRlbnQgb3ZlcmZsb3dzLCB0cmVhdCBpdCB0aGUgc2FtZSBhcyBhbGlnbi1pdGVt
czogZmxleC1zdGFydC4KICAgICBjaGlsZFN0eWxlLnNldE1hcmdpblRvcChMZW5ndGgoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwCmluZGV4IGViMzE0Mjc0M2Q5NGI3NmQ5ZWEwYTk2ZWQ0ZTFjNzdlN2ZmNDU2
ZTUuLjRmMmQxZjNkYjFiNzkwMzU0ZmZjNjg1OWZjM2JkNzI3NzYyZmUxOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guY3BwCkBAIC0xMTMzLDkgKzExMzMsOSBAQCBMYXlvdXRVbml0IFJlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveDo6YWxsb3dlZENoaWxkRmxleChSZW5kZXJCb3gqIGNoaWxkLCBib29sCiAgICAg
ICAgICAgICBMYXlvdXRVbml0IHdpZHRoID0gY29udGVudFdpZHRoRm9yQ2hpbGQoY2hpbGQpOwog
ICAgICAgICAgICAgaWYgKCFjaGlsZC0+c3R5bGUoKS5tYXhXaWR0aCgpLmlzVW5kZWZpbmVkKCkg
JiYgY2hpbGQtPnN0eWxlKCkubWF4V2lkdGgoKS5pc0ZpeGVkKCkpCiAgICAgICAgICAgICAgICAg
bWF4V2lkdGggPSBjaGlsZC0+c3R5bGUoKS5tYXhXaWR0aCgpLnZhbHVlKCk7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChjaGlsZC0+c3R5bGUoKS5tYXhXaWR0aCgpLnR5cGUoKSA9PSBJbnRyaW5zaWMp
CisgICAgICAgICAgICBlbHNlIGlmIChjaGlsZC0+c3R5bGUoKS5tYXhXaWR0aCgpLnR5cGUoKSA9
PSBMZW5ndGhUeXBlOjpJbnRyaW5zaWMpCiAgICAgICAgICAgICAgICAgbWF4V2lkdGggPSBjaGls
ZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjaGls
ZC0+c3R5bGUoKS5tYXhXaWR0aCgpLnR5cGUoKSA9PSBNaW5JbnRyaW5zaWMpCisgICAgICAgICAg
ICBlbHNlIGlmIChjaGlsZC0+c3R5bGUoKS5tYXhXaWR0aCgpLmlzTWluSW50cmluc2ljKCkpCiAg
ICAgICAgICAgICAgICAgbWF4V2lkdGggPSBjaGlsZC0+bWluUHJlZmVycmVkTG9naWNhbFdpZHRo
KCk7CiAgICAgICAgICAgICBpZiAobWF4V2lkdGggPT0gTGF5b3V0VW5pdDo6bWF4KCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1heFdpZHRoOwpAQCAtMTE1OCwxMSArMTE1OCwxMSBAQCBMYXlv
dXRVbml0IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YWxsb3dlZENoaWxkRmxleChSZW5k
ZXJCb3gqIGNoaWxkLCBib29sCiAgICAgICAgIExheW91dFVuaXQgd2lkdGggPSBjb250ZW50V2lk
dGhGb3JDaGlsZChjaGlsZCk7CiAgICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS5taW5XaWR0aCgp
LmlzRml4ZWQoKSkKICAgICAgICAgICAgIG1pbldpZHRoID0gY2hpbGQtPnN0eWxlKCkubWluV2lk
dGgoKS52YWx1ZSgpOwotICAgICAgICBlbHNlIGlmIChjaGlsZC0+c3R5bGUoKS5taW5XaWR0aCgp
LnR5cGUoKSA9PSBJbnRyaW5zaWMpCisgICAgICAgIGVsc2UgaWYgKGNoaWxkLT5zdHlsZSgpLm1p
bldpZHRoKCkudHlwZSgpID09IExlbmd0aFR5cGU6OkludHJpbnNpYykKICAgICAgICAgICAgIG1p
bldpZHRoID0gY2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwotICAgICAgICBlbHNl
IGlmIChjaGlsZC0+c3R5bGUoKS5taW5XaWR0aCgpLnR5cGUoKSA9PSBNaW5JbnRyaW5zaWMpCisg
ICAgICAgIGVsc2UgaWYgKGNoaWxkLT5zdHlsZSgpLm1pbldpZHRoKCkuaXNNaW5JbnRyaW5zaWMo
KSkKICAgICAgICAgICAgIG1pbldpZHRoID0gY2hpbGQtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0
aCgpOwotICAgICAgICBlbHNlIGlmIChjaGlsZC0+c3R5bGUoKS5taW5XaWR0aCgpLnR5cGUoKSA9
PSBBdXRvKQorICAgICAgICBlbHNlIGlmIChjaGlsZC0+c3R5bGUoKS5taW5XaWR0aCgpLmlzQXV0
bygpKQogICAgICAgICAgICAgbWluV2lkdGggPSAwOwogCiAgICAgICAgIExheW91dFVuaXQgYWxs
b3dlZFNocmlua2FnZSA9IHN0ZDo6bWluPExheW91dFVuaXQ+KDAsIG1pbldpZHRoIC0gd2lkdGgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IDgxNzE3
MjA3ZGZjZDdiM2UxYjAyNjA0NmNiMjdmZDdlYWVlYTQ4MTMuLmIwMmM4ODVhNDAyMThiZDljYTk3
OTk4YTRjYTA5YmY4NmE2MTQzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAKQEAgLTIyMzksNyArMjIzOSw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6cmVz
ZXRFbmNsb3NpbmdGcmFnbWVudGVkRmxvd0FuZENoaWxkSW5mb0luY2x1ZGluZ0Rlc2NlbmRhbnRz
CiBzdGF0aWMgUmVuZGVyT2JqZWN0OjpCbG9ja0NvbnRlbnRIZWlnaHRUeXBlIGluY2x1ZGVOb25G
aXhlZEhlaWdodChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewogICAgIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7Ci0gICAgaWYgKHN0eWxlLmhlaWdo
dCgpLnR5cGUoKSA9PSBGaXhlZCkgeworICAgIGlmIChzdHlsZS5oZWlnaHQoKS5pc0ZpeGVkKCkp
IHsKICAgICAgICAgaWYgKGlzPFJlbmRlckJsb2NrPihyZW5kZXJlcikpIHsKICAgICAgICAgICAg
IC8vIEZvciBmaXhlZCBoZWlnaHQgc3R5bGVzLCBpZiB0aGUgb3ZlcmZsb3cgc2l6ZSBvZiB0aGUg
ZWxlbWVudCBzcGlsbHMgb3V0IG9mIHRoZSBzcGVjaWZpZWQKICAgICAgICAgICAgIC8vIGhlaWdo
dCwgYXNzdW1lIHdlIGNhbiBhcHBseSB0ZXh0IGF1dG8tc2l6aW5nLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggMmYyNGQ0MzA3MTZlNDlk
ODk2Mjc4OTI3NmVjNzJiZTE5ZmViMjMxMy4uNjViZjFmNDNhYTJhZjkwNjUxZTFhY2Y1ZWExMGI5
YzgwNTY2YmY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwCkBAIC01NzAsOSArNTcwLDkgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVy
RmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNvbnN0IFJlbmQKICAg
ICAvLyB0aGF0IGhlcmUuIChDb21wYXJlIGNvZGUgaW4gTGF5b3V0QmxvY2s6OmNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKQogICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZyA9IGNo
aWxkLmJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKICAgICBpZiAoY2hpbGQuc3R5bGUo
KS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKSAmJiAhY2hpbGQuaGFzQXNwZWN0UmF0aW8oKSkgewot
ICAgICAgICBpZiAoc2l6ZS50eXBlKCkgPT0gTWluQ29udGVudCkKKyAgICAgICAgaWYgKHNpemUu
aXNNaW5Db250ZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gY2hpbGQubWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoKCkgLSBib3JkZXJBbmRQYWRkaW5nOwotICAgICAgICBpZiAoc2l6ZS50eXBlKCkg
PT0gTWF4Q29udGVudCkKKyAgICAgICAgaWYgKHNpemUuaXNNYXhDb250ZW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gY2hpbGQubWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJBbmRQ
YWRkaW5nOwogICAgIH0KICAgICAKQEAgLTExNDksNyArMTE0OSw3IEBAIExheW91dFVuaXQgUmVu
ZGVyRmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heChjb25zdCBSZW5kZXJC
b3gmIGNoaWxkCiAgICAgaWYgKHNob3VsZEFwcGx5TWluU2l6ZUF1dG9Gb3JDaGlsZChjaGlsZCkp
IHsKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBtaW4gdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUg
dmFsaWQgaGVyZSwgd2UgbmVlZCB0byBjb21lIHVwIHdpdGggYSBub24gb3B0aW9uYWwgdmVyc2lv
biBvZiBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZCBhbmQKICAgICAgICAgLy8gZW5zdXJl
IGl0J3MgdmFsaWQgdGhyb3VnaCB0aGUgdmlydHVhbCBjYWxscyBvZiBjb21wdXRlSW50cmluc2lj
TG9naWNhbENvbnRlbnRIZWlnaHRVc2luZy4KLSAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50U2l6
ZSA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBMZW5ndGgo
TWluQ29udGVudCkpLnZhbHVlT3IoMCk7CisgICAgICAgIExheW91dFVuaXQgY29udGVudFNpemUg
PSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgTGVuZ3RoKExl
bmd0aFR5cGU6Ok1pbkNvbnRlbnQpKS52YWx1ZU9yKDApOwogICAgICAgICBBU1NFUlQoY29udGVu
dFNpemUgPj0gMCk7CiAgICAgICAgIGlmIChjaGlsZC5oYXNBc3BlY3RSYXRpbygpICYmIGNoaWxk
LmludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA+IDApCiAgICAgICAgICAgICBjb250ZW50U2l6ZSA9
IGFkanVzdENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NBeGlzTWluQW5kTWF4KGNoaWxkLCBj
b250ZW50U2l6ZSk7CkBAIC0xMjAzLDcgKzEyMDMsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBS
ZW5kZXJGbGV4aWJsZUJveDo6bWFpblNpemVGb3JQZXJjZW50YWdlUmVzb2x1dGlvbihjb25zdCBS
ZQogICAgIC8vIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBzZWN0aW9uIDkuOC4gRGVmaW5pdGUg
YW5kIEluZGVmaW5pdGUgU2l6ZXMsIGNhc2UgMikgb2YgdGhlIGZsZXhib3ggc3BlYy4KICAgICAv
LyBJZiB0aGUgZmxleCBjb250YWluZXIgaGFzIGEgZGVmaW5pdGUgbWFpbiBzaXplIHRoZSBmbGV4
IGl0ZW0gcG9zdC1mbGV4aW5nIG1haW4gc2l6ZSBpcyBhbHNvIHRyZWF0ZWQKICAgICAvLyBhcyBk
ZWZpbml0ZS4gV2UgbWFrZSB1cCBhIHBlcmNlbnRhZ2UgdG8gY2hlY2sgd2hldGhlciB3ZSBoYXZl
IGEgZGVmaW5pdGUgc2l6ZS4KLSAgICBpZiAoIWNoaWxkTWFpblNpemVJc0RlZmluaXRlKGNoaWxk
LCBMZW5ndGgoMCwgUGVyY2VudCkpKQorICAgIGlmICghY2hpbGRNYWluU2l6ZUlzRGVmaW5pdGUo
Y2hpbGQsIExlbmd0aCgwLCBMZW5ndGhUeXBlOjpQZXJjZW50KSkpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gY2hpbGQuaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWln
aHQoKSA/IE9wdGlvbmFsPExheW91dFVuaXQ+KGNoaWxkLm92ZXJyaWRpbmdDb250ZW50TG9naWNh
bEhlaWdodCgpKSA6IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGdWxsU2NyZWVuLmNwcAppbmRleCA3MjRmYjI3YjI0OTVhZjRmZjNlNTZjYzNiYTMyOGI1
YjdlNDRmY2NlLi5jNWNhZGYwMTgwYWMzMTg2MDViZTFjNzJmOTAyMDA4YzRlOWExZTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCkBAIC03OCwx
MCArNzgsMTAgQEAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZUZ1bGxTY3JlZW5TdHlsZSgpCiAg
ICAgZnVsbHNjcmVlblN0eWxlLnNldEZsZXhEaXJlY3Rpb24oRmxleERpcmVjdGlvbjo6Q29sdW1u
KTsKICAgICAKICAgICBmdWxsc2NyZWVuU3R5bGUuc2V0UG9zaXRpb24oUG9zaXRpb25UeXBlOjpG
aXhlZCk7Ci0gICAgZnVsbHNjcmVlblN0eWxlLnNldFdpZHRoKExlbmd0aCgxMDAuMCwgUGVyY2Vu
dCkpOwotICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKDEwMC4wLCBQZXJjZW50
KSk7Ci0gICAgZnVsbHNjcmVlblN0eWxlLnNldExlZnQoTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVk
KSk7Ci0gICAgZnVsbHNjcmVlblN0eWxlLnNldFRvcChMZW5ndGgoMCwgV2ViQ29yZTo6Rml4ZWQp
KTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0V2lkdGgoTGVuZ3RoKDEwMC4wLCBMZW5ndGhUeXBl
OjpQZXJjZW50KSk7CisgICAgZnVsbHNjcmVlblN0eWxlLnNldEhlaWdodChMZW5ndGgoMTAwLjAs
IExlbmd0aFR5cGU6OlBlcmNlbnQpKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0TGVmdChMZW5n
dGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0VG9wKExl
bmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgIAogICAgIGZ1bGxzY3JlZW5TdHlsZS5z
ZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJsYWNrKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggNDRlM2Y2Mzg0NDIxNjU3ODJiNzRiZWRkZDE2Mzg3ODE5
NGQ0ZWY4Yi4uNzEyNGU3M2RlMWY4MWMyYjU4Njc0MmYxN2MxOThlMDY0NzJkNmQyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC04MzMsOCArODMzLDggQEAg
dm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udGVudChjb25zdCBMYXlvdXRTaXplJiBv
bGRTaXplKQogICAgICAgICAvLyBhbmQgdGhpcyBtZXRob2QgbWlnaHQgYmUgY2FsbGVkIG1hbnkg
dGltZXMgcGVyIHNlY29uZCBkdXJpbmcgdmlkZW8gcGxheWJhY2ssIHVzZSBhIExheW91dFN0YXRl
TWFpbnRhaW5lcjoKICAgICAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKCp0
aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNSZWZsZWN0aW9uKCkg
fHwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKICAgICAgICAgcmVuZGVy
Qm94LnNldExvY2F0aW9uKExheW91dFBvaW50KGJvcmRlckxlZnQoKSwgYm9yZGVyVG9wKCkpICsg
TGF5b3V0U2l6ZShwYWRkaW5nTGVmdCgpLCBwYWRkaW5nVG9wKCkpKTsKLSAgICAgICAgcmVuZGVy
Qm94Lm11dGFibGVTdHlsZSgpLnNldEhlaWdodChMZW5ndGgobmV3U2l6ZS5oZWlnaHQoKSwgRml4
ZWQpKTsKLSAgICAgICAgcmVuZGVyQm94Lm11dGFibGVTdHlsZSgpLnNldFdpZHRoKExlbmd0aChu
ZXdTaXplLndpZHRoKCksIEZpeGVkKSk7CisgICAgICAgIHJlbmRlckJveC5tdXRhYmxlU3R5bGUo
KS5zZXRIZWlnaHQoTGVuZ3RoKG5ld1NpemUuaGVpZ2h0KCksIExlbmd0aFR5cGU6OkZpeGVkKSk7
CisgICAgICAgIHJlbmRlckJveC5tdXRhYmxlU3R5bGUoKS5zZXRXaWR0aChMZW5ndGgobmV3U2l6
ZS53aWR0aCgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgICAgICByZW5kZXJCb3guc2V0TmVl
ZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICAgICAgcmVuZGVyQm94LmxheW91dCgpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGQ4MTFiZjA3
Yzc5Mzk1OWIxMzU0NDVjYTEyNDVmZTYxOTdhYWM5YTMuLjI4YTE0ZDc2ZTBlYjI2YTFjYzQxMzM5
NmE2ZjJjZjY5NTIzZjc1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcApAQCAtNTM4MCwyNCArNTM4MCwyNCBAQCBSZW5kZXJTdHlsZSBSZW5kZXJMYXllcjo6Y3Jl
YXRlUmVmbGVjdGlvblN0eWxlKCkKICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIHRyYW5zZm9ybTsK
ICAgICBzd2l0Y2ggKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hSZWZsZWN0KCktPmRpcmVjdGlvbigp
KSB7CiAgICAgY2FzZSBSZWZsZWN0aW9uRGlyZWN0aW9uOjpCZWxvdzoKLSAgICAgICAgdHJhbnNm
b3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVh
dGUoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDEwMC4sIFBlcmNlbnQpLCBUcmFuc2Zvcm1PcGVy
YXRpb246OlRSQU5TTEFURSkpOwotICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVu
ZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMCwgRml4ZWQpLCBy
ZW5kZXJlcigpLnN0eWxlKCkuYm94UmVmbGVjdCgpLT5vZmZzZXQoKSwgVHJhbnNmb3JtT3BlcmF0
aW9uOjpUUkFOU0xBVEUpKTsKKyAgICAgICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQo
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDAsIExlbmd0aFR5cGU6
OkZpeGVkKSwgTGVuZ3RoKDEwMC4sIExlbmd0aFR5cGU6OlBlcmNlbnQpLCBUcmFuc2Zvcm1PcGVy
YXRpb246OlRSQU5TTEFURSkpOworICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVu
ZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMCwgTGVuZ3RoVHlw
ZTo6Rml4ZWQpLCByZW5kZXJlcigpLnN0eWxlKCkuYm94UmVmbGVjdCgpLT5vZmZzZXQoKSwgVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKICAgICAgICAgdHJhbnNmb3JtLm9wZXJhdGlv
bnMoKS5hcHBlbmQoU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgxLjAsIC0xLjAsIFNj
YWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFJlZmxlY3Rpb25EaXJlY3Rpb246OkFib3ZlOgogICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9u
cygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKDEuMCwgLTEuMCwgU2Nh
bGVUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFKSk7Ci0gICAgICAgIHRyYW5zZm9ybS5vcGVyYXRp
b25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgw
LCBGaXhlZCksIExlbmd0aCgxMDAuLCBQZXJjZW50KSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFO
U0xBVEUpKTsKLSAgICAgICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDAsIEZpeGVkKSwgcmVuZGVyZXIoKS5z
dHlsZSgpLmJveFJlZmxlY3QoKS0+b2Zmc2V0KCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFKSk7CisgICAgICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExl
bmd0aCgxMDAuLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFO
U0xBVEUpKTsKKyAgICAgICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSwg
cmVuZGVyZXIoKS5zdHlsZSgpLmJveFJlZmxlY3QoKS0+b2Zmc2V0KCksIFRyYW5zZm9ybU9wZXJh
dGlvbjo6VFJBTlNMQVRFKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVmbGVjdGlvbkRp
cmVjdGlvbjo6UmlnaHQ6Ci0gICAgICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRy
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgxMDAuLCBQZXJjZW50KSwg
TGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKLSAgICAg
ICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uOjpjcmVhdGUocmVuZGVyZXIoKS5zdHlsZSgpLmJveFJlZmxlY3QoKS0+b2Zmc2V0KCksIExl
bmd0aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFKSk7CisgICAgICAg
IHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bjo6Y3JlYXRlKExlbmd0aCgxMDAuLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVuZ3RoKDAsIExl
bmd0aFR5cGU6OkZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKKyAgICAg
ICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uOjpjcmVhdGUocmVuZGVyZXIoKS5zdHlsZSgpLmJveFJlZmxlY3QoKS0+b2Zmc2V0KCksIExl
bmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRF
KSk7CiAgICAgICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFNjYWxlVHJhbnNmb3Jt
T3BlcmF0aW9uOjpjcmVhdGUoLTEuMCwgMS4wLCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6U0NB
TEUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWZsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0
OgogICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9w
ZXJhdGlvbjo6Y3JlYXRlKC0xLjAsIDEuMCwgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxF
KSk7Ci0gICAgICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgxMDAuLCBQZXJjZW50KSwgTGVuZ3RoKDAsIEZp
eGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKLSAgICAgICAgdHJhbnNmb3Jt
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUo
cmVuZGVyZXIoKS5zdHlsZSgpLmJveFJlZmxlY3QoKS0+b2Zmc2V0KCksIExlbmd0aCgwLCBGaXhl
ZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFKSk7CisgICAgICAgIHRyYW5zZm9ybS5v
cGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExl
bmd0aCgxMDAuLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZp
eGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKKyAgICAgICAgdHJhbnNmb3Jt
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUo
cmVuZGVyZXIoKS5zdHlsZSgpLmJveFJlZmxlY3QoKS0+b2Zmc2V0KCksIExlbmd0aCgwLCBMZW5n
dGhUeXBlOjpGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBuZXdTdHlsZS5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXgg
YzcwYzE0YWRlMWZmNWJkZWRlNDc0Y2VmYmUzODEzMDgwMTQ1ZDE1MS4uMDlmZjQwODhiOGNiOTg1
ZWIzODFmZGFhMWNhMGYzNmM5YmM3NzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTgwNSw4ICs4MDUsOCBAQCBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6c2hvdWxkQ2xpcENvbXBvc2l0ZWRCb3VuZHMoKSBjb25zdAogc3RhdGlj
IGJvb2wgaGFzTm9uWmVyb1RyYW5zZm9ybU9yaWdpbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyKQogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7
Ci0gICAgcmV0dXJuIChzdHlsZS50cmFuc2Zvcm1PcmlnaW5YKCkudHlwZSgpID09IEZpeGVkICYm
IHN0eWxlLnRyYW5zZm9ybU9yaWdpblgoKS52YWx1ZSgpKQotICAgICAgICB8fCAoc3R5bGUudHJh
bnNmb3JtT3JpZ2luWSgpLnR5cGUoKSA9PSBGaXhlZCAmJiBzdHlsZS50cmFuc2Zvcm1PcmlnaW5Z
KCkudmFsdWUoKSk7CisgICAgcmV0dXJuIChzdHlsZS50cmFuc2Zvcm1PcmlnaW5YKCkuaXNGaXhl
ZCgpICYmIHN0eWxlLnRyYW5zZm9ybU9yaWdpblgoKS52YWx1ZSgpKQorICAgICAgICB8fCAoc3R5
bGUudHJhbnNmb3JtT3JpZ2luWSgpLmlzRml4ZWQoKSAmJiBzdHlsZS50cmFuc2Zvcm1PcmlnaW5Z
KCkudmFsdWUoKSk7CiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb21wb3Np
dGVkQm91bmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2Vy
LmNwcAppbmRleCA3MjkzYmJlY2Q1MTY3NDYzNzA4ODJhZDI2M2QzZDk4MTE1MjNhYzgxLi5jYTBm
MjU1NGI2ZTMzOWFjMGRkNTNkYTI1ZDRlOGE4N2NmYzBhN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xNzc4LDggKzE3NzgsOCBAQCB2
b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZU1hcmdpbnMoKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgbXV0YWJsZVN0eWxlKCkuc2V0TWFyZ2luU3RhcnQoTGVuZ3RoKG1hcmdpblN0YXJ0LCBG
aXhlZCkpOwotICAgIG11dGFibGVTdHlsZSgpLnNldE1hcmdpbkVuZChMZW5ndGgobWFyZ2luRW5k
LCBGaXhlZCkpOworICAgIG11dGFibGVTdHlsZSgpLnNldE1hcmdpblN0YXJ0KExlbmd0aChtYXJn
aW5TdGFydCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKKyAgICBtdXRhYmxlU3R5bGUoKS5zZXRNYXJn
aW5FbmQoTGVuZ3RoKG1hcmdpbkVuZCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKIH0KIAogTGF5b3V0
VW5pdCBSZW5kZXJMaXN0TWFya2VyOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4
IDdhNmU3MzlmNWU0NGY3NTFmNTViZmUzMDQyMWU2Yzg5ZThiNjJkMmUuLmYzOTRiZDYzMzZlNDQ0
ODIyN2YxNmFlOTk5NmRlNTVmMjRjY2Y4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgUmVuZGVyTWVudUxp
c3Q6OmFkanVzdElubmVyU3R5bGUoKQogICAgIGlubmVyU3R5bGUuc2V0RmxleEdyb3coMSk7CiAg
ICAgaW5uZXJTdHlsZS5zZXRGbGV4U2hyaW5rKDEpOwogICAgIC8vIG1pbi13aWR0aDogMDsgaXMg
bmVlZGVkIGZvciBjb3JyZWN0IHNocmlua2luZy4KLSAgICBpbm5lclN0eWxlLnNldE1pbldpZHRo
KExlbmd0aCgwLCBGaXhlZCkpOworICAgIGlubmVyU3R5bGUuc2V0TWluV2lkdGgoTGVuZ3RoKDAs
IExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgLy8gVXNlIG1hcmdpbjphdXRvIGluc3RlYWQgb2Yg
YWxpZ24taXRlbXM6Y2VudGVyIHRvIGdldCBzYWZlIGNlbnRlcmluZywgaS5lLgogICAgIC8vIHdo
ZW4gdGhlIGNvbnRlbnQgb3ZlcmZsb3dzLCB0cmVhdCBpdCB0aGUgc2FtZSBhcyBhbGlnbi1pdGVt
czogZmxleC1zdGFydC4KICAgICAvLyBCdXQgd2Ugb25seSBkbyB0aGF0IGZvciB0aGUgY2FzZXMg
d2hlcmUgaHRtbC5jc3Mgd291bGQgb3RoZXJ3aXNlIHVzZSBjZW50ZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IDBmNGMzZjEzMmRlNjRiODEy
NGQxMTc3ZWVlZjI2ZjAyNWRjNjUzZTMuLjFkOTUxMWRjYjFmYzAxZTZlYzAwZDc5ZGE0MDZiOGVk
YzYwZjcyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwCkBAIC0xNzYsOCArMTc2LDggQEAgTGVuZ3RoIFJlbmRlclRhYmxlQ2VsbDo6bG9naWNhbFdp
ZHRoRnJvbUNvbHVtbnMoUmVuZGVyVGFibGVDb2wqIGZpcnN0Q29sRm9yVGhpc0MKICAgICAvLyBD
b2x1bW4gd2lkdGhzIHNwZWNpZmllZCBvbiA8Y29sPiBhcHBseSB0byB0aGUgYm9yZGVyIGJveCBv
ZiB0aGUgY2VsbCwgc2VlIGJ1ZyA4MTI2LgogICAgIC8vIEZJWE1FOiBXaHkgaXMgYm9yZGVyL3Bh
ZGRpbmcgaWdub3JlZCBpbiB0aGUgbmVnYXRpdmUgd2lkdGggY2FzZT8KICAgICBpZiAoY29sV2lk
dGhTdW0gPiAwKQotICAgICAgICByZXR1cm4gTGVuZ3RoKHN0ZDo6bWF4PExheW91dFVuaXQ+KDAs
IGNvbFdpZHRoU3VtIC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpKSwgRml4ZWQpOwot
ICAgIHJldHVybiBMZW5ndGgoY29sV2lkdGhTdW0sIEZpeGVkKTsKKyAgICAgICAgcmV0dXJuIExl
bmd0aChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBjb2xXaWR0aFN1bSAtIGJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsV2lkdGgoKSksIExlbmd0aFR5cGU6OkZpeGVkKTsKKyAgICByZXR1cm4gTGVuZ3Ro
KGNvbFdpZHRoU3VtLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiB9CiAKIHZvaWQgUmVuZGVyVGFibGVD
ZWxsOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IGJhNjJkZmZkODMxMGY3NjBj
ZjNkNTIyZjJkMGRmMWJlMDExOTQ5ZDkuLjFlMTliM2RiMzUxMWEyOWFlNmVjZjZjM2ViMzMzOWM3
NzMwODU5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCkBAIC03MSwxNiArNzEsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUxv
Z2ljYWxIZWlnaHRGb3JDZWxsKFJlbmRlclRhYmxlU2VjdGlvbjo6Um93U3RydWN0JiByb3cKICAg
ICBpZiAobG9naWNhbEhlaWdodC5pc1Bvc2l0aXZlKCkgfHwgKGxvZ2ljYWxIZWlnaHQuaXNSZWxh
dGl2ZSgpICYmIGxvZ2ljYWxIZWlnaHQudmFsdWUoKSA+PSAwKSkgewogICAgICAgICBMZW5ndGgg
Y1Jvd0xvZ2ljYWxIZWlnaHQgPSByb3cubG9naWNhbEhlaWdodDsKICAgICAgICAgc3dpdGNoIChs
b2dpY2FsSGVpZ2h0LnR5cGUoKSkgewotICAgICAgICBjYXNlIFBlcmNlbnQ6CisgICAgICAgIGNh
c2UgTGVuZ3RoVHlwZTo6UGVyY2VudDoKICAgICAgICAgICAgIGlmICghY1Jvd0xvZ2ljYWxIZWln
aHQuaXNQZXJjZW50KCkgfHwgY1Jvd0xvZ2ljYWxIZWlnaHQucGVyY2VudCgpIDwgbG9naWNhbEhl
aWdodC5wZXJjZW50KCkpCiAgICAgICAgICAgICAgICAgcm93LmxvZ2ljYWxIZWlnaHQgPSBsb2dp
Y2FsSGVpZ2h0OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRml4ZWQ6CisgICAg
ICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CiAgICAgICAgICAgICBpZiAoY1Jvd0xvZ2ljYWxI
ZWlnaHQuaXNBdXRvKCkgfHwgY1Jvd0xvZ2ljYWxIZWlnaHQuaXNSZWxhdGl2ZSgpCiAgICAgICAg
ICAgICAgICAgfHwgKGNSb3dMb2dpY2FsSGVpZ2h0LmlzRml4ZWQoKSAmJiBjUm93TG9naWNhbEhl
aWdodC52YWx1ZSgpIDwgbG9naWNhbEhlaWdodC52YWx1ZSgpKSkKICAgICAgICAgICAgICAgICBy
b3cubG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQ7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBSZWxhdGl2ZToKKyAgICAgICAgY2FzZSBMZW5ndGhUeXBlOjpSZWxhdGl2ZToK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5l
LmNwcAppbmRleCAyYzMxMzFjZTFjMGM2NGZjMzU0MTE0Mzk2Yzc5MTU5NmQxYTk5MjhmLi4yODM1
Yzc5NjQ2YTZkNTc3NzcyZWNjZDhkMGFiODQyZDhjYzk1YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKQEAg
LTEwNiw3ICsxMDYsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpsYXlvdXRF
eGNsdWRlZENoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmIChpczxSZW5kZXJCb3g+KHBsYWNlaG9sZGVyUmVuZGVyZXIpKSB7CiAgICAgICAgIGF1
dG8mIHBsYWNlaG9sZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqcGxhY2Vob2xkZXJSZW5k
ZXJlcik7Ci0gICAgICAgIHBsYWNlaG9sZGVyQm94Lm11dGFibGVTdHlsZSgpLnNldExvZ2ljYWxX
aWR0aChMZW5ndGgoY29udGVudExvZ2ljYWxXaWR0aCgpIC0gcGxhY2Vob2xkZXJCb3guYm9yZGVy
QW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBGaXhlZCkpOworICAgICAgICBwbGFjZWhvbGRlckJv
eC5tdXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsV2lkdGgoTGVuZ3RoKGNvbnRlbnRMb2dpY2FsV2lk
dGgoKSAtIHBsYWNlaG9sZGVyQm94LmJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgTGVu
Z3RoVHlwZTo6Rml4ZWQpKTsKICAgICAgICAgcGxhY2Vob2xkZXJCb3gubGF5b3V0SWZOZWVkZWQo
KTsKICAgICAgICAgcGxhY2Vob2xkZXJCb3guc2V0WChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVm
dCgpKTsKICAgICAgICAgcGxhY2Vob2xkZXJCb3guc2V0WShib3JkZXJUb3AoKSArIHBhZGRpbmdU
b3AoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IDE0MjVlMzYwZjZlMDBjOTRjNjU5YjkyYmQxZmRi
MjI5OWYwMGZkZTQuLjdhNzA0NDhjZGYyNTZlYzFkM2E1Mzg3NGYwZTc1OTJiNWFhYWNkMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0T3ZlcnJp
ZGRlbkhlaWdodChSZW5kZXJCb3gqIGJveCwgY29uc3QgUmVuZGVyT2JqZWN0KiBhbmNlc3RvcikK
ICAgICBBU1NFUlQoYm94ICE9IGFuY2VzdG9yKTsKICAgICBpZiAoIWJveCB8fCBib3gtPnN0eWxl
KCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpKQogICAgICAgICByZXR1cm47IC8vIE51bGwgYm94
IG9yIGl0cyBoZWlnaHQgd2FzIG5vdCBvdmVycmlkZGVuLgotICAgIGJveC0+bXV0YWJsZVN0eWxl
KCkuc2V0TG9naWNhbEhlaWdodChMZW5ndGggeyBBdXRvIH0pOworICAgIGJveC0+bXV0YWJsZVN0
eWxlKCkuc2V0TG9naWNhbEhlaWdodChMZW5ndGggeyBMZW5ndGhUeXBlOjpBdXRvIH0pOwogICAg
IGZvciAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGJveDsgcmVuZGVyZXIgIT0gYW5jZXN0b3I7
IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7CiAgICAgICAgIEFTU0VSVChyZW5kZXJl
cik7CiAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwpAQCAt
MTMwLDEwICsxMzAsMTAgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91
dCgpCiAgICAgICAgIGlmIChkZXNpcmVkTG9naWNhbEhlaWdodCAhPSBpbm5lclRleHRMb2dpY2Fs
SGVpZ2h0KQogICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKIAotICAg
ICAgICBpbm5lclRleHRSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0TG9naWNhbEhlaWdodChM
ZW5ndGgoZGVzaXJlZExvZ2ljYWxIZWlnaHQsIEZpeGVkKSk7CisgICAgICAgIGlubmVyVGV4dFJl
bmRlcmVyLT5tdXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0aChkZXNpcmVkTG9n
aWNhbEhlaWdodCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICAgICAgaW5uZXJUZXh0UmVuZGVy
ZXItPnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAgICAgIGlmIChpbm5lckJsb2Nr
UmVuZGVyZXIpIHsKLSAgICAgICAgICAgIGlubmVyQmxvY2tSZW5kZXJlci0+bXV0YWJsZVN0eWxl
KCkuc2V0TG9naWNhbEhlaWdodChMZW5ndGgoZGVzaXJlZExvZ2ljYWxIZWlnaHQsIEZpeGVkKSk7
CisgICAgICAgICAgICBpbm5lckJsb2NrUmVuZGVyZXItPm11dGFibGVTdHlsZSgpLnNldExvZ2lj
YWxIZWlnaHQoTGVuZ3RoKGRlc2lyZWRMb2dpY2FsSGVpZ2h0LCBMZW5ndGhUeXBlOjpGaXhlZCkp
OwogICAgICAgICAgICAgaW5uZXJCbG9ja1JlbmRlcmVyLT5zZXROZWVkc0xheW91dChNYXJrT25s
eVRoaXMpOwogICAgICAgICB9CiAgICAgICAgIGlubmVyVGV4dExvZ2ljYWxIZWlnaHQgPSBkZXNp
cmVkTG9naWNhbEhlaWdodDsKQEAgLTE0NSwxNiArMTQ1LDE2IEBAIHZvaWQgUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpsYXlvdXQoKQogICAgICAgICBvbGRDb250YWluZXJMb2dpY2FsVG9w
ID0gY29udGFpbmVyUmVuZGVyZXItPmxvZ2ljYWxUb3AoKTsKICAgICAgICAgTGF5b3V0VW5pdCBj
b250YWluZXJMb2dpY2FsSGVpZ2h0ID0gY29udGFpbmVyUmVuZGVyZXItPmxvZ2ljYWxIZWlnaHQo
KTsKICAgICAgICAgaWYgKGlucHV0RWxlbWVudCgpLmhhc0F1dG9GaWxsU3Ryb25nUGFzc3dvcmRC
dXR0b24oKSAmJiBpbm5lclRleHRSZW5kZXJlciAmJiBjb250YWluZXJMb2dpY2FsSGVpZ2h0ICE9
IGlubmVyVGV4dExvZ2ljYWxIZWlnaHQpIHsKLSAgICAgICAgICAgIGNvbnRhaW5lclJlbmRlcmVy
LT5tdXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0aCB7IGlubmVyVGV4dExvZ2lj
YWxIZWlnaHQsIEZpeGVkIH0pOworICAgICAgICAgICAgY29udGFpbmVyUmVuZGVyZXItPm11dGFi
bGVTdHlsZSgpLnNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoIHsgaW5uZXJUZXh0TG9naWNhbEhlaWdo
dCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSk7CiAgICAgICAgICAgICBzZXROZWVkc0xheW91dChNYXJr
T25seVRoaXMpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgPiBs
b2dpY2FsSGVpZ2h0TGltaXQpIHsKLSAgICAgICAgICAgIGNvbnRhaW5lclJlbmRlcmVyLT5tdXRh
YmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0aChsb2dpY2FsSGVpZ2h0TGltaXQsIEZp
eGVkKSk7CisgICAgICAgICAgICBjb250YWluZXJSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0
TG9naWNhbEhlaWdodChMZW5ndGgobG9naWNhbEhlaWdodExpbWl0LCBMZW5ndGhUeXBlOjpGaXhl
ZCkpOwogICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICAgICAg
fSBlbHNlIGlmIChjb250YWluZXJSZW5kZXJlci0+bG9naWNhbEhlaWdodCgpIDwgY29udGVudExv
Z2ljYWxIZWlnaHQoKSkgewotICAgICAgICAgICAgY29udGFpbmVyUmVuZGVyZXItPm11dGFibGVT
dHlsZSgpLnNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoKGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCksIEZp
eGVkKSk7CisgICAgICAgICAgICBjb250YWluZXJSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0
TG9naWNhbEhlaWdodChMZW5ndGgoY29udGVudExvZ2ljYWxIZWlnaHQoKSwgTGVuZ3RoVHlwZTo6
Rml4ZWQpKTsKICAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgY29udGFpbmVyUmVuZGVyZXItPm11dGFibGVTdHlsZSgp
LnNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIEZpeGVkKSk7
CisgICAgICAgICAgICBjb250YWluZXJSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0TG9naWNh
bEhlaWdodChMZW5ndGgoY29udGFpbmVyTG9naWNhbEhlaWdodCwgTGVuZ3RoVHlwZTo6Rml4ZWQp
KTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBuZWVkIGFub3RoZXIgbGF5b3V0IHBhc3MsIHdlIGhh
dmUgY2hhbmdlZCBvbmUgb2YgY2hpbGRyZW4ncyBoZWlnaHQgc28gd2UgbmVlZCB0byByZWxheW91
dCB0aGVtLgpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjpsYXlvdXQoKQogICAgICAgICBhdXRvIGlubmVyVGV4dFdpZHRoID0gTGF5b3V0VW5pdCB7
IH07CiAgICAgICAgIGlmIChpbm5lclRleHRSZW5kZXJlcikKICAgICAgICAgICAgIGlubmVyVGV4
dFdpZHRoID0gaW5uZXJUZXh0UmVuZGVyZXItPmxvZ2ljYWxXaWR0aCgpOwotICAgICAgICBwbGFj
ZWhvbGRlckJveC0+bXV0YWJsZVN0eWxlKCkuc2V0V2lkdGgoTGVuZ3RoKGlubmVyVGV4dFdpZHRo
IC0gcGxhY2Vob2xkZXJCb3gtPmhvcml6b250YWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCksIEZp
eGVkKSk7CisgICAgICAgIHBsYWNlaG9sZGVyQm94LT5tdXRhYmxlU3R5bGUoKS5zZXRXaWR0aChM
ZW5ndGgoaW5uZXJUZXh0V2lkdGggLSBwbGFjZWhvbGRlckJveC0+aG9yaXpvbnRhbEJvcmRlckFu
ZFBhZGRpbmdFeHRlbnQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICAgICAgYm9vbCBuZWVk
ZWRMYXlvdXQgPSBwbGFjZWhvbGRlckJveC0+bmVlZHNMYXlvdXQoKTsKICAgICAgICAgYm9vbCBw
bGFjZWhvbGRlckJveEhhZExheW91dCA9IHBsYWNlaG9sZGVyQm94LT5ldmVySGFkTGF5b3V0KCk7
CiAgICAgICAgIGlmIChpbm5lclRleHRTaXplQ2hhbmdlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQppbmRleCBkNzVlODcyNmRmMGQ0ODBmMTE3NTVh
N2Q5ZmVlNjAyYWNkZWU4ODQyLi5jMWIxODQ1YzNiZWFmZTlkYjQwODM1MGM4YzdmMGQ3NTNmN2Fi
NTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQpA
QCAtNjksMTQgKzY5LDE0IEBAIHN0YXRpYyBjb25zdCBhdXRvIGFwcGxlUGF5QnV0dG9uTWluaW11
bUhlaWdodCA9IDMwOwogdm9pZCBSZW5kZXJUaGVtZUNvY29hOjphZGp1c3RBcHBsZVBheUJ1dHRv
blN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGNvbnN0CiB7CiAgICAg
aWYgKHN0eWxlLmFwcGxlUGF5QnV0dG9uVHlwZSgpID09IEFwcGxlUGF5QnV0dG9uVHlwZTo6UGxh
aW4pCi0gICAgICAgIHN0eWxlLnNldE1pbldpZHRoKExlbmd0aChhcHBsZVBheUJ1dHRvblBsYWlu
TWluaW11bVdpZHRoLCBGaXhlZCkpOworICAgICAgICBzdHlsZS5zZXRNaW5XaWR0aChMZW5ndGgo
YXBwbGVQYXlCdXR0b25QbGFpbk1pbmltdW1XaWR0aCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAg
ICBlbHNlCi0gICAgICAgIHN0eWxlLnNldE1pbldpZHRoKExlbmd0aChhcHBsZVBheUJ1dHRvbk1p
bmltdW1XaWR0aCwgRml4ZWQpKTsKLSAgICBzdHlsZS5zZXRNaW5IZWlnaHQoTGVuZ3RoKGFwcGxl
UGF5QnV0dG9uTWluaW11bUhlaWdodCwgRml4ZWQpKTsKKyAgICAgICAgc3R5bGUuc2V0TWluV2lk
dGgoTGVuZ3RoKGFwcGxlUGF5QnV0dG9uTWluaW11bVdpZHRoLCBMZW5ndGhUeXBlOjpGaXhlZCkp
OworICAgIHN0eWxlLnNldE1pbkhlaWdodChMZW5ndGgoYXBwbGVQYXlCdXR0b25NaW5pbXVtSGVp
Z2h0LCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogCiAgICAgaWYgKCFzdHlsZS5oYXNFeHBsaWNpdGx5
U2V0Qm9yZGVyUmFkaXVzKCkpIHsKICAgICAgICAgYXV0byBjb3JuZXJSYWRpdXMgPSBQQUw6Omdl
dF9QYXNzS2l0X1BLQXBwbGVQYXlCdXR0b25EZWZhdWx0Q29ybmVyUmFkaXVzKCk7Ci0gICAgICAg
IHN0eWxlLnNldEJvcmRlclJhZGl1cyh7IHsgY29ybmVyUmFkaXVzLCBGaXhlZCB9LCB7IGNvcm5l
clJhZGl1cywgRml4ZWQgfSB9KTsKKyAgICAgICAgc3R5bGUuc2V0Qm9yZGVyUmFkaXVzKHsgeyBj
b3JuZXJSYWRpdXMsIExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgY29ybmVyUmFkaXVzLCBMZW5ndGhU
eXBlOjpGaXhlZCB9IH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tCmluZGV4IDE4MjRlZDc0ZDE2YTMzYzVkYWU1YWY0OWU1MGVhOTk0ODcw
NmE4MjQuLjZmMTk2ZjNhMDcwZDY1ZWM0ZmE4NDFiYzc2YThlMTI0OWMyMzQyOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTM1MCw4ICszNTAsOCBA
QCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RDaGVja2JveFN0eWxlKFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgRWxlbWVudCopIGNvbgogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgc2l6
ZSA9IHN0ZDo6bWF4KHN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpLCAxMFUpOwotICAgIHN0
eWxlLnNldFdpZHRoKHsgc2l6ZSwgRml4ZWQgfSk7Ci0gICAgc3R5bGUuc2V0SGVpZ2h0KHsgc2l6
ZSwgRml4ZWQgfSk7CisgICAgc3R5bGUuc2V0V2lkdGgoeyBzaXplLCBMZW5ndGhUeXBlOjpGaXhl
ZCB9KTsKKyAgICBzdHlsZS5zZXRIZWlnaHQoeyBzaXplLCBMZW5ndGhUeXBlOjpGaXhlZCB9KTsK
IH0KIAogc3RhdGljIENHUG9pbnQgc2hvcnRlbmVkKENHUG9pbnQgc3RhcnQsIENHUG9pbnQgZW5k
LCBmbG9hdCB3aWR0aCkKQEAgLTQ5Miw4ICs0OTIsOCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjph
ZGp1c3RSYWRpb1N0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGNvbnN0
CiAgICAgICAgIHJldHVybjsKIAogICAgIGludCBzaXplID0gc3RkOjptYXgoc3R5bGUuY29tcHV0
ZWRGb250UGl4ZWxTaXplKCksIDEwVSk7Ci0gICAgc3R5bGUuc2V0V2lkdGgoeyBzaXplLCBGaXhl
ZCB9KTsKLSAgICBzdHlsZS5zZXRIZWlnaHQoeyBzaXplLCBGaXhlZCB9KTsKKyAgICBzdHlsZS5z
ZXRXaWR0aCh7IHNpemUsIExlbmd0aFR5cGU6OkZpeGVkIH0pOworICAgIHN0eWxlLnNldEhlaWdo
dCh7IHNpemUsIExlbmd0aFR5cGU6OkZpeGVkIH0pOwogICAgIHN0eWxlLnNldEJvcmRlclJhZGl1
cyh7IHNpemUgLyAyLCBzaXplIC8gMiB9KTsKIH0KIApAQCAtNjE2LDcgKzYxNiw3IEBAIHZvaWQg
UmVuZGVyVGhlbWVJT1M6OmFkanVzdFJvdW5kQm9yZGVyUmFkaXVzKFJlbmRlclN0eWxlJiBzdHls
ZSwgUmVuZGVyQm94JiBib3gpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgbm90IGJlIHJlbHlpbmcgb24gYm9yZGVyIHJhZGl1cyBmb3IgdGhlIGFwcGVhcmFuY2Ug
b2Ygb3VyIGNvbnRyb2xzIDxyZGFyOi8vcHJvYmxlbS83Njc1NDkzPi4KLSAgICBzdHlsZS5zZXRC
b3JkZXJSYWRpdXMoeyB7IHN0ZDo6bWluKGJveC53aWR0aCgpLCBib3guaGVpZ2h0KCkpIC8gMiwg
Rml4ZWQgfSwgeyBib3guaGVpZ2h0KCkgLyAyLCBGaXhlZCB9IH0pOworICAgIHN0eWxlLnNldEJv
cmRlclJhZGl1cyh7IHsgc3RkOjptaW4oYm94LndpZHRoKCksIGJveC5oZWlnaHQoKSkgLyAyLCBM
ZW5ndGhUeXBlOjpGaXhlZCB9LCB7IGJveC5oZWlnaHQoKSAvIDIsIExlbmd0aFR5cGU6OkZpeGVk
IH0gfSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGx5Q29tbW9uQnV0dG9uUGFkZGluZ1RvU3R5bGUo
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpAQCAtNjM0LDcgKzYz
NCw3IEBAIHN0YXRpYyB2b2lkIGFkanVzdFNlbGVjdExpc3RCdXR0b25TdHlsZShSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQmIGVsZW1lCiAgICAgYXBwbHlDb21tb25CdXR0b25QYWRk
aW5nVG9TdHlsZShzdHlsZSwgZWxlbWVudCk7CiAKICAgICAvLyBFbmZvcmNlICJsaW5lLWhlaWdo
dDogbm9ybWFsIi4KLSAgICBzdHlsZS5zZXRMaW5lSGVpZ2h0KExlbmd0aCgtMTAwLjAsIFBlcmNl
bnQpKTsKKyAgICBzdHlsZS5zZXRMaW5lSGVpZ2h0KExlbmd0aCgtMTAwLjAsIExlbmd0aFR5cGU6
OlBlcmNlbnQpKTsKIH0KICAgICAKIGNsYXNzIFJlbmRlclRoZW1lTWVhc3VyZVRleHRDbGllbnQg
OiBwdWJsaWMgTWVhc3VyZVRleHRDbGllbnQgewpAQCAtNjc3LDcgKzY3Nyw3IEBAIHN0YXRpYyB2
b2lkIGFkanVzdElucHV0RWxlbWVudEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgSFRNTElucHV0RWxlCiAKICAgICBpZiAobWF4aW11bVdpZHRoID4gMCkgewogICAgICAgICBp
bnQgd2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1heGltdW1XaWR0aCArIE1lbnVMaXN0QnV0dG9u
UGFkZGluZ0FmdGVyKTsKLSAgICAgICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhl
ZCkpOworICAgICAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgod2lkdGgsIExlbmd0aFR5cGU6OkZp
eGVkKSk7CiAgICAgICAgIHN0eWxlLnNldEJveFNpemluZyhCb3hTaXppbmc6OkNvbnRlbnRCb3gp
OwogICAgIH0KIH0KQEAgLTY4Niw5ICs2ODYsOSBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1
c3RNZW51TGlzdEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudAog
ewogICAgIC8vIFNldCB0aGUgbWluLWhlaWdodCB0byBiZSBhdCBsZWFzdCBNZW51TGlzdE1pbkhl
aWdodC4KICAgICBpZiAoc3R5bGUuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAgIHN0eWxlLnNl
dE1pbkhlaWdodChMZW5ndGgoc3RkOjptYXgoTWVudUxpc3RNaW5IZWlnaHQsIHN0YXRpY19jYXN0
PGludD4oTWVudUxpc3RCYXNlSGVpZ2h0IC8gTWVudUxpc3RCYXNlRm9udFNpemUgKiBzdHlsZS5m
b250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKSkpLCBGaXhlZCkpOworICAgICAgICBzdHls
ZS5zZXRNaW5IZWlnaHQoTGVuZ3RoKHN0ZDo6bWF4KE1lbnVMaXN0TWluSGVpZ2h0LCBzdGF0aWNf
Y2FzdDxpbnQ+KE1lbnVMaXN0QmFzZUhlaWdodCAvIE1lbnVMaXN0QmFzZUZvbnRTaXplICogc3R5
bGUuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCkpKSwgTGVuZ3RoVHlwZTo6Rml4ZWQp
KTsKICAgICBlbHNlCi0gICAgICAgIHN0eWxlLnNldE1pbkhlaWdodChMZW5ndGgoTWVudUxpc3RN
aW5IZWlnaHQsIEZpeGVkKSk7CisgICAgICAgIHN0eWxlLnNldE1pbkhlaWdodChMZW5ndGgoTWVu
dUxpc3RNaW5IZWlnaHQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAKICAgICBpZiAoIWVsZW1lbnQp
CiAgICAgICAgIHJldHVybjsKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9T
OjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVu
dCogZQogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgYmUgcmVseWluZyBvbiBib3JkZXIg
cmFkaXVzIGZvciB0aGUgYXBwZWFyYW5jZSBvZiBvdXIgY29udHJvbHMgPHJkYXI6Ly9wcm9ibGVt
Lzc2NzU0OTM+LgogICAgIGludCByYWRpdXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGtUcmFja1JhZGl1
cyk7Ci0gICAgc3R5bGUuc2V0Qm9yZGVyUmFkaXVzKHsgeyByYWRpdXMsIEZpeGVkIH0sIHsgcmFk
aXVzLCBGaXhlZCB9IH0pOworICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyh7IHsgcmFkaXVzLCBM
ZW5ndGhUeXBlOjpGaXhlZCB9LCB7IHJhZGl1cywgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9KTsKIH0K
IAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmpl
Y3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CkBAIC05MzAsMTIgKzkzMCwxMiBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RTbGlkZXJU
aHVtYlNpemUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KikgYwogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBFbmZvcmNlICJib3JkZXItcmFkaXVzOiA1MCUiLgotICAgIHN0eWxl
LnNldEJvcmRlclJhZGl1cyh7IHsgNTAsIFBlcmNlbnQgfSwgeyA1MCwgUGVyY2VudCB9IH0pOwor
ICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyh7IHsgNTAsIExlbmd0aFR5cGU6OlBlcmNlbnQgfSwg
eyA1MCwgTGVuZ3RoVHlwZTo6UGVyY2VudCB9IH0pOwogCiAgICAgLy8gRW5mb3JjZSBhIDE2eDE2
IHNpemUgaWYgbm8gc2l6ZSBpcyBwcm92aWRlZC4KICAgICBpZiAoc3R5bGUud2lkdGgoKS5pc0lu
dHJpbnNpY09yQXV0bygpIHx8IHN0eWxlLmhlaWdodCgpLmlzQXV0bygpKSB7Ci0gICAgICAgIHN0
eWxlLnNldFdpZHRoKHsga0RlZmF1bHRTbGlkZXJUaHVtYlNpemUsIEZpeGVkIH0pOwotICAgICAg
ICBzdHlsZS5zZXRIZWlnaHQoeyBrRGVmYXVsdFNsaWRlclRodW1iU2l6ZSwgRml4ZWQgfSk7Cisg
ICAgICAgIHN0eWxlLnNldFdpZHRoKHsga0RlZmF1bHRTbGlkZXJUaHVtYlNpemUsIExlbmd0aFR5
cGU6OkZpeGVkIH0pOworICAgICAgICBzdHlsZS5zZXRIZWlnaHQoeyBrRGVmYXVsdFNsaWRlclRo
dW1iU2l6ZSwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSk7CiAgICAgfQogfQogCkBAIC0xMDg3LDcgKzEw
ODcsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZShSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbgogICAgIC8vIHdpdGggdGhlIGZvbnQgc2l6
ZS4gbWluLWhlaWdodCBpcyB1c2VkIHJhdGhlciB0aGFuIGhlaWdodCB0byBhdm9pZCBjbGlwcGlu
ZyB0aGUgY29udGVudHMgb2YKICAgICAvLyB0aGUgYnV0dG9uIGluIGNhc2VzIHdoZXJlIHRoZSBi
dXR0b24gY29udGFpbnMgbW9yZSB0aGFuIG9uZSBsaW5lIG9mIHRleHQuCiAgICAgaWYgKHN0eWxl
LndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSB8fCBzdHlsZS5oZWlnaHQoKS5pc0F1dG8oKSkK
LSAgICAgICAgc3R5bGUuc2V0TWluSGVpZ2h0KExlbmd0aChDb250cm9sQmFzZUhlaWdodCAvIENv
bnRyb2xCYXNlRm9udFNpemUgKiBzdHlsZS5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUo
KSwgRml4ZWQpKTsKKyAgICAgICAgc3R5bGUuc2V0TWluSGVpZ2h0KExlbmd0aChDb250cm9sQmFz
ZUhlaWdodCAvIENvbnRyb2xCYXNlRm9udFNpemUgKiBzdHlsZS5mb250RGVzY3JpcHRpb24oKS5j
b21wdXRlZFNpemUoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKIAogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQogICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0gQ29sb3JXZWxsUGFydCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA0NWRmMmEy
MzY0MWE5ODhlODU3MjgzMWFkYWVkM2VjYzgyYWY0OTcwLi5iZGRmMjU3NDYyNzgzNjM5YjRlYjlh
MTZjMzAxYWViNDdkYzJhYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCkBAIC05ODksOSArOTg5LDkgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0U2l6
ZUZyb21Gb250KFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgSW50U2l6ZSogc2l6ZXMpIGMKICAg
ICAvLyBGSVhNRTogQ2hlY2sgaXMgZmxhd2VkLCBzaW5jZSBpdCBkb2Vzbid0IHRha2UgbWluLXdp
ZHRoL21heC13aWR0aCBpbnRvIGFjY291bnQuCiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvckZv
bnQoc3R5bGUsIHNpemVzKTsKICAgICBpZiAoc3R5bGUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0
bygpICYmIHNpemUud2lkdGgoKSA+IDApCi0gICAgICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChz
aXplLndpZHRoKCksIEZpeGVkKSk7CisgICAgICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChzaXpl
LndpZHRoKCksIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgaWYgKHN0eWxlLmhlaWdodCgpLmlz
QXV0bygpICYmIHNpemUuaGVpZ2h0KCkgPiAwKQotICAgICAgICBzdHlsZS5zZXRIZWlnaHQoTGVu
Z3RoKHNpemUuaGVpZ2h0KCksIEZpeGVkKSk7CisgICAgICAgIHN0eWxlLnNldEhlaWdodChMZW5n
dGgoc2l6ZS5oZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKIH0KIAogdm9pZCBSZW5kZXJU
aGVtZU1hYzo6c2V0Rm9udEZyb21Db250cm9sU2l6ZShSZW5kZXJTdHlsZSYgc3R5bGUsIE5TQ29u
dHJvbFNpemUgY29udHJvbFNpemUpIGNvbnN0CkBAIC0xMDY5LDkgKzEwNjksOSBAQCB2b2lkIFJl
bmRlclRoZW1lTWFjOjphZGp1c3RMaXN0QnV0dG9uU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBj
b25zdCBFbGVtZW50KikgYwogewogICAgIC8vIEFkZCBhIG1hcmdpbiB0byBwbGFjZSB0aGUgYnV0
dG9uIGF0IGVuZCBvZiB0aGUgaW5wdXQgZmllbGQuCiAgICAgaWYgKHN0eWxlLmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSkKLSAgICAgICAgc3R5bGUuc2V0TWFyZ2luUmlnaHQoTGVuZ3RoKC00LCBG
aXhlZCkpOworICAgICAgICBzdHlsZS5zZXRNYXJnaW5SaWdodChMZW5ndGgoLTQsIExlbmd0aFR5
cGU6OkZpeGVkKSk7CiAgICAgZWxzZQotICAgICAgICBzdHlsZS5zZXRNYXJnaW5MZWZ0KExlbmd0
aCgtNCwgRml4ZWQpKTsKKyAgICAgICAgc3R5bGUuc2V0TWFyZ2luTGVmdChMZW5ndGgoLTQsIExl
bmd0aFR5cGU6OkZpeGVkKSk7CiB9CiAKICNlbmRpZgpAQCAtMTYwNiw3ICsxNjA2LDcgQEAgdm9p
ZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IEVsZW1lbnQqIGUpIGMKICAgICBzdHlsZS5yZXNldFBhZGRpbmcoKTsKIAogICAgIC8v
IEhlaWdodCBpcyBsb2NrZWQgdG8gYXV0by4KLSAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKEF1
dG8pKTsKKyAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsKIAog
ICAgIC8vIFdoaXRlLXNwYWNlIGlzIGxvY2tlZCB0byBwcmUKICAgICBzdHlsZS5zZXRXaGl0ZVNw
YWNlKFdoaXRlU3BhY2U6OlByZSk7CkBAIC0xNjgzLDcgKzE2ODMsNyBAQCB2b2lkIFJlbmRlclRo
ZW1lTWFjOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgRWxlbWVudAogICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyhJbnRTaXplKGludChiYXNlQm9y
ZGVyUmFkaXVzICsgZm9udFNjYWxlIC0gMSksIGludChiYXNlQm9yZGVyUmFkaXVzICsgZm9udFNj
YWxlIC0gMSkpKTsgLy8gRklYTUU6IFJvdW5kIHVwPwogCiAgICAgY29uc3QgaW50IG1pbkhlaWdo
dCA9IDE1OwotICAgIHN0eWxlLnNldE1pbkhlaWdodChMZW5ndGgobWluSGVpZ2h0LCBGaXhlZCkp
OworICAgIHN0eWxlLnNldE1pbkhlaWdodChMZW5ndGgobWluSGVpZ2h0LCBMZW5ndGhUeXBlOjpG
aXhlZCkpOwogCiAgICAgc3R5bGUuc2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExp
bmVIZWlnaHQoKSk7CiB9CkBAIC0xOTI5LDE1ICsxOTI5LDE1IEBAIHZvaWQgUmVuZGVyVGhlbWVN
YWM6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVt
ZW50KikKICAgICBzZXRGb250RnJvbUNvbnRyb2xTaXplKHN0eWxlLCBjb250cm9sU2l6ZUZvckZv
bnQoc3R5bGUpKTsKIAogICAgIC8vIE92ZXJyaWRlIGhlaWdodC4KLSAgICBzdHlsZS5zZXRIZWln
aHQoTGVuZ3RoKEF1dG8pKTsKKyAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKExlbmd0aFR5cGU6
OkF1dG8pKTsKICAgICBzZXRTZWFyY2hGaWVsZFNpemUoc3R5bGUpOwogCiAgICAgLy8gT3ZlcnJp
ZGUgcGFkZGluZyBzaXplIHRvIG1hdGNoIEFwcEtpdCB0ZXh0IHBvc2l0aW9uaW5nLgogICAgIGNv
bnN0IGludCBwYWRkaW5nID0gMSAqIHN0eWxlLmVmZmVjdGl2ZVpvb20oKTsKLSAgICBzdHlsZS5z
ZXRQYWRkaW5nTGVmdChMZW5ndGgocGFkZGluZywgRml4ZWQpKTsKLSAgICBzdHlsZS5zZXRQYWRk
aW5nUmlnaHQoTGVuZ3RoKHBhZGRpbmcsIEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0UGFkZGluZ1Rv
cChMZW5ndGgocGFkZGluZywgRml4ZWQpKTsKLSAgICBzdHlsZS5zZXRQYWRkaW5nQm90dG9tKExl
bmd0aChwYWRkaW5nLCBGaXhlZCkpOworICAgIHN0eWxlLnNldFBhZGRpbmdMZWZ0KExlbmd0aChw
YWRkaW5nLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldFBhZGRpbmdSaWdodChM
ZW5ndGgocGFkZGluZywgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKKyAgICBzdHlsZS5zZXRQYWRkaW5n
VG9wKExlbmd0aChwYWRkaW5nLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldFBh
ZGRpbmdCb3R0b20oTGVuZ3RoKHBhZGRpbmcsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAKICAgICBz
dHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CkBAIC0yMDA1LDggKzIwMDUsOCBAQCBjb25z
dCBJbnRTaXplKiBSZW5kZXJUaGVtZU1hYzo6Y2FuY2VsQnV0dG9uU2l6ZXMoKSBjb25zdAogdm9p
ZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShSZW5k
ZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqKSBjb25zdAogewogICAgIEludFNpemUgc2l6
ZSA9IHNpemVGb3JTeXN0ZW1Gb250KHN0eWxlLCBjYW5jZWxCdXR0b25TaXplcygpKTsKLSAgICBz
dHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBGaXhlZCkpOwotICAgIHN0eWxlLnNl
dEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKKyAgICBzdHlsZS5zZXRXaWR0
aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNl
dEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICBz
dHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAKQEAgLTIwMjEsOCArMjAyMSw4IEBAIGNv
bnN0IGludCBlbXB0eVJlc3VsdHNPZmZzZXQgPSA5Owogdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRq
dXN0U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydFN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZv
bnQoc3R5bGUsIHJlc3VsdHNCdXR0b25TaXplcygpKTsKLSAgICBzdHlsZS5zZXRXaWR0aChMZW5n
dGgoc2l6ZS53aWR0aCgpIC0gZW1wdHlSZXN1bHRzT2Zmc2V0LCBGaXhlZCkpOwotICAgIHN0eWxl
LnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKKyAgICBzdHlsZS5zZXRX
aWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpIC0gZW1wdHlSZXN1bHRzT2Zmc2V0LCBMZW5ndGhUeXBl
OjpGaXhlZCkpOworICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgTGVu
Z3RoVHlwZTo6Rml4ZWQpKTsKICAgICBzdHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAK
QEAgLTIwMzQsOCArMjAzNCw4IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmll
bGREZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQCiB2b2lkIFJlbmRl
clRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydFN0eWxlKFJl
bmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBz
aXplID0gc2l6ZUZvclN5c3RlbUZvbnQoc3R5bGUsIHJlc3VsdHNCdXR0b25TaXplcygpKTsKLSAg
ICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBGaXhlZCkpOwotICAgIHN0eWxl
LnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKKyAgICBzdHlsZS5zZXRX
aWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxl
LnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAg
ICBzdHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAKQEAgLTIwNzAsOCArMjA3MCw4IEBA
IGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBh
cnQoY29uc3QgUmVuZGVyQm94JiBib3gsCiB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1l
bnQqKSBjb25zdAogewogICAgIEludFNpemUgc2l6ZSA9IHNpemVGb3JTeXN0ZW1Gb250KHN0eWxl
LCByZXN1bHRzQnV0dG9uU2l6ZXMoKSk7Ci0gICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKHNpemUu
d2lkdGgoKSArIHJlc3VsdHNBcnJvd1dpZHRoLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldEhlaWdo
dChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKKyAgICBzdHlsZS5zZXRXaWR0aChMZW5n
dGgoc2l6ZS53aWR0aCgpICsgcmVzdWx0c0Fycm93V2lkdGgsIExlbmd0aFR5cGU6OkZpeGVkKSk7
CisgICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChzaXplLmhlaWdodCgpLCBMZW5ndGhUeXBlOjpG
aXhlZCkpOwogICAgIHN0eWxlLnNldEJveFNoYWRvdyhudWxscHRyKTsKIH0KIApAQCAtMjE1Miw4
ICsyMTUyLDggQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJl
bmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGMKIHsKICAgICBmbG9hdCB6b29tTGV2
ZWwgPSBzdHlsZS5lZmZlY3RpdmVab29tKCk7CiAgICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9
PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0IHx8IHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBTbGlk
ZXJUaHVtYlZlcnRpY2FsUGFydCkgewotICAgICAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc3Rh
dGljX2Nhc3Q8aW50PihzbGlkZXJUaHVtYldpZHRoICogem9vbUxldmVsKSwgRml4ZWQpKTsKLSAg
ICAgICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+KHNsaWRlclRodW1i
SGVpZ2h0ICogem9vbUxldmVsKSwgRml4ZWQpKTsKKyAgICAgICAgc3R5bGUuc2V0V2lkdGgoTGVu
Z3RoKHN0YXRpY19jYXN0PGludD4oc2xpZGVyVGh1bWJXaWR0aCAqIHpvb21MZXZlbCksIExlbmd0
aFR5cGU6OkZpeGVkKSk7CisgICAgICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc3RhdGljX2Nh
c3Q8aW50PihzbGlkZXJUaHVtYkhlaWdodCAqIHpvb21MZXZlbCksIExlbmd0aFR5cGU6OkZpeGVk
KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2lu
LmNwcAppbmRleCAwYzIyMmQ1OWJiNmUzMGExNDEzYWJlZGVlOWNlMGQxMzZjZTVkYjg1Li5kOTc2
MzA0ZjhiZDc1YTdkN2I1N2I4ZmI5NTAxM2RhZjY0NmI0MTVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTY4Myw4ICs2ODMsOCBAQCB2b2lkIFJl
bmRlclRoZW1lV2luOjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShSZW5kZXJTdHlsZSYgc3R5
bGUsIGNvbnN0IEVsZW1lbgogICAgIGludCB3aWR0aCA9IDo6R2V0U3lzdGVtTWV0cmljcyhTTV9D
WFZTQ1JPTEwpOwogICAgIGlmICh3aWR0aCA8PSAwKQogICAgICAgICB3aWR0aCA9IDE3OyAvLyBW
aXN0YSdzIGRlZmF1bHQuCi0gICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhlZCkp
OwotICAgIHN0eWxlLnNldE1pbldpZHRoKExlbmd0aCh3aWR0aCwgRml4ZWQpKTsKKyAgICBzdHls
ZS5zZXRXaWR0aChMZW5ndGgod2lkdGgsIExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAgc3R5bGUu
c2V0TWluV2lkdGgoTGVuZ3RoKHdpZHRoLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogfQogCiBib29s
IFJlbmRlclRoZW1lV2luOjpwYWludElubmVyU3BpbkJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3Qm
IG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKQEAgLTcxNCw5ICs3MTQs
OSBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjpzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUmIHN0
eWxlKSBjb25zdAogICAgIC8vIHRoZSBoaWdoZXIgRFBJLiAgVW50aWwgb3VyIGVudGlyZSBlbmdp
bmUgaG9ub3JzIGEgRFBJIHNldHRpbmcgb3RoZXIgdGhhbiA5Niwgd2UgY2FuJ3QgcmVseSBvbiB0
aGUgdGhlbWUncwogICAgIC8vIG1ldHJpY3MuCiAgICAgaWYgKHN0eWxlLndpZHRoKCkuaXNJbnRy
aW5zaWNPckF1dG8oKSkKLSAgICAgICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKDEzLCBGaXhlZCkp
OworICAgICAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoMTMsIExlbmd0aFR5cGU6OkZpeGVkKSk7
CiAgICAgaWYgKHN0eWxlLmhlaWdodCgpLmlzQXV0bygpKQotICAgICAgICBzdHlsZS5zZXRIZWln
aHQoTGVuZ3RoKDEzLCBGaXhlZCkpOworICAgICAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKDEz
LCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogfQogCiBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFRl
eHRGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3Qg
RmxvYXRSZWN0JiByKQpAQCAtNzYxLDE5ICs3NjEsMTkgQEAgdm9pZCBSZW5kZXJUaGVtZVdpbjo6
YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1l
bnQKICAgICBjb25zdCBpbnQgZHJvcERvd25Cb3hNaW5IZWlnaHQgPSAxMjsKICAgICAKICAgICAv
LyBQb3NpdGlvbiB0aGUgdGV4dCBjb3JyZWN0bHkgd2l0aGluIHRoZSBzZWxlY3QgYm94IGFuZCBt
YWtlIHRoZSBib3ggd2lkZSBlbm91Z2ggdG8gZml0IHRoZSBkcm9wZG93biBidXR0b24KLSAgICBz
dHlsZS5zZXRQYWRkaW5nVG9wKExlbmd0aChkcm9wRG93bkJveFBhZGRpbmdUb3AsIEZpeGVkKSk7
Ci0gICAgc3R5bGUuc2V0UGFkZGluZ1JpZ2h0KExlbmd0aChkcm9wRG93bkJveFBhZGRpbmdSaWdo
dCwgRml4ZWQpKTsKLSAgICBzdHlsZS5zZXRQYWRkaW5nQm90dG9tKExlbmd0aChkcm9wRG93bkJv
eFBhZGRpbmdCb3R0b20sIEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0UGFkZGluZ0xlZnQoTGVuZ3Ro
KGRyb3BEb3duQm94UGFkZGluZ0xlZnQsIEZpeGVkKSk7CisgICAgc3R5bGUuc2V0UGFkZGluZ1Rv
cChMZW5ndGgoZHJvcERvd25Cb3hQYWRkaW5nVG9wLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAg
IHN0eWxlLnNldFBhZGRpbmdSaWdodChMZW5ndGgoZHJvcERvd25Cb3hQYWRkaW5nUmlnaHQsIExl
bmd0aFR5cGU6OkZpeGVkKSk7CisgICAgc3R5bGUuc2V0UGFkZGluZ0JvdHRvbShMZW5ndGgoZHJv
cERvd25Cb3hQYWRkaW5nQm90dG9tLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNl
dFBhZGRpbmdMZWZ0KExlbmd0aChkcm9wRG93bkJveFBhZGRpbmdMZWZ0LCBMZW5ndGhUeXBlOjpG
aXhlZCkpOwogCiAgICAgLy8gSGVpZ2h0IGlzIGxvY2tlZCB0byBhdXRvCi0gICAgc3R5bGUuc2V0
SGVpZ2h0KExlbmd0aChBdXRvKSk7CisgICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChMZW5ndGhU
eXBlOjpBdXRvKSk7CiAKICAgICAvLyBDYWxjdWxhdGUgb3VyIG1pbi1oZWlnaHQKICAgICBpbnQg
bWluSGVpZ2h0ID0gc3R5bGUuZm9udE1ldHJpY3MoKS5oZWlnaHQoKTsKICAgICBtaW5IZWlnaHQg
PSBzdGQ6Om1heChtaW5IZWlnaHQsIGRyb3BEb3duQm94TWluSGVpZ2h0KTsKIAotICAgIHN0eWxl
LnNldE1pbkhlaWdodChMZW5ndGgobWluSGVpZ2h0LCBGaXhlZCkpOworICAgIHN0eWxlLnNldE1p
bkhlaWdodChMZW5ndGgobWluSGVpZ2h0LCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogCiAgICAgc3R5
bGUuc2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CiAgICAg
CkBAIC04MzUsMTEgKzgzNSwxMSBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTbGlkZXJU
aHVtYlNpemUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KikgYwogewogICAgIENv
bnRyb2xQYXJ0IHBhcnQgPSBzdHlsZS5hcHBlYXJhbmNlKCk7CiAgICAgaWYgKHBhcnQgPT0gU2xp
ZGVyVGh1bWJWZXJ0aWNhbFBhcnQpIHsKLSAgICAgICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKHNs
aWRlclRodW1iSGVpZ2h0LCBGaXhlZCkpOwotICAgICAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3Ro
KHNsaWRlclRodW1iV2lkdGgsIEZpeGVkKSk7CisgICAgICAgIHN0eWxlLnNldFdpZHRoKExlbmd0
aChzbGlkZXJUaHVtYkhlaWdodCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKKyAgICAgICAgc3R5bGUu
c2V0SGVpZ2h0KExlbmd0aChzbGlkZXJUaHVtYldpZHRoLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwog
ICAgIH0gZWxzZSBpZiAocGFydCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KSB7Ci0gICAg
ICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChzbGlkZXJUaHVtYldpZHRoLCBGaXhlZCkpOwotICAg
ICAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKHNsaWRlclRodW1iSGVpZ2h0LCBGaXhlZCkpOwor
ICAgICAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2xpZGVyVGh1bWJXaWR0aCwgTGVuZ3RoVHlw
ZTo6Rml4ZWQpKTsKKyAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChzbGlkZXJUaHVtYkhl
aWdodCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICB9CiB9CiAKQEAgLTg1MiwxMCArODUyLDEw
IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoUmVuZGVyU3R5
bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KiBlCiB7CiAgICAgLy8gT3ZlcnJpZGUgcGFkZGluZ1Np
emUgdG8gbWF0Y2ggQXBwS2l0IHRleHQgcG9zaXRpb25pbmcuCiAgICAgY29uc3QgaW50IHBhZGRp
bmcgPSAxOwotICAgIHN0eWxlLnNldFBhZGRpbmdMZWZ0KExlbmd0aChwYWRkaW5nLCBGaXhlZCkp
OwotICAgIHN0eWxlLnNldFBhZGRpbmdSaWdodChMZW5ndGgocGFkZGluZywgRml4ZWQpKTsKLSAg
ICBzdHlsZS5zZXRQYWRkaW5nVG9wKExlbmd0aChwYWRkaW5nLCBGaXhlZCkpOwotICAgIHN0eWxl
LnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKHBhZGRpbmcsIEZpeGVkKSk7CisgICAgc3R5bGUuc2V0
UGFkZGluZ0xlZnQoTGVuZ3RoKHBhZGRpbmcsIExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAgc3R5
bGUuc2V0UGFkZGluZ1JpZ2h0KExlbmd0aChwYWRkaW5nLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwor
ICAgIHN0eWxlLnNldFBhZGRpbmdUb3AoTGVuZ3RoKHBhZGRpbmcsIExlbmd0aFR5cGU6OkZpeGVk
KSk7CisgICAgc3R5bGUuc2V0UGFkZGluZ0JvdHRvbShMZW5ndGgocGFkZGluZywgTGVuZ3RoVHlw
ZTo6Rml4ZWQpKTsKICAgICBpZiAoZSAmJiBlLT5mb2N1c2VkKCkgJiYgZS0+ZG9jdW1lbnQoKS5m
cmFtZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKICAgICAgICAgc3R5bGUu
c2V0T3V0bGluZU9mZnNldCgtMik7CiB9CkBAIC04ODgsMTUgKzg4OCwxNSBAQCB2b2lkIFJlbmRl
clRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFJlbmRlclN0eWxl
JiBzdHlsZSwgY29ucwogICAgIC8vIFNjYWxlIHRoZSBidXR0b24gc2l6ZSBiYXNlZCBvbiB0aGUg
Zm9udCBzaXplCiAgICAgZmxvYXQgZm9udFNjYWxlID0gc3R5bGUuY29tcHV0ZWRGb250UGl4ZWxT
aXplKCkgLyBkZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemU7CiAgICAgaW50IGNhbmNlbEJ1dHRv
blNpemUgPSBscm91bmRmKHN0ZDo6bWluKHN0ZDo6bWF4KG1pbkNhbmNlbEJ1dHRvblNpemUsIGRl
ZmF1bHRDYW5jZWxCdXR0b25TaXplICogZm9udFNjYWxlKSwgbWF4Q2FuY2VsQnV0dG9uU2l6ZSkp
OwotICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChjYW5jZWxCdXR0b25TaXplLCBGaXhlZCkpOwot
ICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoY2FuY2VsQnV0dG9uU2l6ZSwgRml4ZWQpKTsKKyAg
ICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoY2FuY2VsQnV0dG9uU2l6ZSwgTGVuZ3RoVHlwZTo6Rml4
ZWQpKTsKKyAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKGNhbmNlbEJ1dHRvblNpemUsIExlbmd0
aFR5cGU6OkZpeGVkKSk7CiB9CiAKIHZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZp
ZWxkRGVjb3JhdGlvblBhcnRTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQq
KSBjb25zdAogewogICAgIEludFNpemUgZW1wdHlTaXplKDEsIDExKTsKLSAgICBzdHlsZS5zZXRX
aWR0aChMZW5ndGgoZW1wdHlTaXplLndpZHRoKCksIEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0SGVp
Z2h0KExlbmd0aChlbXB0eVNpemUuaGVpZ2h0KCksIEZpeGVkKSk7CisgICAgc3R5bGUuc2V0V2lk
dGgoTGVuZ3RoKGVtcHR5U2l6ZS53aWR0aCgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0
eWxlLnNldEhlaWdodChMZW5ndGgoZW1wdHlTaXplLmhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhl
ZCkpOwogfQogCiB2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNE
ZWNvcmF0aW9uUGFydFN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGNv
bnN0CkBAIC05MDUsOCArOTA1LDggQEAgdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHlsZShSZW5kZXJTdHlsZSYgc3QKICAgICBmbG9h
dCBmb250U2NhbGUgPSBzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAvIGRlZmF1bHRDb250
cm9sRm9udFBpeGVsU2l6ZTsKICAgICBpbnQgbWFnbmlmaWVyU2l6ZSA9IGxyb3VuZGYoc3RkOjpt
aW4oc3RkOjptYXgobWluU2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblNpemUsIGRlZmF1bHRT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU2l6ZSAqIGZvbnRTY2FsZSksIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25TaXplKSk7Ci0gICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKG1hZ25pZmllclNpemUsIEZpeGVk
KSk7Ci0gICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChtYWduaWZpZXJTaXplLCBGaXhlZCkpOwor
ICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChtYWduaWZpZXJTaXplLCBMZW5ndGhUeXBlOjpGaXhl
ZCkpOworICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgobWFnbmlmaWVyU2l6ZSwgTGVuZ3RoVHlw
ZTo6Rml4ZWQpKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJl
c3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJCb3gmIG8sIGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQpAQCAtOTM4LDggKzkzOCw4IEBAIHZvaWQgUmVu
ZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFJlbmRlclN0
eWxlJiBzdHlsZSwgY29uCiAgICAgaW50IG1hZ25pZmllckhlaWdodCA9IGxyb3VuZGYoc3RkOjpt
aW4oc3RkOjptYXgobWluU2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblNpemUsIGRlZmF1bHRT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU2l6ZSAqIGZvbnRTY2FsZSksIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9u
U2l6ZSkpOwogICAgIGludCBtYWduaWZpZXJXaWR0aCA9IGxyb3VuZGYobWFnbmlmaWVySGVpZ2h0
ICogZGVmYXVsdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbldpZHRoIC8gZGVmYXVsdFNlYXJjaEZp
ZWxkUmVzdWx0c0RlY29yYXRpb25TaXplKTsKLSAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgobWFn
bmlmaWVyV2lkdGgsIEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChtYWduaWZp
ZXJIZWlnaHQsIEZpeGVkKSk7CisgICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKG1hZ25pZmllcldp
ZHRoLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgobWFn
bmlmaWVySGVpZ2h0LCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogfQogCiBib29sIFJlbmRlclRoZW1l
V2luOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBSZW5kZXJCb3gmIG8sIGNv
bnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKaW5kZXggYWMwZWEwNTJmMGIzZmQzNjJk
MTI3MWQwZDY0YTQwNWY5ZGU3OWIxYi4uYWIzNmJkMGQxMmJhYmVjMDIxYmVlODc4MzM2ODJmOWE4
MmVmODI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3Bw
CkBAIC0xNTQsNyArMTU0LDcgQEAgYXV0byBUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3RUZXh0
Tm9kZVNpemVzKCkgLT4gU3RpbGxIYXNOb2RlcwogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgYXV0byBuZXdQYXJlbnRTdHlsZSA9IGNsb25lUmVuZGVyU3R5bGVXaXRoU3RhdGUocGFy
ZW50U3R5bGUpOwotICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRMaW5lSGVpZ2h0KGxpbmVIZWln
aHRMZW5ndGguaXNOZWdhdGl2ZSgpID8gTGVuZ3RoKGxpbmVIZWlnaHRMZW5ndGgpIDogTGVuZ3Ro
KGxpbmVIZWlnaHQsIEZpeGVkKSk7CisgICAgICAgIG5ld1BhcmVudFN0eWxlLnNldExpbmVIZWln
aHQobGluZUhlaWdodExlbmd0aC5pc05lZ2F0aXZlKCkgPyBMZW5ndGgobGluZUhlaWdodExlbmd0
aCkgOiBMZW5ndGgobGluZUhlaWdodCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICAgICAgbmV3
UGFyZW50U3R5bGUuc2V0U3BlY2lmaWVkTGluZUhlaWdodChMZW5ndGggeyBsaW5lSGVpZ2h0TGVu
Z3RoIH0pOwogICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92
ZShmb250RGVzY3JpcHRpb24pKTsKICAgICAgICAgbmV3UGFyZW50U3R5bGUuZm9udENhc2NhZGUo
KS51cGRhdGUoJm5vZGUtPmRvY3VtZW50KCkuZm9udFNlbGVjdG9yKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMmQ5ZGVhMzVkNmI0
NDNmYmE3YmRkZjljMzU3MjllZWY0MjdmNjA4NC4uOGRkYzE3MjlhYzhmZTVlNmM1ZTZjYWU1MjUz
ZWRiNjIzNDMxMzdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFz
aWNTaGFwZXMuY3BwCkBAIC00OSwxMiArNDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9p
ZCBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZTo6dXBkYXRlQ29tcHV0ZWRMZW5ndGgoKQogewog
ICAgIGlmIChtX2RpcmVjdGlvbiA9PSBUb3BMZWZ0KSB7Ci0gICAgICAgIG1fY29tcHV0ZWRMZW5n
dGggPSBtX2xlbmd0aC5pc1VuZGVmaW5lZCgpID8gTGVuZ3RoKDAsIEZpeGVkKSA6IG1fbGVuZ3Ro
OworICAgICAgICBtX2NvbXB1dGVkTGVuZ3RoID0gbV9sZW5ndGguaXNVbmRlZmluZWQoKSA/IExl
bmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCkgOiBtX2xlbmd0aDsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChtX2xlbmd0aC5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIG1fY29t
cHV0ZWRMZW5ndGggPSBMZW5ndGgoMTAwLCBQZXJjZW50KTsKKyAgICAgICAgbV9jb21wdXRlZExl
bmd0aCA9IExlbmd0aCgxMDAsIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuaAppbmRleCA3NTc2YTQ1ZDU3MmFlZjJmOTIzYmIwNThiMjdkOTU0NTE4YmNmYmI3Li44NTUw
Y2Y5MjBiZWJiZTQ1ZWI3NDY1ZDhjMjg1YmFmODg0NTZmYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaApAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVDb21wdXRlZExlbmd0aCgpOwogCiAgICAgRGlyZWN0aW9uIG1f
ZGlyZWN0aW9uIHsgVG9wTGVmdCB9OwotICAgIExlbmd0aCBtX2xlbmd0aCB7IFVuZGVmaW5lZCB9
OworICAgIExlbmd0aCBtX2xlbmd0aCB7IExlbmd0aFR5cGU6OlVuZGVmaW5lZCB9OwogICAgIExl
bmd0aCBtX2NvbXB1dGVkTGVuZ3RoOwogfTsKIApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX3R5cGUoVmFsdWUpCiAgICAgeyB9CiAgICAgZXhwbGljaXQgQmFzaWNTaGFw
ZVJhZGl1cyhUeXBlIHQpCi0gICAgICAgIDogbV92YWx1ZShVbmRlZmluZWQpCisgICAgICAgIDog
bV92YWx1ZShMZW5ndGhUeXBlOjpVbmRlZmluZWQpCiAgICAgICAgICwgbV90eXBlKHQpCiAgICAg
eyB9CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAg
IExlbmd0aCBtX3ZhbHVlIHsgVW5kZWZpbmVkIH07CisgICAgTGVuZ3RoIG1fdmFsdWUgeyBMZW5n
dGhUeXBlOjpVbmRlZmluZWQgfTsKICAgICBUeXBlIG1fdHlwZSB7IENsb3Nlc3RTaWRlIH07CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAppbmRleCA2
ZmQ1YjAzZWRjZTIxNTIzZDEwNzg1YmVhMmNiOGVlZjU2MDk4OWNiLi43YzA0OGZiYjIzZTZhMjc2
NjQ2Y2VkNjUwNjU3ZjBmNGQyZjYwOGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Cb3JkZXJEYXRhLmgKQEAgLTM2LDEwICszNiwxMCBAQCBjbGFzcyBCb3JkZXJEYXRhIHsK
IGZyaWVuZCBjbGFzcyBSZW5kZXJTdHlsZTsKIHB1YmxpYzoKICAgICBCb3JkZXJEYXRhKCkKLSAg
ICAgICAgOiBtX3RvcExlZnRSYWRpdXMgeyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9Ci0g
ICAgICAgICwgbV90b3BSaWdodFJhZGl1cyB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH0K
LSAgICAgICAgLCBtX2JvdHRvbUxlZnRSYWRpdXMgeyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQg
fSB9Ci0gICAgICAgICwgbV9ib3R0b21SaWdodFJhZGl1cyB7IHsgMCwgRml4ZWQgfSwgeyAwLCBG
aXhlZCB9IH0KKyAgICAgICAgOiBtX3RvcExlZnRSYWRpdXMgeyB7IDAsIExlbmd0aFR5cGU6OkZp
eGVkIH0sIHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9CisgICAgICAgICwgbV90b3BSaWdodFJh
ZGl1cyB7IHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9
IH0KKyAgICAgICAgLCBtX2JvdHRvbUxlZnRSYWRpdXMgeyB7IDAsIExlbmd0aFR5cGU6OkZpeGVk
IH0sIHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9CisgICAgICAgICwgbV9ib3R0b21SaWdodFJh
ZGl1cyB7IHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9
IH0KICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvRmlsbExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExh
eWVyLmgKaW5kZXggOTdjZDgzM2ZjOWNiM2NjMDc5N2MyNmU3N2NiOGJkN2ZiNzg1MGU0NC4uYWVk
YWZmZGYzZWE3MTU0MGY2N2QwNTFkMTdlYTEyMzJlMzIzMzE1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaApAQCAtMTY5LDggKzE2OSw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgQ29tcG9zaXRlT3BlcmF0b3IgaW5pdGlhbEZpbGxDb21wb3NpdGUoRmlsbExh
eWVyVHlwZSkgeyByZXR1cm4gQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXI7IH0KICAgICBz
dGF0aWMgQmxlbmRNb2RlIGluaXRpYWxGaWxsQmxlbmRNb2RlKEZpbGxMYXllclR5cGUpIHsgcmV0
dXJuIEJsZW5kTW9kZTo6Tm9ybWFsOyB9CiAgICAgc3RhdGljIEZpbGxTaXplIGluaXRpYWxGaWxs
U2l6ZShGaWxsTGF5ZXJUeXBlKSB7IHJldHVybiB7IH07IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGlu
aXRpYWxGaWxsWFBvc2l0aW9uKEZpbGxMYXllclR5cGUpIHsgcmV0dXJuIExlbmd0aCgwLjBmLCBQ
ZXJjZW50KTsgfQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbEZpbGxZUG9zaXRpb24oRmlsbExh
eWVyVHlwZSkgeyByZXR1cm4gTGVuZ3RoKDAuMGYsIFBlcmNlbnQpOyB9CisgICAgc3RhdGljIExl
bmd0aCBpbml0aWFsRmlsbFhQb3NpdGlvbihGaWxsTGF5ZXJUeXBlKSB7IHJldHVybiBMZW5ndGgo
MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxG
aWxsWVBvc2l0aW9uKEZpbGxMYXllclR5cGUpIHsgcmV0dXJuIExlbmd0aCgwLjBmLCBMZW5ndGhU
eXBlOjpQZXJjZW50KTsgfQogICAgIHN0YXRpYyBTdHlsZUltYWdlKiBpbml0aWFsRmlsbEltYWdl
KEZpbGxMYXllclR5cGUpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBzdGF0aWMgTWFza1NvdXJj
ZVR5cGUgaW5pdGlhbEZpbGxNYXNrU291cmNlVHlwZShGaWxsTGF5ZXJUeXBlKSB7IHJldHVybiBN
YXNrU291cmNlVHlwZTo6QWxwaGE7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9HcmlkVHJhY2tTaXplLmgKaW5kZXggZDMzM2E4N2I2YjI4ODhkNmYzZjZlMDIzZDgzZDQz
YzllYWUzODI4ZC4uNzhlNjVjYzczNzg2OWFhYmMwODA1ZmQ1NTM4ODQ1OWM5OTYyZjdiNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oCkBAIC01
Niw5ICs1Niw5IEBAIGNsYXNzIEdyaWRUcmFja1NpemUgewogcHVibGljOgogICAgIEdyaWRUcmFj
a1NpemUoY29uc3QgR3JpZExlbmd0aCYgbGVuZ3RoLCBHcmlkVHJhY2tTaXplVHlwZSB0cmFja1Np
emVUeXBlID0gTGVuZ3RoVHJhY2tTaXppbmcpCiAgICAgICAgIDogbV90eXBlKHRyYWNrU2l6ZVR5
cGUpCi0gICAgICAgICwgbV9taW5UcmFja0JyZWFkdGgodHJhY2tTaXplVHlwZSA9PSBGaXRDb250
ZW50VHJhY2tTaXppbmcgPyBMZW5ndGgoQXV0bykgOiBsZW5ndGgpCi0gICAgICAgICwgbV9tYXhU
cmFja0JyZWFkdGgodHJhY2tTaXplVHlwZSA9PSBGaXRDb250ZW50VHJhY2tTaXppbmcgPyBMZW5n
dGgoQXV0bykgOiBsZW5ndGgpCi0gICAgICAgICwgbV9maXRDb250ZW50VHJhY2tCcmVhZHRoKHRy
YWNrU2l6ZVR5cGUgPT0gRml0Q29udGVudFRyYWNrU2l6aW5nID8gbGVuZ3RoIDogR3JpZExlbmd0
aChMZW5ndGgoRml4ZWQpKSkKKyAgICAgICAgLCBtX21pblRyYWNrQnJlYWR0aCh0cmFja1NpemVU
eXBlID09IEZpdENvbnRlbnRUcmFja1NpemluZyA/IExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSA6
IGxlbmd0aCkKKyAgICAgICAgLCBtX21heFRyYWNrQnJlYWR0aCh0cmFja1NpemVUeXBlID09IEZp
dENvbnRlbnRUcmFja1NpemluZyA/IExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSA6IGxlbmd0aCkK
KyAgICAgICAgLCBtX2ZpdENvbnRlbnRUcmFja0JyZWFkdGgodHJhY2tTaXplVHlwZSA9PSBGaXRD
b250ZW50VHJhY2tTaXppbmcgPyBsZW5ndGggOiBHcmlkTGVuZ3RoKExlbmd0aChMZW5ndGhUeXBl
OjpGaXhlZCkpKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRyYWNrU2l6ZVR5cGUgPT0gTGVuZ3Ro
VHJhY2tTaXppbmcgfHwgdHJhY2tTaXplVHlwZSA9PSBGaXRDb250ZW50VHJhY2tTaXppbmcpOwog
ICAgICAgICBBU1NFUlQodHJhY2tTaXplVHlwZSAhPSBGaXRDb250ZW50VHJhY2tTaXppbmcgfHwg
bGVuZ3RoLmlzTGVuZ3RoKCkpOwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIDog
bV90eXBlKE1pbk1heFRyYWNrU2l6aW5nKQogICAgICAgICAsIG1fbWluVHJhY2tCcmVhZHRoKG1p
blRyYWNrQnJlYWR0aCkKICAgICAgICAgLCBtX21heFRyYWNrQnJlYWR0aChtYXhUcmFja0JyZWFk
dGgpCi0gICAgICAgICwgbV9maXRDb250ZW50VHJhY2tCcmVhZHRoKEdyaWRMZW5ndGgoTGVuZ3Ro
KEZpeGVkKSkpCisgICAgICAgICwgbV9maXRDb250ZW50VHJhY2tCcmVhZHRoKEdyaWRMZW5ndGgo
TGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSkpCiAgICAgewogICAgICAgICBjYWNoZU1pbk1heFRy
YWNrQnJlYWR0aFR5cGVzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvTmluZVBpZWNlSW1hZ2UuaAppbmRleCBkMzUzZDg3OThmZDExZjZhNjIzYjBkMjFhMjI5
OGM2NDUyODkyYTM0Li4xNGMzMzVkNzg4NWQ2NTUyYTIyNzFkYzE3MjA4Yzc0ZDlhMGM3OTRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaApA
QCAtMTk4LDggKzE5OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIE5pbmVQaWVjZUltYWdlUnVsZSBo
b3Jpem9udGFsUnVsZSB7IE5pbmVQaWVjZUltYWdlUnVsZTo6U3RyZXRjaCB9OwogICAgICAgICBO
aW5lUGllY2VJbWFnZVJ1bGUgdmVydGljYWxSdWxlIHsgTmluZVBpZWNlSW1hZ2VSdWxlOjpTdHJl
dGNoIH07CiAgICAgICAgIFJlZlB0cjxTdHlsZUltYWdlPiBpbWFnZTsKLSAgICAgICAgTGVuZ3Ro
Qm94IGltYWdlU2xpY2VzIHsgeyAxMDAsIFBlcmNlbnQgfSwgeyAxMDAsIFBlcmNlbnQgfSwgeyAx
MDAsIFBlcmNlbnQgfSwgeyAxMDAsIFBlcmNlbnQgfSB9OwotICAgICAgICBMZW5ndGhCb3ggYm9y
ZGVyU2xpY2VzIHsgeyAxLCBSZWxhdGl2ZSB9LCB7IDEsIFJlbGF0aXZlIH0sIHsgMSwgUmVsYXRp
dmUgfSwgeyAxLCBSZWxhdGl2ZSB9IH07CisgICAgICAgIExlbmd0aEJveCBpbWFnZVNsaWNlcyB7
IHsgMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50IH0sIHsgMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50
IH0sIHsgMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50IH0sIHsgMTAwLCBMZW5ndGhUeXBlOjpQZXJj
ZW50IH0gfTsKKyAgICAgICAgTGVuZ3RoQm94IGJvcmRlclNsaWNlcyB7IHsgMSwgTGVuZ3RoVHlw
ZTo6UmVsYXRpdmUgfSwgeyAxLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSB9LCB7IDEsIExlbmd0aFR5
cGU6OlJlbGF0aXZlIH0sIHsgMSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUgfSB9OwogICAgICAgICBM
ZW5ndGhCb3ggb3V0c2V0IHsgMCB9OwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDg5MWQ0M2JkMTA3ZGY0MGQ2
MGEwMmY0M2U5NDQ2Y2M2MDJkMDgyNTYuLjJhYTdjZWE2YmFhNWM3ZjUwYzVlMWRjNjkzYzE4YTMy
YjdiOWRiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcApAQCAtMTQzNSw4ICsxNDM1LDggQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0UGFnZVNj
YWxlVHJhbnNmb3JtKGZsb2F0IHNjYWxlKQogICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgdHJhbnNm
b3JtOwogICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFNjYWxlVHJhbnNmb3JtT3Bl
cmF0aW9uOjpjcmVhdGUoc2NhbGUsIHNjYWxlLCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6U0NB
TEUpKTsKICAgICBzZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKLSAgICBzZXRUcmFuc2Zvcm1Pcmln
aW5YKExlbmd0aCgwLCBGaXhlZCkpOwotICAgIHNldFRyYW5zZm9ybU9yaWdpblkoTGVuZ3RoKDAs
IEZpeGVkKSk7CisgICAgc2V0VHJhbnNmb3JtT3JpZ2luWChMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6
Rml4ZWQpKTsKKyAgICBzZXRUcmFuc2Zvcm1PcmlnaW5ZKExlbmd0aCgwLCBMZW5ndGhUeXBlOjpG
aXhlZCkpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRUZXh0U2hhZG93KHN0ZDo6dW5pcXVl
X3B0cjxTaGFkb3dEYXRhPiBzaGFkb3dEYXRhLCBib29sIGFkZCkKQEAgLTE4MjUsMTYgKzE4MjUs
MTYgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0V29yZFNwYWNpbmcoTGVuZ3RoJiYgdmFsdWUpCiB7
CiAgICAgZmxvYXQgZm9udFdvcmRTcGFjaW5nOwogICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7
Ci0gICAgY2FzZSBBdXRvOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6QXV0bzoKICAgICAgICAgZm9u
dFdvcmRTcGFjaW5nID0gMDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQZXJjZW50OgorICAg
IGNhc2UgTGVuZ3RoVHlwZTo6UGVyY2VudDoKICAgICAgICAgZm9udFdvcmRTcGFjaW5nID0gdmFs
dWUucGVyY2VudCgpICogZm9udENhc2NhZGUoKS5zcGFjZVdpZHRoKCkgLyAxMDA7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRml4ZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXhlZDoKICAg
ICAgICAgZm9udFdvcmRTcGFjaW5nID0gdmFsdWUudmFsdWUoKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDYWxjdWxhdGVkOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZDoKICAg
ICAgICAgZm9udFdvcmRTcGFjaW5nID0gdmFsdWUubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heFZh
bHVlRm9yQ3NzTGVuZ3RoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggZjE1YWQ3NGI4YTEx
YjU2Mzg0MWYzNjA0YmVhMjg4MGUwZmI2MzM2Mi4uMzU5MzdkZTM0NDhiYTQxN2QxZDJiNTcyMGY3
ODNmMDY2ZjE1N2Q0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKQEAgLTEwMzIsNyArMTAzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExpc3RT
dHlsZUltYWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmKTsKICAgICB2b2lkIHNldExpc3RTdHlsZVBv
c2l0aW9uKExpc3RTdHlsZVBvc2l0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQ
b3NpdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogCi0gICAgdm9pZCByZXNldE1h
cmdpbigpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLCBMZW5ndGhCb3goRml4ZWQp
KTsgfQorICAgIHZvaWQgcmVzZXRNYXJnaW4oKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG1h
cmdpbiwgTGVuZ3RoQm94KExlbmd0aFR5cGU6OkZpeGVkKSk7IH0KICAgICB2b2lkIHNldE1hcmdp
blRvcChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLnRv
cCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CiAgICAgdm9pZCBzZXRNYXJnaW5Cb3R0b20oTGVuZ3Ro
JiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG1hcmdpbi5ib3R0b20oKSwgV1RG
TW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0TWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgp
IHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgp
KTsgfQpAQCAtMTQyNSw3ICsxNDI1LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgTGVuZ3RoJiBz
aGFwZU1hcmdpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBl
TWFyZ2luOyB9CiAgICAgdm9pZCBzZXRTaGFwZU1hcmdpbihMZW5ndGgmJiBzaGFwZU1hcmdpbikg
eyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNoYXBlTWFyZ2luLCBXVEZNb3ZlKHNo
YXBlTWFyZ2luKSk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTaGFwZU1hcmdpbigpIHsg
cmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTaGFw
ZU1hcmdpbigpIHsgcmV0dXJuIExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7IH0KIAogICAg
IGZsb2F0IHNoYXBlSW1hZ2VUaHJlc2hvbGQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5zaGFwZUltYWdlVGhyZXNob2xkOyB9CiAgICAgdm9pZCBzZXRTaGFwZUltYWdl
VGhyZXNob2xkKGZsb2F0KTsKQEAgLTE1MzEsNyArMTUzMSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgQm9yZGVyU3R5bGUgaW5pdGlhbEJvcmRlclN0eWxlKCkgeyByZXR1cm4gQm9yZGVyU3R5bGU6
Ok5vbmU7IH0KICAgICBzdGF0aWMgT3V0bGluZUlzQXV0byBpbml0aWFsT3V0bGluZVN0eWxlSXNB
dXRvKCkgeyByZXR1cm4gT3V0bGluZUlzQXV0bzo6T2ZmOyB9CiAgICAgc3RhdGljIE5pbmVQaWVj
ZUltYWdlIGluaXRpYWxOaW5lUGllY2VJbWFnZSgpIHsgcmV0dXJuIE5pbmVQaWVjZUltYWdlKCk7
IH0KLSAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBpbml0aWFsQm9yZGVyUmFkaXVzKCkgeyByZXR1cm4g
eyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9OyB9CisgICAgc3RhdGljIExlbmd0aFNpemUg
aW5pdGlhbEJvcmRlclJhZGl1cygpIHsgcmV0dXJuIHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9
LCB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0gfTsgfQogICAgIHN0YXRpYyBDYXB0aW9uU2lkZSBp
bml0aWFsQ2FwdGlvblNpZGUoKSB7IHJldHVybiBDYXB0aW9uU2lkZTo6VG9wOyB9CiAgICAgc3Rh
dGljIENvbHVtbkF4aXMgaW5pdGlhbENvbHVtbkF4aXMoKSB7IHJldHVybiBDb2x1bW5BeGlzOjpB
dXRvOyB9CiAgICAgc3RhdGljIENvbHVtblByb2dyZXNzaW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVz
c2lvbigpIHsgcmV0dXJuIENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWw7IH0KQEAgLTE1NDAsNyAr
MTU0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dENvbWJpbmUgaW5pdGlhbFRleHRDb21i
aW5lKCkgeyByZXR1cm4gVGV4dENvbWJpbmU6Ok5vbmU7IH0KICAgICBzdGF0aWMgVGV4dE9yaWVu
dGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3JpZW50YXRpb246
Ok1peGVkOyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0aWFsT2JqZWN0Rml0KCkgeyByZXR1
cm4gT2JqZWN0Rml0OjpGaWxsOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmpl
Y3RQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aCg1MC4wZiwgUGVyY2VudCks
IExlbmd0aCg1MC4wZiwgUGVyY2VudCkpOyB9CisgICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRp
YWxPYmplY3RQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aCg1MC4wZiwgTGVu
Z3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpOyB9
CiAgICAgc3RhdGljIEVtcHR5Q2VsbCBpbml0aWFsRW1wdHlDZWxscygpIHsgcmV0dXJuIEVtcHR5
Q2VsbDo6U2hvdzsgfQogICAgIHN0YXRpYyBMaXN0U3R5bGVQb3NpdGlvbiBpbml0aWFsTGlzdFN0
eWxlUG9zaXRpb24oKSB7IHJldHVybiBMaXN0U3R5bGVQb3NpdGlvbjo6T3V0c2lkZTsgfQogICAg
IHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbml0aWFsTGlzdFN0eWxlU3RyaW5nVmFsdWUoKSB7
IHJldHVybiBudWxsQXRvbSgpOyB9CkBAIC0xNTU3LDIxICsxNTU3LDIxIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbENvbHVtblJ1bGVXaWR0aCgpIHsgcmV0dXJu
IDM7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbE91dGxpbmVXaWR0aCgpIHsgcmV0dXJuIDM7
IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbExldHRlclNwYWNpbmcoKSB7IHJldHVybiAwOyB9
Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsV29yZFNwYWNpbmcoKSB7IHJldHVybiBMZW5ndGgo
Rml4ZWQpOyB9CisgICAgc3RhdGljIExlbmd0aCBpbml0aWFsV29yZFNwYWNpbmcoKSB7IHJldHVy
biBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFs
U2l6ZSgpIHsgcmV0dXJuIExlbmd0aCgpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsTWlu
U2l6ZSgpIHsgcmV0dXJuIExlbmd0aCgpOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsTWF4
U2l6ZSgpIHsgcmV0dXJuIExlbmd0aChVbmRlZmluZWQpOyB9CisgICAgc3RhdGljIExlbmd0aCBp
bml0aWFsTWF4U2l6ZSgpIHsgcmV0dXJuIExlbmd0aChMZW5ndGhUeXBlOjpVbmRlZmluZWQpOyB9
CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsT2Zmc2V0KCkgeyByZXR1cm4gTGVuZ3RoKCk7IH0K
ICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxSYWRpdXMoKSB7IHJldHVybiBMZW5ndGgoKTsgfQot
ICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbE1hcmdpbigpIHsgcmV0dXJuIExlbmd0aChGaXhlZCk7
IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxQYWRkaW5nKCkgeyByZXR1cm4gTGVuZ3RoKEZp
eGVkKTsgfQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRleHRJbmRlbnQoKSB7IHJldHVybiBM
ZW5ndGgoRml4ZWQpOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsWmVyb0xlbmd0aCgpIHsg
cmV0dXJuIExlbmd0aChGaXhlZCk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxPbmVMZW5n
dGgoKSB7IHJldHVybiBMZW5ndGgoMSwgRml4ZWQpOyB9CisgICAgc3RhdGljIExlbmd0aCBpbml0
aWFsTWFyZ2luKCkgeyByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKTsgfQorICAgIHN0
YXRpYyBMZW5ndGggaW5pdGlhbFBhZGRpbmcoKSB7IHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6
Rml4ZWQpOyB9CisgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVGV4dEluZGVudCgpIHsgcmV0dXJu
IExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxa
ZXJvTGVuZ3RoKCkgeyByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKTsgfQorICAgIHN0
YXRpYyBMZW5ndGggaW5pdGlhbE9uZUxlbmd0aCgpIHsgcmV0dXJuIExlbmd0aCgxLCBMZW5ndGhU
eXBlOjpGaXhlZCk7IH0KICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbFdpZG93cygpIHsgcmV0dXJu
IDI7IH0KICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbE9ycGhhbnMoKSB7IHJldHVybiAyOyB9CiAg
ICAgLy8gUmV0dXJuaW5nIC0xMDAlIHBlcmNlbnQgaGVyZSBtZWFucyB0aGUgbGluZS1oZWlnaHQg
aXMgbm90IHNldC4KLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxMaW5lSGVpZ2h0KCkgeyByZXR1
cm4gTGVuZ3RoKC0xMDAuMGYsIFBlcmNlbnQpOyB9CisgICAgc3RhdGljIExlbmd0aCBpbml0aWFs
TGluZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0aCgtMTAwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50
KTsgfQogICAgIHN0YXRpYyBUZXh0QWxpZ25Nb2RlIGluaXRpYWxUZXh0QWxpZ24oKSB7IHJldHVy
biBUZXh0QWxpZ25Nb2RlOjpTdGFydDsgfQogICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb24+IGluaXRpYWxUZXh0RGVjb3JhdGlvbigpIHsgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbj4geyB9OyB9CiAgICAgc3RhdGljIFRleHREZWNvcmF0aW9uU3R5bGUgaW5pdGlhbFRl
eHREZWNvcmF0aW9uU3R5bGUoKSB7IHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpTb2xpZDsg
fQpAQCAtMTU5Niw3ICsxNTk2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHlsZVJlZmxlY3Rp
b24qIGluaXRpYWxCb3hSZWZsZWN0KCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBmbG9hdCBp
bml0aWFsRmxleEdyb3coKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxG
bGV4U2hyaW5rKCkgeyByZXR1cm4gMTsgfQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbEZsZXhC
YXNpcygpIHsgcmV0dXJuIExlbmd0aChBdXRvKTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlh
bEZsZXhCYXNpcygpIHsgcmV0dXJuIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKTsgfQogICAgIHN0
YXRpYyBpbnQgaW5pdGlhbE9yZGVyKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBTdHlsZVNl
bGZBbGlnbm1lbnREYXRhIGluaXRpYWxKdXN0aWZ5SXRlbXMoKSB7IHJldHVybiBTdHlsZVNlbGZB
bGlnbm1lbnREYXRhKEl0ZW1Qb3NpdGlvbjo6TGVnYWN5LCBPdmVyZmxvd0FsaWdubWVudDo6RGVm
YXVsdCk7IH0KICAgICBzdGF0aWMgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBpbml0aWFsU2VsZkFs
aWdubWVudCgpIHsgcmV0dXJuIFN0eWxlU2VsZkFsaWdubWVudERhdGEoSXRlbVBvc2l0aW9uOjpB
dXRvLCBPdmVyZmxvd0FsaWdubWVudDo6RGVmYXVsdCk7IH0KQEAgLTE2MDYsNyArMTYwNiw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgRmxleFdyYXAgaW5pdGlhbEZsZXhXcmFwKCkgeyByZXR1cm4g
RmxleFdyYXA6Ok5vV3JhcDsgfQogICAgIHN0YXRpYyBpbnQgaW5pdGlhbE1hcnF1ZWVMb29wQ291
bnQoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBpbnQgaW5pdGlhbE1hcnF1ZWVTcGVlZCgp
IHsgcmV0dXJuIDg1OyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsTWFycXVlZUluY3JlbWVu
dCgpIHsgcmV0dXJuIExlbmd0aCg2LCBGaXhlZCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRp
YWxNYXJxdWVlSW5jcmVtZW50KCkgeyByZXR1cm4gTGVuZ3RoKDYsIExlbmd0aFR5cGU6OkZpeGVk
KTsgfQogICAgIHN0YXRpYyBNYXJxdWVlQmVoYXZpb3IgaW5pdGlhbE1hcnF1ZWVCZWhhdmlvcigp
IHsgcmV0dXJuIE1hcnF1ZWVCZWhhdmlvcjo6U2Nyb2xsOyB9CiAgICAgc3RhdGljIE1hcnF1ZWVE
aXJlY3Rpb24gaW5pdGlhbE1hcnF1ZWVEaXJlY3Rpb24oKSB7IHJldHVybiBNYXJxdWVlRGlyZWN0
aW9uOjpBdXRvOyB9CiAgICAgc3RhdGljIFVzZXJNb2RpZnkgaW5pdGlhbFVzZXJNb2RpZnkoKSB7
IHJldHVybiBVc2VyTW9kaWZ5OjpSZWFkT25seTsgfQpAQCAtMTYzOSw4ICsxNjM5LDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBHYXBMZW5ndGggaW5pdGlhbENvbHVtbkdhcCgpIHsgcmV0dXJuIEdh
cExlbmd0aCgpOyB9CiAgICAgc3RhdGljIEdhcExlbmd0aCBpbml0aWFsUm93R2FwKCkgeyByZXR1
cm4gR2FwTGVuZ3RoKCk7IH0KICAgICBzdGF0aWMgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
aW5pdGlhbFRyYW5zZm9ybSgpIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRyYW5zZm9ybU9wZXJh
dGlvbnM+IG9wczsgcmV0dXJuIG9wczsgfQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5z
Zm9ybU9yaWdpblgoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpOyB9Ci0gICAgc3Rh
dGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4w
ZiwgUGVyY2VudCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxUcmFuc2Zvcm1PcmlnaW5Y
KCkgeyByZXR1cm4gTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsgfQorICAgIHN0
YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5zZm9ybU9yaWdpblkoKSB7IHJldHVybiBMZW5ndGgoNTAu
MGYsIExlbmd0aFR5cGU6OlBlcmNlbnQpOyB9CiAgICAgc3RhdGljIFRyYW5zZm9ybUJveCBpbml0
aWFsVHJhbnNmb3JtQm94KCkgeyByZXR1cm4gVHJhbnNmb3JtQm94OjpWaWV3Qm94OyB9CiAgICAg
c3RhdGljIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiogaW5pdGlhbFJvdGF0ZSgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KICAgICBzdGF0aWMgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qIGluaXRpYWxT
Y2FsZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTE2NTAsOCArMTY1MCw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgVHJhbnNmb3JtU3R5bGUzRCBpbml0aWFsVHJhbnNmb3JtU3R5bGUzRCgpIHsg
cmV0dXJuIFRyYW5zZm9ybVN0eWxlM0Q6OkZsYXQ7IH0KICAgICBzdGF0aWMgQmFja2ZhY2VWaXNp
YmlsaXR5IGluaXRpYWxCYWNrZmFjZVZpc2liaWxpdHkoKSB7IHJldHVybiBCYWNrZmFjZVZpc2li
aWxpdHk6OlZpc2libGU7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbFBlcnNwZWN0aXZlKCkg
eyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2lu
WCgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KLSAgICBzdGF0aWMgTGVuZ3Ro
IGluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblkoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIFBlcmNl
bnQpOyB9CisgICAgc3RhdGljIExlbmd0aCBpbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5YKCkgeyBy
ZXR1cm4gTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsgfQorICAgIHN0YXRpYyBM
ZW5ndGggaW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwg
TGVuZ3RoVHlwZTo6UGVyY2VudCk7IH0KICAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbEJhY2tncm91
bmRDb2xvcigpIHsgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrOyB9CiAgICAgc3RhdGlj
IENvbG9yIGluaXRpYWxUZXh0RW1waGFzaXNDb2xvcigpIHsgcmV0dXJuIGN1cnJlbnRDb2xvcigp
OyB9CiAgICAgc3RhdGljIFRleHRFbXBoYXNpc0ZpbGwgaW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwo
KSB7IHJldHVybiBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQ7IH0KQEAgLTE2ODcsNyArMTY4Nyw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLSAgICBz
dGF0aWMgTGVuZ3RoIGluaXRpYWxTcGVjaWZpZWRMaW5lSGVpZ2h0KCkgeyByZXR1cm4gTGVuZ3Ro
KC0xMDAuMGYsIFBlcmNlbnQpOyB9CisgICAgc3RhdGljIExlbmd0aCBpbml0aWFsU3BlY2lmaWVk
TGluZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0aCgtMTAwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50
KTsgfQogICAgIHN0YXRpYyBUZXh0U2l6ZUFkanVzdG1lbnQgaW5pdGlhbFRleHRTaXplQWRqdXN0
KCkgeyByZXR1cm4gVGV4dFNpemVBZGp1c3RtZW50KCk7IH0KICNlbmRpZgogCkBAIC0xNjk1LDgg
KzE2OTUsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVG91Y2hBY3Rpb24gaW5pdGlhbFRvdWNo
QWN0aW9ucygpIHsgcmV0dXJuIFRvdWNoQWN0aW9uOjpBdXRvOyB9CiAKLSAgICBzdGF0aWMgTGVu
Z3RoIGluaXRpYWxTY3JvbGxNYXJnaW4oKSB7IHJldHVybiBMZW5ndGgoRml4ZWQpOyB9Ci0gICAg
c3RhdGljIExlbmd0aCBpbml0aWFsU2Nyb2xsUGFkZGluZygpIHsgcmV0dXJuIExlbmd0aChBdXRv
KTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNjcm9sbE1hcmdpbigpIHsgcmV0dXJuIExl
bmd0aChMZW5ndGhUeXBlOjpGaXhlZCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTY3Jv
bGxQYWRkaW5nKCkgeyByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pOyB9CiAKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHN0YXRpYyBTY3JvbGxTbmFwVHlwZSBpbml0aWFs
U2Nyb2xsU25hcFR5cGUoKTsKQEAgLTE3MjMsOCArMTcyMyw4IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBHcmlkQXV0b0Zsb3cgaW5pdGlhbEdyaWRBdXRvRmxvdygpIHsgcmV0dXJuIEF1dG9GbG93
Um93OyB9CiAKLSAgICBzdGF0aWMgVmVjdG9yPEdyaWRUcmFja1NpemU+IGluaXRpYWxHcmlkQXV0
b0NvbHVtbnMoKSB7IHJldHVybiB7IEdyaWRUcmFja1NpemUoTGVuZ3RoKEF1dG8pKSB9OyB9Ci0g
ICAgc3RhdGljIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBpbml0aWFsR3JpZEF1dG9Sb3dzKCkgeyBy
ZXR1cm4geyBHcmlkVHJhY2tTaXplKExlbmd0aChBdXRvKSkgfTsgfQorICAgIHN0YXRpYyBWZWN0
b3I8R3JpZFRyYWNrU2l6ZT4gaW5pdGlhbEdyaWRBdXRvQ29sdW1ucygpIHsgcmV0dXJuIHsgR3Jp
ZFRyYWNrU2l6ZShMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpIH07IH0KKyAgICBzdGF0aWMgVmVj
dG9yPEdyaWRUcmFja1NpemU+IGluaXRpYWxHcmlkQXV0b1Jvd3MoKSB7IHJldHVybiB7IEdyaWRU
cmFja1NpemUoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKSB9OyB9CiAKICAgICBzdGF0aWMgTmFt
ZWRHcmlkQXJlYU1hcCBpbml0aWFsTmFtZWRHcmlkQXJlYSgpIHsgcmV0dXJuIE5hbWVkR3JpZEFy
ZWFNYXAoKTsgfQogICAgIHN0YXRpYyBzaXplX3QgaW5pdGlhbE5hbWVkR3JpZEFyZWFDb3VudCgp
IHsgcmV0dXJuIDA7IH0KQEAgLTIyMDMsNyArMjIwMyw3IEBAIGlubGluZSB2b2lkIFJlbmRlclN0
eWxlOjpzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZSYmIHNpemUpCiAKIGlubGluZSB2b2lkIFJl
bmRlclN0eWxlOjpzZXRCb3JkZXJSYWRpdXMoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBz
ZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZSB7IHsgc2l6ZS53aWR0aCgpLCBGaXhlZCB9LCB7IHNp
emUuaGVpZ2h0KCksIEZpeGVkIH0gfSk7CisgICAgc2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUg
eyB7IHNpemUud2lkdGgoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBzaXplLmhlaWdodCgpLCBM
ZW5ndGhUeXBlOjpGaXhlZCB9IH0pOwogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0
Wm9vbShmbG9hdCB6b29tTGV2ZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggYzFkNGI0OWUyZWY5YThkNmI0
YzE2ZWI3M2VmOTU4YjgzZWIxNDM5My4uN2QxMjE1ZjAxODVlNzZiYzY1ZWYyZjIzNzdkZjIxZWE3
MTE0NmMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtODEsOCArODEsOCBAQCB2b2lkIFN0eWxlR2VuZXJh
dGVkSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1lbnQq
IHJlbmRlcgogewogICAgIC8vIEF0IGEgem9vbSBsZXZlbCBvZiAxIHRoZSBpbWFnZSBpcyBndWFy
YW50ZWVkIHRvIGhhdmUgYSBkZXZpY2UgcGl4ZWwgc2l6ZS4KICAgICBGbG9hdFNpemUgc2l6ZSA9
IGZsb29yU2l6ZVRvRGV2aWNlUGl4ZWxzKExheW91dFNpemUoaW1hZ2VTaXplKHJlbmRlcmVyLCAx
KSksIHJlbmRlcmVyID8gcmVuZGVyZXItPmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSA6
IDEpOwotICAgIGludHJpbnNpY1dpZHRoID0gTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpOwot
ICAgIGludHJpbnNpY0hlaWdodCA9IExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCk7CisgICAg
aW50cmluc2ljV2lkdGggPSBMZW5ndGgoc2l6ZS53aWR0aCgpLCBMZW5ndGhUeXBlOjpGaXhlZCk7
CisgICAgaW50cmluc2ljSGVpZ2h0ID0gTGVuZ3RoKHNpemUuaGVpZ2h0KCksIExlbmd0aFR5cGU6
OkZpeGVkKTsKICAgICBpbnRyaW5zaWNSYXRpbyA9IHNpemU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5oCmluZGV4IDdkYjM3YWE3ZjZmYTRkZGVhZTc0MDYwZDU3NmFjNzNjNzZkMjllZGIuLjVjM2Yy
YmJkYTA2ZDg3ZjdhMDE0NzQwYzFlNThlYWUwZWJmZTQ3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
aApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICBEYXRhUmVmPFN0eWxlR3JpZEl0ZW1E
YXRhPiBncmlkSXRlbTsKIAogICAgIExlbmd0aEJveCBzY3JvbGxNYXJnaW4geyAwLCAwLCAwLCAw
IH07Ci0gICAgTGVuZ3RoQm94IHNjcm9sbFBhZGRpbmcgeyBMZW5ndGgoQXV0byksIExlbmd0aChB
dXRvKSwgTGVuZ3RoKEF1dG8pLCBMZW5ndGgoQXV0bykgfTsKKyAgICBMZW5ndGhCb3ggc2Nyb2xs
UGFkZGluZyB7IExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkF1
dG8pLCBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSB9
OwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgU2Nyb2xsU25hcFR5cGUgc2Nyb2xs
U25hcFR5cGU7CiAgICAgU2Nyb2xsU25hcEFsaWduIHNjcm9sbFNuYXBBbGlnbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJlZmxlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJlZmxlY3Rpb24uaAppbmRleCA5NmUz
ZTNiZGZhNDQ3NWRmZGM5ZjgzYWRhZDRkNzYzODM4OGQyNzI1Li5jY2IzMjQxNGNkNTNkZWI3Y2Fm
MTEyYmRjNGM4ZGRiMzA1MTdjYTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSZWZsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmVmbGVjdGlvbi5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBTdHlsZVJlZmxlY3Rpb24oKQotICAgICAgICA6IG1fb2Zmc2V0KDAsIEZpeGVk
KQorICAgICAgICA6IG1fb2Zmc2V0KDAsIExlbmd0aFR5cGU6OkZpeGVkKQogICAgICAgICAsIG1f
bWFzayhOaW5lUGllY2VJbWFnZTo6VHlwZTo6TWFzaykKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHAKaW5k
ZXggMDc5MTg0Y2NjM2I5Mjk0MmI0NjQyZTY1NzM4MmU2ZWEzNTBiZmI4NC4uNWMzNzk2NzQxMjc1
NTg4MmU3NzI1YTMxM2NiNzk2OTgwOTRiZTY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuY3BwCkBAIC0yNyw4ICsyNyw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJ
RVIoU3R5bGVTdXJyb3VuZERhdGEpOwogCiBTdHlsZVN1cnJvdW5kRGF0YTo6U3R5bGVTdXJyb3Vu
ZERhdGEoKQotICAgIDogbWFyZ2luKEZpeGVkKQotICAgICwgcGFkZGluZyhGaXhlZCkKKyAgICA6
IG1hcmdpbihMZW5ndGhUeXBlOjpGaXhlZCkKKyAgICAsIHBhZGRpbmcoTGVuZ3RoVHlwZTo6Rml4
ZWQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlckZ1bGxTY3JlZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRnVsbFNjcmVlbi5jcHAKaW5kZXggYjI4NDIw
YTYzZDk2YTExMjY3M2VlMDEwYzMzMjIzNGViMmNiYzZiNi4uMTM3ZjIyODQzZWJkZmNkYmI2YzA5
MGRjYTg2MjZhZDhmNjY4ZTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRnVsbFNjcmVlbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRnVsbFNjcmVlbi5jcHAK
QEAgLTQwLDkgKzQwLDkgQEAgUmVuZGVyVHJlZUJ1aWxkZXI6OkZ1bGxTY3JlZW46OkZ1bGxTY3Jl
ZW4oUmVuZGVyVHJlZUJ1aWxkZXImIGJ1aWxkZXIpCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpG
dWxsU2NyZWVuOjpjcmVhdGVQbGFjZWhvbGRlcihSZW5kZXJGdWxsU2NyZWVuJiByZW5kZXJlciwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgZnJh
bWVSZWN0KQogewogICAgIGlmIChzdHlsZS0+d2lkdGgoKS5pc0F1dG8oKSkKLSAgICAgICAgc3R5
bGUtPnNldFdpZHRoKExlbmd0aChmcmFtZVJlY3Qud2lkdGgoKSwgRml4ZWQpKTsKKyAgICAgICAg
c3R5bGUtPnNldFdpZHRoKExlbmd0aChmcmFtZVJlY3Qud2lkdGgoKSwgTGVuZ3RoVHlwZTo6Rml4
ZWQpKTsKICAgICBpZiAoc3R5bGUtPmhlaWdodCgpLmlzQXV0bygpKQotICAgICAgICBzdHlsZS0+
c2V0SGVpZ2h0KExlbmd0aChmcmFtZVJlY3QuaGVpZ2h0KCksIEZpeGVkKSk7CisgICAgICAgIHN0
eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKGZyYW1lUmVjdC5oZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4
ZWQpKTsKIAogICAgIGlmIChhdXRvKiBwbGFjZUhvbGRlciA9IHJlbmRlcmVyLnBsYWNlaG9sZGVy
KCkpIHsKICAgICAgICAgcGxhY2VIb2xkZXItPnNldFN0eWxlKFdURk1vdmUoKnN0eWxlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuY3BwCmluZGV4IGM4OWEyNDk3ODM1YTkzOGY5
ODk5ZDgyYjYxNDk2Mjc5M2U4YjI2YWIuLjZhZDJkMDAxOTg3MTQ4MjM0ZWZhNGRhOTMyMzZkYTcz
MDQ3Y2M3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuY3BwCkBAIC03OSwx
NiArNzksMTYgQEAgc3RhdGljIHZvaWQgYWRkSW50cmluc2ljTWFyZ2lucyhSZW5kZXJTdHlsZSYg
c3R5bGUpCiAgICAgLy8gRklYTUU6IFVzaW5nICJoYXNRdWlyayIgdG8gZGVjaWRlIHRoZSBtYXJn
aW4gd2Fzbid0IHNldCBpcyBraW5kIG9mIGxhbWUuCiAgICAgaWYgKHN0eWxlLndpZHRoKCkuaXNJ
bnRyaW5zaWNPckF1dG8oKSkgewogICAgICAgICBpZiAoc3R5bGUubWFyZ2luTGVmdCgpLmhhc1F1
aXJrKCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRNYXJnaW5MZWZ0KExlbmd0aChpbnRyaW5zaWNN
YXJnaW4sIEZpeGVkKSk7CisgICAgICAgICAgICBzdHlsZS5zZXRNYXJnaW5MZWZ0KExlbmd0aChp
bnRyaW5zaWNNYXJnaW4sIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgICAgIGlmIChzdHlsZS5t
YXJnaW5SaWdodCgpLmhhc1F1aXJrKCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRNYXJnaW5SaWdo
dChMZW5ndGgoaW50cmluc2ljTWFyZ2luLCBGaXhlZCkpOworICAgICAgICAgICAgc3R5bGUuc2V0
TWFyZ2luUmlnaHQoTGVuZ3RoKGludHJpbnNpY01hcmdpbiwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsK
ICAgICB9CiAKICAgICBpZiAoc3R5bGUuaGVpZ2h0KCkuaXNBdXRvKCkpIHsKICAgICAgICAgaWYg
KHN0eWxlLm1hcmdpblRvcCgpLmhhc1F1aXJrKCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRNYXJn
aW5Ub3AoTGVuZ3RoKGludHJpbnNpY01hcmdpbiwgRml4ZWQpKTsKKyAgICAgICAgICAgIHN0eWxl
LnNldE1hcmdpblRvcChMZW5ndGgoaW50cmluc2ljTWFyZ2luLCBMZW5ndGhUeXBlOjpGaXhlZCkp
OwogICAgICAgICBpZiAoc3R5bGUubWFyZ2luQm90dG9tKCkuaGFzUXVpcmsoKSkKLSAgICAgICAg
ICAgIHN0eWxlLnNldE1hcmdpbkJvdHRvbShMZW5ndGgoaW50cmluc2ljTWFyZ2luLCBGaXhlZCkp
OworICAgICAgICAgICAgc3R5bGUuc2V0TWFyZ2luQm90dG9tKExlbmd0aChpbnRyaW5zaWNNYXJn
aW4sIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgfQogfQogCkBAIC0zOTIsNyArMzkyLDcgQEAg
dm9pZCBBZGp1c3Rlcjo6YWRqdXN0KFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHVzZXJBZ2VudEFwcGVhcmFuY2UKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEFw
cGFyZW50bHkgdGhpcyBpcyB0aGUgZXhwZWN0ZWQgbGVnYWN5IGJlaGF2aW9yLgogICAgICAgICAg
ICAgaWYgKGlzVmVydGljYWwgJiYgc3R5bGUuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAgICAg
ICAgICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aCgyMDAsIEZpeGVkKSk7CisgICAgICAgICAgICAg
ICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aCgyMDAsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTcwMyw3ICs3MDMsNyBAQCBib29sIEFkanVzdGVyOjphZGp1c3RG
b3JUZXh0QXV0b3NpemluZyhSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQmIGVsZW1l
bgogICAgICAgICBzdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmZWxlbWVudC5kb2N1bWVudCgp
LmZvbnRTZWxlY3RvcigpKTsKICAgICB9CiAgICAgaWYgKGF1dG8gbmV3TGluZUhlaWdodCA9IGFk
anVzdG1lbnQubmV3TGluZUhlaWdodCkKLSAgICAgICAgc3R5bGUuc2V0TGluZUhlaWdodCh7ICpu
ZXdMaW5lSGVpZ2h0LCBGaXhlZCB9KTsKKyAgICAgICAgc3R5bGUuc2V0TGluZUhlaWdodCh7ICpu
ZXdMaW5lSGVpZ2h0LCBMZW5ndGhUeXBlOjpGaXhlZCB9KTsKICAgICBpZiAoYXV0byBuZXdTdGF0
dXMgPSBhZGp1c3RtZW50Lm5ld1N0YXR1cykKICAgICAgICAgc3R5bGUuc2V0QXV0b3NpemVTdGF0
dXMoKm5ld1N0YXR1cyk7CiAgICAgcmV0dXJuIGFkanVzdG1lbnQubmV3Rm9udFNpemUgfHwgYWRq
dXN0bWVudC5uZXdMaW5lSGVpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaAppbmRleCA2NThkY2I5MjkyYjUwNzc4MTk2YTA0MzhlYzc1MjI2YmViNjUz
NDQ5Li4zYjI5MTJmMTkwMzYzNDg0YjQ1NTQ0NDc2MjFkYTdiM2YzZjAzNWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMjA4LDE5ICsyMDgs
MTkgQEAgaW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKGNvbnN0
IEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLAogICAgIH0KIAogICAgIGlmIChwcmltaXRpdmVW
YWx1ZS5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgcmV0dXJuIExlbmd0aChwcmltaXRpdmVWYWx1
ZS5kb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aChwcmltaXRp
dmVWYWx1ZS5kb3VibGVWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKIAogICAgIGlmIChw
cmltaXRpdmVWYWx1ZS5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmNzc0NhbGNWYWx1ZSgpLT5jcmVhdGVDYWxj
dWxhdGlvblZhbHVlKGNvbnZlcnNpb25EYXRhKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICByZXR1cm4gTGVuZ3RoKDAsIExl
bmd0aFR5cGU6OkZpeGVkKTsKIH0KIAogaW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0TGVuZ3RoT3JBdXRvKGNvbnN0IEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgcmV0dXJuIExlbmd0
aChBdXRvKTsKKyAgICAgICAgcmV0dXJuIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKTsKICAgICBy
ZXR1cm4gY29udmVydExlbmd0aChidWlsZGVyU3RhdGUsIHZhbHVlKTsKIH0KIApAQCAtMjMxLDIy
ICsyMzEsMjIgQEAgaW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3Ro
U2l6aW5nKGNvbnN0IEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclMKICAgICBjYXNlIENTU1ZhbHVlSW52
YWxpZDoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRMZW5ndGgoYnVpbGRlclN0YXRlLCB2YWx1ZSk7
CiAgICAgY2FzZSBDU1NWYWx1ZUludHJpbnNpYzoKLSAgICAgICAgcmV0dXJuIExlbmd0aChJbnRy
aW5zaWMpOworICAgICAgICByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6OkludHJpbnNpYyk7CiAg
ICAgY2FzZSBDU1NWYWx1ZU1pbkludHJpbnNpYzoKLSAgICAgICAgcmV0dXJuIExlbmd0aChNaW5J
bnRyaW5zaWMpOworICAgICAgICByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6Ok1pbkludHJpbnNp
Yyk7CiAgICAgY2FzZSBDU1NWYWx1ZU1pbkNvbnRlbnQ6CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtp
dE1pbkNvbnRlbnQ6Ci0gICAgICAgIHJldHVybiBMZW5ndGgoTWluQ29udGVudCk7CisgICAgICAg
IHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6TWluQ29udGVudCk7CiAgICAgY2FzZSBDU1NWYWx1
ZU1heENvbnRlbnQ6CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE1heENvbnRlbnQ6Ci0gICAgICAg
IHJldHVybiBMZW5ndGgoTWF4Q29udGVudCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoTGVuZ3Ro
VHlwZTo6TWF4Q29udGVudCk7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEZpbGxBdmFpbGFibGU6
Ci0gICAgICAgIHJldHVybiBMZW5ndGgoRmlsbEF2YWlsYWJsZSk7CisgICAgICAgIHJldHVybiBM
ZW5ndGgoTGVuZ3RoVHlwZTo6RmlsbEF2YWlsYWJsZSk7CiAgICAgY2FzZSBDU1NWYWx1ZUZpdENv
bnRlbnQ6CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEZpdENvbnRlbnQ6Ci0gICAgICAgIHJldHVy
biBMZW5ndGgoRml0Q29udGVudCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6
Rml0Q29udGVudCk7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBMZW5n
dGgoQXV0byk7CisgICAgICAgIHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byk7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBM
ZW5ndGgoKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRMZW5ndGhTaXppbmcoY29uc3QgQnVpbGRlclN0YXRlJiBidWlsZGVyUwogaW5s
aW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoTWF4U2l6aW5nKGNvbnN0
IEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENT
U1ZhbHVlTm9uZSkKLSAgICAgICAgcmV0dXJuIExlbmd0aChVbmRlZmluZWQpOworICAgICAgICBy
ZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6OlVuZGVmaW5lZCk7CiAgICAgcmV0dXJuIGNvbnZlcnRM
ZW5ndGhTaXppbmcoYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKQEAgLTMyMCw3ICszMjAsNyBA
QCBpbmxpbmUgZmxvYXQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNwYWNpbmcoQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0CiBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRUb1JhZGl1c0xlbmd0aChDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJz
aW9uRGF0YSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogewogICAgIGlmICh2YWx1
ZS5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgcmV0dXJuIExlbmd0aCh2YWx1ZS5kb3VibGVWYWx1
ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aCh2YWx1ZS5kb3VibGVWYWx1ZSgp
LCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICBpZiAodmFsdWUuaXNDYWxjdWxhdGVkUGVyY2Vu
dGFnZVdpdGhMZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIExlbmd0aCh2YWx1ZS5jc3NDYWxjVmFs
dWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb252ZXJzaW9uRGF0YSkpOwogICAgIHJldHVy
biB2YWx1ZS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lvbkRhdGEpOwpAQCAtMzMwLDcg
KzMzMCw3IEBAIGlubGluZSBMZW5ndGhTaXplIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRp
dXMoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvCiB7CiAgICAgYXV0byogcGFpciA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVlKCk7CiAgICAgaWYgKCFw
YWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKLSAgICAgICAgcmV0dXJu
IHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfTsKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBM
ZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0gfTsKIAogICAgIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEgPSBidWlsZGVyU3RhdGUuY3Nz
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpOwogICAgIExlbmd0aFNpemUgcmFkaXVzIHsgY29udmVy
dFRvUmFkaXVzTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCAqcGFpci0+Zmlyc3QoKSksIGNvbnZlcnRU
b1JhZGl1c0xlbmd0aChjb252ZXJzaW9uRGF0YSwgKnBhaXItPnNlY29uZCgpKSB9OwpAQCAtMzM4
LDcgKzMzOCw3IEBAIGlubGluZSBMZW5ndGhTaXplIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRS
YWRpdXMoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvCiAgICAgQVNTRVJUKCFyYWRpdXMu
d2lkdGguaXNOZWdhdGl2ZSgpKTsKICAgICBBU1NFUlQoIXJhZGl1cy5oZWlnaHQuaXNOZWdhdGl2
ZSgpKTsKICAgICBpZiAocmFkaXVzLndpZHRoLmlzWmVybygpIHx8IHJhZGl1cy5oZWlnaHQuaXNa
ZXJvKCkpCi0gICAgICAgIHJldHVybiB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH07Cisg
ICAgICAgIHJldHVybiB7IHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyAwLCBMZW5ndGhUeXBl
OjpGaXhlZCB9IH07CiAKICAgICByZXR1cm4gcmFkaXVzOwogfQpAQCAtMzQ2LDEyICszNDYsMTIg
QEAgaW5saW5lIExlbmd0aFNpemUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJhZGl1cyhCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY28KIGlubGluZSBMZW5ndGggQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQog
ewogICAgIGlmIChsZW5ndGguaXNQZXJjZW50KCkpCi0gICAgICAgIHJldHVybiBMZW5ndGgoMTAw
IC0gbGVuZ3RoLnZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICByZXR1cm4gTGVuZ3RoKDEwMCAt
IGxlbmd0aC52YWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICAKICAgICAvLyBUdXJu
IHRoaXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAgICBs
ZW5ndGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRB
cHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2Vu
dCkpKTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNz
aW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50KSkpOwogICAgIGxlbmd0
aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0
aCkpOwogICAgIGF1dG8gb3AgPSBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihX
VEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsKICAgICByZXR1cm4gTGVu
Z3RoKENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkp
OwpAQCAtMzg1LDExICszODUsMTEgQEAgaW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0UG9zaXRpb25Db21wb25lbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3QKICAgICBpZiAo
dmFsdWUuaXNWYWx1ZUlEKCkpIHsKICAgICAgICAgc3dpdGNoICh2YWx1ZS52YWx1ZUlEKCkpIHsK
ICAgICAgICAgY2FzZSBjc3NWYWx1ZUZvcjA6Ci0gICAgICAgICAgICByZXR1cm4gTGVuZ3RoKDAs
IFBlcmNlbnQpOworICAgICAgICAgICAgcmV0dXJuIExlbmd0aCgwLCBMZW5ndGhUeXBlOjpQZXJj
ZW50KTsKICAgICAgICAgY2FzZSBjc3NWYWx1ZUZvcjEwMDoKLSAgICAgICAgICAgIHJldHVybiBM
ZW5ndGgoMTAwLCBQZXJjZW50KTsKKyAgICAgICAgICAgIHJldHVybiBMZW5ndGgoMTAwLCBMZW5n
dGhUeXBlOjpQZXJjZW50KTsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUNlbnRlcjoKLSAgICAgICAg
ICAgIHJldHVybiBMZW5ndGgoNTAsIFBlcmNlbnQpOworICAgICAgICAgICAgcmV0dXJuIExlbmd0
aCg1MCwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQpAQCAtOTQyLDEwICs5NDIsMTAgQEAg
aW5saW5lIFNjcm9sbFNuYXBTdG9wIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFw
U3RvcChCdWlsZGVyU3RhdGUmLCBjb24KIGlubGluZSBHcmlkTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0
ZXI6OmNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1p
dGl2ZVZhbHVlLCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBpZiAocHJpbWl0
aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTWluQ29udGVudCB8fCBwcmltaXRpdmVWYWx1
ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50KQotICAgICAgICByZXR1cm4g
TGVuZ3RoKE1pbkNvbnRlbnQpOworICAgICAgICByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6Ok1p
bkNvbnRlbnQpOwogCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU1heENvbnRlbnQgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlV2Via2l0
TWF4Q29udGVudCkKLSAgICAgICAgcmV0dXJuIExlbmd0aChNYXhDb250ZW50KTsKKyAgICAgICAg
cmV0dXJuIExlbmd0aChMZW5ndGhUeXBlOjpNYXhDb250ZW50KTsKIAogICAgIC8vIEZyYWN0aW9u
YWwgdW5pdC4KICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNGbGV4KCkpCkBAIC0xMjE1LDkgKzEy
MTUsOSBAQCBpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
V29yZFNwYWNpbmcoQnVpbGRlclN0YXRlJiBidWlsZAogICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLmlzTGVuZ3RoKCkpCiAgICAgICAgIHdvcmRTcGFjaW5nID0gcHJpbWl0aXZlVmFsdWUuY29t
cHV0ZUxlbmd0aDxMZW5ndGg+KGNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21G
YWN0b3IoYnVpbGRlclN0YXRlKSk7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNQZXJj
ZW50YWdlKCkpCi0gICAgICAgIHdvcmRTcGFjaW5nID0gTGVuZ3RoKGNsYW1wVG88ZmxvYXQ+KHBy
aW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCksIG1pblZhbHVlRm9yQ3NzTGVuZ3RoLCBtYXhWYWx1
ZUZvckNzc0xlbmd0aCksIFBlcmNlbnQpOworICAgICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChj
bGFtcFRvPGZsb2F0PihwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpLCBtaW5WYWx1ZUZvckNz
c0xlbmd0aCwgbWF4VmFsdWVGb3JDc3NMZW5ndGgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAg
ICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc051bWJlcigpKQotICAgICAgICB3b3JkU3BhY2lu
ZyA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpLCBGaXhlZCk7CisgICAgICAg
IHdvcmRTcGFjaW5nID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCksIExlbmd0
aFR5cGU6OkZpeGVkKTsKIAogICAgIHJldHVybiB3b3JkU3BhY2luZzsKIH0KQEAgLTE1NDIsNyAr
MTU0Miw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRMaW5lSGVpZ2h0KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlCiAgICAgICAgIGF1dG8gY29udmVyc2lv
bkRhdGEgPSBidWlsZGVyU3RhdGUuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlXaXRo
QWRqdXN0ZWRab29tQW5kUHJvcGVydHlUb0NvbXB1dGUoem9vbVdpdGhUZXh0Wm9vbUZhY3Rvcihi
dWlsZGVyU3RhdGUpLCBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpOwogICAgICAgICBMZW5ndGggbGVu
Z3RoID0gcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRh
KTsKICAgICAgICAgaWYgKG11bHRpcGxpZXIgIT0gMS5mKQotICAgICAgICAgICAgbGVuZ3RoID0g
TGVuZ3RoKGxlbmd0aC52YWx1ZSgpICogbXVsdGlwbGllciwgRml4ZWQpOworICAgICAgICAgICAg
bGVuZ3RoID0gTGVuZ3RoKGxlbmd0aC52YWx1ZSgpICogbXVsdGlwbGllciwgTGVuZ3RoVHlwZTo6
Rml4ZWQpOwogICAgICAgICByZXR1cm4gbGVuZ3RoOwogICAgIH0KIApAQCAtMTU1NCwxMCArMTU1
NCwxMCBAQCBpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
TGluZUhlaWdodChCdWlsZGVyU3RhdGUmIGJ1aWxkZQogICAgIC8vIHZhbHVlcyBhbmQgcmF3IG51
bWJlcnMgdG8gcGVyY2VudGFnZXMuCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzUGVyY2VudGFn
ZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBwZXJjZW50YWdlIHNob3VsZCBub3QgYmUgcmVzdHJp
Y3RlZCB0byBhbiBpbnRlZ2VyIGhlcmUuCi0gICAgICAgIHJldHVybiBMZW5ndGgoKGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLmNvbXB1dGVkRm9udFNpemUoKSAqIHByaW1pdGl2ZVZhbHVlLmludFZhbHVl
KCkpIC8gMTAwLCBGaXhlZCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoKGJ1aWxkZXJTdGF0ZS5z
dHlsZSgpLmNvbXB1dGVkRm9udFNpemUoKSAqIHByaW1pdGl2ZVZhbHVlLmludFZhbHVlKCkpIC8g
MTAwLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgfQogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5p
c051bWJlcigpKQotICAgICAgICByZXR1cm4gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZh
bHVlKCkgKiAxMDAuMCwgUGVyY2VudCk7CisgICAgICAgIHJldHVybiBMZW5ndGgocHJpbWl0aXZl
VmFsdWUuZG91YmxlVmFsdWUoKSAqIDEwMC4wLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKIAogICAg
IC8vIEZJWE1FOiBUaGUgcGFyc2VyIHNob3VsZCBvbmx5IGVtaXQgdGhlIGFib3ZlIHR5cGVzLCBz
byB0aGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiBXZSBzaG91bGQgY2hhbmdlIHRoZQogICAg
IC8vIHR5cGUgb2YgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4ganVzdCBhIExlbmd0aCAoYW5kIG5v
dCBhbiBPcHRpb25hbCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5o
CmluZGV4IDIwOWI4NjcyNzZlNmI4MjM2OTUyNzY2ODZhOTVjOWU1ZjBlMWFmMzMuLjFiZjZlYzZk
MjFhOTM1NDU2ZDJmZTUzZWVjM2QzZGEzMzA4YjdjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC01MzksMTQgKzUzOSwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTbGljZToKICAgICAgICAgICAgIC8vIE1hc2tz
IGhhdmUgYSBkaWZmZXJlbnQgaW5pdGlhbCB2YWx1ZSBmb3Igc2xpY2VzLiBQcmVzZXJ2ZSB0aGUg
dmFsdWUgb2YgIjAgZmlsbCIgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgotICAgICAgICAg
ICAgaW1hZ2Uuc2V0SW1hZ2VTbGljZXModHlwZSA9PSBCb3JkZXJJbWFnZSA/IExlbmd0aEJveChM
ZW5ndGgoMTAwLCBQZXJjZW50KSwgTGVuZ3RoKDEwMCwgUGVyY2VudCksIExlbmd0aCgxMDAsIFBl
cmNlbnQpLCBMZW5ndGgoMTAwLCBQZXJjZW50KSkgOiBMZW5ndGhCb3goKSk7CisgICAgICAgICAg
ICBpbWFnZS5zZXRJbWFnZVNsaWNlcyh0eXBlID09IEJvcmRlckltYWdlID8gTGVuZ3RoQm94KExl
bmd0aCgxMDAsIExlbmd0aFR5cGU6OlBlcmNlbnQpLCBMZW5ndGgoMTAwLCBMZW5ndGhUeXBlOjpQ
ZXJjZW50KSwgTGVuZ3RoKDEwMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCgxMDAsIExl
bmd0aFR5cGU6OlBlcmNlbnQpKSA6IExlbmd0aEJveCgpKTsKICAgICAgICAgICAgIGltYWdlLnNl
dEZpbGwodHlwZSAhPSBCb3JkZXJJbWFnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXaWR0aDoKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbG9jYWwgdmFyaWFi
bGUgdG8gd29yayBhcm91bmQgYSBidWcgaW4gdGhlIEdDQyA4LjEgQWRkcmVzcyBTYW5pdGl6ZXIu
CiAgICAgICAgICAgICAvLyBNaWdodCBiZSBzbGlnaHRseSBsZXNzIGVmZmljaWVudCB3aGVuIHRo
ZSB0eXBlIGlzIG5vdCBCb3JkZXJJbWFnZSBzaW5jZSB0aGlzIGlzIHVudXNlZCBpbiB0aGF0IGNh
c2UuCiAgICAgICAgICAgICAvLyBTaG91bGQgYmUgc3dpdGNoZWQgYmFjayB0byBhIHRlbXBvcmFy
eSB3aGVuIHBvc3NpYmxlLiBTZWUgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTg2OTgwCi0gICAgICAg
ICAgICBMZW5ndGhCb3ggbGVuZ3RoQm94KExlbmd0aCgxLCBSZWxhdGl2ZSksIExlbmd0aCgxLCBS
ZWxhdGl2ZSksIExlbmd0aCgxLCBSZWxhdGl2ZSksIExlbmd0aCgxLCBSZWxhdGl2ZSkpOworICAg
ICAgICAgICAgTGVuZ3RoQm94IGxlbmd0aEJveChMZW5ndGgoMSwgTGVuZ3RoVHlwZTo6UmVsYXRp
dmUpLCBMZW5ndGgoMSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUpLCBMZW5ndGgoMSwgTGVuZ3RoVHlw
ZTo6UmVsYXRpdmUpLCBMZW5ndGgoMSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUpKTsKICAgICAgICAg
ICAgIC8vIE1hc2tzIGhhdmUgYSBkaWZmZXJlbnQgaW5pdGlhbCB2YWx1ZSBmb3Igd2lkdGhzLiBU
aGV5IHVzZSBhbiAnYXV0bycgdmFsdWUgcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGZpdCB0byB0aGUg
Ym9yZGVyLgogICAgICAgICAgICAgaW1hZ2Uuc2V0Qm9yZGVyU2xpY2VzKHR5cGUgPT0gQm9yZGVy
SW1hZ2UgPyBsZW5ndGhCb3ggOiBMZW5ndGhCb3goKSk7CiAgICAgICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcAppbmRleCA5NjZlYWU4MmVm
NDI4NjZkYzVjOWY4ZDdkZGQ0OTUxNWVjNjA3OGZhLi5jNjZjOGIyN2E2NWE4NDRiNjc0ZWYxZWVh
MGY4YWZhYTAyMzMzZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3Rh
dGUuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBCdWlsZGVyU3RhdGU6OmNyZWF0ZUZpbHRl
ck9wZXJhdGlvbnMoY29uc3QgQ1NTVmFsdWUmIGluVmFsdWUsIEZpbHRlck9wZXJhdGkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpC
TFVSOiB7Ci0gICAgICAgICAgICBMZW5ndGggc3RkRGV2aWF0aW9uID0gTGVuZ3RoKDAsIEZpeGVk
KTsKKyAgICAgICAgICAgIExlbmd0aCBzdGREZXZpYXRpb24gPSBMZW5ndGgoMCwgTGVuZ3RoVHlw
ZTo6Rml4ZWQpOwogICAgICAgICAgICAgaWYgKGZpbHRlclZhbHVlLmxlbmd0aCgpID49IDEpCiAg
ICAgICAgICAgICAgICAgc3RkRGV2aWF0aW9uID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RW
YWx1ZSwgY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKICAgICAgICAgICAgIGlmIChzdGRE
ZXZpYXRpb24uaXNVbmRlZmluZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
UmVzb2x2ZUZvckRvY3VtZW50LmNwcAppbmRleCBhOTU1MzIwYWVhZGI3N2ZjNDhiYTIzMDBhYjA3
MWRhYzFiZGFlZjlhLi4zMzE4OWJkNjRjYWNiZWRmOTM2OGQzNGZhOWZiNTY0ZDU4YmQxZjM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3Bw
CkBAIC05Niw3ICs5Niw3IEBAIFJlbmRlclN0eWxlIHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgY29uc3QgUGFnaW5hdGlvbiYgcGFnaW5hdGlvbiA9IHJl
bmRlclZpZXcuZnJhbWVWaWV3KCkucGFnaW5hdGlvbigpOwogICAgIGlmIChwYWdpbmF0aW9uLm1v
ZGUgIT0gUGFnaW5hdGlvbjo6VW5wYWdpbmF0ZWQpIHsKICAgICAgICAgZG9jdW1lbnRTdHlsZS5z
ZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5hdGlvbk1vZGUocGFnaW5hdGlvbi5tb2RlKTsKLSAgICAg
ICAgZG9jdW1lbnRTdHlsZS5zZXRDb2x1bW5HYXAoR2FwTGVuZ3RoKExlbmd0aCgoaW50KSBwYWdp
bmF0aW9uLmdhcCwgRml4ZWQpKSk7CisgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0Q29sdW1uR2Fw
KEdhcExlbmd0aChMZW5ndGgoKGludCkgcGFnaW5hdGlvbi5nYXAsIExlbmd0aFR5cGU6OkZpeGVk
KSkpOwogICAgICAgICBpZiAocmVuZGVyVmlldy5tdWx0aUNvbHVtbkZsb3coKSkKICAgICAgICAg
ICAgIHJlbmRlclZpZXcudXBkYXRlQ29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUoZG9jdW1lbnRT
dHlsZSk7CiAgICAgICAgIGlmIChyZW5kZXJWaWV3LnBhZ2UoKS5wYWdpbmF0aW9uTGluZUdyaWRF
bmFibGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZUZvckZvbnRSYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9u
dFJhdy5jcHAKaW5kZXggZTVjOGUxZmY5Y2M0YjU0ZWZiZjc0MjU4NjZlMzg5ZjE3N2U4MDg2OS4u
NTliNzFjNWMxYzIxZDhjZjczNjZmNWJjZjRmNmI5ZTU1YjM2ZGNiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKQEAgLTIxNiwxNCArMjE2
LDE0IEBAIE9wdGlvbmFsPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250
UmF3JiBmb250UmF3LCBGb250Q2FzY2FkZURlc2NyCiAgICAgICAgICAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPExlbmd0aD4oUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwogICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPExlbmd0aD4oV1RGOjpudWxsb3B0KTsKICAgICAgICAgfSwg
WyZdIChkb3VibGUgbnVtYmVyKSB7Ci0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGVuZ3Ro
PihMZW5ndGgobnVtYmVyICogMTAwLjAsIFBlcmNlbnQpKTsKKyAgICAgICAgICAgIHJldHVybiBP
cHRpb25hbDxMZW5ndGg+KExlbmd0aChudW1iZXIgKiAxMDAuMCwgTGVuZ3RoVHlwZTo6UGVyY2Vu
dCkpOwogICAgICAgICB9LCBbJl0gKGNvbnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6TGVu
Z3RoT3JQZXJjZW50UmF3JiBsZW5ndGhPclBlcmNlbnQpIHsKICAgICAgICAgICAgIHJldHVybiBz
d2l0Y2hPbihsZW5ndGhPclBlcmNlbnQsIFsmXSAoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpMZW5ndGhSYXcmIGxlbmd0aCkgewogICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50U3R5
bGUgPSBnZXRQYXJlbnRTdHlsZSgpOwogICAgICAgICAgICAgICAgIENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEgY29udmVyc2lvbkRhdGEgeyBwYXJlbnRTdHlsZS5nZXQoKSwgbnVsbHB0ciwgcGFy
ZW50U3R5bGUuZ2V0KCksIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgMS4wZiwgQ1NTUHJvcGVydHlM
aW5lSGVpZ2h0IH07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExlbmd0aD4oTGVu
Z3RoKGNsYW1wVG88ZmxvYXQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0
aERvdWJsZShjb252ZXJzaW9uRGF0YSwgbGVuZ3RoLnR5cGUsIGxlbmd0aC52YWx1ZSksIG1pblZh
bHVlRm9yQ3NzTGVuZ3RoLCBtYXhWYWx1ZUZvckNzc0xlbmd0aCksIEZpeGVkKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExlbmd0aD4oTGVuZ3RoKGNsYW1wVG88ZmxvYXQ+KENT
U1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb252ZXJzaW9uRGF0
YSwgbGVuZ3RoLnR5cGUsIGxlbmd0aC52YWx1ZSksIG1pblZhbHVlRm9yQ3NzTGVuZ3RoLCBtYXhW
YWx1ZUZvckNzc0xlbmd0aCksIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgICAgICAgICB9LCBb
Jl0gKGRvdWJsZSBwZXJjZW50YWdlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFs
PExlbmd0aD4oTGVuZ3RoKChmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCkgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHBlcmNlbnRhZ2UpKSAvIDEwMCwgRml4ZWQpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8TGVuZ3RoPihMZW5ndGgoKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNp
emUoKSAqIHN0YXRpY19jYXN0PGludD4ocGVyY2VudGFnZSkpIC8gMTAwLCBMZW5ndGhUeXBlOjpG
aXhlZCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAKaW5kZXggYmNkZjFkNjY3ODM4ZDVmYTkxYmQyOTk0OWY1ZjM0OTMzOTdm
YzBiYi4uZTZiMWViNzUyMWZkZTdkNGM3OTkzMzdkYjkzN2IwNDliMmZjYWY4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtNTIxLDE5ICs1MjEsMTkgQEAgYm9vbCBTVkdT
VkdFbGVtZW50OjpoYXNJbnRyaW5zaWNIZWlnaHQoKSBjb25zdAogTGVuZ3RoIFNWR1NWR0VsZW1l
bnQ6OmludHJpbnNpY1dpZHRoKCkgY29uc3QKIHsKICAgICBpZiAod2lkdGgoKS5sZW5ndGhUeXBl
KCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKLSAgICAgICAgcmV0dXJuIExlbmd0aCgw
LCBGaXhlZCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwog
CiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHRoaXMpOwotICAgIHJldHVybiBM
ZW5ndGgod2lkdGgoKS52YWx1ZShsZW5ndGhDb250ZXh0KSwgRml4ZWQpOworICAgIHJldHVybiBM
ZW5ndGgod2lkdGgoKS52YWx1ZShsZW5ndGhDb250ZXh0KSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwog
fQogCiBMZW5ndGggU1ZHU1ZHRWxlbWVudDo6aW50cmluc2ljSGVpZ2h0KCkgY29uc3QKIHsKICAg
ICBpZiAoaGVpZ2h0KCkubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2Up
Ci0gICAgICAgIHJldHVybiBMZW5ndGgoMCwgRml4ZWQpOworICAgICAgICByZXR1cm4gTGVuZ3Ro
KDAsIExlbmd0aFR5cGU6OkZpeGVkKTsKIAogICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29u
dGV4dCh0aGlzKTsKLSAgICByZXR1cm4gTGVuZ3RoKGhlaWdodCgpLnZhbHVlKGxlbmd0aENvbnRl
eHQpLCBGaXhlZCk7CisgICAgcmV0dXJuIExlbmd0aChoZWlnaHQoKS52YWx1ZShsZW5ndGhDb250
ZXh0KSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogfQogCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxl
bWVudDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdI
ZWlnaHQpIGNvbnN0Cg==
</data>
<flag name="review"
          id="438589"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="438592"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420164</attachid>
            <date>2021-02-12 12:25:47 -0800</date>
            <delta_ts>2021-02-12 13:31:50 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-221834-20210212122546.patch</filename>
            <type>text/plain</type>
            <size>195898</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjcxY2Q3MWY0MTk0ZmVl
ZDM0NjQwMTZkZDFkOTMwMTY5MDBlNGIxNi4uM2VjNDI3OTc2NmUyYTdkMTYyOTlhNWViMjgyNGNj
YTJiNDUyODNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2OSBAQAorMjAyMS0wMi0xMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIGVudW0gTGVu
Z3RoVHlwZSAtPiBlbnVtIGNsYXNzIExlbmd0aFR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcgYW5kIFNpbW9uIEZyYXNlci4KKworICAgICAgICBpUGhvbmVPUzE0LjIuc2RrL3Vz
ci9pbmNsdWRlL01hY1R5cGVzLmg6MTkzIGhhczoKKworICAgICAgICB0eXBlZGVmIFNJbnQzMiBG
aXhlZDsKKworICAgICAgICBidXQgd2UgaGF2ZToKKworICAgICAgICBlbnVtIExlbmd0aFR5cGUg
eworICAgICAgICAgICAgLi4uIEZpeGVkIC4uLgorICAgICAgICB9CisKKyAgICAgICAgVGhpcyBs
ZWFkcyB0bzogZXJyb3I6IHJlZmVyZW5jZSB0byAnRml4ZWQnIGlzIGFtYmlndW91cworCisgICAg
ICAgIFVuZm9ydHVuYXRlbHksIHRoaXMgZXJyb3Igb2NjdXJzIGluCisgICAgICAgIC9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL1NGTlRMYXlvdXRU
eXBlcy5oLAorICAgICAgICB3aGljaCBtZWFucyB3ZSBjYW4ndCBtb2RpZnkgdGhlIGVycm9yIHNp
dGUgdG8gcXVhbGlmeSB0aGUgbmFtZS4gVGhlcmVmb3JlLAorICAgICAgICB0aGUgYmVzdCBzb2x1
dGlvbiBpcyB0byB0dXJuIGVudW0gTGVuZ3RoVHlwZSBpbnRvIGVudW0gY2xhc3MgTGVuZ3RoVHlw
ZS4KKyAgICAgICAgVGhpcyBpcyBpbiBhY2NvcmRhbmNlIHdpdGggV2ViS2l0J3Mgc3R5bGUgZ3Vp
ZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6CisgICAgICAgICogY3NzL0Jhc2ljU2hhcGVG
dW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvTGVuZ3RoU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DZW50ZXJDb29yZGluYXRlKToKKyAgICAgICAgKiBj
c3MvQ1NTQmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTZXJpYWxpemFi
bGVQb3NpdGlvbk9mZnNldCk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlTm9kZTo6Y3JlYXRlQ2Fs
Y0V4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ1NTKToKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
Ojpjb21wdXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVN
YXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbnZlcnRU
b0xlbmd0aCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQpOgorICAg
ICAgICAqIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVG
b3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRWYWx1ZUZvckxlbmd0aCk6CisgICAg
ICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6bWluaW11bVZh
bHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvVHJhbnNmb3JtRnVuY3Rpb25zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0Zsb2F0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OnRyYW5zZm9ybXNGb3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2xhdGVGb3JWYWx1
ZSk6CisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUZpbGxMYXllckltYWdlR2VvbWV0cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Y2FsY3VsYXRlSW1hZ2VJbnRyaW5zaWNE
aW1lbnNpb25zKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZSk6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9E
YXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRp
bWVOdW1lcmljRmllbGRFbGVtZW50OjphZGp1c3RNaW5XaWR0aCBjb25zdCk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50OjphZGp1c3RNaW5XaWR0aCBjb25z
dCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9t
U3R5bGUpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmJ1aWxkTGF5b3V0VHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRC
b3gpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6cGVyZm9ybUZpeGVkV2lkdGhBdXRvU2l6ZSk6CisgICAgICAgICogcGFnZS9JbnRl
cnNlY3Rpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVJvb3RNYXJnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnJvb3RNYXJnaW4gY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Okxlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICog
cGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Okxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpM
ZW5ndGg6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNBdXRvIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNGaXhlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGg6OmlzTWF4Q29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZW5ndGg6OmlzTWluQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Omlz
UGVyY2VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzUmVsYXRpdmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1VuZGVmaW5lZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzQ2FsY3VsYXRlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZW5ndGg6OmlzTGVnYWN5SW50cmluc2ljIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okxlbmd0aDo6aXNJbnRyaW5zaWMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpp
c0ZpbGxBdmFpbGFibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc0ZpdENv
bnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc01pbkludHJpbnNpYyBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoQm94Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGhCb3g6Okxlbmd0aEJveCk6CisgICAgICAgICogcGxhdGZvcm0vVGhlbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWU6Om1pbmltdW1Db250cm9sU2l6ZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
OjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpzaXplRnJvbU5TQ29udHJvbFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWVNYWM6Om1pbmltdW1Db250cm9sU2l6ZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvVGFi
bGVMYXlvdXQ6OnJlY2FsY0NvbHVtbik6CisgICAgICAgIChXZWJDb3JlOjpBdXRvVGFibGVMYXlv
dXQ6OmNhbGNFZmZlY3RpdmVMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1Rh
YmxlTGF5b3V0OjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpeGVkVGFibGVMYXlvdXQ6OmNhbGNXaWR0aEFycmF5
KToKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y2FsY3VsYXRlR3JpZFRy
YWNrU2l6ZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc05vbkJsb2Nrc09yTm9uRml4ZWRIZWlnaHRMaXN0SXRlbXMp
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0QlBNV2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dp
Y2FsV2lkdGhJbkZyYWdtZW50QnlNaW5NYXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjphZGp1c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXpp
bmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphZGp1c3RDb250ZW50Qm94
TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluRnJhZ21lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29u
dGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVE
aXJlY3Rpb25NYXJnaW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29t
cHV0ZUxvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpj
b21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlSW5saW5lU3RhdGljRGlzdGFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdp
ZHRoVXNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUJsb2NrU3RhdGljRGlz
dGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxIZWlnaHRVc2luZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBlcmNlbnRhZ2VMb2dpY2FsSGVp
Z2h0SXNSZXNvbHZhYmxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJ1dHRvbjo6dXBkYXRlQW5vbnltb3VzQ2hp
bGRTdHlsZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3g6OmFsbG93ZWRDaGlsZEZsZXgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluY2x1ZGVOb25GaXhlZEhlaWdodCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjptYWluU2l6ZUZvclBlcmNl
bnRhZ2VSZXNvbHV0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGdWxsU2NyZWVuU3R5bGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFn
ZTo6bGF5b3V0U2hhZG93Q29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aGFzTm9uWmVyb1RyYW5zZm9ybU9yaWdpbik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlz
dE1hcmtlcjo6dXBkYXRlTWFyZ2lucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0
eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6bG9naWNhbFdpZHRoRnJvbUNvbHVtbnMgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlTG9naWNhbEhlaWdodEZvckNlbGwpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZTo6bGF5b3V0RXhjbHVkZWRDaGlsZHJlbik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZXNldE92ZXJyaWRkZW5IZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lOjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDb2NvYTo6YWRq
dXN0QXBwbGVQYXlCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnNldFNpemVG
cm9tRm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0
TGlzdEJ1dHRvblN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
OjphZGp1c3RNZW51TGlzdFN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lTWFjOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
blN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RT
ZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0U3R5
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lTWFjOjphZGp1c3RTbGlkZXJUaHVtYlNpemUgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9UZXh0QXV0b1NpemluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1Npemlu
Z1ZhbHVlOjphZGp1c3RUZXh0Tm9kZVNpemVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUNlbnRlckNvb3Jk
aW5hdGU6OnVwZGF0ZUNvbXB1dGVkTGVuZ3RoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVSYWRpdXM6OkJhc2lj
U2hhcGVSYWRpdXMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCb3JkZXJEYXRhOjpCb3JkZXJEYXRhKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvRmlsbExheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6Omlu
aXRpYWxGaWxsWFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aW5pdGlh
bEZpbGxZUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkVHJhY2tTaXpl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXplOjpHcmlkVHJhY2tTaXplKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OnNldFBhZ2VTY2FsZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0V29yZFNwYWNpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnJlc2V0TWFyZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsU2hhcGVNYXJnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJSYWRpdXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFdvcmRTcGFjaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjppbml0aWFsTWF4U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6aW5pdGlhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5p
dGlhbFBhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0
SW5kZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsWmVyb0xlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbE9uZUxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4QmFzaXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxNYXJxdWVlSW5jcmVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtT3JpZ2luWCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxTcGVjaWZpZWRMaW5lSGVpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsTWFyZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsUGFkZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvQ29sdW1ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUm93cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyUmFkaXVzKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUdlbmVyYXRlZEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSZWZsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlZmxlY3Rpb246OlN0eWxlUmVmbGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlU3Vycm91bmREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU3Vycm91
bmREYXRhOjpTdHlsZVN1cnJvdW5kRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyRnVsbFNjcmVlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUcmVlQnVpbGRlcjo6RnVsbFNjcmVlbjo6Y3JlYXRlUGxhY2Vob2xkZXIpOgorICAgICAgICAq
IHN0eWxlL1N0eWxlQWRqdXN0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmFkZElu
dHJpbnNpY01hcmdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkFkanVzdGVyOjphZGp1
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkFkanVzdGVyOjphZGp1c3RGb3JU
ZXh0QXV0b3NpemluZyk6CisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExl
bmd0aE9yQXV0byk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydExlbmd0aFNpemluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydExlbmd0aE1heFNpemluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvUmFkaXVzTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWlu
dXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRQb3NpdGlvbkNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrQnJlYWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodCk6CisgICAg
ICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI6OmFwcGx5SW5pdGlhbFZhbHVlKToK
KyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6QnVpbGRlclN0YXRlOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAgICAg
KiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVG
b3JGb250UmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlRm9yRm9udFJh
dyk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU1ZHRWxlbWVudDo6aW50cmluc2ljV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU1ZHRWxlbWVudDo6aW50cmluc2ljSGVpZ2h0IGNvbnN0KToKKwogMjAyMS0wMi0xMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBXaW5k
b3dzIGJ1aWxkIGFmdGVyIHIyNzI3NzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IGE0NGZhNTFhZDQ4MzBmNzU2MTkxNWQzYzdi
MDIwOGIzOGU2MDYxMjIuLmYwYzBmYzlkYWMzNDYyMTVlYjQ0YjRlOWY1NTQ1MWQyYmJhMDgzN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcApAQCAtMjE0LDEwICsyMTQsMTAgQEAgc3RhdGljIFJlZlB0cjxUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24+IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2wKIAogICAg
IFJlZlB0cjxUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24+IGlkZW50aXR5OwogICAgIGlmICgh
ZnJvbSkgewotICAgICAgICBpZGVudGl0eSA9IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6
Y3JlYXRlKExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhl
ZCksIHRvLT50eXBlKCkpOworICAgICAgICBpZGVudGl0eSA9IFRyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCgwLCBM
ZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCksIHRvLT50eXBl
KCkpOwogICAgICAgICBmcm9tID0gaWRlbnRpdHkuZ2V0KCk7CiAgICAgfSBlbHNlIGlmICghdG8p
IHsKLSAgICAgICAgaWRlbnRpdHkgPSBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZShMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBm
cm9tLT50eXBlKCkpOworICAgICAgICBpZGVudGl0eSA9IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCgwLCBMZW5n
dGhUeXBlOjpGaXhlZCksIExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCksIGZyb20tPnR5cGUo
KSk7CiAgICAgICAgIHRvID0gaWRlbnRpdHkuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKaW5kZXggYjBkOGJkMTE2ZjI5ZTYyNmMxODQ2
ZGUwZWIwNTMwMWRkZDFmOWEzNC4uMWFhYWU5NmIxOTViYjFlNDNhMmMxMWVlMWE1OTU3MWQxNzlk
MWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcApAQCAt
MTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjCiBzdGF0aWMgTGVuZ3RoU2l6
ZSBjb252ZXJ0VG9MZW5ndGhTaXplKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNv
bnZlcnNpb25EYXRhLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfTsK
KyAgICAgICAgcmV0dXJuIHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAsIExlbmd0aFR5
cGU6OkZpeGVkIH0gfTsKIAogICAgIGF1dG8mIHBhaXIgPSAqdmFsdWUtPnBhaXJWYWx1ZSgpOwog
ICAgIHJldHVybiB7IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5maXJzdCgp
KSwgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLnNlY29uZCgpKSB9OwpAQCAt
MTUzLDcgKzE1Myw3IEBAIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRUb0xlbmd0aFNpemUoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvCiBzdGF0aWMgQmFzaWNTaGFw
ZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRpbmF0ZShjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZh
bHVlKQogewogICAgIENTU1ZhbHVlSUQga2V5d29yZCA9IENTU1ZhbHVlVG9wOwotICAgIExlbmd0
aCBvZmZzZXQgeyAwLCBGaXhlZCB9OworICAgIExlbmd0aCBvZmZzZXQgeyAwLCBMZW5ndGhUeXBl
OjpGaXhlZCB9OwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIGtleXdvcmQgPSBDU1NWYWx1ZUNl
bnRlcjsKICAgICBlbHNlIGlmICh2YWx1ZS0+aXNWYWx1ZUlEKCkpCkBAIC0xNzYsNyArMTc2LDcg
QEAgc3RhdGljIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlIGNvbnZlcnRUb0NlbnRlckNvb3Jk
aW5hdGUoY29uc3QgQ1NTVG9MZW5ndGhDb24KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NW
YWx1ZUNlbnRlcjoKICAgICAgICAgZGlyZWN0aW9uID0gQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5h
dGU6OlRvcExlZnQ7Ci0gICAgICAgIG9mZnNldCA9IExlbmd0aCg1MCwgUGVyY2VudCk7CisgICAg
ICAgIG9mZnNldCA9IExlbmd0aCg1MCwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKaW5kZXggYzc1ZTZlZGIyZGVkZjUxYjQ5MTE1NDFk
NzE0MGVmMWY4MTIxZGMyYy4uN2VlOGFlZDFhYzMyMjRkN2I3Y2M1ZDA3N2NjNjI2ZGUxNzRiMDUy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCkBAIC02NSwxOSArNjUsMTkg
QEAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlv
bk9mZnNldChDU1NQcmltaXRpdmVWYWx1ZSoKIAogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgaWYgKCFhbW91bnQpCi0gICAgICAgIGFtb3Vu
dCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShMZW5ndGgoc2lkZSA9PSBDU1NWYWx1ZUNlbnRl
ciA/IDUwIDogMCwgUGVyY2VudCkpOworICAgICAgICBhbW91bnQgPSBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoTGVuZ3RoKHNpZGUgPT0gQ1NTVmFsdWVDZW50ZXIgPyA1MCA6IDAsIExlbmd0aFR5
cGU6OlBlcmNlbnQpKTsKICAgICAKICAgICBpZiAoc2lkZSA9PSBDU1NWYWx1ZUNlbnRlcikKICAg
ICAgICAgc2lkZSA9IGRlZmF1bHRTaWRlOwogICAgIGVsc2UgaWYgKChzaWRlID09IENTU1ZhbHVl
UmlnaHQgfHwgc2lkZSA9PSBDU1NWYWx1ZUJvdHRvbSkKICAgICAgICAgJiYgYW1vdW50LT5pc1Bl
cmNlbnRhZ2UoKSkgewogICAgICAgICBzaWRlID0gZGVmYXVsdFNpZGU7Ci0gICAgICAgIGFtb3Vu
dCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShMZW5ndGgoMTAwIC0gYW1vdW50LT5mbG9hdFZh
bHVlKCksIFBlcmNlbnQpKTsKKyAgICAgICAgYW1vdW50ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKExlbmd0aCgxMDAgLSBhbW91bnQtPmZsb2F0VmFsdWUoKSwgTGVuZ3RoVHlwZTo6UGVyY2Vu
dCkpOwogICAgIH0gZWxzZSBpZiAoYW1vdW50LT5pc0xlbmd0aCgpICYmICFhbW91bnQtPmZsb2F0
VmFsdWUoKSkgewogICAgICAgICBpZiAoc2lkZSA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHNpZGUgPT0g
Q1NTVmFsdWVCb3R0b20pCi0gICAgICAgICAgICBhbW91bnQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoTGVuZ3RoKDEwMCwgUGVyY2VudCkpOworICAgICAgICAgICAgYW1vdW50ID0gY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKExlbmd0aCgxMDAsIExlbmd0aFR5cGU6OlBlcmNlbnQpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgYW1vdW50ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KExlbmd0aCgwLCBQZXJjZW50KSk7CisgICAgICAgICAgICBhbW91bnQgPSBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoTGVuZ3RoKDAsIExlbmd0aFR5cGU6OlBlcmNlbnQpKTsKICAgICAgICAgc2lk
ZSA9IGRlZmF1bHRTaWRlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0
aW9uVmFsdWUuY3BwCmluZGV4IDIwMTk1OTc1M2NlZWY4YWQzMzBlZjcwNGJhZmJhZDg5YzViMDVj
YzcuLmUyMTFhZWQxZmUzOTQ1YjM1ZmY2YzNmNWNkNDk0YzlhZDhiYmFkNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTQyMCw3ICs0MjAsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBDU1NDYWxjUHJpbWl0aXZlVmFsdWVO
b2RlOjpjcmVhdGVDYWxjRXhwcmVzcwogICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVt
YmVyOgogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk51bWJlcj4obV92
YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Okxlbmd0
aDoKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0
aChtX3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSksIFdlYkNvcmU6
OkZpeGVkKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3Ro
PihMZW5ndGgobV92YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBM
ZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2Vu
dDoKICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnRMZW5ndGg6IHsKICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fdmFsdWUtPmNvbnZl
cnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uPihjb252
ZXJzaW9uRGF0YSkpOwpAQCAtMjAyNywyMCArMjAyNywyMCBAQCBzdGF0aWMgUmVmUHRyPENTU0Nh
bGNFeHByZXNzaW9uTm9kZT4gY3JlYXRlQ1NTKGNvbnN0IENhbGNFeHByZXNzaW9uTm9kZSYgbm9k
ZSwgYwogc3RhdGljIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25z
dCBMZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIHN3aXRj
aCAobGVuZ3RoLnR5cGUoKSkgewotICAgIGNhc2UgUGVyY2VudDoKLSAgICBjYXNlIEZpeGVkOgor
ICAgIGNhc2UgTGVuZ3RoVHlwZTo6UGVyY2VudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZpeGVk
OgogICAgICAgICByZXR1cm4gQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlTm9kZTo6Y3JlYXRlKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUobGVuZ3RoLCBzdHlsZSkpOwotICAgIGNhc2UgQ2FsY3VsYXRl
ZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkNhbGN1bGF0ZWQ6CiAgICAgICAgIHJldHVybiBjcmVh
dGVDU1MobGVuZ3RoLmNhbGN1bGF0aW9uVmFsdWUoKS5leHByZXNzaW9uKCksIHN0eWxlKTsKLSAg
ICBjYXNlIEF1dG86Ci0gICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAgY2FzZSBNaW5JbnRyaW5zaWM6
Ci0gICAgY2FzZSBNaW5Db250ZW50OgotICAgIGNhc2UgTWF4Q29udGVudDoKLSAgICBjYXNlIEZp
bGxBdmFpbGFibGU6Ci0gICAgY2FzZSBGaXRDb250ZW50OgotICAgIGNhc2UgUmVsYXRpdmU6Ci0g
ICAgY2FzZSBVbmRlZmluZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpBdXRvOgorICAgIGNhc2Ug
TGVuZ3RoVHlwZTo6SW50cmluc2ljOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWluSW50cmluc2lj
OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWluQ29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6
Ok1heENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaWxsQXZhaWxhYmxlOgorICAgIGNh
c2UgTGVuZ3RoVHlwZTo6Rml0Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlJlbGF0aXZl
OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6VW5kZWZpbmVkOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA2ZjdhZWZiMTc2ODYxZThhOTZkMzU1ZGM0NmUxMmZm
NmZjYzk2ZmMzLi40ZGRkMTQ2NWQ5MDA2ZDhmYTcyN2NkYWY0MWRmZDg3NjZiOGE3ZTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTI3OSwyNiArMjc5LDI2
IEBAIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgmIGxl
bmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0CiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFz
cykKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKLSAgICBjYXNlIEF1dG86Ci0gICAg
Y2FzZSBJbnRyaW5zaWM6Ci0gICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgY2FzZSBNaW5Db250
ZW50OgotICAgIGNhc2UgTWF4Q29udGVudDoKLSAgICBjYXNlIEZpbGxBdmFpbGFibGU6Ci0gICAg
Y2FzZSBGaXRDb250ZW50OgotICAgIGNhc2UgUGVyY2VudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6
OkF1dG86CisgICAgY2FzZSBMZW5ndGhUeXBlOjpJbnRyaW5zaWM6CisgICAgY2FzZSBMZW5ndGhU
eXBlOjpNaW5JbnRyaW5zaWM6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5Db250ZW50OgorICAg
IGNhc2UgTGVuZ3RoVHlwZTo6TWF4Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZpbGxB
dmFpbGFibGU6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXRDb250ZW50OgorICAgIGNhc2UgTGVu
Z3RoVHlwZTo6UGVyY2VudDoKICAgICAgICAgaW5pdChsZW5ndGgpOwogICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBGaXhlZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZpeGVkOgogICAgICAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgbV92YWx1
ZS5udW0gPSBhZGp1c3RGbG9hdEZvckFic29sdXRlWm9vbShsZW5ndGgudmFsdWUoKSwgc3R5bGUp
OwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDYWxjdWxhdGVkOiB7CisgICAgY2FzZSBMZW5n
dGhUeXBlOjpDYWxjdWxhdGVkOiB7CiAgICAgICAgIGluaXQoQ1NTQ2FsY1ZhbHVlOjpjcmVhdGUo
bGVuZ3RoLmNhbGN1bGF0aW9uVmFsdWUoKSwgc3R5bGUpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBjYXNlIFJlbGF0aXZlOgotICAgIGNhc2UgVW5kZWZpbmVkOgorICAgIGNhc2UgTGVu
Z3RoVHlwZTo6UmVsYXRpdmU6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpVbmRlZmluZWQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzMy
LDQ2ICszMzIsNDYgQEAgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFN0YXRp
Y0NTU1ZhbHVlVGFnLCBkb3VibGUgbnVtLCBDU1NVbml0VHlwZQogdm9pZCBDU1NQcmltaXRpdmVW
YWx1ZTo6aW5pdChjb25zdCBMZW5ndGgmIGxlbmd0aCkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50
eXBlKCkpIHsKLSAgICBjYXNlIEF1dG86CisgICAgY2FzZSBMZW5ndGhUeXBlOjpBdXRvOgogICAg
ICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBXZWJDb3JlOjpGaXhlZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZpeGVkOgogICAg
ICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAg
bV92YWx1ZS5udW0gPSBsZW5ndGgudmFsdWUoKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
SW50cmluc2ljOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6SW50cmluc2ljOgogICAgICAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVJbnRyaW5zaWM7CiAgICAgICAgIHJldHVybjsKLSAgICBj
YXNlIE1pbkludHJpbnNpYzoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkludHJpbnNpYzoKICAg
ICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTWluSW50cmluc2ljOwogICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBNaW5Db250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWluQ29u
dGVudDoKICAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxV
RV9JRCk7CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTWluQ29udGVudDsKICAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWF4Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6
Ok1heENvbnRlbnQ6CiAgICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpD
U1NfVkFMVUVfSUQpOwogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1heENvbnRl
bnQ7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEZpbGxBdmFpbGFibGU6CisgICAgY2FzZSBM
ZW5ndGhUeXBlOjpGaWxsQXZhaWxhYmxlOgogICAgICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVXZWJraXRGaWxsQXZhaWxhYmxlOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBGaXRD
b250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml0Q29udGVudDoKICAgICAgICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlRml0Q29udGVudDsKICAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgUGVyY2VudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6CiAgICAgICAgIHNldFBy
aW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIEFT
U0VSVChzdGQ6OmlzZmluaXRlKGxlbmd0aC5wZXJjZW50KCkpKTsKICAgICAgICAgbV92YWx1ZS5u
dW0gPSBsZW5ndGgucGVyY2VudCgpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDYWxjdWxh
dGVkOgotICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgY2FzZSBVbmRlZmluZWQ6CisgICAgY2FzZSBM
ZW5ndGhUeXBlOjpDYWxjdWxhdGVkOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6UmVsYXRpdmU6Cisg
ICAgY2FzZSBMZW5ndGhUeXBlOjpVbmRlZmluZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTQxLDcgKzU0MSw3IEBAIHRlbXBsYXRl
PD4gdW5zaWduZWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgoY29uc3QgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uCiAKIHRlbXBsYXRlPD4gTGVuZ3RoIENTU1ByaW1pdGl2ZVZhbHVlOjpj
b21wdXRlTGVuZ3RoKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25E
YXRhKSBjb25zdAogewotICAgIHJldHVybiBMZW5ndGgoY2xhbXBUbzxmbG9hdD4oY29tcHV0ZUxl
bmd0aERvdWJsZShjb252ZXJzaW9uRGF0YSksIG1pblZhbHVlRm9yQ3NzTGVuZ3RoLCBtYXhWYWx1
ZUZvckNzc0xlbmd0aCksIEZpeGVkKTsKKyAgICByZXR1cm4gTGVuZ3RoKGNsYW1wVG88ZmxvYXQ+
KGNvbXB1dGVMZW5ndGhEb3VibGUoY29udmVyc2lvbkRhdGEpLCBtaW5WYWx1ZUZvckNzc0xlbmd0
aCwgbWF4VmFsdWVGb3JDc3NMZW5ndGgpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiB9CiAKIHRlbXBs
YXRlPD4gc2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgoY29uc3QgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRleCA0NTVmOWI3MzhiYWJl
ZGQzNTAwYTU0MzUyMmRlYTMwMDMyMGI3YjRlLi5jNzhkNjI5Y2M4NDQ0NWUxMWVkNmE0OGVkMGIz
YjM3OWE2MzM4YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgKQEAgLTQ1NTcsMTggKzQ1NTcsMTggQEAgaW5saW5lIGJvb2wgQ1NTUHJpbWl0
aXZlVmFsdWU6OmNvbnZlcnRpbmdUb0xlbmd0aFJlcXVpcmVzTm9uTnVsbFN0eWxlKGludCBsZW5n
dGgKIHRlbXBsYXRlPGludCBzdXBwb3J0ZWQ+IExlbmd0aCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29u
dmVydFRvTGVuZ3RoKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25E
YXRhKSBjb25zdAogewogICAgIGlmIChpc0ZvbnRSZWxhdGl2ZUxlbmd0aCgpICYmIGNvbnZlcnRp
bmdUb0xlbmd0aFJlcXVpcmVzTm9uTnVsbFN0eWxlKHN1cHBvcnRlZCkgJiYgIWNvbnZlcnNpb25E
YXRhLnN0eWxlKCkpCi0gICAgICAgIHJldHVybiBMZW5ndGgoVW5kZWZpbmVkKTsKKyAgICAgICAg
cmV0dXJuIExlbmd0aChMZW5ndGhUeXBlOjpVbmRlZmluZWQpOwogICAgIGlmICgoc3VwcG9ydGVk
ICYgRml4ZWRJbnRlZ2VyQ29udmVyc2lvbikgJiYgaXNMZW5ndGgoKSkKICAgICAgICAgcmV0dXJu
IGNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CiAgICAgaWYgKChzdXBwb3J0
ZWQgJiBGaXhlZEZsb2F0Q29udmVyc2lvbikgJiYgaXNMZW5ndGgoKSkKLSAgICAgICAgcmV0dXJu
IExlbmd0aChjb21wdXRlTGVuZ3RoPGRvdWJsZT4oY29udmVyc2lvbkRhdGEpLCBGaXhlZCk7Cisg
ICAgICAgIHJldHVybiBMZW5ndGgoY29tcHV0ZUxlbmd0aDxkb3VibGU+KGNvbnZlcnNpb25EYXRh
KSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgIGlmICgoc3VwcG9ydGVkICYgUGVyY2VudENvbnZl
cnNpb24pICYmIGlzUGVyY2VudGFnZSgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoKGRvdWJsZVZh
bHVlKCksIFBlcmNlbnQpOworICAgICAgICByZXR1cm4gTGVuZ3RoKGRvdWJsZVZhbHVlKCksIExl
bmd0aFR5cGU6OlBlcmNlbnQpOwogICAgIGlmICgoc3VwcG9ydGVkICYgQXV0b0NvbnZlcnNpb24p
ICYmIHZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIHJldHVybiBMZW5ndGgoQXV0
byk7CisgICAgICAgIHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byk7CiAgICAgaWYgKChz
dXBwb3J0ZWQgJiBDYWxjdWxhdGVkQ29udmVyc2lvbikgJiYgaXNDYWxjdWxhdGVkKCkpCiAgICAg
ICAgIHJldHVybiBMZW5ndGgoY3NzQ2FsY1ZhbHVlKCktPmNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUo
Y29udmVyc2lvbkRhdGEpKTsKLSAgICByZXR1cm4gTGVuZ3RoKFVuZGVmaW5lZCk7CisgICAgcmV0
dXJuIExlbmd0aChMZW5ndGhUeXBlOjpVbmRlZmluZWQpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQnVmZmVyZWRSZW5kZXJpbmcg
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAppbmRleCAyNDYyNjRmZTU0ZTFkYWUx
ZjZhNDNjMTg4OTc4ZTM5YjIyNzNkNzY2Li5iOGFkN2U4Y2I4OWQxNWE3ZGRlOTdkYjM0MDYyZTQw
MjU2YjhmNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCkBAIC01NTcsMjEg
KzU1NywyMSBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpY2UoQ1NT
VmFsdWUmIHZhbHVlLCBOaW5lUGllY2VJbWFnZSYgaW1hZwogICAgIExlbmd0aEJveCBib3g7CiAg
ICAgUXVhZCogc2xpY2VzID0gYm9yZGVySW1hZ2VTbGljZS5zbGljZXMoKTsKICAgICBpZiAoc2xp
Y2VzLT50b3AoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC50b3AoKSA9IExlbmd0aChz
bGljZXMtPnRvcCgpLT5kb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LnRvcCgp
ID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmRvdWJsZVZhbHVlKCksIExlbmd0aFR5cGU6OlBlcmNl
bnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCkt
PmludFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAgICAgICBib3gu
dG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+aW50VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19O
VU1CRVIpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlz
UGVyY2VudGFnZSgpKQotICAgICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoc2xpY2VzLT5ib3R0
b20oKS0+ZG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExl
bmd0aChzbGljZXMtPmJvdHRvbSgpLT5kb3VibGVWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50
KTsKICAgICBlbHNlCi0gICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aCgoaW50KXNsaWNlcy0+
Ym90dG9tKCktPmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpLCBGaXhlZCk7Cisg
ICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aCgoaW50KXNsaWNlcy0+Ym90dG9tKCktPmZsb2F0
VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAg
aWYgKHNsaWNlcy0+bGVmdCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LmxlZnQoKSA9
IExlbmd0aChzbGljZXMtPmxlZnQoKS0+ZG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAg
IGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmRvdWJsZVZhbHVlKCksIExlbmd0
aFR5cGU6OlBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChz
bGljZXMtPmxlZnQoKS0+aW50VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpLCBGaXhlZCk7
CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmludFZhbHVlKENT
U1VuaXRUeXBlOjpDU1NfTlVNQkVSKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgIGlmIChzbGlj
ZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmRvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gu
cmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmRvdWJsZVZhbHVlKCksIExlbmd0aFR5
cGU6OlBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xp
Y2VzLT5yaWdodCgpLT5pbnRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsK
KyAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgpLT5pbnRWYWx1ZShD
U1NVbml0VHlwZTo6Q1NTX05VTUJFUiksIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICBpbWFnZS5z
ZXRJbWFnZVNsaWNlcyhib3gpOwogCiAgICAgLy8gU2V0IG91ciBmaWxsIG1vZGUuCkBAIC01OTMs
MzAgKzU5MywzMCBAQCBMZW5ndGhCb3ggQ1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VR
dWFkKENTU1ZhbHVlJiB2YWx1ZSkKICAgICBMZW5ndGhCb3ggYm94OyAvLyBEZWZhdWx0cyB0byAn
YXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgdGhhdCBleHBsaWNpdGx5IGJlbG93Lgog
ICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldpZHRocy5xdWFkVmFsdWUoKTsKICAgICBpZiAoc2xp
Y2VzLT50b3AoKS0+aXNOdW1iZXIoKSkKLSAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNl
cy0+dG9wKCktPmludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVu
Z3RoKHNsaWNlcy0+dG9wKCktPmludFZhbHVlKCksIExlbmd0aFR5cGU6OlJlbGF0aXZlKTsKICAg
ICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LnRv
cCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1Nf
UEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2Vz
LT50b3AoKS0+ZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKSwgTGVuZ3Ro
VHlwZTo6UGVyY2VudCk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT50b3AoKS0+dmFsdWVJRCgpICE9
IENTU1ZhbHVlQXV0bykKICAgICAgICAgYm94LnRvcCgpID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0
ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPnJpZ2h0
KCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmln
aHQoKS0+aW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmludFZhbHVlKCksIExlbmd0aFR5cGU6OlJlbGF0aXZlKTsKICAg
ICBlbHNlIGlmIChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gu
cmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmRvdWJsZVZhbHVlKENTU1VuaXRUeXBl
OjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFH
RSksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+
dmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKICAgICAgICAgYm94LnJpZ2h0KCkgPSBzbGljZXMt
PnJpZ2h0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CiAKICAgICBp
ZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNOdW1iZXIoKSkKLSAgICAgICAgYm94LmJvdHRvbSgpID0g
TGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAgICAgICAg
Ym94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmludFZhbHVlKCksIExlbmd0
aFR5cGU6OlJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPmJvdHRvbSgpLT5pc1BlcmNl
bnRhZ2UoKSkKLSAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCkt
PmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAg
ICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+ZG91YmxlVmFsdWUo
Q1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKSwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CiAgICAg
ZWxzZSBpZiAoc2xpY2VzLT5ib3R0b20oKS0+dmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKICAg
ICAgICAgYm94LmJvdHRvbSgpID0gc2xpY2VzLT5ib3R0b20oKS0+Y29tcHV0ZUxlbmd0aDxMZW5n
dGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPmxlZnQoKS0+aXNOdW1iZXIo
KSkKLSAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+aW50VmFsdWUo
KSwgUmVsYXRpdmUpOworICAgICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgp
LT5pbnRWYWx1ZSgpLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2Vz
LT5sZWZ0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNs
aWNlcy0+bGVmdCgpLT5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpLCBQ
ZXJjZW50KTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+ZG91
YmxlVmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKSwgTGVuZ3RoVHlwZTo6UGVyY2Vu
dCk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1
dG8pCiAgICAgICAgIGJveC5sZWZ0KCkgPSBzbGljZXMtPmxlZnQoKS0+Y29tcHV0ZUxlbmd0aDxM
ZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0xlbmd0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25z
LmNwcAppbmRleCA2OTUzM2VlZjE1YzllODM3YjdhZDYxMTkzZWNmZjM5ZjM3ZWM5NzQzLi5jYzAy
YTRiNGZmN2UyZDY0MjkwZGFkMDdjMGZlY2Y4NzEwM2NiZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TGVuZ3RoRnVuY3Rpb25zLmNwcApAQCAtMzksMjAgKzM5LDIwIEBAIGludCBpbnRWYWx1ZUZvckxl
bmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpCiBMYXlv
dXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1h
eGltdW1WYWx1ZSkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKLSAgICBjYXNlIEZp
eGVkOgotICAgIGNhc2UgUGVyY2VudDoKLSAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgY2FzZSBM
ZW5ndGhUeXBlOjpGaXhlZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6CisgICAgY2Fz
ZSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkOgogICAgICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9y
TGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlKTsKLSAgICBjYXNlIEZpbGxBdmFpbGFibGU6Ci0g
ICAgY2FzZSBBdXRvOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6RmlsbEF2YWlsYWJsZToKKyAgICBj
YXNlIExlbmd0aFR5cGU6OkF1dG86CiAgICAgICAgIHJldHVybiBtYXhpbXVtVmFsdWU7Ci0gICAg
Y2FzZSBSZWxhdGl2ZToKLSAgICBjYXNlIEludHJpbnNpYzoKLSAgICBjYXNlIE1pbkludHJpbnNp
YzoKLSAgICBjYXNlIE1pbkNvbnRlbnQ6Ci0gICAgY2FzZSBNYXhDb250ZW50OgotICAgIGNhc2Ug
Rml0Q29udGVudDoKLSAgICBjYXNlIFVuZGVmaW5lZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlJl
bGF0aXZlOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6SW50cmluc2ljOgorICAgIGNhc2UgTGVuZ3Ro
VHlwZTo6TWluSW50cmluc2ljOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWluQ29udGVudDoKKyAg
ICBjYXNlIExlbmd0aFR5cGU6Ok1heENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXRD
b250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6VW5kZWZpbmVkOgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNjQsMjIgKzY0LDIy
IEBAIExheW91dFVuaXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91
dFVuaXQgbWF4aW11bVZhbHVlKQogZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5n
dGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpCiB7CiAgICAgc3dpdGNoIChsZW5n
dGgudHlwZSgpKSB7Ci0gICAgY2FzZSBGaXhlZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkZpeGVk
OgogICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlKCk7Ci0gICAgY2FzZSBQZXJjZW50OgorICAg
IGNhc2UgTGVuZ3RoVHlwZTo6UGVyY2VudDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0PihtYXhpbXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8gMTAwLjBmKTsKLSAgICBjYXNl
IEZpbGxBdmFpbGFibGU6Ci0gICAgY2FzZSBBdXRvOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rmls
bEF2YWlsYWJsZToKKyAgICBjYXNlIExlbmd0aFR5cGU6OkF1dG86CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlKTsKLSAgICBjYXNlIENhbGN1bGF0ZWQ6Cisg
ICAgY2FzZSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkOgogICAgICAgICByZXR1cm4gbGVuZ3RoLm5v
bk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOwotICAgIGNhc2UgUmVsYXRpdmU6Ci0g
ICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgY2FzZSBNaW5D
b250ZW50OgotICAgIGNhc2UgTWF4Q29udGVudDoKLSAgICBjYXNlIEZpdENvbnRlbnQ6Ci0gICAg
Y2FzZSBVbmRlZmluZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpSZWxhdGl2ZToKKyAgICBjYXNl
IExlbmd0aFR5cGU6OkludHJpbnNpYzoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkludHJpbnNp
YzoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBl
OjpNYXhDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml0Q29udGVudDoKKyAgICBjYXNl
IExlbmd0aFR5cGU6OlVuZGVmaW5lZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTkwLDIyICs5MCwyMiBAQCBmbG9hdCBmbG9hdFZh
bHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1
ZSkKIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGZsb2F0
IG1heGltdW1WYWx1ZSkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKLSAgICBjYXNl
IEZpeGVkOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CiAgICAgICAgIHJldHVybiBsZW5n
dGgudmFsdWUoKTsKLSAgICBjYXNlIFBlcmNlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpQZXJj
ZW50OgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSAqIGxl
bmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpOwotICAgIGNhc2UgRmlsbEF2YWlsYWJsZToKLSAgICBj
YXNlIEF1dG86CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaWxsQXZhaWxhYmxlOgorICAgIGNhc2Ug
TGVuZ3RoVHlwZTo6QXV0bzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhp
bXVtVmFsdWUpOwotICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkNh
bGN1bGF0ZWQ6CiAgICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1h
eGltdW1WYWx1ZSk7Ci0gICAgY2FzZSBSZWxhdGl2ZToKLSAgICBjYXNlIEludHJpbnNpYzoKLSAg
ICBjYXNlIE1pbkludHJpbnNpYzoKLSAgICBjYXNlIE1pbkNvbnRlbnQ6Ci0gICAgY2FzZSBNYXhD
b250ZW50OgotICAgIGNhc2UgRml0Q29udGVudDoKLSAgICBjYXNlIFVuZGVmaW5lZDoKKyAgICBj
YXNlIExlbmd0aFR5cGU6OlJlbGF0aXZlOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6SW50cmluc2lj
OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWluSW50cmluc2ljOgorICAgIGNhc2UgTGVuZ3RoVHlw
ZTo6TWluQ29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1heENvbnRlbnQ6CisgICAgY2Fz
ZSBMZW5ndGhUeXBlOjpGaXRDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6VW5kZWZpbmVk
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oCmluZGV4IDVjMDVhYjFiYWY0NWNmNjc4
YzI3Mjk2ZjdhYzA1MDFmNGZjYTI5OTcuLmQ4NWY0M2YzNDQwNWExNWJhNzA0NzEzODQ0ZWVmNWI0
MDM1ODkyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgKQEAgLTUwLDIzICs1
MCwyMyBAQCBGbG9hdFBvaW50IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChjb25zdCBMZW5ndGhQ
b2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYgbWF4aW11bQogaW5saW5lIExheW91dFVuaXQgbWluaW11
bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1W
YWx1ZSkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKLSAgICBjYXNlIEZpeGVkOgor
ICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CiAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KGxl
bmd0aC52YWx1ZSgpKTsKLSAgICBjYXNlIFBlcmNlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpQ
ZXJjZW50OgogICAgICAgICAvLyBEb24ndCByZW1vdmUgdGhlIGV4dHJhIGNhc3QgdG8gZmxvYXQu
IEl0IGlzIG5lZWRlZCBmb3Igcm91bmRpbmcgb24gMzItYml0IEludGVsIG1hY2hpbmVzIHRoYXQg
dXNlIHRoZSBGUFUgc3RhY2suCiAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KHN0YXRpY19jYXN0
PGZsb2F0PihtYXhpbXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8gMTAwLjBmKSk7Ci0gICAg
Y2FzZSBDYWxjdWxhdGVkOgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZDoKICAgICAg
ICAgcmV0dXJuIExheW91dFVuaXQobGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVt
VmFsdWUpKTsKLSAgICBjYXNlIEZpbGxBdmFpbGFibGU6Ci0gICAgY2FzZSBBdXRvOgorICAgIGNh
c2UgTGVuZ3RoVHlwZTo6RmlsbEF2YWlsYWJsZToKKyAgICBjYXNlIExlbmd0aFR5cGU6OkF1dG86
CiAgICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgY2FzZSBJbnRyaW5z
aWM6Ci0gICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgY2FzZSBNaW5Db250ZW50OgotICAgIGNh
c2UgTWF4Q29udGVudDoKLSAgICBjYXNlIEZpdENvbnRlbnQ6Ci0gICAgY2FzZSBVbmRlZmluZWQ6
CisgICAgY2FzZSBMZW5ndGhUeXBlOjpSZWxhdGl2ZToKKyAgICBjYXNlIExlbmd0aFR5cGU6Oklu
dHJpbnNpYzoKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkludHJpbnNpYzoKKyAgICBjYXNlIExl
bmd0aFR5cGU6Ok1pbkNvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNYXhDb250ZW50Ogor
ICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml0Q29udGVudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlVu
ZGVmaW5lZDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJhbnNmb3JtRnVuY3Rpb25zLmNwcAppbmRleCAzOGIzNmMy
OTk5ZjVhYzJhZDI4N2JjYzhiNTY1MTEzYWNhYjY2NzgxLi5lNjA0NmMwYTg4MGMwYzY2NzIyODBi
ZGJkZDE1MjQ0ODdkOTNkOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJhbnNm
b3JtRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJhbnNmb3JtRnVuY3Rp
b25zLmNwcApAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHRyYW5zZm9ybU9wZXJhdGlvblR5cGUoQ1NTVmFsdWVJRCB0eXBlKQogCiBMZW5n
dGggY29udmVydFRvRmxvYXRMZW5ndGgoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSkK
IHsKLSAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUgPyBwcmltaXRpdmVWYWx1ZS0+Y29udmVydFRv
TGVuZ3RoPEZpeGVkRmxvYXRDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxh
dGVkQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpIDogTGVuZ3RoKFVuZGVmaW5lZCk7CisgICAg
cmV0dXJuIHByaW1pdGl2ZVZhbHVlID8gcHJpbWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxG
aXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZl
cnNpb24+KGNvbnZlcnNpb25EYXRhKSA6IExlbmd0aChMZW5ndGhUeXBlOjpVbmRlZmluZWQpOwog
fQogCiBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGNvbnN0
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBUcmFuc2Zvcm1PcGVy
YXRpb25zJiBvdXRPcGVyYXRpb25zKQpAQCAtMTc5LDggKzE3OSw4IEBAIGJvb2wgdHJhbnNmb3Jt
c0ZvclZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYKICAgICAgICAgY2FzZSBDU1NWYWx1ZVRyYW5zbGF0ZToKICAgICAgICAgY2FzZSBD
U1NWYWx1ZVRyYW5zbGF0ZVg6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGVZOiB7Ci0g
ICAgICAgICAgICBMZW5ndGggdHggPSBMZW5ndGgoMCwgRml4ZWQpOwotICAgICAgICAgICAgTGVu
Z3RoIHR5ID0gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICAgICAgICAgIExlbmd0aCB0eCA9IExlbmd0
aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7CisgICAgICAgICAgICBMZW5ndGggdHkgPSBMZW5ndGgo
MCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLm5h
bWUoKSA9PSBDU1NWYWx1ZVRyYW5zbGF0ZVkpCiAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0
VG9GbG9hdExlbmd0aCgmZmlyc3RWYWx1ZSwgY29udmVyc2lvbkRhdGEpOwogICAgICAgICAgICAg
ZWxzZSB7CkBAIC0xOTgsMTQgKzE5OCwxNCBAQCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25z
dCBDU1NWYWx1ZSYgdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBv
cGVyYXRpb25zLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh0eCwg
dHksIExlbmd0aCgwLCBGaXhlZCksIHRyYW5zZm9ybU9wZXJhdGlvblR5cGUodHJhbnNmb3JtVmFs
dWUubmFtZSgpKSkpOworICAgICAgICAgICAgb3BlcmF0aW9ucy5hcHBlbmQoVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodHgsIHR5LCBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4
ZWQpLCB0cmFuc2Zvcm1PcGVyYXRpb25UeXBlKHRyYW5zZm9ybVZhbHVlLm5hbWUoKSkpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xh
dGVaOgogICAgICAgICBjYXNlIENTU1ZhbHVlVHJhbnNsYXRlM2Q6IHsKLSAgICAgICAgICAgIExl
bmd0aCB0eCA9IExlbmd0aCgwLCBGaXhlZCk7Ci0gICAgICAgICAgICBMZW5ndGggdHkgPSBMZW5n
dGgoMCwgRml4ZWQpOwotICAgICAgICAgICAgTGVuZ3RoIHR6ID0gTGVuZ3RoKDAsIEZpeGVkKTsK
KyAgICAgICAgICAgIExlbmd0aCB0eCA9IExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7Cisg
ICAgICAgICAgICBMZW5ndGggdHkgPSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOworICAg
ICAgICAgICAgTGVuZ3RoIHR6ID0gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICAg
ICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS5uYW1lKCkgPT0gQ1NTVmFsdWVUcmFuc2xhdGVaKQog
ICAgICAgICAgICAgICAgIHR6ID0gY29udmVydFRvRmxvYXRMZW5ndGgoJmZpcnN0VmFsdWUsIGNv
bnZlcnNpb25EYXRhKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZm9ybVZhbHVlLm5hbWUo
KSA9PSBDU1NWYWx1ZVRyYW5zbGF0ZVkpCkBAIC0zMjIsMTMgKzMyMiwxMyBAQCBib29sIHRyYW5z
Zm9ybXNGb3JWYWx1ZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENTU1ZhbHVlUGVyc3BlY3RpdmU6IHsKLSAgICAgICAgICAgIExlbmd0aCBwID0gTGVuZ3RoKDAs
IEZpeGVkKTsKKyAgICAgICAgICAgIExlbmd0aCBwID0gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZp
eGVkKTsKICAgICAgICAgICAgIGlmIChmaXJzdFZhbHVlLmlzTGVuZ3RoKCkpCiAgICAgICAgICAg
ICAgICAgcCA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKCZmaXJzdFZhbHVlLCBjb252ZXJzaW9uRGF0
YSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcXVp
cmsgdGhhdCBzaG91bGQgZ28gYXdheSB3aGVuIDNkIHRyYW5zZm9ybXMgYXJlIGZpbmFsaXplZC4K
ICAgICAgICAgICAgICAgICBkb3VibGUgdmFsID0gZmlyc3RWYWx1ZS5kb3VibGVWYWx1ZSgpOwot
ICAgICAgICAgICAgICAgIHAgPSB2YWwgPj0gMCA/IExlbmd0aChjbGFtcFRvUG9zaXRpdmVJbnRl
Z2VyKHZhbCksIEZpeGVkKSA6IExlbmd0aChVbmRlZmluZWQpOworICAgICAgICAgICAgICAgIHAg
PSB2YWwgPj0gMCA/IExlbmd0aChjbGFtcFRvUG9zaXRpdmVJbnRlZ2VyKHZhbCksIExlbmd0aFR5
cGU6OkZpeGVkKSA6IExlbmd0aChMZW5ndGhUeXBlOjpVbmRlZmluZWQpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAocC5pc1VuZGVmaW5lZCgpKSB7CkBAIC0zNTgsOSArMzU4LDkg
QEAgUmVmUHRyPFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbj4gdHJhbnNsYXRlRm9yVmFsdWUo
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBjb24KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBhdXRvIHR5cGUgPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURTsKLSAgICBMZW5ndGgg
dHggPSBMZW5ndGgoMCwgRml4ZWQpOwotICAgIExlbmd0aCB0eSA9IExlbmd0aCgwLCBGaXhlZCk7
Ci0gICAgTGVuZ3RoIHR6ID0gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICBMZW5ndGggdHggPSBMZW5n
dGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOworICAgIExlbmd0aCB0eSA9IExlbmd0aCgwLCBMZW5n
dGhUeXBlOjpGaXhlZCk7CisgICAgTGVuZ3RoIHR6ID0gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZp
eGVkKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0Lmxlbmd0aCgpOyAr
K2kpIHsKICAgICAgICAgYXV0byogdmFsdWVJdGVtID0gdmFsdWVMaXN0Lml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soaSk7CiAgICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlSXRl
bSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5RmlsbExh
eWVySW1hZ2VHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
RmlsbExheWVySW1hZ2VHZW9tZXRyeS5jcHAKaW5kZXggNjNhMzBiNDI5NmFiOGI1Mzk4ZDIwOWY0
NGRlOTlmNTNmZjY1OWU1Yy4uYmVjZTQ3MGUzZmEyNTBiNDllNjdkZmQwY2RjYjY3ZGZmZTU0OGJi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUZpbGxMYXll
ckltYWdlR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3Bs
YXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNwcApAQCAtOTksOCArOTksOCBAQCBzdGF0aWMgTGF5
b3V0U2l6ZSBjYWxjdWxhdGVJbWFnZUludHJpbnNpY0RpbWVuc2lvbnMoU3R5bGVJbWFnZSogaW1h
Z2UsIExheW91dFNpegogICAgIC8vIEZJWE1FOiBDYWxsIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNp
b25zKCkuCiAgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS0+aW1hZ2VTaXplKG51bGxwdHIsIDEp
OwogICAgIGF1dG8gaW50cmluc2ljUmF0aW8gPSBpbWFnZVNpemU7Ci0gICAgTGVuZ3RoIGludHJp
bnNpY1dpZHRoID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLndpZHRoKCksIEZpeGVkKTsKLSAgICBM
ZW5ndGggaW50cmluc2ljSGVpZ2h0ID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLmhlaWdodCgpLCBG
aXhlZCk7CisgICAgTGVuZ3RoIGludHJpbnNpY1dpZHRoID0gTGVuZ3RoKGludHJpbnNpY1JhdGlv
LndpZHRoKCksIExlbmd0aFR5cGU6OkZpeGVkKTsKKyAgICBMZW5ndGggaW50cmluc2ljSGVpZ2h0
ID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLmhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAK
ICAgICBBU1NFUlQoIWludHJpbnNpY1dpZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKTsKICAg
ICBBU1NFUlQoIWludHJpbnNpY0hlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCA0NGY5ZDBlYTUwNTJjMDE5ZTc4YmFlYmU4MDhiOGYyYzc1
ZDMxOTk1Li4zOGVjMThiOWY0YjZiNzIyOWQ0ZTJmZWRjNDM0N2JjNjhiNmNhMDFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTIyNjYsNyArMjI2Niw3IEBAIGJvb2wgRG9jdW1lbnQ6OnVw
ZGF0ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZShFbGVtZW50JiBlbGVtZW50LCBEaW1lbnNp
b25zQ2hlCiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gcmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpOwogICAgIGJvb2wgY2hlY2tpbmdMb2dpY2FsV2lkdGggPSAo
KGRpbWVuc2lvbnNDaGVjayAmIFdpZHRoRGltZW5zaW9uc0NoZWNrKSAmJiAhaXNWZXJ0aWNhbCkg
fHwgKChkaW1lbnNpb25zQ2hlY2sgJiBIZWlnaHREaW1lbnNpb25zQ2hlY2spICYmIGlzVmVydGlj
YWwpOwogICAgIGJvb2wgY2hlY2tpbmdMb2dpY2FsSGVpZ2h0ID0gKChkaW1lbnNpb25zQ2hlY2sg
JiBIZWlnaHREaW1lbnNpb25zQ2hlY2spICYmICFpc1ZlcnRpY2FsKSB8fCAoKGRpbWVuc2lvbnND
aGVjayAmIFdpZHRoRGltZW5zaW9uc0NoZWNrKSAmJiBpc1ZlcnRpY2FsKTsKLSAgICBib29sIGhh
c1NwZWNpZmllZExvZ2ljYWxIZWlnaHQgPSByZW5kZXJlciAmJiByZW5kZXJlci0+c3R5bGUoKS5s
b2dpY2FsTWluSGVpZ2h0KCkgPT0gTGVuZ3RoKDAsIEZpeGVkKSAmJiByZW5kZXJlci0+c3R5bGUo
KS5sb2dpY2FsSGVpZ2h0KCkuaXNGaXhlZCgpICYmIHJlbmRlcmVyLT5zdHlsZSgpLmxvZ2ljYWxN
YXhIZWlnaHQoKS5pc0F1dG8oKTsKKyAgICBib29sIGhhc1NwZWNpZmllZExvZ2ljYWxIZWlnaHQg
PSByZW5kZXJlciAmJiByZW5kZXJlci0+c3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCkgPT0gTGVu
Z3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSAmJiByZW5kZXJlci0+c3R5bGUoKS5sb2dpY2FsSGVp
Z2h0KCkuaXNGaXhlZCgpICYmIHJlbmRlcmVyLT5zdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKS5p
c0F1dG8oKTsKICAgICAKICAgICBpZiAoIXJlcXVpcmVGdWxsTGF5b3V0KSB7CiAgICAgICAgIFJl
bmRlckJveCogcHJldmlvdXNCb3ggPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKaW5kZXggMDIzNzBiYzQ3YmJiMjE4NGFlZDc1MGZkMWEyZmNlYmVkMmI3
ZThkMS4uM2YwZTNlNzhmN2UyNTMxYTFlODFlMTYwNzc0NGFiNGJiNjczMTE1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0yMDg1LDcgKzIwODUsNyBAQCBS
ZW5kZXJTdHlsZSBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAKICAgICBpZiAoaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1
dHRvbigpICYmICFpc0Rpc2FibGVkT3JSZWFkT25seSgpKSB7CiAgICAgICAgIHRleHRCbG9ja1N0
eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OklubGluZUJsb2NrKTsKLSAgICAgICAgdGV4dEJs
b2NrU3R5bGUuc2V0TWF4V2lkdGgoTGVuZ3RoIHsgMTAwLCBQZXJjZW50IH0pOworICAgICAgICB0
ZXh0QmxvY2tTdHlsZS5zZXRNYXhXaWR0aChMZW5ndGggeyAxMDAsIExlbmd0aFR5cGU6OlBlcmNl
bnQgfSk7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldENvbG9yKENvbG9yOjpibGFjay5jb2xv
cldpdGhBbHBoYUJ5dGUoMTUzKSk7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldFRleHRPdmVy
ZmxvdyhUZXh0T3ZlcmZsb3c6OkNsaXApOwogICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRNYXNr
SW1hZ2UoU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKGF1dG9GaWxsU3Ryb25nUGFzc3dvcmRN
YXNrSW1hZ2UoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0
ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKaW5kZXggODRmNTZkYmM3YWU4YTZlNjhm
N2NmZjBkYjI4Nzg1YmE1OTEyNzU2My4uYWE1MzFkNWI5YzZkMDZkNTdhNzEyM2ZhOWQ2NGMyNzFl
MzdhNGRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVO
dW1lcmljRmllbGRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9E
YXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgRGF0
ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50OjphZGp1c3RNaW5XaWR0aChSZW5kZXJTdHlsZSYgc3R5
bGUpIGNvbnN0CiAgICAgICAgIHdpZHRoID0gc3RkOjptYXgod2lkdGgsIGZvbnQud2lkdGgoUmVu
ZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obnVtYmVyU3RyaW5nLCBzdHlsZSkpKTsKICAgICB9
CiAKLSAgICBzdHlsZS5zZXRNaW5XaWR0aCh7IHdpZHRoLCBGaXhlZCB9KTsKKyAgICBzdHlsZS5z
ZXRNaW5XaWR0aCh7IHdpZHRoLCBMZW5ndGhUeXBlOjpGaXhlZCB9KTsKIH0KIAogaW50IERhdGVU
aW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6bWF4aW11bSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQu
Y3BwCmluZGV4IDZhZDUxYjkyODZiYTRkMDMwODNmMmFiODI0OGFmNjY4NjAzNmJmNGUuLmM3MGE5
NGJmYTFiN2M5ZmQzNmQzMTQ4N2I5MWZhYWNmZmRkZjc5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQu
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudDo6
YWRqdXN0TWluV2lkdGgoUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogICAgIGZvciAoYXV0byYg
c3ltYm9sIDogbV9zeW1ib2xzKQogICAgICAgICB3aWR0aCA9IHN0ZDo6bWF4KHdpZHRoLCBmb250
LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHN5bWJvbCwgc3R5bGUpKSk7CiAK
LSAgICBzdHlsZS5zZXRNaW5XaWR0aCh7IHdpZHRoLCBGaXhlZCB9KTsKKyAgICBzdHlsZS5zZXRN
aW5XaWR0aCh7IHdpZHRoLCBMZW5ndGhUeXBlOjpGaXhlZCB9KTsKIH0KIAogYm9vbCBEYXRlVGlt
ZVN5bWJvbGljRmllbGRFbGVtZW50OjpoYXNWYWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRl
eCAwM2EyZDczMDRjZjlmYzc5YmI0ZjE4Mjg5ZDBiZWM3NDk3YjgyZDFlLi5jYmJhMjAyMjAyYmVl
YjhmMGYzZGNlMDE0MDMyMTQzYTU5ZTM1MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEwNyw3ICsx
MDcsNyBAQCBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyRWxl
bWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0CiAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRl
clN0eWxlOjpjcmVhdGVQdHIoKTsKICAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20oKnNoYWRvd0hv
c3RTdHlsZSk7CiAgICAgbmV3U3R5bGUtPnNldEZsZXhHcm93KDEpOwotICAgIG5ld1N0eWxlLT5z
ZXRNaW5XaWR0aChMZW5ndGggeyAwLCBGaXhlZCB9KTsgLy8gTmVlZGVkIGZvciBjb3JyZWN0IHNo
cmlua2luZy4KKyAgICBuZXdTdHlsZS0+c2V0TWluV2lkdGgoTGVuZ3RoIHsgMCwgTGVuZ3RoVHlw
ZTo6Rml4ZWQgfSk7IC8vIE5lZWRlZCBmb3IgY29ycmVjdCBzaHJpbmtpbmcuCiAgICAgbmV3U3R5
bGUtPnNldERpc3BsYXkoRGlzcGxheVR5cGU6OkJsb2NrKTsKICAgICBuZXdTdHlsZS0+c2V0RGly
ZWN0aW9uKFRleHREaXJlY3Rpb246OkxUUik7CiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGUgc2hh
ZG93IERPTSB0byBiZSBlZGl0YWJsZSwgc28gd2Ugc2V0IHRoaXMgYmxvY2sgdG8gcmVhZC1vbmx5
IGluIGNhc2UgdGhlIGlucHV0IGl0c2VsZiBpcyBlZGl0YWJsZS4KQEAgLTEyNCw3ICsxMjQsNyBA
QCBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0CiAgICAgICAgIC8vIGZvciB0aGUgcm9vdCBlbGVtZW50
IHN0eWxlLCB0aGUgcGFyZW50IGVsZW1lbnQgc3R5bGUsIGFuZCB0aGUgcmVuZGVyIHZpZXcuCiAg
ICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NVbml0
VHlwZTo6Q1NTX0VNUyk7CiAgICAgICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5n
dGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgbmV3U3R5bGUuZ2V0KCksIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgV1RGOjpudWxsb3B0IH0pOwotICAgICAgICBuZXdT
dHlsZS0+c2V0RmxleEJhc2lzKExlbmd0aCB7IHBpeGVscywgRml4ZWQgfSk7CisgICAgICAgIG5l
d1N0eWxlLT5zZXRGbGV4QmFzaXMoTGVuZ3RoIHsgcGl4ZWxzLCBMZW5ndGhUeXBlOjpGaXhlZCB9
KTsKICAgICB9CiAKICAgICByZXR1cm4geyBXVEZNb3ZlKG5ld1N0eWxlKSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
CmluZGV4IGVjMjI5MTY0MmQ0ZjA3OTRiZjUzMWFkYmJiMGVhYjBhNzJlMjU5MDkuLjk0ODllYzA4
NGYyZTg0OTg0NWQ4ZmI2NjQ4NzFkOTAxM2RlMWYxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTExNiw4
ICsxMTYsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0OjpMYXlvdXRUcmVlPiBUcmVlQnVpbGRl
cjo6YnVpbGRMYXlvdXRUcmVlKGNvbnN0IFJlbmRlclZpZQogICAgIFBoYXNlU2NvcGUgc2NvcGUo
UGhhc2U6OlR5cGU6OlRyZWVCdWlsZGluZyk7CiAKICAgICBhdXRvIHJvb3RTdHlsZSA9IFJlbmRl
clN0eWxlOjpjbG9uZShyZW5kZXJWaWV3LnN0eWxlKCkpOwotICAgIHJvb3RTdHlsZS5zZXRMb2dp
Y2FsV2lkdGgoTGVuZ3RoKHJlbmRlclZpZXcud2lkdGgoKSwgRml4ZWQpKTsKLSAgICByb290U3R5
bGUuc2V0TG9naWNhbEhlaWdodChMZW5ndGgocmVuZGVyVmlldy5oZWlnaHQoKSwgRml4ZWQpKTsK
KyAgICByb290U3R5bGUuc2V0TG9naWNhbFdpZHRoKExlbmd0aChyZW5kZXJWaWV3LndpZHRoKCks
IExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAgcm9vdFN0eWxlLnNldExvZ2ljYWxIZWlnaHQoTGVu
Z3RoKHJlbmRlclZpZXcuaGVpZ2h0KCksIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAKICAgICBhdXRv
IHJvb3RMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEluaXRpYWxDb250YWluaW5nQmxvY2s+KFdURk1v
dmUocm9vdFN0eWxlKSk7CiAgICAgYXV0byYgcm9vdENvbnRhaW5lciA9ICpyb290TGF5b3V0Qm94
OwpAQCAtMjM3LDggKzIzNyw4IEBAIEJveCogVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChj
b25zdCBDb250YWluZXJCb3gmIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVuCiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OkJsb2Nr
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb2Zmc2V0ID0gYWNjdW11bGF0ZWRPZmZzZXRG
b3JJbkZsb3dQb3NpdGlvbmVkQ29udGludWF0aW9uKGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVy
ZXIpKSkgewotICAgICAgICAgICAgICAgICAgICBjbG9uZWRTdHlsZS5zZXRUb3AoeyBvZmZzZXQt
PmhlaWdodCgpLCBGaXhlZCB9KTsKLSAgICAgICAgICAgICAgICAgICAgY2xvbmVkU3R5bGUuc2V0
TGVmdCh7IG9mZnNldC0+d2lkdGgoKSwgRml4ZWQgfSk7CisgICAgICAgICAgICAgICAgICAgIGNs
b25lZFN0eWxlLnNldFRvcCh7IG9mZnNldC0+aGVpZ2h0KCksIExlbmd0aFR5cGU6OkZpeGVkIH0p
OworICAgICAgICAgICAgICAgICAgICBjbG9uZWRTdHlsZS5zZXRMZWZ0KHsgb2Zmc2V0LT53aWR0
aCgpLCBMZW5ndGhUeXBlOjpGaXhlZCB9KTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSAmY3JlYXRlQ29udGFpbmVyKGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RG
TW92ZShjbG9uZWRTdHlsZSkpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICBjaGlsZExheW91dEJveCA9ICZjcmVhdGVDb250YWluZXIoZWxlbWVudEF0dHJpYnV0
ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKGNsb25lZFN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKaW5kZXggOGRhMGZlYmI2NzMwZGM5NjEyMTJmMWM3NWY1MzJkNzE0M2RiM2JiMy4uNWFm
MWRjMmI1ODVjYmJlYTEwNzI5Yjg3YTg4OWFjNGRkMjY5Y2I0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcApAQCAtMzQ5NSw3ICszNDk1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1G
aXhlZFdpZHRoQXV0b1NpemUoKQogCiAgICAgQVNTRVJUKGlzPFJlbmRlckVsZW1lbnQ+KCpmaXJz
dENoaWxkKSk7CiAgICAgYXV0byYgZG9jdW1lbnRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KCpmaXJzdENoaWxkKTsKLSAgICBkb2N1bWVudFJlbmRlcmVyLm11dGFibGVTdHlsZSgp
LnNldE1heFdpZHRoKExlbmd0aChtX2F1dG9TaXplQ29uc3RyYWludC53aWR0aCgpLCBGaXhlZCkp
OworICAgIGRvY3VtZW50UmVuZGVyZXIubXV0YWJsZVN0eWxlKCkuc2V0TWF4V2lkdGgoTGVuZ3Ro
KG1fYXV0b1NpemVDb25zdHJhaW50LndpZHRoKCksIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAg
cmVzaXplKG1fYXV0b1NpemVDb25zdHJhaW50LndpZHRoKCksIG1fYXV0b1NpemVDb25zdHJhaW50
LmhlaWdodCgpKTsKIAogICAgIFJlZjxGcmFtZVZpZXc+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAppbmRleCAyNzYy
YTRiMWI4ZWQzZjlhYzAyNmYxMTMxNTFlODBkYWUyZjRkNzBlLi41OWExNmE4YmVlMTQ2ZDIzMDc2
NTI0MWNhYjk5YTFiMjc5Y2VkM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lu
dGVyc2VjdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2Vj
dGlvbk9ic2VydmVyLmNwcApAQCAtNTMsMTYgKzUzLDE2IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxM
ZW5ndGhCb3g+IHBhcnNlUm9vdE1hcmdpbihTdHJpbmcmIHJvb3RNYXJnaW4pCiAgICAgICAgIGlm
ICghcGFyc2VkVmFsdWUgfHwgcGFyc2VkVmFsdWUtPmlzQ2FsY3VsYXRlZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCAn
SW50ZXJzZWN0aW9uT2JzZXJ2ZXInOiByb290TWFyZ2luIG11c3QgYmUgc3BlY2lmaWVkIGluIHBp
eGVscyBvciBwZXJjZW50LiIgfTsKICAgICAgICAgaWYgKHBhcnNlZFZhbHVlLT5pc1BlcmNlbnRh
Z2UoKSkKLSAgICAgICAgICAgIG1hcmdpbnMuYXBwZW5kKExlbmd0aChwYXJzZWRWYWx1ZS0+ZG91
YmxlVmFsdWUoKSwgUGVyY2VudCkpOworICAgICAgICAgICAgbWFyZ2lucy5hcHBlbmQoTGVuZ3Ro
KHBhcnNlZFZhbHVlLT5kb3VibGVWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KSk7CiAgICAg
ICAgIGVsc2UgaWYgKHBhcnNlZFZhbHVlLT5pc1B4KCkpCi0gICAgICAgICAgICBtYXJnaW5zLmFw
cGVuZChMZW5ndGgocGFyc2VkVmFsdWUtPmludFZhbHVlKCksIEZpeGVkKSk7CisgICAgICAgICAg
ICBtYXJnaW5zLmFwcGVuZChMZW5ndGgocGFyc2VkVmFsdWUtPmludFZhbHVlKCksIExlbmd0aFR5
cGU6OkZpeGVkKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBTeW50YXhFcnJvciwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2VydmVy
Jzogcm9vdE1hcmdpbiBtdXN0IGJlIHNwZWNpZmllZCBpbiBwaXhlbHMgb3IgcGVyY2VudC4iIH07
CiAgICAgfQogICAgIHN3aXRjaCAobWFyZ2lucy5zaXplKCkpIHsKICAgICBjYXNlIDA6CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA0OyArK2kpCi0gICAgICAgICAgICBtYXJnaW5z
LmFwcGVuZChMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICAgICAgICAgIG1hcmdpbnMuYXBwZW5kKExl
bmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDE6
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAzOyArK2kpCkBAIC0xNTMsNyArMTUz
LDcgQEAgU3RyaW5nIEludGVyc2VjdGlvbk9ic2VydmVyOjpyb290TWFyZ2luKCkgY29uc3QKICAg
ICBmb3IgKGF1dG8gc2lkZSA6IGFsbEJveFNpZGVzKSB7CiAgICAgICAgIGF1dG8mIGxlbmd0aCA9
IG1fcm9vdE1hcmdpbi5hdChzaWRlKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1i
ZXIobGVuZ3RoLmludFZhbHVlKCkpOwotICAgICAgICBpZiAobGVuZ3RoLnR5cGUoKSA9PSBQZXJj
ZW50KQorICAgICAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQogICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJyUnKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJweCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKaW5k
ZXggM2ZjNDMxYTQ3NDYxZDhjNDQzZGI0YjYyMmQ2ZWE5MDYzNGRhMGYyZi4uMzk3MGY4MjZmZmMw
OGQyZWM2MGI1MWQ5NTc0ZWIyOTRlNTM1MjgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGgu
Y3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBMZW5ndGgg
cGFyc2VMZW5ndGgoY29uc3QgVUNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBp
ZiAobGVuZ3RoID09IDApCi0gICAgICAgIHJldHVybiBMZW5ndGgoMSwgUmVsYXRpdmUpOworICAg
ICAgICByZXR1cm4gTGVuZ3RoKDEsIExlbmd0aFR5cGU6OlJlbGF0aXZlKTsKIAogICAgIHVuc2ln
bmVkIGkgPSAwOwogICAgIHdoaWxlIChpIDwgbGVuZ3RoICYmIGlzU3BhY2VPck5ld2xpbmUoZGF0
YVtpXSkpCkBAIC02MywxOCArNjMsMTggQEAgc3RhdGljIExlbmd0aCBwYXJzZUxlbmd0aChjb25z
dCBVQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICAvLyBJRSBxdWlyazogYWNj
ZXB0IGRlY2ltYWwgZnJhY3Rpb25zIGZvciBwZXJjZW50YWdlcy4KICAgICAgICAgZG91YmxlIHIg
PSBjaGFyYWN0ZXJzVG9Eb3VibGUoZGF0YSwgZG91YmxlTGVuZ3RoLCAmb2spOwogICAgICAgICBp
ZiAob2spCi0gICAgICAgICAgICByZXR1cm4gTGVuZ3RoKHIsIFBlcmNlbnQpOwotICAgICAgICBy
ZXR1cm4gTGVuZ3RoKDEsIFJlbGF0aXZlKTsKKyAgICAgICAgICAgIHJldHVybiBMZW5ndGgociwg
TGVuZ3RoVHlwZTo6UGVyY2VudCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoMSwgTGVuZ3RoVHlw
ZTo6UmVsYXRpdmUpOwogICAgIH0KICAgICBpbnQgciA9IGNoYXJhY3RlcnNUb0ludFN0cmljdChk
YXRhLCBpbnRMZW5ndGgsICZvayk7CiAgICAgaWYgKG5leHQgPT0gJyonKSB7CiAgICAgICAgIGlm
IChvaykKLSAgICAgICAgICAgIHJldHVybiBMZW5ndGgociwgUmVsYXRpdmUpOwotICAgICAgICBy
ZXR1cm4gTGVuZ3RoKDEsIFJlbGF0aXZlKTsKKyAgICAgICAgICAgIHJldHVybiBMZW5ndGgociwg
TGVuZ3RoVHlwZTo6UmVsYXRpdmUpOworICAgICAgICByZXR1cm4gTGVuZ3RoKDEsIExlbmd0aFR5
cGU6OlJlbGF0aXZlKTsKICAgICB9CiAgICAgaWYgKG9rKQotICAgICAgICByZXR1cm4gTGVuZ3Ro
KHIsIEZpeGVkKTsKLSAgICByZXR1cm4gTGVuZ3RoKDAsIFJlbGF0aXZlKTsKKyAgICAgICAgcmV0
dXJuIExlbmd0aChyLCBMZW5ndGhUeXBlOjpGaXhlZCk7CisgICAgcmV0dXJuIExlbmd0aCgwLCBM
ZW5ndGhUeXBlOjpSZWxhdGl2ZSk7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBjb3VudENoYXJhY3Rl
cihTdHJpbmdJbXBsJiBzdHJpbmcsIFVDaGFyIGNoYXJhY3RlcikKQEAgLTI0Miw3ICsyNDIsNyBA
QCBzdGF0aWMgQ2FsY3VsYXRpb25WYWx1ZU1hcCYgY2FsY3VsYXRpb25WYWx1ZXMoKQogCiBMZW5n
dGg6Okxlbmd0aChSZWY8Q2FsY3VsYXRpb25WYWx1ZT4mJiB2YWx1ZSkKICAgICA6IG1faGFzUXVp
cmsoZmFsc2UpCi0gICAgLCBtX3R5cGUoQ2FsY3VsYXRlZCkKKyAgICAsIG1fdHlwZShMZW5ndGhU
eXBlOjpDYWxjdWxhdGVkKQogICAgICwgbV9pc0Zsb2F0KGZhbHNlKQogewogICAgIG1fY2FsY3Vs
YXRpb25WYWx1ZUhhbmRsZSA9IGNhbGN1bGF0aW9uVmFsdWVzKCkuaW5zZXJ0KFdURk1vdmUodmFs
dWUpKTsKQEAgLTI4MywxMiArMjgzLDEyIEBAIGJvb2wgTGVuZ3RoOjppc0NhbGN1bGF0ZWRFcXVh
bChjb25zdCBMZW5ndGgmIG90aGVyKSBjb25zdAogTGVuZ3RoIGNvbnZlcnRUbzEwMFBlcmNlbnRN
aW51c0xlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKIHsKICAgICBpZiAobGVuZ3RoLmlzUGVy
Y2VudCgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoKDEwMCAtIGxlbmd0aC52YWx1ZSgpLCBQZXJj
ZW50KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aCgxMDAgLSBsZW5ndGgudmFsdWUoKSwgTGVuZ3Ro
VHlwZTo6UGVyY2VudCk7CiAgICAgCiAgICAgLy8gVHVybiB0aGlzIGludG8gYSBjYWxjIGV4cHJl
c3Npb246IGNhbGMoMTAwJSAtIGxlbmd0aCkKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENh
bGNFeHByZXNzaW9uTm9kZT4+IGxlbmd0aHM7CiAgICAgbGVuZ3Rocy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KDIpOwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4
cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7CisgICAgbGVuZ3Rocy51bmNo
ZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwg
TGVuZ3RoVHlwZTo6UGVyY2VudCkpKTsKICAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtl
VW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKICAgICBhdXRvIG9wID0gbWFr
ZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09w
ZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpj
cmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsKQEAgLTMxNCw3ICszMTQsNyBAQCBM
ZW5ndGggYmxlbmQoY29uc3QgTGVuZ3RoJiBmcm9tLCBjb25zdCBMZW5ndGgmIHRvLCBkb3VibGUg
cHJvZ3Jlc3MpCiAgICAgaWYgKGZyb20uaXNVbmRlZmluZWQoKSB8fCB0by5pc1VuZGVmaW5lZCgp
KQogICAgICAgICByZXR1cm4gdG87CiAKLSAgICBpZiAoZnJvbS50eXBlKCkgPT0gQ2FsY3VsYXRl
ZCB8fCB0by50eXBlKCkgPT0gQ2FsY3VsYXRlZCkKKyAgICBpZiAoZnJvbS5pc0NhbGN1bGF0ZWQo
KSB8fCB0by5pc0NhbGN1bGF0ZWQoKSkKICAgICAgICAgcmV0dXJuIGJsZW5kTWl4ZWRUeXBlcyhm
cm9tLCB0bywgcHJvZ3Jlc3MpOwogCiAgICAgaWYgKCFmcm9tLmlzWmVybygpICYmICF0by5pc1pl
cm8oKSAmJiBmcm9tLnR5cGUoKSAhPSB0by50eXBlKCkpCkBAIC0zMjQsMTAgKzMyNCwxMCBAQCBM
ZW5ndGggYmxlbmQoY29uc3QgTGVuZ3RoJiBmcm9tLCBjb25zdCBMZW5ndGgmIHRvLCBkb3VibGUg
cHJvZ3Jlc3MpCiAgICAgaWYgKHRvLmlzWmVybygpKQogICAgICAgICByZXN1bHRUeXBlID0gZnJv
bS50eXBlKCk7CiAKLSAgICBpZiAocmVzdWx0VHlwZSA9PSBQZXJjZW50KSB7CisgICAgaWYgKHJl
c3VsdFR5cGUgPT0gTGVuZ3RoVHlwZTo6UGVyY2VudCkgewogICAgICAgICBmbG9hdCBmcm9tUGVy
Y2VudCA9IGZyb20uaXNaZXJvKCkgPyAwIDogZnJvbS5wZXJjZW50KCk7CiAgICAgICAgIGZsb2F0
IHRvUGVyY2VudCA9IHRvLmlzWmVybygpID8gMCA6IHRvLnBlcmNlbnQoKTsKLSAgICAgICAgcmV0
dXJuIExlbmd0aChXZWJDb3JlOjpibGVuZChmcm9tUGVyY2VudCwgdG9QZXJjZW50LCBwcm9ncmVz
cyksIFBlcmNlbnQpOworICAgICAgICByZXR1cm4gTGVuZ3RoKFdlYkNvcmU6OmJsZW5kKGZyb21Q
ZXJjZW50LCB0b1BlcmNlbnQsIHByb2dyZXNzKSwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CiAgICAg
fQogCiAgICAgZmxvYXQgZnJvbVZhbHVlID0gZnJvbS5pc1plcm8oKSA/IDAgOiBmcm9tLnZhbHVl
KCk7CkBAIC0zNDQsMTggKzM0NCwxOCBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoTGVuZ3RoKSA9
PSBzaXplb2YoU2FtZVNpemVBc0xlbmd0aCksIGxlbmd0aF9zaG91bGRfc3RheV9zbQogc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIExlbmd0aFR5cGUgdHlwZSkK
IHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEF1dG86IHRzIDw8ICJhdXRvIjsgYnJl
YWs7Ci0gICAgY2FzZSBSZWxhdGl2ZTogdHMgPDwgInJlbGF0aXZlIjsgYnJlYWs7Ci0gICAgY2Fz
ZSBQZXJjZW50OiB0cyA8PCAicGVyY2VudCI7IGJyZWFrOwotICAgIGNhc2UgRml4ZWQ6IHRzIDw8
ICJmaXhlZCI7IGJyZWFrOwotICAgIGNhc2UgSW50cmluc2ljOiB0cyA8PCAiaW50cmluc2ljIjsg
YnJlYWs7Ci0gICAgY2FzZSBNaW5JbnRyaW5zaWM6IHRzIDw8ICJtaW4taW50cmluc2ljIjsgYnJl
YWs7Ci0gICAgY2FzZSBNaW5Db250ZW50OiB0cyA8PCAibWluLWNvbnRlbnQiOyBicmVhazsKLSAg
ICBjYXNlIE1heENvbnRlbnQ6IHRzIDw8ICJtYXgtY29udGVudCI7IGJyZWFrOwotICAgIGNhc2Ug
RmlsbEF2YWlsYWJsZTogdHMgPDwgImZpbGwtYXZhaWxhYmxlIjsgYnJlYWs7Ci0gICAgY2FzZSBG
aXRDb250ZW50OiB0cyA8PCAiZml0LWNvbnRlbnQiOyBicmVhazsKLSAgICBjYXNlIENhbGN1bGF0
ZWQ6IHRzIDw8ICJjYWxjIjsgYnJlYWs7Ci0gICAgY2FzZSBVbmRlZmluZWQ6IHRzIDw8ICJ1bmRl
ZmluZWQiOyBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGU6OkF1dG86IHRzIDw8ICJhdXRvIjsg
YnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlOjpSZWxhdGl2ZTogdHMgPDwgInJlbGF0aXZlIjsg
YnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlOjpQZXJjZW50OiB0cyA8PCAicGVyY2VudCI7IGJy
ZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6IHRzIDw8ICJmaXhlZCI7IGJyZWFrOwor
ICAgIGNhc2UgTGVuZ3RoVHlwZTo6SW50cmluc2ljOiB0cyA8PCAiaW50cmluc2ljIjsgYnJlYWs7
CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5JbnRyaW5zaWM6IHRzIDw8ICJtaW4taW50cmluc2lj
IjsgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5Db250ZW50OiB0cyA8PCAibWluLWNv
bnRlbnQiOyBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1heENvbnRlbnQ6IHRzIDw8ICJt
YXgtY29udGVudCI7IGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZTo6RmlsbEF2YWlsYWJsZTog
dHMgPDwgImZpbGwtYXZhaWxhYmxlIjsgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXRD
b250ZW50OiB0cyA8PCAiZml0LWNvbnRlbnQiOyBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGU6
OkNhbGN1bGF0ZWQ6IHRzIDw8ICJjYWxjIjsgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlOjpV
bmRlZmluZWQ6IHRzIDw8ICJ1bmRlZmluZWQiOyBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRz
OwogfQpAQCAtMzYzLDI2ICszNjMsMjYgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIExlbmd0aFR5cGUgdHlwZSkKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIExlbmd0aCBsZW5ndGgpCiB7CiAgICAgc3dpdGNoIChsZW5ndGgudHlw
ZSgpKSB7Ci0gICAgY2FzZSBBdXRvOgotICAgIGNhc2UgVW5kZWZpbmVkOgorICAgIGNhc2UgTGVu
Z3RoVHlwZTo6QXV0bzoKKyAgICBjYXNlIExlbmd0aFR5cGU6OlVuZGVmaW5lZDoKICAgICAgICAg
dHMgPDwgbGVuZ3RoLnR5cGUoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaXhlZDoKKyAg
ICBjYXNlIExlbmd0aFR5cGU6OkZpeGVkOgogICAgICAgICB0cyA8PCBUZXh0U3RyZWFtOjpGb3Jt
YXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMobGVuZ3RoLnZhbHVlKCkpIDw8ICJweCI7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAg
Y2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgY2FzZSBNaW5Db250ZW50OgotICAgIGNhc2UgTWF4Q29u
dGVudDoKLSAgICBjYXNlIEZpbGxBdmFpbGFibGU6Ci0gICAgY2FzZSBGaXRDb250ZW50OgorICAg
IGNhc2UgTGVuZ3RoVHlwZTo6UmVsYXRpdmU6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpJbnRyaW5z
aWM6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5JbnRyaW5zaWM6CisgICAgY2FzZSBMZW5ndGhU
eXBlOjpNaW5Db250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6TWF4Q29udGVudDoKKyAgICBj
YXNlIExlbmd0aFR5cGU6OkZpbGxBdmFpbGFibGU6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXRD
b250ZW50OgogICAgICAgICB0cyA8PCBsZW5ndGgudHlwZSgpIDw8ICIgIiA8PCBUZXh0U3RyZWFt
OjpGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMobGVuZ3RoLnZhbHVlKCkpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFBlcmNlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpQZXJjZW50
OgogICAgICAgICB0cyA8PCBUZXh0U3RyZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdl
cnMobGVuZ3RoLnBlcmNlbnQoKSkgPDwgIiUiOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENh
bGN1bGF0ZWQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkOgogICAgICAgICB0cyA8
PCBsZW5ndGguY2FsY3VsYXRpb25WYWx1ZSgpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5oCmluZGV4IDE0YmVmZjljM2QyNmZmOTA3OGNkYTA1MzlhOWQ3OGY0
YzRhNmNmNWQuLjgxMGQxZTQ4MGQ3ZDlmZTVhNjEyNjkxZmUxNTNlM2I1Y2RiZDE2OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xlbmd0aC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFRleHRTdHJlYW07
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBMZW5ndGhUeXBlIHsKK2VudW0gY2xhc3Mg
TGVuZ3RoVHlwZSA6IHVpbnQ4X3QgewogICAgIEF1dG8sIFJlbGF0aXZlLCBQZXJjZW50LCBGaXhl
ZCwKICAgICBJbnRyaW5zaWMsIE1pbkludHJpbnNpYywKICAgICBNaW5Db250ZW50LCBNYXhDb250
ZW50LCBGaWxsQXZhaWxhYmxlLCBGaXRDb250ZW50LApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBD
YWxjdWxhdGlvblZhbHVlOwogc3RydWN0IExlbmd0aCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgTGVuZ3RoKExlbmd0aFR5cGUgPSBBdXRvKTsKKyAgICBMZW5n
dGgoTGVuZ3RoVHlwZSA9IExlbmd0aFR5cGU6OkF1dG8pOwogCiAgICAgTGVuZ3RoKGludCB2YWx1
ZSwgTGVuZ3RoVHlwZSwgYm9vbCBoYXNRdWlyayA9IGZhbHNlKTsKICAgICBMZW5ndGgoTGF5b3V0
VW5pdCB2YWx1ZSwgTGVuZ3RoVHlwZSwgYm9vbCBoYXNRdWlyayA9IGZhbHNlKTsKQEAgLTk3LDYg
Kzk3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdDsKICAgICBib29s
IGlzRmlsbEF2YWlsYWJsZSgpIGNvbnN0OwogICAgIGJvb2wgaXNGaXRDb250ZW50KCkgY29uc3Q7
CisgICAgYm9vbCBpc01pbkludHJpbnNpYygpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNRdWlyaygp
IGNvbnN0OwogCkBAIC0xMzEsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQg
bV9jYWxjdWxhdGlvblZhbHVlSGFuZGxlOwogICAgIH07CiAgICAgYm9vbCBtX2hhc1F1aXJrOwot
ICAgIHVuc2lnbmVkIGNoYXIgbV90eXBlOworICAgIExlbmd0aFR5cGUgbV90eXBlOwogICAgIGJv
b2wgbV9pc0Zsb2F0OwogfTsKIApAQCAtMTQ0LDMxICsxNDUsMzEgQEAgVW5pcXVlQXJyYXk8TGVu
Z3RoPiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmLCBpbnQmIGxlbmd0aCk7CiBpbmxpbmUg
TGVuZ3RoOjpMZW5ndGgoTGVuZ3RoVHlwZSB0eXBlKQogICAgIDogbV9pbnRWYWx1ZSgwKSwgbV9o
YXNRdWlyayhmYWxzZSksIG1fdHlwZSh0eXBlKSwgbV9pc0Zsb2F0KGZhbHNlKQogewotICAgIEFT
U0VSVCh0eXBlICE9IENhbGN1bGF0ZWQpOworICAgIEFTU0VSVCh0eXBlICE9IExlbmd0aFR5cGU6
OkNhbGN1bGF0ZWQpOwogfQogCiBpbmxpbmUgTGVuZ3RoOjpMZW5ndGgoaW50IHZhbHVlLCBMZW5n
dGhUeXBlIHR5cGUsIGJvb2wgaGFzUXVpcmspCiAgICAgOiBtX2ludFZhbHVlKHZhbHVlKSwgbV9o
YXNRdWlyayhoYXNRdWlyayksIG1fdHlwZSh0eXBlKSwgbV9pc0Zsb2F0KGZhbHNlKQogewotICAg
IEFTU0VSVCh0eXBlICE9IENhbGN1bGF0ZWQpOworICAgIEFTU0VSVCh0eXBlICE9IExlbmd0aFR5
cGU6OkNhbGN1bGF0ZWQpOwogfQogCiBpbmxpbmUgTGVuZ3RoOjpMZW5ndGgoTGF5b3V0VW5pdCB2
YWx1ZSwgTGVuZ3RoVHlwZSB0eXBlLCBib29sIGhhc1F1aXJrKQogICAgIDogbV9mbG9hdFZhbHVl
KHZhbHVlLnRvRmxvYXQoKSksIG1faGFzUXVpcmsoaGFzUXVpcmspLCBtX3R5cGUodHlwZSksIG1f
aXNGbG9hdCh0cnVlKQogewotICAgIEFTU0VSVCh0eXBlICE9IENhbGN1bGF0ZWQpOworICAgIEFT
U0VSVCh0eXBlICE9IExlbmd0aFR5cGU6OkNhbGN1bGF0ZWQpOwogfQogCiBpbmxpbmUgTGVuZ3Ro
OjpMZW5ndGgoZmxvYXQgdmFsdWUsIExlbmd0aFR5cGUgdHlwZSwgYm9vbCBoYXNRdWlyaykKICAg
ICA6IG1fZmxvYXRWYWx1ZSh2YWx1ZSksIG1faGFzUXVpcmsoaGFzUXVpcmspLCBtX3R5cGUodHlw
ZSksIG1faXNGbG9hdCh0cnVlKQogewotICAgIEFTU0VSVCh0eXBlICE9IENhbGN1bGF0ZWQpOwor
ICAgIEFTU0VSVCh0eXBlICE9IExlbmd0aFR5cGU6OkNhbGN1bGF0ZWQpOwogfQogCiBpbmxpbmUg
TGVuZ3RoOjpMZW5ndGgoZG91YmxlIHZhbHVlLCBMZW5ndGhUeXBlIHR5cGUsIGJvb2wgaGFzUXVp
cmspCiAgICAgOiBtX2Zsb2F0VmFsdWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSksIG1faGFz
UXVpcmsoaGFzUXVpcmspLCBtX3R5cGUodHlwZSksIG1faXNGbG9hdCh0cnVlKQogewotICAgIEFT
U0VSVCh0eXBlICE9IENhbGN1bGF0ZWQpOworICAgIEFTU0VSVCh0eXBlICE9IExlbmd0aFR5cGU6
OkNhbGN1bGF0ZWQpOwogfQogCiBpbmxpbmUgTGVuZ3RoOjpMZW5ndGgoY29uc3QgTGVuZ3RoJiBv
dGhlcikKQEAgLTE4Miw3ICsxODMsNyBAQCBpbmxpbmUgTGVuZ3RoOjpMZW5ndGgoY29uc3QgTGVu
Z3RoJiBvdGhlcikKIGlubGluZSBMZW5ndGg6Okxlbmd0aChMZW5ndGgmJiBvdGhlcikKIHsKICAg
ICBtZW1jcHkoc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCBzdGF0aWNfY2FzdDx2b2lkKj4oJm90
aGVyKSwgc2l6ZW9mKExlbmd0aCkpOwotICAgIG90aGVyLm1fdHlwZSA9IEF1dG87CisgICAgb3Ro
ZXIubV90eXBlID0gTGVuZ3RoVHlwZTo6QXV0bzsKIH0KIAogaW5saW5lIExlbmd0aCYgTGVuZ3Ro
OjpvcGVyYXRvcj0oY29uc3QgTGVuZ3RoJiBvdGhlcikKQEAgLTIwOCw3ICsyMDksNyBAQCBpbmxp
bmUgTGVuZ3RoJiBMZW5ndGg6Om9wZXJhdG9yPShMZW5ndGgmJiBvdGhlcikKICAgICAgICAgZGVy
ZWYoKTsKIAogICAgIG1lbWNweShzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyksIHN0YXRpY19jYXN0
PHZvaWQqPigmb3RoZXIpLCBzaXplb2YoTGVuZ3RoKSk7Ci0gICAgb3RoZXIubV90eXBlID0gQXV0
bzsKKyAgICBvdGhlci5tX3R5cGUgPSBMZW5ndGhUeXBlOjpBdXRvOwogICAgIHJldHVybiAqdGhp
czsKIH0KIApAQCAtMjg5LDggKzI5MCw4IEBAIGlubGluZSB2b2lkIExlbmd0aDo6c2V0SGFzUXVp
cmsoYm9vbCBoYXNRdWlyaykKIAogaW5saW5lIHZvaWQgTGVuZ3RoOjpzZXRWYWx1ZShMZW5ndGhU
eXBlIHR5cGUsIGludCB2YWx1ZSkKIHsKLSAgICBBU1NFUlQobV90eXBlICE9IENhbGN1bGF0ZWQp
OwotICAgIEFTU0VSVCh0eXBlICE9IENhbGN1bGF0ZWQpOworICAgIEFTU0VSVChtX3R5cGUgIT0g
TGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZCk7CisgICAgQVNTRVJUKHR5cGUgIT0gTGVuZ3RoVHlwZTo6
Q2FsY3VsYXRlZCk7CiAgICAgbV90eXBlID0gdHlwZTsKICAgICBtX2ludFZhbHVlID0gdmFsdWU7
CiAgICAgbV9pc0Zsb2F0ID0gZmFsc2U7CkBAIC0yOTgsOCArMjk5LDggQEAgaW5saW5lIHZvaWQg
TGVuZ3RoOjpzZXRWYWx1ZShMZW5ndGhUeXBlIHR5cGUsIGludCB2YWx1ZSkKIAogaW5saW5lIHZv
aWQgTGVuZ3RoOjpzZXRWYWx1ZShMZW5ndGhUeXBlIHR5cGUsIGZsb2F0IHZhbHVlKQogewotICAg
IEFTU0VSVChtX3R5cGUgIT0gQ2FsY3VsYXRlZCk7Ci0gICAgQVNTRVJUKHR5cGUgIT0gQ2FsY3Vs
YXRlZCk7CisgICAgQVNTRVJUKG1fdHlwZSAhPSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkKTsKKyAg
ICBBU1NFUlQodHlwZSAhPSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkKTsKICAgICBtX3R5cGUgPSB0
eXBlOwogICAgIG1fZmxvYXRWYWx1ZSA9IHZhbHVlOwogICAgIG1faXNGbG9hdCA9IHRydWU7CkBA
IC0zMDcsOCArMzA4LDggQEAgaW5saW5lIHZvaWQgTGVuZ3RoOjpzZXRWYWx1ZShMZW5ndGhUeXBl
IHR5cGUsIGZsb2F0IHZhbHVlKQogCiBpbmxpbmUgdm9pZCBMZW5ndGg6OnNldFZhbHVlKExlbmd0
aFR5cGUgdHlwZSwgTGF5b3V0VW5pdCB2YWx1ZSkKIHsKLSAgICBBU1NFUlQobV90eXBlICE9IENh
bGN1bGF0ZWQpOwotICAgIEFTU0VSVCh0eXBlICE9IENhbGN1bGF0ZWQpOworICAgIEFTU0VSVCht
X3R5cGUgIT0gTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZCk7CisgICAgQVNTRVJUKHR5cGUgIT0gTGVu
Z3RoVHlwZTo6Q2FsY3VsYXRlZCk7CiAgICAgbV90eXBlID0gdHlwZTsKICAgICBtX2Zsb2F0VmFs
dWUgPSB2YWx1ZTsKICAgICBtX2lzRmxvYXQgPSB0cnVlOwpAQCAtMzE2LDIyICszMTcsMjIgQEAg
aW5saW5lIHZvaWQgTGVuZ3RoOjpzZXRWYWx1ZShMZW5ndGhUeXBlIHR5cGUsIExheW91dFVuaXQg
dmFsdWUpCiAKIGlubGluZSBib29sIExlbmd0aDo6aXNBdXRvKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gdHlwZSgpID09IEF1dG87CisgICAgcmV0dXJuIHR5cGUoKSA9PSBMZW5ndGhUeXBlOjpBdXRv
OwogfQogCiBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzRml4ZWQoKSBjb25zdAogewotICAgIHJldHVy
biB0eXBlKCkgPT0gRml4ZWQ7CisgICAgcmV0dXJuIHR5cGUoKSA9PSBMZW5ndGhUeXBlOjpGaXhl
ZDsKIH0KIAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc01heENvbnRlbnQoKSBjb25zdAogewotICAg
IHJldHVybiB0eXBlKCkgPT0gTWF4Q29udGVudDsKKyAgICByZXR1cm4gdHlwZSgpID09IExlbmd0
aFR5cGU6Ok1heENvbnRlbnQ7CiB9CiAKIGlubGluZSBib29sIExlbmd0aDo6aXNNaW5Db250ZW50
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHlwZSgpID09IE1pbkNvbnRlbnQ7CisgICAgcmV0dXJu
IHR5cGUoKSA9PSBMZW5ndGhUeXBlOjpNaW5Db250ZW50OwogfQogCiBpbmxpbmUgYm9vbCBMZW5n
dGg6OmlzTmVnYXRpdmUoKSBjb25zdApAQCAtMzQzLDE3ICszNDQsMTcgQEAgaW5saW5lIGJvb2wg
TGVuZ3RoOjppc05lZ2F0aXZlKCkgY29uc3QKIAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc1BlcmNl
bnQoKSBjb25zdAogewotICAgIHJldHVybiB0eXBlKCkgPT0gUGVyY2VudDsKKyAgICByZXR1cm4g
dHlwZSgpID09IExlbmd0aFR5cGU6OlBlcmNlbnQ7CiB9CiAKIGlubGluZSBib29sIExlbmd0aDo6
aXNSZWxhdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHR5cGUoKSA9PSBSZWxhdGl2ZTsKKyAg
ICByZXR1cm4gdHlwZSgpID09IExlbmd0aFR5cGU6OlJlbGF0aXZlOwogfQogCiBpbmxpbmUgYm9v
bCBMZW5ndGg6OmlzVW5kZWZpbmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHlwZSgpID09IFVu
ZGVmaW5lZDsKKyAgICByZXR1cm4gdHlwZSgpID09IExlbmd0aFR5cGU6OlVuZGVmaW5lZDsKIH0K
IAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSBjb25zdApAQCAt
MzgwLDE3ICszODEsMTggQEAgaW5saW5lIGJvb2wgTGVuZ3RoOjppc1plcm8oKSBjb25zdAogCiBp
bmxpbmUgYm9vbCBMZW5ndGg6OmlzQ2FsY3VsYXRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHR5
cGUoKSA9PSBDYWxjdWxhdGVkOworICAgIHJldHVybiB0eXBlKCkgPT0gTGVuZ3RoVHlwZTo6Q2Fs
Y3VsYXRlZDsKIH0KIAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc0xlZ2FjeUludHJpbnNpYygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHR5cGUoKSA9PSBJbnRyaW5zaWMgfHwgdHlwZSgpID09IE1pbklu
dHJpbnNpYzsKKyAgICByZXR1cm4gdHlwZSgpID09IExlbmd0aFR5cGU6OkludHJpbnNpYyB8fCB0
eXBlKCkgPT0gTGVuZ3RoVHlwZTo6TWluSW50cmluc2ljOwogfQogCiBpbmxpbmUgYm9vbCBMZW5n
dGg6OmlzSW50cmluc2ljKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHlwZSgpID09IE1pbkNvbnRl
bnQgfHwgdHlwZSgpID09IE1heENvbnRlbnQgfHwgdHlwZSgpID09IEZpbGxBdmFpbGFibGUgfHwg
dHlwZSgpID09IEZpdENvbnRlbnQ7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbWlzbGVhZGluZ2x5
IG5hbWVkLiBPbmUgd291bGQgZXhwZWN0IHRoaXMgZnVuY3Rpb24gZG9lcyAicmV0dXJuIHR5cGUo
KSA9PSBMZW5ndGhUeXBlOjpJbnRyaW5zaWM7Ii4KKyAgICByZXR1cm4gdHlwZSgpID09IExlbmd0
aFR5cGU6Ok1pbkNvbnRlbnQgfHwgdHlwZSgpID09IExlbmd0aFR5cGU6Ok1heENvbnRlbnQgfHwg
dHlwZSgpID09IExlbmd0aFR5cGU6OkZpbGxBdmFpbGFibGUgfHwgdHlwZSgpID09IExlbmd0aFR5
cGU6OkZpdENvbnRlbnQ7CiB9CiAKIGlubGluZSBib29sIExlbmd0aDo6aXNJbnRyaW5zaWNPckF1
dG8oKSBjb25zdApAQCAtNDEwLDEyICs0MTIsMTcgQEAgaW5saW5lIGJvb2wgTGVuZ3RoOjppc1Nw
ZWNpZmllZE9ySW50cmluc2ljKCkgY29uc3QKIAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc0ZpbGxB
dmFpbGFibGUoKSBjb25zdAogewotICAgIHJldHVybiB0eXBlKCkgPT0gRmlsbEF2YWlsYWJsZTsK
KyAgICByZXR1cm4gdHlwZSgpID09IExlbmd0aFR5cGU6OkZpbGxBdmFpbGFibGU7CiB9CiAKIGlu
bGluZSBib29sIExlbmd0aDo6aXNGaXRDb250ZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHlw
ZSgpID09IEZpdENvbnRlbnQ7CisgICAgcmV0dXJuIHR5cGUoKSA9PSBMZW5ndGhUeXBlOjpGaXRD
b250ZW50OworfQorCitpbmxpbmUgYm9vbCBMZW5ndGg6OmlzTWluSW50cmluc2ljKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gdHlwZSgpID09IExlbmd0aFR5cGU6Ok1pbkludHJpbnNpYzsKIH0KIAog
TGVuZ3RoIGNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgKaW5kZXggODlhNzVjOGI2ZTQyNDc2MzU5Mzg4NGFl
NjQ1ZWRkZWJiODAzYTRiYS4uN2YyNjY5ZDNhNTAyM2ViYmYxM2NkMDVjZjU2ZTc5YjBkYmRjOGJk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVuZ3RoQm94IDogcHVibGljIFJlY3RFZGdlczxMZW5n
dGg+IHsKIHB1YmxpYzoKICAgICBMZW5ndGhCb3goKQotICAgICAgICA6IExlbmd0aEJveChBdXRv
KQorICAgICAgICA6IExlbmd0aEJveChMZW5ndGhUeXBlOjpBdXRvKQogICAgIHsKICAgICB9CiAK
QEAgLTQwLDEyICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgZXhwbGljaXQgTGVuZ3Ro
Qm94KGludCB2KQotICAgICAgICA6IFJlY3RFZGdlcyhMZW5ndGgodiwgRml4ZWQpLCBMZW5ndGgo
diwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpLCBMZW5ndGgodiwgRml4ZWQpKQorICAgICAgICA6
IFJlY3RFZGdlcyhMZW5ndGgodiwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgodiwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpLCBMZW5ndGgodiwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgodiwgTGVu
Z3RoVHlwZTo6Rml4ZWQpKQogICAgIHsKICAgICB9CiAKICAgICBMZW5ndGhCb3goaW50IHRvcCwg
aW50IHJpZ2h0LCBpbnQgYm90dG9tLCBpbnQgbGVmdCkKLSAgICAgICAgOiBSZWN0RWRnZXMoTGVu
Z3RoKHRvcCwgRml4ZWQpLCBMZW5ndGgocmlnaHQsIEZpeGVkKSwgTGVuZ3RoKGJvdHRvbSwgRml4
ZWQpLCBMZW5ndGgobGVmdCwgRml4ZWQpKQorICAgICAgICA6IFJlY3RFZGdlcyhMZW5ndGgodG9w
LCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChyaWdodCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBM
ZW5ndGgoYm90dG9tLCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChsZWZ0LCBMZW5ndGhUeXBl
OjpGaXhlZCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4
IDMxZTYyMGU5NzUzM2Q5MjcwMDNmMTFhZThmYWRhY2ZhMTgzYjUxMWQuLjQ1M2QxMTkyNDIyZmJj
YTcyNmY3ZDVlOTcxZjg2OGRjMTJmODc2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgTGVuZ3RoU2l6ZSBUaGVtZTo6Y29udHJvbFNpemUoQ29udHJvbFBh
cnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYKIAogTGVuZ3RoU2l6ZSBU
aGVtZTo6bWluaW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYs
IGNvbnN0IExlbmd0aFNpemUmLCBmbG9hdCkgY29uc3QKIHsKLSAgICByZXR1cm4geyB7IDAsIEZp
eGVkIH0sIHsgMCwgRml4ZWQgfSB9OworICAgIHJldHVybiB7IHsgMCwgTGVuZ3RoVHlwZTo6Rml4
ZWQgfSwgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9IH07CiB9CiAKIGJvb2wgVGhlbWU6OmNvbnRy
b2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRhL1RoZW1lQWR3YWl0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRhL1RoZW1lQWR3YWl0YS5jcHAKaW5kZXggMDZlZWI2YWYw
ZDI0NmFmZWJkNzc2ZDYyOTc4YWI5NmVhNDM0Njc1Yi4uMzFiNDE5ZGFlZmY1YzYxZTM2ODQ0NDQx
MTQwODI4NTk2ZGFlYzc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3
YWl0YS9UaGVtZUFkd2FpdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fkd2Fp
dGEvVGhlbWVBZHdhaXRhLmNwcApAQCAtMTU5LDE3ICsxNTksMTcgQEAgTGVuZ3RoU2l6ZSBUaGVt
ZUFkd2FpdGE6OmNvbnRyb2xTaXplKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250Q2EKICAgICBjYXNlIFJhZGlvUGFydDogewogICAgICAgICBMZW5ndGhTaXplIGJ1dHRv
blNpemUgPSB6b29tZWRTaXplOwogICAgICAgICBpZiAoYnV0dG9uU2l6ZS53aWR0aC5pc0ludHJp
bnNpY09yQXV0bygpKQotICAgICAgICAgICAgYnV0dG9uU2l6ZS53aWR0aCA9IExlbmd0aCgxMiwg
Rml4ZWQpOworICAgICAgICAgICAgYnV0dG9uU2l6ZS53aWR0aCA9IExlbmd0aCgxMiwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpOwogICAgICAgICBpZiAoYnV0dG9uU2l6ZS5oZWlnaHQuaXNJbnRyaW5zaWNP
ckF1dG8oKSkKLSAgICAgICAgICAgIGJ1dHRvblNpemUuaGVpZ2h0ID0gTGVuZ3RoKDEyLCBGaXhl
ZCk7CisgICAgICAgICAgICBidXR0b25TaXplLmhlaWdodCA9IExlbmd0aCgxMiwgTGVuZ3RoVHlw
ZTo6Rml4ZWQpOwogICAgICAgICByZXR1cm4gYnV0dG9uU2l6ZTsKICAgICB9CiAgICAgY2FzZSBJ
bm5lclNwaW5CdXR0b25QYXJ0OiB7CiAgICAgICAgIExlbmd0aFNpemUgc3BpbkJ1dHRvblNpemUg
PSB6b29tZWRTaXplOwogICAgICAgICBpZiAoc3BpbkJ1dHRvblNpemUud2lkdGguaXNJbnRyaW5z
aWNPckF1dG8oKSkKLSAgICAgICAgICAgIHNwaW5CdXR0b25TaXplLndpZHRoID0gTGVuZ3RoKHN0
YXRpY19jYXN0PGludD4oYXJyb3dTaXplKSwgRml4ZWQpOworICAgICAgICAgICAgc3BpbkJ1dHRv
blNpemUud2lkdGggPSBMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihhcnJvd1NpemUpLCBMZW5ndGhU
eXBlOjpGaXhlZCk7CiAgICAgICAgIGlmIChzcGluQnV0dG9uU2l6ZS5oZWlnaHQuaXNJbnRyaW5z
aWNPckF1dG8oKSB8fCBmb250Q2FzY2FkZS5waXhlbFNpemUoKSA+IHN0YXRpY19jYXN0PGludD4o
YXJyb3dTaXplKSkKLSAgICAgICAgICAgIHNwaW5CdXR0b25TaXplLmhlaWdodCA9IExlbmd0aChm
b250Q2FzY2FkZS5waXhlbFNpemUoKSwgRml4ZWQpOworICAgICAgICAgICAgc3BpbkJ1dHRvblNp
emUuaGVpZ2h0ID0gTGVuZ3RoKGZvbnRDYXNjYWRlLnBpeGVsU2l6ZSgpLCBMZW5ndGhUeXBlOjpG
aXhlZCk7CiAgICAgICAgIHJldHVybiBzcGluQnV0dG9uU2l6ZTsKICAgICB9CiAgICAgZGVmYXVs
dDoKQEAgLTE4Niw5ICsxODYsOSBAQCBMZW5ndGhTaXplIFRoZW1lQWR3YWl0YTo6bWluaW11bUNv
bnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbgogCiAgICAgTGVu
Z3RoU2l6ZSBtaW5TaXplID0gem9vbWVkU2l6ZTsKICAgICBpZiAobWluU2l6ZS53aWR0aC5pc0lu
dHJpbnNpY09yQXV0bygpKQotICAgICAgICBtaW5TaXplLndpZHRoID0gTGVuZ3RoKDAsIEZpeGVk
KTsKKyAgICAgICAgbWluU2l6ZS53aWR0aCA9IExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7
CiAgICAgaWYgKG1pblNpemUuaGVpZ2h0LmlzSW50cmluc2ljT3JBdXRvKCkpCi0gICAgICAgIG1p
blNpemUuaGVpZ2h0ID0gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICAgICAgbWluU2l6ZS5oZWlnaHQg
PSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgIHJldHVybiBtaW5TaXplOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggOTM3YWE0
ZDM1OTNkMWQyMzkxNzMzZjBjMDI3NzRhMjExMTMzNjVlMS4uMzAzMDI4ZjQxZjBjYWNmZjI5ZTY4
NjU0ZjE3ZTc0YzA1YjZhYzU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcApAQCAtMzM0LDggKzMzNCw4IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJh
d1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0CiB2
b2lkIEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dp
ZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykK
IHsKICAgICBpbnRyaW5zaWNSYXRpbyA9IHNpemUoKTsKLSAgICBpbnRyaW5zaWNXaWR0aCA9IExl
bmd0aChpbnRyaW5zaWNSYXRpby53aWR0aCgpLCBGaXhlZCk7Ci0gICAgaW50cmluc2ljSGVpZ2h0
ID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLmhlaWdodCgpLCBGaXhlZCk7CisgICAgaW50cmluc2lj
V2lkdGggPSBMZW5ndGgoaW50cmluc2ljUmF0aW8ud2lkdGgoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQp
OworICAgIGludHJpbnNpY0hlaWdodCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby5oZWlnaHQoKSwg
TGVuZ3RoVHlwZTo6Rml4ZWQpOwogfQogCiB2b2lkIEltYWdlOjpzdGFydEFuaW1hdGlvbkFzeW5j
aHJvbm91c2x5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5jcHAKaW5kZXggZWZiOTM1M2ZhNTk0ZTk4ZWNjYTEwOTM3NDIxMDdjNzYxMjE3Y2Zh
ZC4uZDRjZGU5Yzg5Y2YwNWZmZGM1NTgwMDcxM2FjYTdmZjkwMWQxYmY4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKQEAgLTQ3LDcg
KzQ3LDcgQEAgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVy
YXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXIKICAgICBpZiAoYmxlbmRUb0lkZW50aXR5
KSB7CiAgICAgICAgIGRvdWJsZSBwID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtX3AsIDEpOwogICAg
ICAgICBwID0gV2ViQ29yZTo6YmxlbmQocCwgMS4wLCBwcm9ncmVzcyk7IC8vIEZJWE1FOiB0aGlz
IHNlZW1zIHdyb25nLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI3
MDAKLSAgICAgICAgcmV0dXJuIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUo
TGVuZ3RoKGNsYW1wVG9Qb3NpdGl2ZUludGVnZXIocCksIEZpeGVkKSk7CisgICAgICAgIHJldHVy
biBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aChjbGFtcFRvUG9z
aXRpdmVJbnRlZ2VyKHApLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgIH0KICAgICAKICAgICBj
b25zdCBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbU9wID0gZG93bmNhc3Q8UGVy
c3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24+KGZyb20pOwpAQCAtNjQsOSArNjQsOSBAQCBSZWY8
VHJhbnNmb3JtT3BlcmF0aW9uPiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgVHJhbnNmb3JtT3BlcgogCiAgICAgaWYgKGRlY29tcC5wZXJzcGVjdGl2ZVopIHsKICAg
ICAgICAgZG91YmxlIHZhbCA9IC0xLjAgLyBkZWNvbXAucGVyc3BlY3RpdmVaOwotICAgICAgICBy
ZXR1cm4gUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoY2xhbXBU
b1Bvc2l0aXZlSW50ZWdlcih2YWwpLCBGaXhlZCkpOworICAgICAgICByZXR1cm4gUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoY2xhbXBUb1Bvc2l0aXZlSW50ZWdl
cih2YWwpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgIH0KLSAgICByZXR1cm4gUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICByZXR1
cm4gUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMCwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpKTsKIH0KIAogdm9pZCBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6
ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCBiNWQzZWI5NTA1YWJkODY4MzY5NzIwZTMxZTRl
OTk1NmQ1ZDBmNWZhLi45Njk3M2JlMzQxMmNmNzEwODUzMGQ0NGUyZTI5YmI2MWZlMWJmMDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCkBA
IC00MCw3ICs0MCw3IEBAIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IFRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0CiAgICAgaWYgKGZyb20gJiYg
IWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKLSAgICBM
ZW5ndGggemVyb0xlbmd0aCgwLCBGaXhlZCk7CisgICAgTGVuZ3RoIHplcm9MZW5ndGgoMCwgTGVu
Z3RoVHlwZTo6Rml4ZWQpOwogICAgIGlmIChibGVuZFRvSWRlbnRpdHkpCiAgICAgICAgIHJldHVy
biBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShXZWJDb3JlOjpibGVuZChtX3gs
IHplcm9MZW5ndGgsIHByb2dyZXNzKSwgV2ViQ29yZTo6YmxlbmQobV95LCB6ZXJvTGVuZ3RoLCBw
cm9ncmVzcyksIFdlYkNvcmU6OmJsZW5kKG1feiwgemVyb0xlbmd0aCwgcHJvZ3Jlc3MpLCB0eXBl
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaApp
bmRleCAwMTFlMTAxZmI1MTkwYjJmMzVjMGJmMjYxMGQ2YzAwZjkyYmYwODBlLi5lZDdjOGZkZDY5
NzA3MWE5OTUzNzY2YmVkZGIyYjU1NWE3YWFkNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIFRyYW5zZm9ybU9wZXJhdGlvbiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24+IGNy
ZWF0ZShjb25zdCBMZW5ndGgmIHR4LCBjb25zdCBMZW5ndGgmIHR5LCBPcGVyYXRpb25UeXBlIHR5
cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24odHgsIHR5LCBMZW5ndGgoMCwgRml4ZWQpLCB0eXBlKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbih0eCwgdHksIExl
bmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCksIHR5cGUpKTsKICAgICB9CiAKICAgICBzdGF0aWMg
UmVmPFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IExlbmd0aCYgdHgs
IGNvbnN0IExlbmd0aCYgdHksIGNvbnN0IExlbmd0aCYgdHosIE9wZXJhdGlvblR5cGUgdHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCBlOWFkOGJhZGFmYmQx
MTg1YjJmNjE3OTYzYzQyZTk2YzMyY2IxNjE4Li40YTA0NzY3YWVlOTk1MDA3YzU4Mzk4ZTg3M2Uw
ZjBhZmUxNmJmMGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBA
IC0xNTUsOSArMTU1LDkgQEAgc3RhdGljIExlbmd0aFNpemUgc2l6ZUZyb21OU0NvbnRyb2xTaXpl
KE5TQ29udHJvbFNpemUgbnNDb250cm9sU2l6ZSwgY29uc3QgTGVuZ3QKICAgICAgICAgY29udHJv
bFNpemUgPSBJbnRTaXplKGNvbnRyb2xTaXplLndpZHRoKCkgKiB6b29tRmFjdG9yLCBjb250cm9s
U2l6ZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpOwogICAgIExlbmd0aFNpemUgcmVzdWx0ID0gem9v
bWVkU2l6ZTsKICAgICBpZiAoem9vbWVkU2l6ZS53aWR0aC5pc0ludHJpbnNpY09yQXV0bygpICYm
IGNvbnRyb2xTaXplLndpZHRoKCkgPiAwKQotICAgICAgICByZXN1bHQud2lkdGggPSB7IGNvbnRy
b2xTaXplLndpZHRoKCksIEZpeGVkIH07CisgICAgICAgIHJlc3VsdC53aWR0aCA9IHsgY29udHJv
bFNpemUud2lkdGgoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQgfTsKICAgICBpZiAoem9vbWVkU2l6ZS5o
ZWlnaHQuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiBjb250cm9sU2l6ZS5oZWlnaHQoKSA+IDApCi0g
ICAgICAgIHJlc3VsdC5oZWlnaHQgPSB7IGNvbnRyb2xTaXplLmhlaWdodCgpLCBGaXhlZCB9Owor
ICAgICAgICByZXN1bHQuaGVpZ2h0ID0geyBjb250cm9sU2l6ZS5oZWlnaHQoKSwgTGVuZ3RoVHlw
ZTo6Rml4ZWQgfTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC04MzYsMTEgKzgzNiwxMSBA
QCBMZW5ndGhTaXplIFRoZW1lTWFjOjptaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQgcGFy
dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbgogI2VuZGlmCiAgICAgY2FzZSBEZWZhdWx0QnV0dG9u
UGFydDoKICAgICBjYXNlIEJ1dHRvblBhcnQ6Ci0gICAgICAgIHJldHVybiB7IHsgMCwgRml4ZWQg
fSwgeyBzdGF0aWNfY2FzdDxpbnQ+KDE1ICogem9vbUZhY3RvciksIEZpeGVkIH0gfTsKKyAgICAg
ICAgcmV0dXJuIHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IHN0YXRpY19jYXN0PGludD4o
MTUgKiB6b29tRmFjdG9yKSwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9OwogICAgIGNhc2UgSW5uZXJT
cGluQnV0dG9uUGFydDogewogICAgICAgICBhdXRvJiBiYXNlID0gc3RlcHBlclNpemVzKClbTlND
b250cm9sU2l6ZU1pbmldOwotICAgICAgICByZXR1cm4geyB7IHN0YXRpY19jYXN0PGludD4oYmFz
ZS53aWR0aCgpICogem9vbUZhY3RvciksIEZpeGVkIH0sCi0gICAgICAgICAgICB7IHN0YXRpY19j
YXN0PGludD4oYmFzZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpLCBGaXhlZCB9IH07CisgICAgICAg
IHJldHVybiB7IHsgc3RhdGljX2Nhc3Q8aW50PihiYXNlLndpZHRoKCkgKiB6b29tRmFjdG9yKSwg
TGVuZ3RoVHlwZTo6Rml4ZWQgfSwKKyAgICAgICAgICAgIHsgc3RhdGljX2Nhc3Q8aW50PihiYXNl
LmhlaWdodCgpICogem9vbUZhY3RvciksIExlbmd0aFR5cGU6OkZpeGVkIH0gfTsKICAgICB9CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIFRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUocGFy
dCwgZm9udCwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCmluZGV4IDgxNDNhZDI5Y2QyMGNkMTU4ZWIzOTk2NGU5
ZjJlODkzZmY3NjMwZmEuLjkzYTdiOTI0NmFlMzZlMWY2YmJhMTNkMzBlYTE4NzBmYzU2ZTcwMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCkBAIC04
OCwxMSArODgsMTEgQEAgdm9pZCBBdXRvVGFibGVMYXlvdXQ6OnJlY2FsY0NvbHVtbih1bnNpZ25l
ZCBlZmZDb2wpCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGNDZWxsTWF4V2lkdGgg
PSAzMjc2MDsKICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIGNlbGxMb2dpY2FsV2lkdGggPSBj
ZWxsLT5zdHlsZU9yQ29sTG9naWNhbFdpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChj
ZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkgPiBjQ2VsbE1heFdpZHRoKQotICAgICAgICAgICAgICAg
ICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5zZXRWYWx1ZShGaXhlZCwgY0NlbGxNYXhXaWR0aCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNldFZhbHVlKExlbmd0
aFR5cGU6OkZpeGVkLCBjQ2VsbE1heFdpZHRoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNl
bGxMb2dpY2FsV2lkdGguaXNOZWdhdGl2ZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2Vs
bExvZ2ljYWxXaWR0aC5zZXRWYWx1ZShGaXhlZCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjZWxsTG9naWNhbFdpZHRoLnNldFZhbHVlKExlbmd0aFR5cGU6OkZpeGVkLCAwKTsKICAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChjZWxsTG9naWNhbFdpZHRoLnR5cGUoKSkgewotICAgICAg
ICAgICAgICAgICAgICBjYXNlIEZpeGVkOgorICAgICAgICAgICAgICAgICAgICBjYXNlIExlbmd0
aFR5cGU6OkZpeGVkOgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHdpZHRoPTAK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUo
KSAmJiAhY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGxvZ2ljYWxXaWR0aCA9IGNlbGwt
PmFkanVzdEJvcmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhjZWxsTG9naWNhbFdpZHRo
KTsKQEAgLTEwMCwyMSArMTAwLDIxIEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpyZWNhbGNDb2x1
bW4odW5zaWduZWQgZWZmQ29sKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBO
YXYvSUUgd2VpcmRuZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobG9n
aWNhbFdpZHRoID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpKSAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0
aC52YWx1ZSgpID09IGxvZ2ljYWxXaWR0aCkgJiYgKG1heENvbnRyaWJ1dG9yID09IGNlbGwpKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0LmxvZ2lj
YWxXaWR0aC5zZXRWYWx1ZShGaXhlZCwgbG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGguc2V0VmFsdWUoTGVu
Z3RoVHlwZTo6Rml4ZWQsIGxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaXhlZENvbnRyaWJ1dG9yID0gY2VsbDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGguc2V0
VmFsdWUoRml4ZWQsIGxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGguc2V0VmFsdWUoTGVuZ3RoVHlwZTo6Rml4ZWQs
IGxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkQ29u
dHJpYnV0b3IgPSBjZWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIFBlcmNlbnQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgTGVu
Z3RoVHlwZTo6UGVyY2VudDoKICAgICAgICAgICAgICAgICAgICAgICAgIG1faGFzUGVyY2VudCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc1Bv
c2l0aXZlKCkgJiYgKCFjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLmlzUGVyY2VudCgpIHx8IGNl
bGxMb2dpY2FsV2lkdGgucGVyY2VudCgpID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5wZXJj
ZW50KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2Fs
V2lkdGggPSBjZWxsTG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgTGVuZ3RoVHlwZTo6UmVsYXRpdmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogTmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2FzZSBhbmQgd2hldGhlciBpdCBtYWtlcyBz
ZW5zZSB0byBjb21wYXJlIHZhbHVlcwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2gg
YXJlIG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgc2FtZSB0eXBlLgogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGgudmFsdWUoKSA+IGNvbHVtbkxheW91dC5sb2dpY2Fs
V2lkdGgudmFsdWUoKSkKQEAgLTMyOCwxMSArMzI4LDExIEBAIGZsb2F0IEF1dG9UYWJsZUxheW91
dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0aCgpCiAgICAgICAgIHdoaWxlIChsYXN0Q29sIDwg
bkVmZkNvbHMgJiYgc3BhbiA+IDApIHsKICAgICAgICAgICAgIExheW91dCYgY29sdW1uTGF5b3V0
ID0gbV9sYXlvdXRTdHJ1Y3RbbGFzdENvbF07CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbkxh
eW91dC5sb2dpY2FsV2lkdGgudHlwZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFBlcmNlbnQ6Cisg
ICAgICAgICAgICBjYXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6CiAgICAgICAgICAgICAgICAgdG90
YWxQZXJjZW50ICs9IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgucGVyY2VudCgpOwogICAgICAg
ICAgICAgICAgIGFsbENvbHNBcmVGaXhlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBGaXhlZDoKKyAgICAgICAgICAgIGNhc2UgTGVuZ3RoVHlwZTo6
Rml4ZWQ6CiAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFs
dWUoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgZml4ZWRXaWR0aCArPSBjb2x1bW5MYXlv
dXQubG9naWNhbFdpZHRoLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGFsbENvbHNBcmVQ
ZXJjZW50ID0gZmFsc2U7CkBAIC0zNDEsNyArMzQxLDcgQEAgZmxvYXQgQXV0b1RhYmxlTGF5b3V0
OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRoKCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAg
ICAgICAgY2FzZSBBdXRvOgorICAgICAgICAgICAgY2FzZSBMZW5ndGhUeXBlOjpBdXRvOgogICAg
ICAgICAgICAgICAgIGhhdmVBdXRvID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBGQUxMVEhST1VH
SDsKICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC0zOTIsNyArMzkyLDcgQEAgZmxvYXQgQXV0b1Rh
YmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRoKCkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRvdGFsV2lkdGggLT0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNYXhMb2dp
Y2FsV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50TWlzc2luZyAtPSBwZXJj
ZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlcmNlbnQgPiAwKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTG9naWNhbFdp
ZHRoLnNldFZhbHVlKFBlcmNlbnQsIHBlcmNlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTG9naWNhbFdpZHRoLnNldFZhbHVlKExl
bmd0aFR5cGU6OlBlcmNlbnQsIHBlcmNlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0
aXZlTG9naWNhbFdpZHRoID0gTGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTU0
NCwxOCArNTQ0LDE4IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQoKQogICAgICAgICBh
dmFpbGFibGUgLT0gY2VsbExvZ2ljYWxXaWR0aDsKICAgICAgICAgTGVuZ3RoJiBsb2dpY2FsV2lk
dGggPSBtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGg7CiAgICAgICAgIHN3
aXRjaCAobG9naWNhbFdpZHRoLnR5cGUoKSkgewotICAgICAgICBjYXNlIFBlcmNlbnQ6CisgICAg
ICAgIGNhc2UgTGVuZ3RoVHlwZTo6UGVyY2VudDoKICAgICAgICAgICAgIGhhdmVQZXJjZW50ID0g
dHJ1ZTsKICAgICAgICAgICAgIHRvdGFsUGVyY2VudCArPSBsb2dpY2FsV2lkdGgucGVyY2VudCgp
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUmVsYXRpdmU6CisgICAgICAgIGNh
c2UgTGVuZ3RoVHlwZTo6UmVsYXRpdmU6CiAgICAgICAgICAgICB0b3RhbFJlbGF0aXZlICs9IGxv
Z2ljYWxXaWR0aC52YWx1ZSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRml4
ZWQ6CisgICAgICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CiAgICAgICAgICAgICBudW1GaXhl
ZCsrOwogICAgICAgICAgICAgdG90YWxGaXhlZCArPSBtX2xheW91dFN0cnVjdFtpXS5lZmZlY3Rp
dmVNYXhMb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdXRv
OgorICAgICAgICBjYXNlIExlbmd0aFR5cGU6OkF1dG86CiAgICAgICAgICAgICBpZiAobV9sYXlv
dXRTdHJ1Y3RbaV0uZW1wdHlDZWxsc09ubHkpCiAgICAgICAgICAgICAgICAgbnVtQXV0b0VtcHR5
Q2VsbHNPbmx5Kys7CiAgICAgICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAppbmRleCAyM2IzOGE5OGUxYTQzNjVjMTZmZDk0NmE5
NGZmMjMzZWNkZDg3YWVlLi44YmZlMzk5MzZkYjc5NTg3NDM2YzZlMjY2OWI2ZmY1ZDJlMDE5YmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCkBA
IC04Myw3ICs4Myw3IEBAIGZsb2F0IEZpeGVkVGFibGVMYXlvdXQ6OmNhbGNXaWR0aEFycmF5KCkK
ICAgICAvLyBpdGVyYXRlIG92ZXIgYWxsIDxjb2w+IGVsZW1lbnRzCiAgICAgdW5zaWduZWQgbkVm
ZkNvbHMgPSBtX3RhYmxlLT5udW1FZmZDb2xzKCk7CiAgICAgbV93aWR0aC5yZXNpemUobkVmZkNv
bHMpOwotICAgIG1fd2lkdGguZmlsbChMZW5ndGgoQXV0bykpOworICAgIG1fd2lkdGguZmlsbChM
ZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpOwogCiAgICAgdW5zaWduZWQgY3VycmVudEVmZmVjdGl2
ZUNvbHVtbiA9IDA7CiAgICAgZm9yIChSZW5kZXJUYWJsZUNvbCogY29sID0gbV90YWJsZS0+Zmly
c3RDb2x1bW4oKTsgY29sOyBjb2wgPSBjb2wtPm5leHRDb2x1bW4oKSkgewpAQCAtMTQzLDE0ICsx
NDMsMTQgQEAgZmxvYXQgRml4ZWRUYWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkoKQogICAgICAg
ICAvLyBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJbkZyYWdtZW50VXNpbmcgdG8gY29t
cHV0ZSB0aGUgd2lkdGguCiAgICAgICAgIGlmIChsb2dpY2FsV2lkdGguaXNGaXhlZCgpICYmIGxv
Z2ljYWxXaWR0aC5pc1Bvc2l0aXZlKCkpIHsKICAgICAgICAgICAgIGZpeGVkQm9yZGVyQm94TG9n
aWNhbFdpZHRoID0gY2VsbC0+YWRqdXN0Qm9yZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5n
KGxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICBsb2dpY2FsV2lkdGguc2V0VmFsdWUoRml4ZWQs
IGZpeGVkQm9yZGVyQm94TG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIGxvZ2ljYWxXaWR0aC5z
ZXRWYWx1ZShMZW5ndGhUeXBlOjpGaXhlZCwgZml4ZWRCb3JkZXJCb3hMb2dpY2FsV2lkdGgpOwog
ICAgICAgICB9CiAKICAgICAgICAgdW5zaWduZWQgdXNlZFNwYW4gPSAwOwogICAgICAgICB3aGls
ZSAodXNlZFNwYW4gPCBzcGFuICYmIGN1cnJlbnRDb2x1bW4gPCBuRWZmQ29scykgewogICAgICAg
ICAgICAgZmxvYXQgZVNwYW4gPSBtX3RhYmxlLT5zcGFuT2ZFZmZDb2woY3VycmVudENvbHVtbik7
CiAgICAgICAgICAgICAvLyBPbmx5IHNldCBpZiBubyBjb2wgZWxlbWVudCBoYXMgYWxyZWFkeSBz
ZXQgaXQuCi0gICAgICAgICAgICBpZiAobV93aWR0aFtjdXJyZW50Q29sdW1uXS5pc0F1dG8oKSAm
JiBsb2dpY2FsV2lkdGgudHlwZSgpICE9IEF1dG8pIHsKKyAgICAgICAgICAgIGlmIChtX3dpZHRo
W2N1cnJlbnRDb2x1bW5dLmlzQXV0bygpICYmIGxvZ2ljYWxXaWR0aC50eXBlKCkgIT0gTGVuZ3Ro
VHlwZTo6QXV0bykgewogICAgICAgICAgICAgICAgIG1fd2lkdGhbY3VycmVudENvbHVtbl0gPSBs
b2dpY2FsV2lkdGg7CiAgICAgICAgICAgICAgICAgbV93aWR0aFtjdXJyZW50Q29sdW1uXSAqPSBl
U3BhbiAvIHNwYW47CiAgICAgICAgICAgICAgICAgdXNlZFdpZHRoICs9IGZpeGVkQm9yZGVyQm94
TG9naWNhbFdpZHRoICogZVNwYW4gLyBzcGFuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcAppbmRleCBlOWY5Zjg5ZjZhZWVj
MDFlNTNkYjE5OWI0OTkzZjc4MWM2NWM3OGVjLi4yMDU1MTc4YWEzMzc5MTIzNWZkNTRhODYyMmU3
NWZmM2RiZmQ2NjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcApAQCAtNjQzLDI1ICs2NDMsMjUgQEAgR3JpZFRyYWNr
U2l6ZSBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmNhbGN1bGF0ZUdyaWRUcmFja1NpemUoR3Jp
ZFRyYWNrU2l6aW5nRGkKICAgICBBU1NFUlQod2FzU2V0dXAoKSk7CiAgICAgLy8gQ29sbGFwc2Ug
ZW1wdHkgYXV0byByZXBlYXQgdHJhY2tzIGlmIGF1dG8tZml0LgogICAgIGlmIChtX2dyaWQuaGFz
QXV0b1JlcGVhdEVtcHR5VHJhY2tzKGRpcmVjdGlvbikgJiYgbV9ncmlkLmlzRW1wdHlBdXRvUmVw
ZWF0VHJhY2soZGlyZWN0aW9uLCB0cmFuc2xhdGVkSW5kZXgpKQotICAgICAgICByZXR1cm4geyBM
ZW5ndGgoRml4ZWQpLCBMZW5ndGhUcmFja1NpemluZyB9OworICAgICAgICByZXR1cm4geyBMZW5n
dGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGhUcmFja1NpemluZyB9OwogCiAgICAgYXV0byYg
dHJhY2tTaXplID0gcmF3R3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIHRyYW5zbGF0ZWRJbmRleCk7
CiAgICAgaWYgKHRyYWNrU2l6ZS5pc0ZpdENvbnRlbnQoKSkKLSAgICAgICAgcmV0dXJuIGlzUmVs
YXRpdmVHcmlkTGVuZ3RoQXNBdXRvKHRyYWNrU2l6ZS5maXRDb250ZW50VHJhY2tCcmVhZHRoKCks
IGRpcmVjdGlvbikgPyBHcmlkVHJhY2tTaXplKExlbmd0aChBdXRvKSwgTGVuZ3RoKE1heENvbnRl
bnQpKSA6IHRyYWNrU2l6ZTsKKyAgICAgICAgcmV0dXJuIGlzUmVsYXRpdmVHcmlkTGVuZ3RoQXNB
dXRvKHRyYWNrU2l6ZS5maXRDb250ZW50VHJhY2tCcmVhZHRoKCksIGRpcmVjdGlvbikgPyBHcmlk
VHJhY2tTaXplKExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6Ok1h
eENvbnRlbnQpKSA6IHRyYWNrU2l6ZTsKIAogICAgIEdyaWRMZW5ndGggbWluVHJhY2tCcmVhZHRo
ID0gdHJhY2tTaXplLm1pblRyYWNrQnJlYWR0aCgpOwogICAgIEdyaWRMZW5ndGggbWF4VHJhY2tC
cmVhZHRoID0gdHJhY2tTaXplLm1heFRyYWNrQnJlYWR0aCgpOwogICAgIC8vIElmIHRoZSBsb2dp
Y2FsIHdpZHRoL2hlaWdodCBvZiB0aGUgZ3JpZCBjb250YWluZXIgaXMgaW5kZWZpbml0ZSwgcGVy
Y2VudGFnZQogICAgIC8vIHZhbHVlcyBhcmUgdHJlYXRlZCBhcyA8YXV0bz4uCiAgICAgaWYgKGlz
UmVsYXRpdmVHcmlkTGVuZ3RoQXNBdXRvKHRyYWNrU2l6ZS5taW5UcmFja0JyZWFkdGgoKSwgZGly
ZWN0aW9uKSkKLSAgICAgICAgbWluVHJhY2tCcmVhZHRoID0gTGVuZ3RoKEF1dG8pOworICAgICAg
ICBtaW5UcmFja0JyZWFkdGggPSBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byk7CiAgICAgaWYgKGlz
UmVsYXRpdmVHcmlkTGVuZ3RoQXNBdXRvKHRyYWNrU2l6ZS5tYXhUcmFja0JyZWFkdGgoKSwgZGly
ZWN0aW9uKSkKLSAgICAgICAgbWF4VHJhY2tCcmVhZHRoID0gTGVuZ3RoKEF1dG8pOworICAgICAg
ICBtYXhUcmFja0JyZWFkdGggPSBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byk7CiAKICAgICAvLyBG
bGV4IHNpemVzIGFyZSBpbnZhbGlkIGFzIGEgbWluIHNpemluZyBmdW5jdGlvbi4gSG93ZXZlciB3
ZSBzdGlsbCBjYW4gaGF2ZSBhIGZsZXhpYmxlIHxtaW5UcmFja0JyZWFkdGh8CiAgICAgLy8gaWYg
dGhlIHRyYWNrIHNpemUgaXMganVzdCBhIGZsZXggc2l6ZSAoZS5nLiAiMWZyIiksIHRoZSBzcGVj
IHNheXMgdGhhdCBpbiB0aGlzIGNhc2UgaXQgaW1wbGllcyBhbiBhdXRvbWF0aWMgbWluaW11bS4K
ICAgICBpZiAobWluVHJhY2tCcmVhZHRoLmlzRmxleCgpKQotICAgICAgICBtaW5UcmFja0JyZWFk
dGggPSBMZW5ndGgoQXV0byk7CisgICAgICAgIG1pblRyYWNrQnJlYWR0aCA9IExlbmd0aChMZW5n
dGhUeXBlOjpBdXRvKTsKIAogICAgIHJldHVybiBHcmlkVHJhY2tTaXplKG1pblRyYWNrQnJlYWR0
aCwgbWF4VHJhY2tCcmVhZHRoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAKaW5kZXggNDMxODQ3YzQ2NTdmYzAzYzJjYTcxNTNhMzc2MzlhNThhMmMx
MGExMC4uYTVlOGQxMjU3MmZiNDc3ZDJiZTUxYTllODc3YzhiMDhkZjQyMDdmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTM4NDMsNyArMzg0
Myw3IEBAIHN0YXRpYyBib29sIGlzTm9uQmxvY2tzT3JOb25GaXhlZEhlaWdodExpc3RJdGVtcyhj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogICAgIGlmICghcmVuZGVyZXIuaXNSZW5kZXJC
bG9jaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocmVuZGVyZXIuaXNMaXN0SXRl
bSgpKQotICAgICAgICByZXR1cm4gcmVuZGVyZXIuc3R5bGUoKS5oZWlnaHQoKS50eXBlKCkgIT0g
Rml4ZWQ7CisgICAgICAgIHJldHVybiByZW5kZXJlci5zdHlsZSgpLmhlaWdodCgpLnR5cGUoKSAh
PSBMZW5ndGhUeXBlOjpGaXhlZDsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQxNDcsNyAr
NDE0Nyw3IEBAIFJlbmRlck9iamVjdCogSW5saW5lTWluTWF4SXRlcmF0b3I6Om5leHQoKQogCiBz
dGF0aWMgTGF5b3V0VW5pdCBnZXRCUE1XaWR0aChMYXlvdXRVbml0IGNoaWxkVmFsdWUsIExlbmd0
aCBjc3NVbml0KQogewotICAgIGlmIChjc3NVbml0LnR5cGUoKSAhPSBBdXRvKQorICAgIGlmIChj
c3NVbml0LnR5cGUoKSAhPSBMZW5ndGhUeXBlOjpBdXRvKQogICAgICAgICByZXR1cm4gKGNzc1Vu
aXQuaXNGaXhlZCgpID8gTGF5b3V0VW5pdChjc3NVbml0LnZhbHVlKCkpIDogY2hpbGRWYWx1ZSk7
CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmlu
ZGV4IDI4YzA4MmU0ODBhZDBhYzJhMDIwNTAxNzE3YTA1OGRmNzMwNDY3OGYuLjYxMGJkMTk1OGE2
MWE2NDVhMzdlOTBiZjUwNDkzMzBkZTI3NmE1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCkBAIC02NjYsNyArNjY2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNv
bnN0cmFpbkxvZ2ljYWxXaWR0aEluRnJhZ21lbnRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWwK
ICAgICBpZiAoc3R5bGVUb1VzZS5oYXNBc3BlY3RSYXRpbygpICYmIHN0eWxlVG9Vc2UubG9naWNh
bFdpZHRoKCkuaXNBdXRvKCkgJiYgbWluTGVuZ3RoLmlzQXV0bygpICYmIHN0eWxlVG9Vc2Uub3Zl
cmZsb3dJbmxpbmVEaXJlY3Rpb24oKSA9PSBPdmVyZmxvdzo6VmlzaWJsZSkgewogICAgICAgICAv
LyBNYWtlIHN1cmUgd2UgYWN0dWFsbHkgdXNlZCB0aGUgYXNwZWN0IHJhdGlvLgogICAgICAgICBp
ZiAoc2hvdWxkQ29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpKQotICAgICAgICAg
ICAgbWluTGVuZ3RoID0gTGVuZ3RoKE1pbkNvbnRlbnQpOworICAgICAgICAgICAgbWluTGVuZ3Ro
ID0gTGVuZ3RoKExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQpOwogICAgIH0KICAgICByZXR1cm4gc3Rk
OjptYXgobG9naWNhbFdpZHRoLCBjb21wdXRlTG9naWNhbFdpZHRoSW5GcmFnbWVudFVzaW5nKE1p
blNpemUsIG1pbkxlbmd0aCwgYXZhaWxhYmxlV2lkdGgsIGNiLCBmcmFnbWVudCkpOwogfQpAQCAt
NjgwLDcgKzY4MCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsSGVp
Z2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBPCiAgICAgfQogICAgIGF1dG8g
bG9naWNhbE1pbkhlaWdodCA9IHN0eWxlVG9Vc2UubG9naWNhbE1pbkhlaWdodCgpOwogICAgIGlm
IChsb2dpY2FsTWluSGVpZ2h0LmlzQXV0bygpICYmIHNob3VsZENvbXB1dGVMb2dpY2FsSGVpZ2h0
RnJvbUFzcGVjdFJhdGlvKCkgJiYgaW50cmluc2ljQ29udGVudEhlaWdodCAmJiBzdHlsZVRvVXNl
Lm92ZXJmbG93QmxvY2tEaXJlY3Rpb24oKSA9PSBPdmVyZmxvdzo6VmlzaWJsZSkKLSAgICAgICAg
bG9naWNhbE1pbkhlaWdodCA9IExlbmd0aCgqaW50cmluc2ljQ29udGVudEhlaWdodCwgRml4ZWQp
OworICAgICAgICBsb2dpY2FsTWluSGVpZ2h0ID0gTGVuZ3RoKCppbnRyaW5zaWNDb250ZW50SGVp
Z2h0LCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgaWYgKE9wdGlvbmFsPExheW91dFVuaXQ+IGNv
bXB1dGVkTG9naWNhbEhlaWdodCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWluU2l6ZSwg
bG9naWNhbE1pbkhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om1heChsb2dpY2FsSGVpZ2h0LCBjb21wdXRlZExvZ2ljYWxIZWlnaHQudmFsdWUoKSk7
CiAgICAgcmV0dXJuIGxvZ2ljYWxIZWlnaHQ7CkBAIC0xMjk4LDggKzEyOTgsOCBAQCBMYXlvdXRV
bml0IFJlbmRlckJveDo6YWRqdXN0Qm9yZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKGNv
bnN0IExlbmd0aCYgbG9naQogCiBMYXlvdXRVbml0IFJlbmRlckJveDo6YWRqdXN0Qm9yZGVyQm94
TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKExheW91dFVuaXQgY29tcHV0ZWRMb2dpY2FsV2lkdGgs
IExlbmd0aFR5cGUgb3JpZ2luYWxUeXBlKSBjb25zdAogewotICAgIGlmIChvcmlnaW5hbFR5cGUg
PT0gQ2FsY3VsYXRlZCkKLSAgICAgICAgcmV0dXJuIGFkanVzdEJvcmRlckJveExvZ2ljYWxXaWR0
aEZvckJveFNpemluZyh7IGNvbXB1dGVkTG9naWNhbFdpZHRoLCBGaXhlZCwgZmFsc2UgfSk7Cisg
ICAgaWYgKG9yaWdpbmFsVHlwZSA9PSBMZW5ndGhUeXBlOjpDYWxjdWxhdGVkKQorICAgICAgICBy
ZXR1cm4gYWRqdXN0Qm9yZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHsgY29tcHV0ZWRM
b2dpY2FsV2lkdGgsIExlbmd0aFR5cGU6OkZpeGVkLCBmYWxzZSB9KTsKICAgICByZXR1cm4gYWRq
dXN0Qm9yZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHsgY29tcHV0ZWRMb2dpY2FsV2lk
dGgsIG9yaWdpbmFsVHlwZSwgZmFsc2UgfSk7CiB9CiAKQEAgLTEzMjEsOCArMTMyMSw4IEBAIExh
eW91dFVuaXQgUmVuZGVyQm94OjphZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6
aW5nKGNvbnN0IExlbmd0aCYgbG9nCiAKIExheW91dFVuaXQgUmVuZGVyQm94OjphZGp1c3RDb250
ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKExheW91dFVuaXQgY29tcHV0ZWRMb2dpY2Fs
V2lkdGgsIExlbmd0aFR5cGUgb3JpZ2luYWxUeXBlKSBjb25zdAogewotICAgIGlmIChvcmlnaW5h
bFR5cGUgPT0gQ2FsY3VsYXRlZCkKLSAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dp
Y2FsV2lkdGhGb3JCb3hTaXppbmcoeyBjb21wdXRlZExvZ2ljYWxXaWR0aCwgRml4ZWQsIGZhbHNl
IH0pOworICAgIGlmIChvcmlnaW5hbFR5cGUgPT0gTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZCkKKyAg
ICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoeyBj
b21wdXRlZExvZ2ljYWxXaWR0aCwgTGVuZ3RoVHlwZTo6Rml4ZWQsIGZhbHNlIH0pOwogICAgIHJl
dHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHsgY29tcHV0ZWRM
b2dpY2FsV2lkdGgsIG9yaWdpbmFsVHlwZSwgZmFsc2UgfSk7CiB9CiAKQEAgLTI1MjksNyArMjUy
OSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5GcmFnbWVudChMb2dp
Y2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1CiAgICAgdHJlYXRBc1JlcGxhY2VkID0gdHJl
YXRBc1JlcGxhY2VkICYmICghaXNHcmlkSXRlbSgpIHx8ICFoYXNTdHJldGNoZWRMb2dpY2FsV2lk
dGgoKSk7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7Ci0g
ICAgTGVuZ3RoIGxvZ2ljYWxXaWR0aExlbmd0aCA9IHRyZWF0QXNSZXBsYWNlZCA/IExlbmd0aChj
b21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoKSwgRml4ZWQpIDogc3R5bGVUb1VzZS5sb2dpY2Fs
V2lkdGgoKTsKKyAgICBMZW5ndGggbG9naWNhbFdpZHRoTGVuZ3RoID0gdHJlYXRBc1JlcGxhY2Vk
ID8gTGVuZ3RoKGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aCgpLCBMZW5ndGhUeXBlOjpGaXhl
ZCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxXaWR0aCgpOwogCiAgICAgUmVuZGVyQmxvY2smIGNiID0g
KmNvbnRhaW5pbmdCbG9jaygpOwogICAgIExheW91dFVuaXQgY29udGFpbmVyTG9naWNhbFdpZHRo
ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9y
Q29udGVudEluRnJhZ21lbnQoZnJhZ21lbnQpKTsKQEAgLTI2MDUsMjAgKzI2MDUsMjAgQEAgTGF5
b3V0VW5pdCBSZW5kZXJCb3g6OmZpbGxBdmFpbGFibGVNZWFzdXJlKExheW91dFVuaXQgYXZhaWxh
YmxlTG9naWNhbFdpZHRoLCBMYXkKIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVJbnRy
aW5zaWNMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoTGVuZ3RoLCBMYXlvdXRV
bml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBj
b25zdAogewotICAgIGlmIChsb2dpY2FsV2lkdGhMZW5ndGgudHlwZSgpID09IEZpbGxBdmFpbGFi
bGUpCisgICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0aC5pc0ZpbGxBdmFpbGFibGUoKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWF4KGJvcmRlckFuZFBhZGRpbmcsIGZpbGxBdmFpbGFibGVNZWFzdXJl
KGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpOwogCiAgICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2FsV2lk
dGg7CiAgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2FsV2lkdGg7CiAgICAgY29tcHV0ZUludHJpbnNp
Y0xvZ2ljYWxXaWR0aHMobWluTG9naWNhbFdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpOwogCi0gICAg
aWYgKGxvZ2ljYWxXaWR0aExlbmd0aC50eXBlKCkgPT0gTWluQ29udGVudCkKKyAgICBpZiAobG9n
aWNhbFdpZHRoTGVuZ3RoLmlzTWluQ29udGVudCgpKQogICAgICAgICByZXR1cm4gbWluTG9naWNh
bFdpZHRoICsgYm9yZGVyQW5kUGFkZGluZzsKIAotICAgIGlmIChsb2dpY2FsV2lkdGhMZW5ndGgu
dHlwZSgpID09IE1heENvbnRlbnQpCisgICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0aC5pc01heENv
bnRlbnQoKSkKICAgICAgICAgcmV0dXJuIG1heExvZ2ljYWxXaWR0aCArIGJvcmRlckFuZFBhZGRp
bmc7CiAKLSAgICBpZiAobG9naWNhbFdpZHRoTGVuZ3RoLnR5cGUoKSA9PSBGaXRDb250ZW50KSB7
CisgICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0aC5pc0ZpdENvbnRlbnQoKSkgewogICAgICAgICBt
aW5Mb2dpY2FsV2lkdGggKz0gYm9yZGVyQW5kUGFkZGluZzsKICAgICAgICAgbWF4TG9naWNhbFdp
ZHRoICs9IGJvcmRlckFuZFBhZGRpbmc7CiAgICAgICAgIHJldHVybiBzdGQ6Om1heChtaW5Mb2dp
Y2FsV2lkdGgsIHN0ZDo6bWluKG1heExvZ2ljYWxXaWR0aCwgZmlsbEF2YWlsYWJsZU1lYXN1cmUo
YXZhaWxhYmxlTG9naWNhbFdpZHRoKSkpOwpAQCAtMjcwNyw3ICsyNzA3LDcgQEAgYm9vbCBSZW5k
ZXJCb3g6OnNpemVzTG9naWNhbFdpZHRoVG9GaXRDb250ZW50KFNpemVUeXBlIHdpZHRoVHlwZSkg
Y29uc3QKICAgICAvLyBUaGlzIGNvZGUgbWF5IGxvb2sgYSBiaXQgc3RyYW5nZS4gIEJhc2ljYWxs
eSB3aWR0aDppbnRyaW5zaWMgc2hvdWxkIGNsYW1wIHRoZSBzaXplIHdoZW4gdGVzdGluZyBib3Ro
CiAgICAgLy8gbWluLXdpZHRoIGFuZCB3aWR0aC4gIG1heC13aWR0aCBpcyBvbmx5IGNsYW1wZWQg
aWYgaXQgaXMgYWxzbyBpbnRyaW5zaWMuCiAgICAgTGVuZ3RoIGxvZ2ljYWxXaWR0aCA9ICh3aWR0
aFR5cGUgPT0gTWF4U2l6ZSkgPyBzdHlsZSgpLmxvZ2ljYWxNYXhXaWR0aCgpIDogc3R5bGUoKS5s
b2dpY2FsV2lkdGgoKTsKLSAgICBpZiAobG9naWNhbFdpZHRoLnR5cGUoKSA9PSBJbnRyaW5zaWMp
CisgICAgaWYgKGxvZ2ljYWxXaWR0aC50eXBlKCkgPT0gTGVuZ3RoVHlwZTo6SW50cmluc2ljKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoaWxkcmVuIG9mIGEgaG9yaXpvbnRhbCBt
YXJxdWVlIGRvIG5vdCBmaWxsIHRoZSBjb250YWluZXIgYnkgZGVmYXVsdC4KQEAgLTI3NDksNyAr
Mjc0OSw3IEBAIGJvb2wgUmVuZGVyQm94OjpzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVudChT
aXplVHlwZSB3aWR0aFR5cGUpIGNvbnN0CiAgICAgLy8gc3RyZXRjaGluZyBjb2x1bW4gZmxleGJv
eC4KICAgICAvLyBGSVhNRTogVGhpbmsgYWJvdXQgYmxvY2stZmxvdyBoZXJlLgogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQ3MwotICAgIGlmIChsb2dp
Y2FsV2lkdGgudHlwZSgpID09IEF1dG8gJiYgIWlzU3RyZXRjaGluZ0NvbHVtbkZsZXhJdGVtKCkg
JiYgZWxlbWVudCgpICYmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCgpKSB8fCBpczxI
VE1MU2VsZWN0RWxlbWVudD4oKmVsZW1lbnQoKSkgfHwgaXM8SFRNTEJ1dHRvbkVsZW1lbnQ+KCpl
bGVtZW50KCkpIHx8IGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCplbGVtZW50KCkpIHx8IGlzPEhU
TUxMZWdlbmRFbGVtZW50PigqZWxlbWVudCgpKSkpCisgICAgaWYgKGxvZ2ljYWxXaWR0aC5pc0F1
dG8oKSAmJiAhaXNTdHJldGNoaW5nQ29sdW1uRmxleEl0ZW0oKSAmJiBlbGVtZW50KCkgJiYgKGlz
PEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KCkpIHx8IGlzPEhUTUxTZWxlY3RFbGVtZW50Pigq
ZWxlbWVudCgpKSB8fCBpczxIVE1MQnV0dG9uRWxlbWVudD4oKmVsZW1lbnQoKSkgfHwgaXM8SFRN
TFRleHRBcmVhRWxlbWVudD4oKmVsZW1lbnQoKSkgfHwgaXM8SFRNTExlZ2VuZEVsZW1lbnQ+KCpl
bGVtZW50KCkpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSAhPSBjb250YWluaW5nQmxvY2soKS0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkKQEAgLTI3NzcsOSArMjc3Nyw5IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5l
RGlyZWN0aW9uTWFyZ2lucyhjb25zdCBSZW5kZXJCbG9jayYgY29udGFpbmluZ0Jsb2NrCiAgICAg
ICAgIC8vIHdpbGwgdGhpbmsgd2UncmUgd2lkZXIgdGhhbiB3ZSBhY3R1YWxseSBhcmUgYW5kIGNh
bGN1bGF0ZSBsaW5lIHNpemVzCiAgICAgICAgIC8vIHdyb25nLiBTZWUgYWxzbyBodHRwOi8vZGV2
LnczLm9yZy9jc3N3Zy9jc3MtZmxleGJveC8jYXV0by1tYXJnaW5zCiAgICAgICAgIGlmIChtYXJn
aW5TdGFydExlbmd0aC5pc0F1dG8oKSkKLSAgICAgICAgICAgIG1hcmdpblN0YXJ0TGVuZ3RoID0g
TGVuZ3RoKDAsIEZpeGVkKTsKKyAgICAgICAgICAgIG1hcmdpblN0YXJ0TGVuZ3RoID0gTGVuZ3Ro
KDAsIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICAgICAgaWYgKG1hcmdpbkVuZExlbmd0aC5pc0F1
dG8oKSkKLSAgICAgICAgICAgIG1hcmdpbkVuZExlbmd0aCA9IExlbmd0aCgwLCBGaXhlZCk7Cisg
ICAgICAgICAgICBtYXJnaW5FbmRMZW5ndGggPSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQp
OwogICAgIH0KIAogICAgIC8vIENhc2UgT25lOiBUaGUgb2JqZWN0IGlzIGJlaW5nIGNlbnRlcmVk
IGluIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgYXZhaWxhYmxlIGxvZ2ljYWwgd2lkdGguCkBAIC0y
OTI0LDkgKzI5MjQsOSBAQCBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBS
ZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaQogICAgICAgICAvLyBGSVhN
RTogQWNjb3VudCBmb3IgYmxvY2stZmxvdyBpbiBmbGV4aWJsZSBib3hlcy4KICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NDE4CiAgICAgICAgIGlm
IChoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpICYmIChwYXJlbnQoKS0+aXNGbGV4aWJsZUJv
eEluY2x1ZGluZ0RlcHJlY2F0ZWQoKSB8fCBwYXJlbnQoKS0+aXNSZW5kZXJHcmlkKCkpKSB7Ci0g
ICAgICAgICAgICBoID0gTGVuZ3RoKG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCksIEZpeGVkKTsK
KyAgICAgICAgICAgIGggPSBMZW5ndGgob3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpOwogICAgICAgICB9IGVsc2UgaWYgKHRyZWF0QXNSZXBsYWNlZCkKLSAgICAg
ICAgICAgIGggPSBMZW5ndGgoY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgpICsgYm9yZGVy
QW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwgRml4ZWQpOworICAgICAgICAgICAgaCA9IExlbmd0
aChjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkgKyBib3JkZXJBbmRQYWRkaW5nTG9naWNh
bEhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgaCA9IHN0eWxlKCkubG9naWNhbEhlaWdodCgpOwogICAgICAgICAgICAgY2hlY2tNaW5NYXhI
ZWlnaHQgPSB0cnVlOwpAQCAtMjkzNyw3ICsyOTM3LDcgQEAgUmVuZGVyQm94OjpMb2dpY2FsRXh0
ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bmkKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
NDE4CiAgICAgICAgIGlmIChoLmlzQXV0bygpICYmIGlzPFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveD4oKnBhcmVudCgpKSAmJiBwYXJlbnQoKS0+c3R5bGUoKS5ib3hPcmllbnQoKSA9PSBCb3hP
cmllbnQ6Okhvcml6b250YWwKICAgICAgICAgICAgICAgICAmJiBkb3duY2FzdDxSZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3g+KCpwYXJlbnQoKSkuaXNTdHJldGNoaW5nQ2hpbGRyZW4oKSkgewot
ICAgICAgICAgICAgaCA9IExlbmd0aChwYXJlbnRCb3goKS0+Y29udGVudExvZ2ljYWxIZWlnaHQo
KSAtIG1hcmdpbkJlZm9yZSgpIC0gbWFyZ2luQWZ0ZXIoKSwgRml4ZWQpOworICAgICAgICAgICAg
aCA9IExlbmd0aChwYXJlbnRCb3goKS0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSAtIG1hcmdpbkJl
Zm9yZSgpIC0gbWFyZ2luQWZ0ZXIoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgICAgICAgICAg
Y2hlY2tNaW5NYXhIZWlnaHQgPSBmYWxzZTsKICAgICAgICAgfQogCkBAIC0zMTY4LDM3ICszMTY4
LDM3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhV
c2luZyhTaXplVHlwZSB3aWR0aFR5cGUsIExlbmd0CiAgICAgICAgIHJldHVybiBhZGp1c3RDb250
ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKDAsIGxvZ2ljYWxXaWR0aC50eXBlKCkpOwog
CiAgICAgc3dpdGNoIChsb2dpY2FsV2lkdGgudHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgRml4ZWQ6
Ci0gICAgICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNp
emluZyhsb2dpY2FsV2lkdGgpOwotICAgICAgICBjYXNlIE1pbkNvbnRlbnQ6Ci0gICAgICAgIGNh
c2UgTWF4Q29udGVudDogewotICAgICAgICAgICAgLy8gTWluQ29udGVudC9NYXhDb250ZW50IGRv
bid0IG5lZWQgdGhlIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCBhcmd1bWVudC4KLSAgICAgICAgICAg
IExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoOwotICAgICAgICAgICAgcmV0dXJuIGNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyhsb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCwgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpKSAtIGJvcmRlckFuZFBh
ZGRpbmdMb2dpY2FsV2lkdGgoKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEZpdENvbnRlbnQ6
Ci0gICAgICAgIGNhc2UgRmlsbEF2YWlsYWJsZToKLSAgICAgICAgY2FzZSBQZXJjZW50OiAKLSAg
ICAgICAgY2FzZSBDYWxjdWxhdGVkOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogY29udGFpbmlu
Z0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpIGlzIHdyb25nIGlmIHRoZSByZXBsYWNlZCBl
bGVtZW50J3MgYmxvY2stZmxvdyBpcyBwZXJwZW5kaWN1bGFyIHRvIHRoZQotICAgICAgICAgICAg
Ly8gY29udGFpbmluZyBibG9jaydzIGJsb2NrLWZsb3cuCi0gICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTYKLSAgICAgICAgICAgIGNvbnN0
IExheW91dFVuaXQgY3cgPSBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IGNvbnRhaW5pbmdCbG9j
a0xvZ2ljYWxXaWR0aEZvclBvc2l0aW9uZWQoZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+
KCpjb250YWluZXIoKSkpIDogY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgp
OwotICAgICAgICAgICAgTGVuZ3RoIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCA9IGNvbnRhaW5pbmdC
bG9jaygpLT5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpOwotICAgICAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBjYXNlcyB3aGVuIGNvbnRhaW5pbmcgYmxvY2sgd2lkdGggaXMgY2FsY3VsYXRlZCBvciB2
aWV3cG9ydCBwZXJjZW50LgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkxMDcxCi0gICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzSW50
cmluc2ljKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2Fs
V2lkdGhVc2luZyhsb2dpY2FsV2lkdGgsIGN3LCBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRo
KCkpIC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpOwotICAgICAgICAgICAgaWYgKGN3
ID4gMCB8fCAoIWN3ICYmIChjb250YWluZXJMb2dpY2FsV2lkdGguaXNGaXhlZCgpIHx8IGNvbnRh
aW5lckxvZ2ljYWxXaWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIGN3KSwgbG9naWNhbFdpZHRoLnR5cGUoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gMF9sdTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEludHJp
bnNpYzoKLSAgICAgICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgICAgIGNhc2UgQXV0bzoKLSAg
ICAgICAgY2FzZSBSZWxhdGl2ZToKLSAgICAgICAgY2FzZSBVbmRlZmluZWQ6Ci0gICAgICAgICAg
ICByZXR1cm4gaW50cmluc2ljTG9naWNhbFdpZHRoKCk7CisgICAgY2FzZSBMZW5ndGhUeXBlOjpG
aXhlZDoKKyAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hT
aXppbmcobG9naWNhbFdpZHRoKTsKKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQ6Cisg
ICAgY2FzZSBMZW5ndGhUeXBlOjpNYXhDb250ZW50OiB7CisgICAgICAgIC8vIE1pbkNvbnRlbnQv
TWF4Q29udGVudCBkb24ndCBuZWVkIHRoZSBhdmFpbGFibGVMb2dpY2FsV2lkdGggYXJndW1lbnQu
CisgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoOworICAgICAgICByZXR1
cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVzaW5nKGxvZ2ljYWxXaWR0aCwgYXZhaWxh
YmxlTG9naWNhbFdpZHRoLCBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCkpIC0gYm9yZGVy
QW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpOworICAgIH0KKyAgICBjYXNlIExlbmd0aFR5cGU6OkZp
dENvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaWxsQXZhaWxhYmxlOgorICAgIGNhc2Ug
TGVuZ3RoVHlwZTo6UGVyY2VudDoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkNhbGN1bGF0ZWQ6IHsK
KyAgICAgICAgLy8gRklYTUU6IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQo
KSBpcyB3cm9uZyBpZiB0aGUgcmVwbGFjZWQgZWxlbWVudCdzIGJsb2NrLWZsb3cgaXMgcGVycGVu
ZGljdWxhciB0byB0aGUKKyAgICAgICAgLy8gY29udGFpbmluZyBibG9jaydzIGJsb2NrLWZsb3cu
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQ5
NgorICAgICAgICBjb25zdCBMYXlvdXRVbml0IGN3ID0gaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkg
PyBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKGRvd25jYXN0PFJlbmRl
ckJveE1vZGVsT2JqZWN0PigqY29udGFpbmVyKCkpKSA6IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxX
aWR0aEZvckNvbnRlbnQoKTsKKyAgICAgICAgTGVuZ3RoIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCA9
IGNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpOworICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIGNhc2VzIHdoZW4gY29udGFpbmluZyBibG9jayB3aWR0aCBpcyBjYWxjdWxh
dGVkIG9yIHZpZXdwb3J0IHBlcmNlbnQuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MTA3MQorICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzSW50
cmluc2ljKCkpCisgICAgICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aFVzaW5nKGxvZ2ljYWxXaWR0aCwgY3csIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSkg
LSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CisgICAgICAgIGlmIChjdyA+IDAgfHwg
KCFjdyAmJiAoY29udGFpbmVyTG9naWNhbFdpZHRoLmlzRml4ZWQoKSB8fCBjb250YWluZXJMb2dp
Y2FsV2lkdGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpKSkKKyAgICAgICAgICAgIHJldHVybiBh
ZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKG1pbmltdW1WYWx1ZUZvckxl
bmd0aChsb2dpY2FsV2lkdGgsIGN3KSwgbG9naWNhbFdpZHRoLnR5cGUoKSk7CisgICAgICAgIHJl
dHVybiAwX2x1OworICAgIH0KKyAgICBjYXNlIExlbmd0aFR5cGU6OkludHJpbnNpYzoKKyAgICBj
YXNlIExlbmd0aFR5cGU6Ok1pbkludHJpbnNpYzoKKyAgICBjYXNlIExlbmd0aFR5cGU6OkF1dG86
CisgICAgY2FzZSBMZW5ndGhUeXBlOjpSZWxhdGl2ZToKKyAgICBjYXNlIExlbmd0aFR5cGU6OlVu
ZGVmaW5lZDoKKyAgICAgICAgcmV0dXJuIGludHJpbnNpY0xvZ2ljYWxXaWR0aCgpOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzI3OSw3NyArMzI3OSw3NiBAQCBMYXlv
dXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKFNpemVU
eXBlIGhlaWdodFR5cGUsIExlbgogICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2lj
YWxIZWlnaHRGb3JCb3hTaXppbmcoT3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkpOwogCiAgICAgc3dp
dGNoIChsb2dpY2FsSGVpZ2h0LnR5cGUoKSkgewotICAgICAgICBjYXNlIEZpeGVkOgotICAgICAg
ICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKExh
eW91dFVuaXQobG9naWNhbEhlaWdodC52YWx1ZSgpKSk7Ci0gICAgICAgIGNhc2UgUGVyY2VudDoK
LSAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvKiBj
b250YWluZXIgPSBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IHRoaXMtPmNvbnRhaW5lcigpIDog
Y29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY29udGFpbmVyICYmIGNvbnRh
aW5lci0+aXNBbm9ueW1vdXMoKSkgewotICAgICAgICAgICAgICAgIC8vIFN0b3AgYXQgcmVuZGVy
aW5nIGNvbnRleHQgcm9vdC4KLSAgICAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyVmlldz4oKmNv
bnRhaW5lcikpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNv
bnRhaW5lciA9IGNvbnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBib29sIGhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2sgPSBjb250YWlu
ZXItPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KTsKLSAgICAgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHN0cmV0Y2hlZEhlaWdodDsKLSAg
ICAgICAgICAgIGlmIChpczxSZW5kZXJCbG9jaz4oY29udGFpbmVyKSkgewotICAgICAgICAgICAg
ICAgIGF1dG8qIGJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KGNvbnRhaW5lcik7Ci0gICAg
ICAgICAgICAgICAgYmxvY2stPmFkZFBlcmNlbnRIZWlnaHREZXNjZW5kYW50KCpjb25zdF9jYXN0
PFJlbmRlckJveCo+KHRoaXMpKTsKLSAgICAgICAgICAgICAgICBpZiAoYmxvY2stPmlzRmxleEl0
ZW0oKSkKLSAgICAgICAgICAgICAgICAgICAgc3RyZXRjaGVkSGVpZ2h0ID0gZG93bmNhc3Q8UmVu
ZGVyRmxleGlibGVCb3g+KGJsb2NrLT5wYXJlbnQoKSktPmNoaWxkTG9naWNhbEhlaWdodEZvclBl
cmNlbnRhZ2VSZXNvbHV0aW9uKCpibG9jayk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYmxv
Y2stPmlzR3JpZEl0ZW0oKSAmJiBibG9jay0+aGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSAm
JiAhaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jaykKLSAgICAgICAgICAgICAgICAgICAg
c3RyZXRjaGVkSGVpZ2h0ID0gYmxvY2stPm92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdodCgp
OwotICAgICAgICAgICAgfQorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CisgICAgICAgIHJl
dHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0
KGxvZ2ljYWxIZWlnaHQudmFsdWUoKSkpOworICAgIGNhc2UgTGVuZ3RoVHlwZTo6UGVyY2VudDoK
KyAgICBjYXNlIExlbmd0aFR5cGU6OkNhbGN1bGF0ZWQ6IHsKKyAgICAgICAgYXV0byogY29udGFp
bmVyID0gaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgPyB0aGlzLT5jb250YWluZXIoKSA6IGNvbnRh
aW5pbmdCbG9jaygpOworICAgICAgICB3aGlsZSAoY29udGFpbmVyICYmIGNvbnRhaW5lci0+aXNB
bm9ueW1vdXMoKSkgeworICAgICAgICAgICAgLy8gU3RvcCBhdCByZW5kZXJpbmcgY29udGV4dCBy
b290LgorICAgICAgICAgICAgaWYgKGlzPFJlbmRlclZpZXc+KCpjb250YWluZXIpKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250
YWluaW5nQmxvY2soKTsKKyAgICAgICAgfQorICAgICAgICBib29sIGhhc1BlcnBlbmRpY3VsYXJD
b250YWluaW5nQmxvY2sgPSBjb250YWluZXItPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKKyAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
c3RyZXRjaGVkSGVpZ2h0OworICAgICAgICBpZiAoaXM8UmVuZGVyQmxvY2s+KGNvbnRhaW5lcikp
IHsKKyAgICAgICAgICAgIGF1dG8qIGJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KGNvbnRh
aW5lcik7CisgICAgICAgICAgICBibG9jay0+YWRkUGVyY2VudEhlaWdodERlc2NlbmRhbnQoKmNv
bnN0X2Nhc3Q8UmVuZGVyQm94Kj4odGhpcykpOworICAgICAgICAgICAgaWYgKGJsb2NrLT5pc0Zs
ZXhJdGVtKCkpCisgICAgICAgICAgICAgICAgc3RyZXRjaGVkSGVpZ2h0ID0gZG93bmNhc3Q8UmVu
ZGVyRmxleGlibGVCb3g+KGJsb2NrLT5wYXJlbnQoKSktPmNoaWxkTG9naWNhbEhlaWdodEZvclBl
cmNlbnRhZ2VSZXNvbHV0aW9uKCpibG9jayk7CisgICAgICAgICAgICBlbHNlIGlmIChibG9jay0+
aXNHcmlkSXRlbSgpICYmIGJsb2NrLT5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpICYmICFo
YXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrKQorICAgICAgICAgICAgICAgIHN0cmV0Y2hl
ZEhlaWdodCA9IGJsb2NrLT5vdmVycmlkaW5nQ29udGVudExvZ2ljYWxIZWlnaHQoKTsKKyAgICAg
ICAgfQogCi0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWxjdWxhdGlvbiBpcyBub3QgcGF0
Y2hlZCBmb3IgYmxvY2stZmxvdyB5ZXQuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1MDAKLSAgICAgICAgICAgIGlmIChjb250YWluZXIt
PmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpCi0gICAgICAgICAgICAgICAgJiYgY29udGFpbmVyLT5z
dHlsZSgpLmhlaWdodCgpLmlzQXV0bygpCi0gICAgICAgICAgICAgICAgJiYgIShjb250YWluZXIt
PnN0eWxlKCkudG9wKCkuaXNBdXRvKCkgfHwgY29udGFpbmVyLT5zdHlsZSgpLmJvdHRvbSgpLmlz
QXV0bygpKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGNvbnRhaW5lci0+aXNSZW5kZXJCbG9jaygpKTsKLSAgICAgICAgICAgICAgICBhdXRvJiBi
bG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrPigqY29udGFpbmVyKTsKLSAgICAgICAgICAgICAg
ICBhdXRvIGNvbXB1dGVkVmFsdWVzID0gYmxvY2suY29tcHV0ZUxvZ2ljYWxIZWlnaHQoYmxvY2su
bG9naWNhbEhlaWdodCgpLCAwKTsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IG5ld0NvbnRl
bnRIZWlnaHQgPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAtIGJsb2NrLmJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsSGVpZ2h0KCkgLSBibG9jay5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6
aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxIZWlnaHQsIG5ld0NvbnRlbnRIZWlnaHQpKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gRklYTUU6IGF2YWlsYWJs
ZUxvZ2ljYWxIZWlnaHQoKSBpcyB3cm9uZyBpZiB0aGUgcmVwbGFjZWQgZWxlbWVudCdzIGJsb2Nr
LWZsb3cgaXMgcGVycGVuZGljdWxhciB0byB0aGUKLSAgICAgICAgICAgIC8vIGNvbnRhaW5pbmcg
YmxvY2sncyBibG9jay1mbG93LgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ2NDk2Ci0gICAgICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJs
ZUhlaWdodDsKLSAgICAgICAgICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAg
ICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0
Rm9yUG9zaXRpb25lZChkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKmNvbnRhaW5lcikp
OwotICAgICAgICAgICAgZWxzZSBpZiAoc3RyZXRjaGVkSGVpZ2h0KQotICAgICAgICAgICAgICAg
IGF2YWlsYWJsZUhlaWdodCA9IHN0cmV0Y2hlZEhlaWdodC52YWx1ZSgpOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gaGFzUGVycGVuZGljdWxh
ckNvbnRhaW5pbmdCbG9jayA/IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQo
KSA6IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRGb3JDb250ZW50KEluY2x1ZGVNYXJnaW5C
b3JkZXJQYWRkaW5nKTsKLSAgICAgICAgICAgICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gdXNl
IHRoZSBib3JkZXItYm94IHRvIG1hdGNoIFdpbklFJ3MgYnJva2VuCi0gICAgICAgICAgICAgICAg
Ly8gYm94IG1vZGVsLiAgVGhpcyBpcyBlc3NlbnRpYWwgZm9yIHNpemluZyBpbnNpZGUKLSAgICAg
ICAgICAgICAgICAvLyB0YWJsZSBjZWxscyB1c2luZyBwZXJjZW50YWdlIGhlaWdodHMuCi0gICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgbWFkZSBibG9jay1mbG93LWF3
YXJlLiAgSWYgdGhlIGNlbGwgYW5kIGltYWdlIGFyZSBwZXJwZW5kaWN1bGFyIGJsb2NrLWZsb3dz
LCB0aGlzIGlzbid0IHJpZ2h0LgotICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njk5NwotICAgICAgICAgICAgICAgIHdoaWxlIChjb250
YWluZXIgJiYgIWlzPFJlbmRlclZpZXc+KCpjb250YWluZXIpCi0gICAgICAgICAgICAgICAgICAg
ICYmIChjb250YWluZXItPnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpIHx8IGNvbnRh
aW5lci0+c3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluZXItPmlzVGFibGVDZWxsKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGxldCB0YWJsZSBjZWxscyBzcXVlZXplIHBl
cmNlbnQtaGVpZ2h0IHJlcGxhY2VkIGVsZW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTk+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBzdGQ6Om1heChhdmFpbGFibGVIZWln
aHQsIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWVGb3JMZW5ndGgobG9naWNhbEhlaWdodCwgYXZhaWxhYmxlSGVpZ2h0IC0gYm9y
ZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpjb250YWluZXIpLmFkZFBl
cmNlbnRIZWlnaHREZXNjZW5kYW50KGNvbnN0X2Nhc3Q8UmVuZGVyQm94Jj4oKnRoaXMpKTsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250YWluaW5nQmxvY2so
KTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FsY3VsYXRpb24gaXMgbm90IHBhdGNoZWQgZm9y
IGJsb2NrLWZsb3cgeWV0LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDY1MDAKKyAgICAgICAgaWYgKGNvbnRhaW5lci0+aXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkKKyAgICAgICAgICAgICYmIGNvbnRhaW5lci0+c3R5bGUoKS5oZWlnaHQoKS5pc0F1
dG8oKQorICAgICAgICAgICAgJiYgIShjb250YWluZXItPnN0eWxlKCkudG9wKCkuaXNBdXRvKCkg
fHwgY29udGFpbmVyLT5zdHlsZSgpLmJvdHRvbSgpLmlzQXV0bygpKSkgeworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250YWluZXItPmlzUmVu
ZGVyQmxvY2soKSk7CisgICAgICAgICAgICBhdXRvJiBibG9jayA9IGRvd25jYXN0PFJlbmRlckJs
b2NrPigqY29udGFpbmVyKTsKKyAgICAgICAgICAgIGF1dG8gY29tcHV0ZWRWYWx1ZXMgPSBibG9j
ay5jb21wdXRlTG9naWNhbEhlaWdodChibG9jay5sb2dpY2FsSGVpZ2h0KCksIDApOworICAgICAg
ICAgICAgTGF5b3V0VW5pdCBuZXdDb250ZW50SGVpZ2h0ID0gY29tcHV0ZWRWYWx1ZXMubV9leHRl
bnQgLSBibG9jay5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpIC0gYmxvY2suc2Nyb2xs
YmFyTG9naWNhbEhlaWdodCgpOworICAgICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hM
b2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxIZWlnaHQsIG5l
d0NvbnRlbnRIZWlnaHQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gRklYTUU6
IGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoKSBpcyB3cm9uZyBpZiB0aGUgcmVwbGFjZWQgZWxlbWVu
dCdzIGJsb2NrLWZsb3cgaXMgcGVycGVuZGljdWxhciB0byB0aGUKKyAgICAgICAgLy8gY29udGFp
bmluZyBibG9jaydzIGJsb2NrLWZsb3cuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjQ5NgorICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUhl
aWdodDsKKyAgICAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICAgICAg
YXZhaWxhYmxlSGVpZ2h0ID0gY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvclBvc2l0aW9u
ZWQoZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpjb250YWluZXIpKTsKKyAgICAgICAg
ZWxzZSBpZiAoc3RyZXRjaGVkSGVpZ2h0KQorICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0g
c3RyZXRjaGVkSGVpZ2h0LnZhbHVlKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXZh
aWxhYmxlSGVpZ2h0ID0gaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jayA/IGNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSA6IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxI
ZWlnaHRGb3JDb250ZW50KEluY2x1ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKTsKKyAgICAgICAgICAg
IC8vIEl0IGlzIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGJvcmRlci1ib3ggdG8gbWF0Y2ggV2luSUUn
cyBicm9rZW4KKyAgICAgICAgICAgIC8vIGJveCBtb2RlbC4gVGhpcyBpcyBlc3NlbnRpYWwgZm9y
IHNpemluZyBpbnNpZGUKKyAgICAgICAgICAgIC8vIHRhYmxlIGNlbGxzIHVzaW5nIHBlcmNlbnRh
Z2UgaGVpZ2h0cy4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIG1hZGUg
YmxvY2stZmxvdy1hd2FyZS4gSWYgdGhlIGNlbGwgYW5kIGltYWdlIGFyZSBwZXJwZW5kaWN1bGFy
IGJsb2NrLWZsb3dzLCB0aGlzIGlzbid0IHJpZ2h0LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2OTk3CisgICAgICAgICAgICB3aGlsZSAo
Y29udGFpbmVyICYmICFpczxSZW5kZXJWaWV3PigqY29udGFpbmVyKQorICAgICAgICAgICAgICAg
ICYmIChjb250YWluZXItPnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpIHx8IGNvbnRh
aW5lci0+c3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lci0+aXNUYWJsZUNlbGwoKSkgeworICAgICAg
ICAgICAgICAgICAgICAvLyBEb24ndCBsZXQgdGFibGUgY2VsbHMgc3F1ZWV6ZSBwZXJjZW50LWhl
aWdodCByZXBsYWNlZCBlbGVtZW50cworICAgICAgICAgICAgICAgICAgICAvLyA8aHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTk+CisgICAgICAgICAgICAgICAgICAg
IGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6bWF4KGF2YWlsYWJsZUhlaWdodCwgaW50cmluc2ljTG9n
aWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3Ro
KGxvZ2ljYWxIZWlnaHQsIGF2YWlsYWJsZUhlaWdodCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2Fs
SGVpZ2h0KCkpOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkb3duY2FzdDxS
ZW5kZXJCbG9jaz4oKmNvbnRhaW5lcikuYWRkUGVyY2VudEhlaWdodERlc2NlbmRhbnQoY29uc3Rf
Y2FzdDxSZW5kZXJCb3gmPigqdGhpcykpOworICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9IGNv
bnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcodmFsdWVGb3JM
ZW5ndGgobG9naWNhbEhlaWdodCwgYXZhaWxhYmxlSGVpZ2h0KSk7CiAgICAgICAgIH0KLSAgICAg
ICAgY2FzZSBNaW5Db250ZW50OgotICAgICAgICBjYXNlIE1heENvbnRlbnQ6Ci0gICAgICAgIGNh
c2UgRml0Q29udGVudDoKLSAgICAgICAgY2FzZSBGaWxsQXZhaWxhYmxlOgotICAgICAgICAgICAg
cmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGNvbXB1dGVJ
bnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKGxvZ2ljYWxIZWlnaHQsIGludHJpbnNp
Y0xvZ2ljYWxIZWlnaHQoKSwgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSkpOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQo
KTsKKyAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6
aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxIZWlnaHQsIGF2YWlsYWJsZUhlaWdodCkpOworICAg
IH0KKyAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQ6CisgICAgY2FzZSBMZW5ndGhUeXBl
OjpNYXhDb250ZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml0Q29udGVudDoKKyAgICBjYXNl
IExlbmd0aFR5cGU6OkZpbGxBdmFpbGFibGU6CisgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50
Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRl
bnRIZWlnaHRVc2luZyhsb2dpY2FsSGVpZ2h0LCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCksIGJv
cmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gaW50cmluc2ljTG9naWNhbEhlaWdodCgpOwogICAgIH0KIH0KIApAQCAtMzU1NSw5ICsz
NTU0LDkgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUlubGluZVN0YXRpY0Rpc3RhbmNlKExlbmd0aCYg
bG9naWNhbExlZnQsIExlbmd0aCYgbG9naWNhbFJpZ2gKICAgICAvLyB0aGVtIChkZXBlbmRpbmcg
b24gdGhlIGRpcmVjdGlvbikgaXMgc2ltcGx5ICIwIi4KICAgICBpZiAocGFyZW50LT5pc1JlbmRl
ckdyaWQoKSAmJiBwYXJlbnQgPT0gY2hpbGQtPmNvbnRhaW5pbmdCbG9jaygpKSB7CiAgICAgICAg
IGlmIChwYXJlbnREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKQotICAgICAgICAgICAg
bG9naWNhbExlZnQuc2V0VmFsdWUoRml4ZWQsIDApOworICAgICAgICAgICAgbG9naWNhbExlZnQu
c2V0VmFsdWUoTGVuZ3RoVHlwZTo6Rml4ZWQsIDApOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBsb2dpY2FsUmlnaHQuc2V0VmFsdWUoRml4ZWQsIDApOworICAgICAgICAgICAgbG9naWNhbFJp
Z2h0LnNldFZhbHVlKExlbmd0aFR5cGU6OkZpeGVkLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMzU3OSwxMiArMzU3OCwxMiBAQCBzdGF0aWMgdm9pZCBjb21wdXRlSW5saW5lU3Rh
dGljRGlzdGFuY2UoTGVuZ3RoJiBsb2dpY2FsTGVmdCwgTGVuZ3RoJiBsb2dpY2FsUmlnaAogICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNQb3NpdGlvbiArPSBib3hJbmZvLT5sb2dpY2FsTGVmdCgp
OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGxvZ2ljYWxMZWZ0LnNldFZhbHVl
KEZpeGVkLCBzdGF0aWNQb3NpdGlvbik7CisgICAgICAgIGxvZ2ljYWxMZWZ0LnNldFZhbHVlKExl
bmd0aFR5cGU6OkZpeGVkLCBzdGF0aWNQb3NpdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
TGF5b3V0VW5pdCBzdGF0aWNQb3NpdGlvbiA9IGNoaWxkLT5sYXllcigpLT5zdGF0aWNJbmxpbmVQ
b3NpdGlvbigpICsgY29udGFpbmVyTG9naWNhbFdpZHRoICsgY29udGFpbmVyQmxvY2suYm9yZGVy
TG9naWNhbExlZnQoKTsKICAgICAgICAgYXV0byYgZW5jbG9zaW5nQm94ID0gcGFyZW50LT5lbmNs
b3NpbmdCb3goKTsKICAgICAgICAgaWYgKCZlbmNsb3NpbmdCb3ggIT0gJmNvbnRhaW5lckJsb2Nr
ICYmIGNvbnRhaW5lckJsb2NrLmlzRGVzY2VuZGFudE9mKCZlbmNsb3NpbmdCb3gpKSB7Ci0gICAg
ICAgICAgICBsb2dpY2FsUmlnaHQuc2V0VmFsdWUoRml4ZWQsIHN0YXRpY1Bvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGxvZ2ljYWxSaWdodC5zZXRWYWx1ZShMZW5ndGhUeXBlOjpGaXhlZCwgc3RhdGlj
UG9zaXRpb24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTM2MTMsNyAr
MzYxMiw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZShMZW5ndGgm
IGxvZ2ljYWxMZWZ0LCBMZW5ndGgmIGxvZ2ljYWxSaWdoCiAgICAgICAgICAgICBpZiAoY3VycmVu
dCA9PSAmY29udGFpbmVyQmxvY2spCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgbG9naWNhbFJpZ2h0LnNldFZhbHVlKEZpeGVkLCBzdGF0aWNQb3NpdGlvbik7Cisg
ICAgICAgIGxvZ2ljYWxSaWdodC5zZXRWYWx1ZShMZW5ndGhUeXBlOjpGaXhlZCwgc3RhdGljUG9z
aXRpb24pOwogICAgIH0KIH0KIApAQCAtMzcxMCw3ICszNzA5LDcgQEAgdm9pZCBSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVl
cyYgY29tcHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhW
YWx1ZXMpOwogICAgIH0KICAgICBpZiAodHJhbnNmZXJyZWRNYXhTaXplIDwgbWF4VmFsdWVzLm1f
ZXh0ZW50KSB7Ci0gICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTWF4
U2l6ZSwgTGVuZ3RoKHRyYW5zZmVycmVkTWF4U2l6ZSwgRml4ZWQpLCBjb250YWluZXJCbG9jaywg
Y29udGFpbmVyRGlyZWN0aW9uLAorICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0
aFVzaW5nKE1heFNpemUsIExlbmd0aCh0cmFuc2ZlcnJlZE1heFNpemUsIExlbmd0aFR5cGU6OkZp
eGVkKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAgIGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgbG9n
aWNhbExlZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1h
cmdpbkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgIG1heFZhbHVlcyk7CkBAIC0zNzMyLDcgKzM3
MzEsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgoTG9n
aWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdQogICAgICAgICAgICAgbWluVmFsdWVzKTsK
ICAgICB9CiAgICAgaWYgKHRyYW5zZmVycmVkTWluU2l6ZSA+IG1pblZhbHVlcy5tX2V4dGVudCkg
ewotICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKE1pblNpemUsIExl
bmd0aCh0cmFuc2ZlcnJlZE1pblNpemUsIEZpeGVkKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5l
ckRpcmVjdGlvbiwKKyAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhN
aW5TaXplLCBMZW5ndGgodHJhbnNmZXJyZWRNaW5TaXplLCBMZW5ndGhUeXBlOjpGaXhlZCksIGNv
bnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJzUGx1c1Bh
ZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNh
bExlZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1hcmdp
bkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtaW5WYWx1ZXMpOwpAQCAtMzc5MywxMyArMzc5MiwxMyBAQCB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhTaXplVHlwZSB3aWR0aFR5cGUsIExlbmd0
aCBsbwogICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2FsV2lkdGg7CiAgICAgICAgICAg
ICBMYXlvdXRVbml0IG1heExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgIGNvbXB1dGVJbnRyaW5z
aWNMb2dpY2FsV2lkdGhzKG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKLSAgICAg
ICAgICAgIGxvZ2ljYWxXaWR0aCA9IExlbmd0aChtaW5Mb2dpY2FsV2lkdGgsIEZpeGVkKTsKKyAg
ICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IExlbmd0aChtaW5Mb2dpY2FsV2lkdGgsIExlbmd0aFR5
cGU6OkZpeGVkKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBsb2dpY2FsV2lkdGggPSBM
ZW5ndGgoMCwgRml4ZWQpOworICAgICAgICAgICAgbG9naWNhbFdpZHRoID0gTGVuZ3RoKDAsIExl
bmd0aFR5cGU6OkZpeGVkKTsKICAgICB9IGVsc2UgaWYgKHdpZHRoVHlwZSA9PSBNYWluT3JQcmVm
ZXJyZWRTaXplICYmIGxvZ2ljYWxXaWR0aC5pc0F1dG8oKSAmJiBzaG91bGRDb21wdXRlTG9naWNh
bFdpZHRoRnJvbUFzcGVjdFJhdGlvKCkpCi0gICAgICAgIGxvZ2ljYWxXaWR0aCA9IExlbmd0aChj
b21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvKCksIEZpeGVkKTsKKyAgICAgICAgbG9n
aWNhbFdpZHRoID0gTGVuZ3RoKGNvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8oKSwg
TGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgIGVsc2UgaWYgKGxvZ2ljYWxXaWR0aC5pc0ludHJpbnNp
YygpKQotICAgICAgICBsb2dpY2FsV2lkdGggPSBMZW5ndGgoY29tcHV0ZUludHJpbnNpY0xvZ2lj
YWxXaWR0aFVzaW5nKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJz
UGx1c1BhZGRpbmcpIC0gYm9yZGVyc1BsdXNQYWRkaW5nLCBGaXhlZCk7CisgICAgICAgIGxvZ2lj
YWxXaWR0aCA9IExlbmd0aChjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcobG9naWNh
bFdpZHRoLCBjb250YWluZXJMb2dpY2FsV2lkdGgsIGJvcmRlcnNQbHVzUGFkZGluZykgLSBib3Jk
ZXJzUGx1c1BhZGRpbmcsIExlbmd0aFR5cGU6OkZpeGVkKTsKIAogICAgIC8vICdsZWZ0JyBhbmQg
J3JpZ2h0JyBjYW5ub3QgYm90aCBiZSAnYXV0bycgYmVjYXVzZSBvbmUgd291bGQgb2YgYmVlbgog
ICAgIC8vIGNvbnZlcnRlZCB0byB0aGUgc3RhdGljIHBvc2l0aW9uIGFscmVhZHkKQEAgLTM5OTEs
NyArMzk5MCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVCbG9ja1N0YXRpY0Rpc3RhbmNlKExlbmd0
aCYgbG9naWNhbFRvcCwgTGVuZ3RoJiBsb2dpY2FsQm90dG9tCiAgICAgICAgIGlmIChyZW5kZXJC
b3guaXNJbkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBzdGF0aWNMb2dpY2FsVG9wICs9
IHJlbmRlckJveC5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVuZGVyQm94Lm9mZnNldEZv
ckluRmxvd1Bvc2l0aW9uKCkuaGVpZ2h0KCkgOiByZW5kZXJCb3gub2Zmc2V0Rm9ySW5GbG93UG9z
aXRpb24oKS53aWR0aCgpOwogICAgIH0KLSAgICBsb2dpY2FsVG9wLnNldFZhbHVlKEZpeGVkLCBz
dGF0aWNMb2dpY2FsVG9wKTsKKyAgICBsb2dpY2FsVG9wLnNldFZhbHVlKExlbmd0aFR5cGU6OkZp
eGVkLCBzdGF0aWNMb2dpY2FsVG9wKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbEhlaWdodChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVk
VmFsdWVzKSBjb25zdApAQCAtNDEzNSw5ICs0MTM0LDkgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIExlbmd0
aAogICAgIEFTU0VSVChoZWlnaHRUeXBlID09IE1pblNpemUgfHwgaGVpZ2h0VHlwZSA9PSBNYWlu
T3JQcmVmZXJyZWRTaXplIHx8ICFsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzQXV0bygpKTsKICAgICBp
ZiAoaGVpZ2h0VHlwZSA9PSBNaW5TaXplICYmIGxvZ2ljYWxIZWlnaHRMZW5ndGguaXNBdXRvKCkp
IHsKICAgICAgICAgaWYgKHNob3VsZENvbXB1dGVMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlv
KCkpCi0gICAgICAgICAgICBsb2dpY2FsSGVpZ2h0TGVuZ3RoID0gTGVuZ3RoKGxvZ2ljYWxIZWln
aHQsIEZpeGVkKTsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRMZW5ndGggPSBMZW5ndGgobG9n
aWNhbEhlaWdodCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBsb2dpY2FsSGVpZ2h0TGVuZ3RoID0gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICAgICAgICAgIGxv
Z2ljYWxIZWlnaHRMZW5ndGggPSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgIH0K
IAogICAgIC8vICd0b3AnIGFuZCAnYm90dG9tJyBjYW5ub3QgYm90aCBiZSAnYXV0bycgYmVjYXVz
ZSAndG9wIHdvdWxkIG9mIGJlZW4KQEAgLTQzMjIsOSArNDMyMSw5IEBAIHZvaWQgUmVuZGVyQm94
Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkKExvZ2ljYWxFeHRlbnRDb21w
dXRlZFZhbHVlCiAgICAgXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICAgaWYgKGxvZ2ljYWxMZWZ0Lmlz
QXV0bygpIHx8IGxvZ2ljYWxSaWdodC5pc0F1dG8oKSkgewogICAgICAgICBpZiAobWFyZ2luTG9n
aWNhbExlZnQuaXNBdXRvKCkpCi0gICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdC5zZXRWYWx1
ZShGaXhlZCwgMCk7CisgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdC5zZXRWYWx1ZShMZW5n
dGhUeXBlOjpGaXhlZCwgMCk7CiAgICAgICAgIGlmIChtYXJnaW5Mb2dpY2FsUmlnaHQuaXNBdXRv
KCkpCi0gICAgICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHQuc2V0VmFsdWUoRml4ZWQsIDApOwor
ICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0LnNldFZhbHVlKExlbmd0aFR5cGU6OkZpeGVk
LCAwKTsKICAgICB9CiAKICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKQEAgLTQ0ODYsOSArNDQ4NSw5
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNl
ZChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1CiAgICAgLy8gYXV0bywgYnV0IGlmIG9ubHkgdG9w
IGlzIGF1dG8sIHRoaXMgbWFrZXMgc3RlcCA0IGltcG9zc2libGUuCiAgICAgaWYgKGxvZ2ljYWxU
b3AuaXNBdXRvKCkgfHwgbG9naWNhbEJvdHRvbS5pc0F1dG8oKSkgewogICAgICAgICBpZiAobWFy
Z2luQmVmb3JlLmlzQXV0bygpKQotICAgICAgICAgICAgbWFyZ2luQmVmb3JlLnNldFZhbHVlKEZp
eGVkLCAwKTsKKyAgICAgICAgICAgIG1hcmdpbkJlZm9yZS5zZXRWYWx1ZShMZW5ndGhUeXBlOjpG
aXhlZCwgMCk7CiAgICAgICAgIGlmIChtYXJnaW5BZnRlci5pc0F1dG8oKSkKLSAgICAgICAgICAg
IG1hcmdpbkFmdGVyLnNldFZhbHVlKEZpeGVkLCAwKTsKKyAgICAgICAgICAgIG1hcmdpbkFmdGVy
LnNldFZhbHVlKExlbmd0aFR5cGU6OkZpeGVkLCAwKTsKICAgICB9CiAKICAgICAvKi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKlwKQEAgLTQ4MTksNyArNDgxOCw3IEBAIGJvb2wgUmVuZGVyQm94OjpwZXJjZW50YWdl
TG9naWNhbEhlaWdodElzUmVzb2x2YWJsZSgpIGNvbnN0CiB7CiAgICAgLy8gRG8gdGhpcyB0byBh
dm9pZCBkdXBsaWNhdGluZyBhbGwgdGhlIGxvZ2ljIHRoYXQgYWxyZWFkeSBleGlzdHMgd2hlbiBj
b21wdXRpbmcKICAgICAvLyBhbiBhY3R1YWwgcGVyY2VudGFnZSBoZWlnaHQuCi0gICAgTGVuZ3Ro
IGZha2VMZW5ndGgoMTAwLCBQZXJjZW50KTsKKyAgICBMZW5ndGggZmFrZUxlbmd0aCgxMDAsIExl
bmd0aFR5cGU6OlBlcmNlbnQpOwogICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxI
ZWlnaHQoZmFrZUxlbmd0aCkgIT0gV1RGOjpudWxsb3B0OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCmluZGV4IDU3ZjJkZDk4OTRlNzcxNzA5OGQ1OTZlMDdj
MzM0NTkwM2I1OTY3ZTcuLjdlZDgxNWM3NmE0ZTEyOTdhNmQxODZhMzIyMmYwNzUyNmQ3NDRiMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCkBAIC03NCw3ICs3
NCw3IEBAIHZvaWQgUmVuZGVyQnV0dG9uOjp1cGRhdGVBbm9ueW1vdXNDaGlsZFN0eWxlKFJlbmRl
clN0eWxlJiBjaGlsZFN0eWxlKSBjb25zdAogewogICAgIGNoaWxkU3R5bGUuc2V0RmxleEdyb3co
MS4wZik7CiAgICAgLy8gbWluLXdpZHRoOiAwOyBpcyBuZWVkZWQgZm9yIGNvcnJlY3Qgc2hyaW5r
aW5nLgotICAgIGNoaWxkU3R5bGUuc2V0TWluV2lkdGgoTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAg
Y2hpbGRTdHlsZS5zZXRNaW5XaWR0aChMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAg
ICAvLyBVc2UgbWFyZ2luOmF1dG8gaW5zdGVhZCBvZiBhbGlnbi1pdGVtczpjZW50ZXIgdG8gZ2V0
IHNhZmUgY2VudGVyaW5nLCBpLmUuCiAgICAgLy8gd2hlbiB0aGUgY29udGVudCBvdmVyZmxvd3Ms
IHRyZWF0IGl0IHRoZSBzYW1lIGFzIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0LgogICAgIGNoaWxk
U3R5bGUuc2V0TWFyZ2luVG9wKExlbmd0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXggZWIzMTQy
NzQzZDk0Yjc2ZDllYTBhOTZlZDRlMWM3N2U3ZmY0NTZlNS4uNGYyZDFmM2RiMWI3OTAzNTRmZmM2
ODU5ZmMzYmQ3Mjc3NjJmZTE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTExMzMsOSArMTEzMyw5
IEBAIExheW91dFVuaXQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphbGxvd2VkQ2hpbGRG
bGV4KFJlbmRlckJveCogY2hpbGQsIGJvb2wKICAgICAgICAgICAgIExheW91dFVuaXQgd2lkdGgg
PSBjb250ZW50V2lkdGhGb3JDaGlsZChjaGlsZCk7CiAgICAgICAgICAgICBpZiAoIWNoaWxkLT5z
dHlsZSgpLm1heFdpZHRoKCkuaXNVbmRlZmluZWQoKSAmJiBjaGlsZC0+c3R5bGUoKS5tYXhXaWR0
aCgpLmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICBtYXhXaWR0aCA9IGNoaWxkLT5zdHlsZSgp
Lm1heFdpZHRoKCkudmFsdWUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLT5zdHlsZSgp
Lm1heFdpZHRoKCkudHlwZSgpID09IEludHJpbnNpYykKKyAgICAgICAgICAgIGVsc2UgaWYgKGNo
aWxkLT5zdHlsZSgpLm1heFdpZHRoKCkudHlwZSgpID09IExlbmd0aFR5cGU6OkludHJpbnNpYykK
ICAgICAgICAgICAgICAgICBtYXhXaWR0aCA9IGNoaWxkLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lk
dGgoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLT5zdHlsZSgpLm1heFdpZHRoKCkudHlw
ZSgpID09IE1pbkludHJpbnNpYykKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLT5zdHlsZSgp
Lm1heFdpZHRoKCkuaXNNaW5JbnRyaW5zaWMoKSkKICAgICAgICAgICAgICAgICBtYXhXaWR0aCA9
IGNoaWxkLT5taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgICAgIGlmIChtYXhX
aWR0aCA9PSBMYXlvdXRVbml0OjptYXgoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWF4V2lk
dGg7CkBAIC0xMTU4LDExICsxMTU4LDExIEBAIExheW91dFVuaXQgUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94OjphbGxvd2VkQ2hpbGRGbGV4KFJlbmRlckJveCogY2hpbGQsIGJvb2wKICAgICAg
ICAgTGF5b3V0VW5pdCB3aWR0aCA9IGNvbnRlbnRXaWR0aEZvckNoaWxkKGNoaWxkKTsKICAgICAg
ICAgaWYgKGNoaWxkLT5zdHlsZSgpLm1pbldpZHRoKCkuaXNGaXhlZCgpKQogICAgICAgICAgICAg
bWluV2lkdGggPSBjaGlsZC0+c3R5bGUoKS5taW5XaWR0aCgpLnZhbHVlKCk7Ci0gICAgICAgIGVs
c2UgaWYgKGNoaWxkLT5zdHlsZSgpLm1pbldpZHRoKCkudHlwZSgpID09IEludHJpbnNpYykKKyAg
ICAgICAgZWxzZSBpZiAoY2hpbGQtPnN0eWxlKCkubWluV2lkdGgoKS50eXBlKCkgPT0gTGVuZ3Ro
VHlwZTo6SW50cmluc2ljKQogICAgICAgICAgICAgbWluV2lkdGggPSBjaGlsZC0+bWF4UHJlZmVy
cmVkTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgIGVsc2UgaWYgKGNoaWxkLT5zdHlsZSgpLm1pbldp
ZHRoKCkudHlwZSgpID09IE1pbkludHJpbnNpYykKKyAgICAgICAgZWxzZSBpZiAoY2hpbGQtPnN0
eWxlKCkubWluV2lkdGgoKS5pc01pbkludHJpbnNpYygpKQogICAgICAgICAgICAgbWluV2lkdGgg
PSBjaGlsZC0+bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgIGVsc2UgaWYgKGNo
aWxkLT5zdHlsZSgpLm1pbldpZHRoKCkudHlwZSgpID09IEF1dG8pCisgICAgICAgIGVsc2UgaWYg
KGNoaWxkLT5zdHlsZSgpLm1pbldpZHRoKCkuaXNBdXRvKCkpCiAgICAgICAgICAgICBtaW5XaWR0
aCA9IDA7CiAKICAgICAgICAgTGF5b3V0VW5pdCBhbGxvd2VkU2hyaW5rYWdlID0gc3RkOjptaW48
TGF5b3V0VW5pdD4oMCwgbWluV2lkdGggLSB3aWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggODE3MTcyMDdkZmNkN2IzZTFiMDI2MDQ2Y2IyN2Zk
N2VhZWVhNDgxMy4uYjAyYzg4NWE0MDIxOGJkOWNhOTc5OThhNGNhMDliZjg2YTYxNDM0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMjIzOSw3ICsy
MjM5LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpyZXNldEVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93
QW5kQ2hpbGRJbmZvSW5jbHVkaW5nRGVzY2VuZGFudHMKIHN0YXRpYyBSZW5kZXJPYmplY3Q6OkJs
b2NrQ29udGVudEhlaWdodFR5cGUgaW5jbHVkZU5vbkZpeGVkSGVpZ2h0KGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIpCiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVy
ZXIuc3R5bGUoKTsKLSAgICBpZiAoc3R5bGUuaGVpZ2h0KCkudHlwZSgpID09IEZpeGVkKSB7Cisg
ICAgaWYgKHN0eWxlLmhlaWdodCgpLmlzRml4ZWQoKSkgewogICAgICAgICBpZiAoaXM8UmVuZGVy
QmxvY2s+KHJlbmRlcmVyKSkgewogICAgICAgICAgICAgLy8gRm9yIGZpeGVkIGhlaWdodCBzdHls
ZXMsIGlmIHRoZSBvdmVyZmxvdyBzaXplIG9mIHRoZSBlbGVtZW50IHNwaWxscyBvdXQgb2YgdGhl
IHNwZWNpZmllZAogICAgICAgICAgICAgLy8gaGVpZ2h0LCBhc3N1bWUgd2UgY2FuIGFwcGx5IHRl
eHQgYXV0by1zaXppbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcAppbmRleCAyZjI0ZDQzMDcxNmU0OWQ4OTYyNzg5Mjc2ZWM3MmJlMTlmZWIyMzEz
Li42NWJmMWY0M2FhMmFmOTA2NTFlMWFjZjVlYTEwYjljODA1NjZiZjc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTU3MCw5ICs1NzAs
OSBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1haW5B
eGlzRXh0ZW50Rm9yQ2hpbGQoY29uc3QgUmVuZAogICAgIC8vIHRoYXQgaGVyZS4gKENvbXBhcmUg
Y29kZSBpbiBMYXlvdXRCbG9jazo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpCiAgICAg
TGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nID0gY2hpbGQuYm9yZGVyQW5kUGFkZGluZ0xvZ2lj
YWxXaWR0aCgpOwogICAgIGlmIChjaGlsZC5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygp
ICYmICFjaGlsZC5oYXNBc3BlY3RSYXRpbygpKSB7Ci0gICAgICAgIGlmIChzaXplLnR5cGUoKSA9
PSBNaW5Db250ZW50KQorICAgICAgICBpZiAoc2l6ZS5pc01pbkNvbnRlbnQoKSkKICAgICAgICAg
ICAgIHJldHVybiBjaGlsZC5taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlckFuZFBh
ZGRpbmc7Ci0gICAgICAgIGlmIChzaXplLnR5cGUoKSA9PSBNYXhDb250ZW50KQorICAgICAgICBp
ZiAoc2l6ZS5pc01heENvbnRlbnQoKSkKICAgICAgICAgICAgIHJldHVybiBjaGlsZC5tYXhQcmVm
ZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlckFuZFBhZGRpbmc7CiAgICAgfQogICAgIApAQCAt
MTE0OSw3ICsxMTQ5LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hp
bGRTaXplRm9yTWluQW5kTWF4KGNvbnN0IFJlbmRlckJveCYgY2hpbGQKICAgICBpZiAoc2hvdWxk
QXBwbHlNaW5TaXplQXV0b0ZvckNoaWxkKGNoaWxkKSkgewogICAgICAgICAvLyBGSVhNRTogSWYg
dGhlIG1pbiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSB2YWxpZCBoZXJlLCB3ZSBuZWVkIHRvIGNv
bWUgdXAgd2l0aCBhIG5vbiBvcHRpb25hbCB2ZXJzaW9uIG9mIGNvbXB1dGVNYWluQXhpc0V4dGVu
dEZvckNoaWxkIGFuZAogICAgICAgICAvLyBlbnN1cmUgaXQncyB2YWxpZCB0aHJvdWdoIHRoZSB2
aXJ0dWFsIGNhbGxzIG9mIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5n
LgotICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRTaXplID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50
Rm9yQ2hpbGQoY2hpbGQsIE1pblNpemUsIExlbmd0aChNaW5Db250ZW50KSkudmFsdWVPcigwKTsK
KyAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50U2l6ZSA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZv
ckNoaWxkKGNoaWxkLCBNaW5TaXplLCBMZW5ndGgoTGVuZ3RoVHlwZTo6TWluQ29udGVudCkpLnZh
bHVlT3IoMCk7CiAgICAgICAgIEFTU0VSVChjb250ZW50U2l6ZSA+PSAwKTsKICAgICAgICAgaWYg
KGNoaWxkLmhhc0FzcGVjdFJhdGlvKCkgJiYgY2hpbGQuaW50cmluc2ljU2l6ZSgpLmhlaWdodCgp
ID4gMCkKICAgICAgICAgICAgIGNvbnRlbnRTaXplID0gYWRqdXN0Q2hpbGRTaXplRm9yQXNwZWN0
UmF0aW9Dcm9zc0F4aXNNaW5BbmRNYXgoY2hpbGQsIGNvbnRlbnRTaXplKTsKQEAgLTEyMDMsNyAr
MTIwMyw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94OjptYWluU2l6
ZUZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uKGNvbnN0IFJlCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBp
bXBsZW1lbnRzIHNlY3Rpb24gOS44LiBEZWZpbml0ZSBhbmQgSW5kZWZpbml0ZSBTaXplcywgY2Fz
ZSAyKSBvZiB0aGUgZmxleGJveCBzcGVjLgogICAgIC8vIElmIHRoZSBmbGV4IGNvbnRhaW5lciBo
YXMgYSBkZWZpbml0ZSBtYWluIHNpemUgdGhlIGZsZXggaXRlbSBwb3N0LWZsZXhpbmcgbWFpbiBz
aXplIGlzIGFsc28gdHJlYXRlZAogICAgIC8vIGFzIGRlZmluaXRlLiBXZSBtYWtlIHVwIGEgcGVy
Y2VudGFnZSB0byBjaGVjayB3aGV0aGVyIHdlIGhhdmUgYSBkZWZpbml0ZSBzaXplLgotICAgIGlm
ICghY2hpbGRNYWluU2l6ZUlzRGVmaW5pdGUoY2hpbGQsIExlbmd0aCgwLCBQZXJjZW50KSkpCisg
ICAgaWYgKCFjaGlsZE1haW5TaXplSXNEZWZpbml0ZShjaGlsZCwgTGVuZ3RoKDAsIExlbmd0aFR5
cGU6OlBlcmNlbnQpKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIHJldHVy
biBjaGlsZC5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpID8gT3B0aW9uYWw8TGF5b3V0VW5p
dD4oY2hpbGQub3ZlcnJpZGluZ0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpIDogV1RGOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCmluZGV4
IDcyNGZiMjdiMjQ5NWFmNGZmM2U1NmNjM2JhMzI4YjViN2U0NGZjY2UuLmM1Y2FkZjAxODBhYzMx
ODYwNWJlMWM3MmY5MDIwMDhjNGU5YTFlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKQEAgLTc4LDEwICs3OCwxMCBAQCBzdGF0aWMgUmVuZGVy
U3R5bGUgY3JlYXRlRnVsbFNjcmVlblN0eWxlKCkKICAgICBmdWxsc2NyZWVuU3R5bGUuc2V0Rmxl
eERpcmVjdGlvbihGbGV4RGlyZWN0aW9uOjpDb2x1bW4pOwogICAgIAogICAgIGZ1bGxzY3JlZW5T
dHlsZS5zZXRQb3NpdGlvbihQb3NpdGlvblR5cGU6OkZpeGVkKTsKLSAgICBmdWxsc2NyZWVuU3R5
bGUuc2V0V2lkdGgoTGVuZ3RoKDEwMC4wLCBQZXJjZW50KSk7Ci0gICAgZnVsbHNjcmVlblN0eWxl
LnNldEhlaWdodChMZW5ndGgoMTAwLjAsIFBlcmNlbnQpKTsKLSAgICBmdWxsc2NyZWVuU3R5bGUu
c2V0TGVmdChMZW5ndGgoMCwgV2ViQ29yZTo6Rml4ZWQpKTsKLSAgICBmdWxsc2NyZWVuU3R5bGUu
c2V0VG9wKExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCkpOworICAgIGZ1bGxzY3JlZW5TdHlsZS5z
ZXRXaWR0aChMZW5ndGgoMTAwLjAsIExlbmd0aFR5cGU6OlBlcmNlbnQpKTsKKyAgICBmdWxsc2Ny
ZWVuU3R5bGUuc2V0SGVpZ2h0KExlbmd0aCgxMDAuMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpOwor
ICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRMZWZ0KExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCkp
OworICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRUb3AoTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVk
KSk7CiAgICAgCiAgICAgZnVsbHNjcmVlblN0eWxlLnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6
YmxhY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA0
NGUzZjYzODQ0MjE2NTc4MmI3NGJlZGRkMTYzODc4MTk0ZDRlZjhiLi43MTI0ZTczZGUxZjgxYzJi
NTg2NzQyZjE3YzE5OGUwNjQ3MmQ2ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAKQEAgLTgzMyw4ICs4MzMsOCBAQCB2b2lkIFJlbmRlckltYWdlOjpsYXlvdXRT
aGFkb3dDb250ZW50KGNvbnN0IExheW91dFNpemUmIG9sZFNpemUpCiAgICAgICAgIC8vIGFuZCB0
aGlzIG1ldGhvZCBtaWdodCBiZSBjYWxsZWQgbWFueSB0aW1lcyBwZXIgc2Vjb25kIGR1cmluZyB2
aWRlbyBwbGF5YmFjaywgdXNlIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyOgogICAgICAgICBMYXlv
dXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0KCksIGhh
c1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nr
c1dyaXRpbmdNb2RlKCkpOwogICAgICAgICByZW5kZXJCb3guc2V0TG9jYXRpb24oTGF5b3V0UG9p
bnQoYm9yZGVyTGVmdCgpLCBib3JkZXJUb3AoKSkgKyBMYXlvdXRTaXplKHBhZGRpbmdMZWZ0KCks
IHBhZGRpbmdUb3AoKSkpOwotICAgICAgICByZW5kZXJCb3gubXV0YWJsZVN0eWxlKCkuc2V0SGVp
Z2h0KExlbmd0aChuZXdTaXplLmhlaWdodCgpLCBGaXhlZCkpOwotICAgICAgICByZW5kZXJCb3gu
bXV0YWJsZVN0eWxlKCkuc2V0V2lkdGgoTGVuZ3RoKG5ld1NpemUud2lkdGgoKSwgRml4ZWQpKTsK
KyAgICAgICAgcmVuZGVyQm94Lm11dGFibGVTdHlsZSgpLnNldEhlaWdodChMZW5ndGgobmV3U2l6
ZS5oZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKKyAgICAgICAgcmVuZGVyQm94Lm11dGFi
bGVTdHlsZSgpLnNldFdpZHRoKExlbmd0aChuZXdTaXplLndpZHRoKCksIExlbmd0aFR5cGU6OkZp
eGVkKSk7CiAgICAgICAgIHJlbmRlckJveC5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwog
ICAgICAgICByZW5kZXJCb3gubGF5b3V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggZDgxMWJmMDdjNzkzOTU5YjEzNTQ0NWNhMTI0NWZlNjE5
N2FhYzlhMy4uMjhhMTRkNzZlMGViMjZhMWNjNDEzMzk2YTZmMmNmNjk1MjNmNzVmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC01MzgwLDI0ICs1MzgwLDI0
IEBAIFJlbmRlclN0eWxlIFJlbmRlckxheWVyOjpjcmVhdGVSZWZsZWN0aW9uU3R5bGUoKQogICAg
IFRyYW5zZm9ybU9wZXJhdGlvbnMgdHJhbnNmb3JtOwogICAgIHN3aXRjaCAocmVuZGVyZXIoKS5z
dHlsZSgpLmJveFJlZmxlY3QoKS0+ZGlyZWN0aW9uKCkpIHsKICAgICBjYXNlIFJlZmxlY3Rpb25E
aXJlY3Rpb246OkJlbG93OgotICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChU
cmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMCwgRml4ZWQpLCBMZW5n
dGgoMTAwLiwgUGVyY2VudCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFKSk7Ci0gICAg
ICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKExlbmd0aCgwLCBGaXhlZCksIHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hSZWZs
ZWN0KCktPm9mZnNldCgpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURSkpOworICAgICAg
ICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRp
b246OmNyZWF0ZShMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoMTAwLiwgTGVu
Z3RoVHlwZTo6UGVyY2VudCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFKSk7CisgICAg
ICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCksIHJlbmRlcmVyKCkuc3R5
bGUoKS5ib3hSZWZsZWN0KCktPm9mZnNldCgpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFU
RSkpOwogICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9y
bU9wZXJhdGlvbjo6Y3JlYXRlKDEuMCwgLTEuMCwgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246OlND
QUxFKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVmbGVjdGlvbkRpcmVjdGlvbjo6QWJv
dmU6CiAgICAgICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFNjYWxlVHJhbnNmb3Jt
T3BlcmF0aW9uOjpjcmVhdGUoMS4wLCAtMS4wLCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6U0NB
TEUpKTsKLSAgICAgICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDEwMC4sIFBl
cmNlbnQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURSkpOwotICAgICAgICB0cmFuc2Zv
cm0ub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZShMZW5ndGgoMCwgRml4ZWQpLCByZW5kZXJlcigpLnN0eWxlKCkuYm94UmVmbGVjdCgpLT5vZmZz
ZXQoKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKKyAgICAgICAgdHJhbnNmb3Jt
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUo
TGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKDEwMC4sIExlbmd0aFR5cGU6OlBl
cmNlbnQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURSkpOworICAgICAgICB0cmFuc2Zv
cm0ub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZShMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCByZW5kZXJlcigpLnN0eWxlKCkuYm94UmVm
bGVjdCgpLT5vZmZzZXQoKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBSZWZsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKLSAgICAgICAg
dHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
OjpjcmVhdGUoTGVuZ3RoKDEwMC4sIFBlcmNlbnQpLCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURSkpOwotICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygp
LmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShyZW5kZXJlcigpLnN0
eWxlKCkuYm94UmVmbGVjdCgpLT5vZmZzZXQoKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKKyAgICAgICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5h
cHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDEwMC4sIExl
bmd0aFR5cGU6OlBlcmNlbnQpLCBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURSkpOworICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygp
LmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShyZW5kZXJlcigpLnN0
eWxlKCkuYm94UmVmbGVjdCgpLT5vZmZzZXQoKSwgTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVk
KSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKICAgICAgICAgdHJhbnNmb3JtLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgtMS4wLCAx
LjAsIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRSkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFJlZmxlY3Rpb25EaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgIHRyYW5zZm9ybS5vcGVy
YXRpb25zKCkuYXBwZW5kKFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoLTEuMCwgMS4w
LCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEUpKTsKLSAgICAgICAgdHJhbnNmb3JtLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVu
Z3RoKDEwMC4sIFBlcmNlbnQpLCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURSkpOwotICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChUcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShyZW5kZXJlcigpLnN0eWxlKCkuYm94UmVm
bGVjdCgpLT5vZmZzZXQoKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpU
UkFOU0xBVEUpKTsKKyAgICAgICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDEwMC4sIExlbmd0aFR5cGU6OlBl
cmNlbnQpLCBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURSkpOworICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChUcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShyZW5kZXJlcigpLnN0eWxlKCkuYm94UmVm
bGVjdCgpLT5vZmZzZXQoKSwgTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKSwgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIG5ld1N0
eWxlLnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBjNzBjMTRhZGUxZmY1YmRlZGU0NzRjZWZi
ZTM4MTMwODAxNDVkMTUxLi4wOWZmNDA4OGI4Y2I5ODVlYjM4MWZkYWExY2EwZjM2YzliYzc3NjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtODA1LDggKzgwNSw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzaG91bGRDbGlw
Q29tcG9zaXRlZEJvdW5kcygpIGNvbnN0CiBzdGF0aWMgYm9vbCBoYXNOb25aZXJvVHJhbnNmb3Jt
T3JpZ2luKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiB7CiAgICAgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsKLSAgICByZXR1cm4gKHN0eWxlLnRyYW5z
Zm9ybU9yaWdpblgoKS50eXBlKCkgPT0gRml4ZWQgJiYgc3R5bGUudHJhbnNmb3JtT3JpZ2luWCgp
LnZhbHVlKCkpCi0gICAgICAgIHx8IChzdHlsZS50cmFuc2Zvcm1PcmlnaW5ZKCkudHlwZSgpID09
IEZpeGVkICYmIHN0eWxlLnRyYW5zZm9ybU9yaWdpblkoKS52YWx1ZSgpKTsKKyAgICByZXR1cm4g
KHN0eWxlLnRyYW5zZm9ybU9yaWdpblgoKS5pc0ZpeGVkKCkgJiYgc3R5bGUudHJhbnNmb3JtT3Jp
Z2luWCgpLnZhbHVlKCkpCisgICAgICAgIHx8IChzdHlsZS50cmFuc2Zvcm1PcmlnaW5ZKCkuaXNG
aXhlZCgpICYmIHN0eWxlLnRyYW5zZm9ybU9yaWdpblkoKS52YWx1ZSgpKTsKIH0KIAogYm9vbCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbXBvc2l0ZWRCb3VuZHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDcyOTNiYmVjZDUxNjc0
NjM3MDg4MmFkMjYzZDNkOTgxMTUyM2FjODEuLmNhMGYyNTU0YjZlMzM5YWMwZGQ1M2RhMjVkNGU4
YTg3Y2ZjMGE3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKQEAgLTE3NzgsOCArMTc3OCw4IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6dXBk
YXRlTWFyZ2lucygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtdXRhYmxlU3R5bGUoKS5zZXRN
YXJnaW5TdGFydChMZW5ndGgobWFyZ2luU3RhcnQsIEZpeGVkKSk7Ci0gICAgbXV0YWJsZVN0eWxl
KCkuc2V0TWFyZ2luRW5kKExlbmd0aChtYXJnaW5FbmQsIEZpeGVkKSk7CisgICAgbXV0YWJsZVN0
eWxlKCkuc2V0TWFyZ2luU3RhcnQoTGVuZ3RoKG1hcmdpblN0YXJ0LCBMZW5ndGhUeXBlOjpGaXhl
ZCkpOworICAgIG11dGFibGVTdHlsZSgpLnNldE1hcmdpbkVuZChMZW5ndGgobWFyZ2luRW5kLCBM
ZW5ndGhUeXBlOjpGaXhlZCkpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckxpc3RNYXJrZXI6Omxp
bmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGlu
ZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggN2E2ZTczOWY1ZTQ0Zjc1MWY1NWJmZTMw
NDIxZTZjODllOGI2MmQyZS4uZjM5NGJkNjMzNmU0NDQ4MjI3ZjE2YWU5OTk2ZGU1NWYyNGNjZjhl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0x
MTQsNyArMTE0LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAg
ICAgaW5uZXJTdHlsZS5zZXRGbGV4R3JvdygxKTsKICAgICBpbm5lclN0eWxlLnNldEZsZXhTaHJp
bmsoMSk7CiAgICAgLy8gbWluLXdpZHRoOiAwOyBpcyBuZWVkZWQgZm9yIGNvcnJlY3Qgc2hyaW5r
aW5nLgotICAgIGlubmVyU3R5bGUuc2V0TWluV2lkdGgoTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAg
aW5uZXJTdHlsZS5zZXRNaW5XaWR0aChMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAg
ICAvLyBVc2UgbWFyZ2luOmF1dG8gaW5zdGVhZCBvZiBhbGlnbi1pdGVtczpjZW50ZXIgdG8gZ2V0
IHNhZmUgY2VudGVyaW5nLCBpLmUuCiAgICAgLy8gd2hlbiB0aGUgY29udGVudCBvdmVyZmxvd3Ms
IHRyZWF0IGl0IHRoZSBzYW1lIGFzIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0LgogICAgIC8vIEJ1
dCB3ZSBvbmx5IGRvIHRoYXQgZm9yIHRoZSBjYXNlcyB3aGVyZSBodG1sLmNzcyB3b3VsZCBvdGhl
cndpc2UgdXNlIGNlbnRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAKaW5kZXggMGY0YzNmMTMyZGU2NGI4MTI0ZDExNzdlZWVmMjZmMDI1ZGM2NTNlMy4u
MWQ5NTExZGNiMWZjMDFlNmVjMDBkNzlkYTQwNmI4ZWRjNjBmNzIwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTE3Niw4ICsxNzYsOCBAQCBM
ZW5ndGggUmVuZGVyVGFibGVDZWxsOjpsb2dpY2FsV2lkdGhGcm9tQ29sdW1ucyhSZW5kZXJUYWJs
ZUNvbCogZmlyc3RDb2xGb3JUaGlzQwogICAgIC8vIENvbHVtbiB3aWR0aHMgc3BlY2lmaWVkIG9u
IDxjb2w+IGFwcGx5IHRvIHRoZSBib3JkZXIgYm94IG9mIHRoZSBjZWxsLCBzZWUgYnVnIDgxMjYu
CiAgICAgLy8gRklYTUU6IFdoeSBpcyBib3JkZXIvcGFkZGluZyBpZ25vcmVkIGluIHRoZSBuZWdh
dGl2ZSB3aWR0aCBjYXNlPwogICAgIGlmIChjb2xXaWR0aFN1bSA+IDApCi0gICAgICAgIHJldHVy
biBMZW5ndGgoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY29sV2lkdGhTdW0gLSBib3JkZXJBbmRQ
YWRkaW5nTG9naWNhbFdpZHRoKCkpLCBGaXhlZCk7Ci0gICAgcmV0dXJuIExlbmd0aChjb2xXaWR0
aFN1bSwgRml4ZWQpOworICAgICAgICByZXR1cm4gTGVuZ3RoKHN0ZDo6bWF4PExheW91dFVuaXQ+
KDAsIGNvbFdpZHRoU3VtIC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpKSwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpOworICAgIHJldHVybiBMZW5ndGgoY29sV2lkdGhTdW0sIExlbmd0aFR5cGU6
OkZpeGVkKTsKIH0KIAogdm9pZCBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAKaW5kZXggYmE2MmRmZmQ4MzEwZjc2MGNmM2Q1MjJmMmQwZGYxYmUwMTE5NDlkOS4u
MWUxOWIzZGIzNTExYTI5YWU2ZWNmNmMzZWIzMzM5Yzc3MzA4NTlmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTcxLDE2ICs3MSwx
NiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlTG9naWNhbEhlaWdodEZvckNlbGwoUmVuZGVy
VGFibGVTZWN0aW9uOjpSb3dTdHJ1Y3QmIHJvdwogICAgIGlmIChsb2dpY2FsSGVpZ2h0LmlzUG9z
aXRpdmUoKSB8fCAobG9naWNhbEhlaWdodC5pc1JlbGF0aXZlKCkgJiYgbG9naWNhbEhlaWdodC52
YWx1ZSgpID49IDApKSB7CiAgICAgICAgIExlbmd0aCBjUm93TG9naWNhbEhlaWdodCA9IHJvdy5s
b2dpY2FsSGVpZ2h0OwogICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxIZWlnaHQudHlwZSgpKSB7Ci0g
ICAgICAgIGNhc2UgUGVyY2VudDoKKyAgICAgICAgY2FzZSBMZW5ndGhUeXBlOjpQZXJjZW50Ogog
ICAgICAgICAgICAgaWYgKCFjUm93TG9naWNhbEhlaWdodC5pc1BlcmNlbnQoKSB8fCBjUm93TG9n
aWNhbEhlaWdodC5wZXJjZW50KCkgPCBsb2dpY2FsSGVpZ2h0LnBlcmNlbnQoKSkKICAgICAgICAg
ICAgICAgICByb3cubG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQ7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBGaXhlZDoKKyAgICAgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXhl
ZDoKICAgICAgICAgICAgIGlmIChjUm93TG9naWNhbEhlaWdodC5pc0F1dG8oKSB8fCBjUm93TG9n
aWNhbEhlaWdodC5pc1JlbGF0aXZlKCkKICAgICAgICAgICAgICAgICB8fCAoY1Jvd0xvZ2ljYWxI
ZWlnaHQuaXNGaXhlZCgpICYmIGNSb3dMb2dpY2FsSGVpZ2h0LnZhbHVlKCkgPCBsb2dpY2FsSGVp
Z2h0LnZhbHVlKCkpKQogICAgICAgICAgICAgICAgIHJvdy5sb2dpY2FsSGVpZ2h0ID0gbG9naWNh
bEhlaWdodDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJlbGF0aXZlOgorICAg
ICAgICBjYXNlIExlbmd0aFR5cGU6OlJlbGF0aXZlOgogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCmluZGV4IDJjMzEzMWNlMWMwYzY0
ZmMzNTQxMTQzOTZjNzkxNTk2ZDFhOTkyOGYuLjI4MzVjNzk2NDZhNmQ1Nzc3NzJlY2NkOGQwYWI4
NDJkOGNjOTViNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCByZWxh
eW91dENoaWxkcmVuKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzPFJlbmRlckJveD4ocGxh
Y2Vob2xkZXJSZW5kZXJlcikpIHsKICAgICAgICAgYXV0byYgcGxhY2Vob2xkZXJCb3ggPSBkb3du
Y2FzdDxSZW5kZXJCb3g+KCpwbGFjZWhvbGRlclJlbmRlcmVyKTsKLSAgICAgICAgcGxhY2Vob2xk
ZXJCb3gubXV0YWJsZVN0eWxlKCkuc2V0TG9naWNhbFdpZHRoKExlbmd0aChjb250ZW50TG9naWNh
bFdpZHRoKCkgLSBwbGFjZWhvbGRlckJveC5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCks
IEZpeGVkKSk7CisgICAgICAgIHBsYWNlaG9sZGVyQm94Lm11dGFibGVTdHlsZSgpLnNldExvZ2lj
YWxXaWR0aChMZW5ndGgoY29udGVudExvZ2ljYWxXaWR0aCgpIC0gcGxhY2Vob2xkZXJCb3guYm9y
ZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgICAg
ICBwbGFjZWhvbGRlckJveC5sYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICBwbGFjZWhvbGRlckJv
eC5zZXRYKGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCkpOwogICAgICAgICBwbGFjZWhvbGRl
ckJveC5zZXRZKGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5k
ZXggMTQyNWUzNjBmNmUwMGM5NGM2NTliOTJiZDFmZGIyMjk5ZjAwZmRlNC4uN2E3MDQ0OGNkZjI1
NmVjMWQzYTUzODc0ZjBlNzU5MmI1YWFhY2QxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRPdmVycmlkZGVuSGVpZ2h0KFJlbmRlckJveCogYm94
LCBjb25zdCBSZW5kZXJPYmplY3QqIGFuY2VzdG9yKQogICAgIEFTU0VSVChib3ggIT0gYW5jZXN0
b3IpOwogICAgIGlmICghYm94IHx8IGJveC0+c3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRv
KCkpCiAgICAgICAgIHJldHVybjsgLy8gTnVsbCBib3ggb3IgaXRzIGhlaWdodCB3YXMgbm90IG92
ZXJyaWRkZW4uCi0gICAgYm94LT5tdXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0
aCB7IEF1dG8gfSk7CisgICAgYm94LT5tdXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExl
bmd0aCB7IExlbmd0aFR5cGU6OkF1dG8gfSk7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gYm94OyByZW5kZXJlciAhPSBhbmNlc3RvcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFy
ZW50KCkpIHsKICAgICAgICAgQVNTRVJUKHJlbmRlcmVyKTsKICAgICAgICAgcmVuZGVyZXItPnNl
dE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CkBAIC0xMzAsMTAgKzEzMCwxMCBAQCB2b2lkIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bGF5b3V0KCkKICAgICAgICAgaWYgKGRlc2lyZWRM
b2dpY2FsSGVpZ2h0ICE9IGlubmVyVGV4dExvZ2ljYWxIZWlnaHQpCiAgICAgICAgICAgICBzZXRO
ZWVkc0xheW91dChNYXJrT25seVRoaXMpOwogCi0gICAgICAgIGlubmVyVGV4dFJlbmRlcmVyLT5t
dXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0aChkZXNpcmVkTG9naWNhbEhlaWdo
dCwgRml4ZWQpKTsKKyAgICAgICAgaW5uZXJUZXh0UmVuZGVyZXItPm11dGFibGVTdHlsZSgpLnNl
dExvZ2ljYWxIZWlnaHQoTGVuZ3RoKGRlc2lyZWRMb2dpY2FsSGVpZ2h0LCBMZW5ndGhUeXBlOjpG
aXhlZCkpOwogICAgICAgICBpbm5lclRleHRSZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQoTWFya09u
bHlUaGlzKTsKICAgICAgICAgaWYgKGlubmVyQmxvY2tSZW5kZXJlcikgewotICAgICAgICAgICAg
aW5uZXJCbG9ja1JlbmRlcmVyLT5tdXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0
aChkZXNpcmVkTG9naWNhbEhlaWdodCwgRml4ZWQpKTsKKyAgICAgICAgICAgIGlubmVyQmxvY2tS
ZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0TG9naWNhbEhlaWdodChMZW5ndGgoZGVzaXJlZExv
Z2ljYWxIZWlnaHQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgICAgICAgICBpbm5lckJsb2Nr
UmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAgICAgIH0KICAgICAg
ICAgaW5uZXJUZXh0TG9naWNhbEhlaWdodCA9IGRlc2lyZWRMb2dpY2FsSGVpZ2h0OwpAQCAtMTQ1
LDE2ICsxNDUsMTYgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dCgp
CiAgICAgICAgIG9sZENvbnRhaW5lckxvZ2ljYWxUb3AgPSBjb250YWluZXJSZW5kZXJlci0+bG9n
aWNhbFRvcCgpOwogICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgPSBj
b250YWluZXJSZW5kZXJlci0+bG9naWNhbEhlaWdodCgpOwogICAgICAgICBpZiAoaW5wdXRFbGVt
ZW50KCkuaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIGlubmVyVGV4dFJlbmRl
cmVyICYmIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgIT0gaW5uZXJUZXh0TG9naWNhbEhlaWdodCkg
ewotICAgICAgICAgICAgY29udGFpbmVyUmVuZGVyZXItPm11dGFibGVTdHlsZSgpLnNldExvZ2lj
YWxIZWlnaHQoTGVuZ3RoIHsgaW5uZXJUZXh0TG9naWNhbEhlaWdodCwgRml4ZWQgfSk7CisgICAg
ICAgICAgICBjb250YWluZXJSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0TG9naWNhbEhlaWdo
dChMZW5ndGggeyBpbm5lclRleHRMb2dpY2FsSGVpZ2h0LCBMZW5ndGhUeXBlOjpGaXhlZCB9KTsK
ICAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY29udGFpbmVyTG9naWNhbEhlaWdodCA+IGxvZ2ljYWxIZWlnaHRMaW1pdCkgewotICAg
ICAgICAgICAgY29udGFpbmVyUmVuZGVyZXItPm11dGFibGVTdHlsZSgpLnNldExvZ2ljYWxIZWln
aHQoTGVuZ3RoKGxvZ2ljYWxIZWlnaHRMaW1pdCwgRml4ZWQpKTsKKyAgICAgICAgICAgIGNvbnRh
aW5lclJlbmRlcmVyLT5tdXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0aChsb2dp
Y2FsSGVpZ2h0TGltaXQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgICAgICAgICBzZXROZWVk
c0xheW91dChNYXJrT25seVRoaXMpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRhaW5lclJlbmRl
cmVyLT5sb2dpY2FsSGVpZ2h0KCkgPCBjb250ZW50TG9naWNhbEhlaWdodCgpKSB7Ci0gICAgICAg
ICAgICBjb250YWluZXJSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0TG9naWNhbEhlaWdodChM
ZW5ndGgoY29udGVudExvZ2ljYWxIZWlnaHQoKSwgRml4ZWQpKTsKKyAgICAgICAgICAgIGNvbnRh
aW5lclJlbmRlcmVyLT5tdXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0aChjb250
ZW50TG9naWNhbEhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgICAgICAgICAgc2V0
TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBj
b250YWluZXJSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0TG9naWNhbEhlaWdodChMZW5ndGgo
Y29udGFpbmVyTG9naWNhbEhlaWdodCwgRml4ZWQpKTsKKyAgICAgICAgICAgIGNvbnRhaW5lclJl
bmRlcmVyLT5tdXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0aChjb250YWluZXJM
b2dpY2FsSGVpZ2h0LCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgIH0KIAogICAgIC8vIElmIHdl
IG5lZWQgYW5vdGhlciBsYXlvdXQgcGFzcywgd2UgaGF2ZSBjaGFuZ2VkIG9uZSBvZiBjaGlsZHJl
bidzIGhlaWdodCBzbyB3ZSBuZWVkIHRvIHJlbGF5b3V0IHRoZW0uCkBAIC0xNzksNyArMTc5LDcg
QEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dCgpCiAgICAgICAgIGF1
dG8gaW5uZXJUZXh0V2lkdGggPSBMYXlvdXRVbml0IHsgfTsKICAgICAgICAgaWYgKGlubmVyVGV4
dFJlbmRlcmVyKQogICAgICAgICAgICAgaW5uZXJUZXh0V2lkdGggPSBpbm5lclRleHRSZW5kZXJl
ci0+bG9naWNhbFdpZHRoKCk7Ci0gICAgICAgIHBsYWNlaG9sZGVyQm94LT5tdXRhYmxlU3R5bGUo
KS5zZXRXaWR0aChMZW5ndGgoaW5uZXJUZXh0V2lkdGggLSBwbGFjZWhvbGRlckJveC0+aG9yaXpv
bnRhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSwgRml4ZWQpKTsKKyAgICAgICAgcGxhY2Vob2xk
ZXJCb3gtPm11dGFibGVTdHlsZSgpLnNldFdpZHRoKExlbmd0aChpbm5lclRleHRXaWR0aCAtIHBs
YWNlaG9sZGVyQm94LT5ob3Jpem9udGFsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpLCBMZW5ndGhU
eXBlOjpGaXhlZCkpOwogICAgICAgICBib29sIG5lZWRlZExheW91dCA9IHBsYWNlaG9sZGVyQm94
LT5uZWVkc0xheW91dCgpOwogICAgICAgICBib29sIHBsYWNlaG9sZGVyQm94SGFkTGF5b3V0ID0g
cGxhY2Vob2xkZXJCb3gtPmV2ZXJIYWRMYXlvdXQoKTsKICAgICAgICAgaWYgKGlubmVyVGV4dFNp
emVDaGFuZ2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVBZHdhaXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFk
d2FpdGEuY3BwCmluZGV4IDIzNGRiNjdhOTQwNWFjMzI5ZDM5ZDY4ZGM2YzI0MjEzYTAwMGQwZDIu
Ljk2YjdlMGQxNTBlYTVkOGQxMTNkZWFkODlkNjVlMDQxOGI3MGY4OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCkBAIC00NTQsOCArNDU0
LDggQEAgdm9pZCBSZW5kZXJUaGVtZUFkd2FpdGE6OmFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5k
ZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQKICAgICBpZiAocGFydCAhPSBTbGlkZXJUaHVt
Ykhvcml6b250YWxQYXJ0ICYmIHBhcnQgIT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChzbGlkZXJUaHVtYlNpemUs
IEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChzbGlkZXJUaHVtYlNpemUsIEZp
eGVkKSk7CisgICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKHNsaWRlclRodW1iU2l6ZSwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpKTsKKyAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKHNsaWRlclRodW1iU2l6
ZSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUFkd2FpdGE6OnBh
aW50U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtNTk4LDkgKzU5OCw5
IEBAIHZvaWQgUmVuZGVyVGhlbWVBZHdhaXRhOjphZGp1c3RMaXN0QnV0dG9uU3R5bGUoUmVuZGVy
U3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50CiB7CiAgICAgLy8gQWRkIGEgbWFyZ2luIHRvIHBs
YWNlIHRoZSBidXR0b24gYXQgZW5kIG9mIHRoZSBpbnB1dCBmaWVsZC4KICAgICBpZiAoc3R5bGUu
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICBzdHlsZS5zZXRNYXJnaW5SaWdodChM
ZW5ndGgoLTIsIEZpeGVkKSk7CisgICAgICAgIHN0eWxlLnNldE1hcmdpblJpZ2h0KExlbmd0aCgt
MiwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICBlbHNlCi0gICAgICAgIHN0eWxlLnNldE1hcmdp
bkxlZnQoTGVuZ3RoKC0yLCBGaXhlZCkpOworICAgICAgICBzdHlsZS5zZXRNYXJnaW5MZWZ0KExl
bmd0aCgtMiwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2Nv
YS5tbQppbmRleCBkNzVlODcyNmRmMGQ0ODBmMTE3NTVhN2Q5ZmVlNjAyYWNkZWU4ODQyLi5jMWIx
ODQ1YzNiZWFmZTlkYjQwODM1MGM4YzdmMGQ3NTNmN2FiNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQpAQCAtNjksMTQgKzY5LDE0IEBAIHN0YXRp
YyBjb25zdCBhdXRvIGFwcGxlUGF5QnV0dG9uTWluaW11bUhlaWdodCA9IDMwOwogdm9pZCBSZW5k
ZXJUaGVtZUNvY29hOjphZGp1c3RBcHBsZVBheUJ1dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHls
ZSwgY29uc3QgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxlLmFwcGxlUGF5QnV0dG9u
VHlwZSgpID09IEFwcGxlUGF5QnV0dG9uVHlwZTo6UGxhaW4pCi0gICAgICAgIHN0eWxlLnNldE1p
bldpZHRoKExlbmd0aChhcHBsZVBheUJ1dHRvblBsYWluTWluaW11bVdpZHRoLCBGaXhlZCkpOwor
ICAgICAgICBzdHlsZS5zZXRNaW5XaWR0aChMZW5ndGgoYXBwbGVQYXlCdXR0b25QbGFpbk1pbmlt
dW1XaWR0aCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICBlbHNlCi0gICAgICAgIHN0eWxlLnNl
dE1pbldpZHRoKExlbmd0aChhcHBsZVBheUJ1dHRvbk1pbmltdW1XaWR0aCwgRml4ZWQpKTsKLSAg
ICBzdHlsZS5zZXRNaW5IZWlnaHQoTGVuZ3RoKGFwcGxlUGF5QnV0dG9uTWluaW11bUhlaWdodCwg
Rml4ZWQpKTsKKyAgICAgICAgc3R5bGUuc2V0TWluV2lkdGgoTGVuZ3RoKGFwcGxlUGF5QnV0dG9u
TWluaW11bVdpZHRoLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldE1pbkhlaWdo
dChMZW5ndGgoYXBwbGVQYXlCdXR0b25NaW5pbXVtSGVpZ2h0LCBMZW5ndGhUeXBlOjpGaXhlZCkp
OwogCiAgICAgaWYgKCFzdHlsZS5oYXNFeHBsaWNpdGx5U2V0Qm9yZGVyUmFkaXVzKCkpIHsKICAg
ICAgICAgYXV0byBjb3JuZXJSYWRpdXMgPSBQQUw6OmdldF9QYXNzS2l0X1BLQXBwbGVQYXlCdXR0
b25EZWZhdWx0Q29ybmVyUmFkaXVzKCk7Ci0gICAgICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyh7
IHsgY29ybmVyUmFkaXVzLCBGaXhlZCB9LCB7IGNvcm5lclJhZGl1cywgRml4ZWQgfSB9KTsKKyAg
ICAgICAgc3R5bGUuc2V0Qm9yZGVyUmFkaXVzKHsgeyBjb3JuZXJSYWRpdXMsIExlbmd0aFR5cGU6
OkZpeGVkIH0sIHsgY29ybmVyUmFkaXVzLCBMZW5ndGhUeXBlOjpGaXhlZCB9IH0pOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDE4
MjRlZDc0ZDE2YTMzYzVkYWU1YWY0OWU1MGVhOTk0ODcwNmE4MjQuLjZmMTk2ZjNhMDcwZDY1ZWM0
ZmE4NDFiYzc2YThlMTI0OWMyMzQyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0KQEAgLTM1MCw4ICszNTAsOCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjph
ZGp1c3RDaGVja2JveFN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGNv
bgogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgc2l6ZSA9IHN0ZDo6bWF4KHN0eWxlLmNvbXB1
dGVkRm9udFBpeGVsU2l6ZSgpLCAxMFUpOwotICAgIHN0eWxlLnNldFdpZHRoKHsgc2l6ZSwgRml4
ZWQgfSk7Ci0gICAgc3R5bGUuc2V0SGVpZ2h0KHsgc2l6ZSwgRml4ZWQgfSk7CisgICAgc3R5bGUu
c2V0V2lkdGgoeyBzaXplLCBMZW5ndGhUeXBlOjpGaXhlZCB9KTsKKyAgICBzdHlsZS5zZXRIZWln
aHQoeyBzaXplLCBMZW5ndGhUeXBlOjpGaXhlZCB9KTsKIH0KIAogc3RhdGljIENHUG9pbnQgc2hv
cnRlbmVkKENHUG9pbnQgc3RhcnQsIENHUG9pbnQgZW5kLCBmbG9hdCB3aWR0aCkKQEAgLTQ5Miw4
ICs0OTIsOCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSYWRpb1N0eWxlKFJlbmRlclN0
eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAg
IGludCBzaXplID0gc3RkOjptYXgoc3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCksIDEwVSk7
Ci0gICAgc3R5bGUuc2V0V2lkdGgoeyBzaXplLCBGaXhlZCB9KTsKLSAgICBzdHlsZS5zZXRIZWln
aHQoeyBzaXplLCBGaXhlZCB9KTsKKyAgICBzdHlsZS5zZXRXaWR0aCh7IHNpemUsIExlbmd0aFR5
cGU6OkZpeGVkIH0pOworICAgIHN0eWxlLnNldEhlaWdodCh7IHNpemUsIExlbmd0aFR5cGU6OkZp
eGVkIH0pOwogICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyh7IHNpemUgLyAyLCBzaXplIC8gMiB9
KTsKIH0KIApAQCAtNjE2LDcgKzYxNiw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdFJv
dW5kQm9yZGVyUmFkaXVzKFJlbmRlclN0eWxlJiBzdHlsZSwgUmVuZGVyQm94JiBib3gpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGJlIHJlbHlpbmcgb24g
Ym9yZGVyIHJhZGl1cyBmb3IgdGhlIGFwcGVhcmFuY2Ugb2Ygb3VyIGNvbnRyb2xzIDxyZGFyOi8v
cHJvYmxlbS83Njc1NDkzPi4KLSAgICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMoeyB7IHN0ZDo6bWlu
KGJveC53aWR0aCgpLCBib3guaGVpZ2h0KCkpIC8gMiwgRml4ZWQgfSwgeyBib3guaGVpZ2h0KCkg
LyAyLCBGaXhlZCB9IH0pOworICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyh7IHsgc3RkOjptaW4o
Ym94LndpZHRoKCksIGJveC5oZWlnaHQoKSkgLyAyLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IGJv
eC5oZWlnaHQoKSAvIDIsIExlbmd0aFR5cGU6OkZpeGVkIH0gfSk7CiB9CiAKIHN0YXRpYyB2b2lk
IGFwcGx5Q29tbW9uQnV0dG9uUGFkZGluZ1RvU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBFbGVtZW50JiBlbGVtZW50KQpAQCAtNjM0LDcgKzYzNCw3IEBAIHN0YXRpYyB2b2lkIGFkanVz
dFNlbGVjdExpc3RCdXR0b25TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQm
IGVsZW1lCiAgICAgYXBwbHlDb21tb25CdXR0b25QYWRkaW5nVG9TdHlsZShzdHlsZSwgZWxlbWVu
dCk7CiAKICAgICAvLyBFbmZvcmNlICJsaW5lLWhlaWdodDogbm9ybWFsIi4KLSAgICBzdHlsZS5z
ZXRMaW5lSGVpZ2h0KExlbmd0aCgtMTAwLjAsIFBlcmNlbnQpKTsKKyAgICBzdHlsZS5zZXRMaW5l
SGVpZ2h0KExlbmd0aCgtMTAwLjAsIExlbmd0aFR5cGU6OlBlcmNlbnQpKTsKIH0KICAgICAKIGNs
YXNzIFJlbmRlclRoZW1lTWVhc3VyZVRleHRDbGllbnQgOiBwdWJsaWMgTWVhc3VyZVRleHRDbGll
bnQgewpAQCAtNjc3LDcgKzY3Nyw3IEBAIHN0YXRpYyB2b2lkIGFkanVzdElucHV0RWxlbWVudEJ1
dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgSFRNTElucHV0RWxlCiAKICAgICBp
ZiAobWF4aW11bVdpZHRoID4gMCkgewogICAgICAgICBpbnQgd2lkdGggPSBzdGF0aWNfY2FzdDxp
bnQ+KG1heGltdW1XaWR0aCArIE1lbnVMaXN0QnV0dG9uUGFkZGluZ0FmdGVyKTsKLSAgICAgICAg
c3R5bGUuc2V0V2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhlZCkpOworICAgICAgICBzdHlsZS5zZXRX
aWR0aChMZW5ndGgod2lkdGgsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgICAgIHN0eWxlLnNl
dEJveFNpemluZyhCb3hTaXppbmc6OkNvbnRlbnRCb3gpOwogICAgIH0KIH0KQEAgLTY4Niw5ICs2
ODYsOSBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFJl
bmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudAogewogICAgIC8vIFNldCB0aGUgbWluLWhl
aWdodCB0byBiZSBhdCBsZWFzdCBNZW51TGlzdE1pbkhlaWdodC4KICAgICBpZiAoc3R5bGUuaGVp
Z2h0KCkuaXNBdXRvKCkpCi0gICAgICAgIHN0eWxlLnNldE1pbkhlaWdodChMZW5ndGgoc3RkOjpt
YXgoTWVudUxpc3RNaW5IZWlnaHQsIHN0YXRpY19jYXN0PGludD4oTWVudUxpc3RCYXNlSGVpZ2h0
IC8gTWVudUxpc3RCYXNlRm9udFNpemUgKiBzdHlsZS5mb250RGVzY3JpcHRpb24oKS5jb21wdXRl
ZFNpemUoKSkpLCBGaXhlZCkpOworICAgICAgICBzdHlsZS5zZXRNaW5IZWlnaHQoTGVuZ3RoKHN0
ZDo6bWF4KE1lbnVMaXN0TWluSGVpZ2h0LCBzdGF0aWNfY2FzdDxpbnQ+KE1lbnVMaXN0QmFzZUhl
aWdodCAvIE1lbnVMaXN0QmFzZUZvbnRTaXplICogc3R5bGUuZm9udERlc2NyaXB0aW9uKCkuY29t
cHV0ZWRTaXplKCkpKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICBlbHNlCi0gICAgICAgIHN0
eWxlLnNldE1pbkhlaWdodChMZW5ndGgoTWVudUxpc3RNaW5IZWlnaHQsIEZpeGVkKSk7CisgICAg
ICAgIHN0eWxlLnNldE1pbkhlaWdodChMZW5ndGgoTWVudUxpc3RNaW5IZWlnaHQsIExlbmd0aFR5
cGU6OkZpeGVkKSk7CiAKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTgz
OCw3ICs4MzgsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RTbGlkZXJUcmFja1N0eWxl
KFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCogZQogCiAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBub3QgYmUgcmVseWluZyBvbiBib3JkZXIgcmFkaXVzIGZvciB0aGUgYXBwZWFyYW5j
ZSBvZiBvdXIgY29udHJvbHMgPHJkYXI6Ly9wcm9ibGVtLzc2NzU0OTM+LgogICAgIGludCByYWRp
dXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGtUcmFja1JhZGl1cyk7Ci0gICAgc3R5bGUuc2V0Qm9yZGVy
UmFkaXVzKHsgeyByYWRpdXMsIEZpeGVkIH0sIHsgcmFkaXVzLCBGaXhlZCB9IH0pOworICAgIHN0
eWxlLnNldEJvcmRlclJhZGl1cyh7IHsgcmFkaXVzLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IHJh
ZGl1cywgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9KTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6
cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC05MzAsMTIgKzkzMCwxMiBAQCB2
b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb25zdCBFbGVtZW50KikgYwogICAgICAgICByZXR1cm47CiAKICAgICAvLyBFbmZvcmNl
ICJib3JkZXItcmFkaXVzOiA1MCUiLgotICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyh7IHsgNTAs
IFBlcmNlbnQgfSwgeyA1MCwgUGVyY2VudCB9IH0pOworICAgIHN0eWxlLnNldEJvcmRlclJhZGl1
cyh7IHsgNTAsIExlbmd0aFR5cGU6OlBlcmNlbnQgfSwgeyA1MCwgTGVuZ3RoVHlwZTo6UGVyY2Vu
dCB9IH0pOwogCiAgICAgLy8gRW5mb3JjZSBhIDE2eDE2IHNpemUgaWYgbm8gc2l6ZSBpcyBwcm92
aWRlZC4KICAgICBpZiAoc3R5bGUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpIHx8IHN0eWxl
LmhlaWdodCgpLmlzQXV0bygpKSB7Ci0gICAgICAgIHN0eWxlLnNldFdpZHRoKHsga0RlZmF1bHRT
bGlkZXJUaHVtYlNpemUsIEZpeGVkIH0pOwotICAgICAgICBzdHlsZS5zZXRIZWlnaHQoeyBrRGVm
YXVsdFNsaWRlclRodW1iU2l6ZSwgRml4ZWQgfSk7CisgICAgICAgIHN0eWxlLnNldFdpZHRoKHsg
a0RlZmF1bHRTbGlkZXJUaHVtYlNpemUsIExlbmd0aFR5cGU6OkZpeGVkIH0pOworICAgICAgICBz
dHlsZS5zZXRIZWlnaHQoeyBrRGVmYXVsdFNsaWRlclRodW1iU2l6ZSwgTGVuZ3RoVHlwZTo6Rml4
ZWQgfSk7CiAgICAgfQogfQogCkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2b2lkIFJlbmRlclRoZW1l
SU9TOjphZGp1c3RCdXR0b25TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQq
IGVsZW1lbgogICAgIC8vIHdpdGggdGhlIGZvbnQgc2l6ZS4gbWluLWhlaWdodCBpcyB1c2VkIHJh
dGhlciB0aGFuIGhlaWdodCB0byBhdm9pZCBjbGlwcGluZyB0aGUgY29udGVudHMgb2YKICAgICAv
LyB0aGUgYnV0dG9uIGluIGNhc2VzIHdoZXJlIHRoZSBidXR0b24gY29udGFpbnMgbW9yZSB0aGFu
IG9uZSBsaW5lIG9mIHRleHQuCiAgICAgaWYgKHN0eWxlLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1
dG8oKSB8fCBzdHlsZS5oZWlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAgc3R5bGUuc2V0TWluSGVp
Z2h0KExlbmd0aChDb250cm9sQmFzZUhlaWdodCAvIENvbnRyb2xCYXNlRm9udFNpemUgKiBzdHls
ZS5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKSwgRml4ZWQpKTsKKyAgICAgICAgc3R5
bGUuc2V0TWluSGVpZ2h0KExlbmd0aChDb250cm9sQmFzZUhlaWdodCAvIENvbnRyb2xCYXNlRm9u
dFNpemUgKiBzdHlsZS5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKSwgTGVuZ3RoVHlw
ZTo6Rml4ZWQpKTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGlmIChzdHls
ZS5hcHBlYXJhbmNlKCkgPT0gQ29sb3JXZWxsUGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA0NWRmMmEyMzY0MWE5ODhlODU3MjgzMWFkYWVkM2Vj
YzgyYWY0OTcwLi5iZGRmMjU3NDYyNzgzNjM5YjRlYjlhMTZjMzAxYWViNDdkYzJhYjMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC05ODksOSArOTg5
LDkgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0U2l6ZUZyb21Gb250KFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgSW50U2l6ZSogc2l6ZXMpIGMKICAgICAvLyBGSVhNRTogQ2hlY2sgaXMgZmxh
d2VkLCBzaW5jZSBpdCBkb2Vzbid0IHRha2UgbWluLXdpZHRoL21heC13aWR0aCBpbnRvIGFjY291
bnQuCiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvckZvbnQoc3R5bGUsIHNpemVzKTsKICAgICBp
ZiAoc3R5bGUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmIHNpemUud2lkdGgoKSA+IDAp
Ci0gICAgICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7Cisg
ICAgICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIExlbmd0aFR5cGU6OkZp
eGVkKSk7CiAgICAgaWYgKHN0eWxlLmhlaWdodCgpLmlzQXV0bygpICYmIHNpemUuaGVpZ2h0KCkg
PiAwKQotICAgICAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKHNpemUuaGVpZ2h0KCksIEZpeGVk
KSk7CisgICAgICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpKTsKIH0KIAogdm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0Rm9udEZyb21Db250
cm9sU2l6ZShSZW5kZXJTdHlsZSYgc3R5bGUsIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUpIGNv
bnN0CkBAIC0xMDY5LDkgKzEwNjksOSBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RMaXN0
QnV0dG9uU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KikgYwogewogICAg
IC8vIEFkZCBhIG1hcmdpbiB0byBwbGFjZSB0aGUgYnV0dG9uIGF0IGVuZCBvZiB0aGUgaW5wdXQg
ZmllbGQuCiAgICAgaWYgKHN0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAg
c3R5bGUuc2V0TWFyZ2luUmlnaHQoTGVuZ3RoKC00LCBGaXhlZCkpOworICAgICAgICBzdHlsZS5z
ZXRNYXJnaW5SaWdodChMZW5ndGgoLTQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgZWxzZQot
ICAgICAgICBzdHlsZS5zZXRNYXJnaW5MZWZ0KExlbmd0aCgtNCwgRml4ZWQpKTsKKyAgICAgICAg
c3R5bGUuc2V0TWFyZ2luTGVmdChMZW5ndGgoLTQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiB9CiAK
ICNlbmRpZgpAQCAtMTYwNiw3ICsxNjA2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0
TWVudUxpc3RTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqIGUpIGMKICAg
ICBzdHlsZS5yZXNldFBhZGRpbmcoKTsKIAogICAgIC8vIEhlaWdodCBpcyBsb2NrZWQgdG8gYXV0
by4KLSAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKEF1dG8pKTsKKyAgICBzdHlsZS5zZXRIZWln
aHQoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsKIAogICAgIC8vIFdoaXRlLXNwYWNlIGlzIGxv
Y2tlZCB0byBwcmUKICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRlU3BhY2U6OlByZSk7CkBA
IC0xNjgzLDcgKzE2ODMsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdEJ1
dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudAogICAgIHN0eWxlLnNl
dEJvcmRlclJhZGl1cyhJbnRTaXplKGludChiYXNlQm9yZGVyUmFkaXVzICsgZm9udFNjYWxlIC0g
MSksIGludChiYXNlQm9yZGVyUmFkaXVzICsgZm9udFNjYWxlIC0gMSkpKTsgLy8gRklYTUU6IFJv
dW5kIHVwPwogCiAgICAgY29uc3QgaW50IG1pbkhlaWdodCA9IDE1OwotICAgIHN0eWxlLnNldE1p
bkhlaWdodChMZW5ndGgobWluSGVpZ2h0LCBGaXhlZCkpOworICAgIHN0eWxlLnNldE1pbkhlaWdo
dChMZW5ndGgobWluSGVpZ2h0LCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogCiAgICAgc3R5bGUuc2V0
TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CiB9CkBAIC0xOTI5
LDE1ICsxOTI5LDE1IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkU3R5
bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KikKICAgICBzZXRGb250RnJvbUNv
bnRyb2xTaXplKHN0eWxlLCBjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpKTsKIAogICAgIC8vIE92
ZXJyaWRlIGhlaWdodC4KLSAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKEF1dG8pKTsKKyAgICBz
dHlsZS5zZXRIZWlnaHQoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsKICAgICBzZXRTZWFyY2hG
aWVsZFNpemUoc3R5bGUpOwogCiAgICAgLy8gT3ZlcnJpZGUgcGFkZGluZyBzaXplIHRvIG1hdGNo
IEFwcEtpdCB0ZXh0IHBvc2l0aW9uaW5nLgogICAgIGNvbnN0IGludCBwYWRkaW5nID0gMSAqIHN0
eWxlLmVmZmVjdGl2ZVpvb20oKTsKLSAgICBzdHlsZS5zZXRQYWRkaW5nTGVmdChMZW5ndGgocGFk
ZGluZywgRml4ZWQpKTsKLSAgICBzdHlsZS5zZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKHBhZGRpbmcs
IEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0UGFkZGluZ1RvcChMZW5ndGgocGFkZGluZywgRml4ZWQp
KTsKLSAgICBzdHlsZS5zZXRQYWRkaW5nQm90dG9tKExlbmd0aChwYWRkaW5nLCBGaXhlZCkpOwor
ICAgIHN0eWxlLnNldFBhZGRpbmdMZWZ0KExlbmd0aChwYWRkaW5nLCBMZW5ndGhUeXBlOjpGaXhl
ZCkpOworICAgIHN0eWxlLnNldFBhZGRpbmdSaWdodChMZW5ndGgocGFkZGluZywgTGVuZ3RoVHlw
ZTo6Rml4ZWQpKTsKKyAgICBzdHlsZS5zZXRQYWRkaW5nVG9wKExlbmd0aChwYWRkaW5nLCBMZW5n
dGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKHBhZGRp
bmcsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAKICAgICBzdHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0
cik7CiB9CkBAIC0yMDA1LDggKzIwMDUsOCBAQCBjb25zdCBJbnRTaXplKiBSZW5kZXJUaGVtZU1h
Yzo6Y2FuY2VsQnV0dG9uU2l6ZXMoKSBjb25zdAogdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0
U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVs
ZW1lbnQqKSBjb25zdAogewogICAgIEludFNpemUgc2l6ZSA9IHNpemVGb3JTeXN0ZW1Gb250KHN0
eWxlLCBjYW5jZWxCdXR0b25TaXplcygpKTsKLSAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6
ZS53aWR0aCgpLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWln
aHQoKSwgRml4ZWQpKTsKKyAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBM
ZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWln
aHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICBzdHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0
cik7CiB9CiAKQEAgLTIwMjEsOCArMjAyMSw4IEBAIGNvbnN0IGludCBlbXB0eVJlc3VsdHNPZmZz
ZXQgPSA5Owogdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9u
UGFydFN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGNvbnN0CiB7CiAg
ICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQoc3R5bGUsIHJlc3VsdHNCdXR0b25T
aXplcygpKTsKLSAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpIC0gZW1wdHlS
ZXN1bHRzT2Zmc2V0LCBGaXhlZCkpOwotICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5o
ZWlnaHQoKSwgRml4ZWQpKTsKKyAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgp
IC0gZW1wdHlSZXN1bHRzT2Zmc2V0LCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNl
dEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICBz
dHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAKQEAgLTIwMzQsOCArMjAzNCw4IEBAIGJv
b2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydChjb25zdCBS
ZW5kZXJPYmplY3QmLCBjb25zdCBQCiB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hG
aWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydFN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
RWxlbWVudCopIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQo
c3R5bGUsIHJlc3VsdHNCdXR0b25TaXplcygpKTsKLSAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgo
c2l6ZS53aWR0aCgpLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5o
ZWlnaHQoKSwgRml4ZWQpKTsKKyAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgp
LCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5o
ZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICBzdHlsZS5zZXRCb3hTaGFkb3cobnVs
bHB0cik7CiB9CiAKQEAgLTIwNzAsOCArMjA3MCw4IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBh
aW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyQm94JiBib3gs
CiB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHls
ZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqKSBjb25zdAogewogICAgIEludFNp
emUgc2l6ZSA9IHNpemVGb3JTeXN0ZW1Gb250KHN0eWxlLCByZXN1bHRzQnV0dG9uU2l6ZXMoKSk7
Ci0gICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSArIHJlc3VsdHNBcnJvd1dp
ZHRoLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwg
Rml4ZWQpKTsKKyAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpICsgcmVzdWx0
c0Fycm93V2lkdGgsIExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAgc3R5bGUuc2V0SGVpZ2h0KExl
bmd0aChzaXplLmhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgIHN0eWxlLnNldEJv
eFNoYWRvdyhudWxscHRyKTsKIH0KIApAQCAtMjE1Miw4ICsyMTUyLDggQEAgdm9pZCBSZW5kZXJU
aGVtZU1hYzo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
RWxlbWVudCopIGMKIHsKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBzdHlsZS5lZmZlY3RpdmVab29t
KCk7CiAgICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQ
YXJ0IHx8IHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkgewot
ICAgICAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihzbGlkZXJUaHVt
YldpZHRoICogem9vbUxldmVsKSwgRml4ZWQpKTsKLSAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KExl
bmd0aChzdGF0aWNfY2FzdDxpbnQ+KHNsaWRlclRodW1iSGVpZ2h0ICogem9vbUxldmVsKSwgRml4
ZWQpKTsKKyAgICAgICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKHN0YXRpY19jYXN0PGludD4oc2xp
ZGVyVGh1bWJXaWR0aCAqIHpvb21MZXZlbCksIExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAgICAg
IHN0eWxlLnNldEhlaWdodChMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihzbGlkZXJUaHVtYkhlaWdo
dCAqIHpvb21MZXZlbCksIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCAwYzIyMmQ1OWJiNmUz
MGExNDEzYWJlZGVlOWNlMGQxMzZjZTVkYjg1Li5kOTc2MzA0ZjhiZDc1YTdkN2I1N2I4ZmI5NTAx
M2RhZjY0NmI0MTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAKQEAgLTY4Myw4ICs2ODMsOCBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RJbm5l
clNwaW5CdXR0b25TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbgogICAgIGlu
dCB3aWR0aCA9IDo6R2V0U3lzdGVtTWV0cmljcyhTTV9DWFZTQ1JPTEwpOwogICAgIGlmICh3aWR0
aCA8PSAwKQogICAgICAgICB3aWR0aCA9IDE3OyAvLyBWaXN0YSdzIGRlZmF1bHQuCi0gICAgc3R5
bGUuc2V0V2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldE1pbldpZHRo
KExlbmd0aCh3aWR0aCwgRml4ZWQpKTsKKyAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgod2lkdGgs
IExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAgc3R5bGUuc2V0TWluV2lkdGgoTGVuZ3RoKHdpZHRo
LCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogfQogCiBib29sIFJlbmRlclRoZW1lV2luOjpwYWludElu
bmVyU3BpbkJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwg
Y29uc3QgSW50UmVjdCYgcikKQEAgLTcxNCw5ICs3MTQsOSBAQCB2b2lkIFJlbmRlclRoZW1lV2lu
OjpzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogICAgIC8vIHRoZSBo
aWdoZXIgRFBJLiAgVW50aWwgb3VyIGVudGlyZSBlbmdpbmUgaG9ub3JzIGEgRFBJIHNldHRpbmcg
b3RoZXIgdGhhbiA5Niwgd2UgY2FuJ3QgcmVseSBvbiB0aGUgdGhlbWUncwogICAgIC8vIG1ldHJp
Y3MuCiAgICAgaWYgKHN0eWxlLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSkKLSAgICAgICAg
c3R5bGUuc2V0V2lkdGgoTGVuZ3RoKDEzLCBGaXhlZCkpOworICAgICAgICBzdHlsZS5zZXRXaWR0
aChMZW5ndGgoMTMsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgaWYgKHN0eWxlLmhlaWdodCgp
LmlzQXV0bygpKQotICAgICAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKDEzLCBGaXhlZCkpOwor
ICAgICAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKDEzLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwog
fQogCiBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFRleHRGaWVsZChjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgRmxvYXRSZWN0JiByKQpAQCAtNzYxLDE5
ICs3NjEsMTkgQEAgdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHls
ZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQKICAgICBjb25zdCBpbnQgZHJvcERv
d25Cb3hNaW5IZWlnaHQgPSAxMjsKICAgICAKICAgICAvLyBQb3NpdGlvbiB0aGUgdGV4dCBjb3Jy
ZWN0bHkgd2l0aGluIHRoZSBzZWxlY3QgYm94IGFuZCBtYWtlIHRoZSBib3ggd2lkZSBlbm91Z2gg
dG8gZml0IHRoZSBkcm9wZG93biBidXR0b24KLSAgICBzdHlsZS5zZXRQYWRkaW5nVG9wKExlbmd0
aChkcm9wRG93bkJveFBhZGRpbmdUb3AsIEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0UGFkZGluZ1Jp
Z2h0KExlbmd0aChkcm9wRG93bkJveFBhZGRpbmdSaWdodCwgRml4ZWQpKTsKLSAgICBzdHlsZS5z
ZXRQYWRkaW5nQm90dG9tKExlbmd0aChkcm9wRG93bkJveFBhZGRpbmdCb3R0b20sIEZpeGVkKSk7
Ci0gICAgc3R5bGUuc2V0UGFkZGluZ0xlZnQoTGVuZ3RoKGRyb3BEb3duQm94UGFkZGluZ0xlZnQs
IEZpeGVkKSk7CisgICAgc3R5bGUuc2V0UGFkZGluZ1RvcChMZW5ndGgoZHJvcERvd25Cb3hQYWRk
aW5nVG9wLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldFBhZGRpbmdSaWdodChM
ZW5ndGgoZHJvcERvd25Cb3hQYWRkaW5nUmlnaHQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAg
c3R5bGUuc2V0UGFkZGluZ0JvdHRvbShMZW5ndGgoZHJvcERvd25Cb3hQYWRkaW5nQm90dG9tLCBM
ZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldFBhZGRpbmdMZWZ0KExlbmd0aChkcm9w
RG93bkJveFBhZGRpbmdMZWZ0LCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogCiAgICAgLy8gSGVpZ2h0
IGlzIGxvY2tlZCB0byBhdXRvCi0gICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChBdXRvKSk7Cisg
ICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7CiAKICAgICAvLyBD
YWxjdWxhdGUgb3VyIG1pbi1oZWlnaHQKICAgICBpbnQgbWluSGVpZ2h0ID0gc3R5bGUuZm9udE1l
dHJpY3MoKS5oZWlnaHQoKTsKICAgICBtaW5IZWlnaHQgPSBzdGQ6Om1heChtaW5IZWlnaHQsIGRy
b3BEb3duQm94TWluSGVpZ2h0KTsKIAotICAgIHN0eWxlLnNldE1pbkhlaWdodChMZW5ndGgobWlu
SGVpZ2h0LCBGaXhlZCkpOworICAgIHN0eWxlLnNldE1pbkhlaWdodChMZW5ndGgobWluSGVpZ2h0
LCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogCiAgICAgc3R5bGUuc2V0TGluZUhlaWdodChSZW5kZXJT
dHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CiAgICAgCkBAIC04MzUsMTEgKzgzNSwxMSBAQCB2
b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb25zdCBFbGVtZW50KikgYwogewogICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBzdHlsZS5h
cHBlYXJhbmNlKCk7CiAgICAgaWYgKHBhcnQgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpIHsK
LSAgICAgICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKHNsaWRlclRodW1iSGVpZ2h0LCBGaXhlZCkp
OwotICAgICAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKHNsaWRlclRodW1iV2lkdGgsIEZpeGVk
KSk7CisgICAgICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChzbGlkZXJUaHVtYkhlaWdodCwgTGVu
Z3RoVHlwZTo6Rml4ZWQpKTsKKyAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChzbGlkZXJU
aHVtYldpZHRoLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgIH0gZWxzZSBpZiAocGFydCA9PSBT
bGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KSB7Ci0gICAgICAgIHN0eWxlLnNldFdpZHRoKExlbmd0
aChzbGlkZXJUaHVtYldpZHRoLCBGaXhlZCkpOwotICAgICAgICBzdHlsZS5zZXRIZWlnaHQoTGVu
Z3RoKHNsaWRlclRodW1iSGVpZ2h0LCBGaXhlZCkpOworICAgICAgICBzdHlsZS5zZXRXaWR0aChM
ZW5ndGgoc2xpZGVyVGh1bWJXaWR0aCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKKyAgICAgICAgc3R5
bGUuc2V0SGVpZ2h0KExlbmd0aChzbGlkZXJUaHVtYkhlaWdodCwgTGVuZ3RoVHlwZTo6Rml4ZWQp
KTsKICAgICB9CiB9CiAKQEAgLTg1MiwxMCArODUyLDEwIEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46
OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50
KiBlCiB7CiAgICAgLy8gT3ZlcnJpZGUgcGFkZGluZ1NpemUgdG8gbWF0Y2ggQXBwS2l0IHRleHQg
cG9zaXRpb25pbmcuCiAgICAgY29uc3QgaW50IHBhZGRpbmcgPSAxOwotICAgIHN0eWxlLnNldFBh
ZGRpbmdMZWZ0KExlbmd0aChwYWRkaW5nLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldFBhZGRpbmdS
aWdodChMZW5ndGgocGFkZGluZywgRml4ZWQpKTsKLSAgICBzdHlsZS5zZXRQYWRkaW5nVG9wKExl
bmd0aChwYWRkaW5nLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldFBhZGRpbmdCb3R0b20oTGVuZ3Ro
KHBhZGRpbmcsIEZpeGVkKSk7CisgICAgc3R5bGUuc2V0UGFkZGluZ0xlZnQoTGVuZ3RoKHBhZGRp
bmcsIExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAgc3R5bGUuc2V0UGFkZGluZ1JpZ2h0KExlbmd0
aChwYWRkaW5nLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldFBhZGRpbmdUb3Ao
TGVuZ3RoKHBhZGRpbmcsIExlbmd0aFR5cGU6OkZpeGVkKSk7CisgICAgc3R5bGUuc2V0UGFkZGlu
Z0JvdHRvbShMZW5ndGgocGFkZGluZywgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICBpZiAoZSAm
JiBlLT5mb2N1c2VkKCkgJiYgZS0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5zZWxlY3Rpb24oKS5pc0Zv
Y3VzZWRBbmRBY3RpdmUoKSkKICAgICAgICAgc3R5bGUuc2V0T3V0bGluZU9mZnNldCgtMik7CiB9
CkBAIC04ODgsMTUgKzg4OCwxNSBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29ucwogICAgIC8vIFNj
YWxlIHRoZSBidXR0b24gc2l6ZSBiYXNlZCBvbiB0aGUgZm9udCBzaXplCiAgICAgZmxvYXQgZm9u
dFNjYWxlID0gc3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkgLyBkZWZhdWx0Q29udHJvbEZv
bnRQaXhlbFNpemU7CiAgICAgaW50IGNhbmNlbEJ1dHRvblNpemUgPSBscm91bmRmKHN0ZDo6bWlu
KHN0ZDo6bWF4KG1pbkNhbmNlbEJ1dHRvblNpemUsIGRlZmF1bHRDYW5jZWxCdXR0b25TaXplICog
Zm9udFNjYWxlKSwgbWF4Q2FuY2VsQnV0dG9uU2l6ZSkpOwotICAgIHN0eWxlLnNldFdpZHRoKExl
bmd0aChjYW5jZWxCdXR0b25TaXplLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldEhlaWdodChMZW5n
dGgoY2FuY2VsQnV0dG9uU2l6ZSwgRml4ZWQpKTsKKyAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgo
Y2FuY2VsQnV0dG9uU2l6ZSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKKyAgICBzdHlsZS5zZXRIZWln
aHQoTGVuZ3RoKGNhbmNlbEJ1dHRvblNpemUsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiB9CiAKIHZv
aWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblBhcnRTdHlsZShS
ZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqKSBjb25zdAogewogICAgIEludFNpemUg
ZW1wdHlTaXplKDEsIDExKTsKLSAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoZW1wdHlTaXplLndp
ZHRoKCksIEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChlbXB0eVNpemUuaGVp
Z2h0KCksIEZpeGVkKSk7CisgICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKGVtcHR5U2l6ZS53aWR0
aCgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoZW1w
dHlTaXplLmhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogfQogCiB2b2lkIFJlbmRlclRo
ZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydFN0eWxlKFJlbmRl
clN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGNvbnN0CkBAIC05MDUsOCArOTA1LDggQEAg
dm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBh
cnRTdHlsZShSZW5kZXJTdHlsZSYgc3QKICAgICBmbG9hdCBmb250U2NhbGUgPSBzdHlsZS5jb21w
dXRlZEZvbnRQaXhlbFNpemUoKSAvIGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZTsKICAgICBp
bnQgbWFnbmlmaWVyU2l6ZSA9IGxyb3VuZGYoc3RkOjptaW4oc3RkOjptYXgobWluU2VhcmNoRmll
bGRSZXN1bHRzRGVjb3JhdGlvblNpemUsIGRlZmF1bHRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0
aW9uU2l6ZSAqIGZvbnRTY2FsZSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1heFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TaXplKSk7Ci0gICAgc3R5bGUuc2V0
V2lkdGgoTGVuZ3RoKG1hZ25pZmllclNpemUsIEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0SGVpZ2h0
KExlbmd0aChtYWduaWZpZXJTaXplLCBGaXhlZCkpOworICAgIHN0eWxlLnNldFdpZHRoKExlbmd0
aChtYWduaWZpZXJTaXplLCBMZW5ndGhUeXBlOjpGaXhlZCkpOworICAgIHN0eWxlLnNldEhlaWdo
dChMZW5ndGgobWFnbmlmaWVyU2l6ZSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKIH0KIAogYm9vbCBS
ZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25z
dCBSZW5kZXJCb3gmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByKQpAQCAtOTM4LDggKzkzOCw4IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uCiAgICAgaW50
IG1hZ25pZmllckhlaWdodCA9IGxyb3VuZGYoc3RkOjptaW4oc3RkOjptYXgobWluU2VhcmNoRmll
bGRSZXN1bHRzRGVjb3JhdGlvblNpemUsIGRlZmF1bHRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0
aW9uU2l6ZSAqIGZvbnRTY2FsZSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXhTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU2l6ZSkpOwogICAgIGludCBtYWduaWZp
ZXJXaWR0aCA9IGxyb3VuZGYobWFnbmlmaWVySGVpZ2h0ICogZGVmYXVsdFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvbldpZHRoIC8gZGVmYXVsdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TaXpl
KTsKLSAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgobWFnbmlmaWVyV2lkdGgsIEZpeGVkKSk7Ci0g
ICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChtYWduaWZpZXJIZWlnaHQsIEZpeGVkKSk7CisgICAg
c3R5bGUuc2V0V2lkdGgoTGVuZ3RoKG1hZ25pZmllcldpZHRoLCBMZW5ndGhUeXBlOjpGaXhlZCkp
OworICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgobWFnbmlmaWVySGVpZ2h0LCBMZW5ndGhUeXBl
OjpGaXhlZCkpOwogfQogCiBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvbihjb25zdCBSZW5kZXJCb3gmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBJbnRSZWN0JiByKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRBdXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1Np
emluZy5jcHAKaW5kZXggYWMwZWEwNTJmMGIzZmQzNjJkMTI3MWQwZDY0YTQwNWY5ZGU3OWIxYi4u
YWIzNmJkMGQxMmJhYmVjMDIxYmVlODc4MzM2ODJmOWE4MmVmODI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgYXV0
byBUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3RUZXh0Tm9kZVNpemVzKCkgLT4gU3RpbGxIYXNO
b2RlcwogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBuZXdQYXJlbnRTdHls
ZSA9IGNsb25lUmVuZGVyU3R5bGVXaXRoU3RhdGUocGFyZW50U3R5bGUpOwotICAgICAgICBuZXdQ
YXJlbnRTdHlsZS5zZXRMaW5lSGVpZ2h0KGxpbmVIZWlnaHRMZW5ndGguaXNOZWdhdGl2ZSgpID8g
TGVuZ3RoKGxpbmVIZWlnaHRMZW5ndGgpIDogTGVuZ3RoKGxpbmVIZWlnaHQsIEZpeGVkKSk7Cisg
ICAgICAgIG5ld1BhcmVudFN0eWxlLnNldExpbmVIZWlnaHQobGluZUhlaWdodExlbmd0aC5pc05l
Z2F0aXZlKCkgPyBMZW5ndGgobGluZUhlaWdodExlbmd0aCkgOiBMZW5ndGgobGluZUhlaWdodCwg
TGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0U3BlY2lmaWVk
TGluZUhlaWdodChMZW5ndGggeyBsaW5lSGVpZ2h0TGVuZ3RoIH0pOwogICAgICAgICBuZXdQYXJl
bnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKICAg
ICAgICAgbmV3UGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUoJm5vZGUtPmRvY3VtZW50
KCkuZm9udFNlbGVjdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9C
YXNpY1NoYXBlcy5jcHAKaW5kZXggMmQ5ZGVhMzVkNmI0NDNmYmE3YmRkZjljMzU3MjllZWY0Mjdm
NjA4NC4uOGRkYzE3MjlhYzhmZTVlNmM1ZTZjYWU1MjUzZWRiNjIzNDMxMzdmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC00OSwxMiAr
NDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBCYXNpY1NoYXBlQ2VudGVyQ29vcmRp
bmF0ZTo6dXBkYXRlQ29tcHV0ZWRMZW5ndGgoKQogewogICAgIGlmIChtX2RpcmVjdGlvbiA9PSBU
b3BMZWZ0KSB7Ci0gICAgICAgIG1fY29tcHV0ZWRMZW5ndGggPSBtX2xlbmd0aC5pc1VuZGVmaW5l
ZCgpID8gTGVuZ3RoKDAsIEZpeGVkKSA6IG1fbGVuZ3RoOworICAgICAgICBtX2NvbXB1dGVkTGVu
Z3RoID0gbV9sZW5ndGguaXNVbmRlZmluZWQoKSA/IExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhl
ZCkgOiBtX2xlbmd0aDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX2xlbmd0
aC5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIG1fY29tcHV0ZWRMZW5ndGggPSBMZW5ndGgoMTAw
LCBQZXJjZW50KTsKKyAgICAgICAgbV9jb21wdXRlZExlbmd0aCA9IExlbmd0aCgxMDAsIExlbmd0
aFR5cGU6OlBlcmNlbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAppbmRleCA3NTc2YTQ1ZDU3MmFl
ZjJmOTIzYmIwNThiMjdkOTU0NTE4YmNmYmI3Li44NTUwY2Y5MjBiZWJiZTQ1ZWI3NDY1ZDhjMjg1
YmFmODg0NTZmYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZXMuaApAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDb21w
dXRlZExlbmd0aCgpOwogCiAgICAgRGlyZWN0aW9uIG1fZGlyZWN0aW9uIHsgVG9wTGVmdCB9Owot
ICAgIExlbmd0aCBtX2xlbmd0aCB7IFVuZGVmaW5lZCB9OworICAgIExlbmd0aCBtX2xlbmd0aCB7
IExlbmd0aFR5cGU6OlVuZGVmaW5lZCB9OwogICAgIExlbmd0aCBtX2NvbXB1dGVkTGVuZ3RoOwog
fTsKIApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3R5cGUoVmFsdWUp
CiAgICAgeyB9CiAgICAgZXhwbGljaXQgQmFzaWNTaGFwZVJhZGl1cyhUeXBlIHQpCi0gICAgICAg
IDogbV92YWx1ZShVbmRlZmluZWQpCisgICAgICAgIDogbV92YWx1ZShMZW5ndGhUeXBlOjpVbmRl
ZmluZWQpCiAgICAgICAgICwgbV90eXBlKHQpCiAgICAgeyB9CiAKQEAgLTE1OCw3ICsxNTgsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIExlbmd0aCBtX3ZhbHVlIHsgVW5kZWZp
bmVkIH07CisgICAgTGVuZ3RoIG1fdmFsdWUgeyBMZW5ndGhUeXBlOjpVbmRlZmluZWQgfTsKICAg
ICBUeXBlIG1fdHlwZSB7IENsb3Nlc3RTaWRlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAppbmRleCA2ZmQ1YjAzZWRjZTIxNTIzZDEwNzg1YmVh
MmNiOGVlZjU2MDk4OWNiLi43YzA0OGZiYjIzZTZhMjc2NjQ2Y2VkNjUwNjU3ZjBmNGQyZjYwOGU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKQEAgLTM2
LDEwICszNiwxMCBAQCBjbGFzcyBCb3JkZXJEYXRhIHsKIGZyaWVuZCBjbGFzcyBSZW5kZXJTdHls
ZTsKIHB1YmxpYzoKICAgICBCb3JkZXJEYXRhKCkKLSAgICAgICAgOiBtX3RvcExlZnRSYWRpdXMg
eyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9Ci0gICAgICAgICwgbV90b3BSaWdodFJhZGl1
cyB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH0KLSAgICAgICAgLCBtX2JvdHRvbUxlZnRS
YWRpdXMgeyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9Ci0gICAgICAgICwgbV9ib3R0b21S
aWdodFJhZGl1cyB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH0KKyAgICAgICAgOiBtX3Rv
cExlZnRSYWRpdXMgeyB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgMCwgTGVuZ3RoVHlwZTo6
Rml4ZWQgfSB9CisgICAgICAgICwgbV90b3BSaWdodFJhZGl1cyB7IHsgMCwgTGVuZ3RoVHlwZTo6
Rml4ZWQgfSwgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9IH0KKyAgICAgICAgLCBtX2JvdHRvbUxl
ZnRSYWRpdXMgeyB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgMCwgTGVuZ3RoVHlwZTo6Rml4
ZWQgfSB9CisgICAgICAgICwgbV9ib3R0b21SaWdodFJhZGl1cyB7IHsgMCwgTGVuZ3RoVHlwZTo6
Rml4ZWQgfSwgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9IH0KICAgICB7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKaW5kZXggOTdjZDgzM2ZjOWNi
M2NjMDc5N2MyNmU3N2NiOGJkN2ZiNzg1MGU0NC4uYWVkYWZmZGYzZWE3MTU0MGY2N2QwNTFkMTdl
YTEyMzJlMzIzMzE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0ZpbGxMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5
ZXIuaApAQCAtMTY5LDggKzE2OSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29tcG9zaXRlT3Bl
cmF0b3IgaW5pdGlhbEZpbGxDb21wb3NpdGUoRmlsbExheWVyVHlwZSkgeyByZXR1cm4gQ29tcG9z
aXRlT3BlcmF0b3I6OlNvdXJjZU92ZXI7IH0KICAgICBzdGF0aWMgQmxlbmRNb2RlIGluaXRpYWxG
aWxsQmxlbmRNb2RlKEZpbGxMYXllclR5cGUpIHsgcmV0dXJuIEJsZW5kTW9kZTo6Tm9ybWFsOyB9
CiAgICAgc3RhdGljIEZpbGxTaXplIGluaXRpYWxGaWxsU2l6ZShGaWxsTGF5ZXJUeXBlKSB7IHJl
dHVybiB7IH07IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxGaWxsWFBvc2l0aW9uKEZpbGxM
YXllclR5cGUpIHsgcmV0dXJuIExlbmd0aCgwLjBmLCBQZXJjZW50KTsgfQotICAgIHN0YXRpYyBM
ZW5ndGggaW5pdGlhbEZpbGxZUG9zaXRpb24oRmlsbExheWVyVHlwZSkgeyByZXR1cm4gTGVuZ3Ro
KDAuMGYsIFBlcmNlbnQpOyB9CisgICAgc3RhdGljIExlbmd0aCBpbml0aWFsRmlsbFhQb3NpdGlv
bihGaWxsTGF5ZXJUeXBlKSB7IHJldHVybiBMZW5ndGgoMC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2Vu
dCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxGaWxsWVBvc2l0aW9uKEZpbGxMYXllclR5
cGUpIHsgcmV0dXJuIExlbmd0aCgwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsgfQogICAgIHN0
YXRpYyBTdHlsZUltYWdlKiBpbml0aWFsRmlsbEltYWdlKEZpbGxMYXllclR5cGUpIHsgcmV0dXJu
IG51bGxwdHI7IH0KICAgICBzdGF0aWMgTWFza1NvdXJjZVR5cGUgaW5pdGlhbEZpbGxNYXNrU291
cmNlVHlwZShGaWxsTGF5ZXJUeXBlKSB7IHJldHVybiBNYXNrU291cmNlVHlwZTo6QWxwaGE7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1Np
emUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkVHJhY2tTaXplLmgKaW5k
ZXggZDMzM2E4N2I2YjI4ODhkNmYzZjZlMDIzZDgzZDQzYzllYWUzODI4ZC4uNzhlNjVjYzczNzg2
OWFhYmMwODA1ZmQ1NTM4ODQ1OWM5OTYyZjdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oCkBAIC01Niw5ICs1Niw5IEBAIGNsYXNzIEdyaWRU
cmFja1NpemUgewogcHVibGljOgogICAgIEdyaWRUcmFja1NpemUoY29uc3QgR3JpZExlbmd0aCYg
bGVuZ3RoLCBHcmlkVHJhY2tTaXplVHlwZSB0cmFja1NpemVUeXBlID0gTGVuZ3RoVHJhY2tTaXpp
bmcpCiAgICAgICAgIDogbV90eXBlKHRyYWNrU2l6ZVR5cGUpCi0gICAgICAgICwgbV9taW5UcmFj
a0JyZWFkdGgodHJhY2tTaXplVHlwZSA9PSBGaXRDb250ZW50VHJhY2tTaXppbmcgPyBMZW5ndGgo
QXV0bykgOiBsZW5ndGgpCi0gICAgICAgICwgbV9tYXhUcmFja0JyZWFkdGgodHJhY2tTaXplVHlw
ZSA9PSBGaXRDb250ZW50VHJhY2tTaXppbmcgPyBMZW5ndGgoQXV0bykgOiBsZW5ndGgpCi0gICAg
ICAgICwgbV9maXRDb250ZW50VHJhY2tCcmVhZHRoKHRyYWNrU2l6ZVR5cGUgPT0gRml0Q29udGVu
dFRyYWNrU2l6aW5nID8gbGVuZ3RoIDogR3JpZExlbmd0aChMZW5ndGgoRml4ZWQpKSkKKyAgICAg
ICAgLCBtX21pblRyYWNrQnJlYWR0aCh0cmFja1NpemVUeXBlID09IEZpdENvbnRlbnRUcmFja1Np
emluZyA/IExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSA6IGxlbmd0aCkKKyAgICAgICAgLCBtX21h
eFRyYWNrQnJlYWR0aCh0cmFja1NpemVUeXBlID09IEZpdENvbnRlbnRUcmFja1NpemluZyA/IExl
bmd0aChMZW5ndGhUeXBlOjpBdXRvKSA6IGxlbmd0aCkKKyAgICAgICAgLCBtX2ZpdENvbnRlbnRU
cmFja0JyZWFkdGgodHJhY2tTaXplVHlwZSA9PSBGaXRDb250ZW50VHJhY2tTaXppbmcgPyBsZW5n
dGggOiBHcmlkTGVuZ3RoKExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKHRyYWNrU2l6ZVR5cGUgPT0gTGVuZ3RoVHJhY2tTaXppbmcgfHwgdHJhY2tTaXpl
VHlwZSA9PSBGaXRDb250ZW50VHJhY2tTaXppbmcpOwogICAgICAgICBBU1NFUlQodHJhY2tTaXpl
VHlwZSAhPSBGaXRDb250ZW50VHJhY2tTaXppbmcgfHwgbGVuZ3RoLmlzTGVuZ3RoKCkpOwpAQCAt
NjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV90eXBlKE1pbk1heFRyYWNrU2l6aW5n
KQogICAgICAgICAsIG1fbWluVHJhY2tCcmVhZHRoKG1pblRyYWNrQnJlYWR0aCkKICAgICAgICAg
LCBtX21heFRyYWNrQnJlYWR0aChtYXhUcmFja0JyZWFkdGgpCi0gICAgICAgICwgbV9maXRDb250
ZW50VHJhY2tCcmVhZHRoKEdyaWRMZW5ndGgoTGVuZ3RoKEZpeGVkKSkpCisgICAgICAgICwgbV9m
aXRDb250ZW50VHJhY2tCcmVhZHRoKEdyaWRMZW5ndGgoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVk
KSkpCiAgICAgewogICAgICAgICBjYWNoZU1pbk1heFRyYWNrQnJlYWR0aFR5cGVzKCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUlt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaApp
bmRleCBkMzUzZDg3OThmZDExZjZhNjIzYjBkMjFhMjI5OGM2NDUyODkyYTM0Li4xNGMzMzVkNzg4
NWQ2NTUyYTIyNzFkYzE3MjA4Yzc0ZDlhMGM3OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaApAQCAtMTk4LDggKzE5OCw4IEBAIHByaXZh
dGU6CiAgICAgICAgIE5pbmVQaWVjZUltYWdlUnVsZSBob3Jpem9udGFsUnVsZSB7IE5pbmVQaWVj
ZUltYWdlUnVsZTo6U3RyZXRjaCB9OwogICAgICAgICBOaW5lUGllY2VJbWFnZVJ1bGUgdmVydGlj
YWxSdWxlIHsgTmluZVBpZWNlSW1hZ2VSdWxlOjpTdHJldGNoIH07CiAgICAgICAgIFJlZlB0cjxT
dHlsZUltYWdlPiBpbWFnZTsKLSAgICAgICAgTGVuZ3RoQm94IGltYWdlU2xpY2VzIHsgeyAxMDAs
IFBlcmNlbnQgfSwgeyAxMDAsIFBlcmNlbnQgfSwgeyAxMDAsIFBlcmNlbnQgfSwgeyAxMDAsIFBl
cmNlbnQgfSB9OwotICAgICAgICBMZW5ndGhCb3ggYm9yZGVyU2xpY2VzIHsgeyAxLCBSZWxhdGl2
ZSB9LCB7IDEsIFJlbGF0aXZlIH0sIHsgMSwgUmVsYXRpdmUgfSwgeyAxLCBSZWxhdGl2ZSB9IH07
CisgICAgICAgIExlbmd0aEJveCBpbWFnZVNsaWNlcyB7IHsgMTAwLCBMZW5ndGhUeXBlOjpQZXJj
ZW50IH0sIHsgMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50IH0sIHsgMTAwLCBMZW5ndGhUeXBlOjpQ
ZXJjZW50IH0sIHsgMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50IH0gfTsKKyAgICAgICAgTGVuZ3Ro
Qm94IGJvcmRlclNsaWNlcyB7IHsgMSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUgfSwgeyAxLCBMZW5n
dGhUeXBlOjpSZWxhdGl2ZSB9LCB7IDEsIExlbmd0aFR5cGU6OlJlbGF0aXZlIH0sIHsgMSwgTGVu
Z3RoVHlwZTo6UmVsYXRpdmUgfSB9OwogICAgICAgICBMZW5ndGhCb3ggb3V0c2V0IHsgMCB9Owog
CiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCmluZGV4IDg5MWQ0M2JkMTA3ZGY0MGQ2MGEwMmY0M2U5NDQ2Y2M2MDJkMDgyNTYu
LjJhYTdjZWE2YmFhNWM3ZjUwYzVlMWRjNjkzYzE4YTMyYjdiOWRiZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTQzNSw4ICsxNDM1
LDggQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0UGFnZVNjYWxlVHJhbnNmb3JtKGZsb2F0IHNjYWxl
KQogICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgdHJhbnNmb3JtOwogICAgIHRyYW5zZm9ybS5vcGVy
YXRpb25zKCkuYXBwZW5kKFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoc2NhbGUsIHNj
YWxlLCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEUpKTsKICAgICBzZXRUcmFuc2Zvcm0o
dHJhbnNmb3JtKTsKLSAgICBzZXRUcmFuc2Zvcm1PcmlnaW5YKExlbmd0aCgwLCBGaXhlZCkpOwot
ICAgIHNldFRyYW5zZm9ybU9yaWdpblkoTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAgc2V0VHJhbnNm
b3JtT3JpZ2luWChMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKKyAgICBzZXRUcmFuc2Zv
cm1PcmlnaW5ZKExlbmd0aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogfQogCiB2b2lkIFJlbmRl
clN0eWxlOjpzZXRUZXh0U2hhZG93KHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBzaGFkb3dE
YXRhLCBib29sIGFkZCkKQEAgLTE4MjUsMTYgKzE4MjUsMTYgQEAgdm9pZCBSZW5kZXJTdHlsZTo6
c2V0V29yZFNwYWNpbmcoTGVuZ3RoJiYgdmFsdWUpCiB7CiAgICAgZmxvYXQgZm9udFdvcmRTcGFj
aW5nOwogICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7Ci0gICAgY2FzZSBBdXRvOgorICAgIGNh
c2UgTGVuZ3RoVHlwZTo6QXV0bzoKICAgICAgICAgZm9udFdvcmRTcGFjaW5nID0gMDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQZXJjZW50OgorICAgIGNhc2UgTGVuZ3RoVHlwZTo6UGVyY2Vu
dDoKICAgICAgICAgZm9udFdvcmRTcGFjaW5nID0gdmFsdWUucGVyY2VudCgpICogZm9udENhc2Nh
ZGUoKS5zcGFjZVdpZHRoKCkgLyAxMDA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRml4ZWQ6
CisgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXhlZDoKICAgICAgICAgZm9udFdvcmRTcGFjaW5nID0g
dmFsdWUudmFsdWUoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDYWxjdWxhdGVkOgorICAg
IGNhc2UgTGVuZ3RoVHlwZTo6Q2FsY3VsYXRlZDoKICAgICAgICAgZm9udFdvcmRTcGFjaW5nID0g
dmFsdWUubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heFZhbHVlRm9yQ3NzTGVuZ3RoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKaW5kZXggZjE1YWQ3NGI4YTExYjU2Mzg0MWYzNjA0YmVhMjg4MGUwZmI2
MzM2Mi4uMzU5MzdkZTM0NDhiYTQxN2QxZDJiNTcyMGY3ODNmMDY2ZjE1N2Q0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEwMzIsNyArMTAz
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExpc3RTdHlsZUltYWdlKFJlZlB0cjxTdHlsZUlt
YWdlPiYmKTsKICAgICB2b2lkIHNldExpc3RTdHlsZVBvc2l0aW9uKExpc3RTdHlsZVBvc2l0aW9u
IHYpIHsgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbiA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPih2KTsgfQogCi0gICAgdm9pZCByZXNldE1hcmdpbigpIHsgU0VUX1ZBUihtX3N1cnJv
dW5kRGF0YSwgbWFyZ2luLCBMZW5ndGhCb3goRml4ZWQpKTsgfQorICAgIHZvaWQgcmVzZXRNYXJn
aW4oKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG1hcmdpbiwgTGVuZ3RoQm94KExlbmd0aFR5
cGU6OkZpeGVkKSk7IH0KICAgICB2b2lkIHNldE1hcmdpblRvcChMZW5ndGgmJiBsZW5ndGgpIHsg
U0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9
CiAgICAgdm9pZCBzZXRNYXJnaW5Cb3R0b20oTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9z
dXJyb3VuZERhdGEsIG1hcmdpbi5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsgfQogICAgIHZv
aWQgc2V0TWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0
YSwgbWFyZ2luLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQpAQCAtMTQyNSw3ICsxNDI1LDcg
QEAgcHVibGljOgogCiAgICAgY29uc3QgTGVuZ3RoJiBzaGFwZU1hcmdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlTWFyZ2luOyB9CiAgICAgdm9pZCBzZXRT
aGFwZU1hcmdpbihMZW5ndGgmJiBzaGFwZU1hcmdpbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIHNoYXBlTWFyZ2luLCBXVEZNb3ZlKHNoYXBlTWFyZ2luKSk7IH0KLSAgICBzdGF0
aWMgTGVuZ3RoIGluaXRpYWxTaGFwZU1hcmdpbigpIHsgcmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7
IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTaGFwZU1hcmdpbigpIHsgcmV0dXJuIExlbmd0
aCgwLCBMZW5ndGhUeXBlOjpGaXhlZCk7IH0KIAogICAgIGZsb2F0IHNoYXBlSW1hZ2VUaHJlc2hv
bGQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZUltYWdlVGhy
ZXNob2xkOyB9CiAgICAgdm9pZCBzZXRTaGFwZUltYWdlVGhyZXNob2xkKGZsb2F0KTsKQEAgLTE1
MzEsNyArMTUzMSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQm9yZGVyU3R5bGUgaW5pdGlhbEJv
cmRlclN0eWxlKCkgeyByZXR1cm4gQm9yZGVyU3R5bGU6Ok5vbmU7IH0KICAgICBzdGF0aWMgT3V0
bGluZUlzQXV0byBpbml0aWFsT3V0bGluZVN0eWxlSXNBdXRvKCkgeyByZXR1cm4gT3V0bGluZUlz
QXV0bzo6T2ZmOyB9CiAgICAgc3RhdGljIE5pbmVQaWVjZUltYWdlIGluaXRpYWxOaW5lUGllY2VJ
bWFnZSgpIHsgcmV0dXJuIE5pbmVQaWVjZUltYWdlKCk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoU2l6
ZSBpbml0aWFsQm9yZGVyUmFkaXVzKCkgeyByZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4
ZWQgfSB9OyB9CisgICAgc3RhdGljIExlbmd0aFNpemUgaW5pdGlhbEJvcmRlclJhZGl1cygpIHsg
cmV0dXJuIHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAsIExlbmd0aFR5cGU6OkZpeGVk
IH0gfTsgfQogICAgIHN0YXRpYyBDYXB0aW9uU2lkZSBpbml0aWFsQ2FwdGlvblNpZGUoKSB7IHJl
dHVybiBDYXB0aW9uU2lkZTo6VG9wOyB9CiAgICAgc3RhdGljIENvbHVtbkF4aXMgaW5pdGlhbENv
bHVtbkF4aXMoKSB7IHJldHVybiBDb2x1bW5BeGlzOjpBdXRvOyB9CiAgICAgc3RhdGljIENvbHVt
blByb2dyZXNzaW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpIHsgcmV0dXJuIENvbHVtblBy
b2dyZXNzaW9uOjpOb3JtYWw7IH0KQEAgLTE1NDAsNyArMTU0MCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgVGV4dENvbWJpbmUgaW5pdGlhbFRleHRDb21iaW5lKCkgeyByZXR1cm4gVGV4dENvbWJp
bmU6Ok5vbmU7IH0KICAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50
YXRpb24oKSB7IHJldHVybiBUZXh0T3JpZW50YXRpb246Ok1peGVkOyB9CiAgICAgc3RhdGljIE9i
amVjdEZpdCBpbml0aWFsT2JqZWN0Rml0KCkgeyByZXR1cm4gT2JqZWN0Rml0OjpGaWxsOyB9Ci0g
ICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0dXJuIExl
bmd0aFBvaW50KExlbmd0aCg1MC4wZiwgUGVyY2VudCksIExlbmd0aCg1MC4wZiwgUGVyY2VudCkp
OyB9CisgICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0
dXJuIExlbmd0aFBvaW50KExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0
aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpOyB9CiAgICAgc3RhdGljIEVtcHR5Q2VsbCBp
bml0aWFsRW1wdHlDZWxscygpIHsgcmV0dXJuIEVtcHR5Q2VsbDo6U2hvdzsgfQogICAgIHN0YXRp
YyBMaXN0U3R5bGVQb3NpdGlvbiBpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKSB7IHJldHVybiBM
aXN0U3R5bGVQb3NpdGlvbjo6T3V0c2lkZTsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBpbml0aWFsTGlzdFN0eWxlU3RyaW5nVmFsdWUoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CkBA
IC0xNTU3LDIxICsxNTU3LDIxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQg
aW5pdGlhbENvbHVtblJ1bGVXaWR0aCgpIHsgcmV0dXJuIDM7IH0KICAgICBzdGF0aWMgZmxvYXQg
aW5pdGlhbE91dGxpbmVXaWR0aCgpIHsgcmV0dXJuIDM7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5p
dGlhbExldHRlclNwYWNpbmcoKSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0
aWFsV29yZFNwYWNpbmcoKSB7IHJldHVybiBMZW5ndGgoRml4ZWQpOyB9CisgICAgc3RhdGljIExl
bmd0aCBpbml0aWFsV29yZFNwYWNpbmcoKSB7IHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4
ZWQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2l6ZSgpIHsgcmV0dXJuIExlbmd0aCgp
OyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsTWluU2l6ZSgpIHsgcmV0dXJuIExlbmd0aCgp
OyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsTWF4U2l6ZSgpIHsgcmV0dXJuIExlbmd0aChV
bmRlZmluZWQpOyB9CisgICAgc3RhdGljIExlbmd0aCBpbml0aWFsTWF4U2l6ZSgpIHsgcmV0dXJu
IExlbmd0aChMZW5ndGhUeXBlOjpVbmRlZmluZWQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0
aWFsT2Zmc2V0KCkgeyByZXR1cm4gTGVuZ3RoKCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRp
YWxSYWRpdXMoKSB7IHJldHVybiBMZW5ndGgoKTsgfQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlh
bE1hcmdpbigpIHsgcmV0dXJuIExlbmd0aChGaXhlZCk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGlu
aXRpYWxQYWRkaW5nKCkgeyByZXR1cm4gTGVuZ3RoKEZpeGVkKTsgfQotICAgIHN0YXRpYyBMZW5n
dGggaW5pdGlhbFRleHRJbmRlbnQoKSB7IHJldHVybiBMZW5ndGgoRml4ZWQpOyB9Ci0gICAgc3Rh
dGljIExlbmd0aCBpbml0aWFsWmVyb0xlbmd0aCgpIHsgcmV0dXJuIExlbmd0aChGaXhlZCk7IH0K
LSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxPbmVMZW5ndGgoKSB7IHJldHVybiBMZW5ndGgoMSwg
Rml4ZWQpOyB9CisgICAgc3RhdGljIExlbmd0aCBpbml0aWFsTWFyZ2luKCkgeyByZXR1cm4gTGVu
Z3RoKExlbmd0aFR5cGU6OkZpeGVkKTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFBhZGRp
bmcoKSB7IHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpOyB9CisgICAgc3RhdGljIExl
bmd0aCBpbml0aWFsVGV4dEluZGVudCgpIHsgcmV0dXJuIExlbmd0aChMZW5ndGhUeXBlOjpGaXhl
ZCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxaZXJvTGVuZ3RoKCkgeyByZXR1cm4gTGVu
Z3RoKExlbmd0aFR5cGU6OkZpeGVkKTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbE9uZUxl
bmd0aCgpIHsgcmV0dXJuIExlbmd0aCgxLCBMZW5ndGhUeXBlOjpGaXhlZCk7IH0KICAgICBzdGF0
aWMgc2hvcnQgaW5pdGlhbFdpZG93cygpIHsgcmV0dXJuIDI7IH0KICAgICBzdGF0aWMgc2hvcnQg
aW5pdGlhbE9ycGhhbnMoKSB7IHJldHVybiAyOyB9CiAgICAgLy8gUmV0dXJuaW5nIC0xMDAlIHBl
cmNlbnQgaGVyZSBtZWFucyB0aGUgbGluZS1oZWlnaHQgaXMgbm90IHNldC4KLSAgICBzdGF0aWMg
TGVuZ3RoIGluaXRpYWxMaW5lSGVpZ2h0KCkgeyByZXR1cm4gTGVuZ3RoKC0xMDAuMGYsIFBlcmNl
bnQpOyB9CisgICAgc3RhdGljIExlbmd0aCBpbml0aWFsTGluZUhlaWdodCgpIHsgcmV0dXJuIExl
bmd0aCgtMTAwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsgfQogICAgIHN0YXRpYyBUZXh0QWxp
Z25Nb2RlIGluaXRpYWxUZXh0QWxpZ24oKSB7IHJldHVybiBUZXh0QWxpZ25Nb2RlOjpTdGFydDsg
fQogICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGluaXRpYWxUZXh0RGVjb3Jh
dGlvbigpIHsgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4geyB9OyB9CiAgICAgc3Rh
dGljIFRleHREZWNvcmF0aW9uU3R5bGUgaW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSB7IHJl
dHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpTb2xpZDsgfQpAQCAtMTU5Niw3ICsxNTk2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBTdHlsZVJlZmxlY3Rpb24qIGluaXRpYWxCb3hSZWZsZWN0KCkg
eyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsRmxleEdyb3coKSB7IHJldHVy
biAwOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxGbGV4U2hyaW5rKCkgeyByZXR1cm4gMTsg
fQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbEZsZXhCYXNpcygpIHsgcmV0dXJuIExlbmd0aChB
dXRvKTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbEZsZXhCYXNpcygpIHsgcmV0dXJuIExl
bmd0aChMZW5ndGhUeXBlOjpBdXRvKTsgfQogICAgIHN0YXRpYyBpbnQgaW5pdGlhbE9yZGVyKCkg
eyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGluaXRpYWxK
dXN0aWZ5SXRlbXMoKSB7IHJldHVybiBTdHlsZVNlbGZBbGlnbm1lbnREYXRhKEl0ZW1Qb3NpdGlv
bjo6TGVnYWN5LCBPdmVyZmxvd0FsaWdubWVudDo6RGVmYXVsdCk7IH0KICAgICBzdGF0aWMgU3R5
bGVTZWxmQWxpZ25tZW50RGF0YSBpbml0aWFsU2VsZkFsaWdubWVudCgpIHsgcmV0dXJuIFN0eWxl
U2VsZkFsaWdubWVudERhdGEoSXRlbVBvc2l0aW9uOjpBdXRvLCBPdmVyZmxvd0FsaWdubWVudDo6
RGVmYXVsdCk7IH0KQEAgLTE2MDYsNyArMTYwNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmxl
eFdyYXAgaW5pdGlhbEZsZXhXcmFwKCkgeyByZXR1cm4gRmxleFdyYXA6Ok5vV3JhcDsgfQogICAg
IHN0YXRpYyBpbnQgaW5pdGlhbE1hcnF1ZWVMb29wQ291bnQoKSB7IHJldHVybiAtMTsgfQogICAg
IHN0YXRpYyBpbnQgaW5pdGlhbE1hcnF1ZWVTcGVlZCgpIHsgcmV0dXJuIDg1OyB9Ci0gICAgc3Rh
dGljIExlbmd0aCBpbml0aWFsTWFycXVlZUluY3JlbWVudCgpIHsgcmV0dXJuIExlbmd0aCg2LCBG
aXhlZCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxNYXJxdWVlSW5jcmVtZW50KCkgeyBy
ZXR1cm4gTGVuZ3RoKDYsIExlbmd0aFR5cGU6OkZpeGVkKTsgfQogICAgIHN0YXRpYyBNYXJxdWVl
QmVoYXZpb3IgaW5pdGlhbE1hcnF1ZWVCZWhhdmlvcigpIHsgcmV0dXJuIE1hcnF1ZWVCZWhhdmlv
cjo6U2Nyb2xsOyB9CiAgICAgc3RhdGljIE1hcnF1ZWVEaXJlY3Rpb24gaW5pdGlhbE1hcnF1ZWVE
aXJlY3Rpb24oKSB7IHJldHVybiBNYXJxdWVlRGlyZWN0aW9uOjpBdXRvOyB9CiAgICAgc3RhdGlj
IFVzZXJNb2RpZnkgaW5pdGlhbFVzZXJNb2RpZnkoKSB7IHJldHVybiBVc2VyTW9kaWZ5OjpSZWFk
T25seTsgfQpAQCAtMTYzOSw4ICsxNjM5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBHYXBMZW5n
dGggaW5pdGlhbENvbHVtbkdhcCgpIHsgcmV0dXJuIEdhcExlbmd0aCgpOyB9CiAgICAgc3RhdGlj
IEdhcExlbmd0aCBpbml0aWFsUm93R2FwKCkgeyByZXR1cm4gR2FwTGVuZ3RoKCk7IH0KICAgICBz
dGF0aWMgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgaW5pdGlhbFRyYW5zZm9ybSgpIHsgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFRyYW5zZm9ybU9wZXJhdGlvbnM+IG9wczsgcmV0dXJuIG9wczsg
fQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5zZm9ybU9yaWdpblgoKSB7IHJldHVybiBM
ZW5ndGgoNTAuMGYsIFBlcmNlbnQpOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNm
b3JtT3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KKyAgICBzdGF0
aWMgTGVuZ3RoIGluaXRpYWxUcmFuc2Zvcm1PcmlnaW5YKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjBm
LCBMZW5ndGhUeXBlOjpQZXJjZW50KTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5z
Zm9ybU9yaWdpblkoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIExlbmd0aFR5cGU6OlBlcmNlbnQp
OyB9CiAgICAgc3RhdGljIFRyYW5zZm9ybUJveCBpbml0aWFsVHJhbnNmb3JtQm94KCkgeyByZXR1
cm4gVHJhbnNmb3JtQm94OjpWaWV3Qm94OyB9CiAgICAgc3RhdGljIFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbiogaW5pdGlhbFJvdGF0ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBzdGF0aWMg
U2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qIGluaXRpYWxTY2FsZSgpIHsgcmV0dXJuIG51bGxwdHI7
IH0KQEAgLTE2NTAsOCArMTY1MCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVHJhbnNmb3JtU3R5
bGUzRCBpbml0aWFsVHJhbnNmb3JtU3R5bGUzRCgpIHsgcmV0dXJuIFRyYW5zZm9ybVN0eWxlM0Q6
OkZsYXQ7IH0KICAgICBzdGF0aWMgQmFja2ZhY2VWaXNpYmlsaXR5IGluaXRpYWxCYWNrZmFjZVZp
c2liaWxpdHkoKSB7IHJldHVybiBCYWNrZmFjZVZpc2liaWxpdHk6OlZpc2libGU7IH0KICAgICBz
dGF0aWMgZmxvYXQgaW5pdGlhbFBlcnNwZWN0aXZlKCkgeyByZXR1cm4gMDsgfQotICAgIHN0YXRp
YyBMZW5ndGggaW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWCgpIHsgcmV0dXJuIExlbmd0aCg1MC4w
ZiwgUGVyY2VudCk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxQZXJzcGVjdGl2ZU9yaWdp
blkoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpOyB9CisgICAgc3RhdGljIExlbmd0
aCBpbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5YKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjBmLCBMZW5n
dGhUeXBlOjpQZXJjZW50KTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFBlcnNwZWN0aXZl
T3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7IH0K
ICAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbEJhY2tncm91bmRDb2xvcigpIHsgcmV0dXJuIENvbG9y
Ojp0cmFuc3BhcmVudEJsYWNrOyB9CiAgICAgc3RhdGljIENvbG9yIGluaXRpYWxUZXh0RW1waGFz
aXNDb2xvcigpIHsgcmV0dXJuIGN1cnJlbnRDb2xvcigpOyB9CiAgICAgc3RhdGljIFRleHRFbXBo
YXNpc0ZpbGwgaW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwoKSB7IHJldHVybiBUZXh0RW1waGFzaXNG
aWxsOjpGaWxsZWQ7IH0KQEAgLTE2ODcsNyArMTY4Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTcGVj
aWZpZWRMaW5lSGVpZ2h0KCkgeyByZXR1cm4gTGVuZ3RoKC0xMDAuMGYsIFBlcmNlbnQpOyB9Cisg
ICAgc3RhdGljIExlbmd0aCBpbml0aWFsU3BlY2lmaWVkTGluZUhlaWdodCgpIHsgcmV0dXJuIExl
bmd0aCgtMTAwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsgfQogICAgIHN0YXRpYyBUZXh0U2l6
ZUFkanVzdG1lbnQgaW5pdGlhbFRleHRTaXplQWRqdXN0KCkgeyByZXR1cm4gVGV4dFNpemVBZGp1
c3RtZW50KCk7IH0KICNlbmRpZgogCkBAIC0xNjk1LDggKzE2OTUsOCBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgVG91Y2hBY3Rpb24gaW5pdGlhbFRvdWNoQWN0aW9ucygpIHsgcmV0dXJuIFRvdWNo
QWN0aW9uOjpBdXRvOyB9CiAKLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTY3JvbGxNYXJnaW4o
KSB7IHJldHVybiBMZW5ndGgoRml4ZWQpOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2Ny
b2xsUGFkZGluZygpIHsgcmV0dXJuIExlbmd0aChBdXRvKTsgfQorICAgIHN0YXRpYyBMZW5ndGgg
aW5pdGlhbFNjcm9sbE1hcmdpbigpIHsgcmV0dXJuIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCk7
IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTY3JvbGxQYWRkaW5nKCkgeyByZXR1cm4gTGVu
Z3RoKExlbmd0aFR5cGU6OkF1dG8pOyB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQog
ICAgIHN0YXRpYyBTY3JvbGxTbmFwVHlwZSBpbml0aWFsU2Nyb2xsU25hcFR5cGUoKTsKQEAgLTE3
MjMsOCArMTcyMyw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBHcmlkQXV0b0Zsb3cgaW5pdGlh
bEdyaWRBdXRvRmxvdygpIHsgcmV0dXJuIEF1dG9GbG93Um93OyB9CiAKLSAgICBzdGF0aWMgVmVj
dG9yPEdyaWRUcmFja1NpemU+IGluaXRpYWxHcmlkQXV0b0NvbHVtbnMoKSB7IHJldHVybiB7IEdy
aWRUcmFja1NpemUoTGVuZ3RoKEF1dG8pKSB9OyB9Ci0gICAgc3RhdGljIFZlY3RvcjxHcmlkVHJh
Y2tTaXplPiBpbml0aWFsR3JpZEF1dG9Sb3dzKCkgeyByZXR1cm4geyBHcmlkVHJhY2tTaXplKExl
bmd0aChBdXRvKSkgfTsgfQorICAgIHN0YXRpYyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gaW5pdGlh
bEdyaWRBdXRvQ29sdW1ucygpIHsgcmV0dXJuIHsgR3JpZFRyYWNrU2l6ZShMZW5ndGgoTGVuZ3Ro
VHlwZTo6QXV0bykpIH07IH0KKyAgICBzdGF0aWMgVmVjdG9yPEdyaWRUcmFja1NpemU+IGluaXRp
YWxHcmlkQXV0b1Jvd3MoKSB7IHJldHVybiB7IEdyaWRUcmFja1NpemUoTGVuZ3RoKExlbmd0aFR5
cGU6OkF1dG8pKSB9OyB9CiAKICAgICBzdGF0aWMgTmFtZWRHcmlkQXJlYU1hcCBpbml0aWFsTmFt
ZWRHcmlkQXJlYSgpIHsgcmV0dXJuIE5hbWVkR3JpZEFyZWFNYXAoKTsgfQogICAgIHN0YXRpYyBz
aXplX3QgaW5pdGlhbE5hbWVkR3JpZEFyZWFDb3VudCgpIHsgcmV0dXJuIDA7IH0KQEAgLTIyMDMs
NyArMjIwMyw3IEBAIGlubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRCb3JkZXJSYWRpdXMoTGVu
Z3RoU2l6ZSYmIHNpemUpCiAKIGlubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRCb3JkZXJSYWRp
dXMoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6
ZSB7IHsgc2l6ZS53aWR0aCgpLCBGaXhlZCB9LCB7IHNpemUuaGVpZ2h0KCksIEZpeGVkIH0gfSk7
CisgICAgc2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUgeyB7IHNpemUud2lkdGgoKSwgTGVuZ3Ro
VHlwZTo6Rml4ZWQgfSwgeyBzaXplLmhlaWdodCgpLCBMZW5ndGhUeXBlOjpGaXhlZCB9IH0pOwog
fQogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0Wm9vbShmbG9hdCB6b29tTGV2ZWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5jcHAKaW5kZXggYzFkNGI0OWUyZWY5YThkNmI0YzE2ZWI3M2VmOTU4YjgzZWIxNDM5My4u
N2QxMjE1ZjAxODVlNzZiYzY1ZWYyZjIzNzdkZjIxZWE3MTE0NmMzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcApA
QCAtODEsOCArODEsOCBAQCB2b2lkIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNvbXB1dGVJbnRyaW5z
aWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcgogewogICAgIC8vIEF0IGEg
em9vbSBsZXZlbCBvZiAxIHRoZSBpbWFnZSBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYSBkZXZpY2Ug
cGl4ZWwgc2l6ZS4KICAgICBGbG9hdFNpemUgc2l6ZSA9IGZsb29yU2l6ZVRvRGV2aWNlUGl4ZWxz
KExheW91dFNpemUoaW1hZ2VTaXplKHJlbmRlcmVyLCAxKSksIHJlbmRlcmVyID8gcmVuZGVyZXIt
PmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSA6IDEpOwotICAgIGludHJpbnNpY1dpZHRo
ID0gTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpOwotICAgIGludHJpbnNpY0hlaWdodCA9IExl
bmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCk7CisgICAgaW50cmluc2ljV2lkdGggPSBMZW5ndGgo
c2l6ZS53aWR0aCgpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CisgICAgaW50cmluc2ljSGVpZ2h0ID0g
TGVuZ3RoKHNpemUuaGVpZ2h0KCksIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICBpbnRyaW5zaWNS
YXRpbyA9IHNpemU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IDdkYjM3YWE3ZjZmYTRk
ZGVhZTc0MDYwZDU3NmFjNzNjNzZkMjllZGIuLjVjM2YyYmJkYTA2ZDg3ZjdhMDE0NzQwYzFlNThl
YWUwZWJmZTQ3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1
YmxpYzoKICAgICBEYXRhUmVmPFN0eWxlR3JpZEl0ZW1EYXRhPiBncmlkSXRlbTsKIAogICAgIExl
bmd0aEJveCBzY3JvbGxNYXJnaW4geyAwLCAwLCAwLCAwIH07Ci0gICAgTGVuZ3RoQm94IHNjcm9s
bFBhZGRpbmcgeyBMZW5ndGgoQXV0byksIExlbmd0aChBdXRvKSwgTGVuZ3RoKEF1dG8pLCBMZW5n
dGgoQXV0bykgfTsKKyAgICBMZW5ndGhCb3ggc2Nyb2xsUGFkZGluZyB7IExlbmd0aChMZW5ndGhU
eXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pLCBMZW5ndGgoTGVuZ3RoVHlwZTo6
QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSB9OwogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCiAgICAgU2Nyb2xsU25hcFR5cGUgc2Nyb2xsU25hcFR5cGU7CiAgICAgU2Nyb2xsU25h
cEFsaWduIHNjcm9sbFNuYXBBbGlnbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJlZmxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJlZmxlY3Rpb24uaAppbmRleCA5NmUzZTNiZGZhNDQ3NWRmZGM5ZjgzYWRhZDRk
NzYzODM4OGQyNzI1Li5jY2IzMjQxNGNkNTNkZWI3Y2FmMTEyYmRjNGM4ZGRiMzA1MTdjYTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSZWZsZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmVmbGVjdGlvbi5o
CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdHlsZVJlZmxlY3Rp
b24oKQotICAgICAgICA6IG1fb2Zmc2V0KDAsIEZpeGVkKQorICAgICAgICA6IG1fb2Zmc2V0KDAs
IExlbmd0aFR5cGU6OkZpeGVkKQogICAgICAgICAsIG1fbWFzayhOaW5lUGllY2VJbWFnZTo6VHlw
ZTo6TWFzaykKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHAKaW5kZXggMDc5MTg0Y2NjM2I5Mjk0MmI0NjQy
ZTY1NzM4MmU2ZWEzNTBiZmI4NC4uNWMzNzk2NzQxMjc1NTg4MmU3NzI1YTMxM2NiNzk2OTgwOTRi
ZTY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vy
cm91bmREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVT
dXJyb3VuZERhdGEuY3BwCkBAIC0yNyw4ICsyNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIERF
RklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU3R5bGVTdXJyb3VuZERhdGEpOwog
CiBTdHlsZVN1cnJvdW5kRGF0YTo6U3R5bGVTdXJyb3VuZERhdGEoKQotICAgIDogbWFyZ2luKEZp
eGVkKQotICAgICwgcGFkZGluZyhGaXhlZCkKKyAgICA6IG1hcmdpbihMZW5ndGhUeXBlOjpGaXhl
ZCkKKyAgICAsIHBhZGRpbmcoTGVuZ3RoVHlwZTo6Rml4ZWQpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckZ1bGxT
Y3JlZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyRnVsbFNjcmVlbi5jcHAKaW5kZXggYjI4NDIwYTYzZDk2YTExMjY3M2VlMDEwYzMzMjIz
NGViMmNiYzZiNi4uMTM3ZjIyODQzZWJkZmNkYmI2YzA5MGRjYTg2MjZhZDhmNjY4ZTMzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWls
ZGVyRnVsbFNjcmVlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyRnVsbFNjcmVlbi5jcHAKQEAgLTQwLDkgKzQwLDkgQEAgUmVuZGVy
VHJlZUJ1aWxkZXI6OkZ1bGxTY3JlZW46OkZ1bGxTY3JlZW4oUmVuZGVyVHJlZUJ1aWxkZXImIGJ1
aWxkZXIpCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpGdWxsU2NyZWVuOjpjcmVhdGVQbGFjZWhv
bGRlcihSZW5kZXJGdWxsU2NyZWVuJiByZW5kZXJlciwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgZnJhbWVSZWN0KQogewogICAgIGlmIChzdHls
ZS0+d2lkdGgoKS5pc0F1dG8oKSkKLSAgICAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChmcmFt
ZVJlY3Qud2lkdGgoKSwgRml4ZWQpKTsKKyAgICAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChm
cmFtZVJlY3Qud2lkdGgoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICBpZiAoc3R5bGUtPmhl
aWdodCgpLmlzQXV0bygpKQotICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChmcmFtZVJl
Y3QuaGVpZ2h0KCksIEZpeGVkKSk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKGZy
YW1lUmVjdC5oZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKIAogICAgIGlmIChhdXRvKiBw
bGFjZUhvbGRlciA9IHJlbmRlcmVyLnBsYWNlaG9sZGVyKCkpIHsKICAgICAgICAgcGxhY2VIb2xk
ZXItPnNldFN0eWxlKFdURk1vdmUoKnN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUFkanVzdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRq
dXN0ZXIuY3BwCmluZGV4IGM4OWEyNDk3ODM1YTkzOGY5ODk5ZDgyYjYxNDk2Mjc5M2U4YjI2YWIu
LjZhZDJkMDAxOTg3MTQ4MjM0ZWZhNGRhOTMyMzZkYTczMDQ3Y2M3NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlQWRqdXN0ZXIuY3BwCkBAIC03OSwxNiArNzksMTYgQEAgc3RhdGljIHZvaWQg
YWRkSW50cmluc2ljTWFyZ2lucyhSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgLy8gRklYTUU6IFVz
aW5nICJoYXNRdWlyayIgdG8gZGVjaWRlIHRoZSBtYXJnaW4gd2Fzbid0IHNldCBpcyBraW5kIG9m
IGxhbWUuCiAgICAgaWYgKHN0eWxlLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSkgewogICAg
ICAgICBpZiAoc3R5bGUubWFyZ2luTGVmdCgpLmhhc1F1aXJrKCkpCi0gICAgICAgICAgICBzdHls
ZS5zZXRNYXJnaW5MZWZ0KExlbmd0aChpbnRyaW5zaWNNYXJnaW4sIEZpeGVkKSk7CisgICAgICAg
ICAgICBzdHlsZS5zZXRNYXJnaW5MZWZ0KExlbmd0aChpbnRyaW5zaWNNYXJnaW4sIExlbmd0aFR5
cGU6OkZpeGVkKSk7CiAgICAgICAgIGlmIChzdHlsZS5tYXJnaW5SaWdodCgpLmhhc1F1aXJrKCkp
Ci0gICAgICAgICAgICBzdHlsZS5zZXRNYXJnaW5SaWdodChMZW5ndGgoaW50cmluc2ljTWFyZ2lu
LCBGaXhlZCkpOworICAgICAgICAgICAgc3R5bGUuc2V0TWFyZ2luUmlnaHQoTGVuZ3RoKGludHJp
bnNpY01hcmdpbiwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICB9CiAKICAgICBpZiAoc3R5bGUu
aGVpZ2h0KCkuaXNBdXRvKCkpIHsKICAgICAgICAgaWYgKHN0eWxlLm1hcmdpblRvcCgpLmhhc1F1
aXJrKCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRNYXJnaW5Ub3AoTGVuZ3RoKGludHJpbnNpY01h
cmdpbiwgRml4ZWQpKTsKKyAgICAgICAgICAgIHN0eWxlLnNldE1hcmdpblRvcChMZW5ndGgoaW50
cmluc2ljTWFyZ2luLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgICAgICBpZiAoc3R5bGUubWFy
Z2luQm90dG9tKCkuaGFzUXVpcmsoKSkKLSAgICAgICAgICAgIHN0eWxlLnNldE1hcmdpbkJvdHRv
bShMZW5ndGgoaW50cmluc2ljTWFyZ2luLCBGaXhlZCkpOworICAgICAgICAgICAgc3R5bGUuc2V0
TWFyZ2luQm90dG9tKExlbmd0aChpbnRyaW5zaWNNYXJnaW4sIExlbmd0aFR5cGU6OkZpeGVkKSk7
CiAgICAgfQogfQogCkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBBZGp1c3Rlcjo6YWRqdXN0KFJl
bmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHVzZXJBZ2VudEFwcGVhcmFuY2UK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEFwcGFyZW50bHkgdGhpcyBpcyB0aGUgZXhw
ZWN0ZWQgbGVnYWN5IGJlaGF2aW9yLgogICAgICAgICAgICAgaWYgKGlzVmVydGljYWwgJiYgc3R5
bGUuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAgICAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KExl
bmd0aCgyMDAsIEZpeGVkKSk7CisgICAgICAgICAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0
aCgyMDAsIExlbmd0aFR5cGU6OkZpeGVkKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcwMyw3
ICs3MDMsNyBAQCBib29sIEFkanVzdGVyOjphZGp1c3RGb3JUZXh0QXV0b3NpemluZyhSZW5kZXJT
dHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbgogICAgICAgICBzdHlsZS5mb250Q2Fz
Y2FkZSgpLnVwZGF0ZSgmZWxlbWVudC5kb2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsKICAgICB9
CiAgICAgaWYgKGF1dG8gbmV3TGluZUhlaWdodCA9IGFkanVzdG1lbnQubmV3TGluZUhlaWdodCkK
LSAgICAgICAgc3R5bGUuc2V0TGluZUhlaWdodCh7ICpuZXdMaW5lSGVpZ2h0LCBGaXhlZCB9KTsK
KyAgICAgICAgc3R5bGUuc2V0TGluZUhlaWdodCh7ICpuZXdMaW5lSGVpZ2h0LCBMZW5ndGhUeXBl
OjpGaXhlZCB9KTsKICAgICBpZiAoYXV0byBuZXdTdGF0dXMgPSBhZGp1c3RtZW50Lm5ld1N0YXR1
cykKICAgICAgICAgc3R5bGUuc2V0QXV0b3NpemVTdGF0dXMoKm5ld1N0YXR1cyk7CiAgICAgcmV0
dXJuIGFkanVzdG1lbnQubmV3Rm9udFNpemUgfHwgYWRqdXN0bWVudC5uZXdMaW5lSGVpZ2h0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCA2NThk
Y2I5MjkyYjUwNzc4MTk2YTA0MzhlYzc1MjI2YmViNjUzNDQ5Li4zYjI5MTJmMTkwMzYzNDg0YjQ1
NTQ0NDc2MjFkYTdiM2YzZjAzNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaApAQCAtMjA4LDE5ICsyMDgsMTkgQEAgaW5saW5lIExlbmd0aCBCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKGNvbnN0IEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLAogICAgIH0KIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1BlcmNlbnRhZ2UoKSkKLSAg
ICAgICAgcmV0dXJuIExlbmd0aChwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpLCBQZXJjZW50
KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aChwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpLCBM
ZW5ndGhUeXBlOjpQZXJjZW50KTsKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc0NhbGN1bGF0
ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQogICAgICAgICByZXR1cm4gTGVuZ3RoKHByaW1pdGl2
ZVZhbHVlLmNzc0NhbGNWYWx1ZSgpLT5jcmVhdGVDYWxjdWxhdGlvblZhbHVlKGNvbnZlcnNpb25E
YXRhKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gTGVuZ3RoKDAs
IEZpeGVkKTsKKyAgICByZXR1cm4gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKTsKIH0KIAog
aW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoT3JBdXRvKGNvbnN0
IEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENT
U1ZhbHVlQXV0bykKLSAgICAgICAgcmV0dXJuIExlbmd0aChBdXRvKTsKKyAgICAgICAgcmV0dXJu
IExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKTsKICAgICByZXR1cm4gY29udmVydExlbmd0aChidWls
ZGVyU3RhdGUsIHZhbHVlKTsKIH0KIApAQCAtMjMxLDIyICsyMzEsMjIgQEAgaW5saW5lIExlbmd0
aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoU2l6aW5nKGNvbnN0IEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclMKICAgICBjYXNlIENTU1ZhbHVlSW52YWxpZDoKICAgICAgICAgcmV0dXJuIGNv
bnZlcnRMZW5ndGgoYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiAgICAgY2FzZSBDU1NWYWx1ZUludHJp
bnNpYzoKLSAgICAgICAgcmV0dXJuIExlbmd0aChJbnRyaW5zaWMpOworICAgICAgICByZXR1cm4g
TGVuZ3RoKExlbmd0aFR5cGU6OkludHJpbnNpYyk7CiAgICAgY2FzZSBDU1NWYWx1ZU1pbkludHJp
bnNpYzoKLSAgICAgICAgcmV0dXJuIExlbmd0aChNaW5JbnRyaW5zaWMpOworICAgICAgICByZXR1
cm4gTGVuZ3RoKExlbmd0aFR5cGU6Ok1pbkludHJpbnNpYyk7CiAgICAgY2FzZSBDU1NWYWx1ZU1p
bkNvbnRlbnQ6CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQ6Ci0gICAgICAgIHJl
dHVybiBMZW5ndGgoTWluQ29udGVudCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoTGVuZ3RoVHlw
ZTo6TWluQ29udGVudCk7CiAgICAgY2FzZSBDU1NWYWx1ZU1heENvbnRlbnQ6CiAgICAgY2FzZSBD
U1NWYWx1ZVdlYmtpdE1heENvbnRlbnQ6Ci0gICAgICAgIHJldHVybiBMZW5ndGgoTWF4Q29udGVu
dCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6TWF4Q29udGVudCk7CiAgICAg
Y2FzZSBDU1NWYWx1ZVdlYmtpdEZpbGxBdmFpbGFibGU6Ci0gICAgICAgIHJldHVybiBMZW5ndGgo
RmlsbEF2YWlsYWJsZSk7CisgICAgICAgIHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6RmlsbEF2
YWlsYWJsZSk7CiAgICAgY2FzZSBDU1NWYWx1ZUZpdENvbnRlbnQ6CiAgICAgY2FzZSBDU1NWYWx1
ZVdlYmtpdEZpdENvbnRlbnQ6Ci0gICAgICAgIHJldHVybiBMZW5ndGgoRml0Q29udGVudCk7Cisg
ICAgICAgIHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml0Q29udGVudCk7CiAgICAgY2FzZSBD
U1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBMZW5ndGgoQXV0byk7CisgICAgICAgIHJldHVy
biBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBMZW5ndGgoKTsKQEAgLTI1Niw3ICsyNTYs
NyBAQCBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhTaXppbmco
Y29uc3QgQnVpbGRlclN0YXRlJiBidWlsZGVyUwogaW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TGVuZ3RoTWF4U2l6aW5nKGNvbnN0IEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgcmV0
dXJuIExlbmd0aChVbmRlZmluZWQpOworICAgICAgICByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6
OlVuZGVmaW5lZCk7CiAgICAgcmV0dXJuIGNvbnZlcnRMZW5ndGhTaXppbmcoYnVpbGRlclN0YXRl
LCB2YWx1ZSk7CiB9CiAKQEAgLTMyMCw3ICszMjAsNyBAQCBpbmxpbmUgZmxvYXQgQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFNwYWNpbmcoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0
CiBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb1JhZGl1c0xlbmd0aChD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgQ1NTUHJpbWl0
aXZlVmFsdWUmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc1BlcmNlbnRhZ2UoKSkKLSAgICAg
ICAgcmV0dXJuIExlbmd0aCh2YWx1ZS5kb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAg
cmV0dXJuIExlbmd0aCh2YWx1ZS5kb3VibGVWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsK
ICAgICBpZiAodmFsdWUuaXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuIExlbmd0aCh2YWx1ZS5jc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25W
YWx1ZShjb252ZXJzaW9uRGF0YSkpOwogICAgIHJldHVybiB2YWx1ZS5jb21wdXRlTGVuZ3RoPExl
bmd0aD4oY29udmVyc2lvbkRhdGEpOwpAQCAtMzMwLDcgKzMzMCw3IEBAIGlubGluZSBMZW5ndGhT
aXplIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRpdXMoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvCiB7CiAgICAgYXV0byogcGFpciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkucGFpclZhbHVlKCk7CiAgICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8
ICFwYWlyLT5zZWNvbmQoKSkKLSAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZp
eGVkIH0gfTsKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAs
IExlbmd0aFR5cGU6OkZpeGVkIH0gfTsKIAogICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEg
Y29udmVyc2lvbkRhdGEgPSBidWlsZGVyU3RhdGUuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgp
OwogICAgIExlbmd0aFNpemUgcmFkaXVzIHsgY29udmVydFRvUmFkaXVzTGVuZ3RoKGNvbnZlcnNp
b25EYXRhLCAqcGFpci0+Zmlyc3QoKSksIGNvbnZlcnRUb1JhZGl1c0xlbmd0aChjb252ZXJzaW9u
RGF0YSwgKnBhaXItPnNlY29uZCgpKSB9OwpAQCAtMzM4LDcgKzMzOCw3IEBAIGlubGluZSBMZW5n
dGhTaXplIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRpdXMoQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIGNvCiAgICAgQVNTRVJUKCFyYWRpdXMud2lkdGguaXNOZWdhdGl2ZSgpKTsKICAg
ICBBU1NFUlQoIXJhZGl1cy5oZWlnaHQuaXNOZWdhdGl2ZSgpKTsKICAgICBpZiAocmFkaXVzLndp
ZHRoLmlzWmVybygpIHx8IHJhZGl1cy5oZWlnaHQuaXNaZXJvKCkpCi0gICAgICAgIHJldHVybiB7
IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH07CisgICAgICAgIHJldHVybiB7IHsgMCwgTGVu
Z3RoVHlwZTo6Rml4ZWQgfSwgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9IH07CiAKICAgICByZXR1
cm4gcmFkaXVzOwogfQpAQCAtMzQ2LDEyICszNDYsMTIgQEAgaW5saW5lIExlbmd0aFNpemUgQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFJhZGl1cyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Y28KIGlubGluZSBMZW5ndGggQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1p
bnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogewogICAgIGlmIChsZW5ndGguaXNQZXJj
ZW50KCkpCi0gICAgICAgIHJldHVybiBMZW5ndGgoMTAwIC0gbGVuZ3RoLnZhbHVlKCksIFBlcmNl
bnQpOworICAgICAgICByZXR1cm4gTGVuZ3RoKDEwMCAtIGxlbmd0aC52YWx1ZSgpLCBMZW5ndGhU
eXBlOjpQZXJjZW50KTsKICAgICAKICAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNhbGMgZXhwcmVz
c2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2Fs
Y0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5ndGhzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhw
cmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhzLnVuY2hl
Y2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBM
ZW5ndGhUeXBlOjpQZXJjZW50KSkpOwogICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VV
bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOwogICAgIGF1dG8gb3AgPSBtYWtl
VW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3Bl
cmF0b3I6OlN1YnRyYWN0KTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6OmNy
ZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkpOwpAQCAtMzg1LDExICszODUsMTEgQEAg
aW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQo
QnVpbGRlclN0YXRlJiBidWlsZGVyU3QKICAgICBpZiAodmFsdWUuaXNWYWx1ZUlEKCkpIHsKICAg
ICAgICAgc3dpdGNoICh2YWx1ZS52YWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBjc3NWYWx1ZUZv
cjA6Ci0gICAgICAgICAgICByZXR1cm4gTGVuZ3RoKDAsIFBlcmNlbnQpOworICAgICAgICAgICAg
cmV0dXJuIExlbmd0aCgwLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICAgICAgY2FzZSBjc3NW
YWx1ZUZvcjEwMDoKLSAgICAgICAgICAgIHJldHVybiBMZW5ndGgoMTAwLCBQZXJjZW50KTsKKyAg
ICAgICAgICAgIHJldHVybiBMZW5ndGgoMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICAg
ICAgY2FzZSBDU1NWYWx1ZUNlbnRlcjoKLSAgICAgICAgICAgIHJldHVybiBMZW5ndGgoNTAsIFBl
cmNlbnQpOworICAgICAgICAgICAgcmV0dXJuIExlbmd0aCg1MCwgTGVuZ3RoVHlwZTo6UGVyY2Vu
dCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgfQpAQCAtOTQyLDEwICs5NDIsMTAgQEAgaW5saW5lIFNjcm9sbFNuYXBTdG9wIEJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwU3RvcChCdWlsZGVyU3RhdGUmLCBjb24K
IGlubGluZSBHcmlkTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0JyZWFk
dGgoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlLCBCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlTWluQ29udGVudCB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVX
ZWJraXRNaW5Db250ZW50KQotICAgICAgICByZXR1cm4gTGVuZ3RoKE1pbkNvbnRlbnQpOworICAg
ICAgICByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQpOwogCiAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU1heENvbnRlbnQgfHwgcHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlV2Via2l0TWF4Q29udGVudCkKLSAgICAgICAgcmV0
dXJuIExlbmd0aChNYXhDb250ZW50KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aChMZW5ndGhUeXBl
OjpNYXhDb250ZW50KTsKIAogICAgIC8vIEZyYWN0aW9uYWwgdW5pdC4KICAgICBpZiAocHJpbWl0
aXZlVmFsdWUuaXNGbGV4KCkpCkBAIC0xMjE1LDkgKzEyMTUsOSBAQCBpbmxpbmUgT3B0aW9uYWw8
TGVuZ3RoPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNpbmcoQnVpbGRlclN0YXRl
JiBidWlsZAogICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpCiAgICAgICAg
IHdvcmRTcGFjaW5nID0gcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNzc3Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3IoYnVpbGRlclN0YXRlKSk7CiAg
ICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNQZXJjZW50YWdlKCkpCi0gICAgICAgIHdvcmRT
cGFjaW5nID0gTGVuZ3RoKGNsYW1wVG88ZmxvYXQ+KHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVl
KCksIG1pblZhbHVlRm9yQ3NzTGVuZ3RoLCBtYXhWYWx1ZUZvckNzc0xlbmd0aCksIFBlcmNlbnQp
OworICAgICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChjbGFtcFRvPGZsb2F0PihwcmltaXRpdmVW
YWx1ZS5kb3VibGVWYWx1ZSgpLCBtaW5WYWx1ZUZvckNzc0xlbmd0aCwgbWF4VmFsdWVGb3JDc3NM
ZW5ndGgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1
ZS5pc051bWJlcigpKQotICAgICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChwcmltaXRpdmVWYWx1
ZS5kb3VibGVWYWx1ZSgpLCBGaXhlZCk7CisgICAgICAgIHdvcmRTcGFjaW5nID0gTGVuZ3RoKHBy
aW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCksIExlbmd0aFR5cGU6OkZpeGVkKTsKIAogICAgIHJl
dHVybiB3b3JkU3BhY2luZzsKIH0KQEAgLTE1NDIsNyArMTU0Miw3IEBAIGlubGluZSBPcHRpb25h
bDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlCiAgICAgICAgIGF1dG8gY29udmVyc2lvbkRhdGEgPSBidWlsZGVyU3RhdGUuY3Nz
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tQW5kUHJvcGVydHlU
b0NvbXB1dGUoem9vbVdpdGhUZXh0Wm9vbUZhY3RvcihidWlsZGVyU3RhdGUpLCBDU1NQcm9wZXJ0
eUxpbmVIZWlnaHQpOwogICAgICAgICBMZW5ndGggbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUuY29t
cHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKICAgICAgICAgaWYgKG11bHRpcGxp
ZXIgIT0gMS5mKQotICAgICAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKGxlbmd0aC52YWx1ZSgpICog
bXVsdGlwbGllciwgRml4ZWQpOworICAgICAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKGxlbmd0aC52
YWx1ZSgpICogbXVsdGlwbGllciwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgICAgICByZXR1cm4g
bGVuZ3RoOwogICAgIH0KIApAQCAtMTU1NCwxMCArMTU1NCwxMCBAQCBpbmxpbmUgT3B0aW9uYWw8
TGVuZ3RoPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChCdWlsZGVyU3RhdGUm
IGJ1aWxkZQogICAgIC8vIHZhbHVlcyBhbmQgcmF3IG51bWJlcnMgdG8gcGVyY2VudGFnZXMuCiAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzUGVyY2VudGFnZSgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBwZXJjZW50YWdlIHNob3VsZCBub3QgYmUgcmVzdHJpY3RlZCB0byBhbiBpbnRlZ2VyIGhlcmUu
Ci0gICAgICAgIHJldHVybiBMZW5ndGgoKGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmNvbXB1dGVkRm9u
dFNpemUoKSAqIHByaW1pdGl2ZVZhbHVlLmludFZhbHVlKCkpIC8gMTAwLCBGaXhlZCk7CisgICAg
ICAgIHJldHVybiBMZW5ndGgoKGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmNvbXB1dGVkRm9udFNpemUo
KSAqIHByaW1pdGl2ZVZhbHVlLmludFZhbHVlKCkpIC8gMTAwLCBMZW5ndGhUeXBlOjpGaXhlZCk7
CiAgICAgfQogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc051bWJlcigpKQotICAgICAgICByZXR1
cm4gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCkgKiAxMDAuMCwgUGVyY2VudCk7
CisgICAgICAgIHJldHVybiBMZW5ndGgocHJpbWl0aXZlVmFsdWUuZG91YmxlVmFsdWUoKSAqIDEw
MC4wLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKIAogICAgIC8vIEZJWE1FOiBUaGUgcGFyc2VyIHNo
b3VsZCBvbmx5IGVtaXQgdGhlIGFib3ZlIHR5cGVzLCBzbyB0aGlzIHNob3VsZCBuZXZlciBiZSBy
ZWFjaGVkLiBXZSBzaG91bGQgY2hhbmdlIHRoZQogICAgIC8vIHR5cGUgb2YgdGhpcyBmdW5jdGlv
biB0byByZXR1cm4ganVzdCBhIExlbmd0aCAoYW5kIG5vdCBhbiBPcHRpb25hbCkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDIwOWI4NjcyNzZlNmI4MjM2
OTUyNzY2ODZhOTVjOWU1ZjBlMWFmMzMuLjFiZjZlYzZkMjFhOTM1NDU2ZDJmZTUzZWVjM2QzZGEz
MzA4YjdjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1
c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBA
IC01MzksMTQgKzUzOSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTbGljZToKICAgICAgICAgICAgIC8vIE1hc2tzIGhhdmUgYSBkaWZmZXJlbnQgaW5pdGlh
bCB2YWx1ZSBmb3Igc2xpY2VzLiBQcmVzZXJ2ZSB0aGUgdmFsdWUgb2YgIjAgZmlsbCIgZm9yIGJh
Y2t3YXJkcyBjb21wYXRpYmlsaXR5LgotICAgICAgICAgICAgaW1hZ2Uuc2V0SW1hZ2VTbGljZXMo
dHlwZSA9PSBCb3JkZXJJbWFnZSA/IExlbmd0aEJveChMZW5ndGgoMTAwLCBQZXJjZW50KSwgTGVu
Z3RoKDEwMCwgUGVyY2VudCksIExlbmd0aCgxMDAsIFBlcmNlbnQpLCBMZW5ndGgoMTAwLCBQZXJj
ZW50KSkgOiBMZW5ndGhCb3goKSk7CisgICAgICAgICAgICBpbWFnZS5zZXRJbWFnZVNsaWNlcyh0
eXBlID09IEJvcmRlckltYWdlID8gTGVuZ3RoQm94KExlbmd0aCgxMDAsIExlbmd0aFR5cGU6OlBl
cmNlbnQpLCBMZW5ndGgoMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVuZ3RoKDEwMCwgTGVu
Z3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCgxMDAsIExlbmd0aFR5cGU6OlBlcmNlbnQpKSA6IExl
bmd0aEJveCgpKTsKICAgICAgICAgICAgIGltYWdlLnNldEZpbGwodHlwZSAhPSBCb3JkZXJJbWFn
ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXaWR0aDoKICAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGEgbG9jYWwgdmFyaWFibGUgdG8gd29yayBhcm91bmQgYSBidWcg
aW4gdGhlIEdDQyA4LjEgQWRkcmVzcyBTYW5pdGl6ZXIuCiAgICAgICAgICAgICAvLyBNaWdodCBi
ZSBzbGlnaHRseSBsZXNzIGVmZmljaWVudCB3aGVuIHRoZSB0eXBlIGlzIG5vdCBCb3JkZXJJbWFn
ZSBzaW5jZSB0aGlzIGlzIHVudXNlZCBpbiB0aGF0IGNhc2UuCiAgICAgICAgICAgICAvLyBTaG91
bGQgYmUgc3dpdGNoZWQgYmFjayB0byBhIHRlbXBvcmFyeSB3aGVuIHBvc3NpYmxlLiBTZWUgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMTg2OTgwCi0gICAgICAgICAgICBMZW5ndGhCb3ggbGVuZ3RoQm94
KExlbmd0aCgxLCBSZWxhdGl2ZSksIExlbmd0aCgxLCBSZWxhdGl2ZSksIExlbmd0aCgxLCBSZWxh
dGl2ZSksIExlbmd0aCgxLCBSZWxhdGl2ZSkpOworICAgICAgICAgICAgTGVuZ3RoQm94IGxlbmd0
aEJveChMZW5ndGgoMSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUpLCBMZW5ndGgoMSwgTGVuZ3RoVHlw
ZTo6UmVsYXRpdmUpLCBMZW5ndGgoMSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUpLCBMZW5ndGgoMSwg
TGVuZ3RoVHlwZTo6UmVsYXRpdmUpKTsKICAgICAgICAgICAgIC8vIE1hc2tzIGhhdmUgYSBkaWZm
ZXJlbnQgaW5pdGlhbCB2YWx1ZSBmb3Igd2lkdGhzLiBUaGV5IHVzZSBhbiAnYXV0bycgdmFsdWUg
cmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGZpdCB0byB0aGUgYm9yZGVyLgogICAgICAgICAgICAgaW1h
Z2Uuc2V0Qm9yZGVyU2xpY2VzKHR5cGUgPT0gQm9yZGVySW1hZ2UgPyBsZW5ndGhCb3ggOiBMZW5n
dGhCb3goKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QnVpbGRlclN0YXRlLmNwcAppbmRleCA5NjZlYWU4MmVmNDI4NjZkYzVjOWY4ZDdkZGQ0OTUxNWVj
NjA3OGZhLi5jNjZjOGIyN2E2NWE4NDRiNjc0ZWYxZWVhMGY4YWZhYTAyMzMzZWViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCkBAIC0yNDAsNyArMjQwLDcg
QEAgYm9vbCBCdWlsZGVyU3RhdGU6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgQ1NTVmFs
dWUmIGluVmFsdWUsIEZpbHRlck9wZXJhdGkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7Ci0gICAgICAgICAgICBMZW5n
dGggc3RkRGV2aWF0aW9uID0gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICAgICAgICAgIExlbmd0aCBz
dGREZXZpYXRpb24gPSBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogICAgICAgICAgICAg
aWYgKGZpbHRlclZhbHVlLmxlbmd0aCgpID49IDEpCiAgICAgICAgICAgICAgICAgc3RkRGV2aWF0
aW9uID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgY3NzVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSgpKTsKICAgICAgICAgICAgIGlmIChzdGREZXZpYXRpb24uaXNVbmRlZmluZWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcApp
bmRleCBhOTU1MzIwYWVhZGI3N2ZjNDhiYTIzMDBhYjA3MWRhYzFiZGFlZjlhLi4zMzE4OWJkNjRj
YWNiZWRmOTM2OGQzNGZhOWZiNTY0ZDU4YmQxZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFJlbmRl
clN0eWxlIHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
Y29uc3QgUGFnaW5hdGlvbiYgcGFnaW5hdGlvbiA9IHJlbmRlclZpZXcuZnJhbWVWaWV3KCkucGFn
aW5hdGlvbigpOwogICAgIGlmIChwYWdpbmF0aW9uLm1vZGUgIT0gUGFnaW5hdGlvbjo6VW5wYWdp
bmF0ZWQpIHsKICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5h
dGlvbk1vZGUocGFnaW5hdGlvbi5tb2RlKTsKLSAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRDb2x1
bW5HYXAoR2FwTGVuZ3RoKExlbmd0aCgoaW50KSBwYWdpbmF0aW9uLmdhcCwgRml4ZWQpKSk7Cisg
ICAgICAgIGRvY3VtZW50U3R5bGUuc2V0Q29sdW1uR2FwKEdhcExlbmd0aChMZW5ndGgoKGludCkg
cGFnaW5hdGlvbi5nYXAsIExlbmd0aFR5cGU6OkZpeGVkKSkpOwogICAgICAgICBpZiAocmVuZGVy
Vmlldy5tdWx0aUNvbHVtbkZsb3coKSkKICAgICAgICAgICAgIHJlbmRlclZpZXcudXBkYXRlQ29s
dW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUoZG9jdW1lbnRTdHlsZSk7CiAgICAgICAgIGlmIChyZW5k
ZXJWaWV3LnBhZ2UoKS5wYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKaW5kZXggZTVjOGUxZmY5
Y2M0YjU0ZWZiZjc0MjU4NjZlMzg5ZjE3N2U4MDg2OS4uNTliNzFjNWMxYzIxZDhjZjczNjZmNWJj
ZjRmNmI5ZTU1YjM2ZGNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlRm9yRm9udFJhdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlRm9yRm9udFJhdy5jcHAKQEAgLTIxNiwxNCArMjE2LDE0IEBAIE9wdGlvbmFsPFJlbmRlclN0
eWxlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3JiBmb250UmF3LCBGb250Q2FzY2Fk
ZURlc2NyCiAgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExlbmd0aD4oUmVuZGVyU3R5
bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwogICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExl
bmd0aD4oV1RGOjpudWxsb3B0KTsKICAgICAgICAgfSwgWyZdIChkb3VibGUgbnVtYmVyKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGVuZ3RoPihMZW5ndGgobnVtYmVyICogMTAwLjAs
IFBlcmNlbnQpKTsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxMZW5ndGg+KExlbmd0aChu
dW1iZXIgKiAxMDAuMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpOwogICAgICAgICB9LCBbJl0gKGNv
bnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6TGVuZ3RoT3JQZXJjZW50UmF3JiBsZW5ndGhP
clBlcmNlbnQpIHsKICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hPbihsZW5ndGhPclBlcmNlbnQs
IFsmXSAoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpMZW5ndGhSYXcmIGxlbmd0aCkg
ewogICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50U3R5bGUgPSBnZXRQYXJlbnRTdHlsZSgpOwog
ICAgICAgICAgICAgICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEg
eyBwYXJlbnRTdHlsZS5nZXQoKSwgbnVsbHB0ciwgcGFyZW50U3R5bGUuZ2V0KCksIGRvY3VtZW50
LnJlbmRlclZpZXcoKSwgMS4wZiwgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0IH07Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPExlbmd0aD4oTGVuZ3RoKGNsYW1wVG88ZmxvYXQ+KENTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb252ZXJzaW9uRGF0YSwg
bGVuZ3RoLnR5cGUsIGxlbmd0aC52YWx1ZSksIG1pblZhbHVlRm9yQ3NzTGVuZ3RoLCBtYXhWYWx1
ZUZvckNzc0xlbmd0aCksIEZpeGVkKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFs
PExlbmd0aD4oTGVuZ3RoKGNsYW1wVG88ZmxvYXQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRl
Tm9uQ2FsY0xlbmd0aERvdWJsZShjb252ZXJzaW9uRGF0YSwgbGVuZ3RoLnR5cGUsIGxlbmd0aC52
YWx1ZSksIG1pblZhbHVlRm9yQ3NzTGVuZ3RoLCBtYXhWYWx1ZUZvckNzc0xlbmd0aCksIExlbmd0
aFR5cGU6OkZpeGVkKSk7CiAgICAgICAgICAgICB9LCBbJl0gKGRvdWJsZSBwZXJjZW50YWdlKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExlbmd0aD4oTGVuZ3RoKChmb250RGVz
Y3JpcHRpb24uY29tcHV0ZWRTaXplKCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHBlcmNlbnRhZ2UpKSAv
IDEwMCwgRml4ZWQpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGVuZ3RoPihM
ZW5ndGgoKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSAqIHN0YXRpY19jYXN0PGludD4o
cGVyY2VudGFnZSkpIC8gMTAwLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggYmNk
ZjFkNjY3ODM4ZDVmYTkxYmQyOTk0OWY1ZjM0OTMzOTdmYzBiYi4uZTZiMWViNzUyMWZkZTdkNGM3
OTkzMzdkYjkzN2IwNDliMmZjYWY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cApAQCAtNTIxLDE5ICs1MjEsMTkgQEAgYm9vbCBTVkdTVkdFbGVtZW50OjpoYXNJbnRyaW5zaWNI
ZWlnaHQoKSBjb25zdAogTGVuZ3RoIFNWR1NWR0VsZW1lbnQ6OmludHJpbnNpY1dpZHRoKCkgY29u
c3QKIHsKICAgICBpZiAod2lkdGgoKS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVy
Y2VudGFnZSkKLSAgICAgICAgcmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgIHJldHVy
biBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBs
ZW5ndGhDb250ZXh0KHRoaXMpOwotICAgIHJldHVybiBMZW5ndGgod2lkdGgoKS52YWx1ZShsZW5n
dGhDb250ZXh0KSwgRml4ZWQpOworICAgIHJldHVybiBMZW5ndGgod2lkdGgoKS52YWx1ZShsZW5n
dGhDb250ZXh0KSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwogfQogCiBMZW5ndGggU1ZHU1ZHRWxlbWVu
dDo6aW50cmluc2ljSGVpZ2h0KCkgY29uc3QKIHsKICAgICBpZiAoaGVpZ2h0KCkubGVuZ3RoVHlw
ZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCi0gICAgICAgIHJldHVybiBMZW5ndGgo
MCwgRml4ZWQpOworICAgICAgICByZXR1cm4gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OkZpeGVkKTsK
IAogICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh0aGlzKTsKLSAgICByZXR1cm4g
TGVuZ3RoKGhlaWdodCgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCBGaXhlZCk7CisgICAgcmV0dXJu
IExlbmd0aChoZWlnaHQoKS52YWx1ZShsZW5ndGhDb250ZXh0KSwgTGVuZ3RoVHlwZTo6Rml4ZWQp
OwogfQogCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6dmlld0JveFRvVmlld1RyYW5z
Zm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>