<?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>201447</bug_id>
          
          <creation_ts>2019-09-03 21:37:49 -0700</creation_ts>
          <short_desc>[LFC] FormattingContext::map* functions are too generic.</short_desc>
          <delta_ts>2019-09-04 12:53:50 -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>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>1567639</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-03 21:37:49 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567640</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-03 21:38:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/55005733&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567753</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-04 08:15:11 -0700</bug_when>
    <thetext>We don&apos;t need such generic mapping function yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567757</commentid>
    <comment_count>3</comment_count>
      <attachid>377982</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-04 08:21:01 -0700</bug_when>
    <thetext>Created attachment 377982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567817</commentid>
    <comment_count>4</comment_count>
      <attachid>377998</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-04 12:03:23 -0700</bug_when>
    <thetext>Created attachment 377998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567832</commentid>
    <comment_count>5</comment_count>
      <attachid>377998</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-04 12:53:48 -0700</bug_when>
    <thetext>Comment on attachment 377998
Patch

Clearing flags on attachment: 377998

Committed r249494: &lt;https://trac.webkit.org/changeset/249494&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567833</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-04 12:53:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377982</attachid>
            <date>2019-09-04 08:21:01 -0700</date>
            <delta_ts>2019-09-04 12:03:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201447-20190904082049.patch</filename>
            <type>text/plain</type>
            <size>19035</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVmNGU0Y2Y4YzM5ZjQ5
