<?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>208736</bug_id>
          
          <creation_ts>2020-03-06 14:44:55 -0800</creation_ts>
          <short_desc>Add &quot;AndOrdered&quot; to the names of ordered DoubleConditions.</short_desc>
          <delta_ts>2020-03-06 22:30:13 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=208731</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1626879</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-03-06 14:44:55 -0800</bug_when>
    <thetext>... because DoubleCondition::DoubleNotEqual actually means DoubleNotEqualAndOrdered, but this isn&apos;t clear from the name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627086</commentid>
    <comment_count>1</comment_count>
      <attachid>392832</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-03-06 18:41:08 -0800</bug_when>
    <thetext>Created attachment 392832
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627120</commentid>
    <comment_count>2</comment_count>
      <attachid>392832</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-03-06 20:07:50 -0800</bug_when>
    <thetext>Comment on attachment 392832
proposed patch.

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

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        Renamed the following:
&gt; +            DoubleEqual ==&gt; DoubleEqualAndOrdered
&gt; +            DoubleNotEqual ==&gt; DoubleNotEqualAndOrdered
&gt; +            DoubleGreaterThan ==&gt; DoubleGreaterThanAndOrdered
&gt; +            DoubleGreaterThanOrEqual ==&gt; DoubleGreaterThanOrEqualAndOrdered
&gt; +            DoubleLessThan ==&gt; DoubleLessThanAndOrdered
&gt; +            DoubleLessThanOrEqual ==&gt; DoubleLessThanOrEqualAndOrdered
&gt; +
&gt; +        The comment for these enums in MacroAssemblerARM64.h says:
&gt; +            // These conditions will only evaluate to true if the comparison is ordered - i.e. neither operand is NaN.
&gt; +
&gt; +        Adding &quot;AndOrdered&quot; to their names makes this property explicit.

Isn&apos;t this sort of implied?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627131</commentid>
    <comment_count>3</comment_count>
      <attachid>392832</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-03-06 20:34:54 -0800</bug_when>
    <thetext>Comment on attachment 392832
proposed patch.

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

r=me.

&gt;&gt; Source/JavaScriptCore/ChangeLog:19
&gt;&gt; +        Adding &quot;AndOrdered&quot; to their names makes this property explicit.
&gt; 
&gt; Isn&apos;t this sort of implied?

