<?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>178687</bug_id>
          
          <creation_ts>2017-10-23 15:25:33 -0700</creation_ts>
          <short_desc>Implement resizing options for ImageBitmap rendering</short_desc>
          <delta_ts>2017-10-24 14:47:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1363428</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-10-23 15:25:33 -0700</bug_when>
    <thetext>Implement resizing options for ImageBitmap rendering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363431</commentid>
    <comment_count>1</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-10-23 15:33:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/35135417&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363432</commentid>
    <comment_count>2</comment_count>
      <attachid>324598</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-10-23 15:34:29 -0700</bug_when>
    <thetext>Created attachment 324598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363917</commentid>
    <comment_count>3</comment_count>
      <attachid>324725</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-10-24 14:37:20 -0700</bug_when>
    <thetext>Created attachment 324725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363919</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-10-24 14:47:27 -0700</bug_when>
    <thetext>Committed r223925: &lt;https://trac.webkit.org/changeset/223925&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324598</attachid>
            <date>2017-10-23 15:34:29 -0700</date>
            <delta_ts>2017-10-24 14:37:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178687-20171024093427.patch</filename>
            <type>text/plain</type>
            <size>11835</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMzNzVmNTgxYmQ3YWNm
ZGE4YzI1YTkwYzdiOGRiODQyM2VlNTdiYS4uOTUxOWE2OTEzNDkzNjQ3ZTE2NzQ2ZjE2ZTU3NWE3
ZDljOTYzNDEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTEwLTIzICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcmVzaXppbmcg
b3B0aW9ucyBmb3IgSW1hZ2VCaXRtYXAgcmVuZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg2ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1MTM1NDE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcm9wcGVkU291cmNlUmVjdGFuZ2xlV2l0aEZvcm1hdHRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6b3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UpOgorICAgICAgICAq
IGh0bWwvSW1hZ2VCaXRtYXAuaDoKKwogMjAxNy0xMC0yMiAgRGVhbiBKYWNrc29uICA8ZGlub0Bh
cHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGRyYXdJbWFnZShJbWFnZUJpdG1hcCkgb24g
MmQgY2FudmFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCmluZGV4IGFkNDA1NjhkNDBi
ODBhODI1ODFjYTA3OTlhZGRiYmI1YTM3ZWNjMzkuLmM1YjZlOGRmNjY1MmMyYjk1YzhiYjM2YmRi
MmIyMjY3MjUwN2IxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRt
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCkBAIC00OCwx
MiArNDgsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
CisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQogc3RhdGlj
IFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IEFjY2VsZXJhdGVkOwogI2Vsc2UK
IHN0YXRpYyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmluZ01vZGUgPSBVbmFjY2VsZXJhdGVk
OwogI2VuZGlmCiAKKwogUmVmPEltYWdlQml0bWFwPiBJbWFnZUJpdG1hcDo6Y3JlYXRlKCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZUJpdG1hcCk7CkBAIC0xMDQsMTEgKzEwNSwx
MTIgQEAgc3RhdGljIGJvb2wgdGFpbnRzT3JpZ2luKENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiYgaW1hZ2VF
bGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJl
Y3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKKy8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2ltYWdlYml0bWFwLWFuZC1hbmltYXRpb25zLmh0
bWwjY3JvcHBlZC10by10aGUtc291cmNlLXJlY3RhbmdsZS13aXRoLWZvcm1hdHRpbmcKK3N0YXRp
YyBFeGNlcHRpb25PcjxJbnRSZWN0PiBjcm9wcGVkU291cmNlUmVjdGFuZ2xlV2l0aEZvcm1hdHRp
bmcoSW50U2l6ZSBpbnB1dFNpemUsIEltYWdlQml0bWFwT3B0aW9ucyYgb3B0aW9ucywgc3RkOjpv
cHRpb25hbDxJbnRSZWN0PiByZWN0KQogewotICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKLSAg
ICBVTlVTRURfUEFSQU0ocmVjdCk7CisgICAgLy8gMi4gSWYgZWl0aGVyIG9yIGJvdGggb2YgcmVz
aXplV2lkdGggYW5kIHJlc2l6ZUhlaWdodCBtZW1iZXJzIG9mIG9wdGlvbnMgYXJlIGxlc3MKKyAg
ICAvLyAgICB0aGFuIG9yIGVxdWFsIHRvIDAsIHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3Rl
ZCB3aXRoICJJbnZhbGlkU3RhdGVFcnJvciIKKyAgICAvLyAgICBET01FeGNlcHRpb24gYW5kIGFi
b3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICgob3B0aW9ucy5yZXNpemVXaWR0aCAmJiBvcHRpb25z
LnJlc2l6ZVdpZHRoLnZhbHVlKCkgPD0gMCkgfHwgKG9wdGlvbnMucmVzaXplSGVpZ2h0ICYmIG9w
dGlvbnMucmVzaXplSGVpZ2h0LnZhbHVlKCkgPD0gMCkpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkludmFsaWQgcmVzaXplIGRpbWVuc2lvbnMiIH07CisK
KyAgICAvLyAzLiBJZiBzeCwgc3ksIHN3IGFuZCBzaCBhcmUgc3BlY2lmaWVkLCBsZXQgc291cmNl
UmVjdGFuZ2xlIGJlIGEgcmVjdGFuZ2xlIHdob3NlCisgICAgLy8gICAgY29ybmVycyBhcmUgdGhl
IGZvdXIgcG9pbnRzIChzeCwgc3kpLCAoc3grc3csIHN5KSwoc3grc3csIHN5K3NoKSwgKHN4LHN5
K3NoKS4KKyAgICAvLyAgICBPdGhlcndpc2UgbGV0IHNvdXJjZVJlY3RhbmdsZSBiZSBhIHJlY3Rh
bmdsZSB3aG9zZSBjb3JuZXJzIGFyZSB0aGUgZm91ciBwb2ludHMKKyAgICAvLyAgICAoMCwwKSwg
KHdpZHRoIG9mIGlucHV0LCAwKSwgKHdpZHRoIG9mIGlucHV0LCBoZWlnaHQgb2YgaW5wdXQpLCAo
MCwgaGVpZ2h0IG9mCisgICAgLy8gICAgaW5wdXQpLgorICAgIGF1dG8gc291cmNlUmVjdGFuZ2xl
ID0gcmVjdC52YWx1ZV9vcihJbnRSZWN0IHsgMCwgMCwgaW5wdXRTaXplLndpZHRoKCksIGlucHV0
U2l6ZS5oZWlnaHQoKSB9KTsKKworICAgIC8vIDQuIENsaXAgc291cmNlUmVjdGFuZ2xlIHRvIHRo
ZSBkaW1lbnNpb25zIG9mIGlucHV0LgorCisgICAgc291cmNlUmVjdGFuZ2xlLnNldFdpZHRoKHN0
ZDo6bWluKHNvdXJjZVJlY3RhbmdsZS53aWR0aCgpLCBpbnB1dFNpemUud2lkdGgoKSkpOworICAg
IHNvdXJjZVJlY3RhbmdsZS5zZXRIZWlnaHQoc3RkOjptaW4oc291cmNlUmVjdGFuZ2xlLmhlaWdo
dCgpLCBpbnB1dFNpemUuaGVpZ2h0KCkpKTsKKworICAgIHJldHVybiBzb3VyY2VSZWN0YW5nbGU7
Cit9CisKK3N0YXRpYyBJbnRTaXplIG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoSW50UmVj
dCBzb3VyY2VSZWN0YW5nbGUsIEltYWdlQml0bWFwT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICAv
LyA1LiBMZXQgb3V0cHV0V2lkdGggYmUgZGV0ZXJtaW5lZCBhcyBmb2xsb3dzOgorICAgIGF1dG8g
b3V0cHV0V2lkdGggPSBbJl0gKCkgLT4gaW50IHsKKyAgICAgICAgaWYgKG9wdGlvbnMucmVzaXpl
V2lkdGgpCisgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5yZXNpemVXaWR0aC52YWx1ZSgpOwor
ICAgICAgICBpZiAob3B0aW9ucy5yZXNpemVIZWlnaHQpCisgICAgICAgICAgICByZXR1cm4gY2Vp
bChzb3VyY2VSZWN0YW5nbGUud2lkdGgoKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4ob3B0aW9ucy5y
ZXNpemVIZWlnaHQudmFsdWUoKSkgLyBzb3VyY2VSZWN0YW5nbGUuaGVpZ2h0KCkpOworICAgICAg
ICByZXR1cm4gc291cmNlUmVjdGFuZ2xlLndpZHRoKCk7CisgICAgfSgpOworCisgICAgLy8gNi4g
TGV0IG91dHB1dEhlaWdodCBiZSBkZXRlcm1pbmVkIGFzIGZvbGxvd3M6CisgICAgYXV0byBvdXRw
dXRIZWlnaHQgPSBbJl0gKCkgLT4gaW50IHsKKyAgICAgICAgaWYgKG9wdGlvbnMucmVzaXplSGVp
Z2h0KQorICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMucmVzaXplSGVpZ2h0LnZhbHVlKCk7Cisg
ICAgICAgIGlmIChvcHRpb25zLnJlc2l6ZVdpZHRoKQorICAgICAgICAgICAgcmV0dXJuIGNlaWwo
c291cmNlUmVjdGFuZ2xlLmhlaWdodCgpICogc3RhdGljX2Nhc3Q8ZG91YmxlPihvcHRpb25zLnJl
c2l6ZVdpZHRoLnZhbHVlKCkpIC8gc291cmNlUmVjdGFuZ2xlLndpZHRoKCkpOworICAgICAgICBy
ZXR1cm4gc291cmNlUmVjdGFuZ2xlLmhlaWdodCgpOworICAgIH0oKTsKKworICAgIHJldHVybiB7
IG91dHB1dFdpZHRoLCBvdXRwdXRIZWlnaHQgfTsKK30KKworc3RhdGljIEludGVycG9sYXRpb25R
dWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShJbWFnZUJpdG1hcE9w
dGlvbnM6OlJlc2l6ZVF1YWxpdHkgcmVzaXplUXVhbGl0eSkKK3sKKyAgICBzd2l0Y2ggKHJlc2l6
ZVF1YWxpdHkpIHsKKyAgICBjYXNlIEltYWdlQml0bWFwT3B0aW9uczo6UmVzaXplUXVhbGl0eTo6
UGl4ZWxhdGVkOgorICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbk5vbmU7CisgICAgY2FzZSBJ
bWFnZUJpdG1hcE9wdGlvbnM6OlJlc2l6ZVF1YWxpdHk6OkxvdzoKKyAgICAgICAgcmV0dXJuIElu
dGVycG9sYXRpb25EZWZhdWx0OyAvLyBMb3cgaXMgdGhlIGRlZmF1bHQuCisgICAgY2FzZSBJbWFn
ZUJpdG1hcE9wdGlvbnM6OlJlc2l6ZVF1YWxpdHk6Ok1lZGl1bToKKyAgICAgICAgcmV0dXJuIElu
dGVycG9sYXRpb25NZWRpdW07CisgICAgY2FzZSBJbWFnZUJpdG1hcE9wdGlvbnM6OlJlc2l6ZVF1
YWxpdHk6OkhpZ2g6CisgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uSGlnaDsKKyAgICB9Cit9
CisKKy8vIEZJWE1FOiBNb3JlIHN0ZXBzIGZyb20gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvaW1hZ2ViaXRtYXAtYW5kLWFuaW1hdGlvbnMuaHRtbCNjcm9wcGVkLXRvLXRo
ZS1zb3VyY2UtcmVjdGFuZ2xlLXdpdGgtZm9ybWF0dGluZworCisvLyA3LiBQbGFjZSBpbnB1dCBv
biBhbiBpbmZpbml0ZSB0cmFuc3BhcmVudCBibGFjayBncmlkIHBsYW5lLCBwb3NpdGlvbmVkIHNv
IHRoYXQgaXRzCisvLyAgICB0b3AgbGVmdCBjb3JuZXIgaXMgYXQgdGhlIG9yaWdpbiBvZiB0aGUg
cGxhbmUsIHdpdGggdGhlIHgtY29vcmRpbmF0ZSBpbmNyZWFzaW5nCisvLyAgICB0byB0aGUgcmln
aHQsIGFuZCB0aGUgeS1jb29yZGluYXRlIGluY3JlYXNpbmcgZG93biwgYW5kIHdpdGggZWFjaCBw
aXhlbCBpbiB0aGUKKy8vICAgIGlucHV0IGltYWdlIGRhdGEgb2NjdXB5aW5nIGEgY2VsbCBvbiB0
aGUgcGxhbmUncyBncmlkLgorCisvLyA4LiBMZXQgb3V0cHV0IGJlIHRoZSByZWN0YW5nbGUgb24g
dGhlIHBsYW5lIGRlbm90ZWQgYnkgc291cmNlUmVjdGFuZ2xlLgorCisvLyA5LiBTY2FsZSBvdXRw
dXQgdG8gdGhlIHNpemUgc3BlY2lmaWVkIGJ5IG91dHB1dFdpZHRoIGFuZCBvdXRwdXRIZWlnaHQu
IFRoZSB1c2VyCisvLyAgICBhZ2VudCBzaG91bGQgdXNlIHRoZSB2YWx1ZSBvZiB0aGUgcmVzaXpl
UXVhbGl0eSBvcHRpb24gdG8gZ3VpZGUgdGhlIGNob2ljZSBvZgorLy8gICAgc2NhbGluZyBhbGdv
cml0aG0uCisKKy8vIDEwLiBJZiB0aGUgdmFsdWUgb2YgdGhlIGltYWdlT3JpZW50YXRpb24gbWVt
YmVyIG9mIG9wdGlvbnMgaXMgImZsaXBZIiwgb3V0cHV0IG11c3QKKy8vICAgICBiZSBmbGlwcGVk
IHZlcnRpY2FsbHksIGRpc3JlZ2FyZGluZyBhbnkgaW1hZ2Ugb3JpZW50YXRpb24gbWV0YWRhdGEg
b2YgdGhlIHNvdXJjZQorLy8gICAgIChzdWNoIGFzIEVYSUYgbWV0YWRhdGEpLCBpZiBhbnkuCisK
Ky8vIDExLiBJZiBpbWFnZSBpcyBhbiBpbWcgZWxlbWVudCBvciBhIEJsb2Igb2JqZWN0LCBsZXQg
dmFsIGJlIHRoZSB2YWx1ZSBvZiB0aGUKKy8vICAgICBjb2xvclNwYWNlQ29udmVyc2lvbiBtZW1i
ZXIgb2Ygb3B0aW9ucywgYW5kIHRoZW4gcnVuIHRoZXNlIHN1YnN0ZXBzOgorLy8KKy8vICAgICAx
LiBJZiB2YWwgaXMgImRlZmF1bHQiLCB0aGUgY29sb3Igc3BhY2UgY29udmVyc2lvbiBiZWhhdmlv
ciBpcyBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYywKKy8vICAgICAgICBhbmQgc2hvdWxkIGJlIGNo
b3NlbiBhY2NvcmRpbmcgdG8gdGhlIGNvbG9yIHNwYWNlIHRoYXQgdGhlIGltcGxlbWVudGF0aW9u
IHVzZXMgZm9yCisvLyAgICAgICAgZHJhd2luZyBpbWFnZXMgb250byB0aGUgY2FudmFzLgorLy8K
Ky8vICAgICAyLiBJZiB2YWwgaXMgIm5vbmUiLCBvdXRwdXQgbXVzdCBiZSBkZWNvZGVkIHdpdGhv
dXQgcGVyZm9ybWluZyBhbnkgY29sb3Igc3BhY2UKKy8vICAgICAgICBjb252ZXJzaW9ucy4gVGhp
cyBtZWFucyB0aGF0IHRoZSBpbWFnZSBkZWNvZGluZyBhbGdvcml0aG0gbXVzdCBpZ25vcmUgY29s
b3IgcHJvZmlsZQorLy8gICAgICAgIG1ldGFkYXRhIGVtYmVkZGVkIGluIHRoZSBzb3VyY2UgZGF0
YSBhcyB3ZWxsIGFzIHRoZSBkaXNwbGF5IGRldmljZSBjb2xvciBwcm9maWxlLgorCisvLyAxMi4g
TGV0IHZhbCBiZSB0aGUgdmFsdWUgb2YgcHJlbXVsdGlwbHlBbHBoYSBtZW1iZXIgb2Ygb3B0aW9u
cywgYW5kIHRoZW4gcnVuIHRoZXNlIHN1YnN0ZXBzOgorLy8KKy8vICAgICAxLiBJZiB2YWwgaXMg
ImRlZmF1bHQiLCB0aGUgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24gYmVoYXZpb3IgaXMgaW1wbGVt
ZW50YXRpb24tc3BlY2lmaWMsCisvLyAgICAgICAgYW5kIHNob3VsZCBiZSBjaG9zZW4gYWNjb3Jk
aW5nIHRvIGltcGxlbWVudGF0aW9uIGRlZW1zIG9wdGltYWwgZm9yIGRyYXdpbmcgaW1hZ2VzCisv
LyAgICAgICAgb250byB0aGUgY2FudmFzLgorLy8KKy8vICAgICAyLiBJZiB2YWwgaXMgInByZW11
bHRpcGx5IiwgdGhlIG91dHB1dCB0aGF0IGlzIG5vdCBwcmVtdWx0aXBsaWVkIGJ5IGFscGhhIG11
c3QgaGF2ZSBpdHMKKy8vICAgICAgICBjb2xvciBjb21wb25lbnRzIG11bHRpcGxpZWQgYnkgYWxw
aGEgYW5kIHRoYXQgaXMgcHJlbXVsdGlwbGllZCBieSBhbHBoYSBtdXN0IGJlIGxlZnQKKy8vICAg
ICAgICB1bnRvdWNoZWQuCisvLworLy8gICAgIDMuIElmIHZhbCBpcyAibm9uZSIsIHRoZSBvdXRw
dXQgdGhhdCBpcyBub3QgcHJlbXVsdGlwbGllZCBieSBhbHBoYSBtdXN0IGJlIGxlZnQgdW50b3Vj
aGVkCisvLyAgICAgICAgYW5kIHRoYXQgaXMgcHJlbXVsdGlwbGllZCBieSBhbHBoYSBtdXN0IGhh
dmUgaXRzIGNvbG9yIGNvbXBvbmVudHMgZGl2aWRlZCBieSBhbHBoYS4KKworLy8gMTMuIFJldHVy
biBvdXRwdXQuCiAKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiYgaW1hZ2VFbGVtZW50LCBJbWFn
ZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIElt
YWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKK3sKICAgICAvLyAyLiBJZiBpbWFnZSBpcyBu
b3QgY29tcGxldGVseSBhdmFpbGFibGUsIHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3
aXRoCiAgICAgLy8gYW4gIkludmFsaWRTdGF0ZUVycm9yIiBET01FeGNlcHRpb24gYW5kIGFib3J0
IHRoZXNlIHN0ZXBzLgogCkBAIC0xMjMsMTggKzIyNSwzNiBAQCB2b2lkIEltYWdlQml0bWFwOjpj
cmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SFRNTEltYWdlRWxl
bWVudAogICAgIC8vICAgIHJlc2l6ZUhlaWdodCBvcHRpb25zIGFyZSBub3Qgc3BlY2lmaWVkLCB0
aGVuIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aAogICAgIC8vICAgIGFuICJJbnZhbGlk
U3RhdGVFcnJvciIgRE9NRXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KIAorICAgIGF1
dG8gaW1hZ2VTaXplID0gY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZUZvclJlbmRlcmVyKGltYWdlRWxl
bWVudC0+cmVuZGVyZXIoKSwgMS4wZik7CisgICAgaWYgKCghaW1hZ2VTaXplLndpZHRoKCkgfHwg
IWltYWdlU2l6ZS5oZWlnaHQoKSkgJiYgKCFvcHRpb25zLnJlc2l6ZVdpZHRoIHx8ICFvcHRpb25z
LnJlc2l6ZUhlaWdodCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJy
b3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gYSBzb3VyY2Ugd2l0aCBubyBpbnRy
aW5zaWMgc2l6ZSB3aXRob3V0IHByb3ZpZGluZyByZXNpemUgZGltZW5zaW9ucyIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgLy8gNC4gSWYgaW1hZ2UncyBtZWRpYSBkYXRhIGhhcyBu
byBpbnRyaW5zaWMgZGltZW5zaW9ucyAoZS5nLiBpdCdzIGEgdmVjdG9yIGdyYXBoaWNzCiAgICAg
Ly8gICAgd2l0aCBubyBzcGVjaWZpZWQgY29udGVudCBzaXplKSwgaXQgc2hvdWxkIGJlIHJlbmRl
cmVkIHRvIGEgYml0bWFwIG9mIHRoZSBzaXplCiAgICAgLy8gICAgc3BlY2lmaWVkIGJ5IHRoZSBy
ZXNpemVXaWR0aCBhbmQgdGhlIHJlc2l6ZUhlaWdodCBvcHRpb25zLgogCisgICAgaWYgKCFpbWFn
ZVNpemUud2lkdGgoKSAmJiAhaW1hZ2VTaXplLmhlaWdodCgpKSB7CisgICAgICAgIGltYWdlU2l6
ZS5zZXRXaWR0aChvcHRpb25zLnJlc2l6ZVdpZHRoLnZhbHVlKCkpOworICAgICAgICBpbWFnZVNp
emUuc2V0SGVpZ2h0KG9wdGlvbnMucmVzaXplSGVpZ2h0LnZhbHVlKCkpOworICAgIH0KKwogICAg
IC8vIDUuIElmIHRoZSBzdyBhbmQgc2ggYXJndW1lbnRzIGFyZSBub3Qgc3BlY2lmaWVkIGFuZCBp
bWFnZSdzIG1lZGlhIGRhdGEgaGFzIGJvdGggb3IKICAgICAvLyAgICBlaXRoZXIgb2YgaXRzIGlu
dHJpbnNpYyB3aWR0aCBhbmQgaW50cmluc2ljIGhlaWdodCB2YWx1ZXMgZXF1YWwgdG8gMCwgdGhl
biByZXR1cm4KICAgICAvLyAgICBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0
YXRlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0KICAgICAvLyA2
LiBJZiB0aGUgc2ggYXJndW1lbnQgaXMgbm90IHNwZWNpZmllZCBhbmQgaW1hZ2UncyBtZWRpYSBk
YXRhIGhhcyBhbiBpbnRyaW5zaWMgaGVpZ2h0CiAgICAgLy8gICAgb2YgMCwgdGhlbiByZXR1cm4g
YSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gIkludmFsaWRTdGF0ZUVycm9yIiBET01FeGNlcHRp
b24gYW5kCiAgICAgLy8gICAgYWJvcnQgdGhlc2Ugc3RlcHMuCiAKKyAgICAvLyBGSVhNRTogSXQn
cyB1bmNsZWFyIGhvdyB0aGVzZSBzdGVwcyBjYW4gaGFwcGVuLCBzaW5jZSBzdGVwIDQgcmVxdWly
ZWQgc2V0dGluZyBhCisgICAgLy8gd2lkdGggYW5kIGhlaWdodCBmb3IgdGhlIGltYWdlLgorCisg
ICAgaWYgKCFyZWN0ICYmICghaW1hZ2VTaXplLndpZHRoKCkgfHwgIWltYWdlU2l6ZS5oZWlnaHQo
KSkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3Qg
Y3JlYXRlIEltYWdlQml0bWFwIGZyb20gYSBzb3VyY2Ugd2l0aCBubyBpbnRyaW5zaWMgc2l6ZSB3
aXRob3V0IHByb3ZpZGluZyBkaW1lbnNpb25zIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICAvLyA3LiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogCiAgICAgYXV0byBp
bWFnZUJpdG1hcCA9IGNyZWF0ZSgpOwpAQCAtMTQ1LDE2ICsyNjUsMjYgQEAgdm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJ
bWFnZUVsZW1lbnQKICAgICAvLyAgICBvbmUgdGhhdCB0aGUgZm9ybWF0IGRlZmluZXMgaXMgdG8g
YmUgdXNlZCB3aGVuIGFuaW1hdGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9yIGlzIGRpc2FibGVkKSwK
ICAgICAvLyAgICBvciwgaWYgdGhlcmUgaXMgbm8gc3VjaCBpbWFnZSwgdGhlIGZpcnN0IGZyYW1l
IG9mIHRoZSBhbmltYXRpb24uCiAKLSAgICAvLyBGSVhNRTogTW92ZSB0aGlzIGludG8gYSBzZXBh
cmF0ZSBmdW5jdGlvbiBhbmQgaGFuZGxlIHRoZSBjcm9wcGluZy9yZXNpemluZy4KLSAgICBhdXRv
IGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShpbWFnZUVsZW1lbnQt
PndpZHRoKCksIGltYWdlRWxlbWVudC0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsK
KyAgICBhdXRvIHNvdXJjZVJlY3RhbmdsZSA9IGNyb3BwZWRTb3VyY2VSZWN0YW5nbGVXaXRoRm9y
bWF0dGluZyhyb3VuZGVkSW50U2l6ZShpbWFnZVNpemUpLCBvcHRpb25zLCBXVEZNb3ZlKHJlY3Qp
KTsKKyAgICBpZiAoc291cmNlUmVjdGFuZ2xlLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHBy
b21pc2UucmVqZWN0KHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6ZUZvclNv
dXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUucmV0dXJuVmFsdWUoKSwgb3B0aW9ucyk7Cisg
ICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUob3V0cHV0
U2l6ZS53aWR0aCgpLCBvdXRwdXRTaXplLmhlaWdodCgpKSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7
CiAKLSAgICBhdXRvIGltYWdlRm9yUmVuZGVyID0gaW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgp
LT5pbWFnZUZvclJlbmRlcmVyKGltYWdlRWxlbWVudC0+cmVuZGVyZXIoKSk7CisgICAgYXV0byBp
bWFnZUZvclJlbmRlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlRWxlbWVu
dC0+cmVuZGVyZXIoKSk7CiAgICAgaWYgKCFpbWFnZUZvclJlbmRlcikgewogICAgICAgICBwcm9t
aXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAg
ZnJvbSBpbWFnZSB0aGF0IGNhbid0IGJlIHJlbmRlcmVkIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgRmxvYXRSZWN0IGRyYXdSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdl
RWxlbWVudC0+d2lkdGgoKSwgaW1hZ2VFbGVtZW50LT5oZWlnaHQoKSkpOwotICAgIGJpdG1hcERh
dGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBkcmF3UmVjdCwgZHJhd1Jl
Y3QpOworCisgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7
CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgcGFpbnRpbmdPcHRpb25zOworICAgIHBhaW50aW5n
T3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JS
ZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSk7CisKKyAgICBiaXRtYXBEYXRhLT5j
b250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZUZvclJlbmRlciwgc291cmNlUmVjdGFuZ2xlLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpLCBkZXN0UmVjdCwgcGFpbnRpbmdPcHRpb25zKTsKIAogICAgIGltYWdl
Qml0bWFwLT5tX2JpdG1hcERhdGEgPSBXVEZNb3ZlKGJpdG1hcERhdGEpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlQml0bWFwLmgKaW5kZXggY2EzZjBlZjQ4YzNhYTY3NmUxZDQ1ZDRmMDg2YTQxMjdjZmJl
YjM3Yi4uMzA4YmJkMDQ3Y2NiMDVkZTYwOWQxOTc4ZDY4ZjRkZTkwMGMzNTVjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VCaXRtYXAuaApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2JpdG1hcERhdGE7CiAgICAgYm9vbCBtX2RldGFj
aGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fb3JpZ2luQ2xlYW4geyBmYWxzZSB9OworICAgIGJv
b2wgbV9vcmlnaW5DbGVhbiB7IHRydWUgfTsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324725</attachid>
            <date>2017-10-24 14:37:20 -0700</date>
            <delta_ts>2017-10-24 14:41:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178687-20171025083717.patch</filename>
            <type>text/plain</type>
            <size>38454</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMzNzVmNTgxYmQ3YWNm
