<?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>178987</bug_id>
          
          <creation_ts>2017-10-29 08:31:11 -0700</creation_ts>
          <short_desc>[Conic Gradients] Add support for parsing conic gradients</short_desc>
          <delta_ts>2017-11-15 12:35:21 -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>146113</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>dino</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1365814</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-29 08:31:11 -0700</bug_when>
    <thetext>[Conic Gradients] Add support for parsing conic gradients</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365815</commentid>
    <comment_count>1</comment_count>
      <attachid>325284</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-29 08:47:16 -0700</bug_when>
    <thetext>Created attachment 325284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365816</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-29 08:50:30 -0700</bug_when>
    <thetext>Note: This doesn&apos;t support double position color hint syntax yet. This seems like something that should be supporter for all gradients or none, and, since it is just sugar over using two hints, I opted to leave it out of the first change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365817</commentid>
    <comment_count>3</comment_count>
      <attachid>325285</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-29 08:53:19 -0700</bug_when>
    <thetext>Created attachment 325285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365818</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-29 08:58:48 -0700</bug_when>
    <thetext>One thing I am not sure of is if all the CSS text results in the test case are correct. e.g should &quot;at center&quot; map to &quot;at center center&quot; and should &quot;hsl(0,0%,75%)&quot; map to &quot;rgb(191, 191, 191)&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365819</commentid>
    <comment_count>5</comment_count>
      <attachid>325286</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-29 09:00:45 -0700</bug_when>
    <thetext>Created attachment 325286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365850</commentid>
    <comment_count>6</comment_count>
      <attachid>325286</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-10-29 14:38:09 -0700</bug_when>
    <thetext>Comment on attachment 325286
Patch

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

&gt; LayoutTests/ChangeLog:9
&gt; +        [Conic Gradients] Add support for parsing conic gradients
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=178987
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * fast/gradients/conic-gradient-parsing-expected.txt: Added.
&gt; +        * fast/gradients/conic-gradient-parsing.html: Added.

Would be nice if these could be WPT proposals in http/wpt/

&gt; LayoutTests/fast/gradients/conic-gradient-parsing.html:50
&gt; +    for(var x = 0; x &lt; 500; x++)

Nit: space after for

&gt; LayoutTests/fast/gradients/conic-gradient-parsing.html:51
&gt; +        s += &quot;white &quot; + (x/500) + &quot;%, &quot; + ((2 * x + 1) / 1000) + &quot;%, &quot;;

Nit: s += `white ${x/500}%, ${(2 * x + 1) / 1000}%, `;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365855</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-29 16:07:47 -0700</bug_when>
    <thetext>Committed r224165: &lt;https://trac.webkit.org/changeset/224165&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372192</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 12:35:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/35567823&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325284</attachid>
            <date>2017-10-29 08:47:16 -0700</date>
            <delta_ts>2017-10-29 08:53:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178987-20171029084715.patch</filename>
            <type>text/plain</type>
            <size>32658</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxNy0xMC0yOSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtDb25pYyBHcmFkaWVudHNdIEFkZCBz
dXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4OTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBpbml0aWFsIHN1cHBvcnQsIGRpc2FibGVk
IGJ5IGRlZmF1bHQsIGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cyBhcyBwZXIKKyAgICAgICAg
Q1NTIDQgSW1hZ2VzIC0gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1pbWFnZXMtNC8jY29uaWMt
Z3JhZGllbnRzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50
LXBhcnNpbmcuaHRtbAorCisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1
ZTo6aXNDYWNoZWFibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29uaWNHcmFkaWVu
dFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nvbmlj
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29u
aWNHcmFkaWVudFZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVu
dFZhbHVlLmg6CisgICAgICAgIAorICAgICAgICAgICAgQWRkIENTU0NvbmljR3JhZGllbnRWYWx1
ZSBhcyBhIHN1YmNsYXNzIG9mIENTU0dyYWRpZW50VmFsdWUgYW5kIGltcGxlbWVudAorICAgICAg
ICAgICAgY3VzdG9tQ1NTVGV4dCgpIGFuZCBlcXVhbHMoKS4gU3R1YiBvdXQgY3JlYXRlR3JhZGll
bnQoKSBhcyBwYWludGluZyBpcyBub3QKKyAgICAgICAgICAgIHlldCBpbXBsZW1lbnRlZC4KKyAg
ICAgICAgCisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aXNGaXhlZFNpemUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4ZWRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmlzUGVuZGluZyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjprbm93blRvQmVPcGFxdWUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6bG9hZFN1Ymlt
YWdlcyk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1Rl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAg
ICAKKyAgICAgICAgICAgIERpc3BhdGNoIHRvIENTU0NvbmljR3JhZGllbnRWYWx1ZSBhcyBuZWVk
ZWQuCisgICAgICAgIAorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWU6OmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NWYWx1ZTo6aXNHcmFkaWVudFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ZhbHVlOjppc0NvbmljR3JhZGllbnRWYWx1ZSBjb25zdCk6CisgICAgICAgIAorICAgICAg
ICAgICAgQWRkIGNvbmljIGdyYWRpZW50IHByZWRpY2F0ZSBzdXBwb3J0IGFuZCB1cGRhdGUgaXNJ
bWFnZUdlbmVyYXRvclZhbHVlIGFuZCAKKyAgICAgICAgICAgIGlzR3JhZGllbnRWYWx1ZSB0byBp
bmNsdWRlIGNvbmljIGdyYWRpZW50LgorICAgICAgICAKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbjoKKyAgICAgICAgCisgICAgICAgICAgICBBZGQgY29uaWMtZ3JhZGllbnQgYW5k
IHJlcGVhdGluZy1jb25pYy1ncmFkaWVudC4KKyAgICAgICAgCisgICAgICAgICogY3NzL3BhcnNl
ci9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dDo6Q1NT
UGFyc2VyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1BhcnNlck1vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
ckNvbnRleHRIYXNoOjpoYXNoKToKKyAgICAgICAgCisgICAgICAgICAgICBBZGQgcnVudGltZSBm
bGFncyB0byBlbmFibGUgY29uaWMgZ3JhZGllbnRzLgorICAgICAgICAKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVBbmdsZU9yUGVyY2VudCk6CisgICAgICAg
IAorICAgICAgICAgICAgSGVscGVyLCBzaW1pbGFyIHRvIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQs
IGZvciBjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzLiAKKyAgICAgICAgICAgIENvcnJlc3BvbmRz
IHRvIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLTQvI3R5cGVkZWYtYW5nbGUt
cGVyY2VudGFnZQorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6Y29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyk6CisgICAgICAgIAorICAgICAgICAg
ICAgQ29udmVydCB0byB0YWtlIENTU0dyYWRpZW50VmFsdWUgYnkgcmVmZXJlbmNlLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUFu
Z3VsYXJHcmFkaWVudENvbG9yU3RvcHMpOgorICAgICAgICAKKyAgICAgICAgICAgIEhlbHBlciwg
c2ltaWxhciB0byBjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzLCBidXQgZm9yIGFuZ3VsYXIgY29s
b3Igc3RvcHMKKyAgICAgICAgICAgIHVzZWQgaW4gY29uaWMgZ3JhZGllbnRzLiBDb3JyZXNwb25k
cyB0byBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWltYWdlcy00LyN0eXBlZGVmLWFuZ3VsYXIt
Y29sb3Itc3RvcC1saXN0CisgICAgICAgICAgICBidXQgZG9lcyBub3QgeWV0IHN1cHBvcnQgZG91
YmxlIHBvc2l0aW9uIHN5bnRheC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUmFkaWFsR3Jh
ZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25z
dW1lTGluZWFyR3JhZGllbnQpOgorICAgICAgICAKKyAgICAgICAgICAgIFBhc3MgQ1NTR3JhZGll
bnRWYWx1ZSBieSByZWZlcmVuY2UuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29uaWNHcmFkaWVudCk6CisgICAgICAgIAorICAg
ICAgICAgICAgUGFyc2UgY29uaWMgZ3JhZGllbnQuCisgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lR2VuZXJhdGVkSW1hZ2UpOgorICAg
ICAgICAKKyAgICAgICAgICAgIERpc3BhdGNoIHRvIGNvbnN1bWVDb25pY0dyYWRpZW50IGZvciBy
ZXBlYXRpbmcgYW5kIG5vbi1yZXBlYXRpbmcKKyAgICAgICAgICAgIGNvbmljIGdyYWRpZW50cy4K
KyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6Omlz
R2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAKKyAgICAgICAgICAgIFB1dCBlYWNoIHZhbHVlIG9u
IGl0cyBvd24gbGluZSB0byBtYWtlIGl0IG1vcmUgcmVhZGFibGUgYW5kIGFkZCBDU1NWYWx1ZUNv
bmljR3JhZGllbnQKKyAgICAgICAgICAgIGFuZCBDU1NWYWx1ZVJlcGVhdGluZ0NvbmljR3JhZGll
bnQuCisgICAgICAgIAorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAgICAgCisg
ICAgICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIGVuYWJsZSBjb25pYyBncmFkaWVudHMuIERpc2Fi
bGVkIGJ5IGRlZmF1bHQuCisKIDIwMTctMTAtMjkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQXNzZXJ0IHRoYXQgbm8gc2NyaXB0IGlzIGV4ZWN1dGVkIGR1cmlu
ZyBzdHlsZSByZWNhbGMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5j
cHAJKHJldmlzaW9uIDIyNDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOCArOTUsMTAgQEAgc3RhdGljIGlubGluZSBS
ZWY8Q1NTR3JhZGllbnRWYWx1ZT4gY2xvbgogewogICAgIGlmIChpczxDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlPih2YWx1ZSkuY2xvbmUoKTsKLSAgICBBU1NFUlQoaXM8Q1NTUmFkaWFsR3JhZGllbnRW
YWx1ZT4odmFsdWUpKTsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUmFkaWFsR3JhZGllbnRWYWx1
ZT4odmFsdWUpLmNsb25lKCk7CisgICAgaWYgKGlzPENTU1JhZGlhbEdyYWRpZW50VmFsdWU+KHZh
bHVlKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1JhZGlhbEdyYWRpZW50VmFsdWU+KHZh
bHVlKS5jbG9uZSgpOworICAgIEFTU0VSVChpczxDU1NDb25pY0dyYWRpZW50VmFsdWU+KHZhbHVl
KSk7CisgICAgcmV0dXJuIGRvd25jYXN0PENTU0NvbmljR3JhZGllbnRWYWx1ZT4odmFsdWUpLmNs
b25lKCk7CiB9CiAKIFJlZjxDU1NHcmFkaWVudFZhbHVlPiBDU1NHcmFkaWVudFZhbHVlOjpncmFk
aWVudFdpdGhTdHlsZXNSZXNvbHZlZChjb25zdCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
KQpAQCAtNTQ0LDkgKzU0Niw3IEBAIEZsb2F0UG9pbnQgQ1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0
ZUVuZFAKIAogYm9vbCBDU1NHcmFkaWVudFZhbHVlOjppc0NhY2hlYWJsZSgpIGNvbnN0CiB7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0b3BzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGNvbnN0IENTU0dyYWRpZW50Q29sb3JTdG9wJiBzdG9wID0gbV9zdG9wc1tpXTsKLQorICAgIGZv
ciAoYXV0byYgc3RvcCA6IG1fc3RvcHMpIHsKICAgICAgICAgaWYgKHN0b3AubV9jb2xvcklzRGVy
aXZlZEZyb21FbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMjc0LDQg
KzEyNzQsODQgQEAgYm9vbCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjplcXVhbHMoY29ucwogICAg
IHJldHVybiBlcXVhbFNoYXBlICYmIGVxdWFsU2l6aW5nQmVoYXZpb3IgJiYgZXF1YWxIb3Jpem9u
dGFsQW5kVmVydGljYWxTaXplICYmIG1fc3RvcHMgPT0gb3RoZXIubV9zdG9wczsKIH0KIAorCitT
dHJpbmcgQ1NTQ29uaWNHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sKKyAg
ICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKworICAgIGlmIChtX3JlcGVhdGluZykKKyAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoInJlcGVhdGluZy1jb25pYy1ncmFkaWVudCgiKTsKKyAgICBl
bHNlCisgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjb25pYy1ncmFkaWVudCgiKTsKKwor
ICAgIGJvb2wgd3JvdGVTb21ldGhpbmcgPSBmYWxzZTsKKworICAgIGlmIChtX2FuZ2xlKSB7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJmcm9tICIpOworICAgICAgICByZXN1bHQuYXBw
ZW5kKG1fYW5nbGUtPmNzc1RleHQoKSk7CisgICAgICAgIHdyb3RlU29tZXRoaW5nID0gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAobV9maXJzdFggJiYgbV9maXJzdFkpIHsKKyAgICAgICAgaWYgKHdy
b3RlU29tZXRoaW5nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiAiKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImF0ICIpOworICAgICAgICByZXN1bHQuYXBwZW5k
KG1fZmlyc3RYLT5jc3NUZXh0KCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmQobV9maXJzdFktPmNzc1RleHQoKSk7CisgICAgICAgIHdyb3RlU29t
ZXRoaW5nID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAod3JvdGVTb21ldGhpbmcpCisgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOworCisgICAgYm9vbCB3cm90ZUZpcnN0U3RvcCA9
IGZhbHNlOworICAgIGZvciAoYXV0byYgc3RvcCA6IG1fc3RvcHMpIHsKKyAgICAgICAgaWYgKHdy
b3RlRmlyc3RTdG9wKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7Cisg
ICAgICAgIHdyb3RlRmlyc3RTdG9wID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFzdG9wLmlzTWlkcG9p
bnQpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0b3AubV9jb2xvci0+Y3NzVGV4dCgpKTsK
KyAgICAgICAgaWYgKHN0b3AubV9wb3NpdGlvbikgeworICAgICAgICAgICAgaWYgKCFzdG9wLmlz
TWlkcG9pbnQpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChzdG9wLm1fcG9zaXRpb24tPmNzc1RleHQoKSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgCisgICAgcmVzdWx0LmFwcGVuZCgnKScpOworICAgIHJldHVybiByZXN1bHQu
dG9TdHJpbmcoKTsKK30KKworUmVmPEdyYWRpZW50PiBDU1NDb25pY0dyYWRpZW50VmFsdWU6OmNy
ZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmKQoreworICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2lu
dCB7IH0sIEZsb2F0UG9pbnQgeyB9KTsKK30KKworYm9vbCBDU1NDb25pY0dyYWRpZW50VmFsdWU6
OmVxdWFscyhjb25zdCBDU1NDb25pY0dyYWRpZW50VmFsdWUmIG90aGVyKSBjb25zdAoreworICAg
IGlmIChtX3JlcGVhdGluZyAhPSBvdGhlci5tX3JlcGVhdGluZykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKG1fcmVwZWF0aW5nICE9IG90aGVyLm1fcmVwZWF0aW5nKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWNvbXBhcmVDU1NWYWx1ZVB0cihtX2FuZ2xlLCBv
dGhlci5tX2FuZ2xlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBlcXVhbFhh
bmRZID0gZmFsc2U7CisgICAgaWYgKG1fZmlyc3RYICYmIG1fZmlyc3RZKQorICAgICAgICBlcXVh
bFhhbmRZID0gY29tcGFyZUNTU1ZhbHVlUHRyKG1fZmlyc3RYLCBvdGhlci5tX2ZpcnN0WCkgJiYg
Y29tcGFyZUNTU1ZhbHVlUHRyKG1fZmlyc3RZLCBvdGhlci5tX2ZpcnN0WSk7CisgICAgZWxzZSBp
ZiAobV9maXJzdFgpCisgICAgICAgIGVxdWFsWGFuZFkgPSBjb21wYXJlQ1NTVmFsdWVQdHIobV9m
aXJzdFgsIG90aGVyLm1fZmlyc3RYKSAmJiAhb3RoZXIubV9maXJzdFk7CisgICAgZWxzZSBpZiAo
bV9maXJzdFkpCisgICAgICAgIGVxdWFsWGFuZFkgPSBjb21wYXJlQ1NTVmFsdWVQdHIobV9maXJz
dFksIG90aGVyLm1fZmlyc3RZKSAmJiAhb3RoZXIubV9maXJzdFg7CisgICAgZWxzZQorICAgICAg
ICBlcXVhbFhhbmRZID0gIW90aGVyLm1fZmlyc3RYICYmICFvdGhlci5tX2ZpcnN0WTsKKworICAg
IHJldHVybiBlcXVhbFhhbmRZICYmIG1fc3RvcHMgPT0gb3RoZXIubV9zdG9wczsKKworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmgJKHJldmlzaW9uIDIyNDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVu
dFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDggQEAgZW51bSBDU1NHcmFkaWVu
dFR5cGUgewogICAgIENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQsCiAgICAgQ1NTUHJlZml4ZWRS
YWRpYWxHcmFkaWVudCwKICAgICBDU1NMaW5lYXJHcmFkaWVudCwKLSAgICBDU1NSYWRpYWxHcmFk
aWVudAorICAgIENTU1JhZGlhbEdyYWRpZW50LAorICAgIENTU0NvbmljR3JhZGllbnQKIH07CiBl
bnVtIENTU0dyYWRpZW50UmVwZWF0IHsgTm9uUmVwZWF0aW5nLCBSZXBlYXRpbmcgfTsKIApAQCAt
MjI1LDggKzIyNiw0NSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
bV9lbmRWZXJ0aWNhbFNpemU7CiB9OwogCitjbGFzcyBDU1NDb25pY0dyYWRpZW50VmFsdWUgZmlu
YWwgOiBwdWJsaWMgQ1NTR3JhZGllbnRWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxD
U1NDb25pY0dyYWRpZW50VmFsdWU+IGNyZWF0ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDb25pY0dyYWRpZW50VmFsdWUo
cmVwZWF0KSk7CisgICAgfQorCisgICAgUmVmPENTU0NvbmljR3JhZGllbnRWYWx1ZT4gY2xvbmUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ29uaWNHcmFk
aWVudFZhbHVlKCp0aGlzKSk7CisgICAgfQorCisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBj
b25zdDsKKworICAgIHZvaWQgc2V0QW5nbGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHZh
bCkgeyBtX2FuZ2xlID0gV1RGTW92ZSh2YWwpOyB9CisKKyAgICAvLyBDcmVhdGUgdGhlIGdyYWRp
ZW50IGZvciBhIGdpdmVuIHNpemUuCisgICAgUmVmPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChS
ZW5kZXJFbGVtZW50JiwgY29uc3QgRmxvYXRTaXplJik7CisKKyAgICBib29sIGVxdWFscyhjb25z
dCBDU1NDb25pY0dyYWRpZW50VmFsdWUmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBDU1NDb25p
Y0dyYWRpZW50VmFsdWUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0KQorICAgICAgICA6IENTU0dy
YWRpZW50VmFsdWUoQ29uaWNHcmFkaWVudENsYXNzLCByZXBlYXQsIENTU0NvbmljR3JhZGllbnQp
CisgICAgeworICAgIH0KKworICAgIENTU0NvbmljR3JhZGllbnRWYWx1ZShjb25zdCBDU1NDb25p
Y0dyYWRpZW50VmFsdWUmIG90aGVyKQorICAgICAgICA6IENTU0dyYWRpZW50VmFsdWUob3RoZXIs
IENvbmljR3JhZGllbnRDbGFzcywgb3RoZXIuZ3JhZGllbnRUeXBlKCkpCisgICAgICAgICwgbV9h
bmdsZShvdGhlci5tX2FuZ2xlKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IG1fYW5nbGU7IC8vIG1heSBiZSBudWxsLgorfTsKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxVRShDU1NHcmFkaWVudFZh
bHVlLCBpc0dyYWRpZW50VmFsdWUoKSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX1ZBTFVF
KENTU0xpbmVhckdyYWRpZW50VmFsdWUsIGlzTGluZWFyR3JhZGllbnRWYWx1ZSgpKQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUoQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSwgaXNSYWRp
YWxHcmFkaWVudFZhbHVlKCkpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxVRShDU1ND
b25pY0dyYWRpZW50VmFsdWUsIGlzQ29uaWNHcmFkaWVudFZhbHVlKCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCShyZXZpc2lvbiAyMjQx
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0OCw2ICsxNDgsOCBAQCBSZWZQdHI8SW1hZ2U+IENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWU6OmltCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlPigqdGhpcykuaW1hZ2UocmVuZGVyZXIsIHNpemUpOwogICAgIGNhc2UgUmFkaWFsR3Jh
ZGllbnRDbGFzczoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1JhZGlhbEdyYWRpZW50VmFs
dWU+KCp0aGlzKS5pbWFnZShyZW5kZXJlciwgc2l6ZSk7CisgICAgY2FzZSBDb25pY0dyYWRpZW50
Q2xhc3M6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NDb25pY0dyYWRpZW50VmFsdWU+KCp0
aGlzKS5pbWFnZShyZW5kZXJlciwgc2l6ZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtMTY5LDYgKzE3MSw4IEBAIGJvb2wgQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZTo6aXNGaXhlZFNpemUKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0xp
bmVhckdyYWRpZW50VmFsdWU+KCp0aGlzKS5pc0ZpeGVkU2l6ZSgpOwogICAgIGNhc2UgUmFkaWFs
R3JhZGllbnRDbGFzczoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1JhZGlhbEdyYWRpZW50
VmFsdWU+KCp0aGlzKS5pc0ZpeGVkU2l6ZSgpOworICAgIGNhc2UgQ29uaWNHcmFkaWVudENsYXNz
OgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPigqdGhpcyku
aXNGaXhlZFNpemUoKTsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CkBAIC0xODgsNiArMTkyLDggQEAgRmxvYXRTaXplIENTU0ltYWdlR2VuZXJhdG9y
VmFsdWU6OmZpeGVkUwogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTTGluZWFyR3JhZGllbnRW
YWx1ZT4oKnRoaXMpLmZpeGVkU2l6ZShyZW5kZXJlcik7CiAgICAgY2FzZSBSYWRpYWxHcmFkaWVu
dENsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4o
KnRoaXMpLmZpeGVkU2l6ZShyZW5kZXJlcik7CisgICAgY2FzZSBDb25pY0dyYWRpZW50Q2xhc3M6
CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NDb25pY0dyYWRpZW50VmFsdWU+KCp0aGlzKS5m
aXhlZFNpemUocmVuZGVyZXIpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KQEAgLTIwOSw2ICsyMTUsOCBAQCBib29sIENTU0ltYWdlR2VuZXJhdG9y
VmFsdWU6OmlzUGVuZGluZygpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NMaW5lYXJHcmFk
aWVudFZhbHVlPigqdGhpcykuaXNQZW5kaW5nKCk7CiAgICAgY2FzZSBSYWRpYWxHcmFkaWVudENs
YXNzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4oKnRo
aXMpLmlzUGVuZGluZygpOworICAgIGNhc2UgQ29uaWNHcmFkaWVudENsYXNzOgorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPigqdGhpcykuaXNQZW5kaW5nKCk7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAt
MjMwLDYgKzIzOCw4IEBAIGJvb2wgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6a25vd25Ub0JlT3AK
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0xpbmVhckdyYWRpZW50VmFsdWU+KCp0aGlzKS5r
bm93blRvQmVPcGFxdWUoKTsKICAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xhc3M6CiAgICAgICAg
IHJldHVybiBkb3duY2FzdDxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPigqdGhpcykua25vd25Ub0Jl
T3BhcXVlKCk7CisgICAgY2FzZSBDb25pY0dyYWRpZW50Q2xhc3M6CisgICAgICAgIHJldHVybiBk
b3duY2FzdDxDU1NDb25pY0dyYWRpZW50VmFsdWU+KCp0aGlzKS5rbm93blRvQmVPcGFxdWUoKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC0y
NTQsNiArMjY0LDkgQEAgdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpsb2FkU3ViaW1hZwog
ICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFzczoKICAgICAgICAgZG93bmNhc3Q8Q1NTUmFkaWFs
R3JhZGllbnRWYWx1ZT4oKnRoaXMpLmxvYWRTdWJpbWFnZXMoY2FjaGVkUmVzb3VyY2VMb2FkZXIs
IG9wdGlvbnMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbmljR3JhZGllbnRDbGFzczoK
KyAgICAgICAgZG93bmNhc3Q8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPigqdGhpcykubG9hZFN1Ymlt
YWdlcyhjYWNoZWRSZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CisgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlLmNwcAkocmV2aXNpb24gMjI0MTU0KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1Niw4IEBAIGJvb2wg
Q1NTVmFsdWU6OmVxdWFscyhjb25zdCBDU1NWYWx1ZSYgb3QKICAgICAgICAgICAgIHJldHVybiBj
b21wYXJlQ1NTVmFsdWVzPENTU0xpbmVhckdyYWRpZW50VmFsdWU+KCp0aGlzLCBvdGhlcik7CiAg
ICAgICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21w
YXJlQ1NTVmFsdWVzPENTU1JhZGlhbEdyYWRpZW50VmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAg
ICAgIGNhc2UgQ29uaWNHcmFkaWVudENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVD
U1NWYWx1ZXM8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBj
YXNlIENyb3NzZmFkZUNsYXNzOgogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8
Q1NTQ3Jvc3NmYWRlVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGNhc2UgSW1hZ2VDbGFz
czoKQEAgLTI1NCw2ICsyNTYsOCBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAog
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4oKnRoaXMpLmN1
c3RvbUNTU1RleHQoKTsKICAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xhc3M6CiAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4
dCgpOworICAgIGNhc2UgQ29uaWNHcmFkaWVudENsYXNzOgorICAgICAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIGNh
c2UgQ3Jvc3NmYWRlQ2xhc3M6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NDcm9zc2ZhZGVW
YWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKICAgICBjYXNlIEltYWdlQ2xhc3M6CkBAIC0z
NTksNiArMzYzLDkgQEAgdm9pZCBDU1NWYWx1ZTo6ZGVzdHJveSgpCiAgICAgY2FzZSBSYWRpYWxH
cmFkaWVudENsYXNzOgogICAgICAgICBkZWxldGUgZG93bmNhc3Q8Q1NTUmFkaWFsR3JhZGllbnRW
YWx1ZT4odGhpcyk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENvbmljR3JhZGllbnRDbGFz
czoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU0NvbmljR3JhZGllbnRWYWx1ZT4odGhpcyk7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIENyb3NzZmFkZUNsYXNzOgogICAgICAgICBkZWxl
dGUgZG93bmNhc3Q8Q1NTQ3Jvc3NmYWRlVmFsdWU+KHRoaXMpOwogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAkocmV2aXNpb24gMjI0MTU0KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDggKzgxLDggQEAgcHVibGlj
OgogICAgIGJvb2wgaXNGb250VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBG
b250Q2xhc3M7IH0KICAgICBib29sIGlzRm9udFN0eWxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzVHlwZSA9PSBGb250U3R5bGVDbGFzczsgfQogICAgIGJvb2wgaXNGb250U3R5bGVSYW5n
ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gRm9udFN0eWxlUmFuZ2VDbGFz
czsgfQotICAgIGJvb2wgaXNJbWFnZUdlbmVyYXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc1R5cGUgPj0gQ2FudmFzQ2xhc3MgJiYgbV9jbGFzc1R5cGUgPD0gUmFkaWFsR3JhZGllbnRD
bGFzczsgfQotICAgIGJvb2wgaXNHcmFkaWVudFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFz
c1R5cGUgPj0gTGluZWFyR3JhZGllbnRDbGFzcyAmJiBtX2NsYXNzVHlwZSA8PSBSYWRpYWxHcmFk
aWVudENsYXNzOyB9CisgICAgYm9vbCBpc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX2NsYXNzVHlwZSA+PSBDYW52YXNDbGFzcyAmJiBtX2NsYXNzVHlwZSA8PSBDb25pY0dy
YWRpZW50Q2xhc3M7IH0KKyAgICBib29sIGlzR3JhZGllbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xhc3NUeXBlID49IExpbmVhckdyYWRpZW50Q2xhc3MgJiYgbV9jbGFzc1R5cGUgPD0gQ29u
aWNHcmFkaWVudENsYXNzOyB9CiAgICAgYm9vbCBpc05hbWVkSW1hZ2VWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xhc3NUeXBlID09IE5hbWVkSW1hZ2VDbGFzczsgfQogICAgIGJvb2wgaXNJbWFn
ZVNldFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gSW1hZ2VTZXRDbGFzczsg
fQogICAgIGJvb2wgaXNJbWFnZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0g
SW1hZ2VDbGFzczsgfQpAQCAtOTUsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0cmVhdEFz
SW5oZXJpdGVkVmFsdWUoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAgICAgYm9vbCBpc0xpbmVhckdy
YWRpZW50VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBMaW5lYXJHcmFkaWVu
dENsYXNzOyB9CiAgICAgYm9vbCBpc1JhZGlhbEdyYWRpZW50VmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2NsYXNzVHlwZSA9PSBSYWRpYWxHcmFkaWVudENsYXNzOyB9CisgICAgYm9vbCBpc0Nvbmlj
R3JhZGllbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IENvbmljR3JhZGll
bnRDbGFzczsgfQogICAgIGJvb2wgaXNSZWZsZWN0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Ns
YXNzVHlwZSA9PSBSZWZsZWN0Q2xhc3M7IH0KICAgICBib29sIGlzU2hhZG93VmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTaGFkb3dDbGFzczsgfQogICAgIGJvb2wgaXNDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9
PSBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uQ2xhc3M7IH0KQEAgLTE0Myw2ICsxNDQsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIEZpbHRlckltYWdlQ2xhc3MsCiAgICAgICAgIExpbmVhckdyYWRp
ZW50Q2xhc3MsCiAgICAgICAgIFJhZGlhbEdyYWRpZW50Q2xhc3MsCisgICAgICAgIENvbmljR3Jh
ZGllbnRDbGFzcywKIAogICAgICAgICAvLyBUaW1pbmcgZnVuY3Rpb24gY2xhc3Nlcy4KICAgICAg
ICAgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbkNsYXNzLApJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJldmlzaW9uIDIyNDE1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU1LDggKzExNTUs
MTAgQEAgY3Jvc3MtZmFkZQogaW1hZ2Utc2V0CiBsaW5lYXItZ3JhZGllbnQKIHJhZGlhbC1ncmFk
aWVudAorY29uaWMtZ3JhZGllbnQKIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQKIHJlcGVhdGlu
Zy1yYWRpYWwtZ3JhZGllbnQKK3JlcGVhdGluZy1jb25pYy1ncmFkaWVudAogLXdlYmtpdC1jYW52
YXMKIC13ZWJraXQtY3Jvc3MtZmFkZQogLXdlYmtpdC1ncmFkaWVudApJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMjI0MTU0KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2
ICs4Nyw3IEBAIENTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoRG9jdW0KICNlbmRp
ZgogICAgIHNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCku
c3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkKCk7CiAgICAgY29uc3RhbnRQcm9wZXJ0aWVzRW5h
YmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCgpOwor
ICAgIGNvbmljR3JhZGllbnRzRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuY29uaWNHcmFk
aWVudHNFbmFibGVkKCk7CiAgICAgZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkID0gZG9jdW1lbnQu
c2V0dGluZ3MoKS5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQoKTsKIAogI2lmIFBMQVRGT1JNKElP
UykKQEAgLTEwOSw2ICsxMTAsNyBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYgCiAgICAgICAgICYmIGEudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhh
dmlvciA9PSBiLnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IKICAgICAg
ICAgJiYgYS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQgPT0gYi5zcHJpbmdUaW1pbmdGdW5j
dGlvbkVuYWJsZWQKICAgICAgICAgJiYgYS5jb25zdGFudFByb3BlcnRpZXNFbmFibGVkID09IGIu
Y29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZAorICAgICAgICAmJiBhLmNvbmljR3JhZGllbnRzRW5h
YmxlZCA9PSBiLmNvbmljR3JhZGllbnRzRW5hYmxlZAogICAgICAgICAmJiBhLmRlZmVycmVkQ1NT
UGFyc2VyRW5hYmxlZCA9PSBiLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZDsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJNb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJNb2RlLmgJKHJldmlzaW9uIDIyNDE1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyTW9kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogICAgIGJvb2wgdXNlTGVnYWN5QmFj
a2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciB7IGZhbHNlIH07CiAgICAgYm9vbCBzcHJpbmdU
aW1pbmdGdW5jdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgY29uc3RhbnRQcm9wZXJ0
aWVzRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgCisgICAgYm9vbCBjb25pY0dyYWRpZW50c0VuYWJs
ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkIHsgZmFsc2Ug
fTsKIAogICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKQEAgLTEz
OSw4ICsxMzksOSBAQCBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dEhhc2ggewogICAgICAgICAgICAg
JiBrZXkuZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlICAgICAgICAgPDwgNQogICAg
ICAgICAgICAgJiBrZXkudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciAg
PDwgNgogICAgICAgICAgICAgJiBrZXkuc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkICAgICAg
ICAgICAgICAgPDwgNwotICAgICAgICAgICAgJiBrZXkuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVk
ICAgICAgICAgICAgICAgICAgPDwgOAotICAgICAgICAgICAgJiBrZXkubW9kZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgOTsKKyAgICAgICAgICAgICYga2V5LmNvbmlj
R3JhZGllbnRzRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgIDw8IDgKKyAgICAgICAgICAgICYg
a2V5LmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCAgICAgICAgICAgICAgICAgIDw8IDkKKyAgICAg
ICAgICAgICYga2V5Lm1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
IDEwOwogICAgICAgICBoYXNoIF49IFdURjo6aW50SGFzaChiaXRzKTsKICAgICAgICAgcmV0dXJu
IGhhc2g7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkocmV2aXNpb24gMjI0MTU0KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTYsNiArMzU2LDM0IEBAIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y29uc3VtZUFuZ2xlKEMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorc3RhdGljIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUFuZ2xlT3JQZXJjZW50KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVS
YW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNp
b25Ub2tlbikgeworICAgICAgICBzd2l0Y2ggKHRva2VuLnVuaXRUeXBlKCkpIHsKKyAgICAgICAg
Y2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNTU19ERUc6CisgICAgICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpDU1NfUkFEOgorICAgICAgICBjYXNlIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6Q1NTX0dSQUQ6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlOjpDU1NfVFVSTjoKKyAgICAgICAgICAgIHJldHVybiBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisgICAg
aWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiAmJiBzaG91bGRBY2NlcHRVbml0bGVzc1Zh
bHVlKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcykpCisgICAg
ICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHJhbmdlLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6Q1NTX0RFRyk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBQZXJjZW50
YWdlVG9rZW4pCisgICAgICAgIHJldHVybiBjb25zdW1lUGVyY2VudChyYW5nZSwgdmFsdWVSYW5n
ZSk7CisKKyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIENhbGNBbmdsZSwgdmFsdWVS
YW5nZSk7CisgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFy
c2VyLnZhbHVlKCkpIHsKKyAgICAgICAgaWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgpID09IENh
bGNBbmdsZSkKKyAgICAgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVWYWx1ZSgpOwor
ICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworCiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNvbnN1bWVUaW1lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayB1bml0
bGVzcykKIHsKICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7
CkBAIC05MDQsOSArOTMyLDkgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJl
Y2F0ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBib29sIGNvbnN1bWVHcmFkaWVu
dENvbG9yU3RvcHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRWYWx1ZSogZ3JhZGllbnQpCitzdGF0aWMgYm9vbCBjb25z
dW1lR3JhZGllbnRDb2xvclN0b3BzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50VmFsdWUmIGdyYWRpZW50KQogewotICAg
IGJvb2wgc3VwcG9ydHNDb2xvckhpbnRzID0gZ3JhZGllbnQtPmdyYWRpZW50VHlwZSgpID09IENT
U0xpbmVhckdyYWRpZW50IHx8IGdyYWRpZW50LT5ncmFkaWVudFR5cGUoKSA9PSBDU1NSYWRpYWxH
cmFkaWVudDsKKyAgICBib29sIHN1cHBvcnRzQ29sb3JIaW50cyA9IGdyYWRpZW50LmdyYWRpZW50
VHlwZSgpID09IENTU0xpbmVhckdyYWRpZW50IHx8IGdyYWRpZW50LmdyYWRpZW50VHlwZSgpID09
IENTU1JhZGlhbEdyYWRpZW50OwogCiAgICAgLy8gVGhlIGZpcnN0IGNvbG9yIHN0b3AgY2Fubm90
IGJlIGEgY29sb3IgaGludC4KICAgICBib29sIHByZXZpb3VzU3RvcFdhc0NvbG9ySGludCA9IHRy
dWU7CkBAIC05MjUsNyArOTUzLDQwIEBAIHN0YXRpYyBib29sIGNvbnN1bWVHcmFkaWVudENvbG9y
U3RvcHMoQ1MKICAgICAgICAgc3RvcC5tX3Bvc2l0aW9uID0gY29uc3VtZUxlbmd0aE9yUGVyY2Vu
dChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgIGlmICghc3Rv
cC5tX2NvbG9yICYmICFzdG9wLm1fcG9zaXRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGdyYWRpZW50LT5hZGRTdG9wKHN0b3ApOworICAgICAgICBncmFkaWVudC5hZGRT
dG9wKHN0b3ApOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2Uo
cmFuZ2UpKTsKKworICAgIC8vIFRoZSBsYXN0IGNvbG9yIHN0b3AgY2Fubm90IGJlIGEgY29sb3Ig
aGludC4KKyAgICBpZiAocHJldmlvdXNTdG9wV2FzQ29sb3JIaW50KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBNdXN0IGhhdmUgMiBvciBtb3JlIHN0b3BzIHRvIGJlIHZhbGlkLgor
ICAgIHJldHVybiBncmFkaWVudC5zdG9wQ291bnQoKSA+PSAyOworfQorCisvLyBodHRwczovL3d3
dy53My5vcmcvVFIvY3NzLWltYWdlcy00LyN0eXBlZGVmLWFuZ3VsYXItY29sb3Itc3RvcC1saXN0
CisvLyBGSVhNRTogVGhpcyBzaG91bGQgc3VwcG9ydCB1cCB0byB0d28gcG9zaXRpb24gaGludHMg
cGVyIGNvbG9yIHN0b3AuCitzdGF0aWMgYm9vbCBjb25zdW1lQW5ndWxhckdyYWRpZW50Q29sb3JT
dG9wcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlLCBDU1NHcmFkaWVudFZhbHVlJiBncmFkaWVudCkKK3sKKyAgICAvLyBUaGUgZmlyc3QgY29s
b3Igc3RvcCBjYW5ub3QgYmUgYSBjb2xvciBoaW50LgorICAgIGJvb2wgcHJldmlvdXNTdG9wV2Fz
Q29sb3JIaW50ID0gdHJ1ZTsKKyAgICBkbyB7CisgICAgICAgIENTU0dyYWRpZW50Q29sb3JTdG9w
IHN0b3A7CisgICAgICAgIHN0b3AubV9jb2xvciA9IGNvbnN1bWVDb2xvcihyYW5nZSwgY3NzUGFy
c2VyTW9kZSk7CisKKyAgICAgICAgLy8gVHdvIGhpbnRzIGluIGEgcm93IGFyZSBub3QgYWxsb3dl
ZC4KKyAgICAgICAgaWYgKCFzdG9wLm1fY29sb3IgJiYgcHJldmlvdXNTdG9wV2FzQ29sb3JIaW50
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgcHJldmlvdXNT
dG9wV2FzQ29sb3JIaW50ID0gIXN0b3AubV9jb2xvcjsKKyAgICAgICAgCisgICAgICAgIC8vIEZJ
WE1FLU5FV1BBUlNFUjogVGhpcyBib29sZWFuIGNvdWxkIGJlIHJlbW92ZWQuIE51bGwgY2hlY2tp
bmcgY29sb3Igd291bGQgYmUgc3VmZmljaWVudC4KKyAgICAgICAgc3RvcC5pc01pZHBvaW50ID0g
IXN0b3AubV9jb2xvcjsKKworICAgICAgICBzdG9wLm1fcG9zaXRpb24gPSBjb25zdW1lQW5nbGVP
clBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVp
cms6OkZvcmJpZCk7CisgICAgICAgIGlmICghc3RvcC5tX2NvbG9yICYmICFzdG9wLm1fcG9zaXRp
b24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGdyYWRpZW50LmFkZFN0b3Ao
c3RvcCk7CiAgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5n
ZSkpOwogCiAgICAgLy8gVGhlIGxhc3QgY29sb3Igc3RvcCBjYW5ub3QgYmUgYSBjb2xvciBoaW50
LgpAQCAtOTMzLDcgKzk5NCw3IEBAIHN0YXRpYyBib29sIGNvbnN1bWVHcmFkaWVudENvbG9yU3Rv
cHMoQ1MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gTXVzdCBoYXZlIDIgb3IgbW9y
ZSBzdG9wcyB0byBiZSB2YWxpZC4KLSAgICByZXR1cm4gZ3JhZGllbnQtPnN0b3BDb3VudCgpID49
IDI7CisgICAgcmV0dXJuIGdyYWRpZW50LnN0b3BDb3VudCgpID49IDI7CiB9CiAKIHN0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NHcmFkaWVu
dFJlcGVhdCByZXBlYXRpbmcpCkBAIC05NzIsNyArMTAzMyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVEZXByZWNhdGUKICAgICB9IGVsc2UgewogICAgICAgICBjb25zdW1lQ29t
bWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpOwogICAgIH0KLSAgICBpZiAoIWNvbnN1bWVHcmFk
aWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFyc2VyTW9kZSwgcmVzdWx0LmdldCgpKSkKKyAgICBp
ZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFyc2VyTW9kZSwgKnJlc3Vs
dCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEw
NTksNyArMTEyMCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVSYWRpYWxHcmEK
IAogICAgIGlmICgoc2hhcGUgfHwgc2l6ZUtleXdvcmQgfHwgaG9yaXpvbnRhbFNpemUgfHwgY2Vu
dGVyWCB8fCBjZW50ZXJZKSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xv
clN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdC5nZXQoKSkpCisgICAgaWYgKCFjb25z
dW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsICpyZXN1bHQpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTA5Miw3ICsx
MTUzLDQ5IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVMaW5lYXJHcmEKIAogICAg
IGlmIChleHBlY3RDb21tYSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xv
clN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdC5nZXQoKSkpCisgICAgaWYgKCFjb25z
dW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsICpyZXN1bHQpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lQ29uaWNHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGlu
ZykKK3sKKyAgICBpZiAoIWNvbnRleHQuY29uaWNHcmFkaWVudHNFbmFibGVkKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxDU1NDb25pY0dyYWRpZW50VmFsdWU+IHJlc3Vs
dCA9IENTU0NvbmljR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZyk7CisKKyAgICBib29s
IGV4cGVjdENvbW1hID0gZmFsc2U7CisgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSA9PSBJZGVu
dFRva2VuKSB7CisgICAgICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVGcm9tPihhcmdzKSkg
eworICAgICAgICAgICAgYXV0byBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjb250ZXh0Lm1v
ZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgICAgICAgICBpZiAoIWFuZ2xlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmVzdWx0LT5zZXRBbmds
ZShhbmdsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIGV4cGVjdENvbW1hID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1
ZUF0PihhcmdzKSkgeworICAgICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50
ZXJYOworICAgICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50ZXJZOworICAg
ICAgICAgICAgY29uc3VtZVBvc2l0aW9uKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWly
azo6Rm9yYmlkLCBjZW50ZXJYLCBjZW50ZXJZKTsKKyAgICAgICAgICAgIGlmICghKGNlbnRlclgg
JiYgY2VudGVyWSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RYKGNlbnRlclguY29weVJlZigpKTsKKyAg
ICAgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZKGNlbnRlclkuY29weVJlZigpKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgLy8gUmlnaHQgbm93LCBjb25pYyBncmFkaWVudHMgaGF2ZSB0aGUg
c2FtZSBzdGFydCBhbmQgZW5kIGNlbnRlcnMuCisgICAgICAgICAgICByZXN1bHQtPnNldFNlY29u
ZFgoY2VudGVyWC5jb3B5UmVmKCkpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRTZWNvbmRZKGNl
bnRlclkuY29weVJlZigpKTsKKyAgICAKKyAgICAgICAgICAgIGV4cGVjdENvbW1hID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChleHBlY3RDb21tYSAmJiAhY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
aWYgKCFjb25zdW1lQW5ndWxhckdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjb250ZXh0Lm1vZGUs
ICpyZXN1bHQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0Owog
fQpAQCAtMTE4Niw2ICsxMjg5LDEwIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVH
ZW5lcmF0ZWQKICAgICAgICAgcmVzdWx0ID0gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVu
dChhcmdzLCBjb250ZXh0Lm1vZGUsIE5vblJlcGVhdGluZyk7CiAgICAgZWxzZSBpZiAoaWQgPT0g
Q1NTVmFsdWVXZWJraXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCkKICAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUsIFJlcGVh
dGluZyk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVDb25pY0dyYWRpZW50KQorICAgICAg
ICByZXN1bHQgPSBjb25zdW1lQ29uaWNHcmFkaWVudChhcmdzLCBjb250ZXh0LCBOb25SZXBlYXRp
bmcpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUmVwZWF0aW5nQ29uaWNHcmFkaWVudCkK
KyAgICAgICAgcmVzdWx0ID0gY29uc3VtZUNvbmljR3JhZGllbnQoYXJncywgY29udGV4dCwgUmVw
ZWF0aW5nKTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSB8fCBp
ZCA9PSBDU1NWYWx1ZUNyb3NzRmFkZSkKICAgICAgICAgcmVzdWx0ID0gY29uc3VtZUNyb3NzRmFk
ZShhcmdzLCBjb250ZXh0LCBpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSk7CiAgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRDYW52YXMpCkBAIC0xMjMyLDEyICsxMzM5LDIzIEBA
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZVNldCgKIAogc3RhdGljIGJvb2wg
aXNHZW5lcmF0ZWRJbWFnZShDU1NWYWx1ZUlEIGlkKQogewotICAgIHJldHVybiBpZCA9PSBDU1NW
YWx1ZUxpbmVhckdyYWRpZW50IHx8IGlkID09IENTU1ZhbHVlUmFkaWFsR3JhZGllbnQKLSAgICAg
ICAgfHwgaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdMaW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NW
YWx1ZVJlcGVhdGluZ1JhZGlhbEdyYWRpZW50Ci0gICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Vi
a2l0TGluZWFyR3JhZGllbnQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRSYWRpYWxHcmFkaWVudAot
ICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFJlcGVhdGluZ0xpbmVhckdyYWRpZW50IHx8
IGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nUmFkaWFsR3JhZGllbnQKLSAgICAgICAgfHwg
aWQgPT0gQ1NTVmFsdWVXZWJraXRHcmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3Nz
RmFkZSB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdENhbnZhcwotICAgICAgICB8fCBpZCA9PSBDU1NW
YWx1ZUNyb3NzRmFkZSB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdE5hbWVkSW1hZ2UgfHwgaWQgPT0g
Q1NTVmFsdWVXZWJraXRGaWx0ZXIgfHwgaWQgPT0gQ1NTVmFsdWVGaWx0ZXI7CisgICAgcmV0dXJu
IGlkID09IENTU1ZhbHVlTGluZWFyR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVS
YWRpYWxHcmFkaWVudAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUNvbmljR3JhZGllbnQKKyAg
ICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdMaW5lYXJHcmFkaWVudAorICAgICAgICB8
fCBpZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ1JhZGlhbEdyYWRpZW50CisgICAgICAgIHx8IGlkID09
IENTU1ZhbHVlUmVwZWF0aW5nQ29uaWNHcmFkaWVudAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1
ZVdlYmtpdExpbmVhckdyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0UmFk
aWFsR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRSZXBlYXRpbmdMaW5l
YXJHcmFkaWVudAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFJlcGVhdGluZ1JhZGlh
bEdyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0R3JhZGllbnQKKyAgICAg
ICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRDcm9zc0ZhZGUKKyAgICAgICAgfHwgaWQgPT0gQ1NT
VmFsdWVXZWJraXRDYW52YXMKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVDcm9zc0ZhZGUKKyAg
ICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXROYW1lZEltYWdlCisgICAgICAgIHx8IGlkID09
IENTU1ZhbHVlV2Via2l0RmlsdGVyCisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlRmlsdGVyOwog
fQogICAgIAogc3RhdGljIGJvb2wgaXNWYWxpZFByaW1pdGl2ZUZpbHRlckZ1bmN0aW9uKENTU1Zh
bHVlSUQgZmlsdGVyRnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCShy
ZXZpc2lvbiAyMjQxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwJKHdv
cmtpbmcgY29weSkKQEAgLTUwOSw2ICs1MDksOCBAQCBzaG91bGRDb252ZXJ0SW52YWxpZFVSTHNU
b0JsYW5rOgogCiBzcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNl
Citjb25pY0dyYWRpZW50c0VuYWJsZWQ6CisgIGluaXRpYWw6IGZhbHNlCiAKIHRyZWF0SVBBZGRy
ZXNzQXNEb21haW46CiAgIGluaXRpYWw6IGZhbHNlCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjQxNTQp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxNy0xMC0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtD
b25pYyBHcmFkaWVudHNdIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4OTg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2dy
YWRpZW50cy9jb25pYy1ncmFkaWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtcGFyc2luZy5odG1sOiBBZGRlZC4K
KworICAgICAgICAgICAgQWRkIHRlc3RzIGZvciBiYXNpYyBwYXJzaW5nIG9mIGNvbmljIGdyYWRp
ZW50cy4KKwogMjAxNy0xMC0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIHNlbGYuRXh0ZW5kYWJsZUV2ZW50IC8gQ2xpZW50IC8gQ2xpZW50cyAvIFdpbmRvd0Ns
aWVudCBkbyBub3QgZXhpc3QgaW4gYSBTZXJ2aWNlIFdvcmtlcgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtcGFyc2luZy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtcGFyc2lu
Zy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVu
dHMvY29uaWMtZ3JhZGllbnQtcGFyc2luZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0IEBACisKK1BBU1MgVGVzdCBjb25pYy1ncmFkaWVudCBwYXJzaW5nIAorUEFTUyBU
ZXN0IHJlcGVhdGluZy1jb25pYy1ncmFkaWVudCBwYXJzaW5nIAorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1wYXJzaW5nLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtcGFyc2luZy5odG1s
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRp
ZW50LXBhcnNpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0Pgor
CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q29uaWNH
cmFkaWVudHNFbmFibGVkKHRydWUpOworCitmdW5jdGlvbiByb3VuZFRyaXAoY3NzKQoreworICAg
IHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYuc2V0QXR0
cmlidXRlKCdzdHlsZScsIGNzcyk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYp
OworCisgICAgdmFyIHJlc3VsdCA9IGdldENvbXB1dGVkU3R5bGUoZGl2KS5iYWNrZ3JvdW5kSW1h
Z2U7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK2Z1bmN0aW9uIHRlc3RHcmFkaWVudChhY3R1YWwsIGV4cGVjdGVkKQoreworICAg
IGlmIChleHBlY3RlZCA9PT0gdW5kZWZpbmVkKQorICAgICAgICBleHBlY3RlZCA9IGFjdHVhbDsK
KworICAgIGFzc2VydF9lcXVhbHMocm91bmRUcmlwKCJiYWNrZ3JvdW5kLWltYWdlOiIgKyBhY3R1
YWwpLCBleHBlY3RlZCwgIlRlc3Rpbmcgcm91bmQgdHJpcCBvZiAiICsgYWN0dWFsKTsgICAgICAg
IAorfQorCisvLyBGSVhNRSBUZXN0IGludmFsaWQgcGFyYW1ldGVycy4KKy8vIEZJWE1FIFRlc3Qg
ZG91YmxlIHBvc2l0aW9uIHN5bnRheCBmb3IgY29sb3Igc3RvcHMuCisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgdGVzdEdyYWRpZW50KCJjb25pYy1ncmFkaWVudChyZWQsIGdvbGQpIikKKyAgICB0
ZXN0R3JhZGllbnQoImNvbmljLWdyYWRpZW50KGZyb20gMGRlZywgcmVkLCBnb2xkKSIpCisgICAg
dGVzdEdyYWRpZW50KCJjb25pYy1ncmFkaWVudChhdCBjZW50ZXIsIHJlZCwgZ29sZCkiLCAiY29u
aWMtZ3JhZGllbnQoYXQgY2VudGVyIGNlbnRlciwgcmVkLCBnb2xkKSIpCisgICAgdGVzdEdyYWRp
ZW50KCJjb25pYy1ncmFkaWVudChhdCAyNSUgNzUlLCByZWQsIGdvbGQpIikKKyAgICB0ZXN0R3Jh
ZGllbnQoImNvbmljLWdyYWRpZW50KGZyb20gMGRlZyBhdCA1MCUgNTAlLCByZWQsIGdvbGQpIikK
KyAgICB0ZXN0R3JhZGllbnQoImNvbmljLWdyYWRpZW50KHJlZCAwJSwgZ29sZCAxMDAlKSIpCisg
ICAgdGVzdEdyYWRpZW50KCJjb25pYy1ncmFkaWVudChyZWQgMGRlZywgZ29sZCAxdHVybikiKTsK
KyAgICB0ZXN0R3JhZGllbnQoImNvbmljLWdyYWRpZW50KHdoaXRlIC01MCUsIGJsYWNrIDE1MCUp
Iik7CisgICAgdGVzdEdyYWRpZW50KCJjb25pYy1ncmFkaWVudCh3aGl0ZSAtMTgwZGVnLCBibGFj
ayA1NDBkZWcpIik7CisgICAgdGVzdEdyYWRpZW50KCJjb25pYy1ncmFkaWVudChoc2woMCwwJSw3
NSUpLCBoc2woMCwwJSwyNSUpKSIsICJjb25pYy1ncmFkaWVudChyZ2IoMTkxLCAxOTEsIDE5MSks
IHJnYig2MywgNjMsIDYzKSkiKTsKKyAgICB0ZXN0R3JhZGllbnQoImNvbmljLWdyYWRpZW50KGZy
b20gNDVkZWcsIHdoaXRlLCBibGFjaywgd2hpdGUpIik7CisgICAgdGVzdEdyYWRpZW50KCJjb25p
Yy1ncmFkaWVudChoc2woMCwwJSw4Ny41JSksIHdoaXRlIDQ1ZGVnLCBibGFjayAyMjVkZWcsIGhz
bCgwLDAlLDg3LjUlKSkiLCAiY29uaWMtZ3JhZGllbnQocmdiKDIyMywgMjIzLCAyMjMpLCB3aGl0
ZSA0NWRlZywgYmxhY2sgMjI1ZGVnLCByZ2IoMjIzLCAyMjMsIDIyMykpIik7CisKKyAgICB2YXIg
cyA9ICJjb25pYy1ncmFkaWVudCgiOworICAgIGZvcih2YXIgeCA9IDA7IHggPCA1MDA7IHgrKykK
KyAgICAgICAgcyArPSAid2hpdGUgIiArICh4LzUwMCkgKyAiJSwgIiArICgoMiAqIHggKyAxKSAv
IDEwMDApICsgIiUsICI7CisgICAgcyArPSAiYmxhY2spIjsKKyAgICB0ZXN0R3JhZGllbnQocyk7
Cit9LCAiVGVzdCBjb25pYy1ncmFkaWVudCBwYXJzaW5nIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgdGVzdEdyYWRpZW50KCJyZXBlYXRpbmctY29uaWMtZ3JhZGllbnQocmVkLCBnb2xkKSIp
OworICAgIHRlc3RHcmFkaWVudCgicmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KGZyb20gMGRlZyBh
dCBjZW50ZXIsIHJlZCwgZ29sZCkiLCAicmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KGZyb20gMGRl
ZyBhdCBjZW50ZXIgY2VudGVyLCByZWQsIGdvbGQpIik7Cit9LCAiVGVzdCByZXBlYXRpbmctY29u
aWMtZ3JhZGllbnQgcGFyc2luZyIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325285</attachid>
            <date>2017-10-29 08:53:19 -0700</date>
            <delta_ts>2017-10-29 09:00:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178987-20171029085318.patch</filename>
            <type>text/plain</type>
            <size>32588</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxNy0xMC0yOSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtDb25pYyBHcmFkaWVudHNdIEFkZCBz
dXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4OTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBpbml0aWFsIHN1cHBvcnQsIGRpc2FibGVk
IGJ5IGRlZmF1bHQsIGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cyBhcyBwZXIKKyAgICAgICAg
Q1NTIDQgSW1hZ2VzIC0gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1pbWFnZXMtNC8jY29uaWMt
Z3JhZGllbnRzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50
LXBhcnNpbmcuaHRtbAorCisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1
ZTo6aXNDYWNoZWFibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29uaWNHcmFkaWVu
dFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nvbmlj
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29u
aWNHcmFkaWVudFZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVu
dFZhbHVlLmg6CisgICAgICAgIAorICAgICAgICAgICAgQWRkIENTU0NvbmljR3JhZGllbnRWYWx1
ZSBhcyBhIHN1YmNsYXNzIG9mIENTU0dyYWRpZW50VmFsdWUgYW5kIGltcGxlbWVudAorICAgICAg
ICAgICAgY3VzdG9tQ1NTVGV4dCgpIGFuZCBlcXVhbHMoKS4gU3R1YiBvdXQgY3JlYXRlR3JhZGll
bnQoKSBhcyBwYWludGluZyBpcyBub3QKKyAgICAgICAgICAgIHlldCBpbXBsZW1lbnRlZC4KKyAg
ICAgICAgCisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aXNGaXhlZFNpemUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4ZWRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmlzUGVuZGluZyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjprbm93blRvQmVPcGFxdWUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6bG9hZFN1Ymlt
YWdlcyk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1Rl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAg
ICAKKyAgICAgICAgICAgIERpc3BhdGNoIHRvIENTU0NvbmljR3JhZGllbnRWYWx1ZSBhcyBuZWVk
ZWQuCisgICAgICAgIAorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWU6OmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NWYWx1ZTo6aXNHcmFkaWVudFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ZhbHVlOjppc0NvbmljR3JhZGllbnRWYWx1ZSBjb25zdCk6CisgICAgICAgIAorICAgICAg
ICAgICAgQWRkIGNvbmljIGdyYWRpZW50IHByZWRpY2F0ZSBzdXBwb3J0IGFuZCB1cGRhdGUgaXNJ
bWFnZUdlbmVyYXRvclZhbHVlIGFuZCAKKyAgICAgICAgICAgIGlzR3JhZGllbnRWYWx1ZSB0byBp
bmNsdWRlIGNvbmljIGdyYWRpZW50LgorICAgICAgICAKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbjoKKyAgICAgICAgCisgICAgICAgICAgICBBZGQgY29uaWMtZ3JhZGllbnQgYW5k
IHJlcGVhdGluZy1jb25pYy1ncmFkaWVudC4KKyAgICAgICAgCisgICAgICAgICogY3NzL3BhcnNl
ci9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dDo6Q1NT
UGFyc2VyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1BhcnNlck1vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
ckNvbnRleHRIYXNoOjpoYXNoKToKKyAgICAgICAgCisgICAgICAgICAgICBBZGQgcnVudGltZSBm
bGFncyB0byBlbmFibGUgY29uaWMgZ3JhZGllbnRzLgorICAgICAgICAKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVBbmdsZU9yUGVyY2VudCk6CisgICAgICAg
IAorICAgICAgICAgICAgSGVscGVyLCBzaW1pbGFyIHRvIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQs
IGZvciBjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzLiAKKyAgICAgICAgICAgIENvcnJlc3BvbmRz
IHRvIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLTQvI3R5cGVkZWYtYW5nbGUt
cGVyY2VudGFnZQorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6Y29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyk6CisgICAgICAgIAorICAgICAgICAg
ICAgQ29udmVydCB0byB0YWtlIENTU0dyYWRpZW50VmFsdWUgYnkgcmVmZXJlbmNlLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUFu
Z3VsYXJHcmFkaWVudENvbG9yU3RvcHMpOgorICAgICAgICAKKyAgICAgICAgICAgIEhlbHBlciwg
c2ltaWxhciB0byBjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzLCBidXQgZm9yIGFuZ3VsYXIgY29s
b3Igc3RvcHMKKyAgICAgICAgICAgIHVzZWQgaW4gY29uaWMgZ3JhZGllbnRzLiBDb3JyZXNwb25k
cyB0byBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWltYWdlcy00LyN0eXBlZGVmLWFuZ3VsYXIt
Y29sb3Itc3RvcC1saXN0CisgICAgICAgICAgICBidXQgZG9lcyBub3QgeWV0IHN1cHBvcnQgZG91
YmxlIHBvc2l0aW9uIHN5bnRheC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUmFkaWFsR3Jh
ZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25z
dW1lTGluZWFyR3JhZGllbnQpOgorICAgICAgICAKKyAgICAgICAgICAgIFBhc3MgQ1NTR3JhZGll
bnRWYWx1ZSBieSByZWZlcmVuY2UuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29uaWNHcmFkaWVudCk6CisgICAgICAgIAorICAg
ICAgICAgICAgUGFyc2UgY29uaWMgZ3JhZGllbnQuCisgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lR2VuZXJhdGVkSW1hZ2UpOgorICAg
ICAgICAKKyAgICAgICAgICAgIERpc3BhdGNoIHRvIGNvbnN1bWVDb25pY0dyYWRpZW50IGZvciBy
ZXBlYXRpbmcgYW5kIG5vbi1yZXBlYXRpbmcKKyAgICAgICAgICAgIGNvbmljIGdyYWRpZW50cy4K
KyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6Omlz
R2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAKKyAgICAgICAgICAgIFB1dCBlYWNoIHZhbHVlIG9u
IGl0cyBvd24gbGluZSB0byBtYWtlIGl0IG1vcmUgcmVhZGFibGUgYW5kIGFkZCBDU1NWYWx1ZUNv
bmljR3JhZGllbnQKKyAgICAgICAgICAgIGFuZCBDU1NWYWx1ZVJlcGVhdGluZ0NvbmljR3JhZGll
bnQuCisgICAgICAgIAorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAgICAgCisg
ICAgICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIGVuYWJsZSBjb25pYyBncmFkaWVudHMuIERpc2Fi
bGVkIGJ5IGRlZmF1bHQuCisKIDIwMTctMTAtMjkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQXNzZXJ0IHRoYXQgbm8gc2NyaXB0IGlzIGV4ZWN1dGVkIGR1cmlu
ZyBzdHlsZSByZWNhbGMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5j
cHAJKHJldmlzaW9uIDIyNDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOCArOTUsMTAgQEAgc3RhdGljIGlubGluZSBS
ZWY8Q1NTR3JhZGllbnRWYWx1ZT4gY2xvbgogewogICAgIGlmIChpczxDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlPih2YWx1ZSkuY2xvbmUoKTsKLSAgICBBU1NFUlQoaXM8Q1NTUmFkaWFsR3JhZGllbnRW
YWx1ZT4odmFsdWUpKTsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUmFkaWFsR3JhZGllbnRWYWx1
ZT4odmFsdWUpLmNsb25lKCk7CisgICAgaWYgKGlzPENTU1JhZGlhbEdyYWRpZW50VmFsdWU+KHZh
bHVlKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1JhZGlhbEdyYWRpZW50VmFsdWU+KHZh
bHVlKS5jbG9uZSgpOworICAgIEFTU0VSVChpczxDU1NDb25pY0dyYWRpZW50VmFsdWU+KHZhbHVl
KSk7CisgICAgcmV0dXJuIGRvd25jYXN0PENTU0NvbmljR3JhZGllbnRWYWx1ZT4odmFsdWUpLmNs
b25lKCk7CiB9CiAKIFJlZjxDU1NHcmFkaWVudFZhbHVlPiBDU1NHcmFkaWVudFZhbHVlOjpncmFk
aWVudFdpdGhTdHlsZXNSZXNvbHZlZChjb25zdCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
KQpAQCAtNTQ0LDkgKzU0Niw3IEBAIEZsb2F0UG9pbnQgQ1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0
ZUVuZFAKIAogYm9vbCBDU1NHcmFkaWVudFZhbHVlOjppc0NhY2hlYWJsZSgpIGNvbnN0CiB7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0b3BzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGNvbnN0IENTU0dyYWRpZW50Q29sb3JTdG9wJiBzdG9wID0gbV9zdG9wc1tpXTsKLQorICAgIGZv
ciAoYXV0byYgc3RvcCA6IG1fc3RvcHMpIHsKICAgICAgICAgaWYgKHN0b3AubV9jb2xvcklzRGVy
aXZlZEZyb21FbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMjc0LDQg
KzEyNzQsODAgQEAgYm9vbCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjplcXVhbHMoY29ucwogICAg
IHJldHVybiBlcXVhbFNoYXBlICYmIGVxdWFsU2l6aW5nQmVoYXZpb3IgJiYgZXF1YWxIb3Jpem9u
dGFsQW5kVmVydGljYWxTaXplICYmIG1fc3RvcHMgPT0gb3RoZXIubV9zdG9wczsKIH0KIAorCitT
dHJpbmcgQ1NTQ29uaWNHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sKKyAg
ICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKworICAgIGlmIChtX3JlcGVhdGluZykKKyAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoInJlcGVhdGluZy1jb25pYy1ncmFkaWVudCgiKTsKKyAgICBl
bHNlCisgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjb25pYy1ncmFkaWVudCgiKTsKKwor
ICAgIGJvb2wgd3JvdGVTb21ldGhpbmcgPSBmYWxzZTsKKworICAgIGlmIChtX2FuZ2xlKSB7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJmcm9tICIpOworICAgICAgICByZXN1bHQuYXBw
ZW5kKG1fYW5nbGUtPmNzc1RleHQoKSk7CisgICAgICAgIHdyb3RlU29tZXRoaW5nID0gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAobV9maXJzdFggJiYgbV9maXJzdFkpIHsKKyAgICAgICAgaWYgKHdy
b3RlU29tZXRoaW5nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiAiKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImF0ICIpOworICAgICAgICByZXN1bHQuYXBwZW5k
KG1fZmlyc3RYLT5jc3NUZXh0KCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmQobV9maXJzdFktPmNzc1RleHQoKSk7CisgICAgICAgIHdyb3RlU29t
ZXRoaW5nID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAod3JvdGVTb21ldGhpbmcpCisgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOworCisgICAgYm9vbCB3cm90ZUZpcnN0U3RvcCA9
IGZhbHNlOworICAgIGZvciAoYXV0byYgc3RvcCA6IG1fc3RvcHMpIHsKKyAgICAgICAgaWYgKHdy
b3RlRmlyc3RTdG9wKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7Cisg
ICAgICAgIHdyb3RlRmlyc3RTdG9wID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFzdG9wLmlzTWlkcG9p
bnQpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0b3AubV9jb2xvci0+Y3NzVGV4dCgpKTsK
KyAgICAgICAgaWYgKHN0b3AubV9wb3NpdGlvbikgeworICAgICAgICAgICAgaWYgKCFzdG9wLmlz
TWlkcG9pbnQpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChzdG9wLm1fcG9zaXRpb24tPmNzc1RleHQoKSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgCisgICAgcmVzdWx0LmFwcGVuZCgnKScpOworICAgIHJldHVybiByZXN1bHQu
dG9TdHJpbmcoKTsKK30KKworUmVmPEdyYWRpZW50PiBDU1NDb25pY0dyYWRpZW50VmFsdWU6OmNy
ZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmKQoreworICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2lu
dCB7IH0sIEZsb2F0UG9pbnQgeyB9KTsKK30KKworYm9vbCBDU1NDb25pY0dyYWRpZW50VmFsdWU6
OmVxdWFscyhjb25zdCBDU1NDb25pY0dyYWRpZW50VmFsdWUmIG90aGVyKSBjb25zdAoreworICAg
IGlmIChtX3JlcGVhdGluZyAhPSBvdGhlci5tX3JlcGVhdGluZykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFjb21wYXJlQ1NTVmFsdWVQdHIobV9hbmdsZSwgb3RoZXIubV9hbmds
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgZXF1YWxYYW5kWSA9IGZhbHNl
OworICAgIGlmIChtX2ZpcnN0WCAmJiBtX2ZpcnN0WSkKKyAgICAgICAgZXF1YWxYYW5kWSA9IGNv
bXBhcmVDU1NWYWx1ZVB0cihtX2ZpcnN0WCwgb3RoZXIubV9maXJzdFgpICYmIGNvbXBhcmVDU1NW
YWx1ZVB0cihtX2ZpcnN0WSwgb3RoZXIubV9maXJzdFkpOworICAgIGVsc2UgaWYgKG1fZmlyc3RY
KQorICAgICAgICBlcXVhbFhhbmRZID0gY29tcGFyZUNTU1ZhbHVlUHRyKG1fZmlyc3RYLCBvdGhl
ci5tX2ZpcnN0WCkgJiYgIW90aGVyLm1fZmlyc3RZOworICAgIGVsc2UgaWYgKG1fZmlyc3RZKQor
ICAgICAgICBlcXVhbFhhbmRZID0gY29tcGFyZUNTU1ZhbHVlUHRyKG1fZmlyc3RZLCBvdGhlci5t
X2ZpcnN0WSkgJiYgIW90aGVyLm1fZmlyc3RYOworICAgIGVsc2UKKyAgICAgICAgZXF1YWxYYW5k
WSA9ICFvdGhlci5tX2ZpcnN0WCAmJiAhb3RoZXIubV9maXJzdFk7CisKKyAgICByZXR1cm4gZXF1
YWxYYW5kWSAmJiBtX3N0b3BzID09IG90aGVyLm1fc3RvcHM7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkocmV2aXNp
b24gMjI0MTU0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNyArNDEsOCBAQCBlbnVtIENTU0dyYWRpZW50VHlwZSB7CiAgICAg
Q1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCwKICAgICBDU1NQcmVmaXhlZFJhZGlhbEdyYWRpZW50
LAogICAgIENTU0xpbmVhckdyYWRpZW50LAotICAgIENTU1JhZGlhbEdyYWRpZW50CisgICAgQ1NT
UmFkaWFsR3JhZGllbnQsCisgICAgQ1NTQ29uaWNHcmFkaWVudAogfTsKIGVudW0gQ1NTR3JhZGll
bnRSZXBlYXQgeyBOb25SZXBlYXRpbmcsIFJlcGVhdGluZyB9OwogCkBAIC0yMjUsOCArMjI2LDQ1
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2VuZFZlcnRpY2Fs
U2l6ZTsKIH07CiAKK2NsYXNzIENTU0NvbmljR3JhZGllbnRWYWx1ZSBmaW5hbCA6IHB1YmxpYyBD
U1NHcmFkaWVudFZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPENTU0NvbmljR3JhZGll
bnRWYWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0NvbmljR3JhZGllbnRWYWx1ZShyZXBlYXQpKTsKKyAg
ICB9CisKKyAgICBSZWY8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPiBjbG9uZSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDb25pY0dyYWRpZW50VmFsdWUoKnRo
aXMpKTsKKyAgICB9CisKKyAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OworCisgICAg
dm9pZCBzZXRBbmdsZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgdmFsKSB7IG1fYW5nbGUg
PSBXVEZNb3ZlKHZhbCk7IH0KKworICAgIC8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgZm9yIGEgZ2l2
ZW4gc2l6ZS4KKyAgICBSZWY8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQm
LCBjb25zdCBGbG9hdFNpemUmKTsKKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0NvbmljR3Jh
ZGllbnRWYWx1ZSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIENTU0NvbmljR3JhZGllbnRWYWx1
ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQpCisgICAgICAgIDogQ1NTR3JhZGllbnRWYWx1ZShD
b25pY0dyYWRpZW50Q2xhc3MsIHJlcGVhdCwgQ1NTQ29uaWNHcmFkaWVudCkKKyAgICB7CisgICAg
fQorCisgICAgQ1NTQ29uaWNHcmFkaWVudFZhbHVlKGNvbnN0IENTU0NvbmljR3JhZGllbnRWYWx1
ZSYgb3RoZXIpCisgICAgICAgIDogQ1NTR3JhZGllbnRWYWx1ZShvdGhlciwgQ29uaWNHcmFkaWVu
dENsYXNzLCBvdGhlci5ncmFkaWVudFR5cGUoKSkKKyAgICAgICAgLCBtX2FuZ2xlKG90aGVyLm1f
YW5nbGUpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9h
bmdsZTsgLy8gbWF5IGJlIG51bGwuCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX1ZBTFVFKENTU0dyYWRpZW50VmFsdWUsIGlzR3JhZGll
bnRWYWx1ZSgpKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUoQ1NTTGluZWFyR3Jh
ZGllbnRWYWx1ZSwgaXNMaW5lYXJHcmFkaWVudFZhbHVlKCkpCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0NTU19WQUxVRShDU1NSYWRpYWxHcmFkaWVudFZhbHVlLCBpc1JhZGlhbEdyYWRpZW50VmFs
dWUoKSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX1ZBTFVFKENTU0NvbmljR3JhZGllbnRW
YWx1ZSwgaXNDb25pY0dyYWRpZW50VmFsdWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAJKHJldmlzaW9uIDIyNDE1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ4LDYgKzE0OCw4IEBAIFJlZlB0cjxJbWFnZT4gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6
aW0KICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0xpbmVhckdyYWRpZW50VmFsdWU+KCp0aGlz
KS5pbWFnZShyZW5kZXJlciwgc2l6ZSk7CiAgICAgY2FzZSBSYWRpYWxHcmFkaWVudENsYXNzOgog
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4oKnRoaXMpLmlt
YWdlKHJlbmRlcmVyLCBzaXplKTsKKyAgICBjYXNlIENvbmljR3JhZGllbnRDbGFzczoKKyAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PENTU0NvbmljR3JhZGllbnRWYWx1ZT4oKnRoaXMpLmltYWdlKHJl
bmRlcmVyLCBzaXplKTsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CkBAIC0xNjksNiArMTcxLDggQEAgYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVl
Ojppc0ZpeGVkU2l6ZQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTTGluZWFyR3JhZGllbnRW
YWx1ZT4oKnRoaXMpLmlzRml4ZWRTaXplKCk7CiAgICAgY2FzZSBSYWRpYWxHcmFkaWVudENsYXNz
OgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4oKnRoaXMp
LmlzRml4ZWRTaXplKCk7CisgICAgY2FzZSBDb25pY0dyYWRpZW50Q2xhc3M6CisgICAgICAgIHJl
dHVybiBkb3duY2FzdDxDU1NDb25pY0dyYWRpZW50VmFsdWU+KCp0aGlzKS5pc0ZpeGVkU2l6ZSgp
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAg
LTE4OCw2ICsxOTIsOCBAQCBGbG9hdFNpemUgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4ZWRT
CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPigqdGhpcyku
Zml4ZWRTaXplKHJlbmRlcmVyKTsKICAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xhc3M6CiAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPigqdGhpcykuZml4ZWRT
aXplKHJlbmRlcmVyKTsKKyAgICBjYXNlIENvbmljR3JhZGllbnRDbGFzczoKKyAgICAgICAgcmV0
dXJuIGRvd25jYXN0PENTU0NvbmljR3JhZGllbnRWYWx1ZT4oKnRoaXMpLmZpeGVkU2l6ZShyZW5k
ZXJlcik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQpAQCAtMjA5LDYgKzIxNSw4IEBAIGJvb2wgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aXNQZW5k
aW5nKCkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0xpbmVhckdyYWRpZW50VmFsdWU+KCp0
aGlzKS5pc1BlbmRpbmcoKTsKICAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xhc3M6CiAgICAgICAg
IHJldHVybiBkb3duY2FzdDxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPigqdGhpcykuaXNQZW5kaW5n
KCk7CisgICAgY2FzZSBDb25pY0dyYWRpZW50Q2xhc3M6CisgICAgICAgIHJldHVybiBkb3duY2Fz
dDxDU1NDb25pY0dyYWRpZW50VmFsdWU+KCp0aGlzKS5pc1BlbmRpbmcoKTsKICAgICBkZWZhdWx0
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC0yMzAsNiArMjM4LDgg
QEAgYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjprbm93blRvQmVPcAogICAgICAgICByZXR1
cm4gZG93bmNhc3Q8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4oKnRoaXMpLmtub3duVG9CZU9wYXF1
ZSgpOwogICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFzczoKICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PENTU1JhZGlhbEdyYWRpZW50VmFsdWU+KCp0aGlzKS5rbm93blRvQmVPcGFxdWUoKTsKKyAg
ICBjYXNlIENvbmljR3JhZGllbnRDbGFzczoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0Nv
bmljR3JhZGllbnRWYWx1ZT4oKnRoaXMpLmtub3duVG9CZU9wYXF1ZSgpOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTI1NCw2ICsyNjQsOSBA
QCB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmxvYWRTdWJpbWFnCiAgICAgY2FzZSBSYWRp
YWxHcmFkaWVudENsYXNzOgogICAgICAgICBkb3duY2FzdDxDU1NSYWRpYWxHcmFkaWVudFZhbHVl
PigqdGhpcykubG9hZFN1YmltYWdlcyhjYWNoZWRSZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29uaWNHcmFkaWVudENsYXNzOgorICAgICAgICBkb3du
Y2FzdDxDU1NDb25pY0dyYWRpZW50VmFsdWU+KCp0aGlzKS5sb2FkU3ViaW1hZ2VzKGNhY2hlZFJl
c291cmNlTG9hZGVyLCBvcHRpb25zKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuY3BwCShyZXZpc2lvbiAyMjQxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDggQEAgYm9vbCBDU1NWYWx1ZTo6ZXF1
YWxzKGNvbnN0IENTU1ZhbHVlJiBvdAogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1
ZXM8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4oKnRoaXMsIG90aGVyKTsKICAgICAgICAgY2FzZSBS
YWRpYWxHcmFkaWVudENsYXNzOgogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8
Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBDb25p
Y0dyYWRpZW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1ND
b25pY0dyYWRpZW50VmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGNhc2UgQ3Jvc3NmYWRl
Q2xhc3M6CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NDcm9zc2ZhZGVW
YWx1ZT4oKnRoaXMsIG90aGVyKTsKICAgICAgICAgY2FzZSBJbWFnZUNsYXNzOgpAQCAtMjU0LDYg
KzI1Niw4IEBAIFN0cmluZyBDU1NWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVy
biBkb3duY2FzdDxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgp
OwogICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFzczoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0
PENTU1JhZGlhbEdyYWRpZW50VmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CisgICAgY2Fz
ZSBDb25pY0dyYWRpZW50Q2xhc3M6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NDb25pY0dy
YWRpZW50VmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAgY2FzZSBDcm9zc2ZhZGVD
bGFzczoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0Nyb3NzZmFkZVZhbHVlPigqdGhpcyku
Y3VzdG9tQ1NTVGV4dCgpOwogICAgIGNhc2UgSW1hZ2VDbGFzczoKQEAgLTM1OSw2ICszNjMsOSBA
QCB2b2lkIENTU1ZhbHVlOjpkZXN0cm95KCkKICAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xhc3M6
CiAgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPih0aGlzKTsK
ICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ29uaWNHcmFkaWVudENsYXNzOgorICAgICAgICBk
ZWxldGUgZG93bmNhc3Q8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPih0aGlzKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgQ3Jvc3NmYWRlQ2xhc3M6CiAgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxD
U1NDcm9zc2ZhZGVWYWx1ZT4odGhpcyk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5oCShyZXZpc2lvbiAyMjQxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtODEsOCArODEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0ZvbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEZvbnRDbGFzczsgfQog
ICAgIGJvb2wgaXNGb250U3R5bGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09
IEZvbnRTdHlsZUNsYXNzOyB9CiAgICAgYm9vbCBpc0ZvbnRTdHlsZVJhbmdlVmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBGb250U3R5bGVSYW5nZUNsYXNzOyB9Ci0gICAgYm9v
bCBpc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA+PSBD
YW52YXNDbGFzcyAmJiBtX2NsYXNzVHlwZSA8PSBSYWRpYWxHcmFkaWVudENsYXNzOyB9Ci0gICAg
Ym9vbCBpc0dyYWRpZW50VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA+PSBMaW5l
YXJHcmFkaWVudENsYXNzICYmIG1fY2xhc3NUeXBlIDw9IFJhZGlhbEdyYWRpZW50Q2xhc3M7IH0K
KyAgICBib29sIGlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NU
eXBlID49IENhbnZhc0NsYXNzICYmIG1fY2xhc3NUeXBlIDw9IENvbmljR3JhZGllbnRDbGFzczsg
fQorICAgIGJvb2wgaXNHcmFkaWVudFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUg
Pj0gTGluZWFyR3JhZGllbnRDbGFzcyAmJiBtX2NsYXNzVHlwZSA8PSBDb25pY0dyYWRpZW50Q2xh
c3M7IH0KICAgICBib29sIGlzTmFtZWRJbWFnZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFz
c1R5cGUgPT0gTmFtZWRJbWFnZUNsYXNzOyB9CiAgICAgYm9vbCBpc0ltYWdlU2V0VmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBJbWFnZVNldENsYXNzOyB9CiAgICAgYm9vbCBp
c0ltYWdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBJbWFnZUNsYXNzOyB9
CkBAIC05NSw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIHRyZWF0QXNJbmhlcml0ZWRWYWx1
ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIGlzTGluZWFyR3JhZGllbnRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IExpbmVhckdyYWRpZW50Q2xhc3M7IH0KICAg
ICBib29sIGlzUmFkaWFsR3JhZGllbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBl
ID09IFJhZGlhbEdyYWRpZW50Q2xhc3M7IH0KKyAgICBib29sIGlzQ29uaWNHcmFkaWVudFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gQ29uaWNHcmFkaWVudENsYXNzOyB9CiAg
ICAgYm9vbCBpc1JlZmxlY3RWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFJl
ZmxlY3RDbGFzczsgfQogICAgIGJvb2wgaXNTaGFkb3dWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xhc3NUeXBlID09IFNoYWRvd0NsYXNzOyB9CiAgICAgYm9vbCBpc0N1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb25WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEN1YmljQmV6aWVy
VGltaW5nRnVuY3Rpb25DbGFzczsgfQpAQCAtMTQzLDYgKzE0NCw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgRmlsdGVySW1hZ2VDbGFzcywKICAgICAgICAgTGluZWFyR3JhZGllbnRDbGFzcywKICAg
ICAgICAgUmFkaWFsR3JhZGllbnRDbGFzcywKKyAgICAgICAgQ29uaWNHcmFkaWVudENsYXNzLAog
CiAgICAgICAgIC8vIFRpbWluZyBmdW5jdGlvbiBjbGFzc2VzLgogICAgICAgICBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uQ2xhc3MsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3
b3Jkcy5pbgkocmV2aXNpb24gMjI0MTU0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
S2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExNTUsOCArMTE1NSwxMCBAQCBjcm9zcy1m
YWRlCiBpbWFnZS1zZXQKIGxpbmVhci1ncmFkaWVudAogcmFkaWFsLWdyYWRpZW50Citjb25pYy1n
cmFkaWVudAogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudAogcmVwZWF0aW5nLXJhZGlhbC1ncmFk
aWVudAorcmVwZWF0aW5nLWNvbmljLWdyYWRpZW50CiAtd2Via2l0LWNhbnZhcwogLXdlYmtpdC1j
cm9zcy1mYWRlCiAtd2Via2l0LWdyYWRpZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiAyMjQxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDcgQEAgQ1NT
UGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dChEb2N1bQogI2VuZGlmCiAgICAgc3ByaW5n
VGltaW5nRnVuY3Rpb25FbmFibGVkID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5zcHJpbmdUaW1pbmdG
dW5jdGlvbkVuYWJsZWQoKTsKICAgICBjb25zdGFudFByb3BlcnRpZXNFbmFibGVkID0gZG9jdW1l
bnQuc2V0dGluZ3MoKS5jb25zdGFudFByb3BlcnRpZXNFbmFibGVkKCk7CisgICAgY29uaWNHcmFk
aWVudHNFbmFibGVkID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5jb25pY0dyYWRpZW50c0VuYWJsZWQo
KTsKICAgICBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgPSBkb2N1bWVudC5zZXR0aW5ncygpLmRl
ZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCgpOwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTA5LDYg
KzExMCw3IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQYXJzZXJDb250ZXh0JiAKICAgICAg
ICAgJiYgYS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yID09IGIudXNl
TGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcgogICAgICAgICAmJiBhLnNwcmlu
Z1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCA9PSBiLnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZAog
ICAgICAgICAmJiBhLmNvbnN0YW50UHJvcGVydGllc0VuYWJsZWQgPT0gYi5jb25zdGFudFByb3Bl
cnRpZXNFbmFibGVkCisgICAgICAgICYmIGEuY29uaWNHcmFkaWVudHNFbmFibGVkID09IGIuY29u
aWNHcmFkaWVudHNFbmFibGVkCiAgICAgICAgICYmIGEuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVk
ID09IGIuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlck1vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlck1vZGUuaAkocmV2aXNpb24gMjI0MTU0KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
NSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNo
b3J0aGFuZEJlaGF2aW9yIHsgZmFsc2UgfTsKICAgICBib29sIHNwcmluZ1RpbWluZ0Z1bmN0aW9u
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBjb25zdGFudFByb3BlcnRpZXNFbmFibGVkIHsg
ZmFsc2UgfTsKLSAgICAKKyAgICBib29sIGNvbmljR3JhZGllbnRzRW5hYmxlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgeyBmYWxzZSB9OwogCiAgICAgVVJM
IGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdApAQCAtMTM5LDggKzEzOSw5IEBA
IHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0SGFzaCB7CiAgICAgICAgICAgICAmIGtleS5lbmZvcmNl
c0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgICAgICAgICA8PCA1CiAgICAgICAgICAgICAmIGtl
eS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yICA8PCA2CiAgICAgICAg
ICAgICAmIGtleS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQgICAgICAgICAgICAgICA8PCA3
Ci0gICAgICAgICAgICAmIGtleS5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgICAgICAgICAgICAg
ICAgICA8PCA4Ci0gICAgICAgICAgICAmIGtleS5tb2RlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCA5OworICAgICAgICAgICAgJiBrZXkuY29uaWNHcmFkaWVudHNFbmFi
bGVkICAgICAgICAgICAgICAgICAgICAgPDwgOAorICAgICAgICAgICAgJiBrZXkuZGVmZXJyZWRD
U1NQYXJzZXJFbmFibGVkICAgICAgICAgICAgICAgICAgPDwgOQorICAgICAgICAgICAgJiBrZXku
bW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMTA7CiAgICAgICAg
IGhhc2ggXj0gV1RGOjppbnRIYXNoKGJpdHMpOwogICAgICAgICByZXR1cm4gaGFzaDsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwCShyZXZpc2lvbiAyMjQxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1Niw2ICszNTYsMzQgQEAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQW5nbGUo
QwogICAgIHJldHVybiBudWxscHRyOwogfQogCitzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBjb25zdW1lQW5nbGVPclBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlLCBVbml0bGVz
c1F1aXJrIHVuaXRsZXNzKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJh
bmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuKSB7Cisg
ICAgICAgIHN3aXRjaCAodG9rZW4udW5pdFR5cGUoKSkgeworICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6Q1NTX0RFRzoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGU6OkNTU19SQUQ6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlOjpDU1NfR1JBRDoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OkNTU19UVVJOOgorICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlVmFsdWUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1l
cmljVmFsdWUoKSwgdG9rZW4udW5pdFR5cGUoKSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAodG9rZW4udHlw
ZSgpID09IE51bWJlclRva2VuICYmIHNob3VsZEFjY2VwdFVuaXRsZXNzVmFsdWUodG9rZW4ubnVt
ZXJpY1ZhbHVlKCksIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKSkKKyAgICAgICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUocmFuZ2UuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
OjpDU1NfREVHKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IFBlcmNlbnRhZ2VUb2tlbikKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVQZXJjZW50KHJhbmdlLCB2YWx1ZVJhbmdlKTsKKworICAgIENh
bGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY0FuZ2xlLCB2YWx1ZVJhbmdlKTsKKyAgICBp
ZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkg
eworICAgICAgICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgPT0gQ2FsY0FuZ2xlKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZVZhbHVlKCk7CisgICAgfQorICAgIHJl
dHVybiBudWxscHRyOworfQorCisKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVRp
bWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQogewogICAg
IGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKQEAgLTkwNCw5ICs5
MzIsOSBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lRGVwcmVjYXRlCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGJvb2wgY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBD
U1NHcmFkaWVudFZhbHVlKiBncmFkaWVudCkKK3N0YXRpYyBib29sIGNvbnN1bWVHcmFkaWVudENv
bG9yU3RvcHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSwgQ1NTR3JhZGllbnRWYWx1ZSYgZ3JhZGllbnQpCiB7Ci0gICAgYm9vbCBzdXBwb3J0
c0NvbG9ySGludHMgPSBncmFkaWVudC0+Z3JhZGllbnRUeXBlKCkgPT0gQ1NTTGluZWFyR3JhZGll
bnQgfHwgZ3JhZGllbnQtPmdyYWRpZW50VHlwZSgpID09IENTU1JhZGlhbEdyYWRpZW50OworICAg
IGJvb2wgc3VwcG9ydHNDb2xvckhpbnRzID0gZ3JhZGllbnQuZ3JhZGllbnRUeXBlKCkgPT0gQ1NT
TGluZWFyR3JhZGllbnQgfHwgZ3JhZGllbnQuZ3JhZGllbnRUeXBlKCkgPT0gQ1NTUmFkaWFsR3Jh
ZGllbnQ7CiAKICAgICAvLyBUaGUgZmlyc3QgY29sb3Igc3RvcCBjYW5ub3QgYmUgYSBjb2xvciBo
aW50LgogICAgIGJvb2wgcHJldmlvdXNTdG9wV2FzQ29sb3JIaW50ID0gdHJ1ZTsKQEAgLTkyNSw3
ICs5NTMsNDAgQEAgc3RhdGljIGJvb2wgY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhDUwogICAg
ICAgICBzdG9wLm1fcG9zaXRpb24gPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKICAgICAgICAgaWYgKCFzdG9wLm1fY29sb3IgJiYg
IXN0b3AubV9wb3NpdGlvbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZ3Jh
ZGllbnQtPmFkZFN0b3Aoc3RvcCk7CisgICAgICAgIGdyYWRpZW50LmFkZFN0b3Aoc3RvcCk7Cisg
ICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworCisg
ICAgLy8gVGhlIGxhc3QgY29sb3Igc3RvcCBjYW5ub3QgYmUgYSBjb2xvciBoaW50LgorICAgIGlm
IChwcmV2aW91c1N0b3BXYXNDb2xvckhpbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIE11c3QgaGF2ZSAyIG9yIG1vcmUgc3RvcHMgdG8gYmUgdmFsaWQuCisgICAgcmV0dXJuIGdy
YWRpZW50LnN0b3BDb3VudCgpID49IDI7Cit9CisKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9j
c3MtaW1hZ2VzLTQvI3R5cGVkZWYtYW5ndWxhci1jb2xvci1zdG9wLWxpc3QKKy8vIEZJWE1FOiBU
aGlzIHNob3VsZCBzdXBwb3J0IHVwIHRvIHR3byBwb3NpdGlvbiBoaW50cyBwZXIgY29sb3Igc3Rv
cC4KK3N0YXRpYyBib29sIGNvbnN1bWVBbmd1bGFyR3JhZGllbnRDb2xvclN0b3BzKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRp
ZW50VmFsdWUmIGdyYWRpZW50KQoreworICAgIC8vIFRoZSBmaXJzdCBjb2xvciBzdG9wIGNhbm5v
dCBiZSBhIGNvbG9yIGhpbnQuCisgICAgYm9vbCBwcmV2aW91c1N0b3BXYXNDb2xvckhpbnQgPSB0
cnVlOworICAgIGRvIHsKKyAgICAgICAgQ1NTR3JhZGllbnRDb2xvclN0b3Agc3RvcDsKKyAgICAg
ICAgc3RvcC5tX2NvbG9yID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKwor
ICAgICAgICAvLyBUd28gaGludHMgaW4gYSByb3cgYXJlIG5vdCBhbGxvd2VkLgorICAgICAgICBp
ZiAoIXN0b3AubV9jb2xvciAmJiBwcmV2aW91c1N0b3BXYXNDb2xvckhpbnQpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBwcmV2aW91c1N0b3BXYXNDb2xvckhp
bnQgPSAhc3RvcC5tX2NvbG9yOworICAgICAgICAKKyAgICAgICAgLy8gRklYTUUtTkVXUEFSU0VS
OiBUaGlzIGJvb2xlYW4gY291bGQgYmUgcmVtb3ZlZC4gTnVsbCBjaGVja2luZyBjb2xvciB3b3Vs
ZCBiZSBzdWZmaWNpZW50LgorICAgICAgICBzdG9wLmlzTWlkcG9pbnQgPSAhc3RvcC5tX2NvbG9y
OworCisgICAgICAgIHN0b3AubV9wb3NpdGlvbiA9IGNvbnN1bWVBbmdsZU9yUGVyY2VudChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsK
KyAgICAgICAgaWYgKCFzdG9wLm1fY29sb3IgJiYgIXN0b3AubV9wb3NpdGlvbikKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZ3JhZGllbnQuYWRkU3RvcChzdG9wKTsKICAgICB9
IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CiAKICAgICAv
LyBUaGUgbGFzdCBjb2xvciBzdG9wIGNhbm5vdCBiZSBhIGNvbG9yIGhpbnQuCkBAIC05MzMsNyAr
OTk0LDcgQEAgc3RhdGljIGJvb2wgY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhDUwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBNdXN0IGhhdmUgMiBvciBtb3JlIHN0b3BzIHRvIGJl
IHZhbGlkLgotICAgIHJldHVybiBncmFkaWVudC0+c3RvcENvdW50KCkgPj0gMjsKKyAgICByZXR1
cm4gZ3JhZGllbnQuc3RvcENvdW50KCkgPj0gMjsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVh
dGluZykKQEAgLTk3Miw3ICsxMDMzLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3Vt
ZURlcHJlY2F0ZQogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnN1bWVDb21tYUluY2x1ZGluZ1do
aXRlc3BhY2UoYXJncyk7CiAgICAgfQotICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JTdG9w
cyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQuZ2V0KCkpKQorICAgIGlmICghY29uc3VtZUdy
YWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCAqcmVzdWx0KSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTA1OSw3ICsxMTIwLDcg
QEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJhZGlhbEdyYQogCiAgICAgaWYgKChz
aGFwZSB8fCBzaXplS2V5d29yZCB8fCBob3Jpem9udGFsU2l6ZSB8fCBjZW50ZXJYIHx8IGNlbnRl
clkpICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywg
Y3NzUGFyc2VyTW9kZSwgcmVzdWx0LmdldCgpKSkKKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENv
bG9yU3RvcHMoYXJncywgY3NzUGFyc2VyTW9kZSwgKnJlc3VsdCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMDkyLDcgKzExNTMsNDkgQEAgc3Rh
dGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUxpbmVhckdyYQogCiAgICAgaWYgKGV4cGVjdENv
bW1hICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywg
Y3NzUGFyc2VyTW9kZSwgcmVzdWx0LmdldCgpKSkKKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENv
bG9yU3RvcHMoYXJncywgY3NzUGFyc2VyTW9kZSwgKnJlc3VsdCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVDb25pY0dyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNl
ckNvbnRleHQgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQoreworICAgIGlm
ICghY29udGV4dC5jb25pY0dyYWRpZW50c0VuYWJsZWQpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgUmVmUHRyPENTU0NvbmljR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTQ29uaWNH
cmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nKTsKKworICAgIGJvb2wgZXhwZWN0Q29tbWEg
PSBmYWxzZTsKKyAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pIHsKKyAg
ICAgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZUZyb20+KGFyZ3MpKSB7CisgICAgICAgICAg
ICBhdXRvIGFuZ2xlID0gY29uc3VtZUFuZ2xlKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NR
dWlyazo6Rm9yYmlkKTsKKyAgICAgICAgICAgIGlmICghYW5nbGUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXN1bHQtPnNldEFuZ2xlKGFuZ2xlLnJlbGVh
c2VOb25OdWxsKCkpOworICAgICAgICAgICAgZXhwZWN0Q29tbWEgPSB0cnVlOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlQXQ+KGFyZ3MpKSB7
CisgICAgICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRlclg7CisgICAgICAg
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRlclk7CisgICAgICAgICAgICBjb25z
dW1lUG9zaXRpb24oYXJncywgY29udGV4dC5tb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIGNl
bnRlclgsIGNlbnRlclkpOworICAgICAgICAgICAgaWYgKCEoY2VudGVyWCAmJiBjZW50ZXJZKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgcmVzdWx0LT5zZXRGaXJzdFgoY2VudGVyWC5jb3B5UmVmKCkpOworICAgICAgICAgICAgcmVz
dWx0LT5zZXRGaXJzdFkoY2VudGVyWS5jb3B5UmVmKCkpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICAvLyBSaWdodCBub3csIGNvbmljIGdyYWRpZW50cyBoYXZlIHRoZSBzYW1lIHN0YXJ0IGFu
ZCBlbmQgY2VudGVycy4KKyAgICAgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25kWChjZW50ZXJYLmNv
cHlSZWYoKSk7CisgICAgICAgICAgICByZXN1bHQtPnNldFNlY29uZFkoY2VudGVyWS5jb3B5UmVm
KCkpOworICAgIAorICAgICAgICAgICAgZXhwZWN0Q29tbWEgPSB0cnVlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKGV4cGVjdENvbW1hICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0
ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWNvbnN1bWVB
bmd1bGFyR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNvbnRleHQubW9kZSwgKnJlc3VsdCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMTg2LDYg
KzEyODksMTAgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUdlbmVyYXRlZAogICAg
ICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRl
eHQubW9kZSwgTm9uUmVwZWF0aW5nKTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtp
dFJlcGVhdGluZ1JhZGlhbEdyYWRpZW50KQogICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVj
YXRlZFJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgUmVwZWF0aW5nKTsKKyAgICBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZUNvbmljR3JhZGllbnQpCisgICAgICAgIHJlc3VsdCA9IGNv
bnN1bWVDb25pY0dyYWRpZW50KGFyZ3MsIGNvbnRleHQsIE5vblJlcGVhdGluZyk7CisgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdDb25pY0dyYWRpZW50KQorICAgICAgICByZXN1
bHQgPSBjb25zdW1lQ29uaWNHcmFkaWVudChhcmdzLCBjb250ZXh0LCBSZXBlYXRpbmcpOwogICAg
IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0Q3Jvc3NGYWRlIHx8IGlkID09IENTU1ZhbHVl
Q3Jvc3NGYWRlKQogICAgICAgICByZXN1bHQgPSBjb25zdW1lQ3Jvc3NGYWRlKGFyZ3MsIGNvbnRl
eHQsIGlkID09IENTU1ZhbHVlV2Via2l0Q3Jvc3NGYWRlKTsKICAgICBlbHNlIGlmIChpZCA9PSBD
U1NWYWx1ZVdlYmtpdENhbnZhcykKQEAgLTEyMzIsMTIgKzEzMzksMjMgQEAgc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gY29uc3VtZUltYWdlU2V0KAogCiBzdGF0aWMgYm9vbCBpc0dlbmVyYXRlZElt
YWdlKENTU1ZhbHVlSUQgaWQpCiB7Ci0gICAgcmV0dXJuIGlkID09IENTU1ZhbHVlTGluZWFyR3Jh
ZGllbnQgfHwgaWQgPT0gQ1NTVmFsdWVSYWRpYWxHcmFkaWVudAotICAgICAgICB8fCBpZCA9PSBD
U1NWYWx1ZVJlcGVhdGluZ0xpbmVhckdyYWRpZW50IHx8IGlkID09IENTU1ZhbHVlUmVwZWF0aW5n
UmFkaWFsR3JhZGllbnQKLSAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRMaW5lYXJHcmFk
aWVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFJhZGlhbEdyYWRpZW50Ci0gICAgICAgIHx8IGlk
ID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nTGluZWFyR3JhZGllbnQgfHwgaWQgPT0gQ1NTVmFs
dWVXZWJraXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudAotICAgICAgICB8fCBpZCA9PSBDU1NWYWx1
ZVdlYmtpdEdyYWRpZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0Q3Jvc3NGYWRlIHx8IGlkID09
IENTU1ZhbHVlV2Via2l0Q2FudmFzCi0gICAgICAgIHx8IGlkID09IENTU1ZhbHVlQ3Jvc3NGYWRl
IHx8IGlkID09IENTU1ZhbHVlV2Via2l0TmFtZWRJbWFnZSB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtp
dEZpbHRlciB8fCBpZCA9PSBDU1NWYWx1ZUZpbHRlcjsKKyAgICByZXR1cm4gaWQgPT0gQ1NTVmFs
dWVMaW5lYXJHcmFkaWVudAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVJhZGlhbEdyYWRpZW50
CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlQ29uaWNHcmFkaWVudAorICAgICAgICB8fCBpZCA9
PSBDU1NWYWx1ZVJlcGVhdGluZ0xpbmVhckdyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1Zh
bHVlUmVwZWF0aW5nUmFkaWFsR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVSZXBl
YXRpbmdDb25pY0dyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0TGluZWFy
R3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRSYWRpYWxHcmFkaWVudAor
ICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFJlcGVhdGluZ0xpbmVhckdyYWRpZW50Cisg
ICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nUmFkaWFsR3JhZGllbnQKKyAg
ICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRHcmFkaWVudAorICAgICAgICB8fCBpZCA9PSBD
U1NWYWx1ZVdlYmtpdENyb3NzRmFkZQorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdENh
bnZhcworICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUNyb3NzRmFkZQorICAgICAgICB8fCBpZCA9
PSBDU1NWYWx1ZVdlYmtpdE5hbWVkSW1hZ2UKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJr
aXRGaWx0ZXIKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVGaWx0ZXI7CiB9CiAgICAgCiBzdGF0
aWMgYm9vbCBpc1ZhbGlkUHJpbWl0aXZlRmlsdGVyRnVuY3Rpb24oQ1NTVmFsdWVJRCBmaWx0ZXJG
dW5jdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwJKHJldmlzaW9uIDIyNDE1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkod29ya2luZyBjb3B5KQpA
QCAtNTA5LDYgKzUwOSw4IEBAIHNob3VsZENvbnZlcnRJbnZhbGlkVVJMc1RvQmxhbms6CiAKIHNw
cmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKK2NvbmljR3JhZGll
bnRzRW5hYmxlZDoKKyAgaW5pdGlhbDogZmFsc2UKIAogdHJlYXRJUEFkZHJlc3NBc0RvbWFpbjoK
ICAgaW5pdGlhbDogZmFsc2UKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDE1NCkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTEwLTI5
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbmljIEdyYWRpZW50
c10gQWRkIHN1cHBvcnQgZm9yIHBhcnNpbmcgY29uaWMgZ3JhZGllbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg5ODcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZ3JhZGllbnRzL2Nvbmlj
LWdyYWRpZW50LXBhcnNpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2dy
YWRpZW50cy9jb25pYy1ncmFkaWVudC1wYXJzaW5nLmh0bWw6IEFkZGVkLgorCisgICAgICAgICAg
ICBBZGQgdGVzdHMgZm9yIGJhc2ljIHBhcnNpbmcgb2YgY29uaWMgZ3JhZGllbnRzLgorCiAyMDE3
LTEwLTI4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgc2VsZi5F
eHRlbmRhYmxlRXZlbnQgLyBDbGllbnQgLyBDbGllbnRzIC8gV2luZG93Q2xpZW50IGRvIG5vdCBl
eGlzdCBpbiBhIFNlcnZpY2UgV29ya2VyCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50
cy9jb25pYy1ncmFkaWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFk
aWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAK
KworUEFTUyBUZXN0IGNvbmljLWdyYWRpZW50IHBhcnNpbmcgCitQQVNTIFRlc3QgcmVwZWF0aW5n
LWNvbmljLWdyYWRpZW50IHBhcnNpbmcgCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZ3JhZGll
bnRzL2NvbmljLWdyYWRpZW50LXBhcnNpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1wYXJzaW5nLmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtcGFyc2luZy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRDb25pY0dyYWRpZW50c0VuYWJs
ZWQodHJ1ZSk7CisKK2Z1bmN0aW9uIHJvdW5kVHJpcChjc3MpCit7CisgICAgdmFyIGRpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ3N0eWxl
JywgY3NzKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIg
cmVzdWx0ID0gZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLmJhY2tncm91bmRJbWFnZTsKKyAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVu
Y3Rpb24gdGVzdEdyYWRpZW50KGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGV4cGVjdGVk
ID09PSB1bmRlZmluZWQpCisgICAgICAgIGV4cGVjdGVkID0gYWN0dWFsOworCisgICAgYXNzZXJ0
X2VxdWFscyhyb3VuZFRyaXAoImJhY2tncm91bmQtaW1hZ2U6IiArIGFjdHVhbCksIGV4cGVjdGVk
LCAiVGVzdGluZyByb3VuZCB0cmlwIG9mICIgKyBhY3R1YWwpOyAgICAgICAgCit9CisKKy8vIEZJ
WE1FIFRlc3QgaW52YWxpZCBwYXJhbWV0ZXJzLgorLy8gRklYTUUgVGVzdCBkb3VibGUgcG9zaXRp
b24gc3ludGF4IGZvciBjb2xvciBzdG9wcy4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB0ZXN0
R3JhZGllbnQoImNvbmljLWdyYWRpZW50KHJlZCwgZ29sZCkiKQorICAgIHRlc3RHcmFkaWVudCgi
Y29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnLCByZWQsIGdvbGQpIikKKyAgICB0ZXN0R3JhZGllbnQo
ImNvbmljLWdyYWRpZW50KGF0IGNlbnRlciwgcmVkLCBnb2xkKSIsICJjb25pYy1ncmFkaWVudChh
dCBjZW50ZXIgY2VudGVyLCByZWQsIGdvbGQpIikKKyAgICB0ZXN0R3JhZGllbnQoImNvbmljLWdy
YWRpZW50KGF0IDI1JSA3NSUsIHJlZCwgZ29sZCkiKQorICAgIHRlc3RHcmFkaWVudCgiY29uaWMt
Z3JhZGllbnQoZnJvbSAwZGVnIGF0IDUwJSA1MCUsIHJlZCwgZ29sZCkiKQorICAgIHRlc3RHcmFk
aWVudCgiY29uaWMtZ3JhZGllbnQocmVkIDAlLCBnb2xkIDEwMCUpIikKKyAgICB0ZXN0R3JhZGll
bnQoImNvbmljLWdyYWRpZW50KHJlZCAwZGVnLCBnb2xkIDF0dXJuKSIpOworICAgIHRlc3RHcmFk
aWVudCgiY29uaWMtZ3JhZGllbnQod2hpdGUgLTUwJSwgYmxhY2sgMTUwJSkiKTsKKyAgICB0ZXN0
R3JhZGllbnQoImNvbmljLWdyYWRpZW50KHdoaXRlIC0xODBkZWcsIGJsYWNrIDU0MGRlZykiKTsK
KyAgICB0ZXN0R3JhZGllbnQoImNvbmljLWdyYWRpZW50KGhzbCgwLDAlLDc1JSksIGhzbCgwLDAl
LDI1JSkpIiwgImNvbmljLWdyYWRpZW50KHJnYigxOTEsIDE5MSwgMTkxKSwgcmdiKDYzLCA2Mywg
NjMpKSIpOworICAgIHRlc3RHcmFkaWVudCgiY29uaWMtZ3JhZGllbnQoZnJvbSA0NWRlZywgd2hp
dGUsIGJsYWNrLCB3aGl0ZSkiKTsKKyAgICB0ZXN0R3JhZGllbnQoImNvbmljLWdyYWRpZW50KGhz
bCgwLDAlLDg3LjUlKSwgd2hpdGUgNDVkZWcsIGJsYWNrIDIyNWRlZywgaHNsKDAsMCUsODcuNSUp
KSIsICJjb25pYy1ncmFkaWVudChyZ2IoMjIzLCAyMjMsIDIyMyksIHdoaXRlIDQ1ZGVnLCBibGFj
ayAyMjVkZWcsIHJnYigyMjMsIDIyMywgMjIzKSkiKTsKKworICAgIHZhciBzID0gImNvbmljLWdy
YWRpZW50KCI7CisgICAgZm9yKHZhciB4ID0gMDsgeCA8IDUwMDsgeCsrKQorICAgICAgICBzICs9
ICJ3aGl0ZSAiICsgKHgvNTAwKSArICIlLCAiICsgKCgyICogeCArIDEpIC8gMTAwMCkgKyAiJSwg
IjsKKyAgICBzICs9ICJibGFjaykiOworICAgIHRlc3RHcmFkaWVudChzKTsKK30sICJUZXN0IGNv
bmljLWdyYWRpZW50IHBhcnNpbmciKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB0ZXN0R3Jh
ZGllbnQoInJlcGVhdGluZy1jb25pYy1ncmFkaWVudChyZWQsIGdvbGQpIik7CisgICAgdGVzdEdy
YWRpZW50KCJyZXBlYXRpbmctY29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnIGF0IGNlbnRlciwgcmVk
LCBnb2xkKSIsICJyZXBlYXRpbmctY29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnIGF0IGNlbnRlciBj
ZW50ZXIsIHJlZCwgZ29sZCkiKTsKK30sICJUZXN0IHJlcGVhdGluZy1jb25pYy1ncmFkaWVudCBw
YXJzaW5nIik7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325286</attachid>
            <date>2017-10-29 09:00:45 -0700</date>
            <delta_ts>2017-10-29 14:38:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178987-20171029090044.patch</filename>
            <type>text/plain</type>
            <size>33217</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxNy0xMC0yOSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtDb25pYyBHcmFkaWVudHNdIEFkZCBz
dXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4OTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBpbml0aWFsIHN1cHBvcnQsIGRpc2FibGVk
IGJ5IGRlZmF1bHQsIGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cyBhcyBwZXIKKyAgICAgICAg
Q1NTIDQgSW1hZ2VzIC0gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1pbWFnZXMtNC8jY29uaWMt
Z3JhZGllbnRzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50
LXBhcnNpbmcuaHRtbAorCisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1
ZTo6aXNDYWNoZWFibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29uaWNHcmFkaWVu
dFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nvbmlj
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29u
aWNHcmFkaWVudFZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVu
dFZhbHVlLmg6CisgICAgICAgIAorICAgICAgICAgICAgQWRkIENTU0NvbmljR3JhZGllbnRWYWx1
ZSBhcyBhIHN1YmNsYXNzIG9mIENTU0dyYWRpZW50VmFsdWUgYW5kIGltcGxlbWVudAorICAgICAg
ICAgICAgY3VzdG9tQ1NTVGV4dCgpIGFuZCBlcXVhbHMoKS4gU3R1YiBvdXQgY3JlYXRlR3JhZGll
bnQoKSBhcyBwYWludGluZyBpcyBub3QKKyAgICAgICAgICAgIHlldCBpbXBsZW1lbnRlZC4KKyAg
ICAgICAgCisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aXNGaXhlZFNpemUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4ZWRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmlzUGVuZGluZyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjprbm93blRvQmVPcGFxdWUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6bG9hZFN1Ymlt
YWdlcyk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1Rl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAg
ICAKKyAgICAgICAgICAgIERpc3BhdGNoIHRvIENTU0NvbmljR3JhZGllbnRWYWx1ZSBhcyBuZWVk
ZWQuCisgICAgICAgIAorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWU6OmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NWYWx1ZTo6aXNHcmFkaWVudFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ZhbHVlOjppc0NvbmljR3JhZGllbnRWYWx1ZSBjb25zdCk6CisgICAgICAgIAorICAgICAg
ICAgICAgQWRkIGNvbmljIGdyYWRpZW50IHByZWRpY2F0ZSBzdXBwb3J0IGFuZCB1cGRhdGUgaXNJ
bWFnZUdlbmVyYXRvclZhbHVlIGFuZCAKKyAgICAgICAgICAgIGlzR3JhZGllbnRWYWx1ZSB0byBp
bmNsdWRlIGNvbmljIGdyYWRpZW50LgorICAgICAgICAKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbjoKKyAgICAgICAgCisgICAgICAgICAgICBBZGQgY29uaWMtZ3JhZGllbnQgYW5k
IHJlcGVhdGluZy1jb25pYy1ncmFkaWVudC4KKyAgICAgICAgCisgICAgICAgICogY3NzL3BhcnNl
ci9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dDo6Q1NT
UGFyc2VyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1BhcnNlck1vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
ckNvbnRleHRIYXNoOjpoYXNoKToKKyAgICAgICAgCisgICAgICAgICAgICBBZGQgcnVudGltZSBm
bGFncyB0byBlbmFibGUgY29uaWMgZ3JhZGllbnRzLgorICAgICAgICAKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVBbmdsZU9yUGVyY2VudCk6CisgICAgICAg
IAorICAgICAgICAgICAgSGVscGVyLCBzaW1pbGFyIHRvIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQs
IGZvciBjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzLiAKKyAgICAgICAgICAgIENvcnJlc3BvbmRz
IHRvIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLTQvI3R5cGVkZWYtYW5nbGUt
cGVyY2VudGFnZQorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6Y29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyk6CisgICAgICAgIAorICAgICAgICAg
ICAgQ29udmVydCB0byB0YWtlIENTU0dyYWRpZW50VmFsdWUgYnkgcmVmZXJlbmNlLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUFu
Z3VsYXJHcmFkaWVudENvbG9yU3RvcHMpOgorICAgICAgICAKKyAgICAgICAgICAgIEhlbHBlciwg
c2ltaWxhciB0byBjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzLCBidXQgZm9yIGFuZ3VsYXIgY29s
b3Igc3RvcHMKKyAgICAgICAgICAgIHVzZWQgaW4gY29uaWMgZ3JhZGllbnRzLiBDb3JyZXNwb25k
cyB0byBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWltYWdlcy00LyN0eXBlZGVmLWFuZ3VsYXIt
Y29sb3Itc3RvcC1saXN0CisgICAgICAgICAgICBidXQgZG9lcyBub3QgeWV0IHN1cHBvcnQgZG91
YmxlIHBvc2l0aW9uIHN5bnRheC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUmFkaWFsR3Jh
ZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25z
dW1lTGluZWFyR3JhZGllbnQpOgorICAgICAgICAKKyAgICAgICAgICAgIFBhc3MgQ1NTR3JhZGll
bnRWYWx1ZSBieSByZWZlcmVuY2UuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29uaWNHcmFkaWVudCk6CisgICAgICAgIAorICAg
ICAgICAgICAgUGFyc2UgY29uaWMgZ3JhZGllbnQuCisgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lR2VuZXJhdGVkSW1hZ2UpOgorICAg
ICAgICAKKyAgICAgICAgICAgIERpc3BhdGNoIHRvIGNvbnN1bWVDb25pY0dyYWRpZW50IGZvciBy
ZXBlYXRpbmcgYW5kIG5vbi1yZXBlYXRpbmcKKyAgICAgICAgICAgIGNvbmljIGdyYWRpZW50cy4K
KyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6Omlz
R2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAKKyAgICAgICAgICAgIFB1dCBlYWNoIHZhbHVlIG9u
IGl0cyBvd24gbGluZSB0byBtYWtlIGl0IG1vcmUgcmVhZGFibGUgYW5kIGFkZCBDU1NWYWx1ZUNv
bmljR3JhZGllbnQKKyAgICAgICAgICAgIGFuZCBDU1NWYWx1ZVJlcGVhdGluZ0NvbmljR3JhZGll
bnQuCisgICAgICAgIAorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAgICAgCisg
ICAgICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIGVuYWJsZSBjb25pYyBncmFkaWVudHMuIERpc2Fi
bGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBmZWF0dXJlcy5qc29uOgorICAgICAgICAKKyAg
ICAgICAgICAgIE1vdmUgY29uaWMgZ3JhZGllbnRzIHRvICJJbiBEZXZlbG9wbWVudCIuCisKIDIw
MTctMTAtMjkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQXNz
ZXJ0IHRoYXQgbm8gc2NyaXB0IGlzIGV4ZWN1dGVkIGR1cmluZyBzdHlsZSByZWNhbGMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2ZlYXR1cmVzLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZmVhdHVyZXMuanNvbgkocmV2aXNpb24gMjI0MTU0KQorKysgU291cmNlL1dlYkNvcmUvZmVh
dHVyZXMuanNvbgkod29ya2luZyBjb3B5KQpAQCAtNzgyLDcgKzc4Miw3IEBACiAgICAgewogICAg
ICAgICAibmFtZSI6ICJDb25pYyBHcmFkaWVudHMiLAogICAgICAgICAic3RhdHVzIjogewotICAg
ICAgICAgICAgInN0YXR1cyI6ICJVbmRlciBDb25zaWRlcmF0aW9uIgorICAgICAgICAgICAgInN0
YXR1cyI6ICJJbiBEZXZlbG9wbWVudCIKICAgICAgICAgfSwKICAgICAgICAgInVybCI6ICJodHRw
czovL3d3dy53My5vcmcvVFIvY3NzNC1pbWFnZXMvI2NvbmljLWdyYWRpZW50cyIsCiAgICAgICAg
ICJzcGVjaWZpY2F0aW9uIjogIkNTUyBJbWFnZSBWYWx1ZXMgYW5kIFJlcGxhY2VkIENvbnRlbnQg
TW9kdWxlIExldmVsIDQiLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmNwcAkocmV2aXNpb24gMjI0MTU0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5NSwxMCBAQCBzdGF0aWMgaW5saW5l
IFJlZjxDU1NHcmFkaWVudFZhbHVlPiBjbG9uCiB7CiAgICAgaWYgKGlzPENTU0xpbmVhckdyYWRp
ZW50VmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0xpbmVhckdyYWRp
ZW50VmFsdWU+KHZhbHVlKS5jbG9uZSgpOwotICAgIEFTU0VSVChpczxDU1NSYWRpYWxHcmFkaWVu
dFZhbHVlPih2YWx1ZSkpOwotICAgIHJldHVybiBkb3duY2FzdDxDU1NSYWRpYWxHcmFkaWVudFZh
bHVlPih2YWx1ZSkuY2xvbmUoKTsKKyAgICBpZiAoaXM8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4o
dmFsdWUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4o
dmFsdWUpLmNsb25lKCk7CisgICAgQVNTRVJUKGlzPENTU0NvbmljR3JhZGllbnRWYWx1ZT4odmFs
dWUpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPih2YWx1ZSku
Y2xvbmUoKTsKIH0KIAogUmVmPENTU0dyYWRpZW50VmFsdWU+IENTU0dyYWRpZW50VmFsdWU6Omdy
YWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKGNvbnN0IFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIpCkBAIC01NDQsOSArNTQ2LDcgQEAgRmxvYXRQb2ludCBDU1NHcmFkaWVudFZhbHVlOjpjb21w
dXRlRW5kUAogCiBib29sIENTU0dyYWRpZW50VmFsdWU6OmlzQ2FjaGVhYmxlKCkgY29uc3QKIHsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RvcHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIHN0b3AgPSBtX3N0b3BzW2ldOwotCisgICAg
Zm9yIChhdXRvJiBzdG9wIDogbV9zdG9wcykgewogICAgICAgICBpZiAoc3RvcC5tX2NvbG9ySXNE
ZXJpdmVkRnJvbUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEyNzQs
NCArMTI3NCw4MCBAQCBib29sIENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmVxdWFscyhjb25zCiAg
ICAgcmV0dXJuIGVxdWFsU2hhcGUgJiYgZXF1YWxTaXppbmdCZWhhdmlvciAmJiBlcXVhbEhvcml6
b250YWxBbmRWZXJ0aWNhbFNpemUgJiYgbV9zdG9wcyA9PSBvdGhlci5tX3N0b3BzOwogfQogCisK
K1N0cmluZyBDU1NDb25pY0dyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAorewor
ICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworCisgICAgaWYgKG1fcmVwZWF0aW5nKQorICAgICAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KCIpOworICAg
IGVsc2UKKyAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImNvbmljLWdyYWRpZW50KCIpOwor
CisgICAgYm9vbCB3cm90ZVNvbWV0aGluZyA9IGZhbHNlOworCisgICAgaWYgKG1fYW5nbGUpIHsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImZyb20gIik7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQobV9hbmdsZS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgd3JvdGVTb21ldGhpbmcgPSB0cnVl
OworICAgIH0KKworICAgIGlmIChtX2ZpcnN0WCAmJiBtX2ZpcnN0WSkgeworICAgICAgICBpZiAo
d3JvdGVTb21ldGhpbmcpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiICIpOwor
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiYXQgIik7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQobV9maXJzdFgtPmNzc1RleHQoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChtX2ZpcnN0WS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgd3JvdGVT
b21ldGhpbmcgPSB0cnVlOworICAgIH0KKworICAgIGlmICh3cm90ZVNvbWV0aGluZykKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisKKyAgICBib29sIHdyb3RlRmlyc3RTdG9w
ID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBzdG9wIDogbV9zdG9wcykgeworICAgICAgICBpZiAo
d3JvdGVGaXJzdFN0b3ApCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsK
KyAgICAgICAgd3JvdGVGaXJzdFN0b3AgPSB0cnVlOworICAgICAgICBpZiAoIXN0b3AuaXNNaWRw
b2ludCkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RvcC5tX2NvbG9yLT5jc3NUZXh0KCkp
OworICAgICAgICBpZiAoc3RvcC5tX3Bvc2l0aW9uKSB7CisgICAgICAgICAgICBpZiAoIXN0b3Au
aXNNaWRwb2ludCkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKHN0b3AubV9wb3NpdGlvbi0+Y3NzVGV4dCgpKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICByZXN1bHQuYXBwZW5kKCcpJyk7CisgICAgcmV0dXJuIHJlc3Vs
dC50b1N0cmluZygpOworfQorCitSZWY8R3JhZGllbnQ+IENTU0NvbmljR3JhZGllbnRWYWx1ZTo6
Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpCit7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBv
aW50IHsgfSwgRmxvYXRQb2ludCB7IH0pOworfQorCitib29sIENTU0NvbmljR3JhZGllbnRWYWx1
ZTo6ZXF1YWxzKGNvbnN0IENTU0NvbmljR3JhZGllbnRWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fcmVwZWF0aW5nICE9IG90aGVyLm1fcmVwZWF0aW5nKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWNvbXBhcmVDU1NWYWx1ZVB0cihtX2FuZ2xlLCBvdGhlci5tX2Fu
Z2xlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBlcXVhbFhhbmRZID0gZmFs
c2U7CisgICAgaWYgKG1fZmlyc3RYICYmIG1fZmlyc3RZKQorICAgICAgICBlcXVhbFhhbmRZID0g
Y29tcGFyZUNTU1ZhbHVlUHRyKG1fZmlyc3RYLCBvdGhlci5tX2ZpcnN0WCkgJiYgY29tcGFyZUNT
U1ZhbHVlUHRyKG1fZmlyc3RZLCBvdGhlci5tX2ZpcnN0WSk7CisgICAgZWxzZSBpZiAobV9maXJz
dFgpCisgICAgICAgIGVxdWFsWGFuZFkgPSBjb21wYXJlQ1NTVmFsdWVQdHIobV9maXJzdFgsIG90
aGVyLm1fZmlyc3RYKSAmJiAhb3RoZXIubV9maXJzdFk7CisgICAgZWxzZSBpZiAobV9maXJzdFkp
CisgICAgICAgIGVxdWFsWGFuZFkgPSBjb21wYXJlQ1NTVmFsdWVQdHIobV9maXJzdFksIG90aGVy
Lm1fZmlyc3RZKSAmJiAhb3RoZXIubV9maXJzdFg7CisgICAgZWxzZQorICAgICAgICBlcXVhbFhh
bmRZID0gIW90aGVyLm1fZmlyc3RYICYmICFvdGhlci5tX2ZpcnN0WTsKKworICAgIHJldHVybiBl
cXVhbFhhbmRZICYmIG1fc3RvcHMgPT0gb3RoZXIubV9zdG9wczsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCShyZXZp
c2lvbiAyMjQxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw4IEBAIGVudW0gQ1NTR3JhZGllbnRUeXBlIHsKICAg
ICBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50LAogICAgIENTU1ByZWZpeGVkUmFkaWFsR3JhZGll
bnQsCiAgICAgQ1NTTGluZWFyR3JhZGllbnQsCi0gICAgQ1NTUmFkaWFsR3JhZGllbnQKKyAgICBD
U1NSYWRpYWxHcmFkaWVudCwKKyAgICBDU1NDb25pY0dyYWRpZW50CiB9OwogZW51bSBDU1NHcmFk
aWVudFJlcGVhdCB7IE5vblJlcGVhdGluZywgUmVwZWF0aW5nIH07CiAKQEAgLTIyNSw4ICsyMjYs
NDUgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fZW5kVmVydGlj
YWxTaXplOwogfTsKIAorY2xhc3MgQ1NTQ29uaWNHcmFkaWVudFZhbHVlIGZpbmFsIDogcHVibGlj
IENTU0dyYWRpZW50VmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q1NTQ29uaWNHcmFk
aWVudFZhbHVlPiBjcmVhdGUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ29uaWNHcmFkaWVudFZhbHVlKHJlcGVhdCkpOwor
ICAgIH0KKworICAgIFJlZjxDU1NDb25pY0dyYWRpZW50VmFsdWU+IGNsb25lKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0NvbmljR3JhZGllbnRWYWx1ZSgq
dGhpcykpOworICAgIH0KKworICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisKKyAg
ICB2b2lkIHNldEFuZ2xlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiB2YWwpIHsgbV9hbmds
ZSA9IFdURk1vdmUodmFsKTsgfQorCisgICAgLy8gQ3JlYXRlIHRoZSBncmFkaWVudCBmb3IgYSBn
aXZlbiBzaXplLgorICAgIFJlZjxHcmFkaWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVu
dCYsIGNvbnN0IEZsb2F0U2l6ZSYpOworCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ29uaWNH
cmFkaWVudFZhbHVlJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgQ1NTQ29uaWNHcmFkaWVudFZh
bHVlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCkKKyAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVl
KENvbmljR3JhZGllbnRDbGFzcywgcmVwZWF0LCBDU1NDb25pY0dyYWRpZW50KQorICAgIHsKKyAg
ICB9CisKKyAgICBDU1NDb25pY0dyYWRpZW50VmFsdWUoY29uc3QgQ1NTQ29uaWNHcmFkaWVudFZh
bHVlJiBvdGhlcikKKyAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKG90aGVyLCBDb25pY0dyYWRp
ZW50Q2xhc3MsIG90aGVyLmdyYWRpZW50VHlwZSgpKQorICAgICAgICAsIG1fYW5nbGUob3RoZXIu
bV9hbmdsZSkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBt
X2FuZ2xlOyAvLyBtYXkgYmUgbnVsbC4KK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUoQ1NTR3JhZGllbnRWYWx1ZSwgaXNHcmFk
aWVudFZhbHVlKCkpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxVRShDU1NMaW5lYXJH
cmFkaWVudFZhbHVlLCBpc0xpbmVhckdyYWRpZW50VmFsdWUoKSkKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQ1NTX1ZBTFVFKENTU1JhZGlhbEdyYWRpZW50VmFsdWUsIGlzUmFkaWFsR3JhZGllbnRW
YWx1ZSgpKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUoQ1NTQ29uaWNHcmFkaWVu
dFZhbHVlLCBpc0NvbmljR3JhZGllbnRWYWx1ZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAkocmV2aXNpb24gMjI0MTU0KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDgsNiArMTQ4LDggQEAgUmVmUHRyPEltYWdlPiBDU1NJbWFnZUdlbmVyYXRvclZhbHVl
OjppbQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4oKnRo
aXMpLmltYWdlKHJlbmRlcmVyLCBzaXplKTsKICAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xhc3M6
CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPigqdGhpcyku
aW1hZ2UocmVuZGVyZXIsIHNpemUpOworICAgIGNhc2UgQ29uaWNHcmFkaWVudENsYXNzOgorICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPigqdGhpcykuaW1hZ2Uo
cmVuZGVyZXIsIHNpemUpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KQEAgLTE2OSw2ICsxNzEsOCBAQCBib29sIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU6OmlzRml4ZWRTaXplCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlPigqdGhpcykuaXNGaXhlZFNpemUoKTsKICAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xh
c3M6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPigqdGhp
cykuaXNGaXhlZFNpemUoKTsKKyAgICBjYXNlIENvbmljR3JhZGllbnRDbGFzczoKKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PENTU0NvbmljR3JhZGllbnRWYWx1ZT4oKnRoaXMpLmlzRml4ZWRTaXpl
KCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpA
QCAtMTg4LDYgKzE5Miw4IEBAIEZsb2F0U2l6ZSBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpmaXhl
ZFMKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0xpbmVhckdyYWRpZW50VmFsdWU+KCp0aGlz
KS5maXhlZFNpemUocmVuZGVyZXIpOwogICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFzczoKICAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1JhZGlhbEdyYWRpZW50VmFsdWU+KCp0aGlzKS5maXhl
ZFNpemUocmVuZGVyZXIpOworICAgIGNhc2UgQ29uaWNHcmFkaWVudENsYXNzOgorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPigqdGhpcykuZml4ZWRTaXplKHJl
bmRlcmVyKTsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CkBAIC0yMDksNiArMjE1LDggQEAgYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjppc1Bl
bmRpbmcoKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4o
KnRoaXMpLmlzUGVuZGluZygpOwogICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFzczoKICAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PENTU1JhZGlhbEdyYWRpZW50VmFsdWU+KCp0aGlzKS5pc1BlbmRp
bmcoKTsKKyAgICBjYXNlIENvbmljR3JhZGllbnRDbGFzczoKKyAgICAgICAgcmV0dXJuIGRvd25j
YXN0PENTU0NvbmljR3JhZGllbnRWYWx1ZT4oKnRoaXMpLmlzUGVuZGluZygpOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTIzMCw2ICsyMzgs
OCBAQCBib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omtub3duVG9CZU9wCiAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPigqdGhpcykua25vd25Ub0JlT3Bh
cXVlKCk7CiAgICAgY2FzZSBSYWRpYWxHcmFkaWVudENsYXNzOgogICAgICAgICByZXR1cm4gZG93
bmNhc3Q8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4oKnRoaXMpLmtub3duVG9CZU9wYXF1ZSgpOwor
ICAgIGNhc2UgQ29uaWNHcmFkaWVudENsYXNzOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NT
Q29uaWNHcmFkaWVudFZhbHVlPigqdGhpcykua25vd25Ub0JlT3BhcXVlKCk7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtMjU0LDYgKzI2NCw5
IEBAIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6bG9hZFN1YmltYWcKICAgICBjYXNlIFJh
ZGlhbEdyYWRpZW50Q2xhc3M6CiAgICAgICAgIGRvd25jYXN0PENTU1JhZGlhbEdyYWRpZW50VmFs
dWU+KCp0aGlzKS5sb2FkU3ViaW1hZ2VzKGNhY2hlZFJlc291cmNlTG9hZGVyLCBvcHRpb25zKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb25pY0dyYWRpZW50Q2xhc3M6CisgICAgICAgIGRv
d25jYXN0PENTU0NvbmljR3JhZGllbnRWYWx1ZT4oKnRoaXMpLmxvYWRTdWJpbWFnZXMoY2FjaGVk
UmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZS5jcHAJKHJldmlzaW9uIDIyNDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsOCBAQCBib29sIENTU1ZhbHVlOjpl
cXVhbHMoY29uc3QgQ1NTVmFsdWUmIG90CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1Zh
bHVlczxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNl
IFJhZGlhbEdyYWRpZW50Q2xhc3M6CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVl
czxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIENv
bmljR3JhZGllbnRDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENT
U0NvbmljR3JhZGllbnRWYWx1ZT4oKnRoaXMsIG90aGVyKTsKICAgICAgICAgY2FzZSBDcm9zc2Zh
ZGVDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0Nyb3NzZmFk
ZVZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIEltYWdlQ2xhc3M6CkBAIC0yNTQs
NiArMjU2LDggQEAgU3RyaW5nIENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0
dXJuIGRvd25jYXN0PENTU0xpbmVhckdyYWRpZW50VmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0
KCk7CiAgICAgY2FzZSBSYWRpYWxHcmFkaWVudENsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKKyAgICBj
YXNlIENvbmljR3JhZGllbnRDbGFzczoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0Nvbmlj
R3JhZGllbnRWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKICAgICBjYXNlIENyb3NzZmFk
ZUNsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTQ3Jvc3NmYWRlVmFsdWU+KCp0aGlz
KS5jdXN0b21DU1NUZXh0KCk7CiAgICAgY2FzZSBJbWFnZUNsYXNzOgpAQCAtMzU5LDYgKzM2Myw5
IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFz
czoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1JhZGlhbEdyYWRpZW50VmFsdWU+KHRoaXMp
OwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBDb25pY0dyYWRpZW50Q2xhc3M6CisgICAgICAg
IGRlbGV0ZSBkb3duY2FzdDxDU1NDb25pY0dyYWRpZW50VmFsdWU+KHRoaXMpOworICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBDcm9zc2ZhZGVDbGFzczoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0
PENTU0Nyb3NzZmFkZVZhbHVlPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlLmgJKHJldmlzaW9uIDIyNDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw4ICs4MSw4IEBAIHB1YmxpYzoKICAgICBib29s
IGlzRm9udFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gRm9udENsYXNzOyB9
CiAgICAgYm9vbCBpc0ZvbnRTdHlsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUg
PT0gRm9udFN0eWxlQ2xhc3M7IH0KICAgICBib29sIGlzRm9udFN0eWxlUmFuZ2VWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEZvbnRTdHlsZVJhbmdlQ2xhc3M7IH0KLSAgICBi
b29sIGlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID49
IENhbnZhc0NsYXNzICYmIG1fY2xhc3NUeXBlIDw9IFJhZGlhbEdyYWRpZW50Q2xhc3M7IH0KLSAg
ICBib29sIGlzR3JhZGllbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID49IExp
bmVhckdyYWRpZW50Q2xhc3MgJiYgbV9jbGFzc1R5cGUgPD0gUmFkaWFsR3JhZGllbnRDbGFzczsg
fQorICAgIGJvb2wgaXNJbWFnZUdlbmVyYXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFz
c1R5cGUgPj0gQ2FudmFzQ2xhc3MgJiYgbV9jbGFzc1R5cGUgPD0gQ29uaWNHcmFkaWVudENsYXNz
OyB9CisgICAgYm9vbCBpc0dyYWRpZW50VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlw
ZSA+PSBMaW5lYXJHcmFkaWVudENsYXNzICYmIG1fY2xhc3NUeXBlIDw9IENvbmljR3JhZGllbnRD
bGFzczsgfQogICAgIGJvb2wgaXNOYW1lZEltYWdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Ns
YXNzVHlwZSA9PSBOYW1lZEltYWdlQ2xhc3M7IH0KICAgICBib29sIGlzSW1hZ2VTZXRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEltYWdlU2V0Q2xhc3M7IH0KICAgICBib29s
IGlzSW1hZ2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEltYWdlQ2xhc3M7
IH0KQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgogICAgIGJvb2wgdHJlYXRBc0luaGVyaXRlZFZh
bHVlKENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIGJvb2wgaXNMaW5lYXJHcmFkaWVudFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gTGluZWFyR3JhZGllbnRDbGFzczsgfQog
ICAgIGJvb2wgaXNSYWRpYWxHcmFkaWVudFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5
cGUgPT0gUmFkaWFsR3JhZGllbnRDbGFzczsgfQorICAgIGJvb2wgaXNDb25pY0dyYWRpZW50VmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDb25pY0dyYWRpZW50Q2xhc3M7IH0K
ICAgICBib29sIGlzUmVmbGVjdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0g
UmVmbGVjdENsYXNzOyB9CiAgICAgYm9vbCBpc1NoYWRvd1ZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9jbGFzc1R5cGUgPT0gU2hhZG93Q2xhc3M7IH0KICAgICBib29sIGlzQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvblZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbkNsYXNzOyB9CkBAIC0xNDMsNiArMTQ0LDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBGaWx0ZXJJbWFnZUNsYXNzLAogICAgICAgICBMaW5lYXJHcmFkaWVudENsYXNzLAog
ICAgICAgICBSYWRpYWxHcmFkaWVudENsYXNzLAorICAgICAgICBDb25pY0dyYWRpZW50Q2xhc3Ms
CiAKICAgICAgICAgLy8gVGltaW5nIGZ1bmN0aW9uIGNsYXNzZXMuCiAgICAgICAgIEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb25DbGFzcywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZUtleXdvcmRzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluCShyZXZpc2lvbiAyMjQxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVLZXl3b3Jkcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTE1NSw4ICsxMTU1LDEwIEBAIGNyb3Nz
LWZhZGUKIGltYWdlLXNldAogbGluZWFyLWdyYWRpZW50CiByYWRpYWwtZ3JhZGllbnQKK2Nvbmlj
LWdyYWRpZW50CiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50CiByZXBlYXRpbmctcmFkaWFsLWdy
YWRpZW50CityZXBlYXRpbmctY29uaWMtZ3JhZGllbnQKIC13ZWJraXQtY2FudmFzCiAtd2Via2l0
LWNyb3NzLWZhZGUKIC13ZWJraXQtZ3JhZGllbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDIyNDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsNyBAQCBD
U1NQYXJzZXJDb250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KERvY3VtCiAjZW5kaWYKICAgICBzcHJp
bmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQgPSBkb2N1bWVudC5zZXR0aW5ncygpLnNwcmluZ1RpbWlu
Z0Z1bmN0aW9uRW5hYmxlZCgpOwogICAgIGNvbnN0YW50UHJvcGVydGllc0VuYWJsZWQgPSBkb2N1
bWVudC5zZXR0aW5ncygpLmNvbnN0YW50UHJvcGVydGllc0VuYWJsZWQoKTsKKyAgICBjb25pY0dy
YWRpZW50c0VuYWJsZWQgPSBkb2N1bWVudC5zZXR0aW5ncygpLmNvbmljR3JhZGllbnRzRW5hYmxl
ZCgpOwogICAgIGRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCku
ZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKCk7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMDks
NiArMTEwLDcgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIAogICAg
ICAgICAmJiBhLnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgPT0gYi51
c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yCiAgICAgICAgICYmIGEuc3By
aW5nVGltaW5nRnVuY3Rpb25FbmFibGVkID09IGIuc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVk
CiAgICAgICAgICYmIGEuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCA9PSBiLmNvbnN0YW50UHJv
cGVydGllc0VuYWJsZWQKKyAgICAgICAgJiYgYS5jb25pY0dyYWRpZW50c0VuYWJsZWQgPT0gYi5j
b25pY0dyYWRpZW50c0VuYWJsZWQKICAgICAgICAgJiYgYS5kZWZlcnJlZENTU1BhcnNlckVuYWJs
ZWQgPT0gYi5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyTW9kZS5oCShyZXZpc2lvbiAyMjQxNTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICBib29sIHVzZUxlZ2FjeUJhY2tncm91bmRTaXpl
U2hvcnRoYW5kQmVoYXZpb3IgeyBmYWxzZSB9OwogICAgIGJvb2wgc3ByaW5nVGltaW5nRnVuY3Rp
b25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGNvbnN0YW50UHJvcGVydGllc0VuYWJsZWQg
eyBmYWxzZSB9OwotICAgIAorICAgIGJvb2wgY29uaWNHcmFkaWVudHNFbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIGRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICBV
UkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CkBAIC0xMzksOCArMTM5LDkg
QEAgc3RydWN0IENTU1BhcnNlckNvbnRleHRIYXNoIHsKICAgICAgICAgICAgICYga2V5LmVuZm9y
Y2VzQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSAgICAgICAgIDw8IDUKICAgICAgICAgICAgICYg
a2V5LnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgIDw8IDYKICAgICAg
ICAgICAgICYga2V5LnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCAgICAgICAgICAgICAgIDw8
IDcKLSAgICAgICAgICAgICYga2V5LmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCAgICAgICAgICAg
ICAgICAgIDw8IDgKLSAgICAgICAgICAgICYga2V5Lm1vZGUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IDk7CisgICAgICAgICAgICAmIGtleS5jb25pY0dyYWRpZW50c0Vu
YWJsZWQgICAgICAgICAgICAgICAgICAgICA8PCA4CisgICAgICAgICAgICAmIGtleS5kZWZlcnJl
ZENTU1BhcnNlckVuYWJsZWQgICAgICAgICAgICAgICAgICA8PCA5CisgICAgICAgICAgICAmIGtl
eS5tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxMDsKICAgICAg
ICAgaGFzaCBePSBXVEY6OmludEhhc2goYml0cyk7CiAgICAgICAgIHJldHVybiBoYXNoOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHAJKHJldmlzaW9uIDIyNDE1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzU2LDYgKzM1NiwzNCBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVBbmds
ZShDCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGNvbnN1bWVBbmdsZU9yUGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRs
ZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0g
cmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsK
KyAgICAgICAgc3dpdGNoICh0b2tlbi51bml0VHlwZSgpKSB7CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpDU1NfREVHOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZTo6Q1NTX1JBRDoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6OkNTU19HUkFEOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZTo6Q1NTX1RVUk46CisgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51
bWVyaWNWYWx1ZSgpLCB0b2tlbi51bml0VHlwZSgpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgfQorICAgIGlmICh0b2tlbi50
eXBlKCkgPT0gTnVtYmVyVG9rZW4gJiYgc2hvdWxkQWNjZXB0VW5pdGxlc3NWYWx1ZSh0b2tlbi5u
dW1lcmljVmFsdWUoKSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpKQorICAgICAgICByZXR1cm4g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShyYW5nZS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OkNTU19ERUcpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuKQor
ICAgICAgICByZXR1cm4gY29uc3VtZVBlcmNlbnQocmFuZ2UsIHZhbHVlUmFuZ2UpOworCisgICAg
Q2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCBDYWxjQW5nbGUsIHZhbHVlUmFuZ2UpOworICAg
IGlmIChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgp
KSB7CisgICAgICAgIGlmIChjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSA9PSBDYWxjQW5nbGUpCisg
ICAgICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKKwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1l
VGltZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCiB7CiAg
ICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwpAQCAtOTA0LDkg
KzkzMiw5IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGUKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgYm9vbCBjb25zdW1lR3JhZGllbnRDb2xvclN0b3Bz
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUs
IENTU0dyYWRpZW50VmFsdWUqIGdyYWRpZW50KQorc3RhdGljIGJvb2wgY29uc3VtZUdyYWRpZW50
Q29sb3JTdG9wcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlLCBDU1NHcmFkaWVudFZhbHVlJiBncmFkaWVudCkKIHsKLSAgICBib29sIHN1cHBv
cnRzQ29sb3JIaW50cyA9IGdyYWRpZW50LT5ncmFkaWVudFR5cGUoKSA9PSBDU1NMaW5lYXJHcmFk
aWVudCB8fCBncmFkaWVudC0+Z3JhZGllbnRUeXBlKCkgPT0gQ1NTUmFkaWFsR3JhZGllbnQ7Cisg
ICAgYm9vbCBzdXBwb3J0c0NvbG9ySGludHMgPSBncmFkaWVudC5ncmFkaWVudFR5cGUoKSA9PSBD
U1NMaW5lYXJHcmFkaWVudCB8fCBncmFkaWVudC5ncmFkaWVudFR5cGUoKSA9PSBDU1NSYWRpYWxH
cmFkaWVudDsKIAogICAgIC8vIFRoZSBmaXJzdCBjb2xvciBzdG9wIGNhbm5vdCBiZSBhIGNvbG9y
IGhpbnQuCiAgICAgYm9vbCBwcmV2aW91c1N0b3BXYXNDb2xvckhpbnQgPSB0cnVlOwpAQCAtOTI1
LDcgKzk1Myw0MCBAQCBzdGF0aWMgYm9vbCBjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKENTCiAg
ICAgICAgIHN0b3AubV9wb3NpdGlvbiA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNz
c1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOwogICAgICAgICBpZiAoIXN0b3AubV9jb2xvciAm
JiAhc3RvcC5tX3Bvc2l0aW9uKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBn
cmFkaWVudC0+YWRkU3RvcChzdG9wKTsKKyAgICAgICAgZ3JhZGllbnQuYWRkU3RvcChzdG9wKTsK
KyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisK
KyAgICAvLyBUaGUgbGFzdCBjb2xvciBzdG9wIGNhbm5vdCBiZSBhIGNvbG9yIGhpbnQuCisgICAg
aWYgKHByZXZpb3VzU3RvcFdhc0NvbG9ySGludCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gTXVzdCBoYXZlIDIgb3IgbW9yZSBzdG9wcyB0byBiZSB2YWxpZC4KKyAgICByZXR1cm4g
Z3JhZGllbnQuc3RvcENvdW50KCkgPj0gMjsKK30KKworLy8gaHR0cHM6Ly93d3cudzMub3JnL1RS
L2Nzcy1pbWFnZXMtNC8jdHlwZWRlZi1hbmd1bGFyLWNvbG9yLXN0b3AtbGlzdAorLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHN1cHBvcnQgdXAgdG8gdHdvIHBvc2l0aW9uIGhpbnRzIHBlciBjb2xvciBz
dG9wLgorc3RhdGljIGJvb2wgY29uc3VtZUFuZ3VsYXJHcmFkaWVudENvbG9yU3RvcHMoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3Jh
ZGllbnRWYWx1ZSYgZ3JhZGllbnQpCit7CisgICAgLy8gVGhlIGZpcnN0IGNvbG9yIHN0b3AgY2Fu
bm90IGJlIGEgY29sb3IgaGludC4KKyAgICBib29sIHByZXZpb3VzU3RvcFdhc0NvbG9ySGludCA9
IHRydWU7CisgICAgZG8geworICAgICAgICBDU1NHcmFkaWVudENvbG9yU3RvcCBzdG9wOworICAg
ICAgICBzdG9wLm1fY29sb3IgPSBjb25zdW1lQ29sb3IocmFuZ2UsIGNzc1BhcnNlck1vZGUpOwor
CisgICAgICAgIC8vIFR3byBoaW50cyBpbiBhIHJvdyBhcmUgbm90IGFsbG93ZWQuCisgICAgICAg
IGlmICghc3RvcC5tX2NvbG9yICYmIHByZXZpb3VzU3RvcFdhc0NvbG9ySGludCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIHByZXZpb3VzU3RvcFdhc0NvbG9y
SGludCA9ICFzdG9wLm1fY29sb3I7CisgICAgICAgIAorICAgICAgICAvLyBGSVhNRS1ORVdQQVJT
RVI6IFRoaXMgYm9vbGVhbiBjb3VsZCBiZSByZW1vdmVkLiBOdWxsIGNoZWNraW5nIGNvbG9yIHdv
dWxkIGJlIHN1ZmZpY2llbnQuCisgICAgICAgIHN0b3AuaXNNaWRwb2ludCA9ICFzdG9wLm1fY29s
b3I7CisKKyAgICAgICAgc3RvcC5tX3Bvc2l0aW9uID0gY29uc3VtZUFuZ2xlT3JQZXJjZW50KHJh
bmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQp
OworICAgICAgICBpZiAoIXN0b3AubV9jb2xvciAmJiAhc3RvcC5tX3Bvc2l0aW9uKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBncmFkaWVudC5hZGRTdG9wKHN0b3ApOwogICAg
IH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKIAogICAg
IC8vIFRoZSBsYXN0IGNvbG9yIHN0b3AgY2Fubm90IGJlIGEgY29sb3IgaGludC4KQEAgLTkzMyw3
ICs5OTQsNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKENTCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE11c3QgaGF2ZSAyIG9yIG1vcmUgc3RvcHMgdG8g
YmUgdmFsaWQuCi0gICAgcmV0dXJuIGdyYWRpZW50LT5zdG9wQ291bnQoKSA+PSAyOworICAgIHJl
dHVybiBncmFkaWVudC5zdG9wQ291bnQoKSA+PSAyOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1Zh
bHVlPiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVw
ZWF0aW5nKQpAQCAtOTcyLDcgKzEwMzMsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lRGVwcmVjYXRlCiAgICAgfSBlbHNlIHsKICAgICAgICAgY29uc3VtZUNvbW1hSW5jbHVkaW5n
V2hpdGVzcGFjZShhcmdzKTsKICAgICB9Ci0gICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0
b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdC5nZXQoKSkpCisgICAgaWYgKCFjb25zdW1l
R3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsICpyZXN1bHQpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMDU5LDcgKzExMjAs
NyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhCiAKICAgICBpZiAo
KHNoYXBlIHx8IHNpemVLZXl3b3JkIHx8IGhvcml6b250YWxTaXplIHx8IGNlbnRlclggfHwgY2Vu
dGVyWSkgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdz
LCBjc3NQYXJzZXJNb2RlLCByZXN1bHQuZ2V0KCkpKQorICAgIGlmICghY29uc3VtZUdyYWRpZW50
Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCAqcmVzdWx0KSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEwOTIsNyArMTE1Myw0OSBAQCBz
dGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lTGluZWFyR3JhCiAKICAgICBpZiAoZXhwZWN0
Q29tbWEgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdz
LCBjc3NQYXJzZXJNb2RlLCByZXN1bHQuZ2V0KCkpKQorICAgIGlmICghY29uc3VtZUdyYWRpZW50
Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCAqcmVzdWx0KSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUNvbmljR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFy
c2VyQ29udGV4dCBjb250ZXh0LCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcpCit7CisgICAg
aWYgKCFjb250ZXh0LmNvbmljR3JhZGllbnRzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBSZWZQdHI8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NDb25p
Y0dyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcpOworCisgICAgYm9vbCBleHBlY3RDb21t
YSA9IGZhbHNlOworICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgewor
ICAgICAgICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlRnJvbT4oYXJncykpIHsKKyAgICAgICAg
ICAgIGF1dG8gYW5nbGUgPSBjb25zdW1lQW5nbGUoYXJncywgY29udGV4dC5tb2RlLCBVbml0bGVz
c1F1aXJrOjpGb3JiaWQpOworICAgICAgICAgICAgaWYgKCFhbmdsZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0QW5nbGUoYW5nbGUucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAgICBleHBlY3RDb21tYSA9IHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdD4oYXJncykp
IHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWDsKKyAgICAg
ICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWTsKKyAgICAgICAgICAgIGNv
bnN1bWVQb3NpdGlvbihhcmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwg
Y2VudGVyWCwgY2VudGVyWSk7CisgICAgICAgICAgICBpZiAoIShjZW50ZXJYICYmIGNlbnRlclkp
KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgCisgICAgICAg
ICAgICByZXN1bHQtPnNldEZpcnN0WChjZW50ZXJYLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBy
ZXN1bHQtPnNldEZpcnN0WShjZW50ZXJZLmNvcHlSZWYoKSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIC8vIFJpZ2h0IG5vdywgY29uaWMgZ3JhZGllbnRzIGhhdmUgdGhlIHNhbWUgc3RhcnQg
YW5kIGVuZCBjZW50ZXJzLgorICAgICAgICAgICAgcmVzdWx0LT5zZXRTZWNvbmRYKGNlbnRlclgu
Y29weVJlZigpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25kWShjZW50ZXJZLmNvcHlS
ZWYoKSk7CisgICAgCisgICAgICAgICAgICBleHBlY3RDb21tYSA9IHRydWU7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoZXhwZWN0Q29tbWEgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1do
aXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghY29uc3Vt
ZUFuZ3VsYXJHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY29udGV4dC5tb2RlLCAqcmVzdWx0KSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExODYs
NiArMTI4OSwxMCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lR2VuZXJhdGVkCiAg
ICAgICAgIHJlc3VsdCA9IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoYXJncywgY29u
dGV4dC5tb2RlLCBOb25SZXBlYXRpbmcpOwogICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Vi
a2l0UmVwZWF0aW5nUmFkaWFsR3JhZGllbnQpCiAgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVEZXBy
ZWNhdGVkUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlLCBSZXBlYXRpbmcpOworICAg
IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlQ29uaWNHcmFkaWVudCkKKyAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZUNvbmljR3JhZGllbnQoYXJncywgY29udGV4dCwgTm9uUmVwZWF0aW5nKTsKKyAgICBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ0NvbmljR3JhZGllbnQpCisgICAgICAgIHJl
c3VsdCA9IGNvbnN1bWVDb25pY0dyYWRpZW50KGFyZ3MsIGNvbnRleHQsIFJlcGVhdGluZyk7CiAg
ICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRDcm9zc0ZhZGUgfHwgaWQgPT0gQ1NTVmFs
dWVDcm9zc0ZhZGUpCiAgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVDcm9zc0ZhZGUoYXJncywgY29u
dGV4dCwgaWQgPT0gQ1NTVmFsdWVXZWJraXRDcm9zc0ZhZGUpOwogICAgIGVsc2UgaWYgKGlkID09
IENTU1ZhbHVlV2Via2l0Q2FudmFzKQpAQCAtMTIzMiwxMiArMTMzOSwyMyBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lSW1hZ2VTZXQoCiAKIHN0YXRpYyBib29sIGlzR2VuZXJhdGVk
SW1hZ2UoQ1NTVmFsdWVJRCBpZCkKIHsKLSAgICByZXR1cm4gaWQgPT0gQ1NTVmFsdWVMaW5lYXJH
cmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVJhZGlhbEdyYWRpZW50Ci0gICAgICAgIHx8IGlkID09
IENTU1ZhbHVlUmVwZWF0aW5nTGluZWFyR3JhZGllbnQgfHwgaWQgPT0gQ1NTVmFsdWVSZXBlYXRp
bmdSYWRpYWxHcmFkaWVudAotICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdExpbmVhckdy
YWRpZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0UmFkaWFsR3JhZGllbnQKLSAgICAgICAgfHwg
aWQgPT0gQ1NTVmFsdWVXZWJraXRSZXBlYXRpbmdMaW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NW
YWx1ZVdlYmtpdFJlcGVhdGluZ1JhZGlhbEdyYWRpZW50Ci0gICAgICAgIHx8IGlkID09IENTU1Zh
bHVlV2Via2l0R3JhZGllbnQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRDcm9zc0ZhZGUgfHwgaWQg
PT0gQ1NTVmFsdWVXZWJraXRDYW52YXMKLSAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVDcm9zc0Zh
ZGUgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXROYW1lZEltYWdlIHx8IGlkID09IENTU1ZhbHVlV2Vi
a2l0RmlsdGVyIHx8IGlkID09IENTU1ZhbHVlRmlsdGVyOworICAgIHJldHVybiBpZCA9PSBDU1NW
YWx1ZUxpbmVhckdyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUmFkaWFsR3JhZGll
bnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVDb25pY0dyYWRpZW50CisgICAgICAgIHx8IGlk
ID09IENTU1ZhbHVlUmVwZWF0aW5nTGluZWFyR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NT
VmFsdWVSZXBlYXRpbmdSYWRpYWxHcmFkaWVudAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVJl
cGVhdGluZ0NvbmljR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRMaW5l
YXJHcmFkaWVudAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFJhZGlhbEdyYWRpZW50
CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nTGluZWFyR3JhZGllbnQK
KyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudAor
ICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdEdyYWRpZW50CisgICAgICAgIHx8IGlkID09
IENTU1ZhbHVlV2Via2l0Q3Jvc3NGYWRlCisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0
Q2FudmFzCisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlQ3Jvc3NGYWRlCisgICAgICAgIHx8IGlk
ID09IENTU1ZhbHVlV2Via2l0TmFtZWRJbWFnZQorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdl
YmtpdEZpbHRlcgorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUZpbHRlcjsKIH0KICAgICAKIHN0
YXRpYyBib29sIGlzVmFsaWRQcmltaXRpdmVGaWx0ZXJGdW5jdGlvbihDU1NWYWx1ZUlEIGZpbHRl
ckZ1bmN0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkocmV2aXNpb24gMjI0
MTU0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCSh3b3JraW5nIGNvcHkp
CkBAIC01MDksNiArNTA5LDggQEAgc2hvdWxkQ29udmVydEludmFsaWRVUkxzVG9CbGFuazoKIAog
c3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQorY29uaWNHcmFk
aWVudHNFbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQogCiB0cmVhdElQQWRkcmVzc0FzRG9tYWlu
OgogICBpbml0aWFsOiBmYWxzZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI0MTU0KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMTAt
MjkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ29uaWMgR3JhZGll
bnRzXSBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyBjb25pYyBncmFkaWVudHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODk4NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ncmFkaWVudHMvY29u
aWMtZ3JhZGllbnQtcGFyc2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Z3JhZGllbnRzL2NvbmljLWdyYWRpZW50LXBhcnNpbmcuaHRtbDogQWRkZWQuCisKKyAgICAgICAg
ICAgIEFkZCB0ZXN0cyBmb3IgYmFzaWMgcGFyc2luZyBvZiBjb25pYyBncmFkaWVudHMuCisKIDIw
MTctMTAtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBzZWxm
LkV4dGVuZGFibGVFdmVudCAvIENsaWVudCAvIENsaWVudHMgLyBXaW5kb3dDbGllbnQgZG8gbm90
IGV4aXN0IGluIGEgU2VydmljZSBXb3JrZXIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZ3JhZGll
bnRzL2NvbmljLWdyYWRpZW50LXBhcnNpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50LXBhcnNpbmctZXhwZWN0ZWQu
dHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NvbmljLWdy
YWRpZW50LXBhcnNpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBA
QAorCitQQVNTIFRlc3QgY29uaWMtZ3JhZGllbnQgcGFyc2luZyAKK1BBU1MgVGVzdCByZXBlYXRp
bmctY29uaWMtZ3JhZGllbnQgcGFyc2luZyAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ncmFk
aWVudHMvY29uaWMtZ3JhZGllbnQtcGFyc2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50LXBhcnNpbmcuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1wYXJzaW5n
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKworaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldENvbmljR3JhZGllbnRzRW5h
YmxlZCh0cnVlKTsKKworZnVuY3Rpb24gcm91bmRUcmlwKGNzcykKK3sKKyAgICB2YXIgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZGl2LnNldEF0dHJpYnV0ZSgnc3R5
bGUnLCBjc3MpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIHZh
ciByZXN1bHQgPSBnZXRDb21wdXRlZFN0eWxlKGRpdikuYmFja2dyb3VuZEltYWdlOworICAgIGRv
Y3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitm
dW5jdGlvbiB0ZXN0R3JhZGllbnQoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoZXhwZWN0
ZWQgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZXhwZWN0ZWQgPSBhY3R1YWw7CisKKyAgICBhc3Nl
cnRfZXF1YWxzKHJvdW5kVHJpcCgiYmFja2dyb3VuZC1pbWFnZToiICsgYWN0dWFsKSwgZXhwZWN0
ZWQsICJUZXN0aW5nIHJvdW5kIHRyaXAgb2YgIiArIGFjdHVhbCk7ICAgICAgICAKK30KKworLy8g
RklYTUUgVGVzdCBpbnZhbGlkIHBhcmFtZXRlcnMuCisvLyBGSVhNRSBUZXN0IGRvdWJsZSBwb3Np
dGlvbiBzeW50YXggZm9yIGNvbG9yIHN0b3BzLgorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHRl
c3RHcmFkaWVudCgiY29uaWMtZ3JhZGllbnQocmVkLCBnb2xkKSIpCisgICAgdGVzdEdyYWRpZW50
KCJjb25pYy1ncmFkaWVudChmcm9tIDBkZWcsIHJlZCwgZ29sZCkiKQorICAgIHRlc3RHcmFkaWVu
dCgiY29uaWMtZ3JhZGllbnQoYXQgY2VudGVyLCByZWQsIGdvbGQpIiwgImNvbmljLWdyYWRpZW50
KGF0IGNlbnRlciBjZW50ZXIsIHJlZCwgZ29sZCkiKQorICAgIHRlc3RHcmFkaWVudCgiY29uaWMt
Z3JhZGllbnQoYXQgMjUlIDc1JSwgcmVkLCBnb2xkKSIpCisgICAgdGVzdEdyYWRpZW50KCJjb25p
Yy1ncmFkaWVudChmcm9tIDBkZWcgYXQgNTAlIDUwJSwgcmVkLCBnb2xkKSIpCisgICAgdGVzdEdy
YWRpZW50KCJjb25pYy1ncmFkaWVudChyZWQgMCUsIGdvbGQgMTAwJSkiKQorICAgIHRlc3RHcmFk
aWVudCgiY29uaWMtZ3JhZGllbnQocmVkIDBkZWcsIGdvbGQgMXR1cm4pIik7CisgICAgdGVzdEdy
YWRpZW50KCJjb25pYy1ncmFkaWVudCh3aGl0ZSAtNTAlLCBibGFjayAxNTAlKSIpOworICAgIHRl
c3RHcmFkaWVudCgiY29uaWMtZ3JhZGllbnQod2hpdGUgLTE4MGRlZywgYmxhY2sgNTQwZGVnKSIp
OworICAgIHRlc3RHcmFkaWVudCgiY29uaWMtZ3JhZGllbnQoaHNsKDAsMCUsNzUlKSwgaHNsKDAs
MCUsMjUlKSkiLCAiY29uaWMtZ3JhZGllbnQocmdiKDE5MSwgMTkxLCAxOTEpLCByZ2IoNjMsIDYz
LCA2MykpIik7CisgICAgdGVzdEdyYWRpZW50KCJjb25pYy1ncmFkaWVudChmcm9tIDQ1ZGVnLCB3
aGl0ZSwgYmxhY2ssIHdoaXRlKSIpOworICAgIHRlc3RHcmFkaWVudCgiY29uaWMtZ3JhZGllbnQo
aHNsKDAsMCUsODcuNSUpLCB3aGl0ZSA0NWRlZywgYmxhY2sgMjI1ZGVnLCBoc2woMCwwJSw4Ny41
JSkpIiwgImNvbmljLWdyYWRpZW50KHJnYigyMjMsIDIyMywgMjIzKSwgd2hpdGUgNDVkZWcsIGJs
YWNrIDIyNWRlZywgcmdiKDIyMywgMjIzLCAyMjMpKSIpOworCisgICAgdmFyIHMgPSAiY29uaWMt
Z3JhZGllbnQoIjsKKyAgICBmb3IodmFyIHggPSAwOyB4IDwgNTAwOyB4KyspCisgICAgICAgIHMg
Kz0gIndoaXRlICIgKyAoeC81MDApICsgIiUsICIgKyAoKDIgKiB4ICsgMSkgLyAxMDAwKSArICIl
LCAiOworICAgIHMgKz0gImJsYWNrKSI7CisgICAgdGVzdEdyYWRpZW50KHMpOworfSwgIlRlc3Qg
Y29uaWMtZ3JhZGllbnQgcGFyc2luZyIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHRlc3RH
cmFkaWVudCgicmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KHJlZCwgZ29sZCkiKTsKKyAgICB0ZXN0
R3JhZGllbnQoInJlcGVhdGluZy1jb25pYy1ncmFkaWVudChmcm9tIDBkZWcgYXQgY2VudGVyLCBy
ZWQsIGdvbGQpIiwgInJlcGVhdGluZy1jb25pYy1ncmFkaWVudChmcm9tIDBkZWcgYXQgY2VudGVy
IGNlbnRlciwgcmVkLCBnb2xkKSIpOworfSwgIlRlc3QgcmVwZWF0aW5nLWNvbmljLWdyYWRpZW50
IHBhcnNpbmciKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="344790"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>