<?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>236437</bug_id>
          
          <creation_ts>2022-02-10 03:50:54 -0800</creation_ts>
          <short_desc>[GTK][WPE] Refactor the XDGDBusProxy launcher to simplify it and fix some issues</short_desc>
          <delta_ts>2022-02-10 05:55: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>WebKitGTK</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1839588</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-02-10 03:50:54 -0800</bug_when>
    <thetext>I&apos;ve noticed several issues:

 - r289369 introduced an issue with old versions of bwrap that fails to mount over an existing file, so we need to ensure we only bind the original socket for the a11y socket and not the session bus one.
 - bindA11y is GTK specific for some reason, which means WPE doesn&apos;t have a11y under the sandbox.
 - The names of the socket paths for a11y and session bus use the same pattern dbus-proxy-XXXXXX, it helps to use a different one.
 - The code to get the a11y DBus address is now duplicated in PlatformDisplay, we can just use the PlatformDisplay to get the address.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839591</commentid>
    <comment_count>1</comment_count>
      <attachid>451513</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-02-10 03:55:55 -0800</bug_when>
    <thetext>Created attachment 451513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839613</commentid>
    <comment_count>2</comment_count>
      <attachid>451513</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-02-10 05:46:20 -0800</bug_when>
    <thetext>Comment on attachment 451513
Patch

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

&gt; Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp:785
&gt; +    int bwrapFd = argumentsToFileDescriptor(sandboxArgs, &quot;bwrap&quot;);

Much better function name, indeed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839615</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-02-10 05:55:15 -0800</bug_when>
    <thetext>Committed r289528 (?): &lt;https://commits.webkit.org/r289528&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451513</attachid>
            <date>2022-02-10 03:55:55 -0800</date>
            <delta_ts>2022-02-10 05:46:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-dbus-proxy.diff</filename>
            <type>text/plain</type>
            <size>32534</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNDExOGEyMTA3MGIuLjZiODc3ZGZiNmJhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDIyLTAyLTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFJlZmFjdG9yIHRoZSBYREdEQnVzUHJv