ZGE4YzI1YTkwYzdiOGRiODQyM2VlNTdiYS4uYmM0ZjVlODU2MGRmMDNjMDdmOTczMWRlZDA0ZmQw
YmFkNWE4YzhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTEwLTI0ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcmVzaXppbmcg
b3B0aW9ucyBmb3IgSW1hZ2VCaXRtYXAgcmVuZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg2ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1MTM1NDE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCBtYW55IG9mIHRoZSBzaXppbmcgb3B0aW9ucyBmb3IgY3JlYXRlSW1hZ2VC
aXRtYXAuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvMmRjb250ZXh0L2ltYWdlYml0bWFwL2Ny
ZWF0ZUltYWdlQml0bWFwLXNpemluZy5odG1sCisKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyb3BwZWRTb3VyY2VSZWN0YW5nbGVXaXRoRm9ybWF0
dGluZyk6CisKKyAgICAgICAgICAgIEltcGxlbWVudCB0aGUgZmlyc3QgYml0IG9mIHRoZSBhbGdv
cml0aG0gZnJvbQorICAgICAgICAgICAgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbi4KKworICAgICAg
ICAoV2ViQ29yZTo6b3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZSk6CisKKyAgICAgICAgICAg
IC4uLiBhbmQgdGhlbiB0aGUgc2Vjb25kIGJpdC4gTGVhdmUgdGhlIHJlc3QgaW4KKyAgICAgICAg
ICAgIGNvbW1lbnRzIGZvciBub3cuCisKKyAgICAgICAgKFdlYkNvcmU6OmludGVycG9sYXRpb25R
dWFsaXR5Rm9yUmVzaXplUXVhbGl0eSk6CisKKyAgICAgICAgICAgIEhlbHBlciBmdW5jdGlvbiB0
byBtYXAgSW1hZ2VCaXRtYXBPcHRpb25zIHRvCisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQu
CisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKworICAg
ICAgICAgICAgSW1wbGVtZW50IG1vcmUgb2YgdGhlIHNpemluZyBhbGdvcml0aG0uCisKKyAgICAg
ICAgKiBodG1sL0ltYWdlQml0bWFwLmg6IE9yaWdpbiB0YWludGluZyBpcyBkZWZpbmVkIHRvIGJl
IGZhbHNlIGJ5IGRlZmF1bHQuCisKIDIwMTctMTAtMjIgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBw
bGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBkcmF3SW1hZ2UoSW1hZ2VCaXRtYXApIG9uIDJk
IGNhbnZhcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCBhZDQwNTY4ZDQwYjgw
YTgyNTgxY2EwNzk5YWRkYmJiNWEzN2VjYzM5Li4xMmQwOThhMjI0NjY3YTE2MTcwNTNhODllNGQy
YzZlMzBhNjc1ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcApAQCAtNTQsNiAr
NTQsNyBAQCBzdGF0aWMgUmVuZGVyaW5nTW9kZSBidWZmZXJSZW5kZXJpbmdNb2RlID0gQWNjZWxl
cmF0ZWQ7CiBzdGF0aWMgUmVuZGVyaW5nTW9kZSBidWZmZXJSZW5kZXJpbmdNb2RlID0gVW5hY2Nl
bGVyYXRlZDsKICNlbmRpZgogCisKIFJlZjxJbWFnZUJpdG1hcD4gSW1hZ2VCaXRtYXA6OmNyZWF0
ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VCaXRtYXApOwpAQCAtMTA0LDEx
ICsxMDUsMTEyIEBAIHN0YXRpYyBib29sIHRhaW50c09yaWdpbihDYWNoZWRJbWFnZSYgY2FjaGVk
SW1hZ2UpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQ
cm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4m
IGltYWdlRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgc3RkOjpvcHRpb25h
bDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCisvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbWFnZWJpdG1hcC1hbmQtYW5pbWF0
aW9ucy5odG1sI2Nyb3BwZWQtdG8tdGhlLXNvdXJjZS1yZWN0YW5nbGUtd2l0aC1mb3JtYXR0aW5n
CitzdGF0aWMgRXhjZXB0aW9uT3I8SW50UmVjdD4gY3JvcHBlZFNvdXJjZVJlY3RhbmdsZVdpdGhG
b3JtYXR0aW5nKEludFNpemUgaW5wdXRTaXplLCBJbWFnZUJpdG1hcE9wdGlvbnMmIG9wdGlvbnMs
IHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4gcmVjdCkKIHsKLSAgICBVTlVTRURfUEFSQU0ob3B0aW9u
cyk7Ci0gICAgVU5VU0VEX1BBUkFNKHJlY3QpOworICAgIC8vIDIuIElmIGVpdGhlciBvciBib3Ro
IG9mIHJlc2l6ZVdpZHRoIGFuZCByZXNpemVIZWlnaHQgbWVtYmVycyBvZiBvcHRpb25zIGFyZSBs
ZXNzCisgICAgLy8gICAgdGhhbiBvciBlcXVhbCB0byAwLCB0aGVuIHJldHVybiBhIHByb21pc2Ug
cmVqZWN0ZWQgd2l0aCAiSW52YWxpZFN0YXRlRXJyb3IiCisgICAgLy8gICAgRE9NRXhjZXB0aW9u
IGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoKG9wdGlvbnMucmVzaXplV2lkdGggJiYg
b3B0aW9ucy5yZXNpemVXaWR0aC52YWx1ZSgpIDw9IDApIHx8IChvcHRpb25zLnJlc2l6ZUhlaWdo
dCAmJiBvcHRpb25zLnJlc2l6ZUhlaWdodC52YWx1ZSgpIDw9IDApKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJJbnZhbGlkIHJlc2l6ZSBkaW1lbnNpb25z
IiB9OworCisgICAgLy8gMy4gSWYgc3gsIHN5LCBzdyBhbmQgc2ggYXJlIHNwZWNpZmllZCwgbGV0
IHNvdXJjZVJlY3RhbmdsZSBiZSBhIHJlY3RhbmdsZSB3aG9zZQorICAgIC8vICAgIGNvcm5lcnMg
YXJlIHRoZSBmb3VyIHBvaW50cyAoc3gsIHN5KSwgKHN4K3N3LCBzeSksKHN4K3N3LCBzeStzaCks
IChzeCxzeStzaCkuCisgICAgLy8gICAgT3RoZXJ3aXNlIGxldCBzb3VyY2VSZWN0YW5nbGUgYmUg
YSByZWN0YW5nbGUgd2hvc2UgY29ybmVycyBhcmUgdGhlIGZvdXIgcG9pbnRzCisgICAgLy8gICAg
KDAsMCksICh3aWR0aCBvZiBpbnB1dCwgMCksICh3aWR0aCBvZiBpbnB1dCwgaGVpZ2h0IG9mIGlu
cHV0KSwgKDAsIGhlaWdodCBvZgorICAgIC8vICAgIGlucHV0KS4KKyAgICBhdXRvIHNvdXJjZVJl
Y3RhbmdsZSA9IHJlY3QudmFsdWVfb3IoSW50UmVjdCB7IDAsIDAsIGlucHV0U2l6ZS53aWR0aCgp
LCBpbnB1dFNpemUuaGVpZ2h0KCkgfSk7CisKKyAgICAvLyA0LiBDbGlwIHNvdXJjZVJlY3Rhbmds
ZSB0byB0aGUgZGltZW5zaW9ucyBvZiBpbnB1dC4KKworICAgIHNvdXJjZVJlY3RhbmdsZS5zZXRX
aWR0aChzdGQ6Om1pbihzb3VyY2VSZWN0YW5nbGUud2lkdGgoKSwgaW5wdXRTaXplLndpZHRoKCkp
KTsKKyAgICBzb3VyY2VSZWN0YW5nbGUuc2V0SGVpZ2h0KHN0ZDo6bWluKHNvdXJjZVJlY3Rhbmds
ZS5oZWlnaHQoKSwgaW5wdXRTaXplLmhlaWdodCgpKSk7CisKKyAgICByZXR1cm4gc291cmNlUmVj
dGFuZ2xlOworfQorCitzdGF0aWMgSW50U2l6ZSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xl
KEludFJlY3Qgc291cmNlUmVjdGFuZ2xlLCBJbWFnZUJpdG1hcE9wdGlvbnMmIG9wdGlvbnMpCit7
CisgICAgLy8gNS4gTGV0IG91dHB1dFdpZHRoIGJlIGRldGVybWluZWQgYXMgZm9sbG93czoKKyAg
ICBhdXRvIG91dHB1dFdpZHRoID0gWyZdICgpIC0+IGludCB7CisgICAgICAgIGlmIChvcHRpb25z
LnJlc2l6ZVdpZHRoKQorICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMucmVzaXplV2lkdGgudmFs
dWUoKTsKKyAgICAgICAgaWYgKG9wdGlvbnMucmVzaXplSGVpZ2h0KQorICAgICAgICAgICAgcmV0
dXJuIGNlaWwoc291cmNlUmVjdGFuZ2xlLndpZHRoKCkgKiBzdGF0aWNfY2FzdDxkb3VibGU+KG9w
dGlvbnMucmVzaXplSGVpZ2h0LnZhbHVlKCkpIC8gc291cmNlUmVjdGFuZ2xlLmhlaWdodCgpKTsK
KyAgICAgICAgcmV0dXJuIHNvdXJjZVJlY3RhbmdsZS53aWR0aCgpOworICAgIH0oKTsKKworICAg
IC8vIDYuIExldCBvdXRwdXRIZWlnaHQgYmUgZGV0ZXJtaW5lZCBhcyBmb2xsb3dzOgorICAgIGF1
dG8gb3V0cHV0SGVpZ2h0ID0gWyZdICgpIC0+IGludCB7CisgICAgICAgIGlmIChvcHRpb25zLnJl
c2l6ZUhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnJlc2l6ZUhlaWdodC52YWx1
ZSgpOworICAgICAgICBpZiAob3B0aW9ucy5yZXNpemVXaWR0aCkKKyAgICAgICAgICAgIHJldHVy
biBjZWlsKHNvdXJjZVJlY3RhbmdsZS5oZWlnaHQoKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4ob3B0
aW9ucy5yZXNpemVXaWR0aC52YWx1ZSgpKSAvIHNvdXJjZVJlY3RhbmdsZS53aWR0aCgpKTsKKyAg
ICAgICAgcmV0dXJuIHNvdXJjZVJlY3RhbmdsZS5oZWlnaHQoKTsKKyAgICB9KCk7CisKKyAgICBy
ZXR1cm4geyBvdXRwdXRXaWR0aCwgb3V0cHV0SGVpZ2h0IH07Cit9CisKK3N0YXRpYyBJbnRlcnBv
bGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkoSW1hZ2VC
aXRtYXBPcHRpb25zOjpSZXNpemVRdWFsaXR5IHJlc2l6ZVF1YWxpdHkpCit7CisgICAgc3dpdGNo
IChyZXNpemVRdWFsaXR5KSB7CisgICAgY2FzZSBJbWFnZUJpdG1hcE9wdGlvbnM6OlJlc2l6ZVF1
YWxpdHk6OlBpeGVsYXRlZDoKKyAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25Ob25lOworICAg
IGNhc2UgSW1hZ2VCaXRtYXBPcHRpb25zOjpSZXNpemVRdWFsaXR5OjpMb3c6CisgICAgICAgIHJl
dHVybiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsgLy8gTG93IGlzIHRoZSBkZWZhdWx0LgorICAgIGNh
c2UgSW1hZ2VCaXRtYXBPcHRpb25zOjpSZXNpemVRdWFsaXR5OjpNZWRpdW06CisgICAgICAgIHJl
dHVybiBJbnRlcnBvbGF0aW9uTWVkaXVtOworICAgIGNhc2UgSW1hZ2VCaXRtYXBPcHRpb25zOjpS
ZXNpemVRdWFsaXR5OjpIaWdoOgorICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkhpZ2g7Cisg
ICAgfQorfQorCisvLyBGSVhNRTogTW9yZSBzdGVwcyBmcm9tIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL2ltYWdlYml0bWFwLWFuZC1hbmltYXRpb25zLmh0bWwjY3JvcHBl
ZC10by10aGUtc291cmNlLXJlY3RhbmdsZS13aXRoLWZvcm1hdHRpbmcKKworLy8gNy4gUGxhY2Ug
aW5wdXQgb24gYW4gaW5maW5pdGUgdHJhbnNwYXJlbnQgYmxhY2sgZ3JpZCBwbGFuZSwgcG9zaXRp
b25lZCBzbyB0aGF0IGl0cworLy8gICAgdG9wIGxlZnQgY29ybmVyIGlzIGF0IHRoZSBvcmlnaW4g
b2YgdGhlIHBsYW5lLCB3aXRoIHRoZSB4LWNvb3JkaW5hdGUgaW5jcmVhc2luZworLy8gICAgdG8g
dGhlIHJpZ2h0LCBhbmQgdGhlIHktY29vcmRpbmF0ZSBpbmNyZWFzaW5nIGRvd24sIGFuZCB3aXRo
IGVhY2ggcGl4ZWwgaW4gdGhlCisvLyAgICBpbnB1dCBpbWFnZSBkYXRhIG9jY3VweWluZyBhIGNl
bGwgb24gdGhlIHBsYW5lJ3MgZ3JpZC4KKworLy8gOC4gTGV0IG91dHB1dCBiZSB0aGUgcmVjdGFu
Z2xlIG9uIHRoZSBwbGFuZSBkZW5vdGVkIGJ5IHNvdXJjZVJlY3RhbmdsZS4KKworLy8gOS4gU2Nh
bGUgb3V0cHV0IHRvIHRoZSBzaXplIHNwZWNpZmllZCBieSBvdXRwdXRXaWR0aCBhbmQgb3V0cHV0
SGVpZ2h0LiBUaGUgdXNlcgorLy8gICAgYWdlbnQgc2hvdWxkIHVzZSB0aGUgdmFsdWUgb2YgdGhl
IHJlc2l6ZVF1YWxpdHkgb3B0aW9uIHRvIGd1aWRlIHRoZSBjaG9pY2Ugb2YKKy8vICAgIHNjYWxp
bmcgYWxnb3JpdGhtLgorCisvLyAxMC4gSWYgdGhlIHZhbHVlIG9mIHRoZSBpbWFnZU9yaWVudGF0
aW9uIG1lbWJlciBvZiBvcHRpb25zIGlzICJmbGlwWSIsIG91dHB1dCBtdXN0CisvLyAgICAgYmUg
ZmxpcHBlZCB2ZXJ0aWNhbGx5LCBkaXNyZWdhcmRpbmcgYW55IGltYWdlIG9yaWVudGF0aW9uIG1l
dGFkYXRhIG9mIHRoZSBzb3VyY2UKKy8vICAgICAoc3VjaCBhcyBFWElGIG1ldGFkYXRhKSwgaWYg
YW55LgorCisvLyAxMS4gSWYgaW1hZ2UgaXMgYW4gaW1nIGVsZW1lbnQgb3IgYSBCbG9iIG9iamVj
dCwgbGV0IHZhbCBiZSB0aGUgdmFsdWUgb2YgdGhlCisvLyAgICAgY29sb3JTcGFjZUNvbnZlcnNp
b24gbWVtYmVyIG9mIG9wdGlvbnMsIGFuZCB0aGVuIHJ1biB0aGVzZSBzdWJzdGVwczoKKy8vCisv
LyAgICAgMS4gSWYgdmFsIGlzICJkZWZhdWx0IiwgdGhlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24g
YmVoYXZpb3IgaXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMsCisvLyAgICAgICAgYW5kIHNob3Vs
ZCBiZSBjaG9zZW4gYWNjb3JkaW5nIHRvIHRoZSBjb2xvciBzcGFjZSB0aGF0IHRoZSBpbXBsZW1l
bnRhdGlvbiB1c2VzIGZvcgorLy8gICAgICAgIGRyYXdpbmcgaW1hZ2VzIG9udG8gdGhlIGNhbnZh
cy4KKy8vCisvLyAgICAgMi4gSWYgdmFsIGlzICJub25lIiwgb3V0cHV0IG11c3QgYmUgZGVjb2Rl
ZCB3aXRob3V0IHBlcmZvcm1pbmcgYW55IGNvbG9yIHNwYWNlCisvLyAgICAgICAgY29udmVyc2lv
bnMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgaW1hZ2UgZGVjb2RpbmcgYWxnb3JpdGhtIG11c3QgaWdu
b3JlIGNvbG9yIHByb2ZpbGUKKy8vICAgICAgICBtZXRhZGF0YSBlbWJlZGRlZCBpbiB0aGUgc291
cmNlIGRhdGEgYXMgd2VsbCBhcyB0aGUgZGlzcGxheSBkZXZpY2UgY29sb3IgcHJvZmlsZS4KKwor
Ly8gMTIuIExldCB2YWwgYmUgdGhlIHZhbHVlIG9mIHByZW11bHRpcGx5QWxwaGEgbWVtYmVyIG9m
IG9wdGlvbnMsIGFuZCB0aGVuIHJ1biB0aGVzZSBzdWJzdGVwczoKKy8vCisvLyAgICAgMS4gSWYg
dmFsIGlzICJkZWZhdWx0IiwgdGhlIGFscGhhIHByZW11bHRpcGxpY2F0aW9uIGJlaGF2aW9yIGlz
IGltcGxlbWVudGF0aW9uLXNwZWNpZmljLAorLy8gICAgICAgIGFuZCBzaG91bGQgYmUgY2hvc2Vu
IGFjY29yZGluZyB0byBpbXBsZW1lbnRhdGlvbiBkZWVtcyBvcHRpbWFsIGZvciBkcmF3aW5nIGlt
YWdlcworLy8gICAgICAgIG9udG8gdGhlIGNhbnZhcy4KKy8vCisvLyAgICAgMi4gSWYgdmFsIGlz
ICJwcmVtdWx0aXBseSIsIHRoZSBvdXRwdXQgdGhhdCBpcyBub3QgcHJlbXVsdGlwbGllZCBieSBh
bHBoYSBtdXN0IGhhdmUgaXRzCisvLyAgICAgICAgY29sb3IgY29tcG9uZW50cyBtdWx0aXBsaWVk
IGJ5IGFscGhhIGFuZCB0aGF0IGlzIHByZW11bHRpcGxpZWQgYnkgYWxwaGEgbXVzdCBiZSBsZWZ0
CisvLyAgICAgICAgdW50b3VjaGVkLgorLy8KKy8vICAgICAzLiBJZiB2YWwgaXMgIm5vbmUiLCB0
aGUgb3V0cHV0IHRoYXQgaXMgbm90IHByZW11bHRpcGxpZWQgYnkgYWxwaGEgbXVzdCBiZSBsZWZ0
IHVudG91Y2hlZAorLy8gICAgICAgIGFuZCB0aGF0IGlzIHByZW11bHRpcGxpZWQgYnkgYWxwaGEg
bXVzdCBoYXZlIGl0cyBjb2xvciBjb21wb25lbnRzIGRpdmlkZWQgYnkgYWxwaGEuCisKKy8vIDEz
LiBSZXR1cm4gb3V0cHV0LgogCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mIGltYWdlRWxlbWVu
dCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiBy
ZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit7CiAgICAgLy8gMi4gSWYgaW1h
Z2UgaXMgbm90IGNvbXBsZXRlbHkgYXZhaWxhYmxlLCB0aGVuIHJldHVybiBhIHByb21pc2UgcmVq
ZWN0ZWQgd2l0aAogICAgIC8vIGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9NRXhjZXB0aW9uIGFu
ZCBhYm9ydCB0aGVzZSBzdGVwcy4KIApAQCAtMTIzLDE4ICsyMjUsMzYgQEAgdm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJ
bWFnZUVsZW1lbnQKICAgICAvLyAgICByZXNpemVIZWlnaHQgb3B0aW9ucyBhcmUgbm90IHNwZWNp
ZmllZCwgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGgKICAgICAvLyAgICBhbiAi
SW52YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAK
KyAgICBhdXRvIGltYWdlU2l6ZSA9IGNhY2hlZEltYWdlLT5pbWFnZVNpemVGb3JSZW5kZXJlcihp
bWFnZUVsZW1lbnQtPnJlbmRlcmVyKCksIDEuMGYpOworICAgIGlmICgoIWltYWdlU2l6ZS53aWR0
aCgpIHx8ICFpbWFnZVNpemUuaGVpZ2h0KCkpICYmICghb3B0aW9ucy5yZXNpemVXaWR0aCB8fCAh
b3B0aW9ucy5yZXNpemVIZWlnaHQpKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRT
dGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgc291cmNlIHdpdGgg
bm8gaW50cmluc2ljIHNpemUgd2l0aG91dCBwcm92aWRpbmcgcmVzaXplIGRpbWVuc2lvbnMiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIDQuIElmIGltYWdlJ3MgbWVkaWEgZGF0
YSBoYXMgbm8gaW50cmluc2ljIGRpbWVuc2lvbnMgKGUuZy4gaXQncyBhIHZlY3RvciBncmFwaGlj
cwogICAgIC8vICAgIHdpdGggbm8gc3BlY2lmaWVkIGNvbnRlbnQgc2l6ZSksIGl0IHNob3VsZCBi
ZSByZW5kZXJlZCB0byBhIGJpdG1hcCBvZiB0aGUgc2l6ZQogICAgIC8vICAgIHNwZWNpZmllZCBi
eSB0aGUgcmVzaXplV2lkdGggYW5kIHRoZSByZXNpemVIZWlnaHQgb3B0aW9ucy4KIAorICAgIGlm
ICghaW1hZ2VTaXplLndpZHRoKCkgJiYgIWltYWdlU2l6ZS5oZWlnaHQoKSkgeworICAgICAgICBp
bWFnZVNpemUuc2V0V2lkdGgob3B0aW9ucy5yZXNpemVXaWR0aC52YWx1ZSgpKTsKKyAgICAgICAg
aW1hZ2VTaXplLnNldEhlaWdodChvcHRpb25zLnJlc2l6ZUhlaWdodC52YWx1ZSgpKTsKKyAgICB9
CisKICAgICAvLyA1LiBJZiB0aGUgc3cgYW5kIHNoIGFyZ3VtZW50cyBhcmUgbm90IHNwZWNpZmll
ZCBhbmQgaW1hZ2UncyBtZWRpYSBkYXRhIGhhcyBib3RoIG9yCiAgICAgLy8gICAgZWl0aGVyIG9m
IGl0cyBpbnRyaW5zaWMgd2lkdGggYW5kIGludHJpbnNpYyBoZWlnaHQgdmFsdWVzIGVxdWFsIHRv
IDAsIHRoZW4gcmV0dXJuCiAgICAgLy8gICAgYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gIklu
dmFsaWRTdGF0ZUVycm9yIiBET01FeGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotCiAg
ICAgLy8gNi4gSWYgdGhlIHNoIGFyZ3VtZW50IGlzIG5vdCBzcGVjaWZpZWQgYW5kIGltYWdlJ3Mg
bWVkaWEgZGF0YSBoYXMgYW4gaW50cmluc2ljIGhlaWdodAogICAgIC8vICAgIG9mIDAsIHRoZW4g
cmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9N
RXhjZXB0aW9uIGFuZAogICAgIC8vICAgIGFib3J0IHRoZXNlIHN0ZXBzLgogCisgICAgLy8gRklY
TUU6IEl0J3MgdW5jbGVhciBob3cgdGhlc2Ugc3RlcHMgY2FuIGhhcHBlbiwgc2luY2Ugc3RlcCA0
IHJlcXVpcmVkIHNldHRpbmcgYQorICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgZm9yIHRoZSBpbWFn
ZS4KKworICAgIGlmICghcmVjdCAmJiAoIWltYWdlU2l6ZS53aWR0aCgpIHx8ICFpbWFnZVNpemUu
aGVpZ2h0KCkpKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAi
Q2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgc291cmNlIHdpdGggbm8gaW50cmluc2lj
IHNpemUgd2l0aG91dCBwcm92aWRpbmcgZGltZW5zaW9ucyIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgLy8gNy4gQ3JlYXRlIGEgbmV3IEltYWdlQml0bWFwIG9iamVjdC4KIAogICAg
IGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoKTsKQEAgLTE0NSwxNiArMjY1LDI2IEBAIHZvaWQg
SW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0
cjxIVE1MSW1hZ2VFbGVtZW50CiAgICAgLy8gICAgb25lIHRoYXQgdGhlIGZvcm1hdCBkZWZpbmVz
IGlzIHRvIGJlIHVzZWQgd2hlbiBhbmltYXRpb24gaXMgbm90IHN1cHBvcnRlZCBvciBpcyBkaXNh
YmxlZCksCiAgICAgLy8gICAgb3IsIGlmIHRoZXJlIGlzIG5vIHN1Y2ggaW1hZ2UsIHRoZSBmaXJz
dCBmcmFtZSBvZiB0aGUgYW5pbWF0aW9uLgogCi0gICAgLy8gRklYTUU6IE1vdmUgdGhpcyBpbnRv
IGEgc2VwYXJhdGUgZnVuY3Rpb24gYW5kIGhhbmRsZSB0aGUgY3JvcHBpbmcvcmVzaXppbmcuCi0g
ICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoaW1hZ2VF
bGVtZW50LT53aWR0aCgpLCBpbWFnZUVsZW1lbnQtPmhlaWdodCgpKSwgYnVmZmVyUmVuZGVyaW5n
TW9kZSk7CisgICAgYXV0byBzb3VyY2VSZWN0YW5nbGUgPSBjcm9wcGVkU291cmNlUmVjdGFuZ2xl
V2l0aEZvcm1hdHRpbmcocm91bmRlZEludFNpemUoaW1hZ2VTaXplKSwgb3B0aW9ucywgV1RGTW92
ZShyZWN0KSk7CisgICAgaWYgKHNvdXJjZVJlY3RhbmdsZS5oYXNFeGNlcHRpb24oKSkgeworICAg
ICAgICBwcm9taXNlLnJlamVjdChzb3VyY2VSZWN0YW5nbGUucmVsZWFzZUV4Y2VwdGlvbigpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNp
emVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xlLnJldHVyblZhbHVlKCksIG9wdGlv
bnMpOworICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXpl
KG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmlu
Z01vZGUpOwogCi0gICAgYXV0byBpbWFnZUZvclJlbmRlciA9IGltYWdlRWxlbWVudC0+Y2FjaGVk
SW1hZ2UoKS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZUVsZW1lbnQtPnJlbmRlcmVyKCkpOworICAg
IGF1dG8gaW1hZ2VGb3JSZW5kZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFn
ZUVsZW1lbnQtPnJlbmRlcmVyKCkpOwogICAgIGlmICghaW1hZ2VGb3JSZW5kZXIpIHsKICAgICAg
ICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdl
Qml0bWFwIGZyb20gaW1hZ2UgdGhhdCBjYW4ndCBiZSByZW5kZXJlZCIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIEZsb2F0UmVjdCBkcmF3UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6
ZShpbWFnZUVsZW1lbnQtPndpZHRoKCksIGltYWdlRWxlbWVudC0+aGVpZ2h0KCkpKTsKLSAgICBi
aXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZUZvclJlbmRlciwgZHJhd1JlY3Qs
IGRyYXdSZWN0KTsKKworICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1
dFNpemUpOworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKKyAgICBw
YWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFs
aXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOworCisgICAgYml0bWFw
RGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3Vy
Y2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CiAKICAg
ICBpbWFnZUJpdG1hcC0+bV9iaXRtYXBEYXRhID0gV1RGTW92ZShiaXRtYXBEYXRhKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUJpdG1hcC5oCmluZGV4IGNhM2YwZWY0OGMzYWE2NzZlMWQ0NWQ0ZjA4NmE0
MTI3Y2ZiZWIzN2IuLjMwOGJiZDA0N2NjYjA1ZGU2MDlkMTk3OGQ2OGY0ZGU5MDBjMzU1Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9iaXRtYXBEYXRhOwogICAgIGJvb2wg
bV9kZXRhY2hlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX29yaWdpbkNsZWFuIHsgZmFsc2UgfTsK
KyAgICBib29sIG1fb3JpZ2luQ2xlYW4geyB0cnVlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmM2NDgw
YzQwYzAwNjQwMzNlMjg2NGJlZjQ1OTRkMWI5YTMxMzFlNS4uNTVkY2ZlOTViY2FjZTY2Zjk5ZmNj
M2EyYjA4MTg0NTg0MmU5NDgyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTEwLTI0ICBE
ZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcmVzaXpp
bmcgb3B0aW9ucyBmb3IgSW1hZ2VCaXRtYXAgcmVuZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg2ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM1MTM1NDE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vcmUgSW1hZ2VCaXRtYXAgdGVzdHMsIHRoaXMgdGltZSBmb2N1c2luZyBvbiBzaXpp
bmcuCisKKyAgICAgICAgKiBodHRwL3dwdC8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvY29tbW9uLmpz
OgorICAgICAgICAoY3JlYXRlQ2FudmFzT2ZTaXplKToKKyAgICAgICAgKGNyZWF0ZTl4OUNhbnZh
c1dpdGgyZENvbnRleHQpOgorICAgICAgICAoY3JlYXRlMTh4MThDYW52YXNXaXRoMmRDb250ZXh0
KToKKworICAgICAgICAgICAgSGVscGVyIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGh0dHAvd3B0
LzJkY29udGV4dC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC1zaXppbmctZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvY3Jl
YXRlSW1hZ2VCaXRtYXAtc2l6aW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0LzJk
Y29udGV4dC9pbWFnZWJpdG1hcC9kcmF3SW1hZ2UtSW1hZ2VCaXRtYXAuaHRtbDoKKyAgICAgICAg
KiBodHRwL3dwdC8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvcmVzb3VyY2VzL3RhcmdldC1ibHVlLWRv
dC1uby1pbnRyaW5zaWMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC8yZGNvbnRleHQv
aW1hZ2ViaXRtYXAvcmVzb3VyY2VzL3RhcmdldC1ibHVlLWRvdC5wbmc6IFJlbmFtZWQgZnJvbSBM
YXlvdXRUZXN0cy9odHRwL3dwdC8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvdGFyZ2V0LWJsdWUtZG90
LnBuZy4KKyAgICAgICAgKiBodHRwL3dwdC8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvcmVzb3VyY2Vz
L3RhcmdldC1ibHVlLWRvdC5zdmc6IEFkZGVkLgorCiAyMDE3LTEwLTIyICBEZWFuIEphY2tzb24g
IDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgZHJhd0ltYWdlKEltYWdlQml0
bWFwKSBvbiAyZCBjYW52YXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0LzJkY29u
dGV4dC9pbWFnZWJpdG1hcC9jb21tb24uanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC8yZGNvbnRl
eHQvaW1hZ2ViaXRtYXAvY29tbW9uLmpzCmluZGV4IGFhZTkyODI1MmRjNDE3Njg1MGRhMmM0OTUy
ZDljN2ZjYmU0NjU1ZjYuLmJiYmZlODc1N2U5MDk1ZGYyM2VmZGMwMjBmMGE3NDJjM2RhMzcyNjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0LzJkY29udGV4dC9pbWFnZWJpdG1hcC9j
b21tb24uanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvMmRjb250ZXh0L2ltYWdlYml0bWFw
L2NvbW1vbi5qcwpAQCAtNTcsMTAgKzU3LDIyIEBAIGZ1bmN0aW9uIGluaXRpYWxpemVJbWFnZURh
dGEoaW1nRGF0YSwgd2lkdGgsIGhlaWdodCkKICAgICAgICAgICAgIGltZ0RhdGEuZGF0YVtpICog
d2lkdGggKiA0ICsgaiAqIDQgKyAyXSA9IDI1NTsKIH0KIAorZnVuY3Rpb24gY3JlYXRlQ2FudmFz
T2ZTaXplKHdpZHRoLCBoZWlnaHQpCit7CisgICAgY29uc3QgYyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOworICAgIGMud2lkdGggPSB3aWR0aDsKKyAgICBjLmhlaWdodCA9IGhl
aWdodDsKKyAgICByZXR1cm4gYzsKK30KKwogZnVuY3Rpb24gY3JlYXRlOXg5Q2FudmFzV2l0aDJk
Q29udGV4dCgpCiB7Ci0gICAgbGV0IGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMi
KTsKLSAgICBjLndpZHRoID0gOTsKLSAgICBjLmhlaWdodCA9IDk7CisgICAgY29uc3QgYyA9IGNy
ZWF0ZUNhbnZhc09mU2l6ZSg5LCA5KTsKKyAgICByZXR1cm4gW2MsIGMuZ2V0Q29udGV4dCgiMmQi
KV07Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZTE4eDE4Q2FudmFzV2l0aDJkQ29udGV4dCgpCit7Cisg
ICAgY29uc3QgYyA9IGNyZWF0ZUNhbnZhc09mU2l6ZSgxOCwgMTgpOwogICAgIHJldHVybiBbYywg
Yy5nZXRDb250ZXh0KCIyZCIpXTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
LzJkY29udGV4dC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC1zaXppbmctZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvMmRjb250ZXh0L2ltYWdlYml0bWFwL2NyZWF0ZUlt
YWdlQml0bWFwLXNpemluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI4MGRjY2YzZDY2ZWY1
MmU4MDlhMTM2MzQ5OWUzMTc3NDg0YjdlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0LzJkY29udGV4dC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC1zaXppbmct
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKKworUEFTUyBjcmVhdGVJbWFnZUJpdG1hcCBy
ZWplY3RzIHdpdGggVHlwZUVycm9yIGlmIHJlc2l6ZVdpZHRoIGlzIG5lZ2F0aXZlIAorUEFTUyBj
cmVhdGVJbWFnZUJpdG1hcCByZWplY3RzIHdpdGggVHlwZUVycm9yIGlmIHJlc2l6ZUhlaWdodCBp
cyBuZWdhdGl2ZSAKK1BBU1MgY3JlYXRlSW1hZ2VCaXRtYXAgd2l0aCBjcm9wcGVkIHNvdXJjZSAK
K1BBU1MgY3JlYXRlSW1hZ2VCaXRtYXAgd2l0aCBhIGNyb3BwaW5nIHJlY3RhbmdsZSB0aGF0IGlz
IGJpZ2dlciB0aGFuIHRoZSBzb3VyY2UgCitQQVNTIGNyZWF0ZUltYWdlQml0bWFwIHdpdGggcmVz
aXplV2lkdGggYW5kIHJlc2l6ZUhlaWdodCAKK1BBU1MgY3JlYXRlSW1hZ2VCaXRtYXAgd2l0aCBv
bmx5IHJlc2l6ZUhlaWdodCBzaG91bGQgY2FsY3VsYXRlIHJlc2l6ZVdpZHRoIAorUEFTUyBjcmVh
dGVJbWFnZUJpdG1hcCB3aXRoIG9ubHkgcmVzaXplV2lkdGggc2hvdWxkIGNhbGN1bGF0ZSByZXNp
emVIZWlnaHQgCitQQVNTIGNyZWF0ZUltYWdlQml0bWFwIHdpdGggYW4gU1ZHIHVzZXMgaW50cmlu
c2ljIHNpemUgCitQQVNTIGNyZWF0ZUltYWdlQml0bWFwIHdpdGggYW4gU1ZHIHRoYXQgaGFzIG5v
IGludHJpbnNpYyBzaXplIHVzZXMgcmVzaXplIHBhcmFtZXRlcnMgCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0LzJkY29udGV4dC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1h
cC1zaXppbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0LzJkY29udGV4dC9pbWFnZWJpdG1h
cC9jcmVhdGVJbWFnZUJpdG1hcC1zaXppbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzA3OGVhNjk1Y2Zh
NWFiYTZhZDMyNzA3ZDdjM2Q4OTFhNTFhYjk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvMmRjb250ZXh0L2ltYWdlYml0bWFwL2NyZWF0ZUltYWdlQml0bWFwLXNpemlu
Zy5odG1sCkBAIC0wLDAgKzEsMTg5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHRpdGxl
PmNyZWF0ZUltYWdlQml0bWFwIHdpdGggc2l6aW5nIHRlc3Q8L3RpdGxlPgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9jb21t
b24vY2FudmFzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjb21tb24uanMiPjwv
c2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY29tbW9uL2NhbnZhcy10ZXN0
cy5jc3MiPgorPGJvZHk+Cis8c2NyaXB0PgorKGZ1bmN0aW9uKCkgeworCisgICAgLy8gVGhlIElt
YWdlQml0bWFwIHBhcnQgb2YgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBzYXlzIHRoaXMgc2hvdWxk
IGJlIGFuIEludmFsaWRTdGF0ZUVycm9yLCBidXQKKyAgICAvLyB0aGUgSURMIHJlcXVpcmVzIGFu
IHVuc2lnbmVkIHZhbHVlLCBzbyB0aGUgVHlwZUVycm9yIHdpbGwgaGl0IGZpcnN0LgorICAgIHBy
b21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dCwgbmV3IFR5cGVFcnJvciwgY3JlYXRlSW1hZ2VCaXRtYXAobmV3IEltYWdlKCksIDAsIDAsIDEw
LCAxMCwgeyByZXNpemVXaWR0aDogLTEwLCByZXNpemVIZWlnaHQ6IDEwIH0pKTsKKyAgICB9LCAi
Y3JlYXRlSW1hZ2VCaXRtYXAgcmVqZWN0cyB3aXRoIFR5cGVFcnJvciBpZiByZXNpemVXaWR0aCBp
cyBuZWdhdGl2ZSIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAg
cmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yLCBjcmVhdGVJbWFnZUJpdG1h
cChuZXcgSW1hZ2UoKSwgMCwgMCwgMTAsIDEwLCB7IHJlc2l6ZVdpZHRoOiAxMCwgcmVzaXplSGVp
Z2h0OiAtMTAgfSkpOworICAgIH0sICJjcmVhdGVJbWFnZUJpdG1hcCByZWplY3RzIHdpdGggVHlw
ZUVycm9yIGlmIHJlc2l6ZUhlaWdodCBpcyBuZWdhdGl2ZSIpOworCisgICAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2
ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgaW1nID0gbmV3IEltYWdlKCk7CisgICAgICAg
ICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24oKSB7IHJlc29sdmUoaW1nKTsgfTsKKyAgICAgICAg
ICAgIGltZy5zcmMgPSAicmVzb3VyY2VzL3RhcmdldC1ibHVlLWRvdC5wbmciOworICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uKGltZykgeworICAgICAgICAgICAgLy8gQ3JvcCB0aGUgOXg5IGltYWdl
IGludG8gNXg1LgorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKGltZywgMCwg
MCwgNSwgNSk7CisgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oaW1hZ2VCaXRtYXApIHsKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoaW1hZ2VCaXRtYXAud2lkdGgsIDUsICJJbWFnZUJpdG1hcCB3
aWR0aCBzaG91bGQgYmUgNSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhpbWFnZUJpdG1h
cC5oZWlnaHQsIDUsICJJbWFnZUJpdG1hcCBoZWlnaHQgc2hvdWxkIGJlIDUiKTsKKworICAgICAg
ICAgICAgbGV0IFtjYW52YXMsIGN0eF0gPSBjcmVhdGU5eDlDYW52YXNXaXRoMmRDb250ZXh0KCk7
CisgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlQml0bWFwLCAwLCAwKTsKKyAgICAgICAg
ICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDAsMCwgMCwyNTUsMCwyNTUsICIwLDAiLCAiMCwyNTUs
MCwyNTUiKTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDQsMywgMCwyNTUsMCwy
NTUsICI0LDMiLCAiMCwyNTUsMCwyNTUiKTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52
YXMsIDMsNCwgMCwyNTUsMCwyNTUsICIzLDQiLCAiMCwyNTUsMCwyNTUiKTsKKyAgICAgICAgICAg
IF9hc3NlcnRQaXhlbChjYW52YXMsIDQsNCwgMCwwLDI1NSwyNTUsICI0LDQiLCAiMCwwLDI1NSwy
NTUiKTsgLy8gVGFyZ2V0IGJsdWUgZG90LgorICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZh
cywgNSw0LCAwLDAsMCwwLCAiNSw0IiwgIjAsMCwwLDAiKTsgLy8gT3V0c2lkZSBzb3VyY2UgcmVj
dGFuZ2xlIHNvIHRyYW5zcGFyZW50LgorICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywg
NCw1LCAwLDAsMCwwLCAiNCw1IiwgIjAsMCwwLDAiKTsgLy8gT3V0c2lkZSBzb3VyY2UgcmVjdGFu
Z2xlIHNvIHRyYW5zcGFyZW50LgorICAgICAgICB9KTsKKyAgICB9LCAiY3JlYXRlSW1hZ2VCaXRt
YXAgd2l0aCBjcm9wcGVkIHNvdXJjZSIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkg
eworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7
CisgICAgICAgICAgICBsZXQgaW1nID0gbmV3IEltYWdlKCk7CisgICAgICAgICAgICBpbWcub25s
b2FkID0gZnVuY3Rpb24oKSB7IHJlc29sdmUoaW1nKTsgfTsKKyAgICAgICAgICAgIGltZy5zcmMg
PSAicmVzb3VyY2VzL3RhcmdldC1ibHVlLWRvdC5wbmciOworICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uKGltZykgeworICAgICAgICAgICAgLy8gU291cmNlIGlzIG9ubHkgOXg5LCBzbyB0aGUgMTAw
eDEwMCB3aWxsIGJlIGNsYW1wZWQuCisgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRt
YXAoaW1nLCAwLCAwLCAxMDAsIDEwMCk7CisgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oaW1hZ2VC
aXRtYXApIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoaW1hZ2VCaXRtYXAud2lkdGgsIDks
ICJJbWFnZUJpdG1hcCB3aWR0aCBzaG91bGQgYmUgOSIpOworICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhpbWFnZUJpdG1hcC5oZWlnaHQsIDksICJJbWFnZUJpdG1hcCBoZWlnaHQgc2hvdWxkIGJl
IDkiKTsKKworICAgICAgICAgICAgbGV0IFtjYW52YXMsIGN0eF0gPSBjcmVhdGU5eDlDYW52YXNX
aXRoMmRDb250ZXh0KCk7CisgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlQml0bWFwLCAw
LCAwKTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDAsMCwgMCwyNTUsMCwyNTUs
ICIwLDAiLCAiMCwyNTUsMCwyNTUiKTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMs
IDQsMywgMCwyNTUsMCwyNTUsICI0LDMiLCAiMCwyNTUsMCwyNTUiKTsKKyAgICAgICAgICAgIF9h
c3NlcnRQaXhlbChjYW52YXMsIDMsNCwgMCwyNTUsMCwyNTUsICIzLDQiLCAiMCwyNTUsMCwyNTUi
KTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDQsNCwgMCwwLDI1NSwyNTUsICI0
LDQiLCAiMCwwLDI1NSwyNTUiKTsgLy8gVGFyZ2V0IGJsdWUgZG90LgorICAgICAgICAgICAgX2Fz
c2VydFBpeGVsKGNhbnZhcywgNSw0LCAwLDI1NSwwLDI1NSwgIjUsNCIsICIwLDI1NSwwLDI1NSIp
OworICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgNCw1LCAwLDI1NSwwLDI1NSwgIjQs
NSIsICIwLDI1NSwwLDI1NSIpOworICAgICAgICB9KTsKKyAgICB9LCAiY3JlYXRlSW1hZ2VCaXRt
YXAgd2l0aCBhIGNyb3BwaW5nIHJlY3RhbmdsZSB0aGF0IGlzIGJpZ2dlciB0aGFuIHRoZSBzb3Vy
Y2UiKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0IGlt
ZyA9IG5ldyBJbWFnZSgpOworICAgICAgICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyBy
ZXNvbHZlKGltZyk7IH07CisgICAgICAgICAgICBpbWcuc3JjID0gInJlc291cmNlcy90YXJnZXQt
Ymx1ZS1kb3QucG5nIjsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbihpbWcpIHsKKyAgICAgICAg
ICAgIC8vIFJlc2l6ZSB0aGUgOXg5IGludG8gMTh4MTgsIGJ1dCB3aXRob3V0IGludGVycG9sYXRp
b24gc28gdGhhdAorICAgICAgICAgICAgLy8gd2UgY2FuIHN0aWxsIGRvIGFjY3VyYXRlIHBpeGVs
IHRlc3RzLgorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKGltZywgMCwgMCwg
OSwgOSwgeyByZXNpemVXaWR0aDogMTgsIHJlc2l6ZUhlaWdodDogMTgsIHJlc2l6ZVF1YWxpdHk6
ICJwaXhlbGF0ZWQiIH0pOworICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKGltYWdlQml0bWFwKSB7
CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGltYWdlQml0bWFwLndpZHRoLCAxOCwgIkltYWdl
Qml0bWFwIHdpZHRoIHNob3VsZCBiZSAxOCIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhp
bWFnZUJpdG1hcC5oZWlnaHQsIDE4LCAiSW1hZ2VCaXRtYXAgaGVpZ2h0IHNob3VsZCBiZSAxOCIp
OworCisgICAgICAgICAgICBsZXQgW2NhbnZhcywgY3R4XSA9IGNyZWF0ZTE4eDE4Q2FudmFzV2l0
aDJkQ29udGV4dCgpOworICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWFnZUJpdG1hcCwgMCwg
MCk7CisgICAgICAgICAgICAvLyBBbGwgdGhlIHRhcmdldCBwb2ludHMgYXJlIG5vdyAyeCB3aGF0
IHRoZXkgd291bGQgYmUgbm9ybWFsbHkuCisgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFz
LCAwLDAsIDAsMjU1LDAsMjU1LCAiMCwwIiwgIjAsMjU1LDAsMjU1Iik7CisgICAgICAgICAgICBf
YXNzZXJ0UGl4ZWwoY2FudmFzLCA4LDYsIDAsMjU1LDAsMjU1LCAiOCw2IiwgIjAsMjU1LDAsMjU1
Iik7CisgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA2LDgsIDAsMjU1LDAsMjU1LCAi
Niw4IiwgIjAsMjU1LDAsMjU1Iik7CisgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA4
LDgsIDAsMCwyNTUsMjU1LCAiOCw4IiwgIjAsMCwyNTUsMjU1Iik7IC8vIFRhcmdldCBibHVlIGRv
dC4KKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDksOSwgMCwwLDI1NSwyNTUsICI5
LDkiLCAiMCwwLDI1NSwyNTUiKTsgLy8gVGFyZ2V0IGJsdWUgZG90LgorICAgICAgICAgICAgX2Fz
c2VydFBpeGVsKGNhbnZhcywgMTAsOCwgMCwyNTUsMCwyNTUsICIxMCw4IiwgIjAsMjU1LDAsMjU1
Iik7CisgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA4LDEwLCAwLDI1NSwwLDI1NSwg
IjgsMTAiLCAiMCwyNTUsMCwyNTUiKTsKKworICAgICAgICB9KTsKKyAgICB9LCAiY3JlYXRlSW1h
Z2VCaXRtYXAgd2l0aCByZXNpemVXaWR0aCBhbmQgcmVzaXplSGVpZ2h0Iik7CisKKyAgICBwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlv
bihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCBpbWcgPSBuZXcgSW1hZ2UoKTsK
KyAgICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbigpIHsgcmVzb2x2ZShpbWcpOyB9Owor
ICAgICAgICAgICAgaW1nLnNyYyA9ICJyZXNvdXJjZXMvdGFyZ2V0LWJsdWUtZG90LnBuZyI7Cisg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oaW1nKSB7CisgICAgICAgICAgICAvLyBPbmx5IHByb3Zp
ZGUgcmVzaXplSGVpZ2h0LgorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKGlt
ZywgMCwgMCwgOSwgOSwgeyByZXNpemVIZWlnaHQ6IDE4LCByZXNpemVRdWFsaXR5OiAicGl4ZWxh
dGVkIiB9KTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbihpbWFnZUJpdG1hcCkgeworICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhpbWFnZUJpdG1hcC53aWR0aCwgMTgsICJJbWFnZUJpdG1hcCB3
aWR0aCBzaG91bGQgYmUgMTgiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoaW1hZ2VCaXRt
YXAuaGVpZ2h0LCAxOCwgIkltYWdlQml0bWFwIGhlaWdodCBzaG91bGQgYmUgMTgiKTsKKworICAg
ICAgICAgICAgbGV0IFtjYW52YXMsIGN0eF0gPSBjcmVhdGUxOHgxOENhbnZhc1dpdGgyZENvbnRl
eHQoKTsKKyAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2VCaXRtYXAsIDAsIDApOworICAg
ICAgICAgICAgLy8gQWxsIHRoZSB0YXJnZXQgcG9pbnRzIGFyZSBub3cgMnggd2hhdCB0aGV5IHdv
dWxkIGJlIG5vcm1hbGx5LgorICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgMCwwLCAw
LDI1NSwwLDI1NSwgIjAsMCIsICIwLDI1NSwwLDI1NSIpOworICAgICAgICAgICAgX2Fzc2VydFBp
eGVsKGNhbnZhcywgOCw2LCAwLDI1NSwwLDI1NSwgIjgsNiIsICIwLDI1NSwwLDI1NSIpOworICAg
ICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgNiw4LCAwLDI1NSwwLDI1NSwgIjYsOCIsICIw
LDI1NSwwLDI1NSIpOworICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgOCw4LCAwLDAs
MjU1LDI1NSwgIjgsOCIsICIwLDAsMjU1LDI1NSIpOyAvLyBUYXJnZXQgYmx1ZSBkb3QuCisgICAg
ICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA5LDksIDAsMCwyNTUsMjU1LCAiOSw5IiwgIjAs
MCwyNTUsMjU1Iik7IC8vIFRhcmdldCBibHVlIGRvdC4KKyAgICAgICAgICAgIF9hc3NlcnRQaXhl
bChjYW52YXMsIDEwLDgsIDAsMjU1LDAsMjU1LCAiMTAsOCIsICIwLDI1NSwwLDI1NSIpOworICAg
ICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgOCwxMCwgMCwyNTUsMCwyNTUsICI4LDEwIiwg
IjAsMjU1LDAsMjU1Iik7CisKKyAgICAgICAgfSk7CisgICAgfSwgImNyZWF0ZUltYWdlQml0bWFw
IHdpdGggb25seSByZXNpemVIZWlnaHQgc2hvdWxkIGNhbGN1bGF0ZSByZXNpemVXaWR0aCIpOwor
CisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gbmV3IFByb21p
c2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgaW1nID0gbmV3
IEltYWdlKCk7CisgICAgICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24oKSB7IHJlc29sdmUo
aW1nKTsgfTsKKyAgICAgICAgICAgIGltZy5zcmMgPSAicmVzb3VyY2VzL3RhcmdldC1ibHVlLWRv
dC5wbmciOworICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKGltZykgeworICAgICAgICAgICAgLy8g
T25seSBwcm92aWRlIHJlc2l6ZVdpZHRoLgorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUltYWdl
Qml0bWFwKGltZywgMCwgMCwgOSwgOSwgeyByZXNpemVXaWR0aDogMTgsIHJlc2l6ZVF1YWxpdHk6
ICJwaXhlbGF0ZWQiIH0pOworICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKGltYWdlQml0bWFwKSB7
CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGltYWdlQml0bWFwLndpZHRoLCAxOCwgIkltYWdl
Qml0bWFwIHdpZHRoIHNob3VsZCBiZSAxOCIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhp
bWFnZUJpdG1hcC5oZWlnaHQsIDE4LCAiSW1hZ2VCaXRtYXAgaGVpZ2h0IHNob3VsZCBiZSAxOCIp
OworCisgICAgICAgICAgICBsZXQgW2NhbnZhcywgY3R4XSA9IGNyZWF0ZTE4eDE4Q2FudmFzV2l0
aDJkQ29udGV4dCgpOworICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWFnZUJpdG1hcCwgMCwg
MCk7CisgICAgICAgICAgICAvLyBBbGwgdGhlIHRhcmdldCBwb2ludHMgYXJlIG5vdyAyeCB3aGF0
IHRoZXkgd291bGQgYmUgbm9ybWFsbHkuCisgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFz
LCAwLDAsIDAsMjU1LDAsMjU1LCAiMCwwIiwgIjAsMjU1LDAsMjU1Iik7CisgICAgICAgICAgICBf
YXNzZXJ0UGl4ZWwoY2FudmFzLCA4LDYsIDAsMjU1LDAsMjU1LCAiOCw2IiwgIjAsMjU1LDAsMjU1
Iik7CisgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA2LDgsIDAsMjU1LDAsMjU1LCAi
Niw4IiwgIjAsMjU1LDAsMjU1Iik7CisgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA4
LDgsIDAsMCwyNTUsMjU1LCAiOCw4IiwgIjAsMCwyNTUsMjU1Iik7IC8vIFRhcmdldCBibHVlIGRv
dC4KKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDksOSwgMCwwLDI1NSwyNTUsICI5
LDkiLCAiMCwwLDI1NSwyNTUiKTsgLy8gVGFyZ2V0IGJsdWUgZG90LgorICAgICAgICAgICAgX2Fz
c2VydFBpeGVsKGNhbnZhcywgMTAsOCwgMCwyNTUsMCwyNTUsICIxMCw4IiwgIjAsMjU1LDAsMjU1
Iik7CisgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA4LDEwLCAwLDI1NSwwLDI1NSwg
IjgsMTAiLCAiMCwyNTUsMCwyNTUiKTsKKworICAgICAgICB9KTsKKyAgICB9LCAiY3JlYXRlSW1h
Z2VCaXRtYXAgd2l0aCBvbmx5IHJlc2l6ZVdpZHRoIHNob3VsZCBjYWxjdWxhdGUgcmVzaXplSGVp
Z2h0Iik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCBp
bWcgPSBuZXcgSW1hZ2UoKTsKKyAgICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbigpIHsg
cmVzb2x2ZShpbWcpOyB9OworICAgICAgICAgICAgaW1nLnNyYyA9ICJyZXNvdXJjZXMvdGFyZ2V0
LWJsdWUtZG90LnN2ZyI7CisgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oaW1nKSB7CisgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAoaW1nKTsKKyAgICAgICAgfSkudGhlbihmdW5j
dGlvbihpbWFnZUJpdG1hcCkgeworICAgICAgICAgICAgbGV0IFtjYW52YXMsIGN0eF0gPSBjcmVh
dGU5eDlDYW52YXNXaXRoMmRDb250ZXh0KCk7CisgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGlt
YWdlQml0bWFwLCAwLCAwKTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDAsMCwg
MCwyNTUsMCwyNTUsICIwLDAiLCAiMCwyNTUsMCwyNTUiKTsKKyAgICAgICAgICAgIF9hc3NlcnRQ
aXhlbChjYW52YXMsIDQsMywgMCwyNTUsMCwyNTUsICI0LDMiLCAiMCwyNTUsMCwyNTUiKTsKKyAg
ICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDMsNCwgMCwyNTUsMCwyNTUsICIzLDQiLCAi
MCwyNTUsMCwyNTUiKTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDQsNCwgMCww
LDI1NSwyNTUsICI0LDQiLCAiMCwwLDI1NSwyNTUiKTsgLy8gVGFyZ2V0IGJsdWUgZG90LgorICAg
ICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgNSw0LCAwLDI1NSwwLDI1NSwgIjUsNCIsICIw
LDI1NSwwLDI1NSIpOworICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgNCw1LCAwLDI1
NSwwLDI1NSwgIjQsNSIsICIwLDI1NSwwLDI1NSIpOworICAgICAgICB9KTsKKyAgICB9LCAiY3Jl
YXRlSW1hZ2VCaXRtYXAgd2l0aCBhbiBTVkcgdXNlcyBpbnRyaW5zaWMgc2l6ZSIpOworCisgICAg
cHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVu
Y3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgaW1nID0gbmV3IEltYWdl
KCk7CisgICAgICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24oKSB7IHJlc29sdmUoaW1nKTsg
fTsKKyAgICAgICAgICAgIGltZy5zcmMgPSAicmVzb3VyY2VzL3RhcmdldC1ibHVlLWRvdC1uby1p
bnRyaW5zaWMuc3ZnIjsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbihpbWcpIHsKKyAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVJbWFnZUJpdG1hcChpbWcsIHsgcmVzaXplV2lkdGg6IDksIHJlc2l6
ZUhlaWdodDogOSB9KTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbihpbWFnZUJpdG1hcCkgewor
ICAgICAgICAgICAgbGV0IFtjYW52YXMsIGN0eF0gPSBjcmVhdGU5eDlDYW52YXNXaXRoMmRDb250
ZXh0KCk7CisgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlQml0bWFwLCAwLCAwKTsKKyAg
ICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDAsMCwgMCwyNTUsMCwyNTUsICIwLDAiLCAi
MCwyNTUsMCwyNTUiKTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDQsMywgMCwy
NTUsMCwyNTUsICI0LDMiLCAiMCwyNTUsMCwyNTUiKTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhl
bChjYW52YXMsIDMsNCwgMCwyNTUsMCwyNTUsICIzLDQiLCAiMCwyNTUsMCwyNTUiKTsKKyAgICAg
ICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDQsNCwgMCwwLDI1NSwyNTUsICI0LDQiLCAiMCww
LDI1NSwyNTUiKTsgLy8gVGFyZ2V0IGJsdWUgZG90LgorICAgICAgICAgICAgX2Fzc2VydFBpeGVs
KGNhbnZhcywgNSw0LCAwLDI1NSwwLDI1NSwgIjUsNCIsICIwLDI1NSwwLDI1NSIpOworICAgICAg
ICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgNCw1LCAwLDI1NSwwLDI1NSwgIjQsNSIsICIwLDI1
NSwwLDI1NSIpOworICAgICAgICB9KTsKKyAgICB9LCAiY3JlYXRlSW1hZ2VCaXRtYXAgd2l0aCBh
biBTVkcgdGhhdCBoYXMgbm8gaW50cmluc2ljIHNpemUgdXNlcyByZXNpemUgcGFyYW1ldGVycyIp
OworCit9KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvY3JlYXRlSW1hZ2VCaXRtYXAu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0LzJkY29udGV4dC9pbWFnZWJpdG1hcC9jcmVhdGVJ
bWFnZUJpdG1hcC5odG1sCmluZGV4IDQ0NDRiZmVkYjMyYjg5ZjQ1ZDc2ZTM3MmM0MGZmYTM1NDY2
MzE0NDAuLmNhODQ2MzI2MjNjZWExYzY5NDMyZDlmNTM0OWNiZDMzODQ0ZjI0ZGQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0LzJkY29udGV4dC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFn
ZUJpdG1hcC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0LzJkY29udGV4dC9pbWFnZWJp
dG1hcC9jcmVhdGVJbWFnZUJpdG1hcC5odG1sCkBAIC0zMCw3ICszMCw3IEBACiAKICAgICBwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlv
bihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTsK
KyAgICAgICAgICAgIGxldCBpbWcgPSBuZXcgSW1hZ2UoKTsKICAgICAgICAgICAgIGltZy5vbmxv
YWQgPSBmdW5jdGlvbigpIHsgcmVzb2x2ZShpbWcpOyB9OwogICAgICAgICAgICAgaW1nLnNyYyA9
ICIvaW1hZ2VzL3BhdHRlcm4ucG5nIjsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbihpbWcpIHsK
QEAgLTQzLDcgKzQzLDcgQEAKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKICAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAgICAg
ICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpOworICAgICAgICAgICAgbGV0IGltZyA9IG5ldyBJ
bWFnZSgpOwogICAgICAgICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyByZXNvbHZlKGlt
Zyk7IH07CiAgICAgICAgICAgICBpbWcuc3JjID0gIi9pbWFnZXMvcGF0dGVybi5wbmciOwogICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uKGltZykgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvMmRjb250ZXh0L2ltYWdlYml0bWFwL2RyYXdJbWFnZS1JbWFnZUJpdG1hcC5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvMmRjb250ZXh0L2ltYWdlYml0bWFwL2RyYXdJbWFnZS1JbWFn
ZUJpdG1hcC5odG1sCmluZGV4IDljNmRhNjkwMjBjZDQ1NjEzZmI2MzUzYjFkOTMyZTkzNjI1ODdi
OTIuLjllYTI0NDhjMDE2NDk4Mzk1ODc4MGM0MzU2MTc3ODlhNjQ4MzczYTEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0LzJkY29udGV4dC9pbWFnZWJpdG1hcC9kcmF3SW1hZ2UtSW1h
Z2VCaXRtYXAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC8yZGNvbnRleHQvaW1hZ2Vi
aXRtYXAvZHJhd0ltYWdlLUltYWdlQml0bWFwLmh0bWwKQEAgLTgsNyArOCw3IEBACiA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9jb21tb24vY2FudmFzLXRlc3RzLmNzcyI+CiA8Ym9keT4K
IDxzY3JpcHQ+Ci0vLyBUaGUgdGFyZ2V0LWJsdWUtZG90LnBuZyBpbWFnZSBpcyBhIDl4OSBiaXRt
YXAgd2l0aCBhICMwMGZmMDAgYmFja2dyb3VuZAorLy8gVGhlIHJlc291cmNlcy90YXJnZXQtYmx1
ZS1kb3QucG5nIGltYWdlIGlzIGEgOXg5IGJpdG1hcCB3aXRoIGEgIzAwZmYwMCBiYWNrZ3JvdW5k
CiAvLyBhbmQgYSBzaW5nbGUgIzAwMDBmZiBwaXhlbCByaWdodCBpbiB0aGUgbWlkZGxlIChhdCA0
LDQpLgogCiAoZnVuY3Rpb24oKSB7CkBAIC0xNiwxOCArMTYsMTggQEAKICAgICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgbGV0
IGltZyA9IG5ldyBJbWFnZSgpOwogICAgICAgICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCkg
eyByZXNvbHZlKGltZyk7IH07Ci0gICAgICAgICAgICBpbWcuc3JjID0gInRhcmdldC1ibHVlLWRv
dC5wbmciOworICAgICAgICAgICAgaW1nLnNyYyA9ICJyZXNvdXJjZXMvdGFyZ2V0LWJsdWUtZG90
LnBuZyI7CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oaW1nKSB7CiAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlSW1hZ2VCaXRtYXAoaW1nKTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbihpbWFn
ZUJpdG1hcCkgewogICAgICAgICAgICAgbGV0IFtjYW52YXMsIGN0eF0gPSBjcmVhdGU5eDlDYW52
YXNXaXRoMmRDb250ZXh0KCk7CiAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlQml0bWFw
LCAwLCAwKTsKICAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDAsMCwgMCwyNTUsMCwy
NTUsICIwLDAiLCAiMCwyNTUsMCwyNTUiKTsKLSAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52
YXMsIDQsMywgMCwyNTUsMCwyNTUsICIwLDAiLCAiMCwyNTUsMCwyNTUiKTsKLSAgICAgICAgICAg
IF9hc3NlcnRQaXhlbChjYW52YXMsIDMsNCwgMCwyNTUsMCwyNTUsICIwLDAiLCAiMCwyNTUsMCwy
NTUiKTsKLSAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDQsNCwgMCwwLDI1NSwyNTUs
ICI1LDUiLCAiMCwwLDI1NSwyNTUiKTsgLy8gVGFyZ2V0IGJsdWUgZG90LgotICAgICAgICAgICAg
X2Fzc2VydFBpeGVsKGNhbnZhcywgNSw0LCAwLDI1NSwwLDI1NSwgIjAsMCIsICIwLDI1NSwwLDI1
NSIpOwotICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgNCw1LCAwLDI1NSwwLDI1NSwg
IjAsMCIsICIwLDI1NSwwLDI1NSIpOworICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywg
NCwzLCAwLDI1NSwwLDI1NSwgIjQsMyIsICIwLDI1NSwwLDI1NSIpOworICAgICAgICAgICAgX2Fz
c2VydFBpeGVsKGNhbnZhcywgMyw0LCAwLDI1NSwwLDI1NSwgIjMsNCIsICIwLDI1NSwwLDI1NSIp
OworICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgNCw0LCAwLDAsMjU1LDI1NSwgIjQs
NCIsICIwLDAsMjU1LDI1NSIpOyAvLyBUYXJnZXQgYmx1ZSBkb3QuCisgICAgICAgICAgICBfYXNz
ZXJ0UGl4ZWwoY2FudmFzLCA1LDQsIDAsMjU1LDAsMjU1LCAiNSw0IiwgIjAsMjU1LDAsMjU1Iik7
CisgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA0LDUsIDAsMjU1LDAsMjU1LCAiNCw1
IiwgIjAsMjU1LDAsMjU1Iik7CiAgICAgICAgIH0pOwogICAgIH0sICJkcmF3SW1hZ2Ugb2YgSW1h
Z2VCaXRtYXAiKTsKIApAQCAtMzUsMTggKzM1LDE4IEBACiAgICAgICAgIHJldHVybiBuZXcgUHJv
bWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIGxldCBpbWcgPSBu
ZXcgSW1hZ2UoKTsKICAgICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbigpIHsgcmVzb2x2
ZShpbWcpOyB9OwotICAgICAgICAgICAgaW1nLnNyYyA9ICJ0YXJnZXQtYmx1ZS1kb3QucG5nIjsK
KyAgICAgICAgICAgIGltZy5zcmMgPSAicmVzb3VyY2VzL3RhcmdldC1ibHVlLWRvdC5wbmciOwog
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKGltZykgewogICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZUltYWdlQml0bWFwKGltZyk7CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oaW1hZ2VCaXRtYXAp
IHsKICAgICAgICAgICAgIGxldCBbY2FudmFzLCBjdHhdID0gY3JlYXRlOXg5Q2FudmFzV2l0aDJk
Q29udGV4dCgpOwogICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWFnZUJpdG1hcCwgMCwgMCwg
NSwgNSwgMCwgMCwgNSwgNSk7CiAgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCAwLDAs
IDAsMjU1LDAsMjU1LCAiMCwwIiwgIjAsMjU1LDAsMjU1Iik7Ci0gICAgICAgICAgICBfYXNzZXJ0
UGl4ZWwoY2FudmFzLCA0LDMsIDAsMjU1LDAsMjU1LCAiMCwwIiwgIjAsMjU1LDAsMjU1Iik7Ci0g
ICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCAzLDQsIDAsMjU1LDAsMjU1LCAiMCwwIiwg
IjAsMjU1LDAsMjU1Iik7Ci0gICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA0LDQsIDAs
MCwyNTUsMjU1LCAiNSw1IiwgIjAsMCwyNTUsMjU1Iik7IC8vIFRhcmdldCBibHVlIGRvdC4KLSAg
ICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDUsNCwgMCwwLDAsMCwgIjAsMCIsICIwLDAs
MCwwIik7IC8vIERpZG4ndCBkcmF3IGludG8gdGhlc2UgcGFydHMuCi0gICAgICAgICAgICBfYXNz
ZXJ0UGl4ZWwoY2FudmFzLCA0LDUsIDAsMCwwLDAsICIwLDAiLCAiMCwwLDAsMCIpOworICAgICAg
ICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgNCwzLCAwLDI1NSwwLDI1NSwgIjQsMyIsICIwLDI1
NSwwLDI1NSIpOworICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgMyw0LCAwLDI1NSww
LDI1NSwgIjMsNCIsICIwLDI1NSwwLDI1NSIpOworICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNh
bnZhcywgNCw0LCAwLDAsMjU1LDI1NSwgIjQsNCIsICIwLDAsMjU1LDI1NSIpOyAvLyBUYXJnZXQg
Ymx1ZSBkb3QuCisgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA1LDQsIDAsMCwwLDAs
ICI1LDQiLCAiMCwwLDAsMCIpOyAvLyBEaWRuJ3QgZHJhdyBpbnRvIHRoZXNlIHBhcnRzLgorICAg
ICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgNCw1LCAwLDAsMCwwLCAiNCw1IiwgIjAsMCww
LDAiKTsKICAgICAgICAgfSk7CiAgICAgfSwgImRyYXdJbWFnZSBvZiBJbWFnZUJpdG1hcCB3aXRo
IGNyb3BwaW5nIik7CiAKQEAgLTU0LDE5ICs1NCwxOSBAQAogICAgICAgICByZXR1cm4gbmV3IFBy
b21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBsZXQgaW1nID0g
bmV3IEltYWdlKCk7CiAgICAgICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24oKSB7IHJlc29s
dmUoaW1nKTsgfTsKLSAgICAgICAgICAgIGltZy5zcmMgPSAidGFyZ2V0LWJsdWUtZG90LnBuZyI7
CisgICAgICAgICAgICBpbWcuc3JjID0gInJlc291cmNlcy90YXJnZXQtYmx1ZS1kb3QucG5nIjsK
ICAgICAgICAgfSkudGhlbihmdW5jdGlvbihpbWcpIHsKICAgICAgICAgICAgIHJldHVybiBjcmVh
dGVJbWFnZUJpdG1hcChpbWcpOwogICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKGltYWdlQml0bWFw
KSB7CiAgICAgICAgICAgICBsZXQgW2NhbnZhcywgY3R4XSA9IGNyZWF0ZTl4OUNhbnZhc1dpdGgy
ZENvbnRleHQoKTsKICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2VCaXRtYXAsIDIsIDIs
IDUsIDUsIDAsIDAsIDUsIDUpOwogICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgMCww
LCAwLDI1NSwwLDI1NSwgIjAsMCIsICIwLDI1NSwwLDI1NSIpOwotICAgICAgICAgICAgX2Fzc2Vy
dFBpeGVsKGNhbnZhcywgMiwxLCAwLDI1NSwwLDI1NSwgIjAsMCIsICIwLDI1NSwwLDI1NSIpOwot
ICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgMSwyLCAwLDI1NSwwLDI1NSwgIjAsMCIs
ICIwLDI1NSwwLDI1NSIpOwotICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgMiwyLCAw
LDAsMjU1LDI1NSwgIjUsNSIsICIwLDAsMjU1LDI1NSIpOwotICAgICAgICAgICAgX2Fzc2VydFBp
eGVsKGNhbnZhcywgMywyLCAwLDI1NSwwLDI1NSwgIjAsMCIsICIwLDI1NSwwLDI1NSIpOwotICAg
ICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgMiwzLCAwLDI1NSwwLDI1NSwgIjAsMCIsICIw
LDI1NSwwLDI1NSIpOwotICAgICAgICAgICAgX2Fzc2VydFBpeGVsKGNhbnZhcywgOCw4LCAwLDAs
MCwwLCAiMCwwIiwgIjAsMCwwLDAiKTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMs
IDIsMSwgMCwyNTUsMCwyNTUsICIyLDEiLCAiMCwyNTUsMCwyNTUiKTsKKyAgICAgICAgICAgIF9h
c3NlcnRQaXhlbChjYW52YXMsIDEsMiwgMCwyNTUsMCwyNTUsICIxLDIiLCAiMCwyNTUsMCwyNTUi
KTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDIsMiwgMCwwLDI1NSwyNTUsICIy
LDIiLCAiMCwwLDI1NSwyNTUiKTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDMs
MiwgMCwyNTUsMCwyNTUsICIzLDIiLCAiMCwyNTUsMCwyNTUiKTsKKyAgICAgICAgICAgIF9hc3Nl
cnRQaXhlbChjYW52YXMsIDIsMywgMCwyNTUsMCwyNTUsICIyLDMiLCAiMCwyNTUsMCwyNTUiKTsK
KyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDgsOCwgMCwwLDAsMCwgIjgsOCIsICIw
LDAsMCwwIik7CiAgICAgICAgIH0pOwogICAgIH0sICJkcmF3SW1hZ2Ugb2YgSW1hZ2VCaXRtYXAg
d2l0aCBjcm9wcGluZyBhbmQgZGlmZmVyZW50IG9yaWdpbiIpOwogCkBAIC03NCwxOSArNzQsMTkg
QEAKICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkg
ewogICAgICAgICAgICAgbGV0IGltZyA9IG5ldyBJbWFnZSgpOwogICAgICAgICAgICAgaW1nLm9u
bG9hZCA9IGZ1bmN0aW9uKCkgeyByZXNvbHZlKGltZyk7IH07Ci0gICAgICAgICAgICBpbWcuc3Jj
ID0gInRhcmdldC1ibHVlLWRvdC5wbmciOworICAgICAgICAgICAgaW1nLnNyYyA9ICJyZXNvdXJj
ZXMvdGFyZ2V0LWJsdWUtZG90LnBuZyI7CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oaW1nKSB7
CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAoaW1nKTsKICAgICAgICAgfSku
dGhlbihmdW5jdGlvbihpbWFnZUJpdG1hcCkgewogICAgICAgICAgICAgbGV0IFtjYW52YXMsIGN0
eF0gPSBjcmVhdGU5eDlDYW52YXNXaXRoMmRDb250ZXh0KCk7CiAgICAgICAgICAgICBjdHguZHJh
d0ltYWdlKGltYWdlQml0bWFwLCAyLCAyLCA1LCA1LCAyLCAyLCA1LCA1KTsKICAgICAgICAgICAg
IF9hc3NlcnRQaXhlbChjYW52YXMsIDAsMCwgMCwwLDAsMCwgIjAsMCIsICIwLDAsMCwwIik7IC8v
IERpZG4ndCBkcmF3IGhlcmUuCi0gICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA0LDMs
IDAsMjU1LDAsMjU1LCAiMCwwIiwgIjAsMjU1LDAsMjU1Iik7Ci0gICAgICAgICAgICBfYXNzZXJ0
UGl4ZWwoY2FudmFzLCAzLDQsIDAsMjU1LDAsMjU1LCAiMCwwIiwgIjAsMjU1LDAsMjU1Iik7Ci0g
ICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA0LDQsIDAsMCwyNTUsMjU1LCAiNSw1Iiwg
IjAsMCwyNTUsMjU1Iik7IC8vIFRhcmdldCBibHVlIGRvdC4KLSAgICAgICAgICAgIF9hc3NlcnRQ
aXhlbChjYW52YXMsIDUsNCwgMCwyNTUsMCwyNTUsICIwLDAiLCAiMCwyNTUsMCwyNTUiKTsKLSAg
ICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDQsNSwgMCwyNTUsMCwyNTUsICIwLDAiLCAi
MCwyNTUsMCwyNTUiKTsKLSAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDgsOCwgMCww
LDAsMCwgIjAsMCIsICIwLDAsMCwwIik7CisgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFz
LCA0LDMsIDAsMjU1LDAsMjU1LCAiNCwzIiwgIjAsMjU1LDAsMjU1Iik7CisgICAgICAgICAgICBf
YXNzZXJ0UGl4ZWwoY2FudmFzLCAzLDQsIDAsMjU1LDAsMjU1LCAiMyw0IiwgIjAsMjU1LDAsMjU1
Iik7CisgICAgICAgICAgICBfYXNzZXJ0UGl4ZWwoY2FudmFzLCA0LDQsIDAsMCwyNTUsMjU1LCAi
NCw0IiwgIjAsMCwyNTUsMjU1Iik7IC8vIFRhcmdldCBibHVlIGRvdC4KKyAgICAgICAgICAgIF9h
c3NlcnRQaXhlbChjYW52YXMsIDUsNCwgMCwyNTUsMCwyNTUsICI1LDQiLCAiMCwyNTUsMCwyNTUi
KTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDQsNSwgMCwyNTUsMCwyNTUsICI0
LDUiLCAiMCwyNTUsMCwyNTUiKTsKKyAgICAgICAgICAgIF9hc3NlcnRQaXhlbChjYW52YXMsIDgs
OCwgMCwwLDAsMCwgIjgsOCIsICIwLDAsMCwwIik7CiAgICAgICAgIH0pOwogICAgIH0sICJkcmF3
SW1hZ2Ugb2YgSW1hZ2VCaXRtYXAgd2l0aCBjcm9wcGluZyBhbmQgZGlmZmVyZW50IG5vbi16ZXJv
IG9yaWdpbiIpOwogCkBAIC05NywxMyArOTcsMTMgQEAKICAgICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgbGV0IGltZyA9IG5l
dyBJbWFnZSgpOwogICAgICAgICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyByZXNvbHZl
KGltZyk7IH07Ci0gICAgICAgICAgICBpbWcuc3JjID0gInRhcmdldC1ibHVlLWRvdC5wbmciOwor
ICAgICAgICAgICAgaW1nLnNyYyA9ICJyZXNvdXJjZXMvdGFyZ2V0LWJsdWUtZG90LnBuZyI7CiAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oaW1nKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRl
SW1hZ2VCaXRtYXAoaW1nKTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbihpbWFnZUJpdG1hcCkg
ewogICAgICAgICAgICAgaW1hZ2VCaXRtYXAuY2xvc2UoKTsKICAgICAgICAgICAgIGxldCBbY2Fu
dmFzLCBjdHhdID0gY3JlYXRlOXg5Q2FudmFzV2l0aDJkQ29udGV4dCgpOwotICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlQml0bWFwLCAwLCAwKTsKICAgICAgICAg
ICAgIH0sICJBIGNsb3NlZCBJbWFnZUJpdG1hcCBjYW4ndCBiZSBkcmF3bi4iKTsKICAgICAgICAg
fSk7CkBAIC0xMTMsMTIgKzExMywxMiBAQAogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVu
Y3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBsZXQgaW1nID0gbmV3IEltYWdl
KCk7CiAgICAgICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24oKSB7IHJlc29sdmUoaW1nKTsg
fTsKLSAgICAgICAgICAgIGltZy5zcmMgPSAidGFyZ2V0LWJsdWUtZG90LnBuZyI7CisgICAgICAg
ICAgICBpbWcuc3JjID0gInJlc291cmNlcy90YXJnZXQtYmx1ZS1kb3QucG5nIjsKICAgICAgICAg
fSkudGhlbihmdW5jdGlvbihpbWcpIHsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbWFnZUJp
dG1hcChpbWcpOwogICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKGltYWdlQml0bWFwKSB7CiAgICAg
ICAgICAgICBsZXQgW2NhbnZhcywgY3R4XSA9IGNyZWF0ZTl4OUNhbnZhc1dpdGgyZENvbnRleHQo
KTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ0luZGV4U2l6ZUVycm9yJywgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW5kZXhTaXplRXJyb3IiLCBmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWFnZUJpdG1hcCwgMCwgMCwg
MCwgMCwgMCwgMCwgOSwgOSk7CiAgICAgICAgICAgICB9LCAiZHJhd0ltYWdlIHdpdGggYW4gZW1w
dHkgc291cmNlIHJlY3RhbmdsZSBzaG91bGQgZmFpbC4iKTsKICAgICAgICAgfSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvcmVzb3VyY2Vz
L3RhcmdldC1ibHVlLWRvdC1uby1pbnRyaW5zaWMuc3ZnIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
MmRjb250ZXh0L2ltYWdlYml0bWFwL3Jlc291cmNlcy90YXJnZXQtYmx1ZS1kb3Qtbm8taW50cmlu
c2ljLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMTU5MDc4ZTA4MzE3NDY1Njc1MDQ3OGUzMTg5ZDA2ZmNkMjI1
MGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvMmRjb250ZXh0L2lt
YWdlYml0bWFwL3Jlc291cmNlcy90YXJnZXQtYmx1ZS1kb3Qtbm8taW50cmluc2ljLnN2ZwpAQCAt
MCwwICsxLDQgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3
Qm94PSIwIDAgOSA5Ij4KKyAgICA8cmVjdCB3aWR0aD0iOSIgaGVpZ2h0PSI5IiBmaWxsPSIjMDBm
ZjAwIi8+CisgICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0i
IzAwMDBmZiIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC8yZGNv
bnRleHQvaW1hZ2ViaXRtYXAvcmVzb3VyY2VzL3RhcmdldC1ibHVlLWRvdC5wbmcgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvcmVzb3VyY2VzL3RhcmdldC1ibHVl
LWRvdC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM1ZGU1NDJlM2MyNzgwZjFmY2JmZTljNGU5YjMzNmZjYTU1
NzE1YgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDI5CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEw
dnBeb0ZMND4xfCVPJFdEe1V1VkQhIW1pNzFLaV58NENNJigldnokeGxrdgp6dEg+PD8kfT0kNypq
RSVKQ1RGTFhDP3V0KFhYZT18ejJDaUdOZypARVJ3Pi1uKlRBPkhJVzs1R3FwQiExeFhMZGkKenho
Z3heR0RYU1dqPzFSUDNUUXhYWUR1QyhNUSU9QnV+bWh3NjQrY1RBUjhwQ3VjUUUwUWolP308T3M0
KkE7TEY2CnohOHlNdVJsIXV4T2dHdWsqaDBiRlFxUiFUKCEkNkBONVJPeiZgalVKUXMyLS0qVEIl
cXp8elhWUHlxXio/Nj8kYwp6aWMtPzdmP1Y5N21Ifk9UTipOXzMxeT1nezw+bHBpPDtIc1hNZHx2
Nm1YPzxLMjFmY3VNIUc7MXkyWGB3QzVhV2YKemRCd15nQk9xcURxIXVSXldmcWlWPUkxR1oldUd6
bUZEPGNFUXFsKW1xN1N0Tj1za1Y3fDl+OEwyJkx1JGdRVz1RCnplK0FFVlI9fXs2Xj5sRnprK19f
a141Z3U2YEhjKC1OZVdDQ2YmYFY5Mn1gbXNKanxII202YlEjTEJKOWUlQVQlJQpKRjYqMlVuZzlY
dmVCPU5DCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvcmVzb3VyY2VzL3RhcmdldC1ibHVlLWRvdC5z
dmcgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvcmVzb3VyY2Vz
L3RhcmdldC1ibHVlLWRvdC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJkNjMwMjFjMjRkZGYxNTk0OGU0MzIz
NmY3MTEyYzM0MjhlMTE4NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
LzJkY29udGV4dC9pbWFnZWJpdG1hcC9yZXNvdXJjZXMvdGFyZ2V0LWJsdWUtZG90LnN2ZwpAQCAt
MCwwICsxLDQgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0
aD0iOSIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgOSA5Ij4KKyAgICA8cmVjdCB3aWR0aD0iOSIg
aGVpZ2h0PSI5IiBmaWxsPSIjMDBmZjAwIi8+CisgICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9
IjEiIGhlaWdodD0iMSIgZmlsbD0iIzAwMDBmZiIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvdGFyZ2V0LWJsdWUtZG90LnBu
ZyBiL0xheW91dFRlc3RzL2h0dHAvd3B0LzJkY29udGV4dC9pbWFnZWJpdG1hcC90YXJnZXQtYmx1
ZS1kb3QucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzVkZTU0MmUzYzI3ODBm
MWZjYmZlOWM0ZTliMzM2ZmNhNTU3MTViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFs
IDQyOQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXm9GTDQ+MXwlTyRXRHtVdVZEISFtaTcxS2le
fDRDTSYoJXZ6JHhsa3YKenRIPjw/JH09JDcqakUlSkNURkxYQz91dChYWGU9fHoyQ2lHTmcqQEVS
dz4tbipUQT5ISVc7NUdxcEIhMXhYTGRpCnp4aGd4XkdEWFNXaj8xUlAzVFF4WFlEdUMoTVElPUJ1
fm1odzY0K2NUQVI4cEN1Y1FFMFFqJT99PE9zNCpBO0xGNgp6ITh5TXVSbCF1eE9nR3VrKmgwYkZR
cVIhVCghJDZATjVST3omYGpVSlFzMi0tKlRCJXF6fHpYVlB5cV4qPzY/JGMKemljLT83Zj9WOTdt
SH5PVE4qTl8zMXk9Z3s8PmxwaTw7SHNYTWR8djZtWD88SzIxZmN1TSFHOzF5Mlhgd0M1YVdmCnpk
QndeZ0JPcXFEcSF1Ul5XZnFpVj1JMUdaJXVHem1GRDxjRVFxbCltcTdTdE49c2tWN3w5fjhMMiZM
dSRnUVc9UQp6ZStBRVZSPX17Nl4+bEZ6aytfX2teNWd1NmBIYygtTmVXQ0NmJmBWOTJ9YG1zSmp8
SCNtNmJRI0xCSjllJUFUJSUKSkY2KjJVbmc5WHZlQj1OQwoK
</data>
<flag name="review"
          id="344337"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>