MTNhZjZmZDdkZGZjYjllYzJkZjU0YmMwOC4uZTFjNWJiYjMzYmVkMDgzMDhiNzk3YjJiNzdkNDA2
Nzg4MzI4Y2ZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTA5LTA0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gRm9ybWF0dGluZ0Nv
bnRleHQ6Om1hcCogZnVuY3Rpb25zIGFyZSB0b28gZ2VuZXJpYy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTQ0NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTUwMDU3MzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2UgZG9uJ3QgbmVlZCBzdWNoIGdlbmVyaWMgbWFwcGluZyBmdW5jdGlvbnMgeWV0
LiBUaGlzIHBhdGNoIGlzIGFsc28gaW4gcHJlcGFyYXRpb24gZm9yCisgICAgICAgIGFzc2VydGlu
ZyBvbiBmb3JtYXR0aW5nIGNvbnRleHQgZXNjYXBpbmcuIAorCisgICAgICAgICogbGF5b3V0L0Zv
cm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6Om1hcFRvcFRvRm9ybWF0dGluZ0NvbnRleHRSb290IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcExlZnRUb0Zvcm1hdHRpbmdD
b250ZXh0Um9vdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjptYXBSaWdodFRvRm9ybWF0dGluZ0NvbnRleHRSb290IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcExlZnRUb0FuY2VzdG9yIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Om1hcFJpZ2h0VG9BbmNlc3RvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjptYXBCb3hUb0FuY2VzdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcFRv
cFRvQW5jZXN0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nQ29udGV4dDo6bWFwUG9pbnRUb0FuY2VzdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcFBvaW50VG9EZXNj
ZW5kZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIgY29uc3QpOgorICAgICAgICAq
IGxheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6RmxvYXRpbmdDb250ZXh0Ojpwb3NpdGlvbkZvckZsb2F0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0Ojpwb3NpdGlvbkZvckZvcm1hdHRpbmdD
b250ZXh0Um9vdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29u
dGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OmNvbnN0cmFpbnRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjphcHBlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OmFic29sdXRlRGlzcGxheUJveENvb3Jk
aW5hdGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0
OjptYXBUb0Zsb2F0aW5nU3RhdGVSb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6RmxvYXRpbmdDb250ZXh0OjptYXBUb3BUb0Zsb2F0aW5nU3RhdGVSb290IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjptYXBQb2ludEZyb21Gb3Jt
YXR0aW5nQ29udGV4dFJvb3RUb0Zsb2F0aW5nU3RhdGVSb290IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6bWFwVG9Gb3JtYXR0aW5nQ29udGV4dFJvb3QpOiBEZWxldGVkLgorICAg
ICAgICAqIGxheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGFnZS9G
cmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxheW91dFVzaW5n
Rm9ybWF0dGluZ0NvbnRleHQpOgorCiAyMDE5LTA5LTAyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bRmxvYXRpbmddIFJlcGxhY2UgYWxsIExheW91dFN0
YXRlOjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCkgY2FsbHMgd2l0aCBGb3JtYXR0aW5nQ29udGV4
dDo6ZGlzcGxheUJveEZvckxheW91dEJveCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0LmNwcAppbmRleCA0YzZhMmMxZTAzYjczY2ZmMWFhMThjNWJmYTdiYTE4OWE4
Y2Y3NGMwLi4wODI4ZmEyNGY5NDQ2YjFhYzE0NWJjOTY3YWE5OWNmYzgzMWM4NGNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE2MCw2MCArMTYw
LDI3IEBAIHN0YXRpYyBMYXlvdXRVbml0IG1hcEhvcml6b250YWxQb3NpdGlvblRvQW5jZXN0b3Io
Y29uc3QgRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hCiB9CiAKIC8vIEZJWE1FOiB0dXJuIHRoZXNl
IGludG8gdGVtcGxhdGVzLgotTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6bWFwTGVmdFRv
QW5jZXN0b3IoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3Ip
IGNvbnN0CitMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXBUb3BUb0Zvcm1hdHRpbmdD
b250ZXh0Um9vdChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBBU1NFUlQobGF5
b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKLSAgICByZXR1cm4gbWFwSG9yaXpvbnRhbFBvc2l0
aW9uVG9BbmNlc3RvcigqdGhpcywgZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmxl
ZnQoKSwgKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSwgYW5jZXN0b3IpOwotfQotCi1MYXlv
dXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXBSaWdodFRvQW5jZXN0b3IoY29uc3QgQm94JiBs
YXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3IpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7Ci0gICAgcmV0dXJuIG1hcEhvcml6b250YWxQ
b3NpdGlvblRvQW5jZXN0b3IoKnRoaXMsIGRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
KS5yaWdodCgpLCAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpLCBhbmNlc3Rvcik7Ci19Ci0K
LURpc3BsYXk6OkJveCBGb3JtYXR0aW5nQ29udGV4dDo6bWFwQm94VG9BbmNlc3Rvcihjb25zdCBC
b3gmIGxheW91dEJveCwgY29uc3QgQ29udGFpbmVyJiBhbmNlc3RvcikgY29uc3QKLXsKLSAgICBB
U1NFUlQobGF5b3V0Qm94LmlzQ29udGFpbmluZ0Jsb2NrRGVzY2VuZGFudE9mKGFuY2VzdG9yKSk7
Ci0gICAgYXV0byYgZGlzcGxheUJveCA9IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
KTsKLSAgICBhdXRvIHRvcExlZnQgPSBkaXNwbGF5Qm94LnRvcExlZnQoKTsKLSAgICBmb3IgKGF1
dG8qIGNvbnRhaW5pbmdCbG9jayA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsgY29udGFp
bmluZ0Jsb2NrICYmIGNvbnRhaW5pbmdCbG9jayAhPSAmYW5jZXN0b3I7IGNvbnRhaW5pbmdCbG9j
ayA9IGNvbnRhaW5pbmdCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgIHRvcExlZnQu
bW92ZUJ5KGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5pbmdCbG9jaykudG9wTGVmdCgp
KTsKLQotICAgIGF1dG8gbWFwcGVkRGlzcGxheUJveCA9IERpc3BsYXk6OkJveChkaXNwbGF5Qm94
KTsKLSAgICBtYXBwZWREaXNwbGF5Qm94LnNldFRvcExlZnQodG9wTGVmdCk7Ci0gICAgcmV0dXJu
IG1hcHBlZERpc3BsYXlCb3g7Ci19Ci0KLUxheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Om1h
cFRvcFRvQW5jZXN0b3IoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgYW5j
ZXN0b3IpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0NvbnRhaW5pbmdCbG9ja0Rl
c2NlbmRhbnRPZihhbmNlc3RvcikpOworICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0Um9vdCA9
IGRvd25jYXN0PENvbnRhaW5lcj4ocm9vdCgpKTsKKyAgICBBU1NFUlQobGF5b3V0Qm94LmlzQ29u
dGFpbmluZ0Jsb2NrRGVzY2VuZGFudE9mKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwogICAgIGF1
dG8gdG9wID0gZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLnRvcCgpOwotICAgIGZv
ciAoYXV0byogY29udGFpbmVyID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBjb250YWlu
ZXIgJiYgY29udGFpbmVyICE9ICZhbmNlc3RvcjsgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250
YWluaW5nQmxvY2soKSkKKyAgICBmb3IgKGF1dG8qIGNvbnRhaW5lciA9IGxheW91dEJveC5jb250
YWluaW5nQmxvY2soKTsgY29udGFpbmVyICYmIGNvbnRhaW5lciAhPSAmZm9ybWF0dGluZ0NvbnRl
eHRSb290OyBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpKQogICAgICAg
ICB0b3AgKz0gZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmVyKS50b3AoKTsKICAgICBy
ZXR1cm4gdG9wOwogfQogCi1Qb2ludCBGb3JtYXR0aW5nQ29udGV4dDo6bWFwUG9pbnRUb0FuY2Vz
dG9yKFBvaW50IHBvc2l0aW9uLCBjb25zdCBDb250YWluZXImIGZyb20sIGNvbnN0IENvbnRhaW5l
ciYgdG8pIGNvbnN0CitMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXBMZWZ0VG9Gb3Jt
YXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7Ci0gICAgaWYg
KCZmcm9tID09ICZ0bykKLSAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwotICAgIEFTU0VSVChmcm9t
LmlzQ29udGFpbmluZ0Jsb2NrRGVzY2VuZGFudE9mKHRvKSk7Ci0gICAgYXV0byBtYXBwZWRQb3Np
dGlvbiA9IHBvc2l0aW9uOwotICAgIGZvciAoYXV0byogY29udGFpbmVyID0gJmZyb207IGNvbnRh
aW5lciAmJiBjb250YWluZXIgIT0gJnRvOyBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5p
bmdCbG9jaygpKQotICAgICAgICBtYXBwZWRQb3NpdGlvbi5tb3ZlQnkoZGlzcGxheUJveEZvckxh
eW91dEJveCgqY29udGFpbmVyKS50b3BMZWZ0KCkpOwotICAgIHJldHVybiBtYXBwZWRQb3NpdGlv
bjsKKyAgICBBU1NFUlQobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICByZXR1cm4g
bWFwSG9yaXpvbnRhbFBvc2l0aW9uVG9BbmNlc3RvcigqdGhpcywgZGlzcGxheUJveEZvckxheW91
dEJveChsYXlvdXRCb3gpLmxlZnQoKSwgKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSwgZG93
bmNhc3Q8Q29udGFpbmVyPihyb290KCkpKTsKIH0KIAotUG9pbnQgRm9ybWF0dGluZ0NvbnRleHQ6
Om1hcFBvaW50VG9EZXNjZW5kZW50KFBvaW50IHBvaW50LCBjb25zdCBDb250YWluZXImIGZyb20s
IGNvbnN0IENvbnRhaW5lciYgdG8pIGNvbnN0CitMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0
OjptYXBSaWdodFRvRm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBj
b25zdAogewotICAgIC8vICJwb2ludCIgaXMgaW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRo
ZSAiZnJvbSIgY29udGFpbmVyLgotICAgIGlmICgmZnJvbSA9PSAmdG8pCi0gICAgICAgIHJldHVy
biBwb2ludDsKLSAgICBBU1NFUlQodG8uaXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YoZnJv
bSkpOwotICAgIGZvciAoYXV0byogY29udGFpbmVyID0gJnRvOyBjb250YWluZXIgJiYgY29udGFp
bmVyICE9ICZmcm9tOyBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpKQot
ICAgICAgICBwb2ludC5tb3ZlQnkoZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmVyKS50
b3BMZWZ0KCkpOwotICAgIHJldHVybiBwb2ludDsKKyAgICBBU1NFUlQobGF5b3V0Qm94LmNvbnRh
aW5pbmdCbG9jaygpKTsKKyAgICByZXR1cm4gbWFwSG9yaXpvbnRhbFBvc2l0aW9uVG9BbmNlc3Rv
cigqdGhpcywgZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLnJpZ2h0KCksICpsYXlv
dXRCb3guY29udGFpbmluZ0Jsb2NrKCksIGRvd25jYXN0PENvbnRhaW5lcj4ocm9vdCgpKSk7CiB9
CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dC5oCmluZGV4IDZkZTI4MjViMTUzN2Y0MWYyYmYyMGI2YjA2ODRiZGU4ZmI0ZjFkMTguLjMxMzdl
MTYzODBhNTBmNmFiMmVjMWNkYmI5NTVlMTQzYWJlN2EzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCkBAIC02MSwxMiArNjEsOSBAQCBwdWJsaWM6CiAgICAg
fTsKICAgICB2aXJ0dWFsIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzKCkgPSAwOwogCi0gICAgRGlzcGxheTo6Qm94IG1hcEJveFRvQW5j
ZXN0b3IoY29uc3QgQm94JiwgY29uc3QgQ29udGFpbmVyJiBhbmNlc3RvcikgY29uc3Q7Ci0gICAg
TGF5b3V0VW5pdCBtYXBUb3BUb0FuY2VzdG9yKGNvbnN0IEJveCYsIGNvbnN0IENvbnRhaW5lciYg
YW5jZXN0b3IpIGNvbnN0OwotICAgIExheW91dFVuaXQgbWFwTGVmdFRvQW5jZXN0b3IoY29uc3Qg
Qm94JiwgY29uc3QgQ29udGFpbmVyJiBhbmNlc3RvcikgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBt
YXBSaWdodFRvQW5jZXN0b3IoY29uc3QgQm94JiwgY29uc3QgQ29udGFpbmVyJiBhbmNlc3Rvcikg
Y29uc3Q7Ci0gICAgUG9pbnQgbWFwUG9pbnRUb0FuY2VzdG9yKFBvaW50LCBjb25zdCBDb250YWlu
ZXImIGZyb20sIGNvbnN0IENvbnRhaW5lciYgdG8pIGNvbnN0OwotICAgIFBvaW50IG1hcFBvaW50
VG9EZXNjZW5kZW50KFBvaW50LCBjb25zdCBDb250YWluZXImIGZyb20sIGNvbnN0IENvbnRhaW5l
ciYgdG8pIGNvbnN0OworICAgIExheW91dFVuaXQgbWFwVG9wVG9Gb3JtYXR0aW5nQ29udGV4dFJv
b3QoY29uc3QgQm94JikgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBtYXBMZWZ0VG9Gb3JtYXR0aW5n
Q29udGV4dFJvb3QoY29uc3QgQm94JikgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBtYXBSaWdodFRv
Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiByb290KCkuZXN0YWJsaXNoZXNC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7IH0KICAgICBib29sIGlzSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQoKSBjb25zdCB7IHJldHVybiByb290KCkuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA5ZDgyNTY4
NDMzZWM2ZDM1MDRkNDY4Mzk2NTNjNDkxNzAzYmMwNDI0Li5kYWExNzE2YTA0NzZhNTgzNTM4NmZm
M2Q0NjI3MmE2NDU0NGFkYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAg
LTEyNyw3ICsxMjcsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoYwogICAgICAgICByZXR1cm4g
eyB9OwogICAgIC8vIFZlcnRpY2FsIHN0YXRpYyBwb3NpdGlvbiBpcyBub3QgY29tcHV0ZWQgeWV0
LCBzbyBsZXQncyBqdXN0IGVzdGltYXRlIGl0IGZvciBub3cuCiAgICAgYXV0byYgZm9ybWF0dGlu
Z1Jvb3QgPSBkb3duY2FzdDxDb250YWluZXI+KHJvb3QoKSk7Ci0gICAgYXV0byB2ZXJ0aWNhbFBv
c2l0aW9uID0gbWFwVG9wVG9BbmNlc3RvcihsYXlvdXRCb3gsIGZvcm1hdHRpbmdSb290KTsKKyAg
ICBhdXRvIHZlcnRpY2FsUG9zaXRpb24gPSBtYXBUb3BUb0Zvcm1hdHRpbmdDb250ZXh0Um9vdChs
YXlvdXRCb3gpOwogICAgIGF1dG8gY29uc3RyYWludHMgPSBmbG9hdGluZ0NvbnRleHQuY29uc3Ry
YWludHMoeyB2ZXJ0aWNhbFBvc2l0aW9uIH0pOwogICAgIGlmICghY29uc3RyYWludHMubGVmdCAm
JiAhY29uc3RyYWludHMucmlnaHQpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMzksOCArMTM5
LDggQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dXNlZEF2
YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGMKICAgICBMYXlvdXRVbml0IGNvbnRhaW5pbmdC
bG9ja1JpZ2h0ID0gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5yaWdodCgpOwogICAgIGlmICgm
Y29udGFpbmluZ0Jsb2NrICE9ICZmb3JtYXR0aW5nUm9vdCkgewogICAgICAgICAvLyBNb3ZlIGNv
bnRhaW5pbmcgYmxvY2sgbGVmdC9yaWdodCB0byB0aGUgcm9vdCdzIGNvb3JkaW5hdGUgc3lzdGVt
LgotICAgICAgICBjb250YWluaW5nQmxvY2tMZWZ0ID0gbWFwTGVmdFRvQW5jZXN0b3IoY29udGFp
bmluZ0Jsb2NrLCBmb3JtYXR0aW5nUm9vdCk7Ci0gICAgICAgIGNvbnRhaW5pbmdCbG9ja1JpZ2h0
ID0gbWFwUmlnaHRUb0FuY2VzdG9yKGNvbnRhaW5pbmdCbG9jaywgZm9ybWF0dGluZ1Jvb3QpOwor
ICAgICAgICBjb250YWluaW5nQmxvY2tMZWZ0ID0gbWFwTGVmdFRvRm9ybWF0dGluZ0NvbnRleHRS
b290KGNvbnRhaW5pbmdCbG9jayk7CisgICAgICAgIGNvbnRhaW5pbmdCbG9ja1JpZ2h0ID0gbWFw
UmlnaHRUb0Zvcm1hdHRpbmdDb250ZXh0Um9vdChjb250YWluaW5nQmxvY2spOwogICAgIH0KICAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hMZWZ0ID0gY29udGFpbmluZ0Jsb2NrTGVm
dCArIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guYm9yZGVyTGVmdCgpICsgY29udGFpbmluZ0Js
b2NrRGlzcGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBjb250YWlu
aW5nQmxvY2tDb250ZW50Qm94UmlnaHQgPSBjb250YWluaW5nQmxvY2tSaWdodCAtIGNvbnRhaW5p
bmdCbG9ja0Rpc3BsYXlCb3guYm9yZGVyUmlnaHQoKSArIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlC
b3gucGFkZGluZ1JpZ2h0KCkudmFsdWVPcigwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAppbmRleCA1YTcxNGRiZjBiNDQ1NmFlZTJhODFi
ZjZhOGFhZTIzMGQ5ZjBhNjU1Li40NWIzMTcwOTBkYTdmNTQzYTkyNDU4YzI4MzNiZjEzZmFhNTI4
MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRl
eHQuY3BwCkBAIC0xNTAsMjQgKzE1MCwxMSBAQCBzdGF0aWMgYm9vbCBhcmVGbG9hdHNIb3Jpem9u
dGFsbHlTb3J0ZWQoY29uc3QgRmxvYXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSkKIH0KICNlbmRp
ZgogCi1zdHJ1Y3QgQWJzb2x1dGVDb29yZGluYXRlVmFsdWVzRm9yRmxvYXRBdm9pZGVyIHsKK3N0
cnVjdCBGbG9hdGluZ0NvbnRleHQ6OkFic29sdXRlQ29vcmRpbmF0ZVZhbHVlc0ZvckZsb2F0QXZv
aWRlciB7CiAgICAgRGlzcGxheTo6Qm94IGRpc3BsYXlCb3g7CiAgICAgTGF5b3V0UG9pbnQgY29u
dGFpbmluZ0Jsb2NrVG9wTGVmdDsKICAgICBIb3Jpem9udGFsRWRnZXMgY29udGFpbmluZ0Jsb2Nr
Q29udGVudEJveDsKIH07Ci1zdGF0aWMgQWJzb2x1dGVDb29yZGluYXRlVmFsdWVzRm9yRmxvYXRB
dm9pZGVyIG1hcFRvRm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBj
b25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgRm9ybWF0dGluZ0Nv
bnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KQotewotICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9
ICpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgYXV0byBkaXNwbGF5Qm94ID0gZm9y
bWF0dGluZ0NvbnRleHQubWFwQm94VG9BbmNlc3RvcihsYXlvdXRCb3gsIGZvcm1hdHRpbmdDb250
ZXh0Um9vdCk7Ci0KLSAgICBpZiAoJmNvbnRhaW5pbmdCbG9jayA9PSAmZm9ybWF0dGluZ0NvbnRl
eHRSb290KSB7Ci0gICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9IGZvcm1h
dHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKTsKLSAg
ICAgICAgcmV0dXJuIHsgZGlzcGxheUJveCwgeyB9LCB7ICBjb250YWluaW5nQmxvY2tEaXNwbGF5
Qm94LmNvbnRlbnRCb3hMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guY29udGVudEJv
eFJpZ2h0KCkgfSB9OwotICAgIH0KLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0Fic29sdXRlRGlz
cGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0Lm1hcEJveFRvQW5jZXN0b3IoY29udGFpbmluZ0Js
b2NrLCBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrTGVm
dCA9IGNvbnRhaW5pbmdCbG9ja0Fic29sdXRlRGlzcGxheUJveC5sZWZ0KCk7Ci0gICAgcmV0dXJu
IHsgZGlzcGxheUJveCwgY29udGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LnRvcExlZnQo
KSwgeyBjb250YWluaW5nQmxvY2tMZWZ0ICsgY29udGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5
Qm94LmNvbnRlbnRCb3hMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja0xlZnQgKyBjb250YWluaW5nQmxv
Y2tBYnNvbHV0ZURpc3BsYXlCb3guY29udGVudEJveFJpZ2h0KCkgfSB9OwotfQogCiBGbG9hdGlu
Z0NvbnRleHQ6OkZsb2F0aW5nQ29udGV4dChjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0
dGluZ0NvbnRleHQsIEZsb2F0aW5nU3RhdGUmIGZsb2F0aW5nU3RhdGUpCiAgICAgOiBtX2Zvcm1h
dHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250ZXh0KQpAQCAtMTk4LDcgKzE4NSw3IEBAIFBvaW50
IEZsb2F0aW5nQ29udGV4dDo6cG9zaXRpb25Gb3JGbG9hdChjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKICAgICB9CiAKICAgICAvLyBGaW5kIHRoZSB0b3AgbW9zdCBwb3NpdGlvbiB3aGVyZSB0
aGUgZmxvYXQgYm94IGZpdHMuCi0gICAgYXV0byBhYnNvbHV0ZURpc3BsYXlCb3hDb29yZGluYXRl
cyA9IG1hcFRvRm9ybWF0dGluZ0NvbnRleHRSb290KGxheW91dEJveCwgZG93bmNhc3Q8Q29udGFp
bmVyPihtX2Zsb2F0aW5nU3RhdGUucm9vdCgpKSwgZm9ybWF0dGluZ0NvbnRleHQoKSk7CisgICAg
YXV0byBhYnNvbHV0ZURpc3BsYXlCb3hDb29yZGluYXRlcyA9IHRoaXMtPmFic29sdXRlRGlzcGxh
eUJveENvb3JkaW5hdGVzKGxheW91dEJveCk7CiAgICAgCiAgICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gcHJldmlvdXNGbG9hdEFic29sdXRlVG9wOwogICAgIGlmICghaXNFbXB0eSgpKQpAQCAtMjE4
LDcgKzIwNSw3IEBAIE9wdGlvbmFsPFBvaW50PiBGbG9hdGluZ0NvbnRleHQ6OnBvc2l0aW9uRm9y
Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYgbGF5CiAgICAgaWYgKGlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gYWJzb2x1dGVEaXNwbGF5Qm94Q29vcmRp
bmF0ZXMgPSBtYXBUb0Zvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRCb3gsIGRvd25jYXN0PENv
bnRhaW5lcj4obV9mbG9hdGluZ1N0YXRlLnJvb3QoKSksIGZvcm1hdHRpbmdDb250ZXh0KCkpOwor
ICAgIGF1dG8gYWJzb2x1dGVEaXNwbGF5Qm94Q29vcmRpbmF0ZXMgPSB0aGlzLT5hYnNvbHV0ZURp
c3BsYXlCb3hDb29yZGluYXRlcyhsYXlvdXRCb3gpOwogICAgIGF1dG8gZmxvYXRBdm9pZGVyID0g
RmxvYXRBdm9pZGVyIHsgbGF5b3V0Qm94LCBhYnNvbHV0ZURpc3BsYXlCb3hDb29yZGluYXRlcy5k
aXNwbGF5Qm94LCBhYnNvbHV0ZURpc3BsYXlCb3hDb29yZGluYXRlcy5jb250YWluaW5nQmxvY2tU
b3BMZWZ0LCBhYnNvbHV0ZURpc3BsYXlCb3hDb29yZGluYXRlcy5jb250YWluaW5nQmxvY2tDb250
ZW50Qm94IH07CiAgICAgZmluZFBvc2l0aW9uRm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGZsb2F0
QXZvaWRlcik7CiAgICAgcmV0dXJuIHsgZmxvYXRBdm9pZGVyLnJlY3RJbkNvbnRhaW5pbmdCbG9j
aygpLnRvcExlZnQoKSB9OwpAQCAtMjQzLDcgKzIzMCw3IEBAIEZsb2F0aW5nQ29udGV4dDo6Q2xl
YXJhbmNlUG9zaXRpb24gRmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFy
YW5jCiAgICAgICAgIC8vCiAgICAgICAgIC8vIDEuIFRoZSBhbW91bnQgbmVjZXNzYXJ5IHRvIHBs
YWNlIHRoZSBib3JkZXIgZWRnZSBvZiB0aGUgYmxvY2sgZXZlbiB3aXRoIHRoZSBib3R0b20gb3V0
ZXIgZWRnZSBvZiB0aGUgbG93ZXN0IGZsb2F0IHRoYXQgaXMgdG8gYmUgY2xlYXJlZC4KICAgICAg
ICAgLy8gMi4gVGhlIGFtb3VudCBuZWNlc3NhcnkgdG8gcGxhY2UgdGhlIHRvcCBib3JkZXIgZWRn
ZSBvZiB0aGUgYmxvY2sgYXQgaXRzIGh5cG90aGV0aWNhbCBwb3NpdGlvbi4KLSAgICAgICAgYXV0
byByb290UmVsYXRpdmVUb3AgPSBmb3JtYXR0aW5nQ29udGV4dCgpLm1hcFRvcFRvQW5jZXN0b3Io
bGF5b3V0Qm94LCBkb3duY2FzdDxDb250YWluZXI+KG1fZmxvYXRpbmdTdGF0ZS5yb290KCkpKTsK
KyAgICAgICAgYXV0byByb290UmVsYXRpdmVUb3AgPSBtYXBUb3BUb0Zsb2F0aW5nU3RhdGVSb290
KGxheW91dEJveCk7CiAgICAgICAgIGF1dG8gY2xlYXJhbmNlID0gKmZsb2F0Qm90dG9tIC0gcm9v
dFJlbGF0aXZlVG9wOwogICAgICAgICBpZiAoY2xlYXJhbmNlIDw9IDApCiAgICAgICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtMjcxLDcgKzI1OCw3IEBAIEZsb2F0aW5nQ29udGV4dDo6Q2xlYXJhbmNl
UG9zaXRpb24gRmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jCiAg
ICAgICAgIGlmIChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkgPT0gJm1fZmxvYXRpbmdTdGF0
ZS5yb290KCkpCiAgICAgICAgICAgICByZXR1cm4geyBQb3NpdGlvbiB7IHJvb3RSZWxhdGl2ZVRv
cCB9LCBjbGVhcmFuY2UgfTsKIAotICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1Jvb3RSZWxh
dGl2ZVRvcCA9IGZvcm1hdHRpbmdDb250ZXh0KCkubWFwVG9wVG9BbmNlc3RvcigqbGF5b3V0Qm94
LmNvbnRhaW5pbmdCbG9jaygpLCBkb3duY2FzdDxDb250YWluZXI+KG1fZmxvYXRpbmdTdGF0ZS5y
b290KCkpKTsKKyAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tSb290UmVsYXRpdmVUb3AgPSBt
YXBUb3BUb0Zsb2F0aW5nU3RhdGVSb290KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwog
ICAgICAgICByZXR1cm4geyBQb3NpdGlvbiB7IHJvb3RSZWxhdGl2ZVRvcCAtIGNvbnRhaW5pbmdC
bG9ja1Jvb3RSZWxhdGl2ZVRvcCB9LCBjbGVhcmFuY2UgfTsKICAgICB9OwogCkBAIC0zMDIsNyAr
Mjg5LDcgQEAgRmxvYXRpbmdDb250ZXh0OjpDb25zdHJhaW50cyBGbG9hdGluZ0NvbnRleHQ6OmNv
bnN0cmFpbnRzKFBvc2l0aW9uSW5Db250ZXh0Um9vdAogICAgIExheW91dFNpemUgYWRqdXN0aW5n
RGVsdGE7CiAKICAgICBpZiAoY29vcmRpbmF0ZU1hcHBpbmdJc1JlcXVpcmVkKSB7Ci0gICAgICAg
IGFkanVzdGVkUG9zaXRpb24gPSBmb3JtYXR0aW5nQ29udGV4dCgpLm1hcFBvaW50VG9BbmNlc3Rv
cihhZGp1c3RlZFBvc2l0aW9uLCByb290KCksIGRvd25jYXN0PENvbnRhaW5lcj4oZmxvYXRpbmdT
dGF0ZSgpLnJvb3QoKSkpOworICAgICAgICBhZGp1c3RlZFBvc2l0aW9uID0gbWFwUG9pbnRGcm9t
Rm9ybWF0dGluZ0NvbnRleHRSb290VG9GbG9hdGluZ1N0YXRlUm9vdChhZGp1c3RlZFBvc2l0aW9u
KTsKICAgICAgICAgYWRqdXN0aW5nRGVsdGEgPSB7IGFkanVzdGVkUG9zaXRpb24ueCwgYWRqdXN0
ZWRQb3NpdGlvbi55IC0gdmVydGljYWxQb3NpdGlvbiB9OwogICAgIH0KIApAQCAtMzQyLDcgKzMy
OSw3IEBAIEZsb2F0aW5nQ29udGV4dDo6Q29uc3RyYWludHMgRmxvYXRpbmdDb250ZXh0Ojpjb25z
dHJhaW50cyhQb3NpdGlvbkluQ29udGV4dFJvb3QKIAogdm9pZCBGbG9hdGluZ0NvbnRleHQ6OmFw
cGVuZChjb25zdCBCb3gmIGZsb2F0Qm94KQogewotICAgIGZsb2F0aW5nU3RhdGUoKS5hcHBlbmQo
RmxvYXRpbmdTdGF0ZTo6RmxvYXRJdGVtIHsgZmxvYXRCb3gsIGZvcm1hdHRpbmdDb250ZXh0KCku
bWFwQm94VG9BbmNlc3RvcihmbG9hdEJveCwgZG93bmNhc3Q8Q29udGFpbmVyPihmbG9hdGluZ1N0
YXRlKCkucm9vdCgpKSkgfSk7CisgICAgZmxvYXRpbmdTdGF0ZSgpLmFwcGVuZChGbG9hdGluZ1N0
YXRlOjpGbG9hdEl0ZW0geyBmbG9hdEJveCwgbWFwVG9GbG9hdGluZ1N0YXRlUm9vdChmbG9hdEJv
eCkgfSk7CiB9CiAKIHZvaWQgRmxvYXRpbmdDb250ZXh0OjpyZW1vdmUoY29uc3QgQm94JiBmbG9h
dEJveCkKQEAgLTQzMiw2ICs0MTksNTQgQEAgdm9pZCBGbG9hdGluZ0NvbnRleHQ6OmZpbmRQb3Np
dGlvbkZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChGbG9hdEF2b2lkZXImIGZsb2F0QXYKICAgICB9
CiB9CiAKK0Zsb2F0aW5nQ29udGV4dDo6QWJzb2x1dGVDb29yZGluYXRlVmFsdWVzRm9yRmxvYXRB
dm9pZGVyIEZsb2F0aW5nQ29udGV4dDo6YWJzb2x1dGVEaXNwbGF5Qm94Q29vcmRpbmF0ZXMoY29u
c3QgQm94JiBmbG9hdEF2b2lkZXIpIGNvbnN0Cit7CisgICAgYXV0byYgY29udGFpbmluZ0Jsb2Nr
ID0gKmZsb2F0QXZvaWRlci5jb250YWluaW5nQmxvY2soKTsKKyAgICBhdXRvIGRpc3BsYXlCb3gg
PSBtYXBUb0Zsb2F0aW5nU3RhdGVSb290KGZsb2F0QXZvaWRlcik7CisKKyAgICBpZiAoJmNvbnRh
aW5pbmdCbG9jayA9PSAmZmxvYXRpbmdTdGF0ZSgpLnJvb3QoKSkgeworICAgICAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgcmV0dXJuIHsgZGlzcGxheUJv
eCwgeyB9LCB7ICBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0KCksIGNv
bnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guY29udGVudEJveFJpZ2h0KCkgfSB9OworICAgIH0KKyAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja0Fic29sdXRlRGlzcGxheUJveCA9IG1hcFRvRmxvYXRpbmdT
dGF0ZVJvb3QoY29udGFpbmluZ0Jsb2NrKTsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0xlZnQg
PSBjb250YWluaW5nQmxvY2tBYnNvbHV0ZURpc3BsYXlCb3gubGVmdCgpOworICAgIHJldHVybiB7
IGRpc3BsYXlCb3gsIGNvbnRhaW5pbmdCbG9ja0Fic29sdXRlRGlzcGxheUJveC50b3BMZWZ0KCks
IHsgY29udGFpbmluZ0Jsb2NrTGVmdCArIGNvbnRhaW5pbmdCbG9ja0Fic29sdXRlRGlzcGxheUJv
eC5jb250ZW50Qm94TGVmdCgpLCBjb250YWluaW5nQmxvY2tMZWZ0ICsgY29udGFpbmluZ0Jsb2Nr
QWJzb2x1dGVEaXNwbGF5Qm94LmNvbnRlbnRCb3hSaWdodCgpIH0gfTsKK30KKworRGlzcGxheTo6
Qm94IEZsb2F0aW5nQ29udGV4dDo6bWFwVG9GbG9hdGluZ1N0YXRlUm9vdChjb25zdCBCb3gmIGZs
b2F0Qm94KSBjb25zdAoreworICAgIGF1dG8mIGZsb2F0aW5nU3RhdGVSb290ID0gZmxvYXRpbmdT
dGF0ZSgpLnJvb3QoKTsKKyAgICBhdXRvJiBkaXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQo
KS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGZsb2F0Qm94KTsKKyAgICBhdXRvIHRvcExlZnQgPSBk
aXNwbGF5Qm94LnRvcExlZnQoKTsKKyAgICBmb3IgKGF1dG8qIGNvbnRhaW5pbmdCbG9jayA9IGZs
b2F0Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBjb250YWluaW5nQmxvY2sgJiYgY29udGFpbmluZ0Js
b2NrICE9ICZmbG9hdGluZ1N0YXRlUm9vdDsgY29udGFpbmluZ0Jsb2NrID0gY29udGFpbmluZ0Js
b2NrLT5jb250YWluaW5nQmxvY2soKSkKKyAgICAgICAgdG9wTGVmdC5tb3ZlQnkoZm9ybWF0dGlu
Z0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluaW5nQmxvY2spLnRvcExl
ZnQoKSk7CisKKyAgICBhdXRvIG1hcHBlZERpc3BsYXlCb3ggPSBEaXNwbGF5OjpCb3goZGlzcGxh
eUJveCk7CisgICAgbWFwcGVkRGlzcGxheUJveC5zZXRUb3BMZWZ0KHRvcExlZnQpOworICAgIHJl
dHVybiBtYXBwZWREaXNwbGF5Qm94OworfQorCitMYXlvdXRVbml0IEZsb2F0aW5nQ29udGV4dDo6
bWFwVG9wVG9GbG9hdGluZ1N0YXRlUm9vdChjb25zdCBCb3gmIGZsb2F0Qm94KSBjb25zdAorewor
ICAgIGF1dG8mIGZsb2F0aW5nU3RhdGVSb290ID0gZmxvYXRpbmdTdGF0ZSgpLnJvb3QoKTsKKyAg
ICBhdXRvIHRvcCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZGlzcGxheUJveEZvckxheW91dEJveChm
bG9hdEJveCkudG9wKCk7CisgICAgZm9yIChhdXRvKiBjb250YWluZXIgPSBmbG9hdEJveC5jb250
YWluaW5nQmxvY2soKTsgY29udGFpbmVyICYmIGNvbnRhaW5lciAhPSAmZmxvYXRpbmdTdGF0ZVJv
b3Q7IGNvbnRhaW5lciA9IGNvbnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCkpCisgICAgICAgIHRv
cCArPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5l
cikudG9wKCk7CisgICAgcmV0dXJuIHRvcDsKK30KKworUG9pbnQgRmxvYXRpbmdDb250ZXh0Ojpt
YXBQb2ludEZyb21Gb3JtYXR0aW5nQ29udGV4dFJvb3RUb0Zsb2F0aW5nU3RhdGVSb290KFBvaW50
IHBvc2l0aW9uKSBjb25zdAoreworICAgIGF1dG8mIGZyb20gPSBmb3JtYXR0aW5nQ29udGV4dCgp
LnJvb3QoKTsKKyAgICBhdXRvJiB0byA9IGZsb2F0aW5nU3RhdGUoKS5yb290KCk7CisgICAgaWYg
KCZmcm9tID09ICZ0bykKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgIGF1dG8gbWFwcGVk
UG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICBmb3IgKGF1dG8qIGNvbnRhaW5lciA9ICZmcm9tOyBj
b250YWluZXIgJiYgY29udGFpbmVyICE9ICZ0bzsgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250
YWluaW5nQmxvY2soKSkKKyAgICAgICAgbWFwcGVkUG9zaXRpb24ubW92ZUJ5KGZvcm1hdHRpbmdD
b250ZXh0KCkuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmVyKS50b3BMZWZ0KCkpOwor
ICAgIHJldHVybiBtYXBwZWRQb3NpdGlvbjsKK30KKwogRmxvYXRQYWlyOjpGbG9hdFBhaXIoY29u
c3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0JiBmbG9hdHMpCiAgICAgOiBtX2Zsb2F0cyhmbG9h
dHMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5n
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQu
aAppbmRleCAwOTFiNjkzZTZkMWZmZDVkODdkMTE3NWEzNGZkMTUxYzY3MDczYjBjLi5iOWJiZjk1
NWJjN2FiYzlmODIwNTNmNDkyMmVhYjZjMjA2YWE2MDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmgKQEAgLTc4LDYgKzc4LDEyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBmaW5kUG9zaXRpb25Gb3JGbG9hdEJveChGbG9hdEJveCYpIGNvbnN0Owog
ICAgIHZvaWQgZmluZFBvc2l0aW9uRm9yRm9ybWF0dGluZ0NvbnRleHRSb290KEZsb2F0QXZvaWRl
ciYpIGNvbnN0OwogCisgICAgc3RydWN0IEFic29sdXRlQ29vcmRpbmF0ZVZhbHVlc0ZvckZsb2F0
QXZvaWRlcjsKKyAgICBBYnNvbHV0ZUNvb3JkaW5hdGVWYWx1ZXNGb3JGbG9hdEF2b2lkZXIgYWJz
b2x1dGVEaXNwbGF5Qm94Q29vcmRpbmF0ZXMoY29uc3QgQm94JikgY29uc3Q7CisgICAgRGlzcGxh
eTo6Qm94IG1hcFRvRmxvYXRpbmdTdGF0ZVJvb3QoY29uc3QgQm94JikgY29uc3Q7CisgICAgTGF5
b3V0VW5pdCBtYXBUb3BUb0Zsb2F0aW5nU3RhdGVSb290KGNvbnN0IEJveCYpIGNvbnN0OworICAg
IFBvaW50IG1hcFBvaW50RnJvbUZvcm1hdHRpbmdDb250ZXh0Um9vdFRvRmxvYXRpbmdTdGF0ZVJv
b3QoUG9pbnQpIGNvbnN0OworCiAgICAgY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmIG1fZm9ybWF0
dGluZ0NvbnRleHQ7CiAgICAgRmxvYXRpbmdTdGF0ZSYgbV9mbG9hdGluZ1N0YXRlOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377998</attachid>
            <date>2019-09-04 12:03:23 -0700</date>
            <delta_ts>2019-09-04 12:53:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201447-20190904120323.patch</filename>
            <type>text/plain</type>
            <size>18956</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmUwNGVhY2RlZTI0YmYz