Can you note that this is interesting because on most CPUs DoubleNotEqual is DoubleNotEqualOrUnordered?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627166</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-03-06 22:30:00 -0800</bug_when>
    <thetext>(In reply to Keith Miller from comment #3)
&gt; Can you note that this is interesting because on most CPUs DoubleNotEqual is
&gt; DoubleNotEqualOrUnordered?

Added.

Thanks for the review.  Landed in r258063: &lt;http://trac.webkit.org/r258063&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627167</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-06 22:30:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/60182834&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392832</attachid>
            <date>2020-03-06 18:41:08 -0800</date>
            <delta_ts>2020-03-06 20:34:54 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-208736.patch</filename>
            <type>text/plain</type>
            <size>62332</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU4MDQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDIwLTAzLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgIkFuZE9yZGVyZWQiIHRvIHRoZSBuYW1lcyBvZiBvcmRlcmVkIERvdWJsZUNvbmRpdGlvbnMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVk
IHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICBEb3VibGVFcXVhbCA9PT4gRG91YmxlRXF1YWxB
bmRPcmRlcmVkCisgICAgICAgICAgICBEb3VibGVOb3RFcXVhbCA9PT4gRG91YmxlTm90RXF1YWxB
bmRPcmRlcmVkCisgICAgICAgICAgICBEb3VibGVHcmVhdGVyVGhhbiA9PT4gRG91YmxlR3JlYXRl
clRoYW5BbmRPcmRlcmVkCisgICAgICAgICAgICBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWwgPT0+
IERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQKKyAgICAgICAgICAgIERvdWJsZUxl
c3NUaGFuID09PiBEb3VibGVMZXNzVGhhbkFuZE9yZGVyZWQKKyAgICAgICAgICAgIERvdWJsZUxl
c3NUaGFuT3JFcXVhbCA9PT4gRG91YmxlTGVzc1RoYW5PckVxdWFsQW5kT3JkZXJlZAorCisgICAg
ICAgIFRoZSBjb21tZW50IGZvciB0aGVzZSBlbnVtcyBpbiBNYWNyb0Fzc2VtYmxlckFSTTY0Lmgg
c2F5czoKKyAgICAgICAgICAgIC8vIFRoZXNlIGNvbmRpdGlvbnMgd2lsbCBvbmx5IGV2YWx1YXRl
IHRvIHRydWUgaWYgdGhlIGNvbXBhcmlzb24gaXMgb3JkZXJlZCAtIGkuZS4gbmVpdGhlciBvcGVy
YW5kIGlzIE5hTi4KKworICAgICAgICBBZGRpbmcgIkFuZE9yZGVyZWQiIHRvIHRoZWlyIG5hbWVz
IG1ha2VzIHRoaXMgcHJvcGVydHkgZXhwbGljaXQuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OmludmVydCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bW92ZUNvbmRpdGlvbmFsbHlBZnRl
ckZsb2F0aW5nUG9pbnRDb21wYXJlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6bW92ZURvdWJsZUNvbmRpdGlvbmFsbHlBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6anVtcEFmdGVyRmxvYXRpbmdQb2ludENv
bXBhcmUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpmbG9hdGluZ1BvaW50
Q29tcGFyZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoRG91YmxlKToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJN
SVBTOjpicmFuY2hEb3VibGVOb25aZXJvKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmJyYW5jaERvdWJsZU5vblplcm8pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6bW92ZUNvbmRpdGlvbmFsbHlEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6aW52ZXJ0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OmZsb2F0aW5nUG9pbnRDb21wYXJlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246Omp1bXBBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmVDb25kaXRpb25hbGx5QWZ0ZXJGbG9hdGlu
Z1BvaW50Q29tcGFyZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp0cnVuY2F0ZURvdWJsZVRv
VWludDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnRydW5jYXRlRmxv
YXRUb1VpbnQ2NCk6CisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAg
KEpTQzo6dGVzdENvbXBhcmVEb3VibGUpOgorICAgICAgICAoSlNDOjp0ZXN0Q29tcGFyZURvdWJs
ZVNhbWVBcmcpOgorICAgICAgICAoSlNDOjp0ZXN0TW92ZUNvbmRpdGlvbmFsbHlGbG9hdGluZ1Bv
aW50KToKKyAgICAgICAgKEpTQzo6dGVzdE1vdmVEb3VibGVDb25kaXRpb25hbGx5RG91YmxlKToK
KyAgICAgICAgKEpTQzo6dGVzdE1vdmVEb3VibGVDb25kaXRpb25hbGx5RG91YmxlRGVzdFNhbWVB
c1RoZW5DYXNlKToKKyAgICAgICAgKEpTQzo6dGVzdE1vdmVEb3VibGVDb25kaXRpb25hbGx5RG91
YmxlRGVzdFNhbWVBc0Vsc2VDYXNlKToKKyAgICAgICAgKEpTQzo6dGVzdE1vdmVEb3VibGVDb25k
aXRpb25hbGx5RmxvYXQpOgorICAgICAgICAoSlNDOjp0ZXN0TW92ZURvdWJsZUNvbmRpdGlvbmFs
bHlGbG9hdERlc3RTYW1lQXNUaGVuQ2FzZSk6CisgICAgICAgIChKU0M6OnRlc3RNb3ZlRG91Ymxl
Q29uZGl0aW9uYWxseUZsb2F0RGVzdFNhbWVBc0Vsc2VDYXNlKToKKyAgICAgICAgKEpTQzo6dGVz
dE1vdmVDb25kaXRpb25hbGx5RmxvYXRpbmdQb2ludFNhbWVBcmcpOgorICAgICAgICAoSlNDOjpy
dW4pOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlQ2xhbXBEb3VibGVU
b0J5dGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhS
b3VuZGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0
aE1pbk1heCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0
aFBvdyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RF
cSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheUluZGV4
T2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTm9ybWFsaXpl
TWFwS2V5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOdW1iZXJJc0ludGVnZXIpOgor
ICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpicmFuY2hJZk5vdE5hTik6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2psZXNzKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9qbGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9qZ3JlYXRlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXJlcSk6
CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEJpbmFyeURvdWJsZU9wKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cDoKKyAgICAgICAgKEpTQzo6Zmxvb3JUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnJv
dW5kVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6RjY0
TGU+KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6
RjY0THQ+KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZEZsb2F0aW5n
UG9pbnRNaW5Pck1heCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRP
cDxPcFR5cGU6OkY2NEd0Pik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjph
ZGRPcDxPcFR5cGU6OkY2NEdlPik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9y
OjphZGRPcDxPcFR5cGU6OkYzMkx0Pik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJh
dG9yOjphZGRPcDxPcFR5cGU6OkY2NEVxPik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjphZGRPcDxPcFR5cGU6OkYzMkxlPik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklS
R2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkYzMkdlPik6CisgICAgICAgIChKU0M6Oldhc206OkFp
cklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkYzMkVxPik6CisgICAgICAgIChKU0M6Oldhc206
OkFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkYzMkd0Pik6CisKIDIwMjAtMDMtMDYgIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzb21lIGlzc3VlcyBp
biB0aGUgQVJNNjQgbW92ZUNvbmRpdGlvbmFsbHlBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKCkg
YW5kIG1vdmVEb3VibGVDb25kaXRpb25hbGx5QWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFyZSgpLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5jcHAJKHJldmlzaW9uIDI1ODAzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsMjMgKzEyNywy
MyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTWFjCiB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlv
biBjb25kKQogewogICAgIHN3aXRjaCAoY29uZCkgewotICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6
OkRvdWJsZUVxdWFsOgotICAgICAgICBvdXQucHJpbnQoIkRvdWJsZUVxdWFsIik7CisgICAgY2Fz
ZSBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWxBbmRPcmRlcmVkOgorICAgICAgICBvdXQucHJp
bnQoIkRvdWJsZUVxdWFsQW5kT3JkZXJlZCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWw6Ci0gICAgICAgIG91dC5wcmludCgiRG91Ymxl
Tm90RXF1YWwiKTsKKyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbEFuZE9y
ZGVyZWQ6CisgICAgICAgIG91dC5wcmludCgiRG91YmxlTm90RXF1YWxBbmRPcmRlcmVkIik7CiAg
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhh
bjoKLSAgICAgICAgb3V0LnByaW50KCJEb3VibGVHcmVhdGVyVGhhbiIpOworICAgIGNhc2UgTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZDoKKyAgICAgICAgb3V0LnBy
aW50KCJEb3VibGVHcmVhdGVyVGhhbkFuZE9yZGVyZWQiKTsKICAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbDoKLSAgICAgICAg
b3V0LnByaW50KCJEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWwiKTsKKyAgICBjYXNlIE1hY3JvQXNz
ZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxBbmRPcmRlcmVkOgorICAgICAgICBvdXQu
cHJpbnQoIkRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQiKTsKICAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuOgotICAgICAgICBv
dXQucHJpbnQoIkRvdWJsZUxlc3NUaGFuIik7CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlTGVzc1RoYW5BbmRPcmRlcmVkOgorICAgICAgICBvdXQucHJpbnQoIkRvdWJsZUxlc3NUaGFu
QW5kT3JkZXJlZCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6
RG91YmxlTGVzc1RoYW5PckVxdWFsOgotICAgICAgICBvdXQucHJpbnQoIkRvdWJsZUxlc3NUaGFu
T3JFcXVhbCIpOworICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JFcXVh
bEFuZE9yZGVyZWQ6CisgICAgICAgIG91dC5wcmludCgiRG91YmxlTGVzc1RoYW5PckVxdWFsQW5k
T3JkZXJlZCIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlRXF1YWxPclVub3JkZXJlZDoKICAgICAgICAgb3V0LnByaW50KCJEb3VibGVFcXVhbE9yVW5v
cmRlcmVkIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyNTgwMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwzMyAr
MTY0LDMzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRG91YmxlQ29uZGl0aW9uIGludmVydChEb3Vi
bGVDb25kaXRpb24gY29uZCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29uZCkgewotICAgICAg
ICBjYXNlIERvdWJsZUVxdWFsOgorICAgICAgICBjYXNlIERvdWJsZUVxdWFsQW5kT3JkZXJlZDoK
ICAgICAgICAgICAgIHJldHVybiBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkOwotICAgICAgICBj
YXNlIERvdWJsZU5vdEVxdWFsOgorICAgICAgICBjYXNlIERvdWJsZU5vdEVxdWFsQW5kT3JkZXJl
ZDoKICAgICAgICAgICAgIHJldHVybiBEb3VibGVFcXVhbE9yVW5vcmRlcmVkOwotICAgICAgICBj
YXNlIERvdWJsZUdyZWF0ZXJUaGFuOgorICAgICAgICBjYXNlIERvdWJsZUdyZWF0ZXJUaGFuQW5k
T3JkZXJlZDoKICAgICAgICAgICAgIHJldHVybiBEb3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3Jk
ZXJlZDsKLSAgICAgICAgY2FzZSBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWw6CisgICAgICAgIGNh
c2UgRG91YmxlR3JlYXRlclRoYW5PckVxdWFsQW5kT3JkZXJlZDoKICAgICAgICAgICAgIHJldHVy
biBEb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkOwotICAgICAgICBjYXNlIERvdWJsZUxlc3NUaGFu
OgorICAgICAgICBjYXNlIERvdWJsZUxlc3NUaGFuQW5kT3JkZXJlZDoKICAgICAgICAgICAgIHJl
dHVybiBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZDsKLSAgICAgICAgY2FzZSBE
b3VibGVMZXNzVGhhbk9yRXF1YWw6CisgICAgICAgIGNhc2UgRG91YmxlTGVzc1RoYW5PckVxdWFs
QW5kT3JkZXJlZDoKICAgICAgICAgICAgIHJldHVybiBEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRl
cmVkOwogICAgICAgICBjYXNlIERvdWJsZUVxdWFsT3JVbm9yZGVyZWQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gRG91YmxlTm90RXF1YWw7CisgICAgICAgICAgICByZXR1cm4gRG91YmxlTm90RXF1YWxB
bmRPcmRlcmVkOwogICAgICAgICBjYXNlIERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQ6Ci0gICAg
ICAgICAgICByZXR1cm4gRG91YmxlRXF1YWw7CisgICAgICAgICAgICByZXR1cm4gRG91YmxlRXF1
YWxBbmRPcmRlcmVkOwogICAgICAgICBjYXNlIERvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQ6
Ci0gICAgICAgICAgICByZXR1cm4gRG91YmxlTGVzc1RoYW5PckVxdWFsOworICAgICAgICAgICAg
cmV0dXJuIERvdWJsZUxlc3NUaGFuT3JFcXVhbEFuZE9yZGVyZWQ7CiAgICAgICAgIGNhc2UgRG91
YmxlR3JlYXRlclRoYW5PckVxdWFsT3JVbm9yZGVyZWQ6Ci0gICAgICAgICAgICByZXR1cm4gRG91
YmxlTGVzc1RoYW47CisgICAgICAgICAgICByZXR1cm4gRG91YmxlTGVzc1RoYW5BbmRPcmRlcmVk
OwogICAgICAgICBjYXNlIERvdWJsZUxlc3NUaGFuT3JVbm9yZGVyZWQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gRG91YmxlR3JlYXRlclRoYW5PckVxdWFsOworICAgICAgICAgICAgcmV0dXJuIERvdWJs
ZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQ7CiAgICAgICAgIGNhc2UgRG91YmxlTGVzc1Ro
YW5PckVxdWFsT3JVbm9yZGVyZWQ6Ci0gICAgICAgICAgICByZXR1cm4gRG91YmxlR3JlYXRlclRo
YW47CisgICAgICAgICAgICByZXR1cm4gRG91YmxlR3JlYXRlclRoYW5BbmRPcmRlcmVkOwogICAg
ICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiBEb3VibGVFcXVhbDsgLy8gbWFrZSBjb21waWxlciBoYXBweQorICAgICAgICByZXR1cm4g
RG91YmxlRXF1YWxBbmRPcmRlcmVkOyAvLyBtYWtlIGNvbXBpbGVyIGhhcHB5CiAgICAgfQogICAg
IAogICAgIHN0YXRpYyBib29sIGlzSW52ZXJ0aWJsZShSZXN1bHRDb25kaXRpb24gY29uZCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCShyZXZpc2lvbiAyNTgwMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDEy
ICsxMjMsMTIgQEAgcHVibGljOgogCiAgICAgZW51bSBEb3VibGVDb25kaXRpb24gewogICAgICAg
ICAvLyBUaGVzZSBjb25kaXRpb25zIHdpbGwgb25seSBldmFsdWF0ZSB0byB0cnVlIGlmIHRoZSBj
b21wYXJpc29uIGlzIG9yZGVyZWQgLSBpLmUuIG5laXRoZXIgb3BlcmFuZCBpcyBOYU4uCi0gICAg
ICAgIERvdWJsZUVxdWFsID0gQXNzZW1ibGVyOjpDb25kaXRpb25FUSwKLSAgICAgICAgRG91Ymxl
Tm90RXF1YWwgPSBBc3NlbWJsZXI6OkNvbmRpdGlvblZDLCAvLyBOb3QgdGhlIHJpZ2h0IGZsYWch
IGNoZWNrIGZvciB0aGlzICYgaGFuZGxlIGRpZmZlcmVudGx5LgotICAgICAgICBEb3VibGVHcmVh
dGVyVGhhbiA9IEFzc2VtYmxlcjo6Q29uZGl0aW9uR1QsCi0gICAgICAgIERvdWJsZUdyZWF0ZXJU
aGFuT3JFcXVhbCA9IEFzc2VtYmxlcjo6Q29uZGl0aW9uR0UsCi0gICAgICAgIERvdWJsZUxlc3NU
aGFuID0gQXNzZW1ibGVyOjpDb25kaXRpb25MTywKLSAgICAgICAgRG91YmxlTGVzc1RoYW5PckVx
dWFsID0gQXNzZW1ibGVyOjpDb25kaXRpb25MUywKKyAgICAgICAgRG91YmxlRXF1YWxBbmRPcmRl
cmVkID0gQXNzZW1ibGVyOjpDb25kaXRpb25FUSwKKyAgICAgICAgRG91YmxlTm90RXF1YWxBbmRP
cmRlcmVkID0gQXNzZW1ibGVyOjpDb25kaXRpb25WQywgLy8gTm90IHRoZSByaWdodCBmbGFnISBj
aGVjayBmb3IgdGhpcyAmIGhhbmRsZSBkaWZmZXJlbnRseS4KKyAgICAgICAgRG91YmxlR3JlYXRl
clRoYW5BbmRPcmRlcmVkID0gQXNzZW1ibGVyOjpDb25kaXRpb25HVCwKKyAgICAgICAgRG91Ymxl
R3JlYXRlclRoYW5PckVxdWFsQW5kT3JkZXJlZCA9IEFzc2VtYmxlcjo6Q29uZGl0aW9uR0UsCisg
ICAgICAgIERvdWJsZUxlc3NUaGFuQW5kT3JkZXJlZCA9IEFzc2VtYmxlcjo6Q29uZGl0aW9uTE8s
CisgICAgICAgIERvdWJsZUxlc3NUaGFuT3JFcXVhbEFuZE9yZGVyZWQgPSBBc3NlbWJsZXI6OkNv
bmRpdGlvbkxTLAogICAgICAgICAvLyBJZiBlaXRoZXIgb3BlcmFuZCBpcyBOYU4sIHRoZXNlIGNv
bmRpdGlvbnMgYWx3YXlzIGV2YWx1YXRlIHRvIHRydWUuCiAgICAgICAgIERvdWJsZUVxdWFsT3JV
bm9yZGVyZWQgPSBBc3NlbWJsZXI6OkNvbmRpdGlvblZTLCAvLyBOb3QgdGhlIHJpZ2h0IGZsYWch
IGNoZWNrIGZvciB0aGlzICYgaGFuZGxlIGRpZmZlcmVudGx5LgogICAgICAgICBEb3VibGVOb3RF
cXVhbE9yVW5vcmRlcmVkID0gQXNzZW1ibGVyOjpDb25kaXRpb25ORSwKQEAgLTIwMDYsNyArMjAw
Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CiAgICAgdm9pZCBtb3Zl
Q29uZGl0aW9uYWxseUFmdGVyRmxvYXRpbmdQb2ludENvbXBhcmUoRG91YmxlQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBpZiAo
Y29uZCA9PSBEb3VibGVOb3RFcXVhbCkgeworICAgICAgICBpZiAoY29uZCA9PSBEb3VibGVOb3RF
cXVhbEFuZE9yZGVyZWQpIHsKICAgICAgICAgICAgIEp1bXAgdW5vcmRlcmVkID0gbWFrZUJyYW5j
aChBc3NlbWJsZXI6OkNvbmRpdGlvblZTKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNzZWw8
ZGF0YXNpemU+KGRlc3QsIHNyYywgZGVzdCwgQXNzZW1ibGVyOjpDb25kaXRpb25ORSk7CiAgICAg
ICAgICAgICB1bm9yZGVyZWQubGluayh0aGlzKTsKQEAgLTIwMjcsNyArMjAyNyw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CiAgICAgdm9pZCBtb3ZlQ29uZGl0aW9uYWxs
eUFmdGVyRmxvYXRpbmdQb2ludENvbXBhcmUoRG91YmxlQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgdGhlbkNhc2UsIFJlZ2lzdGVySUQgZWxzZUNhc2UsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIGlmIChjb25kID09IERvdWJsZU5vdEVxdWFsKSB7CisgICAgICAgIGlmIChjb25k
ID09IERvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZCkgewogICAgICAgICAgICAgaWYgKGRlc3QgPT0g
dGhlbkNhc2UpIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY29tcGFyZSBpcyB1bm9yZGVy
ZWQsIGVsc2VDYXNlIGlzIGNvcGllZCB0byB0aGVuQ2FzZSBhbmQgdGhlCiAgICAgICAgICAgICAg
ICAgLy8gbmV4dCBjc2VsIGhhcyBhbGwgYXJndW1lbnRzIGVxdWFsIHRvIGVsc2VDYXNlLgpAQCAt
MjA2NSw3ICsyMDY1LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAg
ICB2b2lkIG1vdmVEb3VibGVDb25kaXRpb25hbGx5QWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFyZShE
b3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIHRoZW5DYXNlLCBGUFJlZ2lzdGVySUQg
ZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbmQgPT0g
RG91YmxlTm90RXF1YWwpIHsKKyAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlTm90RXF1YWxBbmRP
cmRlcmVkKSB7CiAgICAgICAgICAgICBpZiAoZGVzdCA9PSB0aGVuQ2FzZSkgewogICAgICAgICAg
ICAgICAgIC8vIElmIHRoZSBjb21wYXJlIGlzIHVub3JkZXJlZCwgZWxzZUNhc2UgaXMgY29waWVk
IHRvIHRoZW5DYXNlIGFuZCB0aGUKICAgICAgICAgICAgICAgICAvLyBuZXh0IGZjc2VsIGhhcyBh
bGwgYXJndW1lbnRzIGVxdWFsIHRvIGVsc2VDYXNlLgpAQCAtNDYxNyw3ICs0NjE3LDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgSnVtcCBqdW1wQWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFyZShEb3VibGVD
b25kaXRpb24gY29uZCkKICAgICB7Ci0gICAgICAgIGlmIChjb25kID09IERvdWJsZU5vdEVxdWFs
KSB7CisgICAgICAgIGlmIChjb25kID09IERvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZCkgewogICAg
ICAgICAgICAgLy8gQ29uZGl0aW9uTkUganVtcHMgaWYgTm90RXF1YWwgKm9yKiB1bm9yZGVyZWQg
LSBmb3JjZSB0aGUgdW5vcmRlcmVkIGNhc2VzIG5vdCB0byBqdW1wLgogICAgICAgICAgICAgSnVt
cCB1bm9yZGVyZWQgPSBtYWtlQnJhbmNoKEFzc2VtYmxlcjo6Q29uZGl0aW9uVlMpOwogICAgICAg
ICAgICAgSnVtcCByZXN1bHQgPSBtYWtlQnJhbmNoKEFzc2VtYmxlcjo6Q29uZGl0aW9uTkUpOwpA
QCAtNDYzOSw3ICs0NjM5LDcgQEAgcHJvdGVjdGVkOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0aW9uPgogICAgIHZvaWQgZmxvYXRpbmdQb2ludENvbXBhcmUoRG91YmxlQ29uZGl0aW9uIGNv
bmQsIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVz
dCwgRnVuY3Rpb24gY29tcGFyZSkKICAgICB7Ci0gICAgICAgIGlmIChjb25kID09IERvdWJsZU5v
dEVxdWFsKSB7CisgICAgICAgIGlmIChjb25kID09IERvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZCkg
ewogICAgICAgICAgICAgLy8gQ29uZGl0aW9uTkUgc2V0cyAxIGlmIE5vdEVxdWFsICpvciogdW5v
cmRlcmVkIC0gZm9yY2UgdGhlIHVub3JkZXJlZCBjYXNlcyBub3QgdG8gc2V0IDEuCiAgICAgICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgZGVzdCk7CiAgICAgICAgICAgICBjb21wYXJlKGxl
ZnQsIHJpZ2h0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAyNTgwMzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBj
b3B5KQpAQCAtMTI4LDEyICsxMjgsMTIgQEAgcHVibGljOgogCiAgICAgZW51bSBEb3VibGVDb25k
aXRpb24gewogICAgICAgICAvLyBUaGVzZSBjb25kaXRpb25zIHdpbGwgb25seSBldmFsdWF0ZSB0
byB0cnVlIGlmIHRoZSBjb21wYXJpc29uIGlzIG9yZGVyZWQgLSBpLmUuIG5laXRoZXIgb3BlcmFu
ZCBpcyBOYU4uCi0gICAgICAgIERvdWJsZUVxdWFsID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlv
bkVRLAotICAgICAgICBEb3VibGVOb3RFcXVhbCA9IEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb25W
QywgLy8gTm90IHRoZSByaWdodCBmbGFnISBjaGVjayBmb3IgdGhpcyAmIGhhbmRsZSBkaWZmZXJl
bnRseS4KLSAgICAgICAgRG91YmxlR3JlYXRlclRoYW4gPSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0
aW9uR1QsCi0gICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCA9IEFSTXY3QXNzZW1ibGVy
OjpDb25kaXRpb25HRSwKLSAgICAgICAgRG91YmxlTGVzc1RoYW4gPSBBUk12N0Fzc2VtYmxlcjo6
Q29uZGl0aW9uTE8sCi0gICAgICAgIERvdWJsZUxlc3NUaGFuT3JFcXVhbCA9IEFSTXY3QXNzZW1i
bGVyOjpDb25kaXRpb25MUywKKyAgICAgICAgRG91YmxlRXF1YWxBbmRPcmRlcmVkID0gQVJNdjdB
c3NlbWJsZXI6OkNvbmRpdGlvbkVRLAorICAgICAgICBEb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQg
PSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uVkMsIC8vIE5vdCB0aGUgcmlnaHQgZmxhZyEgY2hl
Y2sgZm9yIHRoaXMgJiBoYW5kbGUgZGlmZmVyZW50bHkuCisgICAgICAgIERvdWJsZUdyZWF0ZXJU
aGFuQW5kT3JkZXJlZCA9IEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb25HVCwKKyAgICAgICAgRG91
YmxlR3JlYXRlclRoYW5PckVxdWFsQW5kT3JkZXJlZCA9IEFSTXY3QXNzZW1ibGVyOjpDb25kaXRp
b25HRSwKKyAgICAgICAgRG91YmxlTGVzc1RoYW5BbmRPcmRlcmVkID0gQVJNdjdBc3NlbWJsZXI6
OkNvbmRpdGlvbkxPLAorICAgICAgICBEb3VibGVMZXNzVGhhbk9yRXF1YWxBbmRPcmRlcmVkID0g
QVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkxTLAogICAgICAgICAvLyBJZiBlaXRoZXIgb3BlcmFu
ZCBpcyBOYU4sIHRoZXNlIGNvbmRpdGlvbnMgYWx3YXlzIGV2YWx1YXRlIHRvIHRydWUuCiAgICAg
ICAgIERvdWJsZUVxdWFsT3JVbm9yZGVyZWQgPSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uVlMs
IC8vIE5vdCB0aGUgcmlnaHQgZmxhZyEgY2hlY2sgZm9yIHRoaXMgJiBoYW5kbGUgZGlmZmVyZW50
bHkuCiAgICAgICAgIERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQgPSBBUk12N0Fzc2VtYmxlcjo6
Q29uZGl0aW9uTkUsCkBAIC0xMjE4LDcgKzEyMTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnZjbXAobGVmdCwgcmlnaHQpOwogICAgICAgICBtX2Fzc2VtYmxlci52bXJzKCk7CiAK
LSAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlTm90RXF1YWwpIHsKKyAgICAgICAgaWYgKGNvbmQg
PT0gRG91YmxlTm90RXF1YWxBbmRPcmRlcmVkKSB7CiAgICAgICAgICAgICAvLyBDb25kaXRpb25O
RSBqdW1wcyBpZiBOb3RFcXVhbCAqb3IqIHVub3JkZXJlZCAtIGZvcmNlIHRoZSB1bm9yZGVyZWQg
Y2FzZXMgbm90IHRvIGp1bXAuCiAgICAgICAgICAgICBKdW1wIHVub3JkZXJlZCA9IG1ha2VCcmFu
Y2goQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvblZTKTsKICAgICAgICAgICAgIEp1bXAgcmVzdWx0
ID0gbWFrZUJyYW5jaChBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uTkUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5o
CShyZXZpc2lvbiAyNTgwMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyTUlQUy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSwxMiArOTksMTIgQEAgcHVi
bGljOgogICAgIH07CiAKICAgICBlbnVtIERvdWJsZUNvbmRpdGlvbiB7Ci0gICAgICAgIERvdWJs
ZUVxdWFsLAotICAgICAgICBEb3VibGVOb3RFcXVhbCwKLSAgICAgICAgRG91YmxlR3JlYXRlclRo
YW4sCi0gICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCwKLSAgICAgICAgRG91YmxlTGVz
c1RoYW4sCi0gICAgICAgIERvdWJsZUxlc3NUaGFuT3JFcXVhbCwKKyAgICAgICAgRG91YmxlRXF1
YWxBbmRPcmRlcmVkLAorICAgICAgICBEb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQsCisgICAgICAg
IERvdWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZCwKKyAgICAgICAgRG91YmxlR3JlYXRlclRoYW5P
ckVxdWFsQW5kT3JkZXJlZCwKKyAgICAgICAgRG91YmxlTGVzc1RoYW5BbmRPcmRlcmVkLAorICAg
ICAgICBEb3VibGVMZXNzVGhhbk9yRXF1YWxBbmRPcmRlcmVkLAogICAgICAgICBEb3VibGVFcXVh
bE9yVW5vcmRlcmVkLAogICAgICAgICBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLAogICAgICAg
ICBEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkLApAQCAtMzIwNCwyNyArMzIwNCwyNyBAQCBw
dWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZShEb3VibGVDb25kaXRpb24gY29uZCwgRlBS
ZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCkKICAgICB7Ci0gICAgICAgIGlmIChj
b25kID09IERvdWJsZUVxdWFsKSB7CisgICAgICAgIGlmIChjb25kID09IERvdWJsZUVxdWFsQW5k
T3JkZXJlZCkgewogICAgICAgICAgICAgbV9hc3NlbWJsZXIuY2VxZChsZWZ0LCByaWdodCk7CiAg
ICAgICAgICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChj
b25kID09IERvdWJsZU5vdEVxdWFsKSB7CisgICAgICAgIGlmIChjb25kID09IERvdWJsZU5vdEVx
dWFsQW5kT3JkZXJlZCkgewogICAgICAgICAgICAgbV9hc3NlbWJsZXIuY3VlcWQobGVmdCwgcmln
aHQpOwogICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7IC8vIGZhbHNlCiAgICAgICAg
IH0KLSAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlR3JlYXRlclRoYW4pIHsKKyAgICAgICAgaWYg
KGNvbmQgPT0gRG91YmxlR3JlYXRlclRoYW5BbmRPcmRlcmVkKSB7CiAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5jbmd0ZChsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICByZXR1cm4gYnJhbmNoRmFs
c2UoKTsgLy8gZmFsc2UKICAgICAgICAgfQotICAgICAgICBpZiAoY29uZCA9PSBEb3VibGVHcmVh
dGVyVGhhbk9yRXF1YWwpIHsKKyAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlR3JlYXRlclRoYW5P
ckVxdWFsQW5kT3JkZXJlZCkgewogICAgICAgICAgICAgbV9hc3NlbWJsZXIuY25nZWQobGVmdCwg
cmlnaHQpOwogICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7IC8vIGZhbHNlCiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlTGVzc1RoYW4pIHsKKyAgICAgICAgaWYg
KGNvbmQgPT0gRG91YmxlTGVzc1RoYW5BbmRPcmRlcmVkKSB7CiAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5jbHRkKGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlTGVzc1RoYW5PckVxdWFsKSB7
CisgICAgICAgIGlmIChjb25kID09IERvdWJsZUxlc3NUaGFuT3JFcXVhbEFuZE9yZGVyZWQpIHsK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNsZWQobGVmdCwgcmlnaHQpOwogICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaFRydWUoKTsKICAgICAgICAgfQpAQCAtMzMwNSw3ICszMzA1LDcgQEAgcHVi
bGljOgogICAgIEp1bXAgYnJhbmNoRG91YmxlTm9uWmVybyhGUFJlZ2lzdGVySUQgcmVnLCBGUFJl
Z2lzdGVySUQgc2NyYXRjaCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Yoc2NyYXRj
aCwgTUlQU1JlZ2lzdGVyczo6emVybywgTUlQU1JlZ2lzdGVyczo6emVybyk7Ci0gICAgICAgIHJl
dHVybiBicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWwsIHJlZywgc2NyYXRjaCk7CisgICAgICAg
IHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWxBbmRPcmRlcmVkLCByZWcsIHNjcmF0
Y2gpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoRG91YmxlWmVyb09yTmFOKEZQUmVnaXN0ZXJJ
RCByZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2
aXNpb24gMjU4MDM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxMiArODgsMTIgQEAgcHVi
bGljOgogICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuZWF0IHRvIHJlbmFtZSB0aGlzIHRvIEZs
b2F0aW5nUG9pbnRDb25kaXRpb24gaW4gZXZlcnkgYXNzZW1ibGVyLgogICAgIGVudW0gRG91Ymxl
Q29uZGl0aW9uIHsKICAgICAgICAgLy8gVGhlc2UgY29uZGl0aW9ucyB3aWxsIG9ubHkgZXZhbHVh
dGUgdG8gdHJ1ZSBpZiB0aGUgY29tcGFyaXNvbiBpcyBvcmRlcmVkIC0gaS5lLiBuZWl0aGVyIG9w
ZXJhbmQgaXMgTmFOLgotICAgICAgICBEb3VibGVFcXVhbCA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0
aW9uRSB8IERvdWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwsCi0gICAgICAgIERvdWJsZU5vdEVxdWFs
ID0gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25ORSwKLSAgICAgICAgRG91YmxlR3JlYXRlclRoYW4g
PSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkEsCi0gICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuT3JF
cXVhbCA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uQUUsCi0gICAgICAgIERvdWJsZUxlc3NUaGFu
ID0gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25BIHwgRG91YmxlQ29uZGl0aW9uQml0SW52ZXJ0LAot
ICAgICAgICBEb3VibGVMZXNzVGhhbk9yRXF1YWwgPSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkFF
IHwgRG91YmxlQ29uZGl0aW9uQml0SW52ZXJ0LAorICAgICAgICBEb3VibGVFcXVhbEFuZE9yZGVy
ZWQgPSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkUgfCBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFs
LAorICAgICAgICBEb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQgPSBYODZBc3NlbWJsZXI6OkNvbmRp
dGlvbk5FLAorICAgICAgICBEb3VibGVHcmVhdGVyVGhhbkFuZE9yZGVyZWQgPSBYODZBc3NlbWJs
ZXI6OkNvbmRpdGlvbkEsCisgICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVy
ZWQgPSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkFFLAorICAgICAgICBEb3VibGVMZXNzVGhhbkFu
ZE9yZGVyZWQgPSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkEgfCBEb3VibGVDb25kaXRpb25CaXRJ
bnZlcnQsCisgICAgICAgIERvdWJsZUxlc3NUaGFuT3JFcXVhbEFuZE9yZGVyZWQgPSBYODZBc3Nl
bWJsZXI6OkNvbmRpdGlvbkFFIHwgRG91YmxlQ29uZGl0aW9uQml0SW52ZXJ0LAogICAgICAgICAv
LyBJZiBlaXRoZXIgb3BlcmFuZCBpcyBOYU4sIHRoZXNlIGNvbmRpdGlvbnMgYWx3YXlzIGV2YWx1
YXRlIHRvIHRydWUuCiAgICAgICAgIERvdWJsZUVxdWFsT3JVbm9yZGVyZWQgPSBYODZBc3NlbWJs
ZXI6OkNvbmRpdGlvbkUsCiAgICAgICAgIERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQgPSBYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbk5FIHwgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCwKQEAgLTIw
ODAsNyArMjA4MCw3IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBS
ZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewogICAgICAgICBtX2Fz
c2VtYmxlci54b3JwZF9ycihzY3JhdGNoLCBzY3JhdGNoKTsKLSAgICAgICAgcmV0dXJuIGJyYW5j
aERvdWJsZShEb3VibGVOb3RFcXVhbCwgcmVnLCBzY3JhdGNoKTsKKyAgICAgICAgcmV0dXJuIGJy
YW5jaERvdWJsZShEb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQsIHJlZywgc2NyYXRjaCk7CiAgICAg
fQogCiAgICAgSnVtcCBicmFuY2hEb3VibGVaZXJvT3JOYU4oRlBSZWdpc3RlcklEIHJlZywgRlBS
ZWdpc3RlcklEIHNjcmF0Y2gpCkBAIC0yMzI0LDcgKzIzMjQsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc2RfcnIocmlnaHQsIGxlZnQpOwog
Ci0gICAgICAgIGlmIChjb25kID09IERvdWJsZUVxdWFsKSB7CisgICAgICAgIGlmIChjb25kID09
IERvdWJsZUVxdWFsQW5kT3JkZXJlZCkgewogICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQp
IHsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbW92bnBsX3JyKHNyYywgZGVzdCk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzAzNywzMyArMzAzNywzMyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIERvdWJsZUNvbmRpdGlvbiBpbnZlcnQoRG91YmxlQ29uZGl0aW9uIGNvbmQpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKLSAgICAgICAgY2FzZSBEb3VibGVFcXVhbDoK
KyAgICAgICAgY2FzZSBEb3VibGVFcXVhbEFuZE9yZGVyZWQ6CiAgICAgICAgICAgICByZXR1cm4g
RG91YmxlTm90RXF1YWxPclVub3JkZXJlZDsKLSAgICAgICAgY2FzZSBEb3VibGVOb3RFcXVhbDoK
KyAgICAgICAgY2FzZSBEb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQ6CiAgICAgICAgICAgICByZXR1
cm4gRG91YmxlRXF1YWxPclVub3JkZXJlZDsKLSAgICAgICAgY2FzZSBEb3VibGVHcmVhdGVyVGhh
bjoKKyAgICAgICAgY2FzZSBEb3VibGVHcmVhdGVyVGhhbkFuZE9yZGVyZWQ6CiAgICAgICAgICAg
ICByZXR1cm4gRG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQ7Ci0gICAgICAgIGNhc2Ug
RG91YmxlR3JlYXRlclRoYW5PckVxdWFsOgorICAgICAgICBjYXNlIERvdWJsZUdyZWF0ZXJUaGFu
T3JFcXVhbEFuZE9yZGVyZWQ6CiAgICAgICAgICAgICByZXR1cm4gRG91YmxlTGVzc1RoYW5PclVu
b3JkZXJlZDsKLSAgICAgICAgY2FzZSBEb3VibGVMZXNzVGhhbjoKKyAgICAgICAgY2FzZSBEb3Vi
bGVMZXNzVGhhbkFuZE9yZGVyZWQ6CiAgICAgICAgICAgICByZXR1cm4gRG91YmxlR3JlYXRlclRo
YW5PckVxdWFsT3JVbm9yZGVyZWQ7Ci0gICAgICAgIGNhc2UgRG91YmxlTGVzc1RoYW5PckVxdWFs
OgorICAgICAgICBjYXNlIERvdWJsZUxlc3NUaGFuT3JFcXVhbEFuZE9yZGVyZWQ6CiAgICAgICAg
ICAgICByZXR1cm4gRG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZDsKICAgICAgICAgY2FzZSBE
b3VibGVFcXVhbE9yVW5vcmRlcmVkOgotICAgICAgICAgICAgcmV0dXJuIERvdWJsZU5vdEVxdWFs
OworICAgICAgICAgICAgcmV0dXJuIERvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZDsKICAgICAgICAg
Y2FzZSBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkOgotICAgICAgICAgICAgcmV0dXJuIERvdWJs
ZUVxdWFsOworICAgICAgICAgICAgcmV0dXJuIERvdWJsZUVxdWFsQW5kT3JkZXJlZDsKICAgICAg
ICAgY2FzZSBEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkOgotICAgICAgICAgICAgcmV0dXJu
IERvdWJsZUxlc3NUaGFuT3JFcXVhbDsKKyAgICAgICAgICAgIHJldHVybiBEb3VibGVMZXNzVGhh
bk9yRXF1YWxBbmRPcmRlcmVkOwogICAgICAgICBjYXNlIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVh
bE9yVW5vcmRlcmVkOgotICAgICAgICAgICAgcmV0dXJuIERvdWJsZUxlc3NUaGFuOworICAgICAg
ICAgICAgcmV0dXJuIERvdWJsZUxlc3NUaGFuQW5kT3JkZXJlZDsKICAgICAgICAgY2FzZSBEb3Vi
bGVMZXNzVGhhbk9yVW5vcmRlcmVkOgotICAgICAgICAgICAgcmV0dXJuIERvdWJsZUdyZWF0ZXJU
aGFuT3JFcXVhbDsKKyAgICAgICAgICAgIHJldHVybiBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxB
bmRPcmRlcmVkOwogICAgICAgICBjYXNlIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVk
OgotICAgICAgICAgICAgcmV0dXJuIERvdWJsZUdyZWF0ZXJUaGFuOworICAgICAgICAgICAgcmV0
dXJuIERvdWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZDsKICAgICAgICAgfQogICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gRG91YmxlRXF1YWw7IC8v
IG1ha2UgY29tcGlsZXIgaGFwcHkKKyAgICAgICAgcmV0dXJuIERvdWJsZUVxdWFsQW5kT3JkZXJl
ZDsgLy8gbWFrZSBjb21waWxlciBoYXBweQogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGlzSW52
ZXJ0aWJsZShSZXN1bHRDb25kaXRpb24gY29uZCkKQEAgLTQxMjIsNyArNDEyMiw3IEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBpZiAoY29uZCAmIERvdWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwp
IHsKICAgICAgICAgICAgIEFTU0VSVCghKGNvbmQgJiBEb3VibGVDb25kaXRpb25CaXRJbnZlcnQp
KTsKLSAgICAgICAgICAgIGlmIChjb25kID09IERvdWJsZUVxdWFsKSB7CisgICAgICAgICAgICBp
ZiAoY29uZCA9PSBEb3VibGVFcXVhbEFuZE9yZGVyZWQpIHsKICAgICAgICAgICAgICAgICBpZiAo
bGVmdCA9PSByaWdodCkgewogICAgICAgICAgICAgICAgICAgICBjb21wYXJlKHJpZ2h0LCBsZWZ0
KTsKICAgICAgICAgICAgICAgICAgICAgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb25OUCwg
ZGVzdCk7CkBAIC00MTY0LDcgKzQxNjQsNyBAQCBwcml2YXRlOgogCiAgICAgSnVtcCBqdW1wQWZ0
ZXJGbG9hdGluZ1BvaW50Q29tcGFyZShEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklE
IGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCkKICAgICB7Ci0gICAgICAgIGlmIChjb25kID09IERv
dWJsZUVxdWFsKSB7CisgICAgICAgIGlmIChjb25kID09IERvdWJsZUVxdWFsQW5kT3JkZXJlZCkg
ewogICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEp1bXAobV9hc3NlbWJsZXIuam5wKCkpOwogICAgICAgICAgICAgSnVtcCBpc1Vub3JkZXJlZCht
X2Fzc2VtYmxlci5qcCgpKTsKQEAgLTQxOTksNyArNDE5OSw3IEBAIHByaXZhdGU6CiAjaWYgQ1BV
KFg4Nl82NCkKICAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5QWZ0ZXJGbG9hdGluZ1BvaW50Q29t
cGFyZShEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJ
RCByaWdodCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAg
IGlmIChjb25kID09IERvdWJsZUVxdWFsKSB7CisgICAgICAgIGlmIChjb25kID09IERvdWJsZUVx
dWFsQW5kT3JkZXJlZCkgewogICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpIHsKICAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5jbW92bnBxX3JyKHNyYywgZGVzdCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMjU4MDM2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzgzLDcgKzE3ODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGluc3Ry
dWN0aW9ucyBhcmUgdGhlIHNhbWUuIE90aGVyd2lzZSwgd2UgbmVlZCB0bzogc3VidHJhY3QgaW50
NjRfdDo6bWluKCk7IHRydW5jYXRlIGRvdWJsZSB0bwogICAgICAgICAvLyB1aW50NjRfdDsgdGhl
biBhZGQgYmFjayBpbnQ2NF90OjptaW4oKSBpbiB0aGUgZGVzdGluYXRpb24gZ3ByLgogCi0gICAg
ICAgIEp1bXAgbGFyZ2UgPSBicmFuY2hEb3VibGUoRG91YmxlR3JlYXRlclRoYW5PckVxdWFsLCBz
cmMsIGludDY0TWluKTsKKyAgICAgICAgSnVtcCBsYXJnZSA9IGJyYW5jaERvdWJsZShEb3VibGVH
cmVhdGVyVGhhbk9yRXF1YWxBbmRPcmRlcmVkLCBzcmMsIGludDY0TWluKTsKICAgICAgICAgbV9h
c3NlbWJsZXIuY3Z0dHNkMnNpcV9ycihzcmMsIGRlc3QpOwogICAgICAgICBKdW1wIGRvbmUgPSBq
dW1wKCk7CiAgICAgICAgIGxhcmdlLmxpbmsodGhpcyk7CkBAIC0xODE2LDcgKzE4MTYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIC8vIGluc3RydWN0aW9ucyBhcmUgdGhlIHNhbWUuIE90aGVyd2lzZSwg
d2UgbmVlZCB0bzogc3VidHJhY3QgaW50NjRfdDo6bWluKCk7IHRydW5jYXRlIGRvdWJsZSB0bwog
ICAgICAgICAvLyB1aW50NjRfdDsgdGhlbiBhZGQgYmFjayBpbnQ2NF90OjptaW4oKSBpbiB0aGUg
ZGVzdGluYXRpb24gZ3ByLgogCi0gICAgICAgIEp1bXAgbGFyZ2UgPSBicmFuY2hGbG9hdChEb3Vi
bGVHcmVhdGVyVGhhbk9yRXF1YWwsIHNyYywgaW50NjRNaW4pOworICAgICAgICBKdW1wIGxhcmdl
ID0gYnJhbmNoRmxvYXQoRG91YmxlR3JlYXRlclRoYW5PckVxdWFsQW5kT3JkZXJlZCwgc3JjLCBp
bnQ2NE1pbik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzczJzaXFfcnIoc3JjLCBkZXN0KTsK
ICAgICAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgICAgICBsYXJnZS5saW5rKHRoaXMpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJKHJl
dmlzaW9uIDI1ODAzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1h
c20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDQsMTcgKzUwNCwxNyBAQCB2b2lkIHRlc3RDb21w
YXJlRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpECiAgICAgICAgICAgICByZXR1cm4geCAhPSB4Owog
ICAgICAgICB9OwogICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbikgewotICAgICAgICBjYXNlIE1h
Y3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbDoKKyAgICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6
RG91YmxlRXF1YWxBbmRPcmRlcmVkOgogICAgICAgICAgICAgcmV0dXJuICFpc1Vub3JkZXJlZChh
KSAmJiAhaXNVbm9yZGVyZWQoYikgJiYgKGEgPT0gYik7Ci0gICAgICAgIGNhc2UgTWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZU5vdEVxdWFsOgorICAgICAgICBjYXNlIE1hY3JvQXNzZW1ibGVyOjpEb3Vi
bGVOb3RFcXVhbEFuZE9yZGVyZWQ6CiAgICAgICAgICAgICByZXR1cm4gIWlzVW5vcmRlcmVkKGEp
ICYmICFpc1Vub3JkZXJlZChiKSAmJiAoYSAhPSBiKTsKLSAgICAgICAgY2FzZSBNYWNyb0Fzc2Vt
Ymxlcjo6RG91YmxlR3JlYXRlclRoYW46CisgICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRv
dWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZDoKICAgICAgICAgICAgIHJldHVybiAhaXNVbm9yZGVy
ZWQoYSkgJiYgIWlzVW5vcmRlcmVkKGIpICYmIChhID4gYik7Ci0gICAgICAgIGNhc2UgTWFjcm9B
c3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbDoKKyAgICAgICAgY2FzZSBNYWNyb0Fz
c2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW5PckVxdWFsQW5kT3JkZXJlZDoKICAgICAgICAgICAg
IHJldHVybiAhaXNVbm9yZGVyZWQoYSkgJiYgIWlzVW5vcmRlcmVkKGIpICYmIChhID49IGIpOwot
ICAgICAgICBjYXNlIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbjoKKyAgICAgICAgY2Fz
ZSBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5BbmRPcmRlcmVkOgogICAgICAgICAgICAg
cmV0dXJuICFpc1Vub3JkZXJlZChhKSAmJiAhaXNVbm9yZGVyZWQoYikgJiYgKGEgPCBiKTsKLSAg
ICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5PckVxdWFsOgorICAgICAg
ICBjYXNlIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbk9yRXF1YWxBbmRPcmRlcmVkOgog
ICAgICAgICAgICAgcmV0dXJuICFpc1Vub3JkZXJlZChhKSAmJiAhaXNVbm9yZGVyZWQoYikgJiYg
KGEgPD0gYik7CiAgICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsT3JVbm9y
ZGVyZWQ6CiAgICAgICAgICAgICByZXR1cm4gaXNVbm9yZGVyZWQoYSkgfHwgaXNVbm9yZGVyZWQo
YikgfHwgKGEgPT0gYik7CkBAIC01NzUsMTcgKzU3NSwxNyBAQCB2b2lkIHRlc3RDb21wYXJlRG91
YmxlU2FtZUFyZyhNYWNyb0Fzc2VtCiAgICAgICAgICAgICByZXR1cm4geCAhPSB4OwogICAgICAg
ICB9OwogICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbikgewotICAgICAgICBjYXNlIE1hY3JvQXNz
ZW1ibGVyOjpEb3VibGVFcXVhbDoKKyAgICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6RG91Ymxl
RXF1YWxBbmRPcmRlcmVkOgogICAgICAgICAgICAgcmV0dXJuICFpc1Vub3JkZXJlZChhKSAmJiAo
YSA9PSBhKTsKLSAgICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWw6Cisg
ICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZDoKICAg
ICAgICAgICAgIHJldHVybiAhaXNVbm9yZGVyZWQoYSkgJiYgKGEgIT0gYSk7Ci0gICAgICAgIGNh
c2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJUaGFuOgorICAgICAgICBjYXNlIE1hY3Jv
QXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbkFuZE9yZGVyZWQ6CiAgICAgICAgICAgICByZXR1
cm4gIWlzVW5vcmRlcmVkKGEpICYmIChhID4gYSk7Ci0gICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJs
ZXI6OkRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbDoKKyAgICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxl
cjo6RG91YmxlR3JlYXRlclRoYW5PckVxdWFsQW5kT3JkZXJlZDoKICAgICAgICAgICAgIHJldHVy
biAhaXNVbm9yZGVyZWQoYSkgJiYgKGEgPj0gYSk7Ci0gICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJs
ZXI6OkRvdWJsZUxlc3NUaGFuOgorICAgICAgICBjYXNlIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVM
ZXNzVGhhbkFuZE9yZGVyZWQ6CiAgICAgICAgICAgICByZXR1cm4gIWlzVW5vcmRlcmVkKGEpICYm
IChhIDwgYSk7Ci0gICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JF
cXVhbDoKKyAgICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5PckVxdWFs
QW5kT3JkZXJlZDoKICAgICAgICAgICAgIHJldHVybiAhaXNVbm9yZGVyZWQoYSkgJiYgKGEgPD0g
YSk7CiAgICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsT3JVbm9yZGVyZWQ6
CiAgICAgICAgICAgICByZXR1cm4gaXNVbm9yZGVyZWQoYSkgfHwgKGEgPT0gYSk7CkBAIC02OTks
MTcgKzY5OSwxNyBAQCB2b2lkIHRlc3RNb3ZlQ29uZGl0aW9uYWxseUZsb2F0aW5nUG9pbnQoCiAg
ICAgICAgICAgICByZXR1cm4geCAhPSB4OwogICAgICAgICB9OwogICAgICAgICBzd2l0Y2ggKGNv
bmRpdGlvbikgewotICAgICAgICBjYXNlIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbDoKKyAg
ICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWxBbmRPcmRlcmVkOgogICAgICAg
ICAgICAgcmV0dXJuICFpc1Vub3JkZXJlZChhKSAmJiAhaXNVbm9yZGVyZWQoYikgJiYgKGEgPT0g
YikgPyBzZWxlY3Rpb25BIDogc2VsZWN0aW9uQjsKLSAgICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxl
cjo6RG91YmxlTm90RXF1YWw6CisgICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5v
dEVxdWFsQW5kT3JkZXJlZDoKICAgICAgICAgICAgIHJldHVybiAhaXNVbm9yZGVyZWQoYSkgJiYg
IWlzVW5vcmRlcmVkKGIpICYmIChhICE9IGIpID8gc2VsZWN0aW9uQSA6IHNlbGVjdGlvbkI7Ci0g
ICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJUaGFuOgorICAgICAgICBj
YXNlIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbkFuZE9yZGVyZWQ6CiAgICAgICAg
ICAgICByZXR1cm4gIWlzVW5vcmRlcmVkKGEpICYmICFpc1Vub3JkZXJlZChiKSAmJiAoYSA+IGIp
ID8gc2VsZWN0aW9uQSA6IHNlbGVjdGlvbkI7Ci0gICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6
OkRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbDoKKyAgICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6
RG91YmxlR3JlYXRlclRoYW5PckVxdWFsQW5kT3JkZXJlZDoKICAgICAgICAgICAgIHJldHVybiAh
aXNVbm9yZGVyZWQoYSkgJiYgIWlzVW5vcmRlcmVkKGIpICYmIChhID49IGIpID8gc2VsZWN0aW9u
QSA6IHNlbGVjdGlvbkI7Ci0gICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NU
aGFuOgorICAgICAgICBjYXNlIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbkFuZE9yZGVy
ZWQ6CiAgICAgICAgICAgICByZXR1cm4gIWlzVW5vcmRlcmVkKGEpICYmICFpc1Vub3JkZXJlZChi
KSAmJiAoYSA8IGIpID8gc2VsZWN0aW9uQSA6IHNlbGVjdGlvbkI7Ci0gICAgICAgIGNhc2UgTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JFcXVhbDoKKyAgICAgICAgY2FzZSBNYWNyb0Fz
c2VtYmxlcjo6RG91YmxlTGVzc1RoYW5PckVxdWFsQW5kT3JkZXJlZDoKICAgICAgICAgICAgIHJl
dHVybiAhaXNVbm9yZGVyZWQoYSkgJiYgIWlzVW5vcmRlcmVkKGIpICYmIChhIDw9IGIpID8gc2Vs
ZWN0aW9uQSA6IHNlbGVjdGlvbkI7CiAgICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZUVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgICAgICAgICByZXR1cm4gaXNVbm9yZGVyZWQoYSkgfHwg
aXNVbm9yZGVyZWQoYikgfHwgKGEgPT0gYikgPyBzZWxlY3Rpb25BIDogc2VsZWN0aW9uQjsKQEAg
LTEwMzYsMTIgKzEwMzYsMTIgQEAgdm9pZCB0ZXN0TW92ZURvdWJsZUNvbmRpdGlvbmFsbHlEb3Vi
bGUoTQogCiAgICAgICAgIEZQUlJlZyB0ZW1wRlBSID0gRlBSSW5mbzo6ZnBSZWdUNTsKICAgICAg
ICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZzZWxlY3Rpb25B
KSwgdGVtcEZQUik7Ci0gICAgICAgIGF1dG8gYUlzVW5jaGFuZ2VkID0gaml0LmJyYW5jaERvdWJs
ZShDQ2FsbEhlbHBlcnM6OkRvdWJsZUVxdWFsLCBzZWxlY3Rpb25BRlBSLCB0ZW1wRlBSKTsKKyAg
ICAgICAgYXV0byBhSXNVbmNoYW5nZWQgPSBqaXQuYnJhbmNoRG91YmxlKENDYWxsSGVscGVyczo6
RG91YmxlRXF1YWxBbmRPcmRlcmVkLCBzZWxlY3Rpb25BRlBSLCB0ZW1wRlBSKTsKICAgICAgICAg
aml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjb3JydXB0ZWRTZWxl
Y3Rpb25BKSwgZGVzdEZQUik7CiAgICAgICAgIGFJc1VuY2hhbmdlZC5saW5rKCZqaXQpOwogCiAg
ICAgICAgIGppdC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmc2VsZWN0
aW9uQiksIHRlbXBGUFIpOwotICAgICAgICBhdXRvIGJJc1VuY2hhbmdlZCA9IGppdC5icmFuY2hE
b3VibGUoQ0NhbGxIZWxwZXJzOjpEb3VibGVFcXVhbCwgc2VsZWN0aW9uQkZQUiwgdGVtcEZQUik7
CisgICAgICAgIGF1dG8gYklzVW5jaGFuZ2VkID0gaml0LmJyYW5jaERvdWJsZShDQ2FsbEhlbHBl
cnM6OkRvdWJsZUVxdWFsQW5kT3JkZXJlZCwgc2VsZWN0aW9uQkZQUiwgdGVtcEZQUik7CiAgICAg
ICAgIGppdC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmY29ycnVwdGVk
U2VsZWN0aW9uQiksIGRlc3RGUFIpOwogICAgICAgICBiSXNVbmNoYW5nZWQubGluaygmaml0KTsK
IApAQCAtMTA4Miw3ICsxMDgyLDcgQEAgdm9pZCB0ZXN0TW92ZURvdWJsZUNvbmRpdGlvbmFsbHlE
b3VibGVEZQogCiAgICAgICAgIEZQUlJlZyB0ZW1wRlBSID0gRlBSSW5mbzo6ZnBSZWdUNTsKICAg
ICAgICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZzZWxlY3Rp
b25CKSwgdGVtcEZQUik7Ci0gICAgICAgIGF1dG8gYklzVW5jaGFuZ2VkID0gaml0LmJyYW5jaERv
dWJsZShDQ2FsbEhlbHBlcnM6OkRvdWJsZUVxdWFsLCBzZWxlY3Rpb25CRlBSLCB0ZW1wRlBSKTsK
KyAgICAgICAgYXV0byBiSXNVbmNoYW5nZWQgPSBqaXQuYnJhbmNoRG91YmxlKENDYWxsSGVscGVy
czo6RG91YmxlRXF1YWxBbmRPcmRlcmVkLCBzZWxlY3Rpb25CRlBSLCB0ZW1wRlBSKTsKICAgICAg
ICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjb3JydXB0ZWRT
ZWxlY3Rpb25CKSwgZGVzdEZQUik7CiAgICAgICAgIGJJc1VuY2hhbmdlZC5saW5rKCZqaXQpOwog
CkBAIC0xMTIzLDcgKzExMjMsNyBAQCB2b2lkIHRlc3RNb3ZlRG91YmxlQ29uZGl0aW9uYWxseURv
dWJsZURlCiAKICAgICAgICAgRlBSUmVnIHRlbXBGUFIgPSBGUFJJbmZvOjpmcFJlZ1Q1OwogICAg
ICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnNlbGVjdGlv
bkEpLCB0ZW1wRlBSKTsKLSAgICAgICAgYXV0byBhSXNVbmNoYW5nZWQgPSBqaXQuYnJhbmNoRG91
YmxlKENDYWxsSGVscGVyczo6RG91YmxlRXF1YWwsIHNlbGVjdGlvbkFGUFIsIHRlbXBGUFIpOwor
ICAgICAgICBhdXRvIGFJc1VuY2hhbmdlZCA9IGppdC5icmFuY2hEb3VibGUoQ0NhbGxIZWxwZXJz
OjpEb3VibGVFcXVhbEFuZE9yZGVyZWQsIHNlbGVjdGlvbkFGUFIsIHRlbXBGUFIpOwogICAgICAg
ICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmNvcnJ1cHRlZFNl
bGVjdGlvbkEpLCBkZXN0RlBSKTsKICAgICAgICAgYUlzVW5jaGFuZ2VkLmxpbmsoJmppdCk7CiAK
QEAgLTExNjUsMTIgKzExNjUsMTIgQEAgdm9pZCB0ZXN0TW92ZURvdWJsZUNvbmRpdGlvbmFsbHlG
bG9hdChNYQogCiAgICAgICAgIEZQUlJlZyB0ZW1wRlBSID0gRlBSSW5mbzo6ZnBSZWdUNTsKICAg
ICAgICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZzZWxlY3Rp
b25BKSwgdGVtcEZQUik7Ci0gICAgICAgIGF1dG8gYUlzVW5jaGFuZ2VkID0gaml0LmJyYW5jaERv
dWJsZShDQ2FsbEhlbHBlcnM6OkRvdWJsZUVxdWFsLCBzZWxlY3Rpb25BRlBSLCB0ZW1wRlBSKTsK
KyAgICAgICAgYXV0byBhSXNVbmNoYW5nZWQgPSBqaXQuYnJhbmNoRG91YmxlKENDYWxsSGVscGVy
czo6RG91YmxlRXF1YWxBbmRPcmRlcmVkLCBzZWxlY3Rpb25BRlBSLCB0ZW1wRlBSKTsKICAgICAg
ICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjb3JydXB0ZWRT
ZWxlY3Rpb25BKSwgZGVzdEZQUik7CiAgICAgICAgIGFJc1VuY2hhbmdlZC5saW5rKCZqaXQpOwog
CiAgICAgICAgIGppdC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmc2Vs
ZWN0aW9uQiksIHRlbXBGUFIpOwotICAgICAgICBhdXRvIGJJc1VuY2hhbmdlZCA9IGppdC5icmFu
Y2hEb3VibGUoQ0NhbGxIZWxwZXJzOjpEb3VibGVFcXVhbCwgc2VsZWN0aW9uQkZQUiwgdGVtcEZQ
Uik7CisgICAgICAgIGF1dG8gYklzVW5jaGFuZ2VkID0gaml0LmJyYW5jaERvdWJsZShDQ2FsbEhl
bHBlcnM6OkRvdWJsZUVxdWFsQW5kT3JkZXJlZCwgc2VsZWN0aW9uQkZQUiwgdGVtcEZQUik7CiAg
ICAgICAgIGppdC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmY29ycnVw
dGVkU2VsZWN0aW9uQiksIGRlc3RGUFIpOwogICAgICAgICBiSXNVbmNoYW5nZWQubGluaygmaml0
KTsKIApAQCAtMTIxMSw3ICsxMjExLDcgQEAgdm9pZCB0ZXN0TW92ZURvdWJsZUNvbmRpdGlvbmFs
bHlGbG9hdERlcwogCiAgICAgICAgIEZQUlJlZyB0ZW1wRlBSID0gRlBSSW5mbzo6ZnBSZWdUNTsK
ICAgICAgICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZzZWxl
Y3Rpb25CKSwgdGVtcEZQUik7Ci0gICAgICAgIGF1dG8gYklzVW5jaGFuZ2VkID0gaml0LmJyYW5j
aERvdWJsZShDQ2FsbEhlbHBlcnM6OkRvdWJsZUVxdWFsLCBzZWxlY3Rpb25CRlBSLCB0ZW1wRlBS
KTsKKyAgICAgICAgYXV0byBiSXNVbmNoYW5nZWQgPSBqaXQuYnJhbmNoRG91YmxlKENDYWxsSGVs
cGVyczo6RG91YmxlRXF1YWxBbmRPcmRlcmVkLCBzZWxlY3Rpb25CRlBSLCB0ZW1wRlBSKTsKICAg
ICAgICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjb3JydXB0
ZWRTZWxlY3Rpb25CKSwgZGVzdEZQUik7CiAgICAgICAgIGJJc1VuY2hhbmdlZC5saW5rKCZqaXQp
OwogCkBAIC0xMjUyLDcgKzEyNTIsNyBAQCB2b2lkIHRlc3RNb3ZlRG91YmxlQ29uZGl0aW9uYWxs
eUZsb2F0RGVzCiAKICAgICAgICAgRlBSUmVnIHRlbXBGUFIgPSBGUFJJbmZvOjpmcFJlZ1Q1Owog
ICAgICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnNlbGVj
dGlvbkEpLCB0ZW1wRlBSKTsKLSAgICAgICAgYXV0byBhSXNVbmNoYW5nZWQgPSBqaXQuYnJhbmNo
RG91YmxlKENDYWxsSGVscGVyczo6RG91YmxlRXF1YWwsIHNlbGVjdGlvbkFGUFIsIHRlbXBGUFIp
OworICAgICAgICBhdXRvIGFJc1VuY2hhbmdlZCA9IGppdC5icmFuY2hEb3VibGUoQ0NhbGxIZWxw
ZXJzOjpEb3VibGVFcXVhbEFuZE9yZGVyZWQsIHNlbGVjdGlvbkFGUFIsIHRlbXBGUFIpOwogICAg
ICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmNvcnJ1cHRl
ZFNlbGVjdGlvbkEpLCBkZXN0RlBSKTsKICAgICAgICAgYUlzVW5jaGFuZ2VkLmxpbmsoJmppdCk7
CiAKQEAgLTEyNzEsMTcgKzEyNzEsMTcgQEAgdm9pZCB0ZXN0TW92ZUNvbmRpdGlvbmFsbHlGbG9h
dGluZ1BvaW50UwogICAgICAgICAgICAgcmV0dXJuIHggIT0geDsKICAgICAgICAgfTsKICAgICAg
ICAgc3dpdGNoIChjb25kaXRpb24pIHsKLSAgICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlRXF1YWw6CisgICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsQW5kT3Jk
ZXJlZDoKICAgICAgICAgICAgIHJldHVybiAhaXNVbm9yZGVyZWQoYSkgJiYgKGEgPT0gYSkgPyBz
ZWxlY3Rpb25BIDogc2VsZWN0aW9uQjsKLSAgICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlTm90RXF1YWw6CisgICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFs
QW5kT3JkZXJlZDoKICAgICAgICAgICAgIHJldHVybiAhaXNVbm9yZGVyZWQoYSkgJiYgKGEgIT0g
YSkgPyBzZWxlY3Rpb25BIDogc2VsZWN0aW9uQjsKLSAgICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxl
cjo6RG91YmxlR3JlYXRlclRoYW46CisgICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZDoKICAgICAgICAgICAgIHJldHVybiAhaXNVbm9yZGVyZWQo
YSkgJiYgKGEgPiBhKSA/IHNlbGVjdGlvbkEgOiBzZWxlY3Rpb25COwotICAgICAgICBjYXNlIE1h
Y3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWw6CisgICAgICAgIGNhc2UgTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQ6CiAgICAgICAg
ICAgICByZXR1cm4gIWlzVW5vcmRlcmVkKGEpICYmIChhID49IGEpID8gc2VsZWN0aW9uQSA6IHNl
bGVjdGlvbkI7Ci0gICAgICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuOgor
ICAgICAgICBjYXNlIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbkFuZE9yZGVyZWQ6CiAg
ICAgICAgICAgICByZXR1cm4gIWlzVW5vcmRlcmVkKGEpICYmIChhIDwgYSkgPyBzZWxlY3Rpb25B
IDogc2VsZWN0aW9uQjsKLSAgICAgICAgY2FzZSBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1Ro
YW5PckVxdWFsOgorICAgICAgICBjYXNlIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbk9y
RXF1YWxBbmRPcmRlcmVkOgogICAgICAgICAgICAgcmV0dXJuICFpc1Vub3JkZXJlZChhKSAmJiAo
YSA8PSBhKSA/IHNlbGVjdGlvbkEgOiBzZWxlY3Rpb25COwogICAgICAgICBjYXNlIE1hY3JvQXNz
ZW1ibGVyOjpEb3VibGVFcXVhbE9yVW5vcmRlcmVkOgogICAgICAgICAgICAgcmV0dXJuIGlzVW5v
cmRlcmVkKGEpIHx8IChhID09IGEpID8gc2VsZWN0aW9uQSA6IHNlbGVjdGlvbkI7CkBAIC0yMjAx
LDEyICsyMjAxLDEyIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKIAogI2RlZmluZSBG
T1JfRUFDSF9ET1VCTEVfQ09ORElUSU9OX1JVTihfX3Rlc3QpIFwKICAgICBkbyB7IFwKLSAgICAg
ICAgUlVOKF9fdGVzdChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWwpKTsgXAotICAgICAgICBS
VU4oX190ZXN0KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbCkpOyBcCi0gICAgICAgIFJV
TihfX3Rlc3QoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJUaGFuKSk7IFwKLSAgICAgICAg
UlVOKF9fdGVzdChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW5PckVxdWFsKSk7IFwK
LSAgICAgICAgUlVOKF9fdGVzdChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW4pKTsgXAot
ICAgICAgICBSVU4oX190ZXN0KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbk9yRXF1YWwp
KTsgXAorICAgICAgICBSVU4oX190ZXN0KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbEFuZE9y
ZGVyZWQpKTsgXAorICAgICAgICBSVU4oX190ZXN0KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RF
cXVhbEFuZE9yZGVyZWQpKTsgXAorICAgICAgICBSVU4oX190ZXN0KE1hY3JvQXNzZW1ibGVyOjpE
b3VibGVHcmVhdGVyVGhhbkFuZE9yZGVyZWQpKTsgXAorICAgICAgICBSVU4oX190ZXN0KE1hY3Jv
QXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxBbmRPcmRlcmVkKSk7IFwKKyAgICAg
ICAgUlVOKF9fdGVzdChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5BbmRPcmRlcmVkKSk7
IFwKKyAgICAgICAgUlVOKF9fdGVzdChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5PckVx
dWFsQW5kT3JkZXJlZCkpOyBcCiAgICAgICAgIFJVTihfX3Rlc3QoTWFjcm9Bc3NlbWJsZXI6OkRv
dWJsZUVxdWFsT3JVbm9yZGVyZWQpKTsgXAogICAgICAgICBSVU4oX190ZXN0KE1hY3JvQXNzZW1i
bGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKSk7IFwKICAgICAgICAgUlVOKF9fdGVzdChN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZCkpOyBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMjU4MDM2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1OTIsMjggKzE1OTIsMjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2Ug
Tm90RXF1YWw6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbENvbmQoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJl
ZCk7CiAgICAgICAgICAgICBjYXNlIEVxdWFsOgotICAgICAgICAgICAgICAgIHJldHVybiBjcmVh
dGVSZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVx
dWFsKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVsQ29uZChNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbEFuZE9yZGVyZWQpOwogICAgICAg
ICAgICAgY2FzZSBMZXNzVGhhbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVsQ29u
ZChNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhh
bik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6
Okxlc3NUaGFuLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5BbmRPcmRlcmVkKTsKICAg
ICAgICAgICAgIGNhc2UgR3JlYXRlclRoYW46Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZVJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuLCBNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlR3JlYXRlclRoYW4pOworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZWxDb25kKE1h
Y3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJU
aGFuQW5kT3JkZXJlZCk7CiAgICAgICAgICAgICBjYXNlIExlc3NFcXVhbDoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlUmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW5PckVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5PckVxdWFsKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY3JlYXRlUmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW5PckVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5PckVxdWFsQW5kT3JkZXJlZCk7CiAgICAgICAg
ICAgICBjYXNlIEdyZWF0ZXJFcXVhbDoKLSAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVs
Q29uZChNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
RG91YmxlR3JlYXRlclRoYW5PckVxdWFsKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRl
UmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6RG91YmxlR3JlYXRlclRoYW5PckVxdWFsQW5kT3JkZXJlZCk7CiAgICAgICAgICAgICBjYXNl
IEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgICAgICAgICAgICAgLy8gVGhlIGludGVnZXIgY29uZGl0
aW9uIGlzIG5ldmVyIHVzZWQgaW4gdGhpcyBjYXNlLgogICAgICAgICAgICAgICAgIHJldHVybiBj
cmVhdGVSZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZUVxdWFsT3JVbm9yZGVyZWQpOwogICAgICAgICAgICAgY2FzZSBBYm92ZToKICAgICAgICAgICAg
ICAgICAvLyBXZSB1c2UgYSBib2d1cyBkb3VibGUgY29uZGl0aW9uIGJlY2F1c2UgdGhlc2UgaW50
ZWdlciBjb21wYXJpc29ucyB3b24ndCBnb3QgZG93biB0aGF0CiAgICAgICAgICAgICAgICAgLy8g
cGF0aCBhbnl3YXkuCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbENvbmQoTWFjcm9B
c3NlbWJsZXI6OkFib3ZlLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWwpOworICAgICAgICAg
ICAgICAgIHJldHVybiBjcmVhdGVSZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgTWFjcm9B
c3NlbWJsZXI6OkRvdWJsZUVxdWFsQW5kT3JkZXJlZCk7CiAgICAgICAgICAgICBjYXNlIEJlbG93
OgotICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpC
ZWxvdywgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlUmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIE1hY3JvQXNzZW1ibGVyOjpE
b3VibGVFcXVhbEFuZE9yZGVyZWQpOwogICAgICAgICAgICAgY2FzZSBBYm92ZUVxdWFsOgotICAg
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGNyZWF0ZVJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZUVxdWFsQW5kT3JkZXJlZCk7CiAgICAgICAgICAgICBjYXNlIEJlbG93RXF1
YWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6
OkJlbG93T3JFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlUmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWxBbmRPcmRlcmVkKTsKICAgICAgICAgICAgIGNhc2Ug
Qml0QW5kOiB7CiAgICAgICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSB2YWx1ZS0+Y2hpbGQoMCk7
CiAgICAgICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gdmFsdWUtPmNoaWxkKDEpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCShyZXZpc2lvbiAyNTgwMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTU3LDIyICsyMTU3
LDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIENvbXBhcmVMZXNzOgotICAgICAgICBpZiAoY29tcGFyZShub2Rl
LCBKSVRDb21waWxlcjo6TGVzc1RoYW4sIEpJVENvbXBpbGVyOjpEb3VibGVMZXNzVGhhbiwgb3Bl
cmF0aW9uQ29tcGFyZUxlc3MpKQorICAgICAgICBpZiAoY29tcGFyZShub2RlLCBKSVRDb21waWxl
cjo6TGVzc1RoYW4sIEpJVENvbXBpbGVyOjpEb3VibGVMZXNzVGhhbkFuZE9yZGVyZWQsIG9wZXJh
dGlvbkNvbXBhcmVMZXNzKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYnJlYWs7CiAK
ICAgICBjYXNlIENvbXBhcmVMZXNzRXE6Ci0gICAgICAgIGlmIChjb21wYXJlKG5vZGUsIEpJVENv
bXBpbGVyOjpMZXNzVGhhbk9yRXF1YWwsIEpJVENvbXBpbGVyOjpEb3VibGVMZXNzVGhhbk9yRXF1
YWwsIG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEpKQorICAgICAgICBpZiAoY29tcGFyZShub2RlLCBK
SVRDb21waWxlcjo6TGVzc1RoYW5PckVxdWFsLCBKSVRDb21waWxlcjo6RG91YmxlTGVzc1RoYW5P
ckVxdWFsQW5kT3JkZXJlZCwgb3BlcmF0aW9uQ29tcGFyZUxlc3NFcSkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDb21wYXJlR3JlYXRlcjoKLSAgICAg
ICAgaWYgKGNvbXBhcmUobm9kZSwgSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuLCBKSVRDb21waWxl
cjo6RG91YmxlR3JlYXRlclRoYW4sIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyKSkKKyAgICAgICAg
aWYgKGNvbXBhcmUobm9kZSwgSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuLCBKSVRDb21waWxlcjo6
RG91YmxlR3JlYXRlclRoYW5BbmRPcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlR3JlYXRlcikpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDb21wYXJlR3Jl
YXRlckVxOgotICAgICAgICBpZiAoY29tcGFyZShub2RlLCBKSVRDb21waWxlcjo6R3JlYXRlclRo
YW5PckVxdWFsLCBKSVRDb21waWxlcjo6RG91YmxlR3JlYXRlclRoYW5PckVxdWFsLCBvcGVyYXRp
b25Db21wYXJlR3JlYXRlckVxKSkKKyAgICAgICAgaWYgKGNvbXBhcmUobm9kZSwgSklUQ29tcGls
ZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgSklUQ29tcGlsZXI6OkRvdWJsZUdyZWF0ZXJUaGFuT3JF
cXVhbEFuZE9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyRXEpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBicmVhazsKIApAQCAtMjE4NSw3ICsyMTg1LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgQ29tcGFyZUVxOgotICAgICAgICBpZiAoY29tcGFyZShub2RlLCBKSVRDb21waWxlcjo6RXF1
YWwsIEpJVENvbXBpbGVyOjpEb3VibGVFcXVhbCwgb3BlcmF0aW9uQ29tcGFyZUVxKSkKKyAgICAg
ICAgaWYgKGNvbXBhcmUobm9kZSwgSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6RG91
YmxlRXF1YWxBbmRPcmRlcmVkLCBvcGVyYXRpb25Db21wYXJlRXEpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNTgwMzYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzA1LDIyICsyMzA1LDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENvbXBhcmVMZXNzOgotICAg
ICAgICBpZiAoY29tcGFyZShub2RlLCBKSVRDb21waWxlcjo6TGVzc1RoYW4sIEpJVENvbXBpbGVy
OjpEb3VibGVMZXNzVGhhbiwgb3BlcmF0aW9uQ29tcGFyZUxlc3MpKQorICAgICAgICBpZiAoY29t
cGFyZShub2RlLCBKSVRDb21waWxlcjo6TGVzc1RoYW4sIEpJVENvbXBpbGVyOjpEb3VibGVMZXNz
VGhhbkFuZE9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVMZXNzKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENvbXBhcmVMZXNzRXE6Ci0gICAgICAgIGlm
IChjb21wYXJlKG5vZGUsIEpJVENvbXBpbGVyOjpMZXNzVGhhbk9yRXF1YWwsIEpJVENvbXBpbGVy
OjpEb3VibGVMZXNzVGhhbk9yRXF1YWwsIG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEpKQorICAgICAg
ICBpZiAoY29tcGFyZShub2RlLCBKSVRDb21waWxlcjo6TGVzc1RoYW5PckVxdWFsLCBKSVRDb21w
aWxlcjo6RG91YmxlTGVzc1RoYW5PckVxdWFsQW5kT3JkZXJlZCwgb3BlcmF0aW9uQ29tcGFyZUxl
c3NFcSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBD
b21wYXJlR3JlYXRlcjoKLSAgICAgICAgaWYgKGNvbXBhcmUobm9kZSwgSklUQ29tcGlsZXI6Okdy
ZWF0ZXJUaGFuLCBKSVRDb21waWxlcjo6RG91YmxlR3JlYXRlclRoYW4sIG9wZXJhdGlvbkNvbXBh
cmVHcmVhdGVyKSkKKyAgICAgICAgaWYgKGNvbXBhcmUobm9kZSwgSklUQ29tcGlsZXI6OkdyZWF0
ZXJUaGFuLCBKSVRDb21waWxlcjo6RG91YmxlR3JlYXRlclRoYW5BbmRPcmRlcmVkLCBvcGVyYXRp
b25Db21wYXJlR3JlYXRlcikpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBDb21wYXJlR3JlYXRlckVxOgotICAgICAgICBpZiAoY29tcGFyZShub2RlLCBK
SVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCBKSVRDb21waWxlcjo6RG91YmxlR3JlYXRl
clRoYW5PckVxdWFsLCBvcGVyYXRpb25Db21wYXJlR3JlYXRlckVxKSkKKyAgICAgICAgaWYgKGNv
bXBhcmUobm9kZSwgSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgSklUQ29tcGlsZXI6
OkRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVh
dGVyRXEpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBicmVhazsKIApAQCAtMjMzMyw3
ICsyMzMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgQ29tcGFyZUVxOgotICAgICAgICBpZiAoY29tcGFyZShu
b2RlLCBKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpEb3VibGVFcXVhbCwgb3BlcmF0
aW9uQ29tcGFyZUVxKSkKKyAgICAgICAgaWYgKGNvbXBhcmUobm9kZSwgSklUQ29tcGlsZXI6OkVx
dWFsLCBKSVRDb21waWxlcjo6RG91YmxlRXF1YWxBbmRPcmRlcmVkLCBvcGVyYXRpb25Db21wYXJl
RXEpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBicmVhazsKIApAQCAtNDExNCw3ICs0
MTE0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAg
ICAgIG5vdE5hbk5vckluZmluaXR5LmxpbmsoJm1faml0KTsKICAgICAgICAgbV9qaXQucm91bmRU
b3dhcmRaZXJvRG91YmxlKHRlbXBGUFIxLCB0ZW1wRlBSMik7Ci0gICAgICAgIG1faml0LmNvbXBh
cmVEb3VibGUoSklUQ29tcGlsZXI6OkRvdWJsZUVxdWFsLCB0ZW1wRlBSMSwgdGVtcEZQUjIsIHJl
c3VsdEdQUik7CisgICAgICAgIG1faml0LmNvbXBhcmVEb3VibGUoSklUQ29tcGlsZXI6OkRvdWJs
ZUVxdWFsQW5kT3JkZXJlZCwgdGVtcEZQUjEsIHRlbXBGUFIyLCByZXN1bHRHUFIpOwogICAgICAg
ICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0R1BS
KTsKICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI1
ODAzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yODA2LDcgKzI4MDYsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxl
Q2xhbXBEb3VibGVUb0J5dGUoSklUCiAgICAgaml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OlRy
dXN0ZWRJbW1QdHIoJnplcm8pLCBzY3JhdGNoKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0
b29TbWFsbCA9IGppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFu
T3JFcXVhbE9yVW5vcmRlcmVkLCBzb3VyY2UsIHNjcmF0Y2gpOwogICAgIGppdC5sb2FkRG91Ymxl
KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKCZieXRlTWF4KSwgc2NyYXRjaCk7Ci0gICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgdG9vQmlnID0gaml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxl
cjo6RG91YmxlR3JlYXRlclRoYW4sIHNvdXJjZSwgc2NyYXRjaCk7CisgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgdG9vQmlnID0gaml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91Ymxl
R3JlYXRlclRoYW5BbmRPcmRlcmVkLCBzb3VyY2UsIHNjcmF0Y2gpOwogICAgIAogICAgIGppdC5s
b2FkRG91YmxlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKCZoYWxmKSwgc2NyYXRjaCk7CiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGp1c3QgdXNlIGEgZmxvYXRpbmcgcG9p
bnQgcm91bmQhCkBAIC01NjQ2LDcgKzU2NDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJpdGhSb3VuZGluCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1
c3RlZEltbVB0cigmaGFsZkNvbnN0YW50KSwgc2NyYXRjaEZQUik7CiAgICAgICAgICAgICAgICAg
ICAgIG1faml0LmFkZERvdWJsZShyZXN1bHRGUFIsIHNjcmF0Y2hGUFIpOwogCi0gICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNob3VsZFVzZUNlaWxlZCA9IG1faml0LmJyYW5j
aERvdWJsZShKSVRDb21waWxlcjo6RG91YmxlTGVzc1RoYW5PckVxdWFsLCBzY3JhdGNoRlBSLCB2
YWx1ZUZQUik7CisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNob3VsZFVz
ZUNlaWxlZCA9IG1faml0LmJyYW5jaERvdWJsZShKSVRDb21waWxlcjo6RG91YmxlTGVzc1RoYW5P
ckVxdWFsQW5kT3JkZXJlZCwgc2NyYXRjaEZQUiwgdmFsdWVGUFIpOwogICAgICAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBvbmVDb25zdGFudCA9IC0xLjA7CiAgICAgICAg
ICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmb25lQ29uc3RhbnQp
LCBzY3JhdGNoRlBSKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRkRG91YmxlKHNjcmF0
Y2hGUFIsIHJlc3VsdEZQUik7CkBAIC01Nzk3LDEwICs1Nzk3LDEwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aE1pbk1heCgKIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QgZG9uZTsKIAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvcDFMZXNzID0gbV9q
aXQuYnJhbmNoRG91YmxlKG5vZGUtPm9wKCkgPT0gQXJpdGhNaW4gPyBNYWNyb0Fzc2VtYmxlcjo6
RG91YmxlTGVzc1RoYW4gOiBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW4sIG9wMUZQ
Uiwgb3AyRlBSKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3AxTGVzcyA9IG1faml0
LmJyYW5jaERvdWJsZShub2RlLT5vcCgpID09IEFyaXRoTWluID8gTWFjcm9Bc3NlbWJsZXI6OkRv
dWJsZUxlc3NUaGFuQW5kT3JkZXJlZCA6IE1hY3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhh
bkFuZE9yZGVyZWQsIG9wMUZQUiwgb3AyRlBSKTsKIAogICAgICAgICAvLyBvcDIgaXMgZWF0aGVy
IHRoZSBsZXNzZXIgb25lIG9yIG9uZSBvZiB0aGVuIGlzIE5hTgotICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBvcDJMZXNzID0gbV9qaXQuYnJhbmNoRG91YmxlKG5vZGUtPm9wKCkgPT0gQXJp
dGhNaW4gPyBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW5PckVxdWFsIDogTWFjcm9B
c3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JFcXVhbCwgb3AxRlBSLCBvcDJGUFIpOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvcDJMZXNzID0gbV9qaXQuYnJhbmNoRG91YmxlKG5vZGUt
Pm9wKCkgPT0gQXJpdGhNaW4gPyBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW5PckVx
dWFsQW5kT3JkZXJlZCA6IE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbk9yRXF1YWxBbmRP
cmRlcmVkLCBvcDFGUFIsIG9wMkZQUik7CiAKICAgICAgICAgLy8gVW5vcmRlcmVkIGNhc2UuIFdl
IGRvbid0IGtub3cgd2hpY2ggb2Ygb3AxLCBvcDIgaXMgTmFOLiBNYW51ZmFjdHVyZSBOYU4gYnkg
YWRkaW5nIAogICAgICAgICAvLyBvcDEgKyBvcDIgYW5kIHB1dHRpbmcgaXQgaW50byByZXN1bHQu
CkBAIC01OTM3LDEwICs1OTM3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0
aFBvdyhOb2QKICAgICAgICAgICAgIEZQUlJlZyByZXN1bHRGcHIgPSByZXN1bHQuZnByKCk7CiAK
ICAgICAgICAgICAgIG1faml0Lm1vdmVaZXJvVG9Eb3VibGUocmVzdWx0RnByKTsKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHhJc1plcm9Pck5lZ2F0aXZlWmVybyA9IG1faml0LmJy
YW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWwsIHhPcGVyYW5kRnByLCByZXN1
bHRGcHIpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgeElzWmVyb09yTmVnYXRp
dmVaZXJvID0gbV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbEFu
ZE9yZGVyZWQsIHhPcGVyYW5kRnByLCByZXN1bHRGcHIpOwogCiAgICAgICAgICAgICBtX2ppdC5s
b2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJm1pbnVzSW5maW5pdHlDb25zdGFudCksIHJlc3VsdEZw
cik7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB4SXNNaW51c0luZmluaXR5ID0g
bV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbCwgeE9wZXJhbmRG
cHIsIHJlc3VsdEZwcik7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB4SXNNaW51
c0luZmluaXR5ID0gbV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVh
bEFuZE9yZGVyZWQsIHhPcGVyYW5kRnByLCByZXN1bHRGcHIpOwogICAgICAgICAgICAgbV9qaXQu
c3FydERvdWJsZSh4T3BlcmFuZEZwciwgcmVzdWx0RnByKTsKICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGRvbmVXaXRoU3FydCA9IG1faml0Lmp1bXAoKTsKIApAQCAtNTk2NCwxMCAr
NTk2NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhQb3coTm9kCiAgICAg
ICAgICAgICBGUFJSZWcgcmVzdWx0RnByID0gcmVzdWx0LmZwcigpOwogCiAgICAgICAgICAgICBt
X2ppdC5tb3ZlWmVyb1RvRG91YmxlKHJlc3VsdEZwcik7Ci0gICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCB4SXNaZXJvT3JOZWdhdGl2ZVplcm8gPSBtX2ppdC5icmFuY2hEb3VibGUoTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsLCB4T3BlcmFuZEZwciwgcmVzdWx0RnByKTsKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHhJc1plcm9Pck5lZ2F0aXZlWmVybyA9IG1faml0
LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWxBbmRPcmRlcmVkLCB4T3Bl
cmFuZEZwciwgcmVzdWx0RnByKTsKIAogICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVz
dGVkSW1tUHRyKCZtaW51c0luZmluaXR5Q29uc3RhbnQpLCByZXN1bHRGcHIpOwotICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgeElzTWludXNJbmZpbml0eSA9IG1faml0LmJyYW5jaERv
dWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWwsIHhPcGVyYW5kRnByLCByZXN1bHRGcHIp
OworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgeElzTWludXNJbmZpbml0eSA9IG1f
aml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWxBbmRPcmRlcmVkLCB4
T3BlcmFuZEZwciwgcmVzdWx0RnByKTsKIAogICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBk
b3VibGUgb25lQ29uc3RhbnQgPSAxLjsKICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1
c3RlZEltbVB0cigmb25lQ29uc3RhbnQpLCByZXN1bHRGcHIpOwpAQCAtNjE1NywxNCArNjE1Nywx
NCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kCiAgICAgICAgIHVu
c2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAg
ICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKICAgICAgICAgICAgIE5v
ZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOwotICAgICAg
ICAgICAgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIE1hY3Jv
QXNzZW1ibGVyOjpEb3VibGVFcXVhbCk7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVEb3Vi
bGVCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsQW5k
T3JkZXJlZCk7CiAgICAgICAgICAgICB1c2Uobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
dXNlKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrID0gYnJhbmNo
SW5kZXhJbkJsb2NrOwogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJyYW5jaE5vZGU7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBjb21waWxlRG91Ymxl
Q29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWwpOworICAgICAgICBjb21w
aWxlRG91YmxlQ29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWxBbmRPcmRl
cmVkKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtODcxMCw3ICs4NzEwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5SW5kZXhPZgogICAgICAgICBhdXRv
IGxvb3AgPSBtX2ppdC5sYWJlbCgpOwogICAgICAgICBhdXRvIG5vdEZvdW5kID0gbV9qaXQuYnJh
bmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgaW5kZXhHUFIsIGxlbmd0aEdQUik7CiAgICAgICAg
IG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBp
bmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCB0ZW1wRlBSKTsKLSAgICAgICAg
YXV0byBmb3VuZCA9IG1faml0LmJyYW5jaERvdWJsZShDQ2FsbEhlbHBlcnM6OkRvdWJsZUVxdWFs
LCB0ZW1wRlBSLCBzZWFyY2hFbGVtZW50RlBSKTsKKyAgICAgICAgYXV0byBmb3VuZCA9IG1faml0
LmJyYW5jaERvdWJsZShDQ2FsbEhlbHBlcnM6OkRvdWJsZUVxdWFsQW5kT3JkZXJlZCwgdGVtcEZQ
Uiwgc2VhcmNoRWxlbWVudEZQUik7CiAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigx
KSwgaW5kZXhHUFIpOwogICAgICAgICBtX2ppdC5qdW1wKCkubGlua1RvKGxvb3AsICZtX2ppdCk7
CiAKQEAgLTEyMDIzLDcgKzEyMDIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5v
cm1hbGl6ZU1hcAogICAgIG5vdE5hTi5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQudHJ1bmNhdGVE
b3VibGVUb0ludDMyKGRvdWJsZVZhbHVlRlBSLCBzY3JhdGNoR1BSKTsKICAgICBtX2ppdC5jb252
ZXJ0SW50MzJUb0RvdWJsZShzY3JhdGNoR1BSLCB0ZW1wRlBSKTsKLSAgICBwYXNzVGhyb3VnaENh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hEb3VibGUoSklUQ29tcGlsZXI6OkRvdWJsZU5vdEVxdWFs
LCBkb3VibGVWYWx1ZUZQUiwgdGVtcEZQUikpOworICAgIHBhc3NUaHJvdWdoQ2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaERvdWJsZShKSVRDb21waWxlcjo6RG91YmxlTm90RXF1YWxBbmRPcmRlcmVk
LCBkb3VibGVWYWx1ZUZQUiwgdGVtcEZQUikpOwogCiAgICAgbV9qaXQuYm94SW50MzIoc2NyYXRj
aEdQUiwgcmVzdWx0UmVncyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
cmV2aXNpb24gMjU4MDM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ5Niw3ICsxMDQ5Niw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBGUFJSZWcgaW5wdXQgPSBwYXJhbXNbMV0uZnByKCk7CiAgICAgICAgICAg
ICBGUFJSZWcgdGVtcCA9IHBhcmFtcy5mcFNjcmF0Y2goMCk7CiAgICAgICAgICAgICBqaXQucm91
bmRUb3dhcmRaZXJvRG91YmxlKGlucHV0LCB0ZW1wKTsKLSAgICAgICAgICAgIGppdC5jb21wYXJl
RG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbCwgaW5wdXQsIHRlbXAsIHJlc3VsdCk7
CisgICAgICAgICAgICBqaXQuY29tcGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1
YWxBbmRPcmRlcmVkLCBpbnB1dCwgdGVtcCwgcmVzdWx0KTsKICAgICAgICAgfSk7CiAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIHBhdGNocG9pbnRSZXN1bHQgPSBtX291dC5hbmNob3IocGF0Y2hwb2lu
dCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjU4MDM2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2hJZk5vdE5h
TihGUFJSZWcgZnByKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVF
cXVhbCwgZnByLCBmcHIpOworICAgICAgICByZXR1cm4gYnJhbmNoRG91YmxlKERvdWJsZUVxdWFs
QW5kT3JkZXJlZCwgZnByLCBmcHIpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoSWZSb3BlU3Ry
aW5nSW1wbChHUFJSZWcgc3RyaW5nSW1wbEdQUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHJldmlzaW9uIDI1ODAzNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMzLDE5ICsyMzMsMTkgQEAgdm9pZCBKSVQ6OmVtaXRCaW5hcnlEb3VibGVP
cChjb25zdCBJbnN0cgogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgICAgICAgICBj
YXNlIG9wX2psZXNzOgogICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9wMSwgZnBSZWdU
Mik7Ci0gICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91YmxlTGVzc1RoYW4s
IGZwUmVnVDIsIGZwUmVnVDApLCB0YXJnZXQpOworICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJh
bmNoRG91YmxlKERvdWJsZUxlc3NUaGFuQW5kT3JkZXJlZCwgZnBSZWdUMiwgZnBSZWdUMCksIHRh
cmdldCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG9wX2psZXNz
ZXE6CiAgICAgICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AxLCBmcFJlZ1QyKTsKLSAgICAg
ICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVMZXNzVGhhbk9yRXF1YWwsIGZw
UmVnVDIsIGZwUmVnVDApLCB0YXJnZXQpOworICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNo
RG91YmxlKERvdWJsZUxlc3NUaGFuT3JFcXVhbEFuZE9yZGVyZWQsIGZwUmVnVDIsIGZwUmVnVDAp
LCB0YXJnZXQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBvcF9q
Z3JlYXRlcjoKICAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDEsIGZwUmVnVDIpOwot
ICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuLCBm
cFJlZ1QyLCBmcFJlZ1QwKSwgdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5j
aERvdWJsZShEb3VibGVHcmVhdGVyVGhhbkFuZE9yZGVyZWQsIGZwUmVnVDIsIGZwUmVnVDApLCB0
YXJnZXQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBvcF9qZ3Jl
YXRlcmVxOgogICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9wMSwgZnBSZWdUMik7Ci0g
ICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91YmxlR3JlYXRlclRoYW5PckVx
dWFsLCBmcFJlZ1QyLCBmcFJlZ1QwKSwgdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBhZGRKdW1w
KGJyYW5jaERvdWJsZShEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxBbmRPcmRlcmVkLCBmcFJlZ1Qy
LCBmcFJlZ1QwKSwgdGFyZ2V0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2Ugb3Bfam5sZXNzOgogICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9wMSwgZnBS
ZWdUMik7CkBAIC0yOTAsMTkgKzI5MCwxOSBAQCB2b2lkIEpJVDo6ZW1pdEJpbmFyeURvdWJsZU9w
KGNvbnN0IEluc3RyCiAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICAgICAgICAgIGNh
c2Ugb3Bfamxlc3M6CiAgICAgICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AyLCBmcFJlZ1Qx
KTsKLSAgICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVMZXNzVGhhbiwg
ZnBSZWdUMCwgZnBSZWdUMSksIHRhcmdldCk7CisgICAgICAgICAgICAgICAgYWRkSnVtcChicmFu
Y2hEb3VibGUoRG91YmxlTGVzc1RoYW5BbmRPcmRlcmVkLCBmcFJlZ1QwLCBmcFJlZ1QxKSwgdGFy
Z2V0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ugb3Bfamxlc3Nl
cToKICAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDIsIGZwUmVnVDEpOwotICAgICAg
ICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUxlc3NUaGFuT3JFcXVhbCwgZnBS
ZWdUMCwgZnBSZWdUMSksIHRhcmdldCk7CisgICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hE
b3VibGUoRG91YmxlTGVzc1RoYW5PckVxdWFsQW5kT3JkZXJlZCwgZnBSZWdUMCwgZnBSZWdUMSks
IHRhcmdldCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG9wX2pn
cmVhdGVyOgogICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9wMiwgZnBSZWdUMSk7Ci0g
ICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91YmxlR3JlYXRlclRoYW4sIGZw
UmVnVDAsIGZwUmVnVDEpLCB0YXJnZXQpOworICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNo
RG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZCwgZnBSZWdUMCwgZnBSZWdUMSksIHRh
cmdldCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG9wX2pncmVh
dGVyZXE6CiAgICAgICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AyLCBmcFJlZ1QxKTsKLSAg
ICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVHcmVhdGVyVGhhbk9yRXF1
YWwsIGZwUmVnVDAsIGZwUmVnVDEpLCB0YXJnZXQpOworICAgICAgICAgICAgICAgIGFkZEp1bXAo
YnJhbmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQsIGZwUmVnVDAs
IGZwUmVnVDEpLCB0YXJnZXQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBvcF9qbmxlc3M6CiAgICAgICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AyLCBmcFJl
Z1QxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNw
cAkocmV2aXNpb24gMjU4MDM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0
aG1ldGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMjIgKzk1LDIyIEBAIHZvaWQgSklUOjpl
bWl0X29wX2puZ3JlYXRlcmVxKGNvbnN0IEluc3QKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2ps
ZXNzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8
T3BKbGVzcz4oY3VycmVudEluc3RydWN0aW9uLCBEb3VibGVMZXNzVGhhbiwgb3BlcmF0aW9uQ29t
cGFyZUxlc3MsIGZhbHNlLCBpdGVyKTsKKyAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEps
ZXNzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUxlc3NUaGFuQW5kT3JkZXJlZCwgb3BlcmF0
aW9uQ29tcGFyZUxlc3MsIGZhbHNlLCBpdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2psZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBlbWl0X2NvbXBhcmVBbmRKdW1w
U2xvdzxPcEpsZXNzZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlTGVzc1RoYW5PckVxdWFs
LCBvcGVyYXRpb25Db21wYXJlTGVzc0VxLCBmYWxzZSwgaXRlcik7CisgICAgZW1pdF9jb21wYXJl
QW5kSnVtcFNsb3c8T3BKbGVzc2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUxlc3NUaGFu
T3JFcXVhbEFuZE9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEsIGZhbHNlLCBpdGVyKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7Ci0gICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BKZ3JlYXRlcj4oY3VycmVudEluc3Ry
dWN0aW9uLCBEb3VibGVHcmVhdGVyVGhhbiwgb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXIsIGZhbHNl
LCBpdGVyKTsKKyAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdzxPcEpncmVhdGVyPihjdXJyZW50
SW5zdHJ1Y3Rpb24sIERvdWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZCwgb3BlcmF0aW9uQ29tcGFy
ZUdyZWF0ZXIsIGZhbHNlLCBpdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pncmVh
dGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xv
dzxPcEpncmVhdGVyZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlR3JlYXRlclRoYW5PckVx
dWFsLCBvcGVyYXRpb25Db21wYXJlR3JlYXRlckVxLCBmYWxzZSwgaXRlcik7CisgICAgZW1pdF9j
b21wYXJlQW5kSnVtcFNsb3c8T3BKZ3JlYXRlcmVxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJs
ZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyRXEs
IGZhbHNlLCBpdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pubGVzcyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjU4MDM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDAsNyArOTAwLDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBmbAogICAgIFNwZWNpYWxp
emVkVGh1bmtKSVQ6Okp1bXBMaXN0IGRvdWJsZVJlc3VsdDsKICAgICBpZiAoaml0LnN1cHBvcnRz
RmxvYXRpbmdQb2ludFRydW5jYXRlKCkpIHsKICAgICAgICAgaml0Lm1vdmVaZXJvVG9Eb3VibGUo
U3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMSk7Ci0gICAgICAgIGRvdWJsZVJlc3VsdC5hcHBl
bmQoaml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWwsIFNwZWNpYWxp
emVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDEpKTsKKyAg
ICAgICAgZG91YmxlUmVzdWx0LmFwcGVuZChqaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVy
OjpEb3VibGVFcXVhbEFuZE9yZGVyZWQsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDEpKTsKICAgICAgICAgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAgICAgIC8vIEhhbmRsZSB0aGUgbmVnYXRpdmUgZG91
YmxlcyBpbiB0aGUgc2xvdyBwYXRoIGZvciBub3cuCiAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChq
aXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVk
LCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJl
Z1QxKSk7CkBAIC05NzcsMTMgKzk3NywxMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IHJvCiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgZG91YmxlUmVz
dWx0OwogICAgIGlmIChqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSkgewogICAg
ICAgICBqaXQubW92ZVplcm9Ub0RvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QxKTsK
LSAgICAgICAgZG91YmxlUmVzdWx0LmFwcGVuZChqaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1i
bGVyOjpEb3VibGVFcXVhbCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6ZnBSZWdUMSkpOworICAgICAgICBkb3VibGVSZXN1bHQuYXBwZW5kKGppdC5i
cmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsQW5kT3JkZXJlZCwgU3BlY2lh
bGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMSkpOwog
CiAgICAgICAgIGppdC5jZWlsRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDEpOwogICAgICAgICBzdGF0aWMgY29uc3RleHByIGRv
dWJsZSBoYWxmQ29uc3RhbnQgPSAtMC41OwogICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmaGFsZkNvbnN0YW50KSwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6ZnBSZWdUMik7CiAgICAgICAgIGppdC5hZGREb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
ZnBSZWdUMSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMik7Ci0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIHNob3VsZFJvdW5kRG93biA9IGppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZUdyZWF0ZXJUaGFuLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QyLCBT
cGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgc2hvdWxkUm91bmREb3duID0gaml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlR3JlYXRlclRoYW5BbmRPcmRlcmVkLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QyLCBT
cGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKIAogICAgICAgICBqaXQubW92ZURvdWJsZShT
cGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QxLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1Qw
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY29udGludWF0aW9uID0gaml0Lmp1bXAo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMjU4MDM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4OSw3ICszMTg5
LDcgQEAgdGVtcGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcAogdGVtcGxhdGU8
PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkY2NExlPihFeHByZXNzaW9uVHlw
ZSBhcmcwLCBFeHByZXNzaW9uVHlwZSBhcmcxLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQ
YXJ0aWFsUmVzdWx0CiB7CiAgICAgcmVzdWx0ID0gZzMyKCk7Ci0gICAgYXBwZW5kKENvbXBhcmVE
b3VibGUsIEFyZzo6ZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5PckVx
dWFsKSwgYXJnMCwgYXJnMSwgcmVzdWx0KTsKKyAgICBhcHBlbmQoQ29tcGFyZURvdWJsZSwgQXJn
Ojpkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbk9yRXF1YWxBbmRPcmRl
cmVkKSwgYXJnMCwgYXJnMSwgcmVzdWx0KTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0zMjE1
LDcgKzMyMTUsNyBAQCB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wCiB0
ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6RjY0THQ+KEV4cHJl
c3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBlIGFyZzEsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXN1bHQgPSBnMzIoKTsKLSAgICBhcHBlbmQo
Q29tcGFyZURvdWJsZSwgQXJnOjpkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNz
VGhhbiksIGFyZzAsIGFyZzEsIHJlc3VsdCk7CisgICAgYXBwZW5kKENvbXBhcmVEb3VibGUsIEFy
Zzo6ZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5BbmRPcmRlcmVkKSwg
YXJnMCwgYXJnMSwgcmVzdWx0KTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0zMjMzLDEzICsz
MjMzLDEzIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZEZsb2F0aW5nUG9pbnRNaW4KICAgICBC
YXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBtX2NvZGUuYWRkQmxvY2soKTsKIAogICAgIGF1dG8g
YnJhbmNoT3AgPSBmbG9hdFR5cGUgPT0gRjMyID8gQnJhbmNoRmxvYXQgOiBCcmFuY2hEb3VibGU7
Ci0gICAgYXBwZW5kKG1fY3VycmVudEJsb2NrLCBicmFuY2hPcCwgQXJnOjpkb3VibGVDb25kKE1h
Y3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbCksIGFyZzAsIGFyZzEpOworICAgIGFwcGVuZChtX2N1
cnJlbnRCbG9jaywgYnJhbmNoT3AsIEFyZzo6ZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlRXF1YWxBbmRPcmRlcmVkKSwgYXJnMCwgYXJnMSk7CiAgICAgbV9jdXJyZW50QmxvY2stPnNl
dFN1Y2Nlc3NvcnMoaXNFcXVhbCwgbm90RXF1YWwpOwogCi0gICAgYXBwZW5kKG5vdEVxdWFsLCBi
cmFuY2hPcCwgQXJnOjpkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbiks
IGFyZzAsIGFyZzEpOworICAgIGFwcGVuZChub3RFcXVhbCwgYnJhbmNoT3AsIEFyZzo6ZG91Ymxl
Q29uZChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5BbmRPcmRlcmVkKSwgYXJnMCwgYXJn
MSk7CiAgICAgbm90RXF1YWwtPnNldFN1Y2Nlc3NvcnMoaXNMZXNzVGhhbiwgbm90TGVzc1RoYW4p
OwogCi0gICAgYXBwZW5kKG5vdExlc3NUaGFuLCBicmFuY2hPcCwgQXJnOjpkb3VibGVDb25kKE1h
Y3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbiksIGFyZzAsIGFyZzEpOworICAgIGFwcGVu
ZChub3RMZXNzVGhhbiwgYnJhbmNoT3AsIEFyZzo6ZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6
RG91YmxlR3JlYXRlclRoYW5BbmRPcmRlcmVkKSwgYXJnMCwgYXJnMSk7CiAgICAgbm90TGVzc1Ro
YW4tPnNldFN1Y2Nlc3NvcnMoaXNHcmVhdGVyVGhhbiwgaXNOYU4pOwogCiAgICAgYXV0byBhbmRP
cCA9IGZsb2F0VHlwZSA9PSBGMzIgPyBBbmRGbG9hdCA6IEFuZERvdWJsZTsKQEAgLTMzNDgsNyAr
MzM0OCw3IEBAIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3AKIHRlbXBs
YXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGNjRHdD4oRXhwcmVzc2lv
blR5cGUgYXJnMCwgRXhwcmVzc2lvblR5cGUgYXJnMSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUGFydGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IGczMigpOwotICAgIGFwcGVuZChDb21w
YXJlRG91YmxlLCBBcmc6OmRvdWJsZUNvbmQoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJU
aGFuKSwgYXJnMCwgYXJnMSwgcmVzdWx0KTsKKyAgICBhcHBlbmQoQ29tcGFyZURvdWJsZSwgQXJn
Ojpkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbkFuZE9yZGVyZWQp
LCBhcmcwLCBhcmcxLCByZXN1bHQpOwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTMzNjIsNyAr
MzM2Miw3IEBAIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3AKIHRlbXBs
YXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGNjRHZT4oRXhwcmVzc2lv
blR5cGUgYXJnMCwgRXhwcmVzc2lvblR5cGUgYXJnMSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUGFydGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IGczMigpOwotICAgIGFwcGVuZChDb21w
YXJlRG91YmxlLCBBcmc6OmRvdWJsZUNvbmQoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJU
aGFuT3JFcXVhbCksIGFyZzAsIGFyZzEsIHJlc3VsdCk7CisgICAgYXBwZW5kKENvbXBhcmVEb3Vi
bGUsIEFyZzo6ZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW5PckVx
dWFsQW5kT3JkZXJlZCksIGFyZzAsIGFyZzEsIHJlc3VsdCk7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApAQCAtMzUzMiw3ICszNTMyLDcgQEAgdGVtcGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjph
ZGRPcDxPcAogdGVtcGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkYz
Mkx0PihFeHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZXNzaW9uVHlwZSBhcmcxLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgcmVzdWx0ID0gZzMyKCk7Ci0g
ICAgYXBwZW5kKENvbXBhcmVGbG9hdCwgQXJnOjpkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjpE
b3VibGVMZXNzVGhhbiksIGFyZzAsIGFyZzEsIHJlc3VsdCk7CisgICAgYXBwZW5kKENvbXBhcmVG
bG9hdCwgQXJnOjpkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbkFuZE9y
ZGVyZWQpLCBhcmcwLCBhcmcxLCByZXN1bHQpOwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTM1
NDYsMjEgKzM1NDYsMjEgQEAgdGVtcGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxP
cAogdGVtcGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkY2NEVxPihF
eHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZXNzaW9uVHlwZSBhcmcxLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgcmVzdWx0ID0gZzMyKCk7Ci0gICAgYXBw
ZW5kKENvbXBhcmVEb3VibGUsIEFyZzo6ZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6RG91Ymxl
RXF1YWwpLCBhcmcwLCBhcmcxLCByZXN1bHQpOworICAgIGFwcGVuZChDb21wYXJlRG91YmxlLCBB
cmc6OmRvdWJsZUNvbmQoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsQW5kT3JkZXJlZCksIGFy
ZzAsIGFyZzEsIHJlc3VsdCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogdGVtcGxhdGU8PiBhdXRv
IEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkYzMkxlPihFeHByZXNzaW9uVHlwZSBhcmcw
LCBFeHByZXNzaW9uVHlwZSBhcmcxLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFs
UmVzdWx0CiB7CiAgICAgcmVzdWx0ID0gZzMyKCk7Ci0gICAgYXBwZW5kKENvbXBhcmVGbG9hdCwg
QXJnOjpkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbk9yRXF1YWwpLCBh
cmcwLCBhcmcxLCByZXN1bHQpOworICAgIGFwcGVuZChDb21wYXJlRmxvYXQsIEFyZzo6ZG91Ymxl
Q29uZChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5PckVxdWFsQW5kT3JkZXJlZCksIGFy
ZzAsIGFyZzEsIHJlc3VsdCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogdGVtcGxhdGU8PiBhdXRv
IEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkYzMkdlPihFeHByZXNzaW9uVHlwZSBhcmcw
LCBFeHByZXNzaW9uVHlwZSBhcmcxLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFs
UmVzdWx0CiB7CiAgICAgcmVzdWx0ID0gZzMyKCk7Ci0gICAgYXBwZW5kKENvbXBhcmVGbG9hdCwg
QXJnOjpkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWwp
LCBhcmcwLCBhcmcxLCByZXN1bHQpOworICAgIGFwcGVuZChDb21wYXJlRmxvYXQsIEFyZzo6ZG91
YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW5PckVxdWFsQW5kT3JkZXJl
ZCksIGFyZzAsIGFyZzEsIHJlc3VsdCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMzc3Miw3
ICszNzcyLDcgQEAgdGVtcGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcAogdGVt
cGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkYzMkVxPihFeHByZXNz
aW9uVHlwZSBhcmcwLCBFeHByZXNzaW9uVHlwZSBhcmcxLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgcmVzdWx0ID0gZzMyKCk7Ci0gICAgYXBwZW5kKENv
bXBhcmVGbG9hdCwgQXJnOjpkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbCks
IGFyZzAsIGFyZzEsIHJlc3VsdCk7CisgICAgYXBwZW5kKENvbXBhcmVGbG9hdCwgQXJnOjpkb3Vi
bGVDb25kKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbEFuZE9yZGVyZWQpLCBhcmcwLCBhcmcx
LCByZXN1bHQpOwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTM4MzYsNyArMzgzNiw3IEBAIHRl
bXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3AKIHRlbXBsYXRlPD4gYXV0byBB
aXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGMzJHdD4oRXhwcmVzc2lvblR5cGUgYXJnMCwg
RXhwcmVzc2lvblR5cGUgYXJnMSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJl
c3VsdAogewogICAgIHJlc3VsdCA9IGczMigpOwotICAgIGFwcGVuZChDb21wYXJlRmxvYXQsIEFy
Zzo6ZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW4pLCBhcmcwLCBh
cmcxLCByZXN1bHQpOworICAgIGFwcGVuZChDb21wYXJlRmxvYXQsIEFyZzo6ZG91YmxlQ29uZChN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW5BbmRPcmRlcmVkKSwgYXJnMCwgYXJnMSwg
cmVzdWx0KTsKICAgICByZXR1cm4geyB9OwogfQogCg==
</data>
<flag name="review"
          id="408227"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>