<?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>206538</bug_id>
          
          <creation_ts>2020-01-21 08:31:38 -0800</creation_ts>
          <short_desc>[LFC] Typed accessors for formatting states</short_desc>
          <delta_ts>2020-01-21 13:10:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</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>1609062</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-21 08:31:38 -0800</bug_when>
    <thetext>Almost all clients know what sort of formatting state they want and immediately cast it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609067</commentid>
    <comment_count>1</comment_count>
      <attachid>388302</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-21 08:39:12 -0800</bug_when>
    <thetext>Created attachment 388302
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609226</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-21 13:08:24 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 388302:

editing/spelling/spellcheck-attribute.html bug 206178 (authors: g.czajkowski@samsung.com, mark.lam@apple.com, and rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609227</commentid>
    <comment_count>3</comment_count>
      <attachid>388302</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-21 13:09:00 -0800</bug_when>
    <thetext>Comment on attachment 388302
patch

Clearing flags on attachment: 388302

Committed r254875: &lt;https://trac.webkit.org/changeset/254875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609228</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-21 13:09:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609230</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-21 13:10:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/58770667&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388302</attachid>
            <date>2020-01-21 08:39:12 -0800</date>
            <delta_ts>2020-01-21 13:09:00 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-formattingstate-construction.patch</filename>
            <type>text/plain</type>
            <size>26718</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NjVhY2E3NGM2Ny4uNTlhMGVjYmQ4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAyMC0wMS0yMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ10gVHlwZWQgYWNjZXNzb3JzIGZvciBmb3JtYXR0aW5nIHN0YXRlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxtb3N0IGFs
bCBjbGllbnRzIGtub3cgd2hhdCBzb3J0IG9mIGZvcm1hdHRpbmcgc3RhdGUgdGhleSB3YW50IGFu
ZCBpbW1lZGlhdGVseSBjYXN0IGl0LgorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OnNocmlua1RvRml0V2lkdGgpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0
dGluZ0NvbnRleHQpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRTdGF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpmb3JtYXR0aW5nU3RhdGVGb3JCb3ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZXN0YWJsaXNoZWRG
b3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRT
dGF0ZTo6ZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZXN0YWJsaXNoZWRCbG9ja0Zvcm1hdHRpbmdT
dGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplc3Rh
Ymxpc2hlZFRhYmxlRm9ybWF0dGluZ1N0YXRlIGNvbnN0KToKKworICAgICAgICBUeXBlZCBmdW5j
dGlvbiBmb3IgZ2V0dGluZyBlc3RhYmxpc2hlZCBzdGF0ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGF5b3V0U3RhdGU6OmVuc3VyZUZvcm1hdHRpbmdTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplbnN1cmVJbmxpbmVGb3JtYXR0aW5nU3RhdGUp
OgorCisgICAgICAgIEFsc28gYWRkIGEgZmFzdCBwYXRoIGZvciBpbnRlZ3JhdGVkIGxheW91dC4K
KworICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlQmxvY2tGb3Jt
YXR0aW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5z
dXJlVGFibGVGb3JtYXR0aW5nU3RhdGUpOgorCisgICAgICAgIFR5cGVkIGZ1bmN0aW9uIGZvciBj
cmVhdGluZyBzdGF0ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6
OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQpOiBEZWxldGVk
LgorICAgICAgICAqIGxheW91dC9MYXlvdXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMYXlvdXRTdGF0ZTo6aGFzSW5saW5lRm9ybWF0dGluZ1N0YXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6Omhhc0Zvcm1hdHRpbmdTdGF0ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4pOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xs
YXBzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoIGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6cGFpbnRTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OlBhaW50ZXI6OnBhaW50SW5saW5lRmxvdyk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5lRGVzY2VudE5l
ZWRzQ29sbGFwc2luZyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6YWxpZ25Db250ZW50VmVydGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxpbmVCdWlsZGVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQpOgorICAgICAgICAqIGxh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OkxpbmVMYXlvdXQpOgor
ICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0SW5saW5lUnVucyk6CisKIDIwMjAtMDEtMjEgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0
aW9uXSBVc2UgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQgZGlyZWN0bHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA1MDc0
YzFlYzczOC4uZmUzNmVkM2Y5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBMYXlvdXRV
bml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29udGVudEhlaWdodEZvckZvcm1hdHRp
bmdDb250ZXh0Um9vdChjbwogICAgIGF1dG8gYm90dG9tID0gYm9yZGVyQW5kUGFkZGluZ1RvcDsK
ICAgICBhdXRvJiBmb3JtYXR0aW5nUm9vdENvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lcj4o
bGF5b3V0Qm94KTsKICAgICBpZiAoZm9ybWF0dGluZ1Jvb3RDb250YWluZXIuZXN0YWJsaXNoZXNJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9IGRv
d25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3Jt
YXR0aW5nU3RhdGUoZm9ybWF0dGluZ1Jvb3RDb250YWluZXIpKS5kaXNwbGF5SW5saW5lQ29udGVu
dCgpLT5saW5lQm94ZXM7CisgICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9IGxheW91dFN0YXRlLmVz
dGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdSb290Q29udGFpbmVyKS5k
aXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXM7CiAgICAgICAgIC8vIEV2ZW4gZW1wdHkg
Y29udGFpbmVycyBnZW5lcmF0ZSBvbmUgbGluZS4gCiAgICAgICAgIEFTU0VSVCghbGluZUJveGVz
LmlzRW1wdHkoKSk7CiAgICAgICAgIHRvcCA9IGxpbmVCb3hlcy5maXJzdCgpLmxvZ2ljYWxUb3Ao
KTsKQEAgLTI4Nyw3ICsyODcsNyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6c2hyaW5rVG9GaXRXaWR0aChjb25zdCBCb3gmIGZvcm1hdHRpbmdSbwogICAgIGF1dG8g
aW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgeyB9
OwogICAgIGlmIChpczxDb250YWluZXI+KGZvcm1hdHRpbmdSb290KSkgewogICAgICAgICBhdXRv
JiByb290ID0gZG93bmNhc3Q8Q29udGFpbmVyPihmb3JtYXR0aW5nUm9vdCk7Ci0gICAgICAgIGF1
dG8mIGZvcm1hdHRpbmdTdGF0ZUZvclJvb3QgPSBsYXlvdXRTdGF0ZSgpLmNyZWF0ZUZvcm1hdHRp
bmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQocm9vdCk7CisgICAgICAgIGF1dG8mIGZv
cm1hdHRpbmdTdGF0ZUZvclJvb3QgPSBsYXlvdXRTdGF0ZSgpLmVuc3VyZUZvcm1hdHRpbmdTdGF0
ZShyb290KTsKICAgICAgICAgYXV0byBwcmVjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgPSBmb3JtYXR0aW5nU3RhdGVGb3JSb290LmludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKTsK
ICAgICAgICAgaWYgKCFwcmVjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMpCiAgICAg
ICAgICAgICBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRl
Rm9ybWF0dGluZ0NvbnRleHQocm9vdCwgbGF5b3V0U3RhdGUoKSktPmNvbXB1dGVkSW50cmluc2lj
V2lkdGhDb25zdHJhaW50cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xh
eW91dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3Bw
CmluZGV4IGU1MTY4ZGNkODBhLi4zMjdhODU0YTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRDb250ZXh0LmNwcApAQCAtMTEzLDE4ICsxMTMsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEZv
cm1hdHRpbmdDb250ZXh0PiBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChj
b25zdAogewogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNGb3Jt
YXR0aW5nQ29udGV4dCgpKTsKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlz
aGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICBhdXRvJiBpbmxpbmVGb3Jt
YXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRl
LmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGlu
Z0NvbnRleHRSb290KSk7CisgICAgICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGxh
eW91dFN0YXRlLmVuc3VyZUlubGluZUZvcm1hdHRpbmdTdGF0ZShmb3JtYXR0aW5nQ29udGV4dFJv
b3QpOwogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4o
Zm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAog
ICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxp
c2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpOwotICAgICAgICBhdXRvJiBibG9ja0Zv
cm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0
ZS5jcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRp
bmdDb250ZXh0Um9vdCkpOworICAgICAgICBhdXRvJiBibG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IGxh
eW91dFN0YXRlLmVuc3VyZUJsb2NrRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdDb250ZXh0Um9v
dCk7CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZv
cm1hdHRpbmdDb250ZXh0Um9vdCwgYmxvY2tGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAg
IGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250
ZXh0KCkpIHsKLSAgICAgICAgYXV0byYgdGFibGVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxU
YWJsZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9y
Rm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKKyAgICAgICAg
YXV0byYgdGFibGVGb3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5lbnN1cmVUYWJsZUZvcm1h
dHRpbmdTdGF0ZShmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIHRhYmxl
Rm9ybWF0dGluZ1N0YXRlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9MYXlvdXRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUu
Y3BwCmluZGV4IGQ1MjBlODM1MTVlLi5jZjc5ZTg5M2ZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TGF5b3V0U3RhdGUuY3BwCkBAIC04NCw2NSArODQsMTExIEBAIERpc3BsYXk6OkJveCYgTGF5b3V0
U3RhdGU6OmVuc3VyZURpc3BsYXlCb3hGb3JMYXlvdXRCb3hTbG93KGNvbnN0IEJveCYgbGF5b3V0
Qm94CiAKIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmZvcm1hdHRpbmdTdGF0ZUZvckJv
eChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKLSAgICBhdXRvJiByb290ID0gbGF5b3V0
Qm94LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybWF0
dGluZ1N0YXRlcy5jb250YWlucygmcm9vdCkpOwotICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3Rh
dGVzLmdldCgmcm9vdCk7CisgICAgcmV0dXJuIGVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxh
eW91dEJveC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSk7CiB9CiAKLUZvcm1hdHRpbmdTdGF0ZSYg
TGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYg
Zm9ybWF0dGluZ1Jvb3QpIGNvbnN0CitGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplc3Rh
Ymxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0
Um9vdCkgY29uc3QKIHsKLSAgICBBU1NFUlQoZm9ybWF0dGluZ1Jvb3QuZXN0YWJsaXNoZXNGb3Jt
YXR0aW5nQ29udGV4dCgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm1hdHRpbmdTdGF0ZXMu
Y29udGFpbnMoJmZvcm1hdHRpbmdSb290KSk7Ci0gICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0
ZXMuZ2V0KCZmb3JtYXR0aW5nUm9vdCk7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJs
ZWQoKSkgeworICAgICAgICBBU1NFUlQoJmZvcm1hdHRpbmdDb250ZXh0Um9vdCA9PSBtX3Jvb3RD
b250YWluZXIuZ2V0KCkpOworICAgICAgICByZXR1cm4gKm1fcm9vdElubGluZUZvcm1hdHRpbmdT
dGF0ZUZvckludGVncmF0aW9uOworICAgIH0KKworICAgIGlmIChhdXRvKiBmb3JtYXR0aW5nU3Rh
dGUgPSBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZXMuZ2V0KCZmb3JtYXR0aW5nQ29udGV4dFJvb3Qp
KQorICAgICAgICByZXR1cm4gKmZvcm1hdHRpbmdTdGF0ZTsKKworICAgIGlmIChhdXRvKiBmb3Jt
YXR0aW5nU3RhdGUgPSBtX2Jsb2NrRm9ybWF0dGluZ1N0YXRlcy5nZXQoJmZvcm1hdHRpbmdDb250
ZXh0Um9vdCkpCisgICAgICAgIHJldHVybiAqZm9ybWF0dGluZ1N0YXRlOworCisgICAgQVNTRVJU
KG1fdGFibGVGb3JtYXR0aW5nU3RhdGVzLmNvbnRhaW5zKCZmb3JtYXR0aW5nQ29udGV4dFJvb3Qp
KTsKKyAgICByZXR1cm4gKm1fdGFibGVGb3JtYXR0aW5nU3RhdGVzLmdldCgmZm9ybWF0dGluZ0Nv
bnRleHRSb290KTsKIH0KIAotRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9y
bWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBDb250YWluZXImIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCkKK0lubGluZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6
OmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0
dGluZ0NvbnRleHRSb290KSBjb25zdAogewotICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJv
b3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKLQotICAgIGlmIChmb3JtYXR0aW5n
Q29udGV4dFJvb3QuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAg
ICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ0NvbnRleHRS
b290LCBbJl0gewotCi0gICAgICAgICAgICAvLyBJZiB0aGUgYmxvY2sgY29udGFpbmVyIGJveCB0
aGF0IGluaXRpYXRlcyB0aGlzIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgYWxzbyBlc3RhYmxp
c2hlcyBhIGJsb2NrIGNvbnRleHQsIHRoZSBmbG9hdHMgb3V0c2lkZSBvZiB0aGUgZm9ybWF0dGlu
ZyByb290Ci0gICAgICAgICAgICAvLyBzaG91bGQgbm90IGludGVyZmVyZSB3aXRoIHRoZSBjb250
ZW50IGluc2lkZS4KLSAgICAgICAgICAgIC8vIDxkaXYgc3R5bGU9ImZsb2F0OiBsZWZ0Ij48L2Rp
dj48ZGl2IHN0eWxlPSJvdmVyZmxvdzogaGlkZGVuIj4gPC0gaXMgYSBub24taW50cnVzaXZlIGZs
b2F0LCBiZWNhdXNlIG92ZXJmbG93OiBoaWRkZW4gdHJpZ2dlcnMgbmV3IGJsb2NrIGZvcm1hdHRp
bmcgY29udGV4dC48L2Rpdj4KLSAgICAgICAgICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3Qu
ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBh
dXRvIGZvcm1hdHRpbmdTdGF0ZSA9IG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihG
bG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdDb250ZXh0Um9vdCksICp0aGlz
KTsKLSAgICAgICAgICAgICAgICBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZXMuYXBwZW5kKFdURk1v
dmUoZm9ybWF0dGluZ1N0YXRlKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1faW5saW5lRm9y
bWF0dGluZ1N0YXRlcy5sYXN0KCkuZ2V0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IC8vIE90aGVyd2lzZSwgdGhlIGZvcm1hdHRpbmcgY29udGV4dCBpbmhlcml0cyB0aGUgZmxvYXRz
IGZyb20gdGhlIHBhcmVudCBmb3JtYXR0aW5nIGNvbnRleHQuCi0gICAgICAgICAgICAvLyBGaW5k
IHRoZSBmb3JtYXR0aW5nIHN0YXRlIGluIHdoaWNoIHRoaXMgZm9ybWF0dGluZyByb290IGxpdmVz
LCBub3QgdGhlIG9uZSBpdCBjcmVhdGVzIGFuZCB1c2UgaXRzIGZsb2F0aW5nIHN0YXRlLgotICAg
ICAgICAgICAgYXV0byYgcGFyZW50Rm9ybWF0dGluZ1N0YXRlID0gY3JlYXRlRm9ybWF0dGluZ1N0
YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZm9ybWF0
dGluZ0NvbnRleHRSb290KCkpOyAKLSAgICAgICAgICAgIGF1dG8mIHBhcmVudEZsb2F0aW5nU3Rh
dGUgPSBwYXJlbnRGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOwotICAgICAgICAgICAg
YXV0byBmb3JtYXR0aW5nU3RhdGUgPSBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4o
cGFyZW50RmxvYXRpbmdTdGF0ZSwgKnRoaXMpOwotICAgICAgICAgICAgbV9pbmxpbmVGb3JtYXR0
aW5nU3RhdGVzLmFwcGVuZChXVEZNb3ZlKGZvcm1hdHRpbmdTdGF0ZSkpOwotICAgICAgICAgICAg
cmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlcy5sYXN0KCkuZ2V0KCk7Ci0gICAgICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFi
bGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSk7CisKKyAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVn
cmF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIEFTU0VSVCgmZm9ybWF0dGluZ0NvbnRleHRSb290
ID09IG1fcm9vdENvbnRhaW5lci5nZXQoKSk7CisgICAgICAgIHJldHVybiAqbV9yb290SW5saW5l
Rm9ybWF0dGluZ1N0YXRlRm9ySW50ZWdyYXRpb247CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdHRp
bmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAg
ICAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdDb250ZXh0
Um9vdCwgWyZdIHsKKyAgICByZXR1cm4gKm1faW5saW5lRm9ybWF0dGluZ1N0YXRlcy5nZXQoJmZv
cm1hdHRpbmdDb250ZXh0Um9vdCk7Cit9CiAKLSAgICAgICAgICAgIC8vIEJsb2NrIGZvcm1hdHRp
bmcgY29udGV4dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUuCi0gICAg
ICAgICAgICBhdXRvIGZvcm1hdHRpbmdTdGF0ZSA9IG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0aW5n
U3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ0NvbnRleHRSb290
KSwgKnRoaXMpOwotICAgICAgICAgICAgbV9ibG9ja0Zvcm1hdHRpbmdTdGF0ZXMuYXBwZW5kKFdU
Rk1vdmUoZm9ybWF0dGluZ1N0YXRlKSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9ibG9ja0Zvcm1h
dHRpbmdTdGF0ZXMubGFzdCgpLmdldCgpOwotICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci0g
ICAgfQorQmxvY2tGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplc3RhYmxpc2hlZEJsb2Nr
Rm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBj
b25zdAoreworICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0KCkpOworICAgIHJldHVybiAqbV9ibG9ja0Zvcm1hdHRpbmdTdGF0
ZXMuZ2V0KCZmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworfQorCitUYWJsZUZvcm1hdHRpbmdTdGF0
ZSYgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkVGFibGVGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29u
dGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0Cit7CisgICAgQVNTRVJUKGZvcm1h
dHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSk7Cisg
ICAgcmV0dXJuICptX3RhYmxlRm9ybWF0dGluZ1N0YXRlcy5nZXQoJmZvcm1hdHRpbmdDb250ZXh0
Um9vdCk7Cit9CiAKLSAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzVGFi
bGVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3Rh
dGVzLmVuc3VyZSgmZm9ybWF0dGluZ0NvbnRleHRSb290LCBbJl0geworRm9ybWF0dGluZ1N0YXRl
JiBMYXlvdXRTdGF0ZTo6ZW5zdXJlRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9y
bWF0dGluZ0NvbnRleHRSb290KQoreworICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0
YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gZW5zdXJl
SW5saW5lRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CisKKyAgICBpZiAo
Zm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgp
KQorICAgICAgICByZXR1cm4gZW5zdXJlQmxvY2tGb3JtYXR0aW5nU3RhdGUoZm9ybWF0dGluZ0Nv
bnRleHRSb290KTsKKworICAgIHJldHVybiBlbnN1cmVUYWJsZUZvcm1hdHRpbmdTdGF0ZShmb3Jt
YXR0aW5nQ29udGV4dFJvb3QpOworfQogCi0gICAgICAgICAgICAvLyBUYWJsZSBmb3JtYXR0aW5n
IGNvbnRleHQgYWx3YXlzIGVzdGFibGlzaGVzIGEgbmV3IGZsb2F0aW5nIHN0YXRlIC1hbmQgaXQg
c3RheXMgZW1wdHkuCi0gICAgICAgICAgICBhdXRvIGZvcm1hdHRpbmdTdGF0ZSA9IG1ha2VVbmlx
dWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9y
bWF0dGluZ0NvbnRleHRSb290KSwgKnRoaXMpOwotICAgICAgICAgICAgbV90YWJsZUZvcm1hdHRp
bmdTdGF0ZXMuYXBwZW5kKFdURk1vdmUoZm9ybWF0dGluZ1N0YXRlKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV90YWJsZUZvcm1hdHRpbmdTdGF0ZXMubGFzdCgpLmdldCgpOwotICAgICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CitJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplbnN1
cmVJbmxpbmVGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QpCit7CisgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0KCkpOworCisgICAgYXV0byBjcmVhdGUgPSBbJl0geworICAg
ICAgICAvLyBJZiB0aGUgYmxvY2sgY29udGFpbmVyIGJveCB0aGF0IGluaXRpYXRlcyB0aGlzIGlu
bGluZSBmb3JtYXR0aW5nIGNvbnRleHQgYWxzbyBlc3RhYmxpc2hlcyBhIGJsb2NrIGNvbnRleHQs
IHRoZSBmbG9hdHMgb3V0c2lkZSBvZiB0aGUgZm9ybWF0dGluZyByb290CisgICAgICAgIC8vIHNo
b3VsZCBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGNvbnRlbnQgaW5zaWRlLgorICAgICAgICAvLyA8
ZGl2IHN0eWxlPSJmbG9hdDogbGVmdCI+PC9kaXY+PGRpdiBzdHlsZT0ib3ZlcmZsb3c6IGhpZGRl
biI+IDwtIGlzIGEgbm9uLWludHJ1c2l2ZSBmbG9hdCwgYmVjYXVzZSBvdmVyZmxvdzogaGlkZGVu
IHRyaWdnZXJzIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQuPC9kaXY+CisgICAgICAgIGlm
IChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
KCkpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+
KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ0NvbnRleHRSb290KSwgKnRo
aXMpOworCisgICAgICAgIC8vIE90aGVyd2lzZSwgdGhlIGZvcm1hdHRpbmcgY29udGV4dCBpbmhl
cml0cyB0aGUgZmxvYXRzIGZyb20gdGhlIHBhcmVudCBmb3JtYXR0aW5nIGNvbnRleHQuCisgICAg
ICAgIC8vIEZpbmQgdGhlIGZvcm1hdHRpbmcgc3RhdGUgaW4gd2hpY2ggdGhpcyBmb3JtYXR0aW5n
IHJvb3QgbGl2ZXMsIG5vdCB0aGUgb25lIGl0IGNyZWF0ZXMgYW5kIHVzZSBpdHMgZmxvYXRpbmcg
c3RhdGUuCisgICAgICAgIGF1dG8mIHBhcmVudEZvcm1hdHRpbmdTdGF0ZSA9IGVuc3VyZUZvcm1h
dHRpbmdTdGF0ZShmb3JtYXR0aW5nQ29udGV4dFJvb3QuZm9ybWF0dGluZ0NvbnRleHRSb290KCkp
OworICAgICAgICBhdXRvJiBwYXJlbnRGbG9hdGluZ1N0YXRlID0gcGFyZW50Rm9ybWF0dGluZ1N0
YXRlLmZsb2F0aW5nU3RhdGUoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9y
bWF0dGluZ1N0YXRlPihwYXJlbnRGbG9hdGluZ1N0YXRlLCAqdGhpcyk7CisgICAgfTsKKworICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxheW91dEZvcm1h
dHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKCFtX3Jvb3RJ
bmxpbmVGb3JtYXR0aW5nU3RhdGVGb3JJbnRlZ3JhdGlvbikgeworICAgICAgICAgICAgQVNTRVJU
KCZmb3JtYXR0aW5nQ29udGV4dFJvb3QgPT0gbV9yb290Q29udGFpbmVyLmdldCgpKTsKKyAgICAg
ICAgICAgIG1fcm9vdElubGluZUZvcm1hdHRpbmdTdGF0ZUZvckludGVncmF0aW9uID0gY3JlYXRl
KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICptX3Jvb3RJbmxpbmVGb3JtYXR0aW5nU3Rh
dGVGb3JJbnRlZ3JhdGlvbjsKICAgICB9CiAKLSAgICBDUkFTSCgpOworICAgIHJldHVybiAqbV9p
bmxpbmVGb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ0NvbnRleHRSb290LCBjcmVh
dGUpLml0ZXJhdG9yLT52YWx1ZTsKK30KKworQmxvY2tGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0
YXRlOjplbnN1cmVCbG9ja0Zvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRp
bmdDb250ZXh0Um9vdCkKK3sKKyAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFi
bGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKTsKKworICAgIGF1dG8gY3JlYXRlID0gWyZd
IHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KEZsb2F0
aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ0NvbnRleHRSb290KSwgKnRoaXMpOwor
ICAgIH07CisKKyAgICByZXR1cm4gKm1fYmxvY2tGb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9y
bWF0dGluZ0NvbnRleHRSb290LCBjcmVhdGUpLml0ZXJhdG9yLT52YWx1ZTsKK30KKworVGFibGVG
b3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplbnN1cmVUYWJsZUZvcm1hdHRpbmdTdGF0ZShj
b25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKK3sKKyAgICBBU1NFUlQoZm9y
bWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgpKTsK
KworICAgIGF1dG8gY3JlYXRlID0gWyZdIHsKKyAgICAgICAgLy8gVGFibGUgZm9ybWF0dGluZyBj
b250ZXh0IGFsd2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0ZSAtYW5kIGl0IHN0
YXlzIGVtcHR5LgorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZUZvcm1hdHRpbmdTdGF0
ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nQ29udGV4dFJvb3QpLCAq
dGhpcyk7CisgICAgfTsKKworICAgIHJldHVybiAqbV90YWJsZUZvcm1hdHRpbmdTdGF0ZXMuZW5z
dXJlKCZmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGNyZWF0ZSkuaXRlcmF0b3ItPnZhbHVlOwogfQog
CiB2b2lkIExheW91dFN0YXRlOjpzZXRWaWV3cG9ydFNpemUoY29uc3QgTGF5b3V0U2l6ZSYgdmll
d3BvcnRTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaAppbmRleCA5ODA1MTI4M2Ex
ZS4uNjY0ZTYyMDY2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRT
dGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oCkBAIC01Mywx
MCArNTMsMTggQEAgcHVibGljOgogICAgIExheW91dFN0YXRlKGNvbnN0IERvY3VtZW50JiwgY29u
c3QgQ29udGFpbmVyJiByb290Q29udGFpbmVyKTsKICAgICB+TGF5b3V0U3RhdGUoKTsKIAotICAg
IEZvcm1hdHRpbmdTdGF0ZSYgY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJ
Zk5lZWRlZChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CisgICAgRm9y
bWF0dGluZ1N0YXRlJiBlbnN1cmVGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29udGFpbmVyJiBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QpOworICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZW5zdXJlSW5s
aW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290
KTsKKyAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZW5zdXJlQmxvY2tGb3JtYXR0aW5nU3RhdGUo
Y29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworICAgIFRhYmxlRm9ybWF0
dGluZ1N0YXRlJiBlbnN1cmVUYWJsZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXImIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCk7CisKICAgICBGb3JtYXR0aW5nU3RhdGUmIGVzdGFibGlzaGVk
Rm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ1Jvb3QpIGNvbnN0Owor
ICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3Rh
dGUoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0OworICAgIEJs
b2NrRm9ybWF0dGluZ1N0YXRlJiBlc3RhYmxpc2hlZEJsb2NrRm9ybWF0dGluZ1N0YXRlKGNvbnN0
IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25zdDsKKyAgICBUYWJsZUZvcm1h
dHRpbmdTdGF0ZSYgZXN0YWJsaXNoZWRUYWJsZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWlu
ZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3Q7CisKICAgICBGb3JtYXR0aW5nU3RhdGUm
IGZvcm1hdHRpbmdTdGF0ZUZvckJveChjb25zdCBCb3gmKSBjb25zdDsKLSAgICBib29sIGhhc0Zv
cm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdSb290KSBjb25zdCB7IHJl
dHVybiBtX2Zvcm1hdHRpbmdTdGF0ZXMuY29udGFpbnMoJmZvcm1hdHRpbmdSb290KTsgfQorICAg
IGJvb2wgaGFzSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGlu
Z1Jvb3QpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlcy5jb250YWlucygm
Zm9ybWF0dGluZ1Jvb3QpOyB9CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCByZWdpc3RlckZv
cm1hdHRpbmdDb250ZXh0KGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0Jik7CkBAIC04NiwxMSArOTQs
MTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFF1aXJrc01vZGUoUXVpcmtzTW9kZSBxdWlya3NN
b2RlKSB7IG1fcXVpcmtzTW9kZSA9IHF1aXJrc01vZGU7IH0KICAgICBEaXNwbGF5OjpCb3gmIGVu
c3VyZURpc3BsYXlCb3hGb3JMYXlvdXRCb3hTbG93KGNvbnN0IEJveCYpOwogCi0gICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+LCAxPiBtX2lubGluZUZvcm1h
dHRpbmdTdGF0ZXM7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0Zvcm1hdHRpbmdT
dGF0ZT4sIDE+IG1fYmxvY2tGb3JtYXR0aW5nU3RhdGVzOwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VGFibGVGb3JtYXR0aW5nU3RhdGU+PiBtX3RhYmxlRm9ybWF0dGluZ1N0YXRlczsKKyAg
ICBIYXNoTWFwPGNvbnN0IENvbnRhaW5lciosIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGb3JtYXR0
aW5nU3RhdGU+PiBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZXM7CisgICAgSGFzaE1hcDxjb25zdCBD
b250YWluZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tGb3JtYXR0aW5nU3RhdGU+PiBtX2Jsb2Nr
Rm9ybWF0dGluZ1N0YXRlczsKKyAgICBIYXNoTWFwPGNvbnN0IENvbnRhaW5lciosIHN0ZDo6dW5p
cXVlX3B0cjxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4+IG1fdGFibGVGb3JtYXR0aW5nU3RhdGVzOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPElubGluZUZvcm1hdHRpbmdTdGF0ZT4gbV9yb290SW5saW5l
Rm9ybWF0dGluZ1N0YXRlRm9ySW50ZWdyYXRpb247CiAKLSAgICBIYXNoTWFwPGNvbnN0IENvbnRh
aW5lciosIEZvcm1hdHRpbmdTdGF0ZSo+IG1fZm9ybWF0dGluZ1N0YXRlczsKICNpZm5kZWYgTkRF
QlVHCiAgICAgSGFzaFNldDxjb25zdCBGb3JtYXR0aW5nQ29udGV4dCo+IG1fZm9ybWF0dGluZ0Nv
bnRleHRMaXN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9t
ZXRyeS5jcHAKaW5kZXggYjc5NWY2MjUzY2QuLjg3NmYzYjRlMWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC03NCw3ICs3NCw3IEBAIENvbnRl
bnRIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxv
d05vblJlcGxhY2VkSGVpZ2h0CiAgICAgICAgIC8vIDEuIHRoZSBib3R0b20gZWRnZSBvZiB0aGUg
bGFzdCBsaW5lIGJveCwgaWYgdGhlIGJveCBlc3RhYmxpc2hlcyBhIGlubGluZSBmb3JtYXR0aW5n
IGNvbnRleHQgd2l0aCBvbmUgb3IgbW9yZSBsaW5lcwogICAgICAgICBhdXRvJiBsYXlvdXRDb250
YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7CiAgICAgICAgIGlmIChsYXlv
dXRDb250YWluZXIuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAg
ICAgICAgICBhdXRvJiBsaW5lQm94ZXMgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+
KGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Q29udGFpbmVy
KSkuZGlzcGxheUlubGluZUNvbnRlbnQoKS0+bGluZUJveGVzOworICAgICAgICAgICAgYXV0byYg
bGluZUJveGVzID0gbGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0
ZShsYXlvdXRDb250YWluZXIpLmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hlczsKICAg
ICAgICAgICAgIC8vIEV2ZW4gZW1wdHkgY29udGFpbmVycyBnZW5lcmF0ZSBvbmUgbGluZS4gCiAg
ICAgICAgICAgICBBU1NFUlQoIWxpbmVCb3hlcy5pc0VtcHR5KCkpOwogICAgICAgICAgICAgcmV0
dXJuIHsgdG9MYXlvdXRVbml0KGxpbmVCb3hlcy5sYXN0KCkubG9naWNhbEJvdHRvbSgpKSAtIGJv
cmRlckFuZFBhZGRpbmdUb3AsIG5vbkNvbGxhcHNlZE1hcmdpbiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xs
YXBzZS5jcHAKaW5kZXggNzU1YWVjYmM1YTcuLjM2NjFjNDc4NzkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5D
b2xsYXBzZS5jcHAKQEAgLTM5MiwxMSArMzkyLDExIEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgQm94JiBs
CiAgICAgICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSB0aHJvdWdoIG1hcmdpbiBlc3RpbWF0aW9u
LCB3ZSBkb24ndCBuZWNlc3NhcmlseSBoYXZlIGFuIGFjdHVhbCBzdGF0ZSBmb3IgdGhpcyBsYXlv
dXQgYm94IHNpbmNlCiAgICAgICAgICAgICAvLyB3ZSBoYXZlbid0IHN0YXJ0ZWQgbGF5aW5nIGl0
IG91dCB5ZXQuCiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRDb250YWluZXIgPSBkb3duY2FzdDxD
b250YWluZXI+KGxheW91dEJveCk7Ci0gICAgICAgICAgICBpZiAoIWxheW91dFN0YXRlLmhhc0Zv
cm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWluZXIpKQorICAgICAgICAgICAgaWYgKCFsYXlvdXRT
dGF0ZS5oYXNJbmxpbmVGb3JtYXR0aW5nU3RhdGUobGF5b3V0Q29udGFpbmVyKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIGF1dG8gaXNDb25zaWRlcmVkRW1w
dHkgPSBbJl0gewotICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGRvd25j
YXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0
aW5nU3RhdGUobGF5b3V0Q29udGFpbmVyKSk7CisgICAgICAgICAgICAgICAgYXV0byYgZm9ybWF0
dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUo
bGF5b3V0Q29udGFpbmVyKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogaW5saW5lQ29udGVu
dCA9IGZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5SW5saW5lQ29udGVudCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGZvciAoYXV0byYgbGluZUJveCA6IGlubGluZUNvbnRlbnQtPmxpbmVCb3hlcykg
ewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsaW5lQm94LmlzQ29uc2lkZXJlZEVtcHR5
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eVBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQ
YWludGVyLmNwcAppbmRleCBkZWJiYjU2NDNmNy4uMWQ1OTE2OWM2YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApAQCAt
MTgzLDcgKzE4Myw3IEBAIHN0YXRpYyB2b2lkIHBhaW50U3VidHJlZShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxhCiAgICAgICAgIC8vIE9ubHkg
aW5saW5lIGNvbnRlbnQgZm9yIG5vdy4KICAgICAgICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hl
c0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGNvbnRhaW5l
ciA9IGRvd25jYXN0PExheW91dDo6Q29udGFpbmVyPihsYXlvdXRCb3gpOwotICAgICAgICAgICAg
cGFpbnRJbmxpbmVDb250ZW50KGNvbnRleHQsIGFic29sdXRlRGlzcGxheUJveC50b3BMZWZ0KCks
IGRvd25jYXN0PExheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5lc3Rh
Ymxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb250YWluZXIpKSk7CisgICAgICAgICAgICBwYWludElu
bGluZUNvbnRlbnQoY29udGV4dCwgYWJzb2x1dGVEaXNwbGF5Qm94LnRvcExlZnQoKSwgbGF5b3V0
U3RhdGUuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoY29udGFpbmVyKSk7CiAgICAg
ICAgIH0KICAgICB9OwogCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBQYWludGVyOjpwYWludElu
bGluZUZsb3coY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIEdyYXBoaWNz
Q28KIAogICAgIEFTU0VSVChsYXlvdXRSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQoKSk7CiAKLSAgICBwYWludElubGluZUNvbnRlbnQoY29udGV4dCwgeyB9LCBkb3duY2Fz
dDxMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRG
b3JtYXR0aW5nU3RhdGUobGF5b3V0Um9vdCkpKTsKKyAgICBwYWludElubGluZUNvbnRlbnQoY29u
dGV4dCwgeyB9LCBsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShs
YXlvdXRSb290KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcAppbmRleCBlMzUxYzVlZGM0OC4uNDkzNjRmZTgyMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgYm9v
bCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5lRGVzY2VudE5lZWRzQ29sbGFw
c2luZyhjb25zdCBMaW5lQnVpbGQKICAgICAgICAgfQogICAgICAgICBpZiAocnVuLmlzQm94KCkp
IHsKICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpICYmIGxheW91
dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3Rh
dGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0PENvbnRh
aW5lcj4obGF5b3V0Qm94KSkpOworICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0
ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0
PENvbnRhaW5lcj4obGF5b3V0Qm94KSk7CiAgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCbG9j
a0Jhc2VsaW5lID0gZm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVC
b3hlcy5sYXN0KCkuYmFzZWxpbmUoKTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQmxvY2tC
YXNlbGluZS5kZXNjZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCAwOGU2YzhkYWRiZi4uMDU4N2ZhN2NmNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIExpbmVCdWlsZGVy
OjphbGlnbkNvbnRlbnRWZXJ0aWNhbGx5KCkKICAgICAgICAgICAgICAgICBhdXRvJiBib3hHZW9t
ZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAg
ICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmVPZmZzZXQoKSAtIGFzY2VudCAtIGJv
eEdlb21ldHJ5LmJvcmRlclRvcCgpIC0gYm94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlT3Io
MCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkg
JiYgbGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAg
ICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1h
dHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShkb3du
Y2FzdDxDb250YWluZXI+KGxheW91dEJveCkpKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBmb3Jt
YXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0
YXRlKGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSk7CiAgICAgICAgICAgICAgICAgLy8g
U3BlYyBtYWtlcyB1cyBnZW5lcmF0ZSBhdCBsZWFzdCBvbmUgbGluZSAtZXZlbiBpZiBpdCBpcyBl
bXB0eS4KICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJsb2NrQmFzZWxpbmVPZmZzZXQgPSBm
b3JtYXR0aW5nU3RhdGUuZGlzcGxheUlubGluZUNvbnRlbnQoKS0+bGluZUJveGVzLmxhc3QoKS5i
YXNlbGluZU9mZnNldCgpOwogICAgICAgICAgICAgICAgIC8vIFRoZSBpbmxpbmUtYmxvY2sncyBi
YXNlbGluZSBvZmZzZXQgaXMgcmVsYXRpdmUgdG8gaXRzIGNvbnRlbnQgYm94LiBMZXQncyBjb252
ZXJ0IGl0IHJlbGF0aXZlIHRvIHRoZSBtYXJnaW4gYm94LgpAQCAtNTY1LDcgKzU2NSw3IEBAIHZv
aWQgTGluZUJ1aWxkZXI6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBSdW4mIHJ1
bikKICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZTogewogICAgICAgICAgICAg
aWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkgJiYgbGF5b3V0Qm94LmVzdGFibGlzaGVz
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICAgICAgICAgIC8vIElubGluZS1i
bG9ja3Mgd2l0aCBpbmxpbmUgY29udGVudCBhbHdheXMgaGF2ZSBiYXNlbGluZXMuCi0gICAgICAg
ICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGlu
Z1N0YXRlPihsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0
PENvbnRhaW5lcj4obGF5b3V0Qm94KSkpOworICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRp
bmdTdGF0ZSA9IGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUo
ZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpKTsKICAgICAgICAgICAgICAgICAvLyBTcGVj
IG1ha2VzIHVzIGdlbmVyYXRlIGF0IGxlYXN0IG9uZSBsaW5lIC1ldmVuIGlmIGl0IGlzIGVtcHR5
LgogICAgICAgICAgICAgICAgIGF1dG8mIGxhc3RMaW5lQm94ID0gZm9ybWF0dGluZ1N0YXRlLmRp
c3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hlcy5sYXN0KCk7CiAgICAgICAgICAgICAgICAg
YXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5lID0gbGFzdExpbmVCb3guYmFzZWxpbmUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggMTk5NGE0OGFhNTguLmQ0Yjc2OThhOTRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtNTUsNyArNTUsNyBAQCBM
aW5lTGF5b3V0OjpMaW5lTGF5b3V0KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKICAgICA6
IG1fZmxvdyhmbG93KQogICAgICwgbV9ib3hUcmVlKGZsb3cpCiAgICAgLCBtX2xheW91dFN0YXRl
KG1fZmxvdy5kb2N1bWVudCgpLCByb290TGF5b3V0Qm94KCkpCi0gICAgLCBtX2lubGluZUZvcm1h
dHRpbmdTdGF0ZShkb3duY2FzdDxMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZT4obV9sYXlv
dXRTdGF0ZS5jcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKHJv
b3RMYXlvdXRCb3goKSkpKQorICAgICwgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUobV9sYXlvdXRT
dGF0ZS5lbnN1cmVJbmxpbmVGb3JtYXR0aW5nU3RhdGUocm9vdExheW91dEJveCgpKSkKIHsKICAg
ICBtX2xheW91dFN0YXRlLnNldElzSW50ZWdyYXRlZFJvb3RCb3hGaXJzdENoaWxkKG1fZmxvdy5w
YXJlbnQoKS0+Zmlyc3RDaGlsZCgpID09ICZtX2Zsb3cpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDUz
ZDE3ZDMzNmY3Li42YmY3ODQ4MTkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtMzE1LDcgKzMxNSw3IEBA
IHZvaWQgVHJlZUJ1aWxkZXI6OmJ1aWxkU3ViVHJlZShjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJl
bnRSZW5kZXJlciwgQ29udGFpbmVyJiBwCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogc3Rh
dGljIHZvaWQgb3V0cHV0SW5saW5lUnVucyhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQ29udGFpbmVyJiBpbmxpbmVGb3JtYXR0aW5nUm9v
dCwgdW5zaWduZWQgZGVwdGgpCiB7Ci0gICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0g
ZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZEZv
cm1hdHRpbmdTdGF0ZShpbmxpbmVGb3JtYXR0aW5nUm9vdCkpOworICAgIGF1dG8mIGlubGluZUZv
cm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0
YXRlKGlubGluZUZvcm1hdHRpbmdSb290KTsKICAgICBhdXRvKiBkaXNwbGF5SW5saW5lQ29udGVu
dCA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5SW5saW5lQ29udGVudCgpOwogICAgIGlm
ICghZGlzcGxheUlubGluZUNvbnRlbnQpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>