ZGI4NzA4MTMxZWU1MjEwOGU4NTg5MzA2YS4uMTViNjVhMDJmZWUxMjM5MjJmOWMwMzM1MGI2NWRl
NjkzMGYzNzMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTA5LTA0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gRm9ybWF0dGluZ0Nv
bnRleHQ6Om1hcCogZnVuY3Rpb25zIGFyZSB0b28gZ2VuZXJpYy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTQ0NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTUwMDU3MzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisK
KyAgICAgICAgV2UgZG9uJ3QgbmVlZCBzdWNoIGdlbmVyaWMgbWFwcGluZyBmdW5jdGlvbnMgeWV0
LiBUaGlzIHBhdGNoIGlzIGFsc28gaW4gcHJlcGFyYXRpb24gZm9yCisgICAgICAgIGFzc2VydGlu
ZyBvbiBmb3JtYXR0aW5nIGNvbnRleHQgZXNjYXBpbmcuIAorCisgICAgICAgICogbGF5b3V0L0Zv
cm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6Om1hcFRvcFRvRm9ybWF0dGluZ0NvbnRleHRSb290IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcExlZnRUb0Zvcm1hdHRpbmdD
b250ZXh0Um9vdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjptYXBSaWdodFRvRm9ybWF0dGluZ0NvbnRleHRSb290IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcExlZnRUb0FuY2VzdG9yIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Om1hcFJpZ2h0VG9BbmNlc3RvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjptYXBCb3hUb0FuY2VzdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcFRv
cFRvQW5jZXN0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nQ29udGV4dDo6bWFwUG9pbnRUb0FuY2VzdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcFBvaW50VG9EZXNj
ZW5kZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIgY29uc3QpOgorICAgICAgICAq
IGxheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6RmxvYXRpbmdDb250ZXh0Ojpwb3NpdGlvbkZvckZsb2F0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0Ojpwb3NpdGlvbkZvckZvcm1hdHRpbmdD
b250ZXh0Um9vdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29u
dGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OmNvbnN0cmFpbnRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjphcHBlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OmFic29sdXRlRGlzcGxheUJveENvb3Jk
aW5hdGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0
OjptYXBUb0Zsb2F0aW5nU3RhdGVSb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6RmxvYXRpbmdDb250ZXh0OjptYXBUb3BUb0Zsb2F0aW5nU3RhdGVSb290IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjptYXBQb2ludEZyb21Gb3Jt
YXR0aW5nQ29udGV4dFJvb3RUb0Zsb2F0aW5nU3RhdGVSb290IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6bWFwVG9Gb3JtYXR0aW5nQ29udGV4dFJvb3QpOiBEZWxldGVkLgorICAg
ICAgICAqIGxheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGFnZS9G
cmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxheW91dFVzaW5n
Rm9ybWF0dGluZ0NvbnRleHQpOgorCiAyMDE5LTA5LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBBYnN0cmFjdCBvdXQgV2ViU29ja2V0Q2hhbm5lbCBtZXNz
YWdlIHF1ZXVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCA0YzZhMmMxZTAzYjczY2ZmMWFhMThjNWJmYTdiYTE4OWE4Y2Y3NGMwLi4wODI4ZmEyNGY5
NDQ2YjFhYzE0NWJjOTY3YWE5OWNmYzgzMWM4NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE2MCw2MCArMTYwLDI3IEBAIHN0YXRpYyBMYXlv
dXRVbml0IG1hcEhvcml6b250YWxQb3NpdGlvblRvQW5jZXN0b3IoY29uc3QgRm9ybWF0dGluZ0Nv
bnRleHQmIGZvcm1hCiB9CiAKIC8vIEZJWE1FOiB0dXJuIHRoZXNlIGludG8gdGVtcGxhdGVzLgot
TGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6bWFwTGVmdFRvQW5jZXN0b3IoY29uc3QgQm94
JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3IpIGNvbnN0CitMYXlvdXRVbml0
IEZvcm1hdHRpbmdDb250ZXh0OjptYXBUb3BUb0Zvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBC
b3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmNvbnRhaW5pbmdC
bG9jaygpKTsKLSAgICByZXR1cm4gbWFwSG9yaXpvbnRhbFBvc2l0aW9uVG9BbmNlc3RvcigqdGhp
cywgZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmxlZnQoKSwgKmxheW91dEJveC5j
b250YWluaW5nQmxvY2soKSwgYW5jZXN0b3IpOwotfQotCi1MYXlvdXRVbml0IEZvcm1hdHRpbmdD
b250ZXh0OjptYXBSaWdodFRvQW5jZXN0b3IoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENv
bnRhaW5lciYgYW5jZXN0b3IpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKSk7Ci0gICAgcmV0dXJuIG1hcEhvcml6b250YWxQb3NpdGlvblRvQW5jZXN0b3Io
KnRoaXMsIGRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5yaWdodCgpLCAqbGF5b3V0
Qm94LmNvbnRhaW5pbmdCbG9jaygpLCBhbmNlc3Rvcik7Ci19Ci0KLURpc3BsYXk6OkJveCBGb3Jt
YXR0aW5nQ29udGV4dDo6bWFwQm94VG9BbmNlc3Rvcihjb25zdCBCb3gmIGxheW91dEJveCwgY29u
c3QgQ29udGFpbmVyJiBhbmNlc3RvcikgY29uc3QKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
Q29udGFpbmluZ0Jsb2NrRGVzY2VuZGFudE9mKGFuY2VzdG9yKSk7Ci0gICAgYXV0byYgZGlzcGxh
eUJveCA9IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKLSAgICBhdXRvIHRvcExl
ZnQgPSBkaXNwbGF5Qm94LnRvcExlZnQoKTsKLSAgICBmb3IgKGF1dG8qIGNvbnRhaW5pbmdCbG9j
ayA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsgY29udGFpbmluZ0Jsb2NrICYmIGNvbnRh
aW5pbmdCbG9jayAhPSAmYW5jZXN0b3I7IGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9j
ay0+Y29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgIHRvcExlZnQubW92ZUJ5KGRpc3BsYXlCb3hG
b3JMYXlvdXRCb3goKmNvbnRhaW5pbmdCbG9jaykudG9wTGVmdCgpKTsKLQotICAgIGF1dG8gbWFw
cGVkRGlzcGxheUJveCA9IERpc3BsYXk6OkJveChkaXNwbGF5Qm94KTsKLSAgICBtYXBwZWREaXNw
bGF5Qm94LnNldFRvcExlZnQodG9wTGVmdCk7Ci0gICAgcmV0dXJuIG1hcHBlZERpc3BsYXlCb3g7
Ci19Ci0KLUxheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Om1hcFRvcFRvQW5jZXN0b3IoY29u
c3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3IpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKGxheW91dEJveC5pc0NvbnRhaW5pbmdCbG9ja0Rlc2NlbmRhbnRPZihhbmNlc3Rv
cikpOworICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0Um9vdCA9IGRvd25jYXN0PENvbnRhaW5l
cj4ocm9vdCgpKTsKKyAgICBBU1NFUlQobGF5b3V0Qm94LmlzQ29udGFpbmluZ0Jsb2NrRGVzY2Vu
ZGFudE9mKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwogICAgIGF1dG8gdG9wID0gZGlzcGxheUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gpLnRvcCgpOwotICAgIGZvciAoYXV0byogY29udGFpbmVy
ID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBjb250YWluZXIgJiYgY29udGFpbmVyICE9
ICZhbmNlc3RvcjsgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250YWluaW5nQmxvY2soKSkKKyAg
ICBmb3IgKGF1dG8qIGNvbnRhaW5lciA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsgY29u
dGFpbmVyICYmIGNvbnRhaW5lciAhPSAmZm9ybWF0dGluZ0NvbnRleHRSb290OyBjb250YWluZXIg
PSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpKQogICAgICAgICB0b3AgKz0gZGlzcGxheUJv
eEZvckxheW91dEJveCgqY29udGFpbmVyKS50b3AoKTsKICAgICByZXR1cm4gdG9wOwogfQogCi1Q
b2ludCBGb3JtYXR0aW5nQ29udGV4dDo6bWFwUG9pbnRUb0FuY2VzdG9yKFBvaW50IHBvc2l0aW9u
LCBjb25zdCBDb250YWluZXImIGZyb20sIGNvbnN0IENvbnRhaW5lciYgdG8pIGNvbnN0CitMYXlv
dXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXBMZWZ0VG9Gb3JtYXR0aW5nQ29udGV4dFJvb3Qo
Y29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7Ci0gICAgaWYgKCZmcm9tID09ICZ0bykKLSAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOwotICAgIEFTU0VSVChmcm9tLmlzQ29udGFpbmluZ0Jsb2Nr
RGVzY2VuZGFudE9mKHRvKSk7Ci0gICAgYXV0byBtYXBwZWRQb3NpdGlvbiA9IHBvc2l0aW9uOwot
ICAgIGZvciAoYXV0byogY29udGFpbmVyID0gJmZyb207IGNvbnRhaW5lciAmJiBjb250YWluZXIg
IT0gJnRvOyBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpKQotICAgICAg
ICBtYXBwZWRQb3NpdGlvbi5tb3ZlQnkoZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmVy
KS50b3BMZWZ0KCkpOwotICAgIHJldHVybiBtYXBwZWRQb3NpdGlvbjsKKyAgICBBU1NFUlQobGF5
b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICByZXR1cm4gbWFwSG9yaXpvbnRhbFBvc2l0
aW9uVG9BbmNlc3RvcigqdGhpcywgZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmxl
ZnQoKSwgKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSwgZG93bmNhc3Q8Q29udGFpbmVyPihy
b290KCkpKTsKIH0KIAotUG9pbnQgRm9ybWF0dGluZ0NvbnRleHQ6Om1hcFBvaW50VG9EZXNjZW5k
ZW50KFBvaW50IHBvaW50LCBjb25zdCBDb250YWluZXImIGZyb20sIGNvbnN0IENvbnRhaW5lciYg
dG8pIGNvbnN0CitMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXBSaWdodFRvRm9ybWF0
dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewotICAgIC8vICJw
b2ludCIgaXMgaW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoZSAiZnJvbSIgY29udGFpbmVy
LgotICAgIGlmICgmZnJvbSA9PSAmdG8pCi0gICAgICAgIHJldHVybiBwb2ludDsKLSAgICBBU1NF
UlQodG8uaXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YoZnJvbSkpOwotICAgIGZvciAoYXV0
byogY29udGFpbmVyID0gJnRvOyBjb250YWluZXIgJiYgY29udGFpbmVyICE9ICZmcm9tOyBjb250
YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpKQotICAgICAgICBwb2ludC5tb3Zl
QnkoZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmVyKS50b3BMZWZ0KCkpOwotICAgIHJl
dHVybiBwb2ludDsKKyAgICBBU1NFUlQobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAg
ICByZXR1cm4gbWFwSG9yaXpvbnRhbFBvc2l0aW9uVG9BbmNlc3RvcigqdGhpcywgZGlzcGxheUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gpLnJpZ2h0KCksICpsYXlvdXRCb3guY29udGFpbmluZ0Js
b2NrKCksIGRvd25jYXN0PENvbnRhaW5lcj4ocm9vdCgpKSk7CiB9CiAKICNpZm5kZWYgTkRFQlVH
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGY1NGM3ZWY0
MjlkNzY0MzNiMzRlYjkyZWI2OWRkZjdhODgxNWIzZDkuLjllYzBmZTgwY2E1ODYxMDY0MGUwZjQ3
NGNmYjBkZTY2NTBkZGIxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5oCkBAIC02MSwxMiArNjEsOSBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2aXJ0dWFsIElu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
KCkgPSAwOwogCi0gICAgRGlzcGxheTo6Qm94IG1hcEJveFRvQW5jZXN0b3IoY29uc3QgQm94Jiwg
Y29uc3QgQ29udGFpbmVyJiBhbmNlc3RvcikgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBtYXBUb3BU
b0FuY2VzdG9yKGNvbnN0IEJveCYsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3IpIGNvbnN0Owot
ICAgIExheW91dFVuaXQgbWFwTGVmdFRvQW5jZXN0b3IoY29uc3QgQm94JiwgY29uc3QgQ29udGFp
bmVyJiBhbmNlc3RvcikgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBtYXBSaWdodFRvQW5jZXN0b3Io
Y29uc3QgQm94JiwgY29uc3QgQ29udGFpbmVyJiBhbmNlc3RvcikgY29uc3Q7Ci0gICAgUG9pbnQg
bWFwUG9pbnRUb0FuY2VzdG9yKFBvaW50LCBjb25zdCBDb250YWluZXImIGZyb20sIGNvbnN0IENv
bnRhaW5lciYgdG8pIGNvbnN0OwotICAgIFBvaW50IG1hcFBvaW50VG9EZXNjZW5kZW50KFBvaW50
LCBjb25zdCBDb250YWluZXImIGZyb20sIGNvbnN0IENvbnRhaW5lciYgdG8pIGNvbnN0OworICAg
IExheW91dFVuaXQgbWFwVG9wVG9Gb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JikgY29u
c3Q7CisgICAgTGF5b3V0VW5pdCBtYXBMZWZ0VG9Gb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3Qg
Qm94JikgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBtYXBSaWdodFRvRm9ybWF0dGluZ0NvbnRleHRS
b290KGNvbnN0IEJveCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKSBjb25zdCB7IHJldHVybiByb290KCkuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KCk7IH0KICAgICBib29sIGlzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJl
dHVybiByb290KCkuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA5ZDgyNTY4NDMzZWM2ZDM1MDRkNDY4Mzk2
NTNjNDkxNzAzYmMwNDI0Li5kYWExNzE2YTA0NzZhNTgzNTM4NmZmM2Q0NjI3MmE2NDU0NGFkYTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBP
cHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQXZhaWxhYmxl
V2lkdGhGb3JGbG9hdEF2b2lkZXIoYwogICAgICAgICByZXR1cm4geyB9OwogICAgIC8vIFZlcnRp
Y2FsIHN0YXRpYyBwb3NpdGlvbiBpcyBub3QgY29tcHV0ZWQgeWV0LCBzbyBsZXQncyBqdXN0IGVz
dGltYXRlIGl0IGZvciBub3cuCiAgICAgYXV0byYgZm9ybWF0dGluZ1Jvb3QgPSBkb3duY2FzdDxD
b250YWluZXI+KHJvb3QoKSk7Ci0gICAgYXV0byB2ZXJ0aWNhbFBvc2l0aW9uID0gbWFwVG9wVG9B
bmNlc3RvcihsYXlvdXRCb3gsIGZvcm1hdHRpbmdSb290KTsKKyAgICBhdXRvIHZlcnRpY2FsUG9z
aXRpb24gPSBtYXBUb3BUb0Zvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRCb3gpOwogICAgIGF1
dG8gY29uc3RyYWludHMgPSBmbG9hdGluZ0NvbnRleHQuY29uc3RyYWludHMoeyB2ZXJ0aWNhbFBv
c2l0aW9uIH0pOwogICAgIGlmICghY29uc3RyYWludHMubGVmdCAmJiAhY29uc3RyYWludHMucmln
aHQpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMzksOCArMTM5LDggQEAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxv
YXRBdm9pZGVyKGMKICAgICBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1JpZ2h0ID0gY29udGFp
bmluZ0Jsb2NrRGlzcGxheUJveC5yaWdodCgpOwogICAgIGlmICgmY29udGFpbmluZ0Jsb2NrICE9
ICZmb3JtYXR0aW5nUm9vdCkgewogICAgICAgICAvLyBNb3ZlIGNvbnRhaW5pbmcgYmxvY2sgbGVm
dC9yaWdodCB0byB0aGUgcm9vdCdzIGNvb3JkaW5hdGUgc3lzdGVtLgotICAgICAgICBjb250YWlu
aW5nQmxvY2tMZWZ0ID0gbWFwTGVmdFRvQW5jZXN0b3IoY29udGFpbmluZ0Jsb2NrLCBmb3JtYXR0
aW5nUm9vdCk7Ci0gICAgICAgIGNvbnRhaW5pbmdCbG9ja1JpZ2h0ID0gbWFwUmlnaHRUb0FuY2Vz
dG9yKGNvbnRhaW5pbmdCbG9jaywgZm9ybWF0dGluZ1Jvb3QpOworICAgICAgICBjb250YWluaW5n
QmxvY2tMZWZ0ID0gbWFwTGVmdFRvRm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnRhaW5pbmdCbG9j
ayk7CisgICAgICAgIGNvbnRhaW5pbmdCbG9ja1JpZ2h0ID0gbWFwUmlnaHRUb0Zvcm1hdHRpbmdD
b250ZXh0Um9vdChjb250YWluaW5nQmxvY2spOwogICAgIH0KICAgICBhdXRvIGNvbnRhaW5pbmdC
bG9ja0NvbnRlbnRCb3hMZWZ0ID0gY29udGFpbmluZ0Jsb2NrTGVmdCArIGNvbnRhaW5pbmdCbG9j
a0Rpc3BsYXlCb3guYm9yZGVyTGVmdCgpICsgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5wYWRk
aW5nTGVmdCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50Qm94
UmlnaHQgPSBjb250YWluaW5nQmxvY2tSaWdodCAtIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gu
Ym9yZGVyUmlnaHQoKSArIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCku
dmFsdWVPcigwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxv
YXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdD
b250ZXh0LmNwcAppbmRleCBiOThjMDU3OTM5NTAwMzc4NDM2NzJjZmI3NWY1NGI5MGYyOTFjNGQx
Li42MDQ3OTYyOTNjMmNhNWU3MTEyM2ViMWViMTU2Njg5MDg4M2JjYjVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCkBAIC0xNTAsMjQg
KzE1MCwxMSBAQCBzdGF0aWMgYm9vbCBhcmVGbG9hdHNIb3Jpem9udGFsbHlTb3J0ZWQoY29uc3Qg
RmxvYXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSkKIH0KICNlbmRpZgogCi1zdHJ1Y3QgQWJzb2x1
dGVDb29yZGluYXRlVmFsdWVzRm9yRmxvYXRBdm9pZGVyIHsKK3N0cnVjdCBGbG9hdGluZ0NvbnRl
eHQ6OkFic29sdXRlQ29vcmRpbmF0ZVZhbHVlc0ZvckZsb2F0QXZvaWRlciB7CiAgICAgRGlzcGxh
eTo6Qm94IGRpc3BsYXlCb3g7CiAgICAgTGF5b3V0UG9pbnQgY29udGFpbmluZ0Jsb2NrVG9wTGVm
dDsKICAgICBIb3Jpem9udGFsRWRnZXMgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveDsKIH07Ci1z
dGF0aWMgQWJzb2x1dGVDb29yZGluYXRlVmFsdWVzRm9yRmxvYXRBdm9pZGVyIG1hcFRvRm9ybWF0
dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBDb250YWluZXImIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdD
b250ZXh0KQotewotICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9ICpsYXlvdXRCb3guY29udGFp
bmluZ0Jsb2NrKCk7Ci0gICAgYXV0byBkaXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQubWFw
Qm94VG9BbmNlc3RvcihsYXlvdXRCb3gsIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7Ci0KLSAgICBp
ZiAoJmNvbnRhaW5pbmdCbG9jayA9PSAmZm9ybWF0dGluZ0NvbnRleHRSb290KSB7Ci0gICAgICAg
IGF1dG8gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKTsKLSAgICAgICAgcmV0dXJuIHsgZGlz
cGxheUJveCwgeyB9LCB7ICBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0
KCksIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guY29udGVudEJveFJpZ2h0KCkgfSB9OwotICAg
IH0KLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0Fic29sdXRlRGlzcGxheUJveCA9IGZvcm1hdHRp
bmdDb250ZXh0Lm1hcEJveFRvQW5jZXN0b3IoY29udGFpbmluZ0Jsb2NrLCBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrTGVmdCA9IGNvbnRhaW5pbmdCbG9j
a0Fic29sdXRlRGlzcGxheUJveC5sZWZ0KCk7Ci0gICAgcmV0dXJuIHsgZGlzcGxheUJveCwgY29u
dGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LnRvcExlZnQoKSwgeyBjb250YWluaW5nQmxv
Y2tMZWZ0ICsgY29udGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0
KCksIGNvbnRhaW5pbmdCbG9ja0xlZnQgKyBjb250YWluaW5nQmxvY2tBYnNvbHV0ZURpc3BsYXlC
b3guY29udGVudEJveFJpZ2h0KCkgfSB9OwotfQogCiBGbG9hdGluZ0NvbnRleHQ6OkZsb2F0aW5n
Q29udGV4dChjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQsIEZsb2F0
aW5nU3RhdGUmIGZsb2F0aW5nU3RhdGUpCiAgICAgOiBtX2Zvcm1hdHRpbmdDb250ZXh0KGZvcm1h
dHRpbmdDb250ZXh0KQpAQCAtMTk4LDcgKzE4NSw3IEBAIFBvaW50IEZsb2F0aW5nQ29udGV4dDo6
cG9zaXRpb25Gb3JGbG9hdChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKICAgICB9CiAKICAg
ICAvLyBGaW5kIHRoZSB0b3AgbW9zdCBwb3NpdGlvbiB3aGVyZSB0aGUgZmxvYXQgYm94IGZpdHMu
Ci0gICAgYXV0byBhYnNvbHV0ZURpc3BsYXlCb3hDb29yZGluYXRlcyA9IG1hcFRvRm9ybWF0dGlu
Z0NvbnRleHRSb290KGxheW91dEJveCwgZG93bmNhc3Q8Q29udGFpbmVyPihtX2Zsb2F0aW5nU3Rh
dGUucm9vdCgpKSwgZm9ybWF0dGluZ0NvbnRleHQoKSk7CisgICAgYXV0byBhYnNvbHV0ZURpc3Bs
YXlCb3hDb29yZGluYXRlcyA9IHRoaXMtPmFic29sdXRlRGlzcGxheUJveENvb3JkaW5hdGVzKGxh
eW91dEJveCk7CiAKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBwcmV2aW91c0Zsb2F0QWJzb2x1
dGVUb3A7CiAgICAgaWYgKCFpc0VtcHR5KCkpCkBAIC0yMTgsNyArMjA1LDcgQEAgT3B0aW9uYWw8
UG9pbnQ+IEZsb2F0aW5nQ29udGV4dDo6cG9zaXRpb25Gb3JGb3JtYXR0aW5nQ29udGV4dFJvb3Qo
Y29uc3QgQm94JiBsYXkKICAgICBpZiAoaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgYXV0byBhYnNvbHV0ZURpc3BsYXlCb3hDb29yZGluYXRlcyA9IG1hcFRvRm9ybWF0dGlu
Z0NvbnRleHRSb290KGxheW91dEJveCwgZG93bmNhc3Q8Q29udGFpbmVyPihtX2Zsb2F0aW5nU3Rh
dGUucm9vdCgpKSwgZm9ybWF0dGluZ0NvbnRleHQoKSk7CisgICAgYXV0byBhYnNvbHV0ZURpc3Bs
YXlCb3hDb29yZGluYXRlcyA9IHRoaXMtPmFic29sdXRlRGlzcGxheUJveENvb3JkaW5hdGVzKGxh
eW91dEJveCk7CiAgICAgYXV0byBmbG9hdEF2b2lkZXIgPSBGbG9hdEF2b2lkZXIgeyBsYXlvdXRC
b3gsIGFic29sdXRlRGlzcGxheUJveENvb3JkaW5hdGVzLmRpc3BsYXlCb3gsIGFic29sdXRlRGlz
cGxheUJveENvb3JkaW5hdGVzLmNvbnRhaW5pbmdCbG9ja1RvcExlZnQsIGFic29sdXRlRGlzcGxh
eUJveENvb3JkaW5hdGVzLmNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3ggfTsKICAgICBmaW5kUG9z
aXRpb25Gb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoZmxvYXRBdm9pZGVyKTsKICAgICByZXR1cm4g
eyBmbG9hdEF2b2lkZXIucmVjdEluQ29udGFpbmluZ0Jsb2NrKCkudG9wTGVmdCgpIH07CkBAIC0y
NDMsNyArMjMwLDcgQEAgRmxvYXRpbmdDb250ZXh0OjpDbGVhcmFuY2VQb3NpdGlvbiBGbG9hdGlu
Z0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmMKICAgICAgICAgLy8KICAgICAg
ICAgLy8gMS4gVGhlIGFtb3VudCBuZWNlc3NhcnkgdG8gcGxhY2UgdGhlIGJvcmRlciBlZGdlIG9m
IHRoZSBibG9jayBldmVuIHdpdGggdGhlIGJvdHRvbSBvdXRlciBlZGdlIG9mIHRoZSBsb3dlc3Qg
ZmxvYXQgdGhhdCBpcyB0byBiZSBjbGVhcmVkLgogICAgICAgICAvLyAyLiBUaGUgYW1vdW50IG5l
Y2Vzc2FyeSB0byBwbGFjZSB0aGUgdG9wIGJvcmRlciBlZGdlIG9mIHRoZSBibG9jayBhdCBpdHMg
aHlwb3RoZXRpY2FsIHBvc2l0aW9uLgotICAgICAgICBhdXRvIHJvb3RSZWxhdGl2ZVRvcCA9IGZv
cm1hdHRpbmdDb250ZXh0KCkubWFwVG9wVG9BbmNlc3RvcihsYXlvdXRCb3gsIGRvd25jYXN0PENv
bnRhaW5lcj4obV9mbG9hdGluZ1N0YXRlLnJvb3QoKSkpOworICAgICAgICBhdXRvIHJvb3RSZWxh
dGl2ZVRvcCA9IG1hcFRvcFRvRmxvYXRpbmdTdGF0ZVJvb3QobGF5b3V0Qm94KTsKICAgICAgICAg
YXV0byBjbGVhcmFuY2UgPSAqZmxvYXRCb3R0b20gLSByb290UmVsYXRpdmVUb3A7CiAgICAgICAg
IGlmIChjbGVhcmFuY2UgPD0gMCkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0yNzEsNyAr
MjU4LDcgQEAgRmxvYXRpbmdDb250ZXh0OjpDbGVhcmFuY2VQb3NpdGlvbiBGbG9hdGluZ0NvbnRl
eHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmMKICAgICAgICAgaWYgKGxheW91dEJveC5j
b250YWluaW5nQmxvY2soKSA9PSAmbV9mbG9hdGluZ1N0YXRlLnJvb3QoKSkKICAgICAgICAgICAg
IHJldHVybiB7IFBvc2l0aW9uIHsgcm9vdFJlbGF0aXZlVG9wIH0sIGNsZWFyYW5jZSB9OwogCi0g
ICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrUm9vdFJlbGF0aXZlVG9wID0gZm9ybWF0dGluZ0Nv
bnRleHQoKS5tYXBUb3BUb0FuY2VzdG9yKCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCksIGRv
d25jYXN0PENvbnRhaW5lcj4obV9mbG9hdGluZ1N0YXRlLnJvb3QoKSkpOworICAgICAgICBhdXRv
IGNvbnRhaW5pbmdCbG9ja1Jvb3RSZWxhdGl2ZVRvcCA9IG1hcFRvcFRvRmxvYXRpbmdTdGF0ZVJv
b3QoKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CiAgICAgICAgIHJldHVybiB7IFBvc2l0
aW9uIHsgcm9vdFJlbGF0aXZlVG9wIC0gY29udGFpbmluZ0Jsb2NrUm9vdFJlbGF0aXZlVG9wIH0s
IGNsZWFyYW5jZSB9OwogICAgIH07CiAKQEAgLTMwMiw3ICsyODksNyBAQCBGbG9hdGluZ0NvbnRl
eHQ6OkNvbnN0cmFpbnRzIEZsb2F0aW5nQ29udGV4dDo6Y29uc3RyYWludHMoUG9zaXRpb25JbkNv
bnRleHRSb290CiAgICAgTGF5b3V0U2l6ZSBhZGp1c3RpbmdEZWx0YTsKIAogICAgIGlmIChjb29y
ZGluYXRlTWFwcGluZ0lzUmVxdWlyZWQpIHsKLSAgICAgICAgYWRqdXN0ZWRQb3NpdGlvbiA9IGZv
cm1hdHRpbmdDb250ZXh0KCkubWFwUG9pbnRUb0FuY2VzdG9yKGFkanVzdGVkUG9zaXRpb24sIHJv
b3QoKSwgZG93bmNhc3Q8Q29udGFpbmVyPihmbG9hdGluZ1N0YXRlKCkucm9vdCgpKSk7CisgICAg
ICAgIGFkanVzdGVkUG9zaXRpb24gPSBtYXBQb2ludEZyb21Gb3JtYXR0aW5nQ29udGV4dFJvb3RU
b0Zsb2F0aW5nU3RhdGVSb290KGFkanVzdGVkUG9zaXRpb24pOwogICAgICAgICBhZGp1c3RpbmdE
ZWx0YSA9IHsgYWRqdXN0ZWRQb3NpdGlvbi54LCBhZGp1c3RlZFBvc2l0aW9uLnkgLSB2ZXJ0aWNh
bFBvc2l0aW9uIH07CiAgICAgfQogCkBAIC0zNDIsNyArMzI5LDcgQEAgRmxvYXRpbmdDb250ZXh0
OjpDb25zdHJhaW50cyBGbG9hdGluZ0NvbnRleHQ6OmNvbnN0cmFpbnRzKFBvc2l0aW9uSW5Db250
ZXh0Um9vdAogCiB2b2lkIEZsb2F0aW5nQ29udGV4dDo6YXBwZW5kKGNvbnN0IEJveCYgZmxvYXRC
b3gpCiB7Ci0gICAgZmxvYXRpbmdTdGF0ZSgpLmFwcGVuZChGbG9hdGluZ1N0YXRlOjpGbG9hdEl0
ZW0geyBmbG9hdEJveCwgZm9ybWF0dGluZ0NvbnRleHQoKS5tYXBCb3hUb0FuY2VzdG9yKGZsb2F0
Qm94LCBkb3duY2FzdDxDb250YWluZXI+KGZsb2F0aW5nU3RhdGUoKS5yb290KCkpKSB9KTsKKyAg
ICBmbG9hdGluZ1N0YXRlKCkuYXBwZW5kKEZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbSB7IGZsb2F0
Qm94LCBtYXBUb0Zsb2F0aW5nU3RhdGVSb290KGZsb2F0Qm94KSB9KTsKIH0KIAogdm9pZCBGbG9h
dGluZ0NvbnRleHQ6OnJlbW92ZShjb25zdCBCb3gmIGZsb2F0Qm94KQpAQCAtNDMyLDYgKzQxOSw1
NCBAQCB2b2lkIEZsb2F0aW5nQ29udGV4dDo6ZmluZFBvc2l0aW9uRm9yRm9ybWF0dGluZ0NvbnRl
eHRSb290KEZsb2F0QXZvaWRlciYgZmxvYXRBdgogICAgIH0KIH0KIAorRmxvYXRpbmdDb250ZXh0
OjpBYnNvbHV0ZUNvb3JkaW5hdGVWYWx1ZXNGb3JGbG9hdEF2b2lkZXIgRmxvYXRpbmdDb250ZXh0
OjphYnNvbHV0ZURpc3BsYXlCb3hDb29yZGluYXRlcyhjb25zdCBCb3gmIGZsb2F0QXZvaWRlcikg
Y29uc3QKK3sKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqZmxvYXRBdm9pZGVyLmNvbnRh
aW5pbmdCbG9jaygpOworICAgIGF1dG8gZGlzcGxheUJveCA9IG1hcFRvRmxvYXRpbmdTdGF0ZVJv
b3QoZmxvYXRBdm9pZGVyKTsKKworICAgIGlmICgmY29udGFpbmluZ0Jsb2NrID09ICZmbG9hdGlu
Z1N0YXRlKCkucm9vdCgpKSB7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJv
eCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZGlzcGxheUJveEZvckxheW91dEJveChjb250YWluaW5n
QmxvY2spOworICAgICAgICByZXR1cm4geyBkaXNwbGF5Qm94LCB7IH0sIHsgIGNvbnRhaW5pbmdC
bG9ja0Rpc3BsYXlCb3guY29udGVudEJveExlZnQoKSwgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJv
eC5jb250ZW50Qm94UmlnaHQoKSB9IH07CisgICAgfQorICAgIGF1dG8gY29udGFpbmluZ0Jsb2Nr
QWJzb2x1dGVEaXNwbGF5Qm94ID0gbWFwVG9GbG9hdGluZ1N0YXRlUm9vdChjb250YWluaW5nQmxv
Y2spOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrTGVmdCA9IGNvbnRhaW5pbmdCbG9ja0Fic29s
dXRlRGlzcGxheUJveC5sZWZ0KCk7CisgICAgcmV0dXJuIHsgZGlzcGxheUJveCwgY29udGFpbmlu
Z0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LnRvcExlZnQoKSwgeyBjb250YWluaW5nQmxvY2tMZWZ0
ICsgY29udGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0KCksIGNv
bnRhaW5pbmdCbG9ja0xlZnQgKyBjb250YWluaW5nQmxvY2tBYnNvbHV0ZURpc3BsYXlCb3guY29u
dGVudEJveFJpZ2h0KCkgfSB9OworfQorCitEaXNwbGF5OjpCb3ggRmxvYXRpbmdDb250ZXh0Ojpt
YXBUb0Zsb2F0aW5nU3RhdGVSb290KGNvbnN0IEJveCYgZmxvYXRCb3gpIGNvbnN0Cit7CisgICAg
YXV0byYgZmxvYXRpbmdTdGF0ZVJvb3QgPSBmbG9hdGluZ1N0YXRlKCkucm9vdCgpOworICAgIGF1
dG8mIGRpc3BsYXlCb3ggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goZmxvYXRCb3gpOworICAgIGF1dG8gdG9wTGVmdCA9IGRpc3BsYXlCb3gudG9wTGVmdCgpOwor
ICAgIGZvciAoYXV0byogY29udGFpbmluZ0Jsb2NrID0gZmxvYXRCb3guY29udGFpbmluZ0Jsb2Nr
KCk7IGNvbnRhaW5pbmdCbG9jayAmJiBjb250YWluaW5nQmxvY2sgIT0gJmZsb2F0aW5nU3RhdGVS
b290OyBjb250YWluaW5nQmxvY2sgPSBjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygp
KQorICAgICAgICB0b3BMZWZ0Lm1vdmVCeShmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3goKmNvbnRhaW5pbmdCbG9jaykudG9wTGVmdCgpKTsKKworICAgIGF1dG8gbWFw
cGVkRGlzcGxheUJveCA9IERpc3BsYXk6OkJveChkaXNwbGF5Qm94KTsKKyAgICBtYXBwZWREaXNw
bGF5Qm94LnNldFRvcExlZnQodG9wTGVmdCk7CisgICAgcmV0dXJuIG1hcHBlZERpc3BsYXlCb3g7
Cit9CisKK0xheW91dFVuaXQgRmxvYXRpbmdDb250ZXh0OjptYXBUb3BUb0Zsb2F0aW5nU3RhdGVS
b290KGNvbnN0IEJveCYgZmxvYXRCb3gpIGNvbnN0Cit7CisgICAgYXV0byYgZmxvYXRpbmdTdGF0
ZVJvb3QgPSBmbG9hdGluZ1N0YXRlKCkucm9vdCgpOworICAgIGF1dG8gdG9wID0gZm9ybWF0dGlu
Z0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGZsb2F0Qm94KS50b3AoKTsKKyAgICBm
b3IgKGF1dG8qIGNvbnRhaW5lciA9IGZsb2F0Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBjb250YWlu
ZXIgJiYgY29udGFpbmVyICE9ICZmbG9hdGluZ1N0YXRlUm9vdDsgY29udGFpbmVyID0gY29udGFp
bmVyLT5jb250YWluaW5nQmxvY2soKSkKKyAgICAgICAgdG9wICs9IGZvcm1hdHRpbmdDb250ZXh0
KCkuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmVyKS50b3AoKTsKKyAgICByZXR1cm4g
dG9wOworfQorCitQb2ludCBGbG9hdGluZ0NvbnRleHQ6Om1hcFBvaW50RnJvbUZvcm1hdHRpbmdD
b250ZXh0Um9vdFRvRmxvYXRpbmdTdGF0ZVJvb3QoUG9pbnQgcG9zaXRpb24pIGNvbnN0Cit7Cisg
ICAgYXV0byYgZnJvbSA9IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOworICAgIGF1dG8mIHRv
ID0gZmxvYXRpbmdTdGF0ZSgpLnJvb3QoKTsKKyAgICBpZiAoJmZyb20gPT0gJnRvKQorICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgYXV0byBtYXBwZWRQb3NpdGlvbiA9IHBvc2l0aW9uOwor
ICAgIGZvciAoYXV0byogY29udGFpbmVyID0gJmZyb207IGNvbnRhaW5lciAmJiBjb250YWluZXIg
IT0gJnRvOyBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpKQorICAgICAg
ICBtYXBwZWRQb3NpdGlvbi5tb3ZlQnkoZm9ybWF0dGluZ0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KCpjb250YWluZXIpLnRvcExlZnQoKSk7CisgICAgcmV0dXJuIG1hcHBlZFBvc2l0
aW9uOworfQorCiBGbG9hdFBhaXI6OkZsb2F0UGFpcihjb25zdCBGbG9hdGluZ1N0YXRlOjpGbG9h
dExpc3QmIGZsb2F0cykKICAgICA6IG1fZmxvYXRzKGZsb2F0cykKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5oCmluZGV4IDA5MWI2OTNlNmQxZmZk
NWQ4N2QxMTc1YTM0ZmQxNTFjNjcwNzNiMGMuLmI5YmJmOTU1YmM3YWJjOWY4MjA1M2Y0OTIyZWFi
NmMyMDZhYTYwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxv
YXRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGlu
Z0NvbnRleHQuaApAQCAtNzgsNiArNzgsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmRQb3Np
dGlvbkZvckZsb2F0Qm94KEZsb2F0Qm94JikgY29uc3Q7CiAgICAgdm9pZCBmaW5kUG9zaXRpb25G
b3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoRmxvYXRBdm9pZGVyJikgY29uc3Q7CiAKKyAgICBzdHJ1
Y3QgQWJzb2x1dGVDb29yZGluYXRlVmFsdWVzRm9yRmxvYXRBdm9pZGVyOworICAgIEFic29sdXRl
Q29vcmRpbmF0ZVZhbHVlc0ZvckZsb2F0QXZvaWRlciBhYnNvbHV0ZURpc3BsYXlCb3hDb29yZGlu
YXRlcyhjb25zdCBCb3gmKSBjb25zdDsKKyAgICBEaXNwbGF5OjpCb3ggbWFwVG9GbG9hdGluZ1N0
YXRlUm9vdChjb25zdCBCb3gmKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IG1hcFRvcFRvRmxvYXRp
bmdTdGF0ZVJvb3QoY29uc3QgQm94JikgY29uc3Q7CisgICAgUG9pbnQgbWFwUG9pbnRGcm9tRm9y
bWF0dGluZ0NvbnRleHRSb290VG9GbG9hdGluZ1N0YXRlUm9vdChQb2ludCkgY29uc3Q7CisKICAg
ICBjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYgbV9mb3JtYXR0aW5nQ29udGV4dDsKICAgICBGbG9h
dGluZ1N0YXRlJiBtX2Zsb2F0aW5nU3RhdGU7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>