eHkgbGF1bmNoZXIgdG8gc2ltcGxpZnkgaXQgYW5kIGZpeCBzb21lIGlzc3VlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBhY2Nlc3NpYmlsaXR5
IGJ1cyBhZGRyZXNzIEFQSSBhdmFpbGFibGUgZm9yIEFUSyB0b28uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gx
MS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gx
MS9QbGF0Zm9ybURpc3BsYXlYMTEuaDoKKwogMjAyMi0wMi0wOSAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBDb250YWluZXIgUXVlcmllc10gSW1wbGVt
ZW50IGlubGluZS1zaXplIGNvbnRhaW5tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAppbmRleCA4OWYxNTE5MGRkMDMuLjFi
MGQ4MTgyOGU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1EaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybURpc3BsYXkuY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgY21zSFBST0ZJTEUgUGxh
dGZvcm1EaXNwbGF5Ojpjb2xvclByb2ZpbGUoKSBjb25zdAogfQogI2VuZGlmCiAKLSNpZiBVU0Uo
QVRTUEkpCisjaWYgVVNFKEFUU1BJKSB8fCBVU0UoQVRLKQogY29uc3QgU3RyaW5nJiBQbGF0Zm9y
bURpc3BsYXk6OmFjY2Vzc2liaWxpdHlCdXNBZGRyZXNzKCkgY29uc3QKIHsKICAgICBpZiAobV9h
Y2Nlc3NpYmlsaXR5QnVzQWRkcmVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgKaW5kZXggYmVjNTlhMDAyZmYzLi5iZTdkYjZlODg3
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
RGlzcGxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
RGlzcGxheS5oCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNtc0hQUk9G
SUxFIGNvbG9yUHJvZmlsZSgpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiBVU0UoQVRTUEkpCisjaWYg
VVNFKEFUU1BJKSB8fCBVU0UoQVRLKQogICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eUJ1c0FkZHJl
c3MoU3RyaW5nJiYgYWRkcmVzcykgeyBtX2FjY2Vzc2liaWxpdHlCdXNBZGRyZXNzID0gV1RGTW92
ZShhZGRyZXNzKTsgfQogICAgIGNvbnN0IFN0cmluZyYgYWNjZXNzaWJpbGl0eUJ1c0FkZHJlc3Mo
KSBjb25zdDsKICNlbmRpZgpAQCAtMTE3LDcgKzExNyw3IEBAIHByb3RlY3RlZDoKICAgICBtdXRh
YmxlIExDTVNQcm9maWxlUHRyIG1faWNjUHJvZmlsZTsKICNlbmRpZgogCi0jaWYgVVNFKEFUU1BJ
KQorI2lmIFVTRShBVFNQSSkgfHwgVVNFKEFUSykKICAgICB2aXJ0dWFsIFN0cmluZyBwbGFydGZv
cm1BY2Nlc3NpYmlsaXR5QnVzQWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogCiAgICAg
bXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbV9hY2Nlc3NpYmlsaXR5QnVzQWRkcmVzczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9y
bURpc3BsYXlYMTEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1Bs
YXRmb3JtRGlzcGxheVgxMS5jcHAKaW5kZXggMjIxNTRjODc2M2VmLi5kYzQ2ZWRlMTRjZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURp
c3BsYXlYMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9Q
bGF0Zm9ybURpc3BsYXlYMTEuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgY21zSFBST0ZJTEUgUGxh
dGZvcm1EaXNwbGF5WDExOjpjb2xvclByb2ZpbGUoKSBjb25zdAogfQogI2VuZGlmCiAKLSNpZiBV
U0UoQVRTUEkpCisjaWYgVVNFKEFUU1BJKSB8fCBVU0UoQVRLKQogU3RyaW5nIFBsYXRmb3JtRGlz
cGxheVgxMTo6cGxhcnRmb3JtQWNjZXNzaWJpbGl0eUJ1c0FkZHJlc3MoKSBjb25zdAogewogICAg
IEF0b20gYXRzcGlCdXNBdG9tID0gWEludGVybkF0b20obV9kaXNwbGF5LCAiQVRfU1BJX0JVUyIs
IEZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gx
MS9QbGF0Zm9ybURpc3BsYXlYMTEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaAppbmRleCA1YTdmZmUwNWQ1MDguLjI5NDNhNTU0OWVj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRm
b3JtRGlzcGxheVgxMS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gx
MS9QbGF0Zm9ybURpc3BsYXlYMTEuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGNt
c0hQUk9GSUxFIGNvbG9yUHJvZmlsZSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBV
U0UoQVRTUEkpCisjaWYgVVNFKEFUU1BJKSB8fCBVU0UoQVRLKQogICAgIFN0cmluZyBwbGFydGZv
cm1BY2Nlc3NpYmlsaXR5QnVzQWRkcmVzcygpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggNjE2YjAwNDk0NzcxLi5jOWY5NjlmMzJmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDYgQEAKKzIwMjItMDItMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gUmVmYWN0b3IgdGhlIFhER0RCdXNQcm94eSBsYXVu
Y2hlciB0byBzaW1wbGlmeSBpdCBhbmQgZml4IHNvbWUgaXNzdWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0MzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBYREdE
QnVzUHJveHkgbGF1bmNoZXIgaW1wbGVtZW50YXRpb24gdG8gaXRzIG93biBmaWxlIGFuZCBmaXhl
cyB0aGUgZm9sbG93aW5nIGlzc3VlczoKKworICAgICAgICAgIC0gcjI4OTM2OSBpbnRyb2R1Y2Vk
IGFuIGlzc3VlIHdpdGggb2xkIHZlcnNpb25zIG9mIGJ3cmFwIHRoYXQgZmFpbHMgdG8gbW91bnQg
b3ZlciBhbiBleGlzdGluZyBmaWxlLCBzbyB3ZSBuZWVkCisgICAgICAgICAgICB0byBlbnN1cmUg
d2Ugb25seSBiaW5kIHRoZSBvcmlnaW5hbCBzb2NrZXQgZm9yIHRoZSBhMTF5IHNvY2tldCBhbmQg
bm90IHRoZSBzZXNzaW9uIGJ1cyBvbmUuCisgICAgICAgICAgLSBiaW5kQTExeSBpcyBHVEsgc3Bl
Y2lmaWMgZm9yIHNvbWUgcmVhc29uLCB3aGljaCBtZWFucyBXUEUgZG9lc24ndCBoYXZlIGExMXkg
dW5kZXIgdGhlIHNhbmRib3guCisgICAgICAgICAgLSBUaGUgbmFtZXMgb2YgdGhlIHNvY2tldCBw
YXRocyBmb3IgYTExeSBhbmQgc2Vzc2lvbiBidXMgdXNlIHRoZSBzYW1lIHBhdHRlcm4gZGJ1cy1w
cm94eS1YWFhYWFgsIGl0IGhlbHBzIHRvCisgICAgICAgICAgICB1c2UgYSBkaWZmZXJlbnQgb25l
LgorICAgICAgICAgIC0gVGhlIGNvZGUgdG8gZ2V0IHRoZSBhMTF5IERCdXMgYWRkcmVzcyBpcyBu
b3cgZHVwbGljYXRlZCBpbiBQbGF0Zm9ybURpc3BsYXksIHdlIGNhbiBqdXN0IHVzZSB0aGUKKyAg
ICAgICAgICAgIFBsYXRmb3JtRGlzcGxheSB0byBnZXQgdGhlIGFkZHJlc3MuCisKKyAgICAgICAg
KiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwOgorICAgICAgICAo
V2ViS2l0Ojphcmd1bWVudHNUb0ZpbGVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYktpdDo6Ymlu
ZERCdXNTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6YmluZEExMXkpOgorICAgICAgICAoV2Vi
S2l0OjpidWJibGV3cmFwU3Bhd24pOgorICAgICAgICAoV2ViS2l0OjphcmdzVG9GZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlhER0RCdXNQcm94eUxhdW5jaGVyOjpzZXRBZGRyZXNzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6WERHREJ1c1Byb3h5TGF1bmNoZXI6OmlzUnVubmlu
ZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlhER0RCdXNQcm94eUxhdW5jaGVy
OjpwYXRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6WERHREJ1c1Byb3h5TGF1
bmNoZXI6OnByb3h5UGF0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlhER0RC
dXNQcm94eUxhdW5jaGVyOjpzZXRQZXJtaXNzaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlhER0RCdXNQcm94eUxhdW5jaGVyOjpsYXVuY2gpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpYREdEQnVzUHJveHlMYXVuY2hlcjo6bWFrZVByb3h5UGF0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlhER0RCdXNQcm94eUxhdW5jaGVyOjpkYnVzQWRkcmVzc1RvUGF0aCk6IERl
bGV0ZWQuCisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hl
ci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hl
ci9nbGliL1hER0RCdXNQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYREdEQnVz
UHJveHk6OlhER0RCdXNQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlhER0RCdXNQcm94eTo6bWFr
ZVByb3h5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6WERHREJ1c1Byb3h5OjpsYXVuY2ggY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1hER0RCdXNQcm94eS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6WERHREJ1c1Byb3h5Ojpwcm94eVBhdGggY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpYREdEQnVzUHJveHk6OnBhdGggY29uc3QpOgorCiAyMDIyLTAyLTA5
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBX
ZWJEcml2ZXI6IGFkZCBhIGphdmFzY3JpcHQgYXRvbSB0byBnZXQgdGhlIHZpc2libGUgdGV4dApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0dUSy50eHQKaW5kZXggNjdmODA0MTBlOGM5Li43ZTc0MDhlNWFmYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzR1RLLnR4dApAQCAtMjM0LDYgKzIzNCw3IEBAIFVJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dl
YktpdEluc3BlY3RvcldpbmRvdy5jcHAKIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NM
YXVuY2hlckdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxl
d3JhcExhdW5jaGVyLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0ZsYXRw
YWtMYXVuY2hlci5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9YREdEQnVz
UHJveHkuY3BwIEBuby11bmlmeQogCiBVSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25p
dG9yLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRleCA5NDQxOWRkODZmMDcuLjk3ZmVkZDQ0MDlj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNXUEUudHh0CkBAIC0yMTAsNiArMjEwLDcgQEAgVUlQcm9jZXNzL2dsaWIv
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0xhdW5jaGVyL2ds
aWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJs
ZXdyYXBMYXVuY2hlci5jcHAKIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0ZsYXRwYWtMYXVuY2hl
ci5jcHAKK1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1hER0RCdXNQcm94eS5jcHAKIAogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL3NvdXAvV2Vic2l0ZURhdGFTdG9yZVNvdXAuY3BwCiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvdW5peC9XZWJzaXRlRGF0YVN0b3JlVW5peC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5j
aGVyLmNwcAppbmRleCAwOTJkNjc5OWYxZDEuLmVjYzgwNDY2Mzc4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExh
dW5jaGVyLmNwcApAQCAtMjAsNiArMjAsNyBAQAogCiAjaWYgRU5BQkxFKEJVQkJMRVdSQVBfU0FO
REJPWCkKIAorI2luY2x1ZGUgIlhER0RCdXNQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxnbGliLmg+CkBA
IC00MiwxMiArNDMsNiBAQAogI2luY2x1ZGUgIldheWxhbmRDb21wb3NpdG9yLmgiCiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKEdUSykKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndlYmtpdGd0ayIK
LSNlbGlmIFBMQVRGT1JNKFdQRSkKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndwZSIKLSNlbmRp
ZgotCiAjaWYgIWRlZmluZWQoTUZEX0FMTE9XX1NFQUxJTkcpICYmIEhBVkUoTElOVVhfTUVNRkRf
SCkKIAogLy8gVGhlc2UgZGVmaW5lcyB3ZXJlIGFkZGVkIGluIGdsaWJjIDIuMjcsIHRoZSBzYW1l
IHJlbGVhc2UgdGhhdCBhZGRlZCBtZW1mZF9jcmVhdGUuCkBAIC0xMDgsOCArMTAzLDcgQEAgc3Rh
dGljIGludCBjcmVhdGVTZWFsZWRNZW1GZFdpdGhEYXRhKGNvbnN0IGNoYXIqIG5hbWUsIGdjb25z
dHBvaW50ZXIgZGF0YSwgc2l6ZV8KICAgICByZXR1cm4gZmQ7CiB9CiAKLXN0YXRpYyBpbnQKLWFy
Z3NUb0ZkKGNvbnN0IFZlY3RvcjxDU3RyaW5nPiYgYXJncywgY29uc3QgY2hhciAqbmFtZSkKK2lu
dCBhcmd1bWVudHNUb0ZpbGVEZXNjcmlwdG9yKGNvbnN0IFZlY3RvcjxDU3RyaW5nPiYgYXJncywg
Y29uc3QgY2hhciogbmFtZSkKIHsKICAgICBHU3RyaW5nKiBidWZmZXIgPSBnX3N0cmluZ19uZXco
bnVsbHB0cik7CiAKQEAgLTE2NSwxNTAgKzE1OSw2IEBAIHN0YXRpYyBpbnQgY3JlYXRlRmxhdHBh
a0luZm8oKQogICAgIHJldHVybiBjcmVhdGVTZWFsZWRNZW1GZFdpdGhEYXRhKCJmbGF0cGFrLWlu
Zm8iLCBkYXRhLT5nZXQoKSwgc2l6ZSk7CiB9CiAKLWNsYXNzIFhER0RCdXNQcm94eUxhdW5jaGVy
IHsKLXB1YmxpYzoKLSAgICB2b2lkIHNldEFkZHJlc3MoY29uc3QgY2hhciogZGJ1c0FkZHJlc3Mp
Ci0gICAgewotICAgICAgICBpZiAoIWRidXNBZGRyZXNzIHx8ICFnX3N0cl9oYXNfcHJlZml4KGRi
dXNBZGRyZXNzLCAidW5peDoiKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGFwcFJ1bkRpcihnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfcnVudGlt
ZV9kaXIoKSwgQkFTRV9ESVJFQ1RPUlksIG51bGxwdHIpKTsKLSAgICAgICAgbV9wcm94eVBhdGgg
PSBtYWtlUHJveHlQYXRoKGFwcFJ1bkRpci5nZXQoKSk7Ci0KLSAgICAgICAgbV9zb2NrZXQgPSBk
YnVzQWRkcmVzczsKLSAgICAgICAgbV9wYXRoID0gZGJ1c0FkZHJlc3NUb1BhdGgoZGJ1c0FkZHJl
c3MpOwotICAgIH0KLQotICAgIGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1J1
bm5pbmc7IH07Ci0gICAgY29uc3QgQ1N0cmluZyYgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0
aDsgfTsKLSAgICBjb25zdCBDU3RyaW5nJiBwcm94eVBhdGgoKSBjb25zdCB7IHJldHVybiBtX3By
b3h5UGF0aDsgfTsKLQotICAgIHZvaWQgc2V0UGVybWlzc2lvbnMoVmVjdG9yPENTdHJpbmc+JiYg
cGVybWlzc2lvbnMpCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKCFpc1J1bm5pbmcoKSk7Ci0gICAgICAgIG1fcGVybWlzc2lvbnMgPSBXVEZN
b3ZlKHBlcm1pc3Npb25zKTsKLSAgICB9OwotCi0gICAgdm9pZCBsYXVuY2goYm9vbCBlbmFibGVM
b2dnaW5nKQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTighaXNSdW5uaW5nKCkpOwotCi0gICAgICAgIGlmIChtX3NvY2tldC5pc051bGwoKSB8
fCBtX3Byb3h5UGF0aC5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBp
bnQgc3luY0Zkc1syXTsKLSAgICAgICAgaWYgKHBpcGUoc3luY0ZkcykgPT0gLTEpCi0gICAgICAg
ICAgICBnX2Vycm9yKCJGYWlsZWQgdG8gbWFrZSBzeW5jZmRzIGZvciBkYnVzLXByb3h5OiAlcyIs
IGdfc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgc2V0Q2xvc2VPbkV4ZWMoc3luY0Zkc1swXSk7
Ci0KLSAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzeW5jRmRTdHIoZ19zdHJkdXBfcHJpbnRmKCIt
LWZkPSVkIiwgc3luY0Zkc1sxXSkpOwotCi0gICAgICAgIFZlY3RvcjxDU3RyaW5nPiBwcm94eUFy
Z3MgPSB7Ci0gICAgICAgICAgICBtX3NvY2tldCwgbV9wcm94eVBhdGgsCi0gICAgICAgICAgICAi
LS1maWx0ZXIiLAotICAgICAgICAgICAgc3luY0ZkU3RyLmdldCgpLAotICAgICAgICB9OwotCi0g
ICAgICAgIGlmIChlbmFibGVMb2dnaW5nKQotICAgICAgICAgICAgcHJveHlBcmdzLmFwcGVuZCgi
LS1sb2ciKTsKLQotICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0jaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCi0gICAgICAgIGNvbnN0IGNoYXIqIGFwcElEID0gYXBwbGljYXRp
b25JZCgmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBpZiAoIWFwcElEKQotICAgICAgICAgICAg
Z193YXJuaW5nKCJVbmFibGUgdG8gb3duIEQtQnVzIE1QUklTIG5hbWUgaW4gdGhlIFdlYktpdCBz
YW5kYm94OiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLQotICAgICAgICBhdXRvIG1wcmlzU2Vzc2lv
bklEID0gbWFrZVN0cmluZygiLS1vd249b3JnLm1wcmlzLk1lZGlhUGxheWVyMi4iLCBhcHBJRCk7
Ci0gICAgICAgIHByb3h5QXJncy5hcHBlbmQobXByaXNTZXNzaW9uSUQuYXNjaWkoKS5kYXRhKCkp
OwotI2VuZGlmCi0KLSAgICAgICAgcHJveHlBcmdzLmFwcGVuZFZlY3RvcihtX3Blcm1pc3Npb25z
KTsKLQotICAgICAgICBpbnQgcHJveHlGZCA9IGFyZ3NUb0ZkKHByb3h5QXJncywgImRidXMtcHJv
eHkiKTsKLSAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwcm94eUFyZ3NTdHIoZ19zdHJkdXBfcHJp
bnRmKCItLWFyZ3M9JWQiLCBwcm94eUZkKSk7Ci0KLSAgICAgICAgLy8gV2UgaGF2ZSB0byBydW4g
eGRnLWRidXMtcHJveHkgdW5kZXIgYnViYmxld3JhcCBiZWNhdXNlIHdlIG5lZWQgLy5mbGF0cGFr
LWluZm8gdG8gZXhpc3QgaW4KLSAgICAgICAgLy8geGRnLWRidXMtcHJveHkncyBtb3VudCBuYW1l
c3BhY2UuIFBvcnRhbHMgbWF5IHVzZSB0aGlzIGFzIGEgdHJ1c3RlZCB3YXkgdG8gZ2V0IHRoZQot
ICAgICAgICAvLyBzYW5kYm94ZWQgcHJvY2VzcydzIGFwcGxpY2F0aW9uIElELCBhbmQgd2lsbCBi
cmVhayBpZiBpdCdzIG1pc3NpbmcuCi0gICAgICAgIFZlY3RvcjxDU3RyaW5nPiBhcmdzID0gewot
ICAgICAgICAgICAgREJVU19QUk9YWV9FWEVDVVRBQkxFLAotICAgICAgICAgICAgcHJveHlBcmdz
U3RyLmdldCgpLAotICAgICAgICB9OwotCi0gICAgICAgIGludCBuYXJncyA9IGFyZ3Muc2l6ZSgp
ICsgMTsKLSAgICAgICAgaW50IGkgPSAwOwotICAgICAgICBjaGFyKiogYXJndiA9IGdfbmV3YShj
aGFyKiwgbmFyZ3MpOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGFyZyA6IGFyZ3MpCi0gICAg
ICAgICAgICBhcmd2W2krK10gPSBjb25zdF9jYXN0PGNoYXIqPihhcmcuZGF0YSgpKTsKLSAgICAg
ICAgYXJndltpXSA9IG51bGxwdHI7Ci0KLSAgICAgICAgLy8gV2FybmluZzogZG8gbm90IHNldCBh
IGNoaWxkIHNldHVwIGZ1bmN0aW9uLCBiZWNhdXNlIHdlIHdhbnQgR0lPIHRvIGJlIGFibGUgdG8g
c3Bhd24gd2l0aAotICAgICAgICAvLyBwb3NpeF9zcGF3bigpIHJhdGhlciB0aGFuIGZvcmsoKS9l
eGVjKCksIGluIG9yZGVyIHRvIGJldHRlciBhY2NvbW9kYXRlIGFwcGxpY2F0aW9ucyB0aGF0IHVz
ZQotICAgICAgICAvLyBhIGh1Z2UgYW1vdW50IG9mIG1lbW9yeSBvciBhZGRyZXNzIHNwYWNlIGlu
IHRoZSBVSSBwcm9jZXNzLCBsaWtlIEVjbGlwc2UuCi0gICAgICAgIEdSZWZQdHI8R1N1YnByb2Nl
c3NMYXVuY2hlcj4gbGF1bmNoZXIgPSBhZG9wdEdSZWYoZ19zdWJwcm9jZXNzX2xhdW5jaGVyX25l
dyhHX1NVQlBST0NFU1NfRkxBR1NfSU5IRVJJVF9GRFMpKTsKLSAgICAgICAgZ19zdWJwcm9jZXNz
X2xhdW5jaGVyX3Rha2VfZmQobGF1bmNoZXIuZ2V0KCksIHByb3h5RmQsIHByb3h5RmQpOwotICAg
ICAgICBnX3N1YnByb2Nlc3NfbGF1bmNoZXJfdGFrZV9mZChsYXVuY2hlci5nZXQoKSwgc3luY0Zk
c1sxXSwgc3luY0Zkc1sxXSk7Ci0KLSAgICAgICAgLy8gV2UgYXJlIHB1cnBvc2VmdWxseSBsZWF2
aW5nIHN5bmNGZHNbMF0gb3BlbiBoZXJlLgotICAgICAgICAvLyB4ZGctZGJ1cy1wcm94eSB3aWxs
IGV4aXQoKSBpdHNlbGYgb25jZSB0aGF0IGlzIGNsb3NlZCBvbiBvdXIgZXhpdAotCi0gICAgICAg
IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyBsYXVuY2hPcHRpb25zOwotICAgICAgICBs
YXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6
REJ1c1Byb3h5OwotICAgICAgICBpZiAoIW1fcGF0aC5pc051bGwoKSkKLSAgICAgICAgICAgIGxh
dW5jaE9wdGlvbnMuZXh0cmFTYW5kYm94UGF0aHMuYWRkKG1fcGF0aCwgU2FuZGJveFBlcm1pc3Np
b246OlJlYWRPbmx5KTsKLSAgICAgICAgR1JlZlB0cjxHU3VicHJvY2Vzcz4gcHJvY2VzcyA9IGJ1
YmJsZXdyYXBTcGF3bihsYXVuY2hlci5nZXQoKSwgbGF1bmNoT3B0aW9ucywgYXJndiwgJmVycm9y
Lm91dFB0cigpKTsKLSAgICAgICAgaWYgKCFwcm9jZXNzLmdldCgpKQotICAgICAgICAgICAgZ19l
cnJvcigiRmFpbGVkIHRvIHN0YXJ0IGRidXMgcHJveHk6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwot
Ci0gICAgICAgIGNoYXIgb3V0OwotICAgICAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGUgcHJv
eHkgaGFzIGNyZWF0ZWQgdGhlIHNvY2tldC4KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgbW9y
ZSBibG9ja2luZyBJTy4KLSAgICAgICAgaWYgKHJlYWQoc3luY0Zkc1swXSwgJm91dCwgMSkgIT0g
MSkKLSAgICAgICAgICAgIGdfZXJyb3IoIkZhaWxlZCB0byBmdWxseSBsYXVuY2ggZGJ1cy1wcm94
eSAlcyIsIGdfc3RyZXJyb3IoZXJybm8pKTsKLQotICAgICAgICBtX2lzUnVubmluZyA9IHRydWU7
Ci0gICAgfTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgQ1N0cmluZyBtYWtlUHJveHlQYXRoKGNv
bnN0IGNoYXIqIGFwcFJ1bkRpcikKLSAgICB7Ci0gICAgICAgIGlmIChnX21rZGlyX3dpdGhfcGFy
ZW50cyhhcHBSdW5EaXIsIDA3MDApID09IC0xKSB7Ci0gICAgICAgICAgICBnX3dhcm5pbmcoIkZh
aWxlZCB0byBta2RpciBmb3IgZGJ1cyBwcm94eSAoJXMpOiAlcyIsIGFwcFJ1bkRpciwgZ19zdHJl
cnJvcihlcnJubykpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotCi0gICAg
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gcHJveHlTb2NrZXRUZW1wbGF0ZShnX2J1aWxkX2ZpbGVuYW1l
KGFwcFJ1bkRpciwgImRidXMtcHJveHktWFhYWFhYIiwgbnVsbHB0cikpOwotICAgICAgICBpbnQg
ZmQ7Ci0gICAgICAgIGlmICgoZmQgPSBnX21rc3RlbXAocHJveHlTb2NrZXRUZW1wbGF0ZS5nZXQo
KSkpID09IC0xKSB7Ci0gICAgICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBtYWtlIHNvY2tl
dCBmaWxlIGZvciBkYnVzIHByb3h5OiAlcyIsIGdfc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAg
ICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLQotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAg
IHJldHVybiBDU3RyaW5nKHByb3h5U29ja2V0VGVtcGxhdGUuZ2V0KCkpOwotICAgIH07Ci0KLSAg
ICBzdGF0aWMgQ1N0cmluZyBkYnVzQWRkcmVzc1RvUGF0aChjb25zdCBjaGFyKiBhZGRyZXNzKQot
ICAgIHsKLSAgICAgICAgY29uc3QgY2hhciogcGF0aCA9IHN0cnN0cihhZGRyZXNzLCAicGF0aD0i
KTsKLSAgICAgICAgaWYgKCFwYXRoKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAg
ICBwYXRoICs9IHN0cmxlbigicGF0aD0iKTsKLSAgICAgICAgY29uc3QgY2hhciogcGF0aEVuZCA9
IHBhdGg7Ci0gICAgICAgIHdoaWxlICgqcGF0aEVuZCAmJiAqcGF0aEVuZCAhPSAnLCcpCi0gICAg
ICAgICAgICBwYXRoRW5kKys7Ci0KLSAgICAgICAgcmV0dXJuIENTdHJpbmcocGF0aCwgcGF0aEVu
ZCAtIHBhdGgpOwotICAgIH0KLQotICAgIENTdHJpbmcgbV9zb2NrZXQ7Ci0gICAgQ1N0cmluZyBt
X3BhdGg7Ci0gICAgQ1N0cmluZyBtX3Byb3h5UGF0aDsKLSAgICBib29sIG1faXNSdW5uaW5nIHsg
ZmFsc2UgfTsKLSAgICBWZWN0b3I8Q1N0cmluZz4gbV9wZXJtaXNzaW9uczsKLX07Ci0KIGVudW0g
Y2xhc3MgQmluZEZsYWdzIHsKICAgICBSZWFkT25seSwKICAgICBSZWFkV3JpdGUsCkBAIC0zMzAs
MTQgKzE4MCwxMyBAQCBzdGF0aWMgdm9pZCBiaW5kSWZFeGlzdHMoVmVjdG9yPENTdHJpbmc+JiBh
cmdzLCBjb25zdCBjaGFyKiBwYXRoLCBCaW5kRmxhZ3MgYmluZAogICAgIGFyZ3MuYXBwZW5kVmVj
dG9yKFZlY3RvcjxDU3RyaW5nPih7IGJpbmRUeXBlLCBwYXRoLCBwYXRoIH0pKTsKIH0KIAotc3Rh
dGljIHZvaWQgYmluZERCdXNTZXNzaW9uKFZlY3RvcjxDU3RyaW5nPiYgYXJncywgWERHREJ1c1By
b3h5TGF1bmNoZXImIHByb3h5KQorc3RhdGljIHZvaWQgYmluZERCdXNTZXNzaW9uKFZlY3RvcjxD
U3RyaW5nPiYgYXJncywgYm9vbCBhbGxvd1BvcnRhbHMpCiB7Ci0gICAgaWYgKCFwcm94eS5pc1J1
bm5pbmcoKSkKLSAgICAgICAgcHJveHkuc2V0QWRkcmVzcyhnX2dldGVudigiREJVU19TRVNTSU9O
X0JVU19BRERSRVNTIikpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8WERHREJ1c1Byb3h5
PiBwcm94eSA9IG1ha2VVbmlxdWU8WERHREJ1c1Byb3h5PihYREdEQnVzUHJveHk6OlR5cGU6OlNl
c3Npb25CdXMsIGFsbG93UG9ydGFscyk7CiAKLSAgICBpZiAoIXByb3h5LnByb3h5UGF0aCgpLmlz
TnVsbCgpICYmICFwcm94eS5wYXRoKCkuaXNOdWxsKCkpIHsKKyAgICBpZiAoIXByb3h5LT5wcm94
eVBhdGgoKS5pc051bGwoKSAmJiAhcHJveHktPnBhdGgoKS5pc051bGwoKSkgewogICAgICAgICBh
cmdzLmFwcGVuZFZlY3RvcihWZWN0b3I8Q1N0cmluZz4oewotICAgICAgICAgICAgIi0tYmluZCIs
IHByb3h5LnByb3h5UGF0aCgpLCBwcm94eS5wYXRoKCksCisgICAgICAgICAgICAiLS1iaW5kIiwg
cHJveHktPnByb3h5UGF0aCgpLCBwcm94eS0+cGF0aCgpLAogICAgICAgICB9KSk7CiAgICAgfQog
fQpAQCAtNDc0LDY0ICszMjMsMTkgQEAgc3RhdGljIHZvaWQgYmluZEd0a0RhdGEoVmVjdG9yPENT
dHJpbmc+JiBhcmdzKQogICAgIGJpbmRJZkV4aXN0cyhhcmdzLCB0aGVtZUhvbWVEYXRhLmdldCgp
KTsKICAgICBiaW5kSWZFeGlzdHMoYXJncywgaWNvbkhvbWVEYXRhLmdldCgpKTsKIH0KKyNlbmRp
ZgogCisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpCiBzdGF0aWMgdm9pZCBiaW5kQTExeShWZWN0
b3I8Q1N0cmluZz4mIGFyZ3MpCiB7Ci0gICAgc3RhdGljIFhER0RCdXNQcm94eUxhdW5jaGVyIHBy
b3h5OwotCi0gICAgaWYgKCFwcm94eS5pc1J1bm5pbmcoKSkgewotICAgICAgICAvLyBGSVhNRTog
QXZvaWQgYmxvY2tpbmcgSU8uLi4gKEl0IGlzIGF0IGxlYXN0IGEgb25lLXRpbWUgY29zdCkKLSAg
ICAgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IHNlc3Npb25CdXMgPSBhZG9wdEdSZWYoZ19i
dXNfZ2V0X3N5bmMoR19CVVNfVFlQRV9TRVNTSU9OLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAg
ICAgIGlmICghc2Vzc2lvbkJ1cy5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBHUmVmUHRyPEdEQnVzTWVzc2FnZT4gbXNnID0gYWRvcHRHUmVmKGdfZGJ1c19tZXNzYWdlX25l
d19tZXRob2RfY2FsbCgKLSAgICAgICAgICAgICJvcmcuYTExeS5CdXMiLCAiL29yZy9hMTF5L2J1
cyIsICJvcmcuYTExeS5CdXMiLCAiR2V0QWRkcmVzcyIpKTsKLSAgICAgICAgZ19kYnVzX21lc3Nh
Z2Vfc2V0X2JvZHkobXNnLmdldCgpLCBnX3ZhcmlhbnRfbmV3KCIoKSIpKTsKLSAgICAgICAgR1Jl
ZlB0cjxHREJ1c01lc3NhZ2U+IHJlcGx5ID0gYWRvcHRHUmVmKGdfZGJ1c19jb25uZWN0aW9uX3Nl
bmRfbWVzc2FnZV93aXRoX3JlcGx5X3N5bmMoCi0gICAgICAgICAgICBzZXNzaW9uQnVzLmdldCgp
LCBtc2cuZ2V0KCksCi0gICAgICAgICAgICBHX0RCVVNfU0VORF9NRVNTQUdFX0ZMQUdTX05PTkUs
Ci0gICAgICAgICAgICAzMDAwMCwKLSAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICBu
dWxscHRyLAotICAgICAgICAgICAgbnVsbHB0cikpOwotCi0gICAgICAgIGlmIChyZXBseS5nZXQo
KSkgewotICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgICAgICAg
ICAgaWYgKGdfZGJ1c19tZXNzYWdlX3RvX2dlcnJvcihyZXBseS5nZXQoKSwgJmVycm9yLm91dFB0
cigpKSkgewotICAgICAgICAgICAgICAgIGlmICghZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdldCgp
LCBHX0RCVVNfRVJST1IsIEdfREJVU19FUlJPUl9TRVJWSUNFX1VOS05PV04pKQotICAgICAgICAg
ICAgICAgICAgICBnX3dhcm5pbmcoIkNhbid0IGZpbmQgYTExeSBidXM6ICVzIiwgZXJyb3ItPm1l
c3NhZ2UpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBHVW5pcXVlT3V0
UHRyPGNoYXI+IGExMXlBZGRyZXNzOwotICAgICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQoZ19k
YnVzX21lc3NhZ2VfZ2V0X2JvZHkocmVwbHkuZ2V0KCkpLCAiKHMpIiwgJmExMXlBZGRyZXNzLm91
dFB0cigpKTsKLSAgICAgICAgICAgICAgICBwcm94eS5zZXRBZGRyZXNzKGExMXlBZGRyZXNzLmdl
dCgpKTsKLSNpZiBVU0UoQVRTUEkpCi0gICAgICAgICAgICAgICAgaWYgKCFwcm94eS5wcm94eVBh
dGgoKS5pc051bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5KCkuc2V0QWNjZXNzaWJpbGl0eUJ1c0FkZHJlc3MobWFrZVN0cmluZygidW5peDpw
YXRoPSIsIHByb3h5LnByb3h5UGF0aCgpLmRhdGEoKSkpOwotI2VuZGlmCi0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFhER0RCdXNQcm94eT4gcHJv
eHkgPSBtYWtlVW5pcXVlPFhER0RCdXNQcm94eT4oWERHREJ1c1Byb3h5OjpUeXBlOjpBY2Nlc3Np
YmlsaXR5QnVzKTsKIAotICAgICAgICBwcm94eS5zZXRQZXJtaXNzaW9ucyh7Ci0gICAgICAgICAg
ICAiLS1zbG9wcHktbmFtZXMiLAotICAgICAgICAgICAgIi0tY2FsbD1vcmcuYTExeS5hdHNwaS5S
ZWdpc3RyeT1vcmcuYTExeS5hdHNwaS5Tb2NrZXQuRW1iZWRAL29yZy9hMTF5L2F0c3BpL2FjY2Vz
c2libGUvcm9vdCIsCi0gICAgICAgICAgICAiLS1jYWxsPW9yZy5hMTF5LmF0c3BpLlJlZ2lzdHJ5
PW9yZy5hMTF5LmF0c3BpLlNvY2tldC5VbmVtYmVkQC9vcmcvYTExeS9hdHNwaS9hY2Nlc3NpYmxl
L3Jvb3QiLAotICAgICAgICAgICAgIi0tY2FsbD1vcmcuYTExeS5hdHNwaS5SZWdpc3RyeT1vcmcu
YTExeS5hdHNwaS5SZWdpc3RyeS5HZXRSZWdpc3RlcmVkRXZlbnRzQC9vcmcvYTExeS9hdHNwaS9y
ZWdpc3RyeSIsCi0gICAgICAgICAgICAiLS1jYWxsPW9yZy5hMTF5LmF0c3BpLlJlZ2lzdHJ5PW9y
Zy5hMTF5LmF0c3BpLkRldmljZUV2ZW50Q29udHJvbGxlci5HZXRLZXlzdHJva2VMaXN0ZW5lcnNA
L29yZy9hMTF5L2F0c3BpL3JlZ2lzdHJ5L2RldmljZWV2ZW50Y29udHJvbGxlciIsCi0gICAgICAg
ICAgICAiLS1jYWxsPW9yZy5hMTF5LmF0c3BpLlJlZ2lzdHJ5PW9yZy5hMTF5LmF0c3BpLkRldmlj
ZUV2ZW50Q29udHJvbGxlci5HZXREZXZpY2VFdmVudExpc3RlbmVyc0Avb3JnL2ExMXkvYXRzcGkv
cmVnaXN0cnkvZGV2aWNlZXZlbnRjb250cm9sbGVyIiwKLSAgICAgICAgICAgICItLWNhbGw9b3Jn
LmExMXkuYXRzcGkuUmVnaXN0cnk9b3JnLmExMXkuYXRzcGkuRGV2aWNlRXZlbnRDb250cm9sbGVy
Lk5vdGlmeUxpc3RlbmVyc1N5bmNAL29yZy9hMTF5L2F0c3BpL3JlZ2lzdHJ5L2RldmljZWV2ZW50
Y29udHJvbGxlciIsCi0gICAgICAgICAgICAiLS1jYWxsPW9yZy5hMTF5LmF0c3BpLlJlZ2lzdHJ5
PW9yZy5hMTF5LmF0c3BpLkRldmljZUV2ZW50Q29udHJvbGxlci5Ob3RpZnlMaXN0ZW5lcnNBc3lu
Y0Avb3JnL2ExMXkvYXRzcGkvcmVnaXN0cnkvZGV2aWNlZXZlbnRjb250cm9sbGVyIiwKLSAgICAg
ICAgfSk7Ci0KLSAgICAgICAgcHJveHkubGF1bmNoKCFnX3N0cmNtcDAoZ19nZXRlbnYoIldFQktJ
VF9FTkFCTEVfQTExWV9EQlVTX1BST1hZX0xPR0dJTkciKSwgIjEiKSk7Ci0gICAgfQotCi0gICAg
aWYgKCFwcm94eS5wcm94eVBhdGgoKS5pc051bGwoKSkgewotICAgICAgICBHVW5pcXVlUHRyPGNo
YXI+IHByb3h5QWRkcmVzcyhnX3N0cmR1cF9wcmludGYoInVuaXg6cGF0aD0lcyIsIHByb3h5LnBy
b3h5UGF0aCgpLmRhdGEoKSkpOwotICAgICAgICBhcmdzLmFwcGVuZFZlY3RvcihWZWN0b3I8Q1N0
cmluZz4oewotICAgICAgICAgICAgIi0tcm8tYmluZCIsIHByb3h5LnByb3h5UGF0aCgpLCBwcm94
eS5wcm94eVBhdGgoKSwKKyAgICBpZiAoIXByb3h5LT5wcm94eVBhdGgoKS5pc051bGwoKSkgewor
ICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHByb3h5QWRkcmVzcyhnX3N0cmR1cF9wcmludGYoInVu
aXg6cGF0aD0lcyIsIHByb3h5LT5wcm94eVBhdGgoKS5kYXRhKCkpKTsKKyAgICAgICAgYXJncy5h
cHBlbmRWZWN0b3IoVmVjdG9yPENTdHJpbmc+IHsKKyAgICAgICAgICAgICItLXJvLWJpbmQiLCBw
cm94eS0+cHJveHlQYXRoKCksIHByb3h5LT5wcm94eVBhdGgoKSwKICAgICAgICAgICAgICItLXNl
dGVudiIsICJBVF9TUElfQlVTX0FERFJFU1MiLCBwcm94eUFkZHJlc3MuZ2V0KCksCi0gICAgICAg
IH0pKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogI2VuZGlmCkBAIC05MTgsOCArNzIyLDYgQEAg
R1JlZlB0cjxHU3VicHJvY2Vzcz4gYnViYmxld3JhcFNwYXduKEdTdWJwcm9jZXNzTGF1bmNoZXIq
IGxhdW5jaGVyLCBjb25zdCBQcm9jZXMKICAgICB9CiAKICAgICBpZiAobGF1bmNoT3B0aW9ucy5w
cm9jZXNzVHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpXZWIpIHsKLSAgICAg
ICAgc3RhdGljIFhER0RCdXNQcm94eUxhdW5jaGVyIHByb3h5OwotCiAjaWYgUExBVEZPUk0oV0FZ
TEFORCkgJiYgVVNFKEVHTCkKICAgICAgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlz
cGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKICAgICAg
ICAgICAgIGJpbmRXYXlsYW5kKHNhbmRib3hBcmdzKTsKQEAgLTk0MCw3ICs3NDIsNyBAQCBHUmVm
UHRyPEdTdWJwcm9jZXNzPiBidWJibGV3cmFwU3Bhd24oR1N1YnByb2Nlc3NMYXVuY2hlciogbGF1
bmNoZXIsIGNvbnN0IFByb2NlcwogICAgICAgICAgICAgICAgIHNhbmRib3hBcmdzLmFwcGVuZFZl
Y3RvcihWZWN0b3I8Q1N0cmluZz4oeyAiLS1iaW5kLXRyeSIsIGV4dHJhUGF0aC51dGY4KCksIGV4
dHJhUGF0aC51dGY4KCkgfSkpOwogICAgICAgICB9CiAKLSAgICAgICAgYmluZERCdXNTZXNzaW9u
KHNhbmRib3hBcmdzLCBwcm94eSk7CisgICAgICAgIGJpbmREQnVzU2Vzc2lvbihzYW5kYm94QXJn
cywgZmxhdHBha0luZm9GZCAhPSAtMSk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbW92
ZSB0byBQaXBld2lyZSBhcyBzb29uIGFzIHZpYWJsZSwgUHVsc2UgZG9lc24ndCByZXN0cmljdCBj
bGllbnRzIGF0bS4KICAgICAgICAgYmluZFB1bHNlKHNhbmRib3hBcmdzKTsKICAgICAgICAgYmlu
ZFNuZGlvKHNhbmRib3hBcmdzKTsKQEAgLTk0OSwyMyArNzUxLDEyIEBAIEdSZWZQdHI8R1N1YnBy
b2Nlc3M+IGJ1YmJsZXdyYXBTcGF3bihHU3VicHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgY29u
c3QgUHJvY2VzCiAgICAgICAgIGJpbmRPcGVuR0woc2FuZGJveEFyZ3MpOwogICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBhbHNvIGZpeGVkIGJ5IFBpcGV3aXJlIG9uY2UgaW4gdXNlLgogICAgICAg
ICBiaW5kVjRsKHNhbmRib3hBcmdzKTsKLSNpZiBQTEFURk9STShHVEspCisjaWYgRU5BQkxFKEFD
Q0VTU0lCSUxJVFkpCiAgICAgICAgIGJpbmRBMTF5KHNhbmRib3hBcmdzKTsKKyNlbmRpZgorI2lm
IFBMQVRGT1JNKEdUSykKICAgICAgICAgYmluZEd0a0RhdGEoc2FuZGJveEFyZ3MpOwogI2VuZGlm
Ci0KLSAgICAgICAgaWYgKCFwcm94eS5pc1J1bm5pbmcoKSkgewotICAgICAgICAgICAgVmVjdG9y
PENTdHJpbmc+IHBlcm1pc3Npb25zID0gewotICAgICAgICAgICAgICAgIC8vIEdTdHJlYW1lcnMg
cGx1Z2luIGluc3RhbGwgaGVscGVyLgotICAgICAgICAgICAgICAgICItLWNhbGw9b3JnLmZyZWVk
ZXNrdG9wLlBhY2thZ2VLaXQ9b3JnLmZyZWVkZXNrdG9wLlBhY2thZ2VLaXQuTW9kaWZ5Mi5JbnN0
YWxsR1N0cmVhbWVyUmVzb3VyY2VzQC9vcmcvZnJlZWRlc2t0b3AvUGFja2FnZUtpdCIKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICBpZiAoZmxhdHBha0luZm9GZCAhPSAtMSkgewotICAgICAg
ICAgICAgICAgIC8vIHhkZy1kZXNrdG9wLXBvcnRhbCB1c2VkIGJ5IEdUSyBhbmQgdXMuCi0gICAg
ICAgICAgICAgICAgcGVybWlzc2lvbnMuYXBwZW5kKCItLXRhbGs9b3JnLmZyZWVkZXNrdG9wLnBv
cnRhbC5EZXNrdG9wIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm94eS5zZXRQZXJt
aXNzaW9ucyhXVEZNb3ZlKHBlcm1pc3Npb25zKSk7Ci0gICAgICAgICAgICBwcm94eS5sYXVuY2go
IWdfc3RyY21wMChnX2dldGVudigiV0VCS0lUX0VOQUJMRV9EQlVTX1BST1hZX0xPR0dJTkciKSwg
IjEiKSk7Ci0gICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyBPbmx5IFgxMSB1c2Vy
cyBuZWVkIHRoaXMgZm9yIFhTaG0gd2hpY2ggaXMgb25seSB0aGUgV2ViIHByb2Nlc3MuCiAgICAg
ICAgIHNhbmRib3hBcmdzLmFwcGVuZCgiLS11bnNoYXJlLWlwYyIpOwpAQCAtOTkxLDcgKzc4Miw3
IEBAIEdSZWZQdHI8R1N1YnByb2Nlc3M+IGJ1YmJsZXdyYXBTcGF3bihHU3VicHJvY2Vzc0xhdW5j
aGVyKiBsYXVuY2hlciwgY29uc3QgUHJvY2VzCiAgICAgZ19zdWJwcm9jZXNzX2xhdW5jaGVyX3Rh
a2VfZmQobGF1bmNoZXIsIHNlY2NvbXBGZCwgc2VjY29tcEZkKTsKICAgICBzYW5kYm94QXJncy5h
cHBlbmRWZWN0b3IoVmVjdG9yPENTdHJpbmc+KHsgIi0tc2VjY29tcCIsIGZkU3RyLmdldCgpIH0p
KTsKIAotICAgIGludCBid3JhcEZkID0gYXJnc1RvRmQoc2FuZGJveEFyZ3MsICJid3JhcCIpOwor
ICAgIGludCBid3JhcEZkID0gYXJndW1lbnRzVG9GaWxlRGVzY3JpcHRvcihzYW5kYm94QXJncywg
ImJ3cmFwIik7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBid3JhcEZkU3RyKGdfc3RyZHVwX3ByaW50
ZigiJWQiLCBid3JhcEZkKSk7CiAgICAgZ19zdWJwcm9jZXNzX2xhdW5jaGVyX3Rha2VfZmQobGF1
bmNoZXIsIGJ3cmFwRmQsIGJ3cmFwRmQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuaAppbmRleCAwYzJj
ZDU1NTRmMDUuLjM4YjdjMTA5ZWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5oCkBAIC0zNyw2ICsz
Nyw3IEBAIHR5cGVkZWYgc3RydWN0IF9HU3VicHJvY2Vzc0xhdW5jaGVyIEdTdWJwcm9jZXNzTGF1
bmNoZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogR1JlZlB0cjxHU3VicHJvY2Vzcz4gYnViYmxl
d3JhcFNwYXduKEdTdWJwcm9jZXNzTGF1bmNoZXIqLCBjb25zdCBQcm9jZXNzTGF1bmNoZXI6Okxh
dW5jaE9wdGlvbnMmLCBjaGFyKiogYXJndiwgR0Vycm9yKiopOworaW50IGFyZ3VtZW50c1RvRmls
ZURlc2NyaXB0b3IoY29uc3QgVmVjdG9yPENTdHJpbmc+JiwgY29uc3QgY2hhciopOwogCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1hER0RC
dXNQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1hER0RC
dXNQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ODQx
ZTdmNzFjZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVu
Y2hlci9nbGliL1hER0RCdXNQcm94eS5jcHAKQEAgLTAsMCArMSwyMTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgsIDIwMjIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlhER0RCdXNQcm94eS5oIgorCisjaWYgRU5BQkxFKEJVQkJMRVdS
QVBfU0FOREJPWCkKKyNpbmNsdWRlICJCdWJibGV3cmFwTGF1bmNoZXIuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4K
KyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1
ZVB0ci5oPgorCisjaWYgUExBVEZPUk0oR1RLKQorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Vi
a2l0Z3RrIgorI2VsaWYgUExBVEZPUk0oV1BFKQorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3Bl
IgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitYREdEQnVzUHJveHk6OlhER0RCdXNQ
cm94eShUeXBlIHR5cGUsIGJvb2wgYWxsb3dQb3J0YWxzKQorICAgIDogbV90eXBlKHR5cGUpCit7
CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6OlNlc3Npb25CdXM6CisgICAg
ICAgIG1fZGJ1c0FkZHJlc3MgPSBnX2dldGVudigiREJVU19TRVNTSU9OX0JVU19BRERSRVNTIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6QWNjZXNzaWJpbGl0eUJ1czoKKyAgICAg
ICAgbV9kYnVzQWRkcmVzcyA9IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eSgpLmFjY2Vzc2liaWxpdHlCdXNBZGRyZXNzKCkudXRmOCgpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBpZiAobV9kYnVzQWRkcmVzcy5pc051bGwoKSB8fCAhZ19zdHJfaGFzX3ByZWZp
eChtX2RidXNBZGRyZXNzLmRhdGEoKSwgInVuaXg6IikpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fcHJveHlQYXRoID0gbWFrZVByb3h5KCk7CisgICAgaWYgKG1fcHJveHlQYXRoLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm47CisKKyNpZiBVU0UoQVRTUEkpCisgICAgaWYgKG1fdHlwZSA9PSBU
eXBlOjpBY2Nlc3NpYmlsaXR5QnVzKQorICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXkoKS5zZXRBY2Nlc3NpYmlsaXR5QnVzQWRkcmVzcyhtYWtlU3RyaW5nKCJ1
bml4OnBhdGg9IiwgbV9wcm94eVBhdGguZGF0YSgpKSk7CisjZW5kaWYKKworICAgIGlmIChjb25z
dCBjaGFyKiBwYXRoID0gc3Ryc3RyKG1fZGJ1c0FkZHJlc3MuZGF0YSgpLCAicGF0aD0iKSkgewor
ICAgICAgICBwYXRoICs9IHN0cmxlbigicGF0aD0iKTsKKyAgICAgICAgY29uc3QgY2hhciogcGF0
aEVuZCA9IHBhdGg7CisgICAgICAgIHdoaWxlICgqcGF0aEVuZCAmJiAqcGF0aEVuZCAhPSAnLCcp
CisgICAgICAgICAgICBwYXRoRW5kKys7CisKKyAgICAgICAgbV9wYXRoID0gQ1N0cmluZyhwYXRo
LCBwYXRoRW5kIC0gcGF0aCk7CisgICAgfQorCisgICAgbGF1bmNoKGFsbG93UG9ydGFscyk7Cit9
CisKK0NTdHJpbmcgWERHREJ1c1Byb3h5OjptYWtlUHJveHkoKSBjb25zdAoreworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gYXBwUnVuRGlyKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9ydW50aW1l
X2RpcigpLCBCQVNFX0RJUkVDVE9SWSwgbnVsbHB0cikpOworICAgIGlmIChnX21rZGlyX3dpdGhf
cGFyZW50cyhhcHBSdW5EaXIuZ2V0KCksIDA3MDApID09IC0xKSB7CisgICAgICAgIGdfd2Fybmlu
ZygiRmFpbGVkIHRvIG1rZGlyIGZvciBkYnVzIHByb3h5ICglcyk6ICVzIiwgYXBwUnVuRGlyLmdl
dCgpLCBnX3N0cmVycm9yKGVycm5vKSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisg
ICAgYXV0byBwcm94eVRlbXBsYXRlID0gW10oVHlwZSB0eXBlKSAtPiBjb25zdCBjaGFyKiB7Cisg
ICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIFR5cGU6OlNlc3Npb25CdXM6Cisg
ICAgICAgICAgICByZXR1cm4gImJ1cy1wcm94eS1YWFhYWFgiOworICAgICAgICBjYXNlIFR5cGU6
OkFjY2Vzc2liaWxpdHlCdXM6CisgICAgICAgICAgICByZXR1cm4gImExMXktcHJveHktWFhYWFhY
IjsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH07CisKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHByb3h5U29ja2V0VGVtcGxhdGUoZ19idWlsZF9m
aWxlbmFtZShhcHBSdW5EaXIuZ2V0KCksIHByb3h5VGVtcGxhdGUobV90eXBlKSwgbnVsbHB0cikp
OworICAgIGludCBmZDsKKyAgICBpZiAoKGZkID0gZ19ta3N0ZW1wKHByb3h5U29ja2V0VGVtcGxh
dGUuZ2V0KCkpKSA9PSAtMSkgeworICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBtYWtlIHNv
Y2tldCBmaWxlICVzIGZvciBkYnVzIHByb3h5OiAlcyIsIHByb3h5U29ja2V0VGVtcGxhdGUuZ2V0
KCksIGdfc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICBjbG9zZShmZCk7CisgICAgcmV0dXJuIHByb3h5U29ja2V0VGVtcGxhdGUuZ2V0KCk7Cit9CisK
K3ZvaWQgWERHREJ1c1Byb3h5OjpsYXVuY2goYm9vbCBhbGxvd1BvcnRhbHMpIGNvbnN0Cit7Cisg
ICAgaW50IHN5bmNGZHNbMl07CisgICAgaWYgKHBpcGUoc3luY0ZkcykgPT0gLTEpCisgICAgICAg
IGdfZXJyb3IoIkZhaWxlZCB0byBtYWtlIHN5bmNmZHMgZm9yIGRidXMtcHJveHk6ICVzIiwgZ19z
dHJlcnJvcihlcnJubykpOworICAgIHNldENsb3NlT25FeGVjKHN5bmNGZHNbMF0pOworCisgICAg
R1VuaXF1ZVB0cjxjaGFyPiBzeW5jRmRTdHIoZ19zdHJkdXBfcHJpbnRmKCItLWZkPSVkIiwgc3lu
Y0Zkc1sxXSkpOworICAgIFZlY3RvcjxDU3RyaW5nPiBwcm94eUFyZ3MgPSB7CisgICAgICAgIG1f
ZGJ1c0FkZHJlc3MsIG1fcHJveHlQYXRoLAorICAgICAgICAiLS1maWx0ZXIiLAorICAgICAgICBz
eW5jRmRTdHIuZ2V0KCkKKyAgICB9OworCisgICAgYXV0byBlbmFibGVMb2dnaW5nID0gW10oVHlw
ZSB0eXBlKSAtPiBib29sIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2Ug
VHlwZTo6U2Vzc2lvbkJ1czoKKyAgICAgICAgICAgIHJldHVybiAhZ19zdHJjbXAwKGdfZ2V0ZW52
KCJXRUJLSVRfRU5BQkxFX0RCVVNfUFJPWFlfTE9HR0lORyIpLCAiMSIpOworICAgICAgICBjYXNl
IFR5cGU6OkFjY2Vzc2liaWxpdHlCdXM6CisgICAgICAgICAgICByZXR1cm4gIWdfc3RyY21wMChn
X2dldGVudigiV0VCS0lUX0VOQUJMRV9BMTFZX0RCVVNfUFJPWFlfTE9HR0lORyIpLCAiMSIpOwor
ICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsK
KyAgICBpZiAoZW5hYmxlTG9nZ2luZyhtX3R5cGUpKQorICAgICAgICBwcm94eUFyZ3MuYXBwZW5k
KCItLWxvZyIpOworCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6OlNlc3Np
b25CdXM6IHsKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKKyAgICAgICAgaWYgKGF1dG8qIGFw
cCA9IGdfYXBwbGljYXRpb25fZ2V0X2RlZmF1bHQoKSkgeworICAgICAgICAgICAgaWYgKGNvbnN0
IGNoYXIqIGFwcElEID0gZ19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRpb25faWQoYXBwKSkgewor
ICAgICAgICAgICAgICAgIGF1dG8gbXByaXNTZXNzaW9uSUQgPSBtYWtlU3RyaW5nKCItLW93bj1v
cmcubXByaXMuTWVkaWFQbGF5ZXIyLiIsIGFwcElEKTsKKyAgICAgICAgICAgICAgICBwcm94eUFy
Z3MuYXBwZW5kKG1wcmlzU2Vzc2lvbklELmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIC8vIEdTdHJlYW1lcnMgcGx1Z2luIGluc3RhbGwg
aGVscGVyLgorICAgICAgICBwcm94eUFyZ3MuYXBwZW5kKCItLWNhbGw9b3JnLmZyZWVkZXNrdG9w
LlBhY2thZ2VLaXQ9b3JnLmZyZWVkZXNrdG9wLlBhY2thZ2VLaXQuTW9kaWZ5Mi5JbnN0YWxsR1N0
cmVhbWVyUmVzb3VyY2VzQC9vcmcvZnJlZWRlc2t0b3AvUGFja2FnZUtpdCIpOworCisgICAgICAg
IGlmIChhbGxvd1BvcnRhbHMpCisgICAgICAgICAgICBwcm94eUFyZ3MuYXBwZW5kKCItLXRhbGs9
b3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIFR5cGU6OkFjY2Vzc2liaWxpdHlCdXM6CisgICAgICAgIHByb3h5QXJncy5hcHBl
bmRWZWN0b3IoVmVjdG9yPENTdHJpbmc+IHsKKyAgICAgICAgICAgICItLXNsb3BweS1uYW1lcyIs
CisgICAgICAgICAgICAiLS1jYWxsPW9yZy5hMTF5LmF0c3BpLlJlZ2lzdHJ5PW9yZy5hMTF5LmF0
c3BpLlNvY2tldC5FbWJlZEAvb3JnL2ExMXkvYXRzcGkvYWNjZXNzaWJsZS9yb290IiwKKyAgICAg
ICAgICAgICItLWNhbGw9b3JnLmExMXkuYXRzcGkuUmVnaXN0cnk9b3JnLmExMXkuYXRzcGkuU29j
a2V0LlVuZW1iZWRAL29yZy9hMTF5L2F0c3BpL2FjY2Vzc2libGUvcm9vdCIsCisgICAgICAgICAg
ICAiLS1jYWxsPW9yZy5hMTF5LmF0c3BpLlJlZ2lzdHJ5PW9yZy5hMTF5LmF0c3BpLlJlZ2lzdHJ5
LkdldFJlZ2lzdGVyZWRFdmVudHNAL29yZy9hMTF5L2F0c3BpL3JlZ2lzdHJ5IiwKKyAgICAgICAg
ICAgICItLWNhbGw9b3JnLmExMXkuYXRzcGkuUmVnaXN0cnk9b3JnLmExMXkuYXRzcGkuRGV2aWNl
RXZlbnRDb250cm9sbGVyLkdldEtleXN0cm9rZUxpc3RlbmVyc0Avb3JnL2ExMXkvYXRzcGkvcmVn
aXN0cnkvZGV2aWNlZXZlbnRjb250cm9sbGVyIiwKKyAgICAgICAgICAgICItLWNhbGw9b3JnLmEx
MXkuYXRzcGkuUmVnaXN0cnk9b3JnLmExMXkuYXRzcGkuRGV2aWNlRXZlbnRDb250cm9sbGVyLkdl
dERldmljZUV2ZW50TGlzdGVuZXJzQC9vcmcvYTExeS9hdHNwaS9yZWdpc3RyeS9kZXZpY2VldmVu
dGNvbnRyb2xsZXIiLAorICAgICAgICAgICAgIi0tY2FsbD1vcmcuYTExeS5hdHNwaS5SZWdpc3Ry
eT1vcmcuYTExeS5hdHNwaS5EZXZpY2VFdmVudENvbnRyb2xsZXIuTm90aWZ5TGlzdGVuZXJzU3lu
Y0Avb3JnL2ExMXkvYXRzcGkvcmVnaXN0cnkvZGV2aWNlZXZlbnRjb250cm9sbGVyIiwKKyAgICAg
ICAgICAgICItLWNhbGw9b3JnLmExMXkuYXRzcGkuUmVnaXN0cnk9b3JnLmExMXkuYXRzcGkuRGV2
aWNlRXZlbnRDb250cm9sbGVyLk5vdGlmeUxpc3RlbmVyc0FzeW5jQC9vcmcvYTExeS9hdHNwaS9y
ZWdpc3RyeS9kZXZpY2VldmVudGNvbnRyb2xsZXIiLAorICAgICAgICB9KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgLy8gV2UgaGF2ZSB0byBydW4geGRnLWRidXMtcHJveHkgdW5kZXIg
YnViYmxld3JhcCBiZWNhdXNlIHdlIG5lZWQgLy5mbGF0cGFrLWluZm8gdG8gZXhpc3QgaW4KKyAg
ICAvLyB4ZGctZGJ1cy1wcm94eSdzIG1vdW50IG5hbWVzcGFjZS4gUG9ydGFscyBtYXkgdXNlIHRo
aXMgYXMgYSB0cnVzdGVkIHdheSB0byBnZXQgdGhlCisgICAgLy8gc2FuZGJveGVkIHByb2Nlc3Mn
cyBhcHBsaWNhdGlvbiBJRCwgYW5kIHdpbGwgYnJlYWsgaWYgaXQncyBtaXNzaW5nLgorICAgIGlu
dCBwcm94eUZkID0gYXJndW1lbnRzVG9GaWxlRGVzY3JpcHRvcihwcm94eUFyZ3MsICJkYnVzLXBy
b3h5Iik7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBwcm94eUFyZ3NTdHIoZ19zdHJkdXBfcHJpbnRm
KCItLWFyZ3M9JWQiLCBwcm94eUZkKSk7CisgICAgVmVjdG9yPENTdHJpbmc+IGFyZ3MgPSB7Cisg
ICAgICAgIERCVVNfUFJPWFlfRVhFQ1VUQUJMRSwKKyAgICAgICAgcHJveHlBcmdzU3RyLmdldCgp
LAorICAgIH07CisgICAgaW50IG5hcmdzID0gYXJncy5zaXplKCkgKyAxOworICAgIGludCBpID0g
MDsKKyAgICBjaGFyKiogYXJndiA9IGdfbmV3YShjaGFyKiwgbmFyZ3MpOworICAgIGZvciAoY29u
c3QgYXV0byYgYXJnIDogYXJncykKKyAgICAgICAgYXJndltpKytdID0gY29uc3RfY2FzdDxjaGFy
Kj4oYXJnLmRhdGEoKSk7CisgICAgYXJndltpXSA9IG51bGxwdHI7CisKKyAgICAvLyBXYXJuaW5n
OiBkbyBub3Qgc2V0IGEgY2hpbGQgc2V0dXAgZnVuY3Rpb24sIGJlY2F1c2Ugd2Ugd2FudCBHSU8g
dG8gYmUgYWJsZSB0byBzcGF3biB3aXRoCisgICAgLy8gcG9zaXhfc3Bhd24oKSByYXRoZXIgdGhh
biBmb3JrKCkvZXhlYygpLCBpbiBvcmRlciB0byBiZXR0ZXIgYWNjb21vZGF0ZSBhcHBsaWNhdGlv
bnMgdGhhdCB1c2UKKyAgICAvLyBhIGh1Z2UgYW1vdW50IG9mIG1lbW9yeSBvciBhZGRyZXNzIHNw
YWNlIGluIHRoZSBVSSBwcm9jZXNzLCBsaWtlIEVjbGlwc2UuCisgICAgR1JlZlB0cjxHU3VicHJv
Y2Vzc0xhdW5jaGVyPiBsYXVuY2hlciA9IGFkb3B0R1JlZihnX3N1YnByb2Nlc3NfbGF1bmNoZXJf
bmV3KEdfU1VCUFJPQ0VTU19GTEFHU19JTkhFUklUX0ZEUykpOworICAgIGdfc3VicHJvY2Vzc19s
YXVuY2hlcl90YWtlX2ZkKGxhdW5jaGVyLmdldCgpLCBwcm94eUZkLCBwcm94eUZkKTsKKyAgICBn
X3N1YnByb2Nlc3NfbGF1bmNoZXJfdGFrZV9mZChsYXVuY2hlci5nZXQoKSwgc3luY0Zkc1sxXSwg
c3luY0Zkc1sxXSk7CisKKyAgICAvLyBXZSBhcmUgcHVycG9zZWZ1bGx5IGxlYXZpbmcgc3luY0Zk
c1swXSBvcGVuIGhlcmUuCisgICAgLy8geGRnLWRidXMtcHJveHkgd2lsbCBleGl0KCkgaXRzZWxm
IG9uY2UgdGhhdCBpcyBjbG9zZWQgb24gb3VyIGV4aXQuCisKKyAgICBQcm9jZXNzTGF1bmNoZXI6
OkxhdW5jaE9wdGlvbnMgbGF1bmNoT3B0aW9uczsKKyAgICBsYXVuY2hPcHRpb25zLnByb2Nlc3NU
eXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6REJ1c1Byb3h5OworICAgIGlmICht
X3R5cGUgPT0gVHlwZTo6QWNjZXNzaWJpbGl0eUJ1cyAmJiAhbV9wYXRoLmlzTnVsbCgpKQorICAg
ICAgICBsYXVuY2hPcHRpb25zLmV4dHJhU2FuZGJveFBhdGhzLmFkZChtX3BhdGgsIFNhbmRib3hQ
ZXJtaXNzaW9uOjpSZWFkT25seSk7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwor
ICAgIEdSZWZQdHI8R1N1YnByb2Nlc3M+IHByb2Nlc3MgPSBidWJibGV3cmFwU3Bhd24obGF1bmNo
ZXIuZ2V0KCksIGxhdW5jaE9wdGlvbnMsIGFyZ3YsICZlcnJvci5vdXRQdHIoKSk7CisgICAgaWYg
KCFwcm9jZXNzKQorICAgICAgICBnX2Vycm9yKCJGYWlsZWQgdG8gc3RhcnQgZGJ1cyBwcm94eTog
JXMiLCBlcnJvci0+bWVzc2FnZSk7CisKKyAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGUgcHJv
eHkgaGFzIGNyZWF0ZWQgdGhlIHNvY2tldC4KKyAgICAvLyBGSVhNRTogVGhpcyBpcyBtb3JlIGJs
b2NraW5nIElPLgorICAgIGNoYXIgb3V0OworICAgIGlmIChyZWFkKHN5bmNGZHNbMF0sICZvdXQs
IDEpICE9IDEpCisgICAgICAgIGdfZXJyb3IoIkZhaWxlZCB0byBmdWxseSBsYXVuY2ggZGJ1cy1w
cm94eTogJXMiLCBnX3N0cmVycm9yKGVycm5vKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKEJVQkJMRVdSQVBfU0FOREJPWCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvWERHREJ1c1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1hER0RCdXNQcm94eS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2Q0YTg1YTYzYTFmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9YREdEQnVzUHJv
eHkuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LCAyMDIyIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEJVQkJMRVdS
QVBfU0FOREJPWCkKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFhER0RCdXNQcm94eSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoWERHREJ1c1Byb3h5KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZW51bSBjbGFzcyBUeXBlIHsgU2Vzc2lvbkJ1cywgQWNjZXNzaWJpbGl0eUJ1cyB9OworICAgIFhE
R0RCdXNQcm94eShUeXBlLCBib29sID0gZmFsc2UpOworCisgICAgY29uc3QgQ1N0cmluZyYgcHJv
eHlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wcm94eVBhdGg7IH0KKyAgICBjb25zdCBDU3RyaW5n
JiBwYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CisKK3ByaXZhdGU6CisgICAgQ1N0cmlu
ZyBtYWtlUHJveHkoKSBjb25zdDsKKyAgICB2b2lkIGxhdW5jaChib29sKSBjb25zdDsKKworICAg
IFR5cGUgbV90eXBlOworICAgIENTdHJpbmcgbV9kYnVzQWRkcmVzczsKKyAgICBDU3RyaW5nIG1f
cHJveHlQYXRoOworICAgIENTdHJpbmcgbV9wYXRoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQlVCQkxFV1JBUF9TQU5EQk9YKQo=
</data>
<flag name="review"
          id="478265"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>