<?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>186637</bug_id>
          
          <creation_ts>2018-06-14 16:46:47 -0700</creation_ts>
          <short_desc>[LFC] Add LayoutFormattingContext logging channel</short_desc>
          <delta_ts>2018-06-15 08:02:36 -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>Layout and Rendering</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1433175</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-06-14 16:46:47 -0700</bug_when>
    <thetext>and some logging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433177</commentid>
    <comment_count>1</comment_count>
      <attachid>342778</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-06-14 16:49:10 -0700</bug_when>
    <thetext>Created attachment 342778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433178</commentid>
    <comment_count>2</comment_count>
      <attachid>342778</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-14 16:50:34 -0700</bug_when>
    <thetext>Comment on attachment 342778
Patch

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

&gt; Source/WebCore/platform/Logging.h:64
&gt; +    M(LayoutFormattingContext) \

Maybe FormattingContextLayout?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433325</commentid>
    <comment_count>3</comment_count>
      <attachid>342809</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-06-15 06:53:30 -0700</bug_when>
    <thetext>Created attachment 342809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433326</commentid>
    <comment_count>4</comment_count>
      <attachid>342810</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-06-15 06:56:33 -0700</bug_when>
    <thetext>Created attachment 342810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433341</commentid>
    <comment_count>5</comment_count>
      <attachid>342810</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-15 08:01:10 -0700</bug_when>
    <thetext>Comment on attachment 342810
Patch

Clearing flags on attachment: 342810

Committed r232870: &lt;https://trac.webkit.org/changeset/232870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433342</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-15 08:01:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433344</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-15 08:02:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/41159772&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342778</attachid>
            <date>2018-06-14 16:49:10 -0700</date>
            <delta_ts>2018-06-15 06:53:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186637-20180614164909.patch</filename>
            <type>text/plain</type>
            <size>32253</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWEwMTJjMTkzYzQ0NGQy
NTdmNDQ1YzZhYzEyOTMzZDliNjY1N2ZlNi4uNDA3MDE5MDExMzQ3ZWRiMmNiZmUyNzVmYmMyZDk1
Zjk1YzUyNGRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE4LTA2LTE0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQWRkIExheW91dEZv
cm1hdHRpbmdDb250ZXh0IGxvZ2dpbmcgY2hhbm5lbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvbWUgYmFzaWMgbGF5b3V0IGxvZ2dpbmcuCisK
KyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRy
ZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMgY29uc3QpOgorICAgICAgICAqIGxheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y29u
dGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OnNocmlua1RvRml0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9t
ZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1Jl
cGxhY2VkVmVydGljYWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0
cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRp
bmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRCb3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkUGFk
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVk
Tm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZSk6CisgICAgICAgICogbGF5b3V0L1Zlcmlm
aWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5n
Qm94SW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OnZlcmlm
eUFuZE91dHB1dFN1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250
ZXh0Ojp2ZXJpZnlBbmRPdXRwdXRNaXNtYXRjaGluZ0xheW91dFRyZWUgY29uc3QpOgorICAgICAg
ICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dCBj
b25zdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dSZXBsYWNl
ZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9u
ZWRQb3NpdGlvbik6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRMYXlvdXRCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRMYXlvdXRUcmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OnNob3dMYXlvdXRUcmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6cHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cyk6CisgICAgICAgICog
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9Mb2dnaW5nLmg6CisKIDIwMTgtMDYtMTMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTEZDXSBNaXNjZWxsYW5lb3VzIGZpeGVzIHRvIGJlIGFibGUgdG8gbGF5
b3V0IDxkaXY+IHdpdGggZml4ZWQgd2lkdGgvaGVpZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAwZDllYTNhZjg4NjIwYjAzOTc5ZTNjYTBlM2Jm
MmRhNWMzZWJiMzUzLi43NGQ5NDY0MGEyNTc2MmQyZjQ1M2EyZTJlOTUwYzI3NTRjMzE5MjJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTMzLDcg
KzMzLDkgQEAKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKICNpbmNsdWRlICJMYXlvdXRD
b250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgTGF5b3V0IHsKQEAgLTk2LDE3ICs5OCwyMiBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpw
bGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZQog
ICAgIGlmIChjb250YWluZXIuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpICYmICZjb250
YWluZXIgIT0gJnJvb3QoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgTE9HX1dJVEhfU1RSRUFN
KExheW91dEZvcm1hdHRpbmdDb250ZXh0LCBzdHJlYW0gPDwgIlN0YXJ0OiBtb3ZlIGluLWZsb3cg
cG9zaXRpb25lZCBjaGlsZHJlbiAtPiBjb250ZXh0OiAiIDw8ICZsYXlvdXRDb250ZXh0IDw8ICIg
cGFyZW50OiAiIDw8ICZjb250YWluZXIpOwogICAgIGZvciAoYXV0byYgbGF5b3V0Qm94IDogY2hp
bGRyZW5PZlR5cGU8Qm94Pihjb250YWluZXIpKSB7CiAgICAgICAgIGlmICghbGF5b3V0Qm94Lmlz
SW5GbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNvbXB1
dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCAqbGF5
b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkpOwogICAgIH0KKyAg
ICBMT0dfV0lUSF9TVFJFQU0oTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHQsIHN0cmVhbSA8PCAiRW5k
OiBtb3ZlIGluLWZsb3cgcG9zaXRpb25lZCBjaGlsZHJlbiAtPiBjb250ZXh0OiAiIDw8ICZsYXlv
dXRDb250ZXh0IDw8ICIgcGFyZW50OiAiIDw8ICZjb250YWluZXIpOwogfQogCiB2b2lkIEZvcm1h
dHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dEZXNjZW5kYW50cyhMYXlvdXRDb250ZXh0JiBs
YXlvdXRDb250ZXh0KSBjb25zdAogewogICAgIGlmICghaXM8Q29udGFpbmVyPihtX3Jvb3QuZ2V0
KCkpKQogICAgICAgICByZXR1cm47CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oTGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHQsIHN0cmVhbSA8PCAiU3RhcnQ6IGxheW91dCBvdXQtb2YtZmxvdyBkZXNjZW5k
YW50cyAtPiBjb250ZXh0OiAiIDw8ICZsYXlvdXRDb250ZXh0IDw8ICIgcm9vdDogIiA8PCAmcm9v
dCgpKTsKKwogICAgIGZvciAoYXV0byYgb3V0T2ZGbG93Qm94IDogZG93bmNhc3Q8Q29udGFpbmVy
PigqbV9yb290KS5vdXRPZkZsb3dEZXNjZW5kYW50cygpKSB7CiAgICAgICAgIGF1dG8mIGxheW91
dEJveCA9ICpvdXRPZkZsb3dCb3g7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRD
b250ZXh0LmNyZWF0ZURpc3BsYXlCb3gobGF5b3V0Qm94KTsKQEAgLTEyNCw2ICsxMzEsNyBAQCB2
b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dEZXNjZW5kYW50cyhMYXlvdXRD
b250ZXh0JiBsYXlvdXRDb250ZXh0KQogCiAgICAgICAgIGNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNh
bEdlb21ldHJ5KGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlzcGxheUJveCk7CiAgICAgfQor
ICAgIExPR19XSVRIX1NUUkVBTShMYXlvdXRGb3JtYXR0aW5nQ29udGV4dCwgc3RyZWFtIDw8ICJF
bmQ6IGxheW91dCBvdXQtb2YtZmxvdyBkZXNjZW5kYW50cyAtPiBjb250ZXh0OiAiIDw8ICZsYXlv
dXRDb250ZXh0IDw8ICIgcm9vdDogIiA8PCAmcm9vdCgpKTsKIH0KIAogI2lmbmRlZiBOREVCVUcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcAppbmRleCA1NWQ1Y2VkNzQyOWZmMmQyNGNkMWI3MmQ4MWEzYzNlMjgwMTRhMGI3Li5mNzZk
NTNiZjMxMzVkYjVjMmE0M2E1YTZmZDgzZTFiYzNjNDFjYWFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC01NiwxMSAr
NTYsMTQgQEAgc3RhdGljIExheW91dFVuaXQgY29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250
ZXh0Um9vdChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb24KICAgICBhdXRvIHRvcCA9IGZpcnN0RGlz
cGxheUJveC0+bWFyZ2luQm94KCkudG9wKCk7CiAgICAgYXV0byBib3R0b20gPSBsYXN0RGlzcGxh
eUJveC0+bWFyZ2luQm94KCkuYm90dG9tKCk7CiAgICAgLy8gRklYTUU6IGFkZCBmbG9hdGluZyBz
dXBwb3J0LgotICAgIHJldHVybiBib3R0b20gLSB0b3A7CisgICAgYXV0byBjb21wdXRlZEhlaWdo
dCA9IGJvdHRvbSAtIHRvcDsKKyAgICBMT0dfV0lUSF9TVFJFQU0oTGF5b3V0Rm9ybWF0dGluZ0Nv
bnRleHQsIHN0cmVhbSA8PCAiW0hlaWdodF0gLT4gY29udGVudCBoZWlnaHQgZm9yIGZvcm1hdHRp
bmcgY29udGV4dCByb290IC0+IGhlaWdodCgiIDw8IGNvbXB1dGVkSGVpZ2h0IDw8ICJweCkgbGF5
b3V0Qm94KCI8PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgcmV0dXJuIGNvbXB1dGVkSGVpZ2h0
OwogfQogCi1zdGF0aWMgTGF5b3V0VW5pdCBzaHJpbmtUb0ZpdFdpZHRoKExheW91dENvbnRleHQm
LCBjb25zdCBCb3gmKQorc3RhdGljIExheW91dFVuaXQgc2hyaW5rVG9GaXRXaWR0aChMYXlvdXRD
b250ZXh0JiwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CisgICAgTE9HX1dJVEhfU1RSRUFNKExh
eW91dEZvcm1hdHRpbmdDb250ZXh0LCBzdHJlYW0gPDwgIltXaWR0aF0gLT4gc2hyaW5rIHRvIGZp
dCAtPiB1bnN1cHBvcnRlZCAtPiB3aWR0aCgiIDw8IExheW91dFVuaXQgeyB9IDw8ICJweCkgbGF5
b3V0Qm94OiAiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4geyB9OwogfQogCkBA
IC0xODMsNiArMTg2LDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpWZXJ0aWNhbEdl
b21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2YKICAgICBBU1NFUlQobWFy
Z2luVG9wKTsKICAgICBBU1NFUlQobWFyZ2luQm90dG9tKTsKIAorICAgIExPR19XSVRIX1NUUkVB
TShMYXlvdXRGb3JtYXR0aW5nQ29udGV4dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW0hlaWdodF1b
TWFyZ2luXSAtPiBvdXQtb2YtZmxvdyBub24tcmVwbGFjZWQgLT4gdG9wKCIgPDwgKnRvcCA8PCAi
cHgpIGJvdHRvbSgiICA8PCAqYm90dG9tIDw8ICJweCkgaGVpZ2h0KCIgPDwgKmhlaWdodCA8PCAi
cHgpIG1hcmdpbigiIDw8ICptYXJnaW5Ub3AgPDwgInB4LCAiICA8PCAqbWFyZ2luQm90dG9tIDw8
ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiB7ICp0
b3AsICpib3R0b20sIHsgKmhlaWdodCwgeyAqbWFyZ2luVG9wLCAqbWFyZ2luQm90dG9tfSB9IH07
CiB9CiAKQEAgLTMyNCw2ICszMjgsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Okhv
cml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dAogICAgIEFT
U0VSVChtYXJnaW5MZWZ0KTsKICAgICBBU1NFUlQobWFyZ2luUmlnaHQpOwogCisgICAgTE9HX1dJ
VEhfU1RSRUFNKExheW91dEZvcm1hdHRpbmdDb250ZXh0LCBzdHJlYW0gPDwgIltQb3NpdGlvbl1b
V2lkdGhdW01hcmdpbl0gLT4gb3V0LW9mLWZsb3cgbm9uLXJlcGxhY2VkIC0+IGxlZnQoIiA8PCAq
bGVmdCA8PCAicHgpIHJpZ2h0KCIgIDw8ICpyaWdodCA8PCAicHgpIHdpZHRoKCIgPDwgKndpZHRo
IDw8ICJweCkgbWFyZ2luKCIgPDwgKm1hcmdpbkxlZnQgPDwgInB4LCAiICA8PCAqbWFyZ2luUmln
aHQgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJu
IHsgKmxlZnQsICpyaWdodCwgeyAqd2lkdGgsIHsgKm1hcmdpbkxlZnQsICptYXJnaW5SaWdodCB9
IH0gfTsKIH0KIApAQCAtMzkxLDYgKzM5Niw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6VmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mCiAg
ICAgaWYgKGJveEhlaWdodCA+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCkKICAgICAgICAgYm90dG9t
ID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2luVG9wICsgYm9yZGVyVG9w
ICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAq
bWFyZ2luQm90dG9tKTsgCiAKKyAgICBMT0dfV0lUSF9TVFJFQU0oTGF5b3V0Rm9ybWF0dGluZ0Nv
bnRleHQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtIZWlnaHRdW01hcmdpbl0gLT4gb3V0LW9mLWZs
b3cgcmVwbGFjZWQgLT4gdG9wKCIgPDwgKnRvcCA8PCAicHgpIGJvdHRvbSgiICA8PCAqYm90dG9t
IDw8ICJweCkgaGVpZ2h0KCIgPDwgaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgKm1hcmdpblRv
cCA8PCAicHgsICIgIDw8ICptYXJnaW5Cb3R0b20gPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5
b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIHsgKnRvcCwgKmJvdHRvbSwgeyBoZWlnaHQsIHsg
Km1hcmdpblRvcCwgKm1hcmdpbkJvdHRvbSB9IH0gfTsKIH0KIApAQCAtNDg0LDYgKzQ5MCw3IEBA
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6SG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0CiAgICAgQVNTRVJUKG1hcmdpbkxlZnQpOwogICAgIEFT
U0VSVChtYXJnaW5SaWdodCk7CiAKKyAgICBMT0dfV0lUSF9TVFJFQU0oTGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtXaWR0aF1bTWFyZ2luXSAtPiBvdXQtb2Yt
ZmxvdyByZXBsYWNlZCAtPiBsZWZ0KCIgPDwgKmxlZnQgPDwgInB4KSByaWdodCgiICA8PCAqcmln
aHQgPDwgInB4KSB3aWR0aCgiIDw8IHdpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgKm1hcmdpbkxl
ZnQgPDwgInB4LCAiICA8PCAqbWFyZ2luUmlnaHQgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5
b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIHsgKmxlZnQsICpyaWdodCwgeyB3aWR0aCwgeyAq
bWFyZ2luTGVmdCwgKm1hcmdpblJpZ2h0IH0gfSB9OwogfQogCkBAIC01MTQsNiArNTIxLDggQEAg
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpmbG9hdGkKICAgICAvLyAjMgogICAgIGlmICghaGVpZ2h0KQogICAg
ICAgICBoZWlnaHQgPSBjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGxheW91
dENvbnRleHQsIGxheW91dEJveCk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oTGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBmbG9hdGluZyBub24t
cmVwbGFjZWQgLT4gaGVpZ2h0KCIgPDwgKmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8ICptYXJn
aW5Ub3AgPDwgInB4LCAiIDw8ICptYXJnaW5Cb3R0b20gPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8
PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6SGVpZ2h0QW5kTWFyZ2luIHsgKmhlaWdodCwgeyAqbWFyZ2luVG9wLCAqbWFyZ2luQm90
dG9tIH0gfTsKIH0KIApAQCAtNTMyLDYgKzU0MSw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGlu
CiAgICAgYXV0byBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZXMgPSBj
b21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZShsYXlvdXRDb250ZXh0LCBs
YXlvdXRCb3gpOwogICAgIC8vICMyCiAgICAgYXV0byBjb21wdXRlZFdpZHRoVmFsdWUgPSB3aWR0
aC5pc0F1dG8oKSA/IHNocmlua1RvRml0V2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSA6
IExheW91dFVuaXQod2lkdGgudmFsdWUoKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKExheW91dEZv
cm1hdHRpbmdDb250ZXh0LCBzdHJlYW0gPDwgIltXaWR0aF1bTWFyZ2luXSAtPiBmbG9hdGluZyBu
b24tcmVwbGFjZWQgLT4gd2lkdGgoIiA8PCBjb21wdXRlZFdpZHRoVmFsdWUgPDwgInB4KSBtYXJn
aW4oIiA8PCBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZXMubGVmdCA8
PCAicHgsICIgPDwgY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWVzLnJp
Z2h0IDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJl
dHVybiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIHsgY29tcHV0
ZWRXaWR0aFZhbHVlLCBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZXMg
fTsKIH0KIApAQCAtNTQwLDYgKzU1MCw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpCiAgICAg
QVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpICYmIGxheW91dEJveC5yZXBs
YWNlZCgpKTsKICAgICAvLyAxMC42LjIgSW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzLCBibG9jay1s
ZXZlbCByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdywgJ2lubGluZS1ibG9jaycKICAg
ICAvLyByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdyBhbmQgZmxvYXRpbmcgcmVwbGFj
ZWQgZWxlbWVudHMKKyAgICBMT0dfV0lUSF9TVFJFQU0oTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHQs
IHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBmbG9hdGluZyByZXBsYWNlZCAtPiByZWRp
cmVjdGVkIHRvIGlubGluZSByZXBsYWNlZCIpOwogICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZEhl
aWdodEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwogfQogCkBAIC01NTEsNiAr
NTYyLDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW4KICAgICAvLyAxLiBJZiAnbWFyZ2luLWxl
ZnQnIG9yICdtYXJnaW4tcmlnaHQnIGFyZSBjb21wdXRlZCBhcyAnYXV0bycsIHRoZWlyIHVzZWQg
dmFsdWUgaXMgJzAnLgogICAgIC8vIDIuIFRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcgaXMgZGV0
ZXJtaW5lZCBhcyBmb3IgaW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzLgogICAgIGF1dG8gY29tcHV0
ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWVzID0gY29tcHV0ZWROb25Db2xsYXBz
ZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICBM
T0dfV0lUSF9TVFJFQU0oTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHQsIHN0cmVhbSA8PCAiW0hlaWdo
dF1bTWFyZ2luXSAtPiBmbG9hdGluZyByZXBsYWNlZCAtPiByZWRpcmVjdGVkIHRvIGlubGluZSBy
ZXBsYWNlZCIpOwogICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91
dENvbnRleHQsIGxheW91dEJveCwgY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2lu
VmFsdWVzLmxlZnQsIGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlcy5y
aWdodCk7CiB9CiAKQEAgLTYyOSw2ICs2NDEsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OkhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZQog
ICAgIH0gZWxzZQogICAgICAgICBjb21wdXRlZEhlaWdodFZhbHVlID0gaGVpZ2h0LnZhbHVlKCk7
CiAKKyAgICBMT0dfV0lUSF9TVFJFQU0oTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHQsIHN0cmVhbSA8
PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZsb3cgcmVwbGFjZWQgLT4gaGVpZ2h0KCIgPDwgY29t
cHV0ZWRIZWlnaHRWYWx1ZSA8PCAicHgpIG1hcmdpbigiIDw8IGNvbXB1dGVkTm9uQ29sbGFwc2Vk
VmVydGljYWxNYXJnaW5WYWx1ZXMudG9wIDw8ICJweCwgIiA8PCBjb21wdXRlZE5vbkNvbGxhcHNl
ZFZlcnRpY2FsTWFyZ2luVmFsdWVzLmJvdHRvbSA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZs
YXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4geyBjb21wdXRlZEhlaWdodFZhbHVlLCBjb21w
dXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWVzIH07CiB9CiAKQEAgLTY5OSwxMiAr
NzEyLDE0IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4gRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSCiAgICAgICAgIGNvbXB1dGVkV2lkdGhW
YWx1ZSA9IDMwMDsKICAgICB9CiAKKyAgICBMT0dfV0lUSF9TVFJFQU0oTGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHQsIHN0cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGluZmxvdyByZXBsYWNlZCAt
PiB3aWR0aCgiIDw8IGNvbXB1dGVkV2lkdGhWYWx1ZSA8PCAicHgpIG1hcmdpbigiIDw8IGNvbXB1
dGVkTWFyZ2luTGVmdFZhbHVlIDw8ICJweCwgIiA8PCBjb21wdXRlZE1hcmdpblJpZ2h0VmFsdWUg
PDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJu
IHsgY29tcHV0ZWRXaWR0aFZhbHVlLCB7IGNvbXB1dGVkTWFyZ2luTGVmdFZhbHVlLCBjb21wdXRl
ZE1hcmdpblJpZ2h0VmFsdWUgfSB9OwogfQogCiBEaXNwbGF5OjpCb3g6OkVkZ2VzIEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRCb3JkZXIoTGF5b3V0Q29udGV4dCYsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQogewogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7
CisgICAgTE9HX1dJVEhfU1RSRUFNKExheW91dEZvcm1hdHRpbmdDb250ZXh0LCBzdHJlYW0gPDwg
IltCb3JkZXJdIC0+IGxheW91dEJveDogIiA8PCAmbGF5b3V0Qm94KTsKICAgICByZXR1cm4gewog
ICAgICAgICB7IHN0eWxlLmJvcmRlckxlZnQoKS5ib3hNb2RlbFdpZHRoKCksIHN0eWxlLmJvcmRl
clJpZ2h0KCkuYm94TW9kZWxXaWR0aCgpIH0sCiAgICAgICAgIHsgc3R5bGUuYm9yZGVyVG9wKCku
Ym94TW9kZWxXaWR0aCgpLCBzdHlsZS5ib3JkZXJCb3R0b20oKS5ib3hNb2RlbFdpZHRoKCkgfQpA
QCAtNzE4LDYgKzczMyw3IEBAIHN0ZDo6b3B0aW9uYWw8RGlzcGxheTo6Qm94OjpFZGdlcz4gRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcoCiAKICAgICBhdXRvJiBz
dHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGgg
PSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKSktPndpZHRoKCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKExheW91dEZvcm1hdHRp
bmdDb250ZXh0LCBzdHJlYW0gPDwgIltQYWRkaW5nXSAtPiBsYXlvdXRCb3g6ICIgPDwgJmxheW91
dEJveCk7CiAgICAgcmV0dXJuIERpc3BsYXk6OkJveDo6RWRnZXMgewogICAgICAgICB7IHZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLnBhZGRpbmdMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSwgdmFs
dWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ1JpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSB9
LAogICAgICAgICB7IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLnBhZGRpbmdUb3AoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nQm90dG9tKCksIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKSB9CkBAIC03MzEsNiArNzQ3LDcgQEAgRGlzcGxheTo6Qm94OjpIb3Jp
em9udGFsRWRnZXMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxh
cHNlZEgKICAgICBhdXRvIG1hcmdpblJpZ2h0ID0gc3R5bGUubWFyZ2luUmlnaHQoKTsKIAogICAg
IGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSktPndpZHRoKCk7CisgICAgTE9H
X1dJVEhfU1RSRUFNKExheW91dEZvcm1hdHRpbmdDb250ZXh0LCBzdHJlYW0gPDwgIltNYXJnaW5d
IC0+IG5vbiBjb2xsYXBzZWQgaG9yaXpvbnRhbCAtPiBsYXlvdXRCb3g6ICIgPDwgJmxheW91dEJv
eCk7CiAgICAgcmV0dXJuIHsKICAgICAgICAgbWFyZ2luTGVmdC5pc0F1dG8oKSA/IExheW91dFVu
aXQgeyAwIH0gOiB2YWx1ZUZvckxlbmd0aChtYXJnaW5MZWZ0LCBjb250YWluaW5nQmxvY2tXaWR0
aCksCiAgICAgICAgIG1hcmdpblJpZ2h0LmlzQXV0bygpID8gTGF5b3V0VW5pdCB7IDAgfSA6IHZh
bHVlRm9yTGVuZ3RoKG1hcmdpblJpZ2h0LCBjb250YWluaW5nQmxvY2tXaWR0aCkKQEAgLTc0NCw2
ICs3NjEsNyBAQCBEaXNwbGF5OjpCb3g6OlZlcnRpY2FsRWRnZXMgRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZFZlcgogICAgIGF1dG8gbWFyZ2luQm90dG9t
ID0gc3R5bGUubWFyZ2luQm90dG9tKCk7CiAKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRo
ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFp
bmluZ0Jsb2NrKCkpLT53aWR0aCgpOworICAgIExPR19XSVRIX1NUUkVBTShMYXlvdXRGb3JtYXR0
aW5nQ29udGV4dCwgc3RyZWFtIDw8ICJbTWFyZ2luXSAtPiBub24gY29sbGFwc2VkIHZlcnRpY2Fs
IC0+IGxheW91dEJveDogIiA8PCAmbGF5b3V0Qm94KTsKICAgICByZXR1cm4gewogICAgICAgICBt
YXJnaW5Ub3AuaXNBdXRvKCkgPyBMYXlvdXRVbml0IHsgMCB9IDogdmFsdWVGb3JMZW5ndGgobWFy
Z2luVG9wLCBjb250YWluaW5nQmxvY2tXaWR0aCksCiAgICAgICAgIG1hcmdpbkJvdHRvbS5pc0F1
dG8oKSA/IExheW91dFVuaXQgeyAwIH0gOiB2YWx1ZUZvckxlbmd0aChtYXJnaW5Cb3R0b20sIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1Zl
cmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApp
bmRleCA5YWI4MDhmMWI4ZGU1NTZhMGZjZTBmZmY1NWZlMTY0OTNhYjJlZTBiLi4zNTdkNDFiYjkx
ODcxMzc0OWI5ZjUzNGNhZTc3NTlhN2NiNTJjNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIK
ICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKKyNp
bmNsdWRlICJMYXlvdXRUcmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBA
IC0zOCw3ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsK
IAotc3RhdGljIHZvaWQgb3V0cHV0TWlzbWF0Y2hpbmdCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRl
eHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0Q29udGV4dCYgY29udGV4dCwgY29uc3QgUmVu
ZGVyQm94JiByZW5kZXJlciwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitzdGF0aWMgYm9vbCBvdXRw
dXRNaXNtYXRjaGluZ0JveEluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBj
b25zdCBMYXlvdXRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBj
b25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBib29sIGZpcnN0TWlzbWF0Y2hpbmdSZWN0ID0g
dHJ1ZTsKICAgICBhdXRvIG91dHB1dFJlY3QgPSBbJl0gKGNvbnN0IFN0cmluZyYgcHJlZml4LCBj
b25zdCBMYXlvdXRSZWN0JiByZW5kZXJlclJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxheW91dFJl
Y3QpIHsKQEAgLTU2LDMwICs1Nyw0MCBAQCBzdGF0aWMgdm9pZCBvdXRwdXRNaXNtYXRjaGluZ0Jv
eEluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYQogICAgIGF1
dG8qIGRpc3BsYXlCb3ggPSBjb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
KTsKICAgICBBU1NFUlQoZGlzcGxheUJveCk7CiAKLSAgICBpZiAocmVuZGVyZXIuZnJhbWVSZWN0
KCkgIT0gZGlzcGxheUJveC0+cmVjdCgpKQorICAgIGlmIChyZW5kZXJlci5mcmFtZVJlY3QoKSAh
PSBkaXNwbGF5Qm94LT5yZWN0KCkpICB7CiAgICAgICAgIG91dHB1dFJlY3QoImZyYW1lQm94Iiwg
cmVuZGVyZXIuZnJhbWVSZWN0KCksIGRpc3BsYXlCb3gtPnJlY3QoKSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KIAotICAgIGlmIChyZW5kZXJlci5tYXJnaW5Cb3hSZWN0KCkgIT0gZGlz
cGxheUJveC0+bWFyZ2luQm94KCkpCisgICAgaWYgKHJlbmRlcmVyLm1hcmdpbkJveFJlY3QoKSAh
PSBkaXNwbGF5Qm94LT5tYXJnaW5Cb3goKSkgewogICAgICAgICBvdXRwdXRSZWN0KCJtYXJnaW5C
b3giLCByZW5kZXJlci5tYXJnaW5Cb3hSZWN0KCksIGRpc3BsYXlCb3gtPm1hcmdpbkJveCgpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0gICAgaWYgKHJlbmRlcmVyLmJvcmRlckJv
eFJlY3QoKSAhPSBkaXNwbGF5Qm94LT5ib3JkZXJCb3goKSkKKyAgICBpZiAocmVuZGVyZXIuYm9y
ZGVyQm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPmJvcmRlckJveCgpKSB7CiAgICAgICAgIG91dHB1
dFJlY3QoImJvcmRlckJveCIsIHJlbmRlcmVyLmJvcmRlckJveFJlY3QoKSwgZGlzcGxheUJveC0+
Ym9yZGVyQm94KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLSAgICBpZiAocmVu
ZGVyZXIucGFkZGluZ0JveFJlY3QoKSAhPSBkaXNwbGF5Qm94LT5wYWRkaW5nQm94KCkpCisgICAg
aWYgKHJlbmRlcmVyLnBhZGRpbmdCb3hSZWN0KCkgIT0gZGlzcGxheUJveC0+cGFkZGluZ0JveCgp
KSB7CiAgICAgICAgIG91dHB1dFJlY3QoInBhZGRpbmdCb3giLCByZW5kZXJlci5wYWRkaW5nQm94
UmVjdCgpLCBkaXNwbGF5Qm94LT5wYWRkaW5nQm94KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CiAKLSAgICBpZiAocmVuZGVyZXIuY29udGVudEJveFJlY3QoKSAhPSBkaXNwbGF5Qm94
LT5jb250ZW50Qm94KCkpCisgICAgaWYgKHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCkgIT0gZGlz
cGxheUJveC0+Y29udGVudEJveCgpKSB7CiAgICAgICAgIG91dHB1dFJlY3QoImNvbnRlbnRCb3gi
LCByZW5kZXJlci5jb250ZW50Qm94UmVjdCgpLCBkaXNwbGF5Qm94LT5jb250ZW50Qm94KCkpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLSAgICBzdHJlYW0ubmV4dExpbmUoKTsKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIHZlcmlmeUFuZE91dHB1dFN1YnRyZWUo
VGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBS
ZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3N0YXRpYyBib29sIHZl
cmlmeUFuZE91dHB1dFN1YnRyZWUoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBCb3gmIGxheW91
dEJveCkKIHsKLSAgICBvdXRwdXRNaXNtYXRjaGluZ0JveEluZm9ybWF0aW9uSWZOZWVkZWQoc3Ry
ZWFtLCBjb250ZXh0LCByZW5kZXJlciwgbGF5b3V0Qm94KTsKKyAgICBhdXRvIG1pc210YWNoaW5n
R2VvbWV0cnkgPSBvdXRwdXRNaXNtYXRjaGluZ0JveEluZm9ybWF0aW9uSWZOZWVkZWQoc3RyZWFt
LCBjb250ZXh0LCByZW5kZXJlciwgbGF5b3V0Qm94KTsKIAogICAgIGlmICghaXM8Q29udGFpbmVy
PihsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBtaXNtdGFjaGlu
Z0dlb21ldHJ5OwogCiAgICAgYXV0byYgY29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihs
YXlvdXRCb3gpOwogICAgIGF1dG8qIGNoaWxkQm94ID0gY29udGFpbmVyLmZpcnN0Q2hpbGQoKTsK
QEAgLTkxLDE5ICsxMDIsMjUgQEAgc3RhdGljIHZvaWQgdmVyaWZ5QW5kT3V0cHV0U3VidHJlZShU
ZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dENvbnRleHQmIGNvbnQKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgdmVyaWZ5QW5kT3V0cHV0U3VidHJlZShz
dHJlYW0sIGNvbnRleHQsIGRvd25jYXN0PFJlbmRlckJveD4oKmNoaWxkUmVuZGVyZXIpLCAqY2hp
bGRCb3gpOworICAgICAgICBhdXRvIG1pc21hdGNoaW5nU3VidHJlZUdlb21ldHJ5ID0gdmVyaWZ5
QW5kT3V0cHV0U3VidHJlZShzdHJlYW0sIGNvbnRleHQsIGRvd25jYXN0PFJlbmRlckJveD4oKmNo
aWxkUmVuZGVyZXIpLCAqY2hpbGRCb3gpOworICAgICAgICBtaXNtdGFjaGluZ0dlb21ldHJ5IHw9
IG1pc21hdGNoaW5nU3VidHJlZUdlb21ldHJ5OworCiAgICAgICAgIGNoaWxkQm94ID0gY2hpbGRC
b3gtPm5leHRTaWJsaW5nKCk7CiAgICAgICAgIGNoaWxkUmVuZGVyZXIgPSBjaGlsZFJlbmRlcmVy
LT5uZXh0U2libGluZygpOwogICAgIH0KKyAgICByZXR1cm4gbWlzbXRhY2hpbmdHZW9tZXRyeTsK
IH0KIAogdm9pZCBMYXlvdXRDb250ZXh0Ojp2ZXJpZnlBbmRPdXRwdXRNaXNtYXRjaGluZ0xheW91
dFRyZWUoY29uc3QgUmVuZGVyVmlldyYgcmVuZGVyVmlldykgY29uc3QKIHsKICAgICBUZXh0U3Ry
ZWFtIHN0cmVhbTsKKyAgICBhdXRvIG1pc21hdGNoaW5nR2VvbWV0cnkgPSB2ZXJpZnlBbmRPdXRw
dXRTdWJ0cmVlKHN0cmVhbSwgKnRoaXMsIHJlbmRlclZpZXcsICptX3Jvb3QuZ2V0KCkpOwogI2lm
IEVOQUJMRShUUkVFX0RFQlVHR0lORykKLSAgICBzaG93UmVuZGVyVHJlZSgmcmVuZGVyVmlldyk7
CisgICAgaWYgKG1pc21hdGNoaW5nR2VvbWV0cnkpIHsKKyAgICAgICAgc2hvd1JlbmRlclRyZWUo
JnJlbmRlclZpZXcpOworICAgICAgICBUcmVlQnVpbGRlcjo6c2hvd0xheW91dFRyZWUoKnRoaXMs
ICptX3Jvb3QuZ2V0KCkpOworICAgIH0KICNlbmRpZgotICAgIHZlcmlmeUFuZE91dHB1dFN1YnRy
ZWUoc3RyZWFtLCAqdGhpcywgcmVuZGVyVmlldywgKm1fcm9vdC5nZXQoKSk7CiAgICAgV1RGTG9n
QWx3YXlzKCIlcyIsIHN0cmVhbS5yZWxlYXNlKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDdlMDNjZDY3MmFiZDEwZTRlZDUyZmI3NDRi
MDU5NzM1MzZjYjgxMmQuLmYxYzAwNzU0N2I5MjU3MjA5NzljN2E1ZDc5OWMxNTViYzJiNDc1Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9y
bWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzUsNyArMzUsOSBAQAogI2lu
Y2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgogI2luY2x1
ZGUgIkxheW91dENvbnRleHQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewpAQCAtNTUsNiArNTcsOSBA
QCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dChMYXlvdXRDb250ZXh0JiBsYXlv
dXRDb250ZXh0LCBGb3JtYXR0aW5nU3RhdAogICAgIC8vIFZlcnRpY2FsIG1hcmdpbnMgYmV0d2Vl
biBhZGphY2VudCBibG9jay1sZXZlbCBib3hlcyBpbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4
dCBjb2xsYXBzZS4KICAgICBpZiAoIWlzPENvbnRhaW5lcj4ocm9vdCgpKSkKICAgICAgICAgcmV0
dXJuOworCisgICAgTE9HX1dJVEhfU1RSRUFNKExheW91dEZvcm1hdHRpbmdDb250ZXh0LCBzdHJl
YW0gPDwgIltTdGFydF0gLT4gYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IC0+IGxheW91dCBjb250
ZXh0KCIgPDwgJmxheW91dENvbnRleHQgPDwgIikgZm9ybWF0dGluZyByb290KCIgPDwgJnJvb3Qo
KSA8PCAiKSIpOworCiAgICAgYXV0byYgZm9ybWF0dGluZ1Jvb3QgPSBkb3duY2FzdDxDb250YWlu
ZXI+KHJvb3QoKSk7CiAgICAgTGF5b3V0UXVldWUgbGF5b3V0UXVldWU7CiAgICAgRmxvYXRpbmdD
b250ZXh0IGZsb2F0aW5nQ29udGV4dChmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpKTsK
QEAgLTczLDYgKzc4LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5
b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgRm9ybWF0dGluZ1N0YXQKICAgICAgICAgICAgIGF1
dG8mIGxheW91dEJveCA9IGxheW91dFBhaXIubGF5b3V0Qm94OwogICAgICAgICAgICAgYXV0byYg
ZGlzcGxheUJveCA9IGxheW91dFBhaXIuZGlzcGxheUJveDsKICAgICAgICAgICAgIAorICAgICAg
ICAgICAgTE9HX1dJVEhfU1RSRUFNKExheW91dEZvcm1hdHRpbmdDb250ZXh0LCBzdHJlYW0gPDwg
IltDb21wdXRlXSAtPiBbUG9zaXRpb25dW0JvcmRlcl1bUGFkZGluZ11bV2lkdGhdW01hcmdpbl0g
LT4gZm9yIGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICAgICAgICAgIGNv
bXB1dGVTdGF0aWNQb3NpdGlvbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlCb3gp
OwogICAgICAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcobGF5b3V0Q29udGV4dCwgbGF5
b3V0Qm94LCBkaXNwbGF5Qm94KTsKICAgICAgICAgICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihs
YXlvdXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlCb3gpOwpAQCAtOTMsNiArOTksNyBAQCB2
b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dChMYXlvdXRDb250ZXh0JiBsYXlvdXRD
b250ZXh0LCBGb3JtYXR0aW5nU3RhdAogICAgICAgICAgICAgYXV0byBsYXlvdXRQYWlyID0gbGF5
b3V0UXVldWUudGFrZUxhc3QoKTsKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGxheW91
dFBhaXItPmxheW91dEJveDsKICAgICAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRQ
YWlyLT5kaXNwbGF5Qm94OworICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKExheW91dEZvcm1h
dHRpbmdDb250ZXh0LCBzdHJlYW0gPDwgIltDb21wdXRlXSAtPiBbSGVpZ2h0XVtNYXJnaW5dIC0+
IGZvciBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAKICAgICAgICAgICAgIGNv
bXB1dGVIZWlnaHRBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94
KTsKICAgICAgICAgICAgIC8vIEFkanVzdCBwb3NpdGlvbiBub3cgdGhhdCB3ZSBoYXZlIGFsbCB0
aGUgcHJldmlvdXMgZmxvYXRzIHBsYWNlZCBpbiB0aGlzIGNvbnRleHQgLWlmIG5lZWRlZC4KQEAg
LTExNSw2ICsxMjIsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dChMYXlv
dXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBGb3JtYXR0aW5nU3RhdAogI2lmbmRlZiBOREVCVUcK
ICAgICB2YWxpZGF0ZUdlb21ldHJ5Q29uc3RyYWludHNBZnRlckxheW91dChsYXlvdXRDb250ZXh0
KTsKICNlbmRpZgorICAgIExPR19XSVRIX1NUUkVBTShMYXlvdXRGb3JtYXR0aW5nQ29udGV4dCwg
c3RyZWFtIDw8ICJbRW5kXSAtPiBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgLT4gbGF5b3V0IGNv
bnRleHQoIiA8PCAmbGF5b3V0Q29udGV4dCA8PCAiKSBmb3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9v
dCgpIDw8ICIpIik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nU3RhdGU+IEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZShSZWY8RmxvYXRpbmdTdGF0
ZT4mJiBmbG9hdGluZ1N0YXRlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDM4NDQ1ZWFjMzU1NDgyYjViOGVhZWMyMDRmZjI5NDgzN2E1
N2ZiOGQuLjJlNTM0NjM3NzY1ZGFmNjc4NTZjMTc4NDNiZjVkMDMwMDM5MzJkNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTI5LDYgKzI5LDgg
QEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkZv
cm1hdHRpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91
dCB7CkBAIC0xMTIsMTQgKzExNCwxNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Okhl
aWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aQogICAgIGF1
dG8gbWFyZ2luVG9wID0gTWFyZ2luQ29sbGFwc2U6Om1hcmdpblRvcChsYXlvdXRDb250ZXh0LCBs
YXlvdXRCb3gpOwogICAgIGF1dG8gbWFyZ2luQm90dG9tID0gIE1hcmdpbkNvbGxhcHNlOjptYXJn
aW5Cb3R0b20obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIAotICAgIGlmICghaXNTdHJldGNo
ZWRUb1ZpZXdwb3J0KGxheW91dENvbnRleHQsIGxheW91dEJveCkpCisgICAgaWYgKCFpc1N0cmV0
Y2hlZFRvVmlld3BvcnQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSkgeworICAgICAgICBMT0df
V0lUSF9TVFJFQU0oTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHQsIHN0cmVhbSA8PCAiW0hlaWdodF1b
TWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IGhlaWdodCgiIDw8IGhlaWdodCA8PCAi
cHgpIG1hcmdpbigiIDw8IG1hcmdpblRvcCA8PCAicHgsICIgPDwgbWFyZ2luQm90dG9tIDw8ICJw
eCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgICAgICByZXR1cm4g
eyBoZWlnaHQsIHsgbWFyZ2luVG9wLCBtYXJnaW5Cb3R0b20gfSB9OworICAgIH0KIAogICAgIGF1
dG8gaW5pdGlhbENvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGxheW91dENvbnRleHQuZGlzcGxheUJv
eEZvckxheW91dEJveChpbml0aWFsQ29udGFpbmluZ0Jsb2NrKGxheW91dEJveCkpLT5jb250ZW50
Qm94KCkuaGVpZ2h0KCk7CiAgICAgLy8gU3RyZXRjaCBidXQgbmV2ZXIgb3ZlcnN0cmV0Y2ggd2l0
aCB0aGUgbWFyZ2lucy4KICAgICBpZiAoaGVpZ2h0ICsgbWFyZ2luVG9wICsgbWFyZ2luQm90dG9t
IDwgaW5pdGlhbENvbnRhaW5pbmdCbG9ja0hlaWdodCkKICAgICAgICAgaGVpZ2h0ID0gaW5pdGlh
bENvbnRhaW5pbmdCbG9ja0hlaWdodCAtIG1hcmdpblRvcCAtIG1hcmdpbkJvdHRvbTsKIAorICAg
IExPR19XSVRIX1NUUkVBTShMYXlvdXRGb3JtYXR0aW5nQ29udGV4dCwgc3RyZWFtIDw8ICJbSGVp
Z2h0XVtNYXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gc3RyZWNoZWQgdG8gdmlld3Bv
cnQgLT4gaGVpZ2h0KCIgPDwgaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgbWFyZ2luVG9wIDw8
ICJweCwgIiA8PCBtYXJnaW5Cb3R0b20gPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0
Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIHsgaGVpZ2h0LCB7IG1hcmdpblRvcCwgbWFyZ2luQm90
dG9tIH0gfTsKIH0KIApAQCAtMjIzLDggKzIyOCwxMCBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OldpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpp
bgogICAgIH07CiAKICAgICBhdXRvIGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZSA9IGNvbXB1
dGUoKTsKLSAgICBpZiAoIWlzU3RyZXRjaGVkVG9WaWV3cG9ydChsYXlvdXRDb250ZXh0LCBsYXlv
dXRCb3gpKQorICAgIGlmICghaXNTdHJldGNoZWRUb1ZpZXdwb3J0KGxheW91dENvbnRleHQsIGxh
eW91dEJveCkpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKExheW91dEZvcm1hdHRpbmdDb250
ZXh0LCBzdHJlYW0gPDwgIltXaWR0aF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+
IHdpZHRoKCIgPDwgY29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLndpZHRoIDw8ICJweCkgbWFy
Z2luKCIgPDwgY29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLm1hcmdpbi5sZWZ0IDw8ICJweCwg
IiA8PCBjb21wdXRlZFdpZHRoQW5kTWFyZ2luVmFsdWUubWFyZ2luLnJpZ2h0IDw8ICJweCkgLT4g
bGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgICAgICByZXR1cm4gY29tcHV0
ZWRXaWR0aEFuZE1hcmdpblZhbHVlOworICAgIH0KIAogICAgIGF1dG8gaW5pdGlhbENvbnRhaW5p
bmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGluaXRp
YWxDb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSktPmNvbnRlbnRCb3goKS53aWR0aCgpOwogICAg
IGF1dG8gaG9yaXpvbnRhbE1hcmdpbnMgPSBjb21wdXRlZFdpZHRoQW5kTWFyZ2luVmFsdWUubWFy
Z2luLmxlZnQgKyBjb21wdXRlZFdpZHRoQW5kTWFyZ2luVmFsdWUubWFyZ2luLnJpZ2h0OwpAQCAt
MjMyLDYgKzIzOSw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJn
aW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluCiAgICAgaWYgKGNvbXB1dGVk
V2lkdGhBbmRNYXJnaW5WYWx1ZS53aWR0aCArIGhvcml6b250YWxNYXJnaW5zIDwgaW5pdGlhbENv
bnRhaW5pbmdCbG9ja1dpZHRoKQogICAgICAgICBjb21wdXRlZFdpZHRoQW5kTWFyZ2luVmFsdWUu
d2lkdGggPSBpbml0aWFsQ29udGFpbmluZ0Jsb2NrV2lkdGggLSBob3Jpem9udGFsTWFyZ2luczsK
IAorICAgIExPR19XSVRIX1NUUkVBTShMYXlvdXRGb3JtYXR0aW5nQ29udGV4dCwgc3RyZWFtIDw8
ICJbV2lkdGhdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiBzdHJlY2hlZCB0byB2
aWV3cG9ydC0+IHdpZHRoKCIgPDwgY29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLndpZHRoIDw8
ICJweCkgbWFyZ2luKCIgPDwgY29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLm1hcmdpbi5sZWZ0
IDw8ICJweCwgIiA8PCBjb21wdXRlZFdpZHRoQW5kTWFyZ2luVmFsdWUubWFyZ2luLnJpZ2h0IDw8
ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiB7
IGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS53aWR0aCwgY29tcHV0ZWRXaWR0aEFuZE1hcmdp
blZhbHVlLm1hcmdpbiB9OwogfQogCkBAIC0yNDksNiArMjU3LDcgQEAgRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW4KICAgICAvLyAjMgogICAgIGF1dG8gaW5saW5lUmVwbGFjZWRXaWR0aEFuZEJsb2Nr
Tm9uUmVwbGFjZWRNYXJnaW4gPSBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91
dENvbnRleHQsIGxheW91dEJveCwgaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi53aWR0aCk7
CiAgICAgQVNTRVJUKGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4ud2lkdGggPT0gaW5saW5l
UmVwbGFjZWRXaWR0aEFuZEJsb2NrTm9uUmVwbGFjZWRNYXJnaW4ud2lkdGgpOworICAgIExPR19X
SVRIX1NUUkVBTShMYXlvdXRGb3JtYXR0aW5nQ29udGV4dCwgc3RyZWFtIDw8ICJbV2lkdGhdW01h
cmdpbl0gLT4gaW5mbG93IHJlcGxhY2VkIC0+IHdpZHRoKCIgPDwgaW5saW5lUmVwbGFjZWRXaWR0
aEFuZEJsb2NrTm9uUmVwbGFjZWRNYXJnaW4ud2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCBpbmxp
bmVSZXBsYWNlZFdpZHRoQW5kQmxvY2tOb25SZXBsYWNlZE1hcmdpbi5tYXJnaW4ubGVmdCA8PCAi
cHgsICIgPDwgaW5saW5lUmVwbGFjZWRXaWR0aEFuZEJsb2NrTm9uUmVwbGFjZWRNYXJnaW4ubWFy
Z2luLmxlZnQgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAg
ICAgcmV0dXJuIGlubGluZVJlcGxhY2VkV2lkdGhBbmRCbG9ja05vblJlcGxhY2VkTWFyZ2luOwog
fQogCkBAIC0yNjcsNiArMjc2LDcgQEAgTGF5b3V0UG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKExheW91dENvbnRleHQmIGxheW8KICAgICAgICAg
YXV0byYgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94ID0gKmxheW91dENvbnRleHQuZGlzcGxheUJv
eEZvckxheW91dEJveCgqcHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKICAgICAgICAgdG9wID0gcHJl
dmlvdXNJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgpICsgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94
Lm1hcmdpbkJvdHRvbSgpOwogICAgIH0KKyAgICBMT0dfV0lUSF9TVFJFQU0oTGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXSAtPiBzdGF0aWMgLT4gdG9wKCIgPDwg
dG9wIDw8ICJweCkgbGVmdCgiIDw8IGxlZnQgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0
Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIHsgdG9wLCBsZWZ0IH07CiB9CiAKQEAgLTMyOSw3ICsz
MzksMTAgQEAgTGF5b3V0UG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Omlu
Rmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihMYXlvdXRDb24KICAgICAgICAgbGVmdERlbHRhID0gbGVm
dC52YWx1ZSgpOwogICAgIH0KIAotICAgIHJldHVybiB7IGRpc3BsYXlCb3gubGVmdCgpICsgbGVm
dERlbHRhLCBkaXNwbGF5Qm94LnRvcCgpICsgdG9wRGVsdGEgfTsKKyAgICBhdXRvIGNvbXB1dGVk
TGVmdCA9IGRpc3BsYXlCb3gubGVmdCgpICsgbGVmdERlbHRhOworICAgIGF1dG8gY29tcHV0ZWRU
b3AgPSBkaXNwbGF5Qm94LnRvcCgpICsgdG9wRGVsdGE7CisgICAgTE9HX1dJVEhfU1RSRUFNKExh
eW91dEZvcm1hdHRpbmdDb250ZXh0LCBzdHJlYW0gPDwgIltQb3NpdGlvbl0gLT4gcG9zaXRpb25l
ZCBpbmZsb3cgLT4gdG9wKCIgPDwgdG9wIDw8ICJweCkgbGVmdCgiIDw8IGxlZnQgPDwgInB4KSBs
YXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgcmV0dXJuIHsgY29tcHV0ZWRM
ZWZ0LCBjb21wdXRlZFRvcCB9OwogfQogCiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Okhl
aWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVp
Z2h0QW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5
b3V0Qm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGFlMzRhMzAyMTVkNjc1YTQ1NDc3YjllYzJmNTlkZGY2
ZjQwMDQ4ODEuLmI4NzRiNTdhNzUxMGE1NWMyODY1ODYxNTJlOTE2ZDk2OTIyNWRkMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVp
bGRlci5jcHAKQEAgLTI4LDEwICsyOCwxMiBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCiAKKyNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0
QmxvY2tDb250YWluZXIuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlv
dXRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVk
ZSAiTGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dElubGluZUJveC5oIgogI2luY2x1
ZGUgIkxheW91dElubGluZUNvbnRhaW5lci5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCkBA
IC0xMDYsNyArMTA4LDcgQEAgdm9pZCBUcmVlQnVpbGRlcjo6Y3JlYXRlU3ViVHJlZShjb25zdCBS
ZW5kZXJFbGVtZW50JiByb290UmVuZGVyZXIsIENvbnRhaW5lciYgcm8KIH0KIAogI2lmIEVOQUJM
RShUUkVFX0RFQlVHR0lORykKLXN0YXRpYyB2b2lkIG91dHB1dExheW91dEJveChUZXh0U3RyZWFt
JiBzdHJlYW0sIGNvbnN0IEJveCYgbGF5b3V0Qm94LCB1bnNpZ25lZCBkZXB0aCkKK3N0YXRpYyB2
b2lkIG91dHB1dExheW91dEJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBjb25zdCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gsIHVuc2lnbmVkIGRlcHRoKQogewog
ICAgIHVuc2lnbmVkIHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKICAgICB3aGlsZSAoKytwcmludGVk
Q2hhcmFjdGVycyA8PSBkZXB0aCAqIDIpCkBAIC0xMjIsMjYgKzEyNCwyNiBAQCBzdGF0aWMgdm9p
ZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGxheW91dEJv
eCwgdW5zaWduZWQgZAogICAgICAgICBzdHJlYW0gPDwgImJsb2NrIGNvbnRhaW5lciI7CiAgICAg
fSBlbHNlCiAgICAgICAgIHN0cmVhbSA8PCAiYm94IjsKLSAgICBzdHJlYW0gPDwgIiBhdCBbMCAw
XSBzaXplIFswIDBdIjsKKyAgICBzdHJlYW0gPDwgIiBhdCBbIiA8PCBkaXNwbGF5Qm94LmxlZnQo
KSA8PCAiICIgPDwgZGlzcGxheUJveC50b3AoKSA8PCAiXSBzaXplIFsiIDw8IGRpc3BsYXlCb3gu
d2lkdGgoKSA8PCAiICIgPDwgZGlzcGxheUJveC5oZWlnaHQoKSA8PCAiXSI7CiAgICAgc3RyZWFt
IDw8ICIgb2JqZWN0IFsiIDw8ICZsYXlvdXRCb3ggPDwgIl0iOwogCiAgICAgc3RyZWFtLm5leHRM
aW5lKCk7CiB9CiAKLXN0YXRpYyB2b2lkIG91dHB1dExheW91dFRyZWUoVGV4dFN0cmVhbSYgc3Ry
ZWFtLCBjb25zdCBDb250YWluZXImIHJvb3RDb250YWluZXIsIHVuc2lnbmVkIGRlcHRoKQorc3Rh
dGljIHZvaWQgb3V0cHV0TGF5b3V0VHJlZShjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250
ZXh0LCBUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IENvbnRhaW5lciYgcm9vdENvbnRhaW5lciwg
dW5zaWduZWQgZGVwdGgpCiB7CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBl
PEJveD4ocm9vdENvbnRhaW5lcikpIHsKLSAgICAgICAgb3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwg
Y2hpbGQsIGRlcHRoKTsKKyAgICAgICAgb3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgY2hpbGQsICps
YXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY2hpbGQpLCBkZXB0aCk7CiAgICAg
ICAgIGlmIChpczxDb250YWluZXI+KGNoaWxkKSkKLSAgICAgICAgICAgIG91dHB1dExheW91dFRy
ZWUoc3RyZWFtLCBkb3duY2FzdDxDb250YWluZXI+KGNoaWxkKSwgZGVwdGggKyAxKTsKKyAgICAg
ICAgICAgIG91dHB1dExheW91dFRyZWUobGF5b3V0Q29udGV4dCwgc3RyZWFtLCBkb3duY2FzdDxD
b250YWluZXI+KGNoaWxkKSwgZGVwdGggKyAxKTsKICAgICB9CiB9CiAKLXZvaWQgVHJlZUJ1aWxk
ZXI6OnNob3dMYXlvdXRUcmVlKGNvbnN0IENvbnRhaW5lciYgbGF5b3V0Qm94KQordm9pZCBUcmVl
QnVpbGRlcjo6c2hvd0xheW91dFRyZWUoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4
dCwgY29uc3QgQ29udGFpbmVyJiBsYXlvdXRCb3gpCiB7CiAgICAgVGV4dFN0cmVhbSBzdHJlYW0o
VGV4dFN0cmVhbTo6TGluZU1vZGU6Ok11bHRpcGxlTGluZSwgVGV4dFN0cmVhbTo6Rm9ybWF0dGlu
Zzo6U1ZHU3R5bGVSZWN0KTsKLSAgICBvdXRwdXRMYXlvdXRCb3goc3RyZWFtLCBsYXlvdXRCb3gs
IDApOwotICAgIG91dHB1dExheW91dFRyZWUoc3RyZWFtLCBsYXlvdXRCb3gsIDEpOworICAgIG91
dHB1dExheW91dEJveChzdHJlYW0sIGxheW91dEJveCwgKmxheW91dENvbnRleHQuZGlzcGxheUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gpLCAwKTsKKyAgICBvdXRwdXRMYXlvdXRUcmVlKGxheW91
dENvbnRleHQsIHN0cmVhbSwgbGF5b3V0Qm94LCAxKTsKICAgICBXVEZMb2dBbHdheXMoIiVzIiwg
c3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgpKTsKIH0KIApAQCAtMTUzLDcgKzE1NSw4IEBA
IHZvaWQgcHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cygpCiAgICAgICAgIGlmIChkb2N1
bWVudC0+ZnJhbWUoKSAmJiBkb2N1bWVudC0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkKICAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLW1haW4gZnJhbWUt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
JXNcbiIsIGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
TGF5b3V0OjpUcmVlQnVpbGRlcjo6c2hvd0xheW91dFRyZWUoKlRyZWVCdWlsZGVyOjpjcmVhdGVM
YXlvdXRUcmVlKCpkb2N1bWVudC0+cmVuZGVyVmlldygpKSk7CisgICAgICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIGZpbmQgYSB3YXkgdG8gb3V0cHV0IGdlb21ldHJ5IHdpdGhvdXQgbGF5b3V0IGNvbnRl
eHQuCisgICAgICAgIC8vIExheW91dDo6VHJlZUJ1aWxkZXI6OnNob3dMYXlvdXRUcmVlKCpUcmVl
QnVpbGRlcjo6Y3JlYXRlTGF5b3V0VHJlZSgqZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkpOwogICAg
IH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dFRyZWVCdWlsZGVyLmgKaW5kZXggYzNiODdiOWIyYzdiYWUyMjNjMjZlYWQwYzgyNjRm
ODhhZjlhNjRjNi4uYThiMWNmZDQ5YTM0OThmYzZmZTc0MTc4ZmJiODY5OWU1Njk0NDljMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVp
bGRlci5oCkBAIC0zNSwxMSArMzUsMTIgQEAgY2xhc3MgUmVuZGVyVmlldzsKIG5hbWVzcGFjZSBM
YXlvdXQgewogCiBjbGFzcyBDb250YWluZXI7CitjbGFzcyBMYXlvdXRDb250ZXh0OwogCiBjbGFz
cyBUcmVlQnVpbGRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250
YWluZXI+IGNyZWF0ZUxheW91dFRyZWUoY29uc3QgUmVuZGVyVmlldyYpOwotICAgIHN0YXRpYyB2
b2lkIHNob3dMYXlvdXRUcmVlKGNvbnN0IENvbnRhaW5lciYpOworICAgIHN0YXRpYyB2b2lkIHNo
b3dMYXlvdXRUcmVlKGNvbnN0IExheW91dENvbnRleHQmLCBjb25zdCBDb250YWluZXImKTsKIAog
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVTdWJUcmVlKGNvbnN0IFJlbmRlckVsZW1l
bnQmIHJvb3RSZW5kZXJlciwgQ29udGFpbmVyJiByb290Q29udGFpbmVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvZ2dpbmcuaAppbmRleCBlMGY0NDFkNmUyODk0OWUzNTNhYmMxNzQ2M2U0NjE2NzE0Y2Qy
ZmUyLi43NTI0YmJmZDkwMDdhZTk1Y2MyZTE1NWIxYjhhY2U3OGQ5MzFkMDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9nZ2luZy5oCkBAIC02MSw2ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBNKEluZGV4ZWREQk9wZXJhdGlvbnMpIFwKICAgICBNKExheWVycykgXAogICAgIE0oTGF5
b3V0KSBcCisgICAgTShMYXlvdXRGb3JtYXR0aW5nQ29udGV4dCkgXAogICAgIE0oTG9hZGluZykg
XAogICAgIE0oTWVkaWEpIFwKICAgICBNKE1lZGlhQ2FwdHVyZVNhbXBsZXMpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342809</attachid>
            <date>2018-06-15 06:53:30 -0700</date>
            <delta_ts>2018-06-15 06:56:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186637-20180615065329.patch</filename>
            <type>text/plain</type>
            <size>32299</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyODY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWEyNjQ0YzA2YzI3NTBh
M2YzZWZhZDYxM2Q4NjhmMzE5OGY1NGU2ZS4uMjk3NGQ3YzJkOTIxOGNmMTc0YjBiM2I4NzQ0OGEx
MjAxMzQyM2RmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE4LTA2LTE1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQWRkIEZvcm1hdHRp
bmdDb250ZXh0TGF5b3V0IGxvZ2dpbmcgY2hhbm5lbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvbWUgYmFzaWMgbGF5b3V0IGxvZ2dpbmcgKC1X
ZWJDb3JlTG9nZ2luZyAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHQiKS4KKworICAgICAgICAqIGxh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZs
b3dEZXNjZW5kYW50cyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpjb250ZW50SGVpZ2h0Rm9y
Rm9ybWF0dGluZ0NvbnRleHRSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6c2hyaW5r
VG9GaXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZs
b3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNh
bEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdO
b25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFy
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkV2lk
dGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNl
ZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRl
ZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRW
ZXJ0aWNhbE1hcmdpblZhbHVlKToKKyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdCb3hJbmZvcm1hdGlv
bklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6dmVyaWZ5QW5kT3V0cHV0U3Vi
dHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dENvbnRleHQ6OnZlcmlmeUFu
ZE91dHB1dE1pc21hdGNoaW5nTGF5b3V0VHJlZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0IGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRy
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dO
b25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJn
aW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6c3RhdGljUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKToK
KyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dExheW91dEJveCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6Om91dHB1dExheW91dFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpU
cmVlQnVpbGRlcjo6c2hvd0xheW91dFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpw
cmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoK
KwogMjAxOC0wNi0xNSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtXZWIgQW5pbWF0aW9uc10gQ1NTIEFuaW1hdGlvbnMgc2hvdWxkIHRha2UgcHJlY2VkZW5j
ZSBvdmVyIENTUyBUcmFuc2l0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5jcHAKaW5kZXggMGQ5ZWEzYWY4ODYyMGIwMzk3OWUzY2EwZTNiZjJkYTVjM2ViYjM1
My4uMmY5NWJhYjg1YmIwM2YxNGQ2MDYwMTBiMjljMGNiZGQyYzlkMzcwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zMyw3ICszMyw5IEBACiAj
aW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgog
I2luY2x1ZGUgIkxheW91dERlc2NlbmRhbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7
CkBAIC05NiwxNyArOTgsMjIgQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQ
b3NpdGlvbmVkQ2hpbGRyZW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGUKICAgICBpZiAoY29u
dGFpbmVyLmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSAmJiAmY29udGFpbmVyICE9ICZy
b290KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJTdGFydDogbW92ZSBpbi1mbG93IHBvc2l0aW9uZWQg
Y2hpbGRyZW4gLT4gY29udGV4dDogIiA8PCAmbGF5b3V0Q29udGV4dCA8PCAiIHBhcmVudDogIiA8
PCAmY29udGFpbmVyKTsKICAgICBmb3IgKGF1dG8mIGxheW91dEJveCA6IGNoaWxkcmVuT2ZUeXBl
PEJveD4oY29udGFpbmVyKSkgewogICAgICAgICBpZiAoIWxheW91dEJveC5pc0luRmxvd1Bvc2l0
aW9uZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjb21wdXRlSW5GbG93UG9z
aXRpb25lZFBvc2l0aW9uKGxheW91dENvbnRleHQsIGxheW91dEJveCwgKmxheW91dENvbnRleHQu
ZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpKTsKICAgICB9CisgICAgTE9HX1dJVEhf
U1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIkVuZDogbW92ZSBpbi1m
bG93IHBvc2l0aW9uZWQgY2hpbGRyZW4gLT4gY29udGV4dDogIiA8PCAmbGF5b3V0Q29udGV4dCA8
PCAiIHBhcmVudDogIiA8PCAmY29udGFpbmVyKTsKIH0KIAogdm9pZCBGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4
dCkgY29uc3QKIHsKICAgICBpZiAoIWlzPENvbnRhaW5lcj4obV9yb290LmdldCgpKSkKICAgICAg
ICAgcmV0dXJuOworCisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LCBzdHJlYW0gPDwgIlN0YXJ0OiBsYXlvdXQgb3V0LW9mLWZsb3cgZGVzY2VuZGFudHMgLT4gY29u
dGV4dDogIiA8PCAmbGF5b3V0Q29udGV4dCA8PCAiIHJvb3Q6ICIgPDwgJnJvb3QoKSk7CisKICAg
ICBmb3IgKGF1dG8mIG91dE9mRmxvd0JveCA6IGRvd25jYXN0PENvbnRhaW5lcj4oKm1fcm9vdCku
b3V0T2ZGbG93RGVzY2VuZGFudHMoKSkgewogICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqb3V0
T2ZGbG93Qm94OwogICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0Q29udGV4dC5jcmVh
dGVEaXNwbGF5Qm94KGxheW91dEJveCk7CkBAIC0xMjQsNiArMTMxLDcgQEAgdm9pZCBGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMoTGF5b3V0Q29udGV4dCYgbGF5
b3V0Q29udGV4dCkKIAogICAgICAgICBjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShs
YXlvdXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlCb3gpOwogICAgIH0KKyAgICBMT0dfV0lU
SF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiRW5kOiBsYXlvdXQg
b3V0LW9mLWZsb3cgZGVzY2VuZGFudHMgLT4gY29udGV4dDogIiA8PCAmbGF5b3V0Q29udGV4dCA8
PCAiIHJvb3Q6ICIgPDwgJnJvb3QoKSk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXgg
NTVkNWNlZDc0MjlmZjJkMjRjZDFiNzJkODFhM2MzZTI4MDE0YTBiNy4uZDM0N2Q0MDczOTMzMzUw
MTA5MGUxNTcwMWM5ZWI5YjY3M2Q3MWRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNTYsMTEgKzU2LDE0IEBAIHN0
YXRpYyBMYXlvdXRVbml0IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoTGF5
b3V0Q29udGV4dCYgbGF5b3V0Q29uCiAgICAgYXV0byB0b3AgPSBmaXJzdERpc3BsYXlCb3gtPm1h
cmdpbkJveCgpLnRvcCgpOwogICAgIGF1dG8gYm90dG9tID0gbGFzdERpc3BsYXlCb3gtPm1hcmdp
bkJveCgpLmJvdHRvbSgpOwogICAgIC8vIEZJWE1FOiBhZGQgZmxvYXRpbmcgc3VwcG9ydC4KLSAg
ICByZXR1cm4gYm90dG9tIC0gdG9wOworICAgIGF1dG8gY29tcHV0ZWRIZWlnaHQgPSBib3R0b20g
LSB0b3A7CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJl
YW0gPDwgIltIZWlnaHRdIC0+IGNvbnRlbnQgaGVpZ2h0IGZvciBmb3JtYXR0aW5nIGNvbnRleHQg
cm9vdCAtPiBoZWlnaHQoIiA8PCBjb21wdXRlZEhlaWdodCA8PCAicHgpIGxheW91dEJveCgiPDwg
JmxheW91dEJveCA8PCAiKSIpOworICAgIHJldHVybiBjb21wdXRlZEhlaWdodDsKIH0KIAotc3Rh
dGljIExheW91dFVuaXQgc2hyaW5rVG9GaXRXaWR0aChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94
JikKK3N0YXRpYyBMYXlvdXRVbml0IHNocmlua1RvRml0V2lkdGgoTGF5b3V0Q29udGV4dCYsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogeworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29u
dGV4dExheW91dCwgc3RyZWFtIDw8ICJbV2lkdGhdIC0+IHNocmluayB0byBmaXQgLT4gdW5zdXBw
b3J0ZWQgLT4gd2lkdGgoIiA8PCBMYXlvdXRVbml0IHsgfSA8PCAicHgpIGxheW91dEJveDogIiA8
PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMTgzLDYgKzE4
Niw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6VmVydGljYWxHZW9tZXRyeSBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mCiAgICAgQVNTRVJUKG1hcmdpblRvcCk7CiAg
ICAgQVNTRVJUKG1hcmdpbkJvdHRvbSk7CiAKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGlu
Z0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtIZWlnaHRdW01hcmdpbl0gLT4g
b3V0LW9mLWZsb3cgbm9uLXJlcGxhY2VkIC0+IHRvcCgiIDw8ICp0b3AgPDwgInB4KSBib3R0b20o
IiAgPDwgKmJvdHRvbSA8PCAicHgpIGhlaWdodCgiIDw8ICpoZWlnaHQgPDwgInB4KSBtYXJnaW4o
IiA8PCAqbWFyZ2luVG9wIDw8ICJweCwgIiAgPDwgKm1hcmdpbkJvdHRvbSA8PCAicHgpIGxheW91
dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4geyAqdG9wLCAqYm90dG9t
LCB7ICpoZWlnaHQsIHsgKm1hcmdpblRvcCwgKm1hcmdpbkJvdHRvbX0gfSB9OwogfQogCkBAIC0z
MjQsNiArMzI4LDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIb3Jpem9udGFsR2Vv
bWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXQKICAgICBBU1NFUlQobWFyZ2lu
TGVmdCk7CiAgICAgQVNTRVJUKG1hcmdpblJpZ2h0KTsKIAorICAgIExPR19XSVRIX1NUUkVBTShG
b3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW1dpZHRoXVtNYXJn
aW5dIC0+IG91dC1vZi1mbG93IG5vbi1yZXBsYWNlZCAtPiBsZWZ0KCIgPDwgKmxlZnQgPDwgInB4
KSByaWdodCgiICA8PCAqcmlnaHQgPDwgInB4KSB3aWR0aCgiIDw8ICp3aWR0aCA8PCAicHgpIG1h
cmdpbigiIDw8ICptYXJnaW5MZWZ0IDw8ICJweCwgIiAgPDwgKm1hcmdpblJpZ2h0IDw8ICJweCkg
bGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiB7ICpsZWZ0LCAq
cmlnaHQsIHsgKndpZHRoLCB7ICptYXJnaW5MZWZ0LCAqbWFyZ2luUmlnaHQgfSB9IH07CiB9CiAK
QEAgLTM5MSw2ICszOTYsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OlZlcnRpY2Fs
R2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZgogICAgIGlmIChib3hI
ZWlnaHQgPiBjb250YWluaW5nQmxvY2tIZWlnaHQpCiAgICAgICAgIGJvdHRvbSA9IGNvbnRhaW5p
bmdCbG9ja0hlaWdodCAtICgqdG9wICsgKm1hcmdpblRvcCArIGJvcmRlclRvcCArIHBhZGRpbmdU
b3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkJvdHRv
bSk7IAogCisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJl
YW0gPDwgIltQb3NpdGlvbl1bSGVpZ2h0XVtNYXJnaW5dIC0+IG91dC1vZi1mbG93IHJlcGxhY2Vk
IC0+IHRvcCgiIDw8ICp0b3AgPDwgInB4KSBib3R0b20oIiAgPDwgKmJvdHRvbSA8PCAicHgpIGhl
aWdodCgiIDw8IGhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8ICptYXJnaW5Ub3AgPDwgInB4LCAi
ICA8PCAqbWFyZ2luQm90dG9tIDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAi
KSIpOwogICAgIHJldHVybiB7ICp0b3AsICpib3R0b20sIHsgaGVpZ2h0LCB7ICptYXJnaW5Ub3As
ICptYXJnaW5Cb3R0b20gfSB9IH07CiB9CiAKQEAgLTQ4NCw2ICs0OTAsNyBAQCBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Okhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Om91dAogICAgIEFTU0VSVChtYXJnaW5MZWZ0KTsKICAgICBBU1NFUlQobWFyZ2lu
UmlnaHQpOwogCisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBz
dHJlYW0gPDwgIltQb3NpdGlvbl1bV2lkdGhdW01hcmdpbl0gLT4gb3V0LW9mLWZsb3cgcmVwbGFj
ZWQgLT4gbGVmdCgiIDw8ICpsZWZ0IDw8ICJweCkgcmlnaHQoIiAgPDwgKnJpZ2h0IDw8ICJweCkg
d2lkdGgoIiA8PCB3aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8ICptYXJnaW5MZWZ0IDw8ICJweCwg
IiAgPDwgKm1hcmdpblJpZ2h0IDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAi
KSIpOwogICAgIHJldHVybiB7ICpsZWZ0LCAqcmlnaHQsIHsgd2lkdGgsIHsgKm1hcmdpbkxlZnQs
ICptYXJnaW5SaWdodCB9IH0gfTsKIH0KIApAQCAtNTE0LDYgKzUyMSw4IEBAIEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6ZmxvYXRpCiAgICAgLy8gIzIKICAgICBpZiAoIWhlaWdodCkKICAgICAgICAgaGVpZ2h0
ID0gY29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRDb250ZXh0LCBs
YXlvdXRCb3gpOworCisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgbm9uLXJlcGxhY2VkIC0+
IGhlaWdodCgiIDw8ICpoZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCAqbWFyZ2luVG9wIDw8ICJw
eCwgIiA8PCAqbWFyZ2luQm90dG9tIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJv
eCA8PCAiKSIpOwogICAgIHJldHVybiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OkhlaWdo
dEFuZE1hcmdpbiB7ICpoZWlnaHQsIHsgKm1hcmdpblRvcCwgKm1hcmdpbkJvdHRvbSB9IH07CiB9
CiAKQEAgLTUzMiw2ICs1NDEsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRo
QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbgogICAgIGF1dG8g
Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWVzID0gY29tcHV0ZWROb25D
b2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsK
ICAgICAvLyAjMgogICAgIGF1dG8gY29tcHV0ZWRXaWR0aFZhbHVlID0gd2lkdGguaXNBdXRvKCkg
PyBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCkgOiBMYXlvdXRVbml0
KHdpZHRoLnZhbHVlKCkpOworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExh
eW91dCwgc3RyZWFtIDw8ICJbV2lkdGhdW01hcmdpbl0gLT4gZmxvYXRpbmcgbm9uLXJlcGxhY2Vk
IC0+IHdpZHRoKCIgPDwgY29tcHV0ZWRXaWR0aFZhbHVlIDw8ICJweCkgbWFyZ2luKCIgPDwgY29t
cHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWVzLmxlZnQgPDwgInB4LCAiIDw8
IGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlcy5yaWdodCA8PCAicHgp
IC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4gRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiB7IGNvbXB1dGVkV2lkdGhWYWx1
ZSwgY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWVzIH07CiB9CiAKQEAg
LTU0MCw2ICs1NTAsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OkhlaWdodEFuZE1h
cmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aQogICAgIEFTU0VSVChsYXlv
dXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAg
ICAgLy8gMTAuNi4yIElubGluZSByZXBsYWNlZCBlbGVtZW50cywgYmxvY2stbGV2ZWwgcmVwbGFj
ZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3csICdpbmxpbmUtYmxvY2snCiAgICAgLy8gcmVwbGFj
ZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cgYW5kIGZsb2F0aW5nIHJlcGxhY2VkIGVsZW1lbnRz
CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwg
IltIZWlnaHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgcmVwbGFjZWQgLT4gcmVkaXJlY3RlZCB0byBp
bmxpbmUgcmVwbGFjZWQiKTsKICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJn
aW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIApAQCAtNTUxLDYgKzU2Miw3IEBAIEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpmbG9hdGluCiAgICAgLy8gMS4gSWYgJ21hcmdpbi1sZWZ0JyBvciAnbWFy
Z2luLXJpZ2h0JyBhcmUgY29tcHV0ZWQgYXMgJ2F1dG8nLCB0aGVpciB1c2VkIHZhbHVlIGlzICcw
Jy4KICAgICAvLyAyLiBUaGUgdXNlZCB2YWx1ZSBvZiAnd2lkdGgnIGlzIGRldGVybWluZWQgYXMg
Zm9yIGlubGluZSByZXBsYWNlZCBlbGVtZW50cy4KICAgICBhdXRvIGNvbXB1dGVkTm9uQ29sbGFw
c2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlcyA9IGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRh
bE1hcmdpblZhbHVlKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0g
LT4gZmxvYXRpbmcgcmVwbGFjZWQgLT4gcmVkaXJlY3RlZCB0byBpbmxpbmUgcmVwbGFjZWQiKTsK
ICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBs
YXlvdXRCb3gsIGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlcy5sZWZ0
LCBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZXMucmlnaHQpOwogfQog
CkBAIC02MjksNiArNjQxLDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRB
bmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmUKICAgICB9IGVsc2UK
ICAgICAgICAgY29tcHV0ZWRIZWlnaHRWYWx1ZSA9IGhlaWdodC52YWx1ZSgpOwogCisgICAgTE9H
X1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRd
W01hcmdpbl0gLT4gaW5mbG93IHJlcGxhY2VkIC0+IGhlaWdodCgiIDw8IGNvbXB1dGVkSGVpZ2h0
VmFsdWUgPDwgInB4KSBtYXJnaW4oIiA8PCBjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFy
Z2luVmFsdWVzLnRvcCA8PCAicHgsICIgPDwgY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1h
cmdpblZhbHVlcy5ib3R0b20gPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8
ICIpIik7CiAgICAgcmV0dXJuIHsgY29tcHV0ZWRIZWlnaHRWYWx1ZSwgY29tcHV0ZWROb25Db2xs
YXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlcyB9OwogfQogCkBAIC02OTksMTIgKzcxMiwxNCBAQCBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5saW5lUgogICAgICAgICBjb21wdXRlZFdpZHRoVmFsdWUgPSAzMDA7
CiAgICAgfQogCisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBz
dHJlYW0gPDwgIltXaWR0aF1bTWFyZ2luXSAtPiBpbmZsb3cgcmVwbGFjZWQgLT4gd2lkdGgoIiA8
PCBjb21wdXRlZFdpZHRoVmFsdWUgPDwgInB4KSBtYXJnaW4oIiA8PCBjb21wdXRlZE1hcmdpbkxl
ZnRWYWx1ZSA8PCAicHgsICIgPDwgY29tcHV0ZWRNYXJnaW5SaWdodFZhbHVlIDw8ICJweCkgLT4g
bGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiB7IGNvbXB1dGVk
V2lkdGhWYWx1ZSwgeyBjb21wdXRlZE1hcmdpbkxlZnRWYWx1ZSwgY29tcHV0ZWRNYXJnaW5SaWdo
dFZhbHVlIH0gfTsKIH0KIAogRGlzcGxheTo6Qm94OjpFZGdlcyBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmNvbXB1dGVkQm9yZGVyKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmIGxheW91
dEJveCkKIHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOworICAgIExPR19X
SVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbQm9yZGVyXSAt
PiBsYXlvdXRCb3g6ICIgPDwgJmxheW91dEJveCk7CiAgICAgcmV0dXJuIHsKICAgICAgICAgeyBz
dHlsZS5ib3JkZXJMZWZ0KCkuYm94TW9kZWxXaWR0aCgpLCBzdHlsZS5ib3JkZXJSaWdodCgpLmJv
eE1vZGVsV2lkdGgoKSB9LAogICAgICAgICB7IHN0eWxlLmJvcmRlclRvcCgpLmJveE1vZGVsV2lk
dGgoKSwgc3R5bGUuYm9yZGVyQm90dG9tKCkuYm94TW9kZWxXaWR0aCgpIH0KQEAgLTcxOCw2ICs3
MzMsNyBAQCBzdGQ6Om9wdGlvbmFsPERpc3BsYXk6OkJveDo6RWRnZXM+IEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKAogCiAgICAgYXV0byYgc3R5bGUgPSBsYXlv
dXRCb3guc3R5bGUoKTsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29u
dGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkp
LT53aWR0aCgpOworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwg
c3RyZWFtIDw8ICJbUGFkZGluZ10gLT4gbGF5b3V0Qm94OiAiIDw8ICZsYXlvdXRCb3gpOwogICAg
IHJldHVybiBEaXNwbGF5OjpCb3g6OkVkZ2VzIHsKICAgICAgICAgeyB2YWx1ZUZvckxlbmd0aChz
dHlsZS5wYWRkaW5nTGVmdCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCksIHZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLnBhZGRpbmdSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkgfSwKICAgICAgICAg
eyB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ0JvdHRvbSgpLCBjb250YWluaW5nQmxvY2tX
aWR0aCkgfQpAQCAtNzMxLDYgKzc0Nyw3IEBAIERpc3BsYXk6OkJveDo6SG9yaXpvbnRhbEVkZ2Vz
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRICiAgICAg
YXV0byBtYXJnaW5SaWdodCA9IHN0eWxlLm1hcmdpblJpZ2h0KCk7CiAKICAgICBhdXRvIGNvbnRh
aW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCps
YXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLT53aWR0aCgpOworICAgIExPR19XSVRIX1NUUkVB
TShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbTWFyZ2luXSAtPiBub24gY29s
bGFwc2VkIGhvcml6b250YWwgLT4gbGF5b3V0Qm94OiAiIDw8ICZsYXlvdXRCb3gpOwogICAgIHJl
dHVybiB7CiAgICAgICAgIG1hcmdpbkxlZnQuaXNBdXRvKCkgPyBMYXlvdXRVbml0IHsgMCB9IDog
dmFsdWVGb3JMZW5ndGgobWFyZ2luTGVmdCwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLAogICAgICAg
ICBtYXJnaW5SaWdodC5pc0F1dG8oKSA/IExheW91dFVuaXQgeyAwIH0gOiB2YWx1ZUZvckxlbmd0
aChtYXJnaW5SaWdodCwgY29udGFpbmluZ0Jsb2NrV2lkdGgpCkBAIC03NDQsNiArNzYxLDcgQEAg
RGlzcGxheTo6Qm94OjpWZXJ0aWNhbEVkZ2VzIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
Y29tcHV0ZWROb25Db2xsYXBzZWRWZXIKICAgICBhdXRvIG1hcmdpbkJvdHRvbSA9IHN0eWxlLm1h
cmdpbkJvdHRvbSgpOwogCiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENv
bnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygp
KS0+d2lkdGgoKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQs
IHN0cmVhbSA8PCAiW01hcmdpbl0gLT4gbm9uIGNvbGxhcHNlZCB2ZXJ0aWNhbCAtPiBsYXlvdXRC
b3g6ICIgPDwgJmxheW91dEJveCk7CiAgICAgcmV0dXJuIHsKICAgICAgICAgbWFyZ2luVG9wLmlz
QXV0bygpID8gTGF5b3V0VW5pdCB7IDAgfSA6IHZhbHVlRm9yTGVuZ3RoKG1hcmdpblRvcCwgY29u
dGFpbmluZ0Jsb2NrV2lkdGgpLAogICAgICAgICBtYXJnaW5Cb3R0b20uaXNBdXRvKCkgPyBMYXlv
dXRVbml0IHsgMCB9IDogdmFsdWVGb3JMZW5ndGgobWFyZ2luQm90dG9tLCBjb250YWluaW5nQmxv
Y2tXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggOWFiODA4
ZjFiOGRlNTU2YTBmY2UwZmZmNTVmZTE2NDkzYWIyZWUwYi4uMzU3ZDQxYmI5MTg3MTM3NDliOWY1
MzRjYWU3NzU5YTdjYjUyYzRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1Zl
cmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5j
cHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAi
TGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5
b3V0VHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtMzgsNyArMzks
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLXN0YXRpYyB2
b2lkIG91dHB1dE1pc21hdGNoaW5nQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBz
dHJlYW0sIGNvbnN0IExheW91dENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRlckJveCYgcmVu
ZGVyZXIsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hp
bmdCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0
Q29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgQm94JiBs
YXlvdXRCb3gpCiB7CiAgICAgYm9vbCBmaXJzdE1pc21hdGNoaW5nUmVjdCA9IHRydWU7CiAgICAg
YXV0byBvdXRwdXRSZWN0ID0gWyZdIChjb25zdCBTdHJpbmcmIHByZWZpeCwgY29uc3QgTGF5b3V0
UmVjdCYgcmVuZGVyZXJSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXlvdXRSZWN0KSB7CkBAIC01
NiwzMCArNTcsNDAgQEAgc3RhdGljIHZvaWQgb3V0cHV0TWlzbWF0Y2hpbmdCb3hJbmZvcm1hdGlv
bklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGEKICAgICBhdXRvKiBkaXNwbGF5
Qm94ID0gY29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgQVNT
RVJUKGRpc3BsYXlCb3gpOwogCi0gICAgaWYgKHJlbmRlcmVyLmZyYW1lUmVjdCgpICE9IGRpc3Bs
YXlCb3gtPnJlY3QoKSkKKyAgICBpZiAocmVuZGVyZXIuZnJhbWVSZWN0KCkgIT0gZGlzcGxheUJv
eC0+cmVjdCgpKSAgewogICAgICAgICBvdXRwdXRSZWN0KCJmcmFtZUJveCIsIHJlbmRlcmVyLmZy
YW1lUmVjdCgpLCBkaXNwbGF5Qm94LT5yZWN0KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CiAKLSAgICBpZiAocmVuZGVyZXIubWFyZ2luQm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPm1h
cmdpbkJveCgpKQorICAgIGlmIChyZW5kZXJlci5tYXJnaW5Cb3hSZWN0KCkgIT0gZGlzcGxheUJv
eC0+bWFyZ2luQm94KCkpIHsKICAgICAgICAgb3V0cHV0UmVjdCgibWFyZ2luQm94IiwgcmVuZGVy
ZXIubWFyZ2luQm94UmVjdCgpLCBkaXNwbGF5Qm94LT5tYXJnaW5Cb3goKSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KIAotICAgIGlmIChyZW5kZXJlci5ib3JkZXJCb3hSZWN0KCkgIT0g
ZGlzcGxheUJveC0+Ym9yZGVyQm94KCkpCisgICAgaWYgKHJlbmRlcmVyLmJvcmRlckJveFJlY3Qo
KSAhPSBkaXNwbGF5Qm94LT5ib3JkZXJCb3goKSkgewogICAgICAgICBvdXRwdXRSZWN0KCJib3Jk
ZXJCb3giLCByZW5kZXJlci5ib3JkZXJCb3hSZWN0KCksIGRpc3BsYXlCb3gtPmJvcmRlckJveCgp
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0gICAgaWYgKHJlbmRlcmVyLnBhZGRp
bmdCb3hSZWN0KCkgIT0gZGlzcGxheUJveC0+cGFkZGluZ0JveCgpKQorICAgIGlmIChyZW5kZXJl
ci5wYWRkaW5nQm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPnBhZGRpbmdCb3goKSkgewogICAgICAg
ICBvdXRwdXRSZWN0KCJwYWRkaW5nQm94IiwgcmVuZGVyZXIucGFkZGluZ0JveFJlY3QoKSwgZGlz
cGxheUJveC0+cGFkZGluZ0JveCgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0g
ICAgaWYgKHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCkgIT0gZGlzcGxheUJveC0+Y29udGVudEJv
eCgpKQorICAgIGlmIChyZW5kZXJlci5jb250ZW50Qm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPmNv
bnRlbnRCb3goKSkgewogICAgICAgICBvdXRwdXRSZWN0KCJjb250ZW50Qm94IiwgcmVuZGVyZXIu
Y29udGVudEJveFJlY3QoKSwgZGlzcGxheUJveC0+Y29udGVudEJveCgpKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQogCi0gICAgc3RyZWFtLm5leHRMaW5lKCk7CisgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1zdGF0aWMgdm9pZCB2ZXJpZnlBbmRPdXRwdXRTdWJ0cmVlKFRleHRTdHJlYW0m
IHN0cmVhbSwgY29uc3QgTGF5b3V0Q29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVyQm94JiBy
ZW5kZXJlciwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitzdGF0aWMgYm9vbCB2ZXJpZnlBbmRPdXRw
dXRTdWJ0cmVlKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0Q29udGV4dCYgY29udGV4
dCwgY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7Ci0g
ICAgb3V0cHV0TWlzbWF0Y2hpbmdCb3hJbmZvcm1hdGlvbklmTmVlZGVkKHN0cmVhbSwgY29udGV4
dCwgcmVuZGVyZXIsIGxheW91dEJveCk7CisgICAgYXV0byBtaXNtdGFjaGluZ0dlb21ldHJ5ID0g
b3V0cHV0TWlzbWF0Y2hpbmdCb3hJbmZvcm1hdGlvbklmTmVlZGVkKHN0cmVhbSwgY29udGV4dCwg
cmVuZGVyZXIsIGxheW91dEJveCk7CiAKICAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbWlzbXRhY2hpbmdHZW9tZXRyeTsK
IAogICAgIGF1dG8mIGNvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KTsK
ICAgICBhdXRvKiBjaGlsZEJveCA9IGNvbnRhaW5lci5maXJzdENoaWxkKCk7CkBAIC05MSwxOSAr
MTAyLDI1IEBAIHN0YXRpYyB2b2lkIHZlcmlmeUFuZE91dHB1dFN1YnRyZWUoVGV4dFN0cmVhbSYg
c3RyZWFtLCBjb25zdCBMYXlvdXRDb250ZXh0JiBjb250CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZlcmlmeUFuZE91dHB1dFN1YnRyZWUoc3RyZWFtLCBjb250
ZXh0LCBkb3duY2FzdDxSZW5kZXJCb3g+KCpjaGlsZFJlbmRlcmVyKSwgKmNoaWxkQm94KTsKKyAg
ICAgICAgYXV0byBtaXNtYXRjaGluZ1N1YnRyZWVHZW9tZXRyeSA9IHZlcmlmeUFuZE91dHB1dFN1
YnRyZWUoc3RyZWFtLCBjb250ZXh0LCBkb3duY2FzdDxSZW5kZXJCb3g+KCpjaGlsZFJlbmRlcmVy
KSwgKmNoaWxkQm94KTsKKyAgICAgICAgbWlzbXRhY2hpbmdHZW9tZXRyeSB8PSBtaXNtYXRjaGlu
Z1N1YnRyZWVHZW9tZXRyeTsKKwogICAgICAgICBjaGlsZEJveCA9IGNoaWxkQm94LT5uZXh0U2li
bGluZygpOwogICAgICAgICBjaGlsZFJlbmRlcmVyID0gY2hpbGRSZW5kZXJlci0+bmV4dFNpYmxp
bmcoKTsKICAgICB9CisgICAgcmV0dXJuIG1pc210YWNoaW5nR2VvbWV0cnk7CiB9CiAKIHZvaWQg
TGF5b3V0Q29udGV4dDo6dmVyaWZ5QW5kT3V0cHV0TWlzbWF0Y2hpbmdMYXlvdXRUcmVlKGNvbnN0
IFJlbmRlclZpZXcmIHJlbmRlclZpZXcpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSBzdHJlYW07
CisgICAgYXV0byBtaXNtYXRjaGluZ0dlb21ldHJ5ID0gdmVyaWZ5QW5kT3V0cHV0U3VidHJlZShz
dHJlYW0sICp0aGlzLCByZW5kZXJWaWV3LCAqbV9yb290LmdldCgpKTsKICNpZiBFTkFCTEUoVFJF
RV9ERUJVR0dJTkcpCi0gICAgc2hvd1JlbmRlclRyZWUoJnJlbmRlclZpZXcpOworICAgIGlmICht
aXNtYXRjaGluZ0dlb21ldHJ5KSB7CisgICAgICAgIHNob3dSZW5kZXJUcmVlKCZyZW5kZXJWaWV3
KTsKKyAgICAgICAgVHJlZUJ1aWxkZXI6OnNob3dMYXlvdXRUcmVlKCp0aGlzLCAqbV9yb290Lmdl
dCgpKTsKKyAgICB9CiAjZW5kaWYKLSAgICB2ZXJpZnlBbmRPdXRwdXRTdWJ0cmVlKHN0cmVhbSwg
KnRoaXMsIHJlbmRlclZpZXcsICptX3Jvb3QuZ2V0KCkpOwogICAgIFdURkxvZ0Fsd2F5cygiJXMi
LCBzdHJlYW0ucmVsZWFzZSgpLnV0ZjgoKS5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAppbmRleCA3ZTAzY2Q2NzJhYmQxMGU0ZWQ1MmZiNzQ0YjA1OTczNTM2Y2I4
MTJkLi5hMGNiYTUwMWI5MjY1ZjlkOWRhZmYxY2ZmMGUzOGY5OWNjODIyMDQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTM1LDcgKzM1LDkgQEAKICNpbmNsdWRlICJMYXlv
dXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKICNpbmNsdWRlICJMYXlvdXRD
b250ZXh0LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKQEAgLTU1LDYgKzU3LDkgQEAgdm9pZCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwg
Rm9ybWF0dGluZ1N0YXQKICAgICAvLyBWZXJ0aWNhbCBtYXJnaW5zIGJldHdlZW4gYWRqYWNlbnQg
YmxvY2stbGV2ZWwgYm94ZXMgaW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgY29sbGFwc2Uu
CiAgICAgaWYgKCFpczxDb250YWluZXI+KHJvb3QoKSkpCiAgICAgICAgIHJldHVybjsKKworICAg
IExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbU3Rh
cnRdIC0+IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCAtPiBsYXlvdXQgY29udGV4dCgiIDw8ICZs
YXlvdXRDb250ZXh0IDw8ICIpIGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZyb290KCkgPDwgIikiKTsK
KwogICAgIGF1dG8mIGZvcm1hdHRpbmdSb290ID0gZG93bmNhc3Q8Q29udGFpbmVyPihyb290KCkp
OwogICAgIExheW91dFF1ZXVlIGxheW91dFF1ZXVlOwogICAgIEZsb2F0aW5nQ29udGV4dCBmbG9h
dGluZ0NvbnRleHQoZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKSk7CkBAIC03Myw2ICs3
OCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQsIEZvcm1hdHRpbmdTdGF0CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRC
b3ggPSBsYXlvdXRQYWlyLmxheW91dEJveDsKICAgICAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3gg
PSBsYXlvdXRQYWlyLmRpc3BsYXlCb3g7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIExPR19X
SVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbQ29tcHV0ZV0g
LT4gW1Bvc2l0aW9uXVtCb3JkZXJdW1BhZGRpbmddW1dpZHRoXVtNYXJnaW5dIC0+IGZvciBsYXlv
dXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgICAgICAgICBjb21wdXRlU3RhdGlj
UG9zaXRpb24obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKICAgICAgICAg
ICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlz
cGxheUJveCk7CiAgICAgICAgICAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4
dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKQEAgLTkzLDYgKzk5LDcgQEAgdm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgRm9y
bWF0dGluZ1N0YXQKICAgICAgICAgICAgIGF1dG8gbGF5b3V0UGFpciA9IGxheW91dFF1ZXVlLnRh
a2VMYXN0KCk7CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBsYXlvdXRQYWlyLT5sYXlv
dXRCb3g7CiAgICAgICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0UGFpci0+ZGlzcGxh
eUJveDsKKyAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91
dCwgc3RyZWFtIDw8ICJbQ29tcHV0ZV0gLT4gW0hlaWdodF1bTWFyZ2luXSAtPiBmb3IgbGF5b3V0
Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogCiAgICAgICAgICAgICBjb21wdXRlSGVpZ2h0
QW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlzcGxheUJveCk7CiAgICAgICAg
ICAgICAvLyBBZGp1c3QgcG9zaXRpb24gbm93IHRoYXQgd2UgaGF2ZSBhbGwgdGhlIHByZXZpb3Vz
IGZsb2F0cyBwbGFjZWQgaW4gdGhpcyBjb250ZXh0IC1pZiBuZWVkZWQuCkBAIC0xMTUsNiArMTIy
LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0Q29udGV4dCYg
bGF5b3V0Q29udGV4dCwgRm9ybWF0dGluZ1N0YXQKICNpZm5kZWYgTkRFQlVHCiAgICAgdmFsaWRh
dGVHZW9tZXRyeUNvbnN0cmFpbnRzQWZ0ZXJMYXlvdXQobGF5b3V0Q29udGV4dCk7CiAjZW5kaWYK
KyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAi
W0VuZF0gLT4gYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IC0+IGxheW91dCBjb250ZXh0KCIgPDwg
JmxheW91dENvbnRleHQgPDwgIikgZm9ybWF0dGluZyByb290KCIgPDwgJnJvb3QoKSA8PCAiKSIp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ1N0YXRlPiBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nU3RhdGUoUmVmPEZsb2F0aW5nU3RhdGU+JiYgZmxvYXRp
bmdTdGF0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcAppbmRleCAzODQ0NWVhYzM1NTQ4MmI1YjhlYWVjMjA0ZmYyOTQ4MzdhNTdmYjhkLi44ZWZh
MzMzZGVjYTFlZmE1NjBlYjZkNDEwZWM1MTk4ZmE4MTYxNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9t
ZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJGb3JtYXR0aW5nQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3Ry
ZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewpAQCAtMTEy
LDE0ICsxMTQsMTcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJn
aW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmkKICAgICBhdXRvIG1hcmdpblRv
cCA9IE1hcmdpbkNvbGxhcHNlOjptYXJnaW5Ub3AobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsK
ICAgICBhdXRvIG1hcmdpbkJvdHRvbSA9ICBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQm90dG9tKGxh
eW91dENvbnRleHQsIGxheW91dEJveCk7CiAKLSAgICBpZiAoIWlzU3RyZXRjaGVkVG9WaWV3cG9y
dChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpKQorICAgIGlmICghaXNTdHJldGNoZWRUb1ZpZXdw
b3J0KGxheW91dENvbnRleHQsIGxheW91dEJveCkpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFN
KEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4g
aW5mbG93IG5vbi1yZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCBoZWlnaHQgPDwgInB4KSBtYXJnaW4o
IiA8PCBtYXJnaW5Ub3AgPDwgInB4LCAiIDw8IG1hcmdpbkJvdHRvbSA8PCAicHgpIC0+IGxheW91
dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICAgICAgcmV0dXJuIHsgaGVpZ2h0LCB7
IG1hcmdpblRvcCwgbWFyZ2luQm90dG9tIH0gfTsKKyAgICB9CiAKICAgICBhdXRvIGluaXRpYWxD
b250YWluaW5nQmxvY2tIZWlnaHQgPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goaW5pdGlhbENvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpKS0+Y29udGVudEJveCgpLmhlaWdo
dCgpOwogICAgIC8vIFN0cmV0Y2ggYnV0IG5ldmVyIG92ZXJzdHJldGNoIHdpdGggdGhlIG1hcmdp
bnMuCiAgICAgaWYgKGhlaWdodCArIG1hcmdpblRvcCArIG1hcmdpbkJvdHRvbSA8IGluaXRpYWxD
b250YWluaW5nQmxvY2tIZWlnaHQpCiAgICAgICAgIGhlaWdodCA9IGluaXRpYWxDb250YWluaW5n
QmxvY2tIZWlnaHQgLSBtYXJnaW5Ub3AgLSBtYXJnaW5Cb3R0b207CiAKKyAgICBMT0dfV0lUSF9T
VFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2lu
XSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IHN0cmVjaGVkIHRvIHZpZXdwb3J0IC0+IGhlaWdo
dCgiIDw8IGhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IG1hcmdpblRvcCA8PCAicHgsICIgPDwg
bWFyZ2luQm90dG9tIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIp
OwogICAgIHJldHVybiB7IGhlaWdodCwgeyBtYXJnaW5Ub3AsIG1hcmdpbkJvdHRvbSB9IH07CiB9
CiAKQEAgLTIyMyw4ICsyMjgsMTAgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0
aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW4KICAgICB9Owog
CiAgICAgYXV0byBjb21wdXRlZFdpZHRoQW5kTWFyZ2luVmFsdWUgPSBjb21wdXRlKCk7Ci0gICAg
aWYgKCFpc1N0cmV0Y2hlZFRvVmlld3BvcnQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSkKKyAg
ICBpZiAoIWlzU3RyZXRjaGVkVG9WaWV3cG9ydChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpKSB7
CisgICAgICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFt
IDw8ICJbV2lkdGhdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiB3aWR0aCgiIDw8
IGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS53aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8IGNv
bXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS5tYXJnaW4ubGVmdCA8PCAicHgsICIgPDwgY29tcHV0
ZWRXaWR0aEFuZE1hcmdpblZhbHVlLm1hcmdpbi5yaWdodCA8PCAicHgpIC0+IGxheW91dEJveCgi
IDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICAgICAgcmV0dXJuIGNvbXB1dGVkV2lkdGhBbmRN
YXJnaW5WYWx1ZTsKKyAgICB9CiAKICAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxvY2tXaWR0
aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChpbml0aWFsQ29udGFpbmlu
Z0Jsb2NrKGxheW91dEJveCkpLT5jb250ZW50Qm94KCkud2lkdGgoKTsKICAgICBhdXRvIGhvcml6
b250YWxNYXJnaW5zID0gY29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLm1hcmdpbi5sZWZ0ICsg
Y29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLm1hcmdpbi5yaWdodDsKQEAgLTIzMiw2ICsyMzks
NyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbgogICAgIGlmIChjb21wdXRlZFdpZHRoQW5kTWFy
Z2luVmFsdWUud2lkdGggKyBob3Jpem9udGFsTWFyZ2lucyA8IGluaXRpYWxDb250YWluaW5nQmxv
Y2tXaWR0aCkKICAgICAgICAgY29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLndpZHRoID0gaW5p
dGlhbENvbnRhaW5pbmdCbG9ja1dpZHRoIC0gaG9yaXpvbnRhbE1hcmdpbnM7CiAKKyAgICBMT0df
V0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRoXVtN
YXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gc3RyZWNoZWQgdG8gdmlld3BvcnQtPiB3
aWR0aCgiIDw8IGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS53aWR0aCA8PCAicHgpIG1hcmdp
bigiIDw8IGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS5tYXJnaW4ubGVmdCA8PCAicHgsICIg
PDwgY29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLm1hcmdpbi5yaWdodCA8PCAicHgpIC0+IGxh
eW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4geyBjb21wdXRlZFdp
ZHRoQW5kTWFyZ2luVmFsdWUud2lkdGgsIGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS5tYXJn
aW4gfTsKIH0KIApAQCAtMjQ5LDYgKzI1Nyw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluCiAg
ICAgLy8gIzIKICAgICBhdXRvIGlubGluZVJlcGxhY2VkV2lkdGhBbmRCbG9ja05vblJlcGxhY2Vk
TWFyZ2luID0gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBs
YXlvdXRCb3gsIGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4ud2lkdGgpOwogICAgIEFTU0VS
VChpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luLndpZHRoID09IGlubGluZVJlcGxhY2VkV2lk
dGhBbmRCbG9ja05vblJlcGxhY2VkTWFyZ2luLndpZHRoKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0o
Rm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGlu
ZmxvdyByZXBsYWNlZCAtPiB3aWR0aCgiIDw8IGlubGluZVJlcGxhY2VkV2lkdGhBbmRCbG9ja05v
blJlcGxhY2VkTWFyZ2luLndpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgaW5saW5lUmVwbGFjZWRX
aWR0aEFuZEJsb2NrTm9uUmVwbGFjZWRNYXJnaW4ubWFyZ2luLmxlZnQgPDwgInB4LCAiIDw8IGlu
bGluZVJlcGxhY2VkV2lkdGhBbmRCbG9ja05vblJlcGxhY2VkTWFyZ2luLm1hcmdpbi5sZWZ0IDw8
ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBp
bmxpbmVSZXBsYWNlZFdpZHRoQW5kQmxvY2tOb25SZXBsYWNlZE1hcmdpbjsKIH0KIApAQCAtMjY3
LDYgKzI3Niw3IEBAIExheW91dFBvaW50IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpzdGF0aWNQb3NpdGlvbihMYXlvdXRDb250ZXh0JiBsYXlvCiAgICAgICAgIGF1dG8mIHByZXZp
b3VzSW5GbG93RGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goKnByZXZpb3VzSW5GbG93U2libGluZyk7CiAgICAgICAgIHRvcCA9IHByZXZpb3VzSW5GbG93
RGlzcGxheUJveC5ib3R0b20oKSArIHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJnaW5Cb3R0
b20oKTsKICAgICB9CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LCBzdHJlYW0gPDwgIltQb3NpdGlvbl0gLT4gc3RhdGljIC0+IHRvcCgiIDw8IHRvcCA8PCAicHgp
IGxlZnQoIiA8PCBsZWZ0IDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIp
OwogICAgIHJldHVybiB7IHRvcCwgbGVmdCB9OwogfQogCkBAIC0zMjksNyArMzM5LDEwIEBAIExh
eW91dFBvaW50IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dQb3NpdGlv
bmVkUG9zaXRpb24oTGF5b3V0Q29uCiAgICAgICAgIGxlZnREZWx0YSA9IGxlZnQudmFsdWUoKTsK
ICAgICB9CiAKLSAgICByZXR1cm4geyBkaXNwbGF5Qm94LmxlZnQoKSArIGxlZnREZWx0YSwgZGlz
cGxheUJveC50b3AoKSArIHRvcERlbHRhIH07CisgICAgYXV0byBjb21wdXRlZExlZnQgPSBkaXNw
bGF5Qm94LmxlZnQoKSArIGxlZnREZWx0YTsKKyAgICBhdXRvIGNvbXB1dGVkVG9wID0gZGlzcGxh
eUJveC50b3AoKSArIHRvcERlbHRhOworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29u
dGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dIC0+IHBvc2l0aW9uZWQgaW5mbG93IC0+
IHRvcCgiIDw8IHRvcCA8PCAicHgpIGxlZnQoIiA8PCBsZWZ0IDw8ICJweCkgbGF5b3V0Qm94KCIg
PDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIHJldHVybiB7IGNvbXB1dGVkTGVmdCwgY29tcHV0
ZWRUb3AgfTsKIH0KIAogRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJn
aW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdp
bihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcAppbmRleCBhZTM0YTMwMjE1ZDY3NWE0NTQ3N2I5ZWMyZjU5ZGRmNmY0MDA0ODgxLi5i
ODc0YjU3YTc1MTBhNTVjMjg2NTg2MTUyZTkxNmQ5NjkyMjVkZDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBA
IC0yOCwxMCArMjgsMTIgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQogCisjaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkxheW91dEJsb2NrQ29udGFp
bmVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q2hpbGRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91dENv
bnRleHQuaCIKICNpbmNsdWRlICJMYXlvdXRJbmxpbmVCb3guaCIKICNpbmNsdWRlICJMYXlvdXRJ
bmxpbmVDb250YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgpAQCAtMTA2LDcgKzEw
OCw3IEBAIHZvaWQgVHJlZUJ1aWxkZXI6OmNyZWF0ZVN1YlRyZWUoY29uc3QgUmVuZGVyRWxlbWVu
dCYgcm9vdFJlbmRlcmVyLCBDb250YWluZXImIHJvCiB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJV
R0dJTkcpCi1zdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBj
b25zdCBCb3gmIGxheW91dEJveCwgdW5zaWduZWQgZGVwdGgpCitzdGF0aWMgdm9pZCBvdXRwdXRM
YXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3Qg
RGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94LCB1bnNpZ25lZCBkZXB0aCkKIHsKICAgICB1bnNpZ25l
ZCBwcmludGVkQ2hhcmFjdGVycyA9IDA7CiAgICAgd2hpbGUgKCsrcHJpbnRlZENoYXJhY3RlcnMg
PD0gZGVwdGggKiAyKQpAQCAtMTIyLDI2ICsxMjQsMjYgQEAgc3RhdGljIHZvaWQgb3V0cHV0TGF5
b3V0Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIHVuc2lnbmVk
IGQKICAgICAgICAgc3RyZWFtIDw8ICJibG9jayBjb250YWluZXIiOwogICAgIH0gZWxzZQogICAg
ICAgICBzdHJlYW0gPDwgImJveCI7Ci0gICAgc3RyZWFtIDw8ICIgYXQgWzAgMF0gc2l6ZSBbMCAw
XSI7CisgICAgc3RyZWFtIDw8ICIgYXQgWyIgPDwgZGlzcGxheUJveC5sZWZ0KCkgPDwgIiAiIDw8
IGRpc3BsYXlCb3gudG9wKCkgPDwgIl0gc2l6ZSBbIiA8PCBkaXNwbGF5Qm94LndpZHRoKCkgPDwg
IiAiIDw8IGRpc3BsYXlCb3guaGVpZ2h0KCkgPDwgIl0iOwogICAgIHN0cmVhbSA8PCAiIG9iamVj
dCBbIiA8PCAmbGF5b3V0Qm94IDw8ICJdIjsKIAogICAgIHN0cmVhbS5uZXh0TGluZSgpOwogfQog
Ci1zdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRUcmVlKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3Qg
Q29udGFpbmVyJiByb290Q29udGFpbmVyLCB1bnNpZ25lZCBkZXB0aCkKK3N0YXRpYyB2b2lkIG91
dHB1dExheW91dFRyZWUoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgVGV4dFN0
cmVhbSYgc3RyZWFtLCBjb25zdCBDb250YWluZXImIHJvb3RDb250YWluZXIsIHVuc2lnbmVkIGRl
cHRoKQogewogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxCb3g+KHJvb3RD
b250YWluZXIpKSB7Ci0gICAgICAgIG91dHB1dExheW91dEJveChzdHJlYW0sIGNoaWxkLCBkZXB0
aCk7CisgICAgICAgIG91dHB1dExheW91dEJveChzdHJlYW0sIGNoaWxkLCAqbGF5b3V0Q29udGV4
dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNoaWxkKSwgZGVwdGgpOwogICAgICAgICBpZiAoaXM8
Q29udGFpbmVyPihjaGlsZCkpCi0gICAgICAgICAgICBvdXRwdXRMYXlvdXRUcmVlKHN0cmVhbSwg
ZG93bmNhc3Q8Q29udGFpbmVyPihjaGlsZCksIGRlcHRoICsgMSk7CisgICAgICAgICAgICBvdXRw
dXRMYXlvdXRUcmVlKGxheW91dENvbnRleHQsIHN0cmVhbSwgZG93bmNhc3Q8Q29udGFpbmVyPihj
aGlsZCksIGRlcHRoICsgMSk7CiAgICAgfQogfQogCi12b2lkIFRyZWVCdWlsZGVyOjpzaG93TGF5
b3V0VHJlZShjb25zdCBDb250YWluZXImIGxheW91dEJveCkKK3ZvaWQgVHJlZUJ1aWxkZXI6OnNo
b3dMYXlvdXRUcmVlKGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IENv
bnRhaW5lciYgbGF5b3V0Qm94KQogewogICAgIFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06
OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1hdHRpbmc6OlNWR1N0eWxl
UmVjdCk7Ci0gICAgb3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgbGF5b3V0Qm94LCAwKTsKLSAgICBv
dXRwdXRMYXlvdXRUcmVlKHN0cmVhbSwgbGF5b3V0Qm94LCAxKTsKKyAgICBvdXRwdXRMYXlvdXRC
b3goc3RyZWFtLCBsYXlvdXRCb3gsICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3gobGF5b3V0Qm94KSwgMCk7CisgICAgb3V0cHV0TGF5b3V0VHJlZShsYXlvdXRDb250ZXh0LCBz
dHJlYW0sIGxheW91dEJveCwgMSk7CiAgICAgV1RGTG9nQWx3YXlzKCIlcyIsIHN0cmVhbS5yZWxl
YXNlKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKQEAgLTE1Myw3ICsxNTUsOCBAQCB2b2lkIHByaW50
TGF5b3V0VHJlZUZvckxpdmVEb2N1bWVudHMoKQogICAgICAgICBpZiAoZG9jdW1lbnQtPmZyYW1l
KCkgJiYgZG9jdW1lbnQtPmZyYW1lKCktPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS1tYWluIGZyYW1lLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cbiIpOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBkb2N1
bWVudC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIExheW91dDo6VHJl
ZUJ1aWxkZXI6OnNob3dMYXlvdXRUcmVlKCpUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0VHJlZSgq
ZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkpOworICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBmaW5k
IGEgd2F5IHRvIG91dHB1dCBnZW9tZXRyeSB3aXRob3V0IGxheW91dCBjb250ZXh0LgorICAgICAg
ICAvLyBMYXlvdXQ6OlRyZWVCdWlsZGVyOjpzaG93TGF5b3V0VHJlZSgqVHJlZUJ1aWxkZXI6OmNy
ZWF0ZUxheW91dFRyZWUoKmRvY3VtZW50LT5yZW5kZXJWaWV3KCkpKTsKICAgICB9CiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVl
QnVpbGRlci5oCmluZGV4IGMzYjg3YjliMmM3YmFlMjIzYzI2ZWFkMGM4MjY0Zjg4YWY5YTY0YzYu
LmE4YjFjZmQ0OWEzNDk4ZmM2ZmU3NDE3OGZiYjg2OTllNTY5NDQ5YzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaApAQCAt
MzUsMTEgKzM1LDEyIEBAIGNsYXNzIFJlbmRlclZpZXc7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAog
Y2xhc3MgQ29udGFpbmVyOworY2xhc3MgTGF5b3V0Q29udGV4dDsKIAogY2xhc3MgVHJlZUJ1aWxk
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVyPiBjcmVh
dGVMYXlvdXRUcmVlKGNvbnN0IFJlbmRlclZpZXcmKTsKLSAgICBzdGF0aWMgdm9pZCBzaG93TGF5
b3V0VHJlZShjb25zdCBDb250YWluZXImKTsKKyAgICBzdGF0aWMgdm9pZCBzaG93TGF5b3V0VHJl
ZShjb25zdCBMYXlvdXRDb250ZXh0JiwgY29uc3QgQ29udGFpbmVyJik7CiAKIHByaXZhdGU6CiAg
ICAgc3RhdGljIHZvaWQgY3JlYXRlU3ViVHJlZShjb25zdCBSZW5kZXJFbGVtZW50JiByb290UmVu
ZGVyZXIsIENvbnRhaW5lciYgcm9vdENvbnRhaW5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5n
LmgKaW5kZXggZTBmNDQxZDZlMjg5NDllMzUzYWJjMTc0NjNlNDYxNjcxNGNkMmZlMi4uYjQ3Y2Jm
OTkzOTkxYTJhY2FkOTM1YzM3ZmQyYzU1MzY5ZWQ2NTZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Z2dpbmcuaApAQCAtNjEsNiArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgTShJbmRl
eGVkREJPcGVyYXRpb25zKSBcCiAgICAgTShMYXllcnMpIFwKICAgICBNKExheW91dCkgXAorICAg
IE0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQpIFwKICAgICBNKExvYWRpbmcpIFwKICAgICBNKE1l
ZGlhKSBcCiAgICAgTShNZWRpYUNhcHR1cmVTYW1wbGVzKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342810</attachid>
            <date>2018-06-15 06:56:33 -0700</date>
            <delta_ts>2018-06-15 08:01:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186637-20180615065632.patch</filename>
            <type>text/plain</type>
            <size>32299</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyODY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWEyNjQ0YzA2YzI3NTBh
M2YzZWZhZDYxM2Q4NjhmMzE5OGY1NGU2ZS4uMzI0MTc0MGY1YmZjNjYyZWMzNTQwZjVmY2NhYjUw
NzQ1MmQyNjUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE4LTA2LTE1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQWRkIEZvcm1hdHRp
bmdDb250ZXh0TGF5b3V0IGxvZ2dpbmcgY2hhbm5lbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvbWUgYmFzaWMgbGF5b3V0IGxvZ2dpbmcgKC1X
ZWJDb3JlTG9nZ2luZyAiRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQiKS4KKworICAgICAgICAqIGxh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZs
b3dEZXNjZW5kYW50cyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpjb250ZW50SGVpZ2h0Rm9y
Rm9ybWF0dGluZ0NvbnRleHRSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6c2hyaW5r
VG9GaXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZs
b3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNh
bEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdO
b25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFy
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkV2lk
dGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNl
ZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRl
ZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRW
ZXJ0aWNhbE1hcmdpblZhbHVlKToKKyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdCb3hJbmZvcm1hdGlv
bklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6dmVyaWZ5QW5kT3V0cHV0U3Vi
dHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dENvbnRleHQ6OnZlcmlmeUFu
ZE91dHB1dE1pc21hdGNoaW5nTGF5b3V0VHJlZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0IGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRy
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dO
b25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJn
aW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6c3RhdGljUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKToK
KyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dExheW91dEJveCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6Om91dHB1dExheW91dFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpU
cmVlQnVpbGRlcjo6c2hvd0xheW91dFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpw
cmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoK
KwogMjAxOC0wNi0xNSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtXZWIgQW5pbWF0aW9uc10gQ1NTIEFuaW1hdGlvbnMgc2hvdWxkIHRha2UgcHJlY2VkZW5j
ZSBvdmVyIENTUyBUcmFuc2l0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5jcHAKaW5kZXggMGQ5ZWEzYWY4ODYyMGIwMzk3OWUzY2EwZTNiZjJkYTVjM2ViYjM1
My4uMmY5NWJhYjg1YmIwM2YxNGQ2MDYwMTBiMjljMGNiZGQyYzlkMzcwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zMyw3ICszMyw5IEBACiAj
aW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgog
I2luY2x1ZGUgIkxheW91dERlc2NlbmRhbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7
CkBAIC05NiwxNyArOTgsMjIgQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQ
b3NpdGlvbmVkQ2hpbGRyZW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGUKICAgICBpZiAoY29u
dGFpbmVyLmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSAmJiAmY29udGFpbmVyICE9ICZy
b290KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJTdGFydDogbW92ZSBpbi1mbG93IHBvc2l0aW9uZWQg
Y2hpbGRyZW4gLT4gY29udGV4dDogIiA8PCAmbGF5b3V0Q29udGV4dCA8PCAiIHBhcmVudDogIiA8
PCAmY29udGFpbmVyKTsKICAgICBmb3IgKGF1dG8mIGxheW91dEJveCA6IGNoaWxkcmVuT2ZUeXBl
PEJveD4oY29udGFpbmVyKSkgewogICAgICAgICBpZiAoIWxheW91dEJveC5pc0luRmxvd1Bvc2l0
aW9uZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjb21wdXRlSW5GbG93UG9z
aXRpb25lZFBvc2l0aW9uKGxheW91dENvbnRleHQsIGxheW91dEJveCwgKmxheW91dENvbnRleHQu
ZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpKTsKICAgICB9CisgICAgTE9HX1dJVEhf
U1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIkVuZDogbW92ZSBpbi1m
bG93IHBvc2l0aW9uZWQgY2hpbGRyZW4gLT4gY29udGV4dDogIiA8PCAmbGF5b3V0Q29udGV4dCA8
PCAiIHBhcmVudDogIiA8PCAmY29udGFpbmVyKTsKIH0KIAogdm9pZCBGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4
dCkgY29uc3QKIHsKICAgICBpZiAoIWlzPENvbnRhaW5lcj4obV9yb290LmdldCgpKSkKICAgICAg
ICAgcmV0dXJuOworCisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LCBzdHJlYW0gPDwgIlN0YXJ0OiBsYXlvdXQgb3V0LW9mLWZsb3cgZGVzY2VuZGFudHMgLT4gY29u
dGV4dDogIiA8PCAmbGF5b3V0Q29udGV4dCA8PCAiIHJvb3Q6ICIgPDwgJnJvb3QoKSk7CisKICAg
ICBmb3IgKGF1dG8mIG91dE9mRmxvd0JveCA6IGRvd25jYXN0PENvbnRhaW5lcj4oKm1fcm9vdCku
b3V0T2ZGbG93RGVzY2VuZGFudHMoKSkgewogICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqb3V0
T2ZGbG93Qm94OwogICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0Q29udGV4dC5jcmVh
dGVEaXNwbGF5Qm94KGxheW91dEJveCk7CkBAIC0xMjQsNiArMTMxLDcgQEAgdm9pZCBGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMoTGF5b3V0Q29udGV4dCYgbGF5
b3V0Q29udGV4dCkKIAogICAgICAgICBjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShs
YXlvdXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlCb3gpOwogICAgIH0KKyAgICBMT0dfV0lU
SF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiRW5kOiBsYXlvdXQg
b3V0LW9mLWZsb3cgZGVzY2VuZGFudHMgLT4gY29udGV4dDogIiA8PCAmbGF5b3V0Q29udGV4dCA8
PCAiIHJvb3Q6ICIgPDwgJnJvb3QoKSk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXgg
NTVkNWNlZDc0MjlmZjJkMjRjZDFiNzJkODFhM2MzZTI4MDE0YTBiNy4uZDM0N2Q0MDczOTMzMzUw
MTA5MGUxNTcwMWM5ZWI5YjY3M2Q3MWRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNTYsMTEgKzU2LDE0IEBAIHN0
YXRpYyBMYXlvdXRVbml0IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoTGF5
b3V0Q29udGV4dCYgbGF5b3V0Q29uCiAgICAgYXV0byB0b3AgPSBmaXJzdERpc3BsYXlCb3gtPm1h
cmdpbkJveCgpLnRvcCgpOwogICAgIGF1dG8gYm90dG9tID0gbGFzdERpc3BsYXlCb3gtPm1hcmdp
bkJveCgpLmJvdHRvbSgpOwogICAgIC8vIEZJWE1FOiBhZGQgZmxvYXRpbmcgc3VwcG9ydC4KLSAg
ICByZXR1cm4gYm90dG9tIC0gdG9wOworICAgIGF1dG8gY29tcHV0ZWRIZWlnaHQgPSBib3R0b20g
LSB0b3A7CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJl
YW0gPDwgIltIZWlnaHRdIC0+IGNvbnRlbnQgaGVpZ2h0IGZvciBmb3JtYXR0aW5nIGNvbnRleHQg
cm9vdCAtPiBoZWlnaHQoIiA8PCBjb21wdXRlZEhlaWdodCA8PCAicHgpIGxheW91dEJveCgiPDwg
JmxheW91dEJveCA8PCAiKSIpOworICAgIHJldHVybiBjb21wdXRlZEhlaWdodDsKIH0KIAotc3Rh
dGljIExheW91dFVuaXQgc2hyaW5rVG9GaXRXaWR0aChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94
JikKK3N0YXRpYyBMYXlvdXRVbml0IHNocmlua1RvRml0V2lkdGgoTGF5b3V0Q29udGV4dCYsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogeworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29u
dGV4dExheW91dCwgc3RyZWFtIDw8ICJbV2lkdGhdIC0+IHNocmluayB0byBmaXQgLT4gdW5zdXBw
b3J0ZWQgLT4gd2lkdGgoIiA8PCBMYXlvdXRVbml0IHsgfSA8PCAicHgpIGxheW91dEJveDogIiA8
PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMTgzLDYgKzE4
Niw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6VmVydGljYWxHZW9tZXRyeSBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mCiAgICAgQVNTRVJUKG1hcmdpblRvcCk7CiAg
ICAgQVNTRVJUKG1hcmdpbkJvdHRvbSk7CiAKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGlu
Z0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtIZWlnaHRdW01hcmdpbl0gLT4g
b3V0LW9mLWZsb3cgbm9uLXJlcGxhY2VkIC0+IHRvcCgiIDw8ICp0b3AgPDwgInB4KSBib3R0b20o
IiAgPDwgKmJvdHRvbSA8PCAicHgpIGhlaWdodCgiIDw8ICpoZWlnaHQgPDwgInB4KSBtYXJnaW4o
IiA8PCAqbWFyZ2luVG9wIDw8ICJweCwgIiAgPDwgKm1hcmdpbkJvdHRvbSA8PCAicHgpIGxheW91
dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4geyAqdG9wLCAqYm90dG9t
LCB7ICpoZWlnaHQsIHsgKm1hcmdpblRvcCwgKm1hcmdpbkJvdHRvbX0gfSB9OwogfQogCkBAIC0z
MjQsNiArMzI4LDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIb3Jpem9udGFsR2Vv
bWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXQKICAgICBBU1NFUlQobWFyZ2lu
TGVmdCk7CiAgICAgQVNTRVJUKG1hcmdpblJpZ2h0KTsKIAorICAgIExPR19XSVRIX1NUUkVBTShG
b3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW1dpZHRoXVtNYXJn
aW5dIC0+IG91dC1vZi1mbG93IG5vbi1yZXBsYWNlZCAtPiBsZWZ0KCIgPDwgKmxlZnQgPDwgInB4
KSByaWdodCgiICA8PCAqcmlnaHQgPDwgInB4KSB3aWR0aCgiIDw8ICp3aWR0aCA8PCAicHgpIG1h
cmdpbigiIDw8ICptYXJnaW5MZWZ0IDw8ICJweCwgIiAgPDwgKm1hcmdpblJpZ2h0IDw8ICJweCkg
bGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiB7ICpsZWZ0LCAq
cmlnaHQsIHsgKndpZHRoLCB7ICptYXJnaW5MZWZ0LCAqbWFyZ2luUmlnaHQgfSB9IH07CiB9CiAK
QEAgLTM5MSw2ICszOTYsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OlZlcnRpY2Fs
R2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZgogICAgIGlmIChib3hI
ZWlnaHQgPiBjb250YWluaW5nQmxvY2tIZWlnaHQpCiAgICAgICAgIGJvdHRvbSA9IGNvbnRhaW5p
bmdCbG9ja0hlaWdodCAtICgqdG9wICsgKm1hcmdpblRvcCArIGJvcmRlclRvcCArIHBhZGRpbmdU
b3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkJvdHRv
bSk7IAogCisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJl
YW0gPDwgIltQb3NpdGlvbl1bSGVpZ2h0XVtNYXJnaW5dIC0+IG91dC1vZi1mbG93IHJlcGxhY2Vk
IC0+IHRvcCgiIDw8ICp0b3AgPDwgInB4KSBib3R0b20oIiAgPDwgKmJvdHRvbSA8PCAicHgpIGhl
aWdodCgiIDw8IGhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8ICptYXJnaW5Ub3AgPDwgInB4LCAi
ICA8PCAqbWFyZ2luQm90dG9tIDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAi
KSIpOwogICAgIHJldHVybiB7ICp0b3AsICpib3R0b20sIHsgaGVpZ2h0LCB7ICptYXJnaW5Ub3As
ICptYXJnaW5Cb3R0b20gfSB9IH07CiB9CiAKQEAgLTQ4NCw2ICs0OTAsNyBAQCBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Okhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Om91dAogICAgIEFTU0VSVChtYXJnaW5MZWZ0KTsKICAgICBBU1NFUlQobWFyZ2lu
UmlnaHQpOwogCisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBz
dHJlYW0gPDwgIltQb3NpdGlvbl1bV2lkdGhdW01hcmdpbl0gLT4gb3V0LW9mLWZsb3cgcmVwbGFj
ZWQgLT4gbGVmdCgiIDw8ICpsZWZ0IDw8ICJweCkgcmlnaHQoIiAgPDwgKnJpZ2h0IDw8ICJweCkg
d2lkdGgoIiA8PCB3aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8ICptYXJnaW5MZWZ0IDw8ICJweCwg
IiAgPDwgKm1hcmdpblJpZ2h0IDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAi
KSIpOwogICAgIHJldHVybiB7ICpsZWZ0LCAqcmlnaHQsIHsgd2lkdGgsIHsgKm1hcmdpbkxlZnQs
ICptYXJnaW5SaWdodCB9IH0gfTsKIH0KIApAQCAtNTE0LDYgKzUyMSw4IEBAIEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6ZmxvYXRpCiAgICAgLy8gIzIKICAgICBpZiAoIWhlaWdodCkKICAgICAgICAgaGVpZ2h0
ID0gY29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRDb250ZXh0LCBs
YXlvdXRCb3gpOworCisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgbm9uLXJlcGxhY2VkIC0+
IGhlaWdodCgiIDw8ICpoZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCAqbWFyZ2luVG9wIDw8ICJw
eCwgIiA8PCAqbWFyZ2luQm90dG9tIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJv
eCA8PCAiKSIpOwogICAgIHJldHVybiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OkhlaWdo
dEFuZE1hcmdpbiB7ICpoZWlnaHQsIHsgKm1hcmdpblRvcCwgKm1hcmdpbkJvdHRvbSB9IH07CiB9
CiAKQEAgLTUzMiw2ICs1NDEsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRo
QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbgogICAgIGF1dG8g
Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWVzID0gY29tcHV0ZWROb25D
b2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsK
ICAgICAvLyAjMgogICAgIGF1dG8gY29tcHV0ZWRXaWR0aFZhbHVlID0gd2lkdGguaXNBdXRvKCkg
PyBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCkgOiBMYXlvdXRVbml0
KHdpZHRoLnZhbHVlKCkpOworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExh
eW91dCwgc3RyZWFtIDw8ICJbV2lkdGhdW01hcmdpbl0gLT4gZmxvYXRpbmcgbm9uLXJlcGxhY2Vk
IC0+IHdpZHRoKCIgPDwgY29tcHV0ZWRXaWR0aFZhbHVlIDw8ICJweCkgbWFyZ2luKCIgPDwgY29t
cHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWVzLmxlZnQgPDwgInB4LCAiIDw8
IGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlcy5yaWdodCA8PCAicHgp
IC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4gRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiB7IGNvbXB1dGVkV2lkdGhWYWx1
ZSwgY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWVzIH07CiB9CiAKQEAg
LTU0MCw2ICs1NTAsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OkhlaWdodEFuZE1h
cmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aQogICAgIEFTU0VSVChsYXlv
dXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAg
ICAgLy8gMTAuNi4yIElubGluZSByZXBsYWNlZCBlbGVtZW50cywgYmxvY2stbGV2ZWwgcmVwbGFj
ZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3csICdpbmxpbmUtYmxvY2snCiAgICAgLy8gcmVwbGFj
ZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cgYW5kIGZsb2F0aW5nIHJlcGxhY2VkIGVsZW1lbnRz
CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwg
IltIZWlnaHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgcmVwbGFjZWQgLT4gcmVkaXJlY3RlZCB0byBp
bmxpbmUgcmVwbGFjZWQiKTsKICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJn
aW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIApAQCAtNTUxLDYgKzU2Miw3IEBAIEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpmbG9hdGluCiAgICAgLy8gMS4gSWYgJ21hcmdpbi1sZWZ0JyBvciAnbWFy
Z2luLXJpZ2h0JyBhcmUgY29tcHV0ZWQgYXMgJ2F1dG8nLCB0aGVpciB1c2VkIHZhbHVlIGlzICcw
Jy4KICAgICAvLyAyLiBUaGUgdXNlZCB2YWx1ZSBvZiAnd2lkdGgnIGlzIGRldGVybWluZWQgYXMg
Zm9yIGlubGluZSByZXBsYWNlZCBlbGVtZW50cy4KICAgICBhdXRvIGNvbXB1dGVkTm9uQ29sbGFw
c2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlcyA9IGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRh
bE1hcmdpblZhbHVlKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0g
LT4gZmxvYXRpbmcgcmVwbGFjZWQgLT4gcmVkaXJlY3RlZCB0byBpbmxpbmUgcmVwbGFjZWQiKTsK
ICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBs
YXlvdXRCb3gsIGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlcy5sZWZ0
LCBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZXMucmlnaHQpOwogfQog
CkBAIC02MjksNiArNjQxLDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRB
bmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmUKICAgICB9IGVsc2UK
ICAgICAgICAgY29tcHV0ZWRIZWlnaHRWYWx1ZSA9IGhlaWdodC52YWx1ZSgpOwogCisgICAgTE9H
X1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRd
W01hcmdpbl0gLT4gaW5mbG93IHJlcGxhY2VkIC0+IGhlaWdodCgiIDw8IGNvbXB1dGVkSGVpZ2h0
VmFsdWUgPDwgInB4KSBtYXJnaW4oIiA8PCBjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFy
Z2luVmFsdWVzLnRvcCA8PCAicHgsICIgPDwgY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1h
cmdpblZhbHVlcy5ib3R0b20gPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8
ICIpIik7CiAgICAgcmV0dXJuIHsgY29tcHV0ZWRIZWlnaHRWYWx1ZSwgY29tcHV0ZWROb25Db2xs
YXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlcyB9OwogfQogCkBAIC02OTksMTIgKzcxMiwxNCBAQCBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5saW5lUgogICAgICAgICBjb21wdXRlZFdpZHRoVmFsdWUgPSAzMDA7
CiAgICAgfQogCisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBz
dHJlYW0gPDwgIltXaWR0aF1bTWFyZ2luXSAtPiBpbmZsb3cgcmVwbGFjZWQgLT4gd2lkdGgoIiA8
PCBjb21wdXRlZFdpZHRoVmFsdWUgPDwgInB4KSBtYXJnaW4oIiA8PCBjb21wdXRlZE1hcmdpbkxl
ZnRWYWx1ZSA8PCAicHgsICIgPDwgY29tcHV0ZWRNYXJnaW5SaWdodFZhbHVlIDw8ICJweCkgLT4g
bGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiB7IGNvbXB1dGVk
V2lkdGhWYWx1ZSwgeyBjb21wdXRlZE1hcmdpbkxlZnRWYWx1ZSwgY29tcHV0ZWRNYXJnaW5SaWdo
dFZhbHVlIH0gfTsKIH0KIAogRGlzcGxheTo6Qm94OjpFZGdlcyBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmNvbXB1dGVkQm9yZGVyKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmIGxheW91
dEJveCkKIHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOworICAgIExPR19X
SVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbQm9yZGVyXSAt
PiBsYXlvdXRCb3g6ICIgPDwgJmxheW91dEJveCk7CiAgICAgcmV0dXJuIHsKICAgICAgICAgeyBz
dHlsZS5ib3JkZXJMZWZ0KCkuYm94TW9kZWxXaWR0aCgpLCBzdHlsZS5ib3JkZXJSaWdodCgpLmJv
eE1vZGVsV2lkdGgoKSB9LAogICAgICAgICB7IHN0eWxlLmJvcmRlclRvcCgpLmJveE1vZGVsV2lk
dGgoKSwgc3R5bGUuYm9yZGVyQm90dG9tKCkuYm94TW9kZWxXaWR0aCgpIH0KQEAgLTcxOCw2ICs3
MzMsNyBAQCBzdGQ6Om9wdGlvbmFsPERpc3BsYXk6OkJveDo6RWRnZXM+IEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKAogCiAgICAgYXV0byYgc3R5bGUgPSBsYXlv
dXRCb3guc3R5bGUoKTsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29u
dGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkp
LT53aWR0aCgpOworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwg
c3RyZWFtIDw8ICJbUGFkZGluZ10gLT4gbGF5b3V0Qm94OiAiIDw8ICZsYXlvdXRCb3gpOwogICAg
IHJldHVybiBEaXNwbGF5OjpCb3g6OkVkZ2VzIHsKICAgICAgICAgeyB2YWx1ZUZvckxlbmd0aChz
dHlsZS5wYWRkaW5nTGVmdCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCksIHZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLnBhZGRpbmdSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkgfSwKICAgICAgICAg
eyB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ0JvdHRvbSgpLCBjb250YWluaW5nQmxvY2tX
aWR0aCkgfQpAQCAtNzMxLDYgKzc0Nyw3IEBAIERpc3BsYXk6OkJveDo6SG9yaXpvbnRhbEVkZ2Vz
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRICiAgICAg
YXV0byBtYXJnaW5SaWdodCA9IHN0eWxlLm1hcmdpblJpZ2h0KCk7CiAKICAgICBhdXRvIGNvbnRh
aW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCps
YXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLT53aWR0aCgpOworICAgIExPR19XSVRIX1NUUkVB
TShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbTWFyZ2luXSAtPiBub24gY29s
bGFwc2VkIGhvcml6b250YWwgLT4gbGF5b3V0Qm94OiAiIDw8ICZsYXlvdXRCb3gpOwogICAgIHJl
dHVybiB7CiAgICAgICAgIG1hcmdpbkxlZnQuaXNBdXRvKCkgPyBMYXlvdXRVbml0IHsgMCB9IDog
dmFsdWVGb3JMZW5ndGgobWFyZ2luTGVmdCwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLAogICAgICAg
ICBtYXJnaW5SaWdodC5pc0F1dG8oKSA/IExheW91dFVuaXQgeyAwIH0gOiB2YWx1ZUZvckxlbmd0
aChtYXJnaW5SaWdodCwgY29udGFpbmluZ0Jsb2NrV2lkdGgpCkBAIC03NDQsNiArNzYxLDcgQEAg
RGlzcGxheTo6Qm94OjpWZXJ0aWNhbEVkZ2VzIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
Y29tcHV0ZWROb25Db2xsYXBzZWRWZXIKICAgICBhdXRvIG1hcmdpbkJvdHRvbSA9IHN0eWxlLm1h
cmdpbkJvdHRvbSgpOwogCiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENv
bnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygp
KS0+d2lkdGgoKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQs
IHN0cmVhbSA8PCAiW01hcmdpbl0gLT4gbm9uIGNvbGxhcHNlZCB2ZXJ0aWNhbCAtPiBsYXlvdXRC
b3g6ICIgPDwgJmxheW91dEJveCk7CiAgICAgcmV0dXJuIHsKICAgICAgICAgbWFyZ2luVG9wLmlz
QXV0bygpID8gTGF5b3V0VW5pdCB7IDAgfSA6IHZhbHVlRm9yTGVuZ3RoKG1hcmdpblRvcCwgY29u
dGFpbmluZ0Jsb2NrV2lkdGgpLAogICAgICAgICBtYXJnaW5Cb3R0b20uaXNBdXRvKCkgPyBMYXlv
dXRVbml0IHsgMCB9IDogdmFsdWVGb3JMZW5ndGgobWFyZ2luQm90dG9tLCBjb250YWluaW5nQmxv
Y2tXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggOWFiODA4
ZjFiOGRlNTU2YTBmY2UwZmZmNTVmZTE2NDkzYWIyZWUwYi4uMzU3ZDQxYmI5MTg3MTM3NDliOWY1
MzRjYWU3NzU5YTdjYjUyYzRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1Zl
cmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5j
cHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAi
TGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5
b3V0VHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtMzgsNyArMzks
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLXN0YXRpYyB2
b2lkIG91dHB1dE1pc21hdGNoaW5nQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBz
dHJlYW0sIGNvbnN0IExheW91dENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRlckJveCYgcmVu
ZGVyZXIsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hp
bmdCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0
Q29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgQm94JiBs
YXlvdXRCb3gpCiB7CiAgICAgYm9vbCBmaXJzdE1pc21hdGNoaW5nUmVjdCA9IHRydWU7CiAgICAg
YXV0byBvdXRwdXRSZWN0ID0gWyZdIChjb25zdCBTdHJpbmcmIHByZWZpeCwgY29uc3QgTGF5b3V0
UmVjdCYgcmVuZGVyZXJSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXlvdXRSZWN0KSB7CkBAIC01
NiwzMCArNTcsNDAgQEAgc3RhdGljIHZvaWQgb3V0cHV0TWlzbWF0Y2hpbmdCb3hJbmZvcm1hdGlv
bklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGEKICAgICBhdXRvKiBkaXNwbGF5
Qm94ID0gY29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgQVNT
RVJUKGRpc3BsYXlCb3gpOwogCi0gICAgaWYgKHJlbmRlcmVyLmZyYW1lUmVjdCgpICE9IGRpc3Bs
YXlCb3gtPnJlY3QoKSkKKyAgICBpZiAocmVuZGVyZXIuZnJhbWVSZWN0KCkgIT0gZGlzcGxheUJv
eC0+cmVjdCgpKSAgewogICAgICAgICBvdXRwdXRSZWN0KCJmcmFtZUJveCIsIHJlbmRlcmVyLmZy
YW1lUmVjdCgpLCBkaXNwbGF5Qm94LT5yZWN0KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CiAKLSAgICBpZiAocmVuZGVyZXIubWFyZ2luQm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPm1h
cmdpbkJveCgpKQorICAgIGlmIChyZW5kZXJlci5tYXJnaW5Cb3hSZWN0KCkgIT0gZGlzcGxheUJv
eC0+bWFyZ2luQm94KCkpIHsKICAgICAgICAgb3V0cHV0UmVjdCgibWFyZ2luQm94IiwgcmVuZGVy
ZXIubWFyZ2luQm94UmVjdCgpLCBkaXNwbGF5Qm94LT5tYXJnaW5Cb3goKSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KIAotICAgIGlmIChyZW5kZXJlci5ib3JkZXJCb3hSZWN0KCkgIT0g
ZGlzcGxheUJveC0+Ym9yZGVyQm94KCkpCisgICAgaWYgKHJlbmRlcmVyLmJvcmRlckJveFJlY3Qo
KSAhPSBkaXNwbGF5Qm94LT5ib3JkZXJCb3goKSkgewogICAgICAgICBvdXRwdXRSZWN0KCJib3Jk
ZXJCb3giLCByZW5kZXJlci5ib3JkZXJCb3hSZWN0KCksIGRpc3BsYXlCb3gtPmJvcmRlckJveCgp
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0gICAgaWYgKHJlbmRlcmVyLnBhZGRp
bmdCb3hSZWN0KCkgIT0gZGlzcGxheUJveC0+cGFkZGluZ0JveCgpKQorICAgIGlmIChyZW5kZXJl
ci5wYWRkaW5nQm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPnBhZGRpbmdCb3goKSkgewogICAgICAg
ICBvdXRwdXRSZWN0KCJwYWRkaW5nQm94IiwgcmVuZGVyZXIucGFkZGluZ0JveFJlY3QoKSwgZGlz
cGxheUJveC0+cGFkZGluZ0JveCgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0g
ICAgaWYgKHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCkgIT0gZGlzcGxheUJveC0+Y29udGVudEJv
eCgpKQorICAgIGlmIChyZW5kZXJlci5jb250ZW50Qm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPmNv
bnRlbnRCb3goKSkgewogICAgICAgICBvdXRwdXRSZWN0KCJjb250ZW50Qm94IiwgcmVuZGVyZXIu
Y29udGVudEJveFJlY3QoKSwgZGlzcGxheUJveC0+Y29udGVudEJveCgpKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQogCi0gICAgc3RyZWFtLm5leHRMaW5lKCk7CisgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1zdGF0aWMgdm9pZCB2ZXJpZnlBbmRPdXRwdXRTdWJ0cmVlKFRleHRTdHJlYW0m
IHN0cmVhbSwgY29uc3QgTGF5b3V0Q29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVyQm94JiBy
ZW5kZXJlciwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitzdGF0aWMgYm9vbCB2ZXJpZnlBbmRPdXRw
dXRTdWJ0cmVlKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0Q29udGV4dCYgY29udGV4
dCwgY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7Ci0g
ICAgb3V0cHV0TWlzbWF0Y2hpbmdCb3hJbmZvcm1hdGlvbklmTmVlZGVkKHN0cmVhbSwgY29udGV4
dCwgcmVuZGVyZXIsIGxheW91dEJveCk7CisgICAgYXV0byBtaXNtdGFjaGluZ0dlb21ldHJ5ID0g
b3V0cHV0TWlzbWF0Y2hpbmdCb3hJbmZvcm1hdGlvbklmTmVlZGVkKHN0cmVhbSwgY29udGV4dCwg
cmVuZGVyZXIsIGxheW91dEJveCk7CiAKICAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbWlzbXRhY2hpbmdHZW9tZXRyeTsK
IAogICAgIGF1dG8mIGNvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KTsK
ICAgICBhdXRvKiBjaGlsZEJveCA9IGNvbnRhaW5lci5maXJzdENoaWxkKCk7CkBAIC05MSwxOSAr
MTAyLDI1IEBAIHN0YXRpYyB2b2lkIHZlcmlmeUFuZE91dHB1dFN1YnRyZWUoVGV4dFN0cmVhbSYg
c3RyZWFtLCBjb25zdCBMYXlvdXRDb250ZXh0JiBjb250CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZlcmlmeUFuZE91dHB1dFN1YnRyZWUoc3RyZWFtLCBjb250
ZXh0LCBkb3duY2FzdDxSZW5kZXJCb3g+KCpjaGlsZFJlbmRlcmVyKSwgKmNoaWxkQm94KTsKKyAg
ICAgICAgYXV0byBtaXNtYXRjaGluZ1N1YnRyZWVHZW9tZXRyeSA9IHZlcmlmeUFuZE91dHB1dFN1
YnRyZWUoc3RyZWFtLCBjb250ZXh0LCBkb3duY2FzdDxSZW5kZXJCb3g+KCpjaGlsZFJlbmRlcmVy
KSwgKmNoaWxkQm94KTsKKyAgICAgICAgbWlzbXRhY2hpbmdHZW9tZXRyeSB8PSBtaXNtYXRjaGlu
Z1N1YnRyZWVHZW9tZXRyeTsKKwogICAgICAgICBjaGlsZEJveCA9IGNoaWxkQm94LT5uZXh0U2li
bGluZygpOwogICAgICAgICBjaGlsZFJlbmRlcmVyID0gY2hpbGRSZW5kZXJlci0+bmV4dFNpYmxp
bmcoKTsKICAgICB9CisgICAgcmV0dXJuIG1pc210YWNoaW5nR2VvbWV0cnk7CiB9CiAKIHZvaWQg
TGF5b3V0Q29udGV4dDo6dmVyaWZ5QW5kT3V0cHV0TWlzbWF0Y2hpbmdMYXlvdXRUcmVlKGNvbnN0
IFJlbmRlclZpZXcmIHJlbmRlclZpZXcpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSBzdHJlYW07
CisgICAgYXV0byBtaXNtYXRjaGluZ0dlb21ldHJ5ID0gdmVyaWZ5QW5kT3V0cHV0U3VidHJlZShz
dHJlYW0sICp0aGlzLCByZW5kZXJWaWV3LCAqbV9yb290LmdldCgpKTsKICNpZiBFTkFCTEUoVFJF
RV9ERUJVR0dJTkcpCi0gICAgc2hvd1JlbmRlclRyZWUoJnJlbmRlclZpZXcpOworICAgIGlmICht
aXNtYXRjaGluZ0dlb21ldHJ5KSB7CisgICAgICAgIHNob3dSZW5kZXJUcmVlKCZyZW5kZXJWaWV3
KTsKKyAgICAgICAgVHJlZUJ1aWxkZXI6OnNob3dMYXlvdXRUcmVlKCp0aGlzLCAqbV9yb290Lmdl
dCgpKTsKKyAgICB9CiAjZW5kaWYKLSAgICB2ZXJpZnlBbmRPdXRwdXRTdWJ0cmVlKHN0cmVhbSwg
KnRoaXMsIHJlbmRlclZpZXcsICptX3Jvb3QuZ2V0KCkpOwogICAgIFdURkxvZ0Fsd2F5cygiJXMi
LCBzdHJlYW0ucmVsZWFzZSgpLnV0ZjgoKS5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAppbmRleCA3ZTAzY2Q2NzJhYmQxMGU0ZWQ1MmZiNzQ0YjA1OTczNTM2Y2I4
MTJkLi5hMGNiYTUwMWI5MjY1ZjlkOWRhZmYxY2ZmMGUzOGY5OWNjODIyMDQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTM1LDcgKzM1LDkgQEAKICNpbmNsdWRlICJMYXlv
dXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKICNpbmNsdWRlICJMYXlvdXRD
b250ZXh0LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKQEAgLTU1LDYgKzU3LDkgQEAgdm9pZCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwg
Rm9ybWF0dGluZ1N0YXQKICAgICAvLyBWZXJ0aWNhbCBtYXJnaW5zIGJldHdlZW4gYWRqYWNlbnQg
YmxvY2stbGV2ZWwgYm94ZXMgaW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgY29sbGFwc2Uu
CiAgICAgaWYgKCFpczxDb250YWluZXI+KHJvb3QoKSkpCiAgICAgICAgIHJldHVybjsKKworICAg
IExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbU3Rh
cnRdIC0+IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCAtPiBsYXlvdXQgY29udGV4dCgiIDw8ICZs
YXlvdXRDb250ZXh0IDw8ICIpIGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZyb290KCkgPDwgIikiKTsK
KwogICAgIGF1dG8mIGZvcm1hdHRpbmdSb290ID0gZG93bmNhc3Q8Q29udGFpbmVyPihyb290KCkp
OwogICAgIExheW91dFF1ZXVlIGxheW91dFF1ZXVlOwogICAgIEZsb2F0aW5nQ29udGV4dCBmbG9h
dGluZ0NvbnRleHQoZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKSk7CkBAIC03Myw2ICs3
OCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQsIEZvcm1hdHRpbmdTdGF0CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRC
b3ggPSBsYXlvdXRQYWlyLmxheW91dEJveDsKICAgICAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3gg
PSBsYXlvdXRQYWlyLmRpc3BsYXlCb3g7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIExPR19X
SVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbQ29tcHV0ZV0g
LT4gW1Bvc2l0aW9uXVtCb3JkZXJdW1BhZGRpbmddW1dpZHRoXVtNYXJnaW5dIC0+IGZvciBsYXlv
dXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgICAgICAgICBjb21wdXRlU3RhdGlj
UG9zaXRpb24obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKICAgICAgICAg
ICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlz
cGxheUJveCk7CiAgICAgICAgICAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4
dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKQEAgLTkzLDYgKzk5LDcgQEAgdm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgRm9y
bWF0dGluZ1N0YXQKICAgICAgICAgICAgIGF1dG8gbGF5b3V0UGFpciA9IGxheW91dFF1ZXVlLnRh
a2VMYXN0KCk7CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBsYXlvdXRQYWlyLT5sYXlv
dXRCb3g7CiAgICAgICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0UGFpci0+ZGlzcGxh
eUJveDsKKyAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91
dCwgc3RyZWFtIDw8ICJbQ29tcHV0ZV0gLT4gW0hlaWdodF1bTWFyZ2luXSAtPiBmb3IgbGF5b3V0
Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogCiAgICAgICAgICAgICBjb21wdXRlSGVpZ2h0
QW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlzcGxheUJveCk7CiAgICAgICAg
ICAgICAvLyBBZGp1c3QgcG9zaXRpb24gbm93IHRoYXQgd2UgaGF2ZSBhbGwgdGhlIHByZXZpb3Vz
IGZsb2F0cyBwbGFjZWQgaW4gdGhpcyBjb250ZXh0IC1pZiBuZWVkZWQuCkBAIC0xMTUsNiArMTIy
LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0Q29udGV4dCYg
bGF5b3V0Q29udGV4dCwgRm9ybWF0dGluZ1N0YXQKICNpZm5kZWYgTkRFQlVHCiAgICAgdmFsaWRh
dGVHZW9tZXRyeUNvbnN0cmFpbnRzQWZ0ZXJMYXlvdXQobGF5b3V0Q29udGV4dCk7CiAjZW5kaWYK
KyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAi
W0VuZF0gLT4gYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IC0+IGxheW91dCBjb250ZXh0KCIgPDwg
JmxheW91dENvbnRleHQgPDwgIikgZm9ybWF0dGluZyByb290KCIgPDwgJnJvb3QoKSA8PCAiKSIp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ1N0YXRlPiBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nU3RhdGUoUmVmPEZsb2F0aW5nU3RhdGU+JiYgZmxvYXRp
bmdTdGF0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcAppbmRleCAzODQ0NWVhYzM1NTQ4MmI1YjhlYWVjMjA0ZmYyOTQ4MzdhNTdmYjhkLi44ZWZh
MzMzZGVjYTFlZmE1NjBlYjZkNDEwZWM1MTk4ZmE4MTYxNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9t
ZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJGb3JtYXR0aW5nQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3Ry
ZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewpAQCAtMTEy
LDE0ICsxMTQsMTcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJn
aW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmkKICAgICBhdXRvIG1hcmdpblRv
cCA9IE1hcmdpbkNvbGxhcHNlOjptYXJnaW5Ub3AobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsK
ICAgICBhdXRvIG1hcmdpbkJvdHRvbSA9ICBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQm90dG9tKGxh
eW91dENvbnRleHQsIGxheW91dEJveCk7CiAKLSAgICBpZiAoIWlzU3RyZXRjaGVkVG9WaWV3cG9y
dChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpKQorICAgIGlmICghaXNTdHJldGNoZWRUb1ZpZXdw
b3J0KGxheW91dENvbnRleHQsIGxheW91dEJveCkpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFN
KEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4g
aW5mbG93IG5vbi1yZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCBoZWlnaHQgPDwgInB4KSBtYXJnaW4o
IiA8PCBtYXJnaW5Ub3AgPDwgInB4LCAiIDw8IG1hcmdpbkJvdHRvbSA8PCAicHgpIC0+IGxheW91
dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICAgICAgcmV0dXJuIHsgaGVpZ2h0LCB7
IG1hcmdpblRvcCwgbWFyZ2luQm90dG9tIH0gfTsKKyAgICB9CiAKICAgICBhdXRvIGluaXRpYWxD
b250YWluaW5nQmxvY2tIZWlnaHQgPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goaW5pdGlhbENvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpKS0+Y29udGVudEJveCgpLmhlaWdo
dCgpOwogICAgIC8vIFN0cmV0Y2ggYnV0IG5ldmVyIG92ZXJzdHJldGNoIHdpdGggdGhlIG1hcmdp
bnMuCiAgICAgaWYgKGhlaWdodCArIG1hcmdpblRvcCArIG1hcmdpbkJvdHRvbSA8IGluaXRpYWxD
b250YWluaW5nQmxvY2tIZWlnaHQpCiAgICAgICAgIGhlaWdodCA9IGluaXRpYWxDb250YWluaW5n
QmxvY2tIZWlnaHQgLSBtYXJnaW5Ub3AgLSBtYXJnaW5Cb3R0b207CiAKKyAgICBMT0dfV0lUSF9T
VFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2lu
XSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IHN0cmVjaGVkIHRvIHZpZXdwb3J0IC0+IGhlaWdo
dCgiIDw8IGhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IG1hcmdpblRvcCA8PCAicHgsICIgPDwg
bWFyZ2luQm90dG9tIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIp
OwogICAgIHJldHVybiB7IGhlaWdodCwgeyBtYXJnaW5Ub3AsIG1hcmdpbkJvdHRvbSB9IH07CiB9
CiAKQEAgLTIyMyw4ICsyMjgsMTAgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0
aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW4KICAgICB9Owog
CiAgICAgYXV0byBjb21wdXRlZFdpZHRoQW5kTWFyZ2luVmFsdWUgPSBjb21wdXRlKCk7Ci0gICAg
aWYgKCFpc1N0cmV0Y2hlZFRvVmlld3BvcnQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSkKKyAg
ICBpZiAoIWlzU3RyZXRjaGVkVG9WaWV3cG9ydChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpKSB7
CisgICAgICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFt
IDw8ICJbV2lkdGhdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiB3aWR0aCgiIDw8
IGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS53aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8IGNv
bXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS5tYXJnaW4ubGVmdCA8PCAicHgsICIgPDwgY29tcHV0
ZWRXaWR0aEFuZE1hcmdpblZhbHVlLm1hcmdpbi5yaWdodCA8PCAicHgpIC0+IGxheW91dEJveCgi
IDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICAgICAgcmV0dXJuIGNvbXB1dGVkV2lkdGhBbmRN
YXJnaW5WYWx1ZTsKKyAgICB9CiAKICAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxvY2tXaWR0
aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChpbml0aWFsQ29udGFpbmlu
Z0Jsb2NrKGxheW91dEJveCkpLT5jb250ZW50Qm94KCkud2lkdGgoKTsKICAgICBhdXRvIGhvcml6
b250YWxNYXJnaW5zID0gY29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLm1hcmdpbi5sZWZ0ICsg
Y29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLm1hcmdpbi5yaWdodDsKQEAgLTIzMiw2ICsyMzks
NyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbgogICAgIGlmIChjb21wdXRlZFdpZHRoQW5kTWFy
Z2luVmFsdWUud2lkdGggKyBob3Jpem9udGFsTWFyZ2lucyA8IGluaXRpYWxDb250YWluaW5nQmxv
Y2tXaWR0aCkKICAgICAgICAgY29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLndpZHRoID0gaW5p
dGlhbENvbnRhaW5pbmdCbG9ja1dpZHRoIC0gaG9yaXpvbnRhbE1hcmdpbnM7CiAKKyAgICBMT0df
V0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRoXVtN
YXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gc3RyZWNoZWQgdG8gdmlld3BvcnQtPiB3
aWR0aCgiIDw8IGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS53aWR0aCA8PCAicHgpIG1hcmdp
bigiIDw8IGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS5tYXJnaW4ubGVmdCA8PCAicHgsICIg
PDwgY29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLm1hcmdpbi5yaWdodCA8PCAicHgpIC0+IGxh
eW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4geyBjb21wdXRlZFdp
ZHRoQW5kTWFyZ2luVmFsdWUud2lkdGgsIGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS5tYXJn
aW4gfTsKIH0KIApAQCAtMjQ5LDYgKzI1Nyw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluCiAg
ICAgLy8gIzIKICAgICBhdXRvIGlubGluZVJlcGxhY2VkV2lkdGhBbmRCbG9ja05vblJlcGxhY2Vk
TWFyZ2luID0gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBs
YXlvdXRCb3gsIGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4ud2lkdGgpOwogICAgIEFTU0VS
VChpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luLndpZHRoID09IGlubGluZVJlcGxhY2VkV2lk
dGhBbmRCbG9ja05vblJlcGxhY2VkTWFyZ2luLndpZHRoKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0o
Rm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGlu
ZmxvdyByZXBsYWNlZCAtPiB3aWR0aCgiIDw8IGlubGluZVJlcGxhY2VkV2lkdGhBbmRCbG9ja05v
blJlcGxhY2VkTWFyZ2luLndpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgaW5saW5lUmVwbGFjZWRX
aWR0aEFuZEJsb2NrTm9uUmVwbGFjZWRNYXJnaW4ubWFyZ2luLmxlZnQgPDwgInB4LCAiIDw8IGlu
bGluZVJlcGxhY2VkV2lkdGhBbmRCbG9ja05vblJlcGxhY2VkTWFyZ2luLm1hcmdpbi5sZWZ0IDw8
ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBp
bmxpbmVSZXBsYWNlZFdpZHRoQW5kQmxvY2tOb25SZXBsYWNlZE1hcmdpbjsKIH0KIApAQCAtMjY3
LDYgKzI3Niw3IEBAIExheW91dFBvaW50IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpzdGF0aWNQb3NpdGlvbihMYXlvdXRDb250ZXh0JiBsYXlvCiAgICAgICAgIGF1dG8mIHByZXZp
b3VzSW5GbG93RGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goKnByZXZpb3VzSW5GbG93U2libGluZyk7CiAgICAgICAgIHRvcCA9IHByZXZpb3VzSW5GbG93
RGlzcGxheUJveC5ib3R0b20oKSArIHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJnaW5Cb3R0
b20oKTsKICAgICB9CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LCBzdHJlYW0gPDwgIltQb3NpdGlvbl0gLT4gc3RhdGljIC0+IHRvcCgiIDw8IHRvcCA8PCAicHgp
IGxlZnQoIiA8PCBsZWZ0IDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIp
OwogICAgIHJldHVybiB7IHRvcCwgbGVmdCB9OwogfQogCkBAIC0zMjksNyArMzM5LDEwIEBAIExh
eW91dFBvaW50IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dQb3NpdGlv
bmVkUG9zaXRpb24oTGF5b3V0Q29uCiAgICAgICAgIGxlZnREZWx0YSA9IGxlZnQudmFsdWUoKTsK
ICAgICB9CiAKLSAgICByZXR1cm4geyBkaXNwbGF5Qm94LmxlZnQoKSArIGxlZnREZWx0YSwgZGlz
cGxheUJveC50b3AoKSArIHRvcERlbHRhIH07CisgICAgYXV0byBjb21wdXRlZExlZnQgPSBkaXNw
bGF5Qm94LmxlZnQoKSArIGxlZnREZWx0YTsKKyAgICBhdXRvIGNvbXB1dGVkVG9wID0gZGlzcGxh
eUJveC50b3AoKSArIHRvcERlbHRhOworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29u
dGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dIC0+IHBvc2l0aW9uZWQgaW5mbG93IC0+
IHRvcCgiIDw8IHRvcCA8PCAicHgpIGxlZnQoIiA8PCBsZWZ0IDw8ICJweCkgbGF5b3V0Qm94KCIg
PDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIHJldHVybiB7IGNvbXB1dGVkTGVmdCwgY29tcHV0
ZWRUb3AgfTsKIH0KIAogRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJn
aW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdp
bihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcAppbmRleCBhZTM0YTMwMjE1ZDY3NWE0NTQ3N2I5ZWMyZjU5ZGRmNmY0MDA0ODgxLi5i
ODc0YjU3YTc1MTBhNTVjMjg2NTg2MTUyZTkxNmQ5NjkyMjVkZDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBA
IC0yOCwxMCArMjgsMTIgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQogCisjaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkxheW91dEJsb2NrQ29udGFp
bmVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q2hpbGRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91dENv
bnRleHQuaCIKICNpbmNsdWRlICJMYXlvdXRJbmxpbmVCb3guaCIKICNpbmNsdWRlICJMYXlvdXRJ
bmxpbmVDb250YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgpAQCAtMTA2LDcgKzEw
OCw3IEBAIHZvaWQgVHJlZUJ1aWxkZXI6OmNyZWF0ZVN1YlRyZWUoY29uc3QgUmVuZGVyRWxlbWVu
dCYgcm9vdFJlbmRlcmVyLCBDb250YWluZXImIHJvCiB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJV
R0dJTkcpCi1zdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBj
b25zdCBCb3gmIGxheW91dEJveCwgdW5zaWduZWQgZGVwdGgpCitzdGF0aWMgdm9pZCBvdXRwdXRM
YXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3Qg
RGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94LCB1bnNpZ25lZCBkZXB0aCkKIHsKICAgICB1bnNpZ25l
ZCBwcmludGVkQ2hhcmFjdGVycyA9IDA7CiAgICAgd2hpbGUgKCsrcHJpbnRlZENoYXJhY3RlcnMg
PD0gZGVwdGggKiAyKQpAQCAtMTIyLDI2ICsxMjQsMjYgQEAgc3RhdGljIHZvaWQgb3V0cHV0TGF5
b3V0Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIHVuc2lnbmVk
IGQKICAgICAgICAgc3RyZWFtIDw8ICJibG9jayBjb250YWluZXIiOwogICAgIH0gZWxzZQogICAg
ICAgICBzdHJlYW0gPDwgImJveCI7Ci0gICAgc3RyZWFtIDw8ICIgYXQgWzAgMF0gc2l6ZSBbMCAw
XSI7CisgICAgc3RyZWFtIDw8ICIgYXQgWyIgPDwgZGlzcGxheUJveC5sZWZ0KCkgPDwgIiAiIDw8
IGRpc3BsYXlCb3gudG9wKCkgPDwgIl0gc2l6ZSBbIiA8PCBkaXNwbGF5Qm94LndpZHRoKCkgPDwg
IiAiIDw8IGRpc3BsYXlCb3guaGVpZ2h0KCkgPDwgIl0iOwogICAgIHN0cmVhbSA8PCAiIG9iamVj
dCBbIiA8PCAmbGF5b3V0Qm94IDw8ICJdIjsKIAogICAgIHN0cmVhbS5uZXh0TGluZSgpOwogfQog
Ci1zdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRUcmVlKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3Qg
Q29udGFpbmVyJiByb290Q29udGFpbmVyLCB1bnNpZ25lZCBkZXB0aCkKK3N0YXRpYyB2b2lkIG91
dHB1dExheW91dFRyZWUoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgVGV4dFN0
cmVhbSYgc3RyZWFtLCBjb25zdCBDb250YWluZXImIHJvb3RDb250YWluZXIsIHVuc2lnbmVkIGRl
cHRoKQogewogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxCb3g+KHJvb3RD
b250YWluZXIpKSB7Ci0gICAgICAgIG91dHB1dExheW91dEJveChzdHJlYW0sIGNoaWxkLCBkZXB0
aCk7CisgICAgICAgIG91dHB1dExheW91dEJveChzdHJlYW0sIGNoaWxkLCAqbGF5b3V0Q29udGV4
dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNoaWxkKSwgZGVwdGgpOwogICAgICAgICBpZiAoaXM8
Q29udGFpbmVyPihjaGlsZCkpCi0gICAgICAgICAgICBvdXRwdXRMYXlvdXRUcmVlKHN0cmVhbSwg
ZG93bmNhc3Q8Q29udGFpbmVyPihjaGlsZCksIGRlcHRoICsgMSk7CisgICAgICAgICAgICBvdXRw
dXRMYXlvdXRUcmVlKGxheW91dENvbnRleHQsIHN0cmVhbSwgZG93bmNhc3Q8Q29udGFpbmVyPihj
aGlsZCksIGRlcHRoICsgMSk7CiAgICAgfQogfQogCi12b2lkIFRyZWVCdWlsZGVyOjpzaG93TGF5
b3V0VHJlZShjb25zdCBDb250YWluZXImIGxheW91dEJveCkKK3ZvaWQgVHJlZUJ1aWxkZXI6OnNo
b3dMYXlvdXRUcmVlKGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IENv
bnRhaW5lciYgbGF5b3V0Qm94KQogewogICAgIFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06
OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1hdHRpbmc6OlNWR1N0eWxl
UmVjdCk7Ci0gICAgb3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgbGF5b3V0Qm94LCAwKTsKLSAgICBv
dXRwdXRMYXlvdXRUcmVlKHN0cmVhbSwgbGF5b3V0Qm94LCAxKTsKKyAgICBvdXRwdXRMYXlvdXRC
b3goc3RyZWFtLCBsYXlvdXRCb3gsICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3gobGF5b3V0Qm94KSwgMCk7CisgICAgb3V0cHV0TGF5b3V0VHJlZShsYXlvdXRDb250ZXh0LCBz
dHJlYW0sIGxheW91dEJveCwgMSk7CiAgICAgV1RGTG9nQWx3YXlzKCIlcyIsIHN0cmVhbS5yZWxl
YXNlKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKQEAgLTE1Myw3ICsxNTUsOCBAQCB2b2lkIHByaW50
TGF5b3V0VHJlZUZvckxpdmVEb2N1bWVudHMoKQogICAgICAgICBpZiAoZG9jdW1lbnQtPmZyYW1l
KCkgJiYgZG9jdW1lbnQtPmZyYW1lKCktPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS1tYWluIGZyYW1lLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cbiIpOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBkb2N1
bWVudC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIExheW91dDo6VHJl
ZUJ1aWxkZXI6OnNob3dMYXlvdXRUcmVlKCpUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0VHJlZSgq
ZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkpOworICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBmaW5k
IGEgd2F5IHRvIG91dHB1dCBnZW9tZXRyeSB3aXRob3V0IGxheW91dCBjb250ZXh0LgorICAgICAg
ICAvLyBMYXlvdXQ6OlRyZWVCdWlsZGVyOjpzaG93TGF5b3V0VHJlZSgqVHJlZUJ1aWxkZXI6OmNy
ZWF0ZUxheW91dFRyZWUoKmRvY3VtZW50LT5yZW5kZXJWaWV3KCkpKTsKICAgICB9CiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVl
QnVpbGRlci5oCmluZGV4IGMzYjg3YjliMmM3YmFlMjIzYzI2ZWFkMGM4MjY0Zjg4YWY5YTY0YzYu
LmE4YjFjZmQ0OWEzNDk4ZmM2ZmU3NDE3OGZiYjg2OTllNTY5NDQ5YzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaApAQCAt
MzUsMTEgKzM1LDEyIEBAIGNsYXNzIFJlbmRlclZpZXc7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAog
Y2xhc3MgQ29udGFpbmVyOworY2xhc3MgTGF5b3V0Q29udGV4dDsKIAogY2xhc3MgVHJlZUJ1aWxk
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVyPiBjcmVh
dGVMYXlvdXRUcmVlKGNvbnN0IFJlbmRlclZpZXcmKTsKLSAgICBzdGF0aWMgdm9pZCBzaG93TGF5
b3V0VHJlZShjb25zdCBDb250YWluZXImKTsKKyAgICBzdGF0aWMgdm9pZCBzaG93TGF5b3V0VHJl
ZShjb25zdCBMYXlvdXRDb250ZXh0JiwgY29uc3QgQ29udGFpbmVyJik7CiAKIHByaXZhdGU6CiAg
ICAgc3RhdGljIHZvaWQgY3JlYXRlU3ViVHJlZShjb25zdCBSZW5kZXJFbGVtZW50JiByb290UmVu
ZGVyZXIsIENvbnRhaW5lciYgcm9vdENvbnRhaW5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5n
LmgKaW5kZXggZTBmNDQxZDZlMjg5NDllMzUzYWJjMTc0NjNlNDYxNjcxNGNkMmZlMi4uYjQ3Y2Jm
OTkzOTkxYTJhY2FkOTM1YzM3ZmQyYzU1MzY5ZWQ2NTZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Z2dpbmcuaApAQCAtNjEsNiArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgTShJbmRl
eGVkREJPcGVyYXRpb25zKSBcCiAgICAgTShMYXllcnMpIFwKICAgICBNKExheW91dCkgXAorICAg
IE0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQpIFwKICAgICBNKExvYWRpbmcpIFwKICAgICBNKE1l
ZGlhKSBcCiAgICAgTShNZWRpYUNhcHR1cmVTYW1wbGVzKSBcCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>