Skip to content

Commit f9d78f2

Browse files
authored
Merge branch 'main' into fix-filter-ccs
2 parents 14e70bb + 962e953 commit f9d78f2

File tree

85 files changed

+2659
-776
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+2659
-776
lines changed

build-tools-internal/version.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
elasticsearch = 9.1.0
2-
lucene = 10.2.0
2+
lucene = 10.2.1-snapshot-ae6484f43e6
33

44
bundled_jdk_vendor = openjdk
55
bundled_jdk = 24+36@1f9ff9062db4449d8ca828c504ffae90

docs/Versions.asciidoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11

22
include::{docs-root}/shared/versions/stack/{source_branch}.asciidoc[]
33

4-
:lucene_version: 10.2.0
5-
:lucene_version_path: 10_2_0
4+
:lucene_version: 10.2.1
5+
:lucene_version_path: 10_2_1
66
:jdk: 11.0.2
77
:jdk_major: 11
88
:build_type: tar

docs/changelog/126314.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pr: 126314
2+
summary: Add refresh to synonyms put / delete APIs to wait for synonyms to be accessible and reload analyzers
3+
area: Analysis
4+
type: bug
5+
issues:
6+
- 121441

docs/changelog/126653.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 126653
2+
summary: Retry shard movements during ESQL query
3+
area: ES|QL
4+
type: enhancement
5+
issues: []

docs/changelog/126935.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pr: 126935
2+
summary: Synonyms API - Add refresh parameter to check synonyms index and reload analyzers
3+
area: Analysis
4+
type: enhancement
5+
issues:
6+
- 121441

docs/release-notes/known-issues.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,23 @@ mapped_pages:
77
# Elasticsearch known issues [elasticsearch-known-issues]
88
Known issues are significant defects or limitations that may impact your implementation. These issues are actively being worked on and will be addressed in a future release. Review the Elasticsearch known issues to help you make informed decisions, such as upgrading to a new version.
99

10+
## 9.0.0 [elasticsearch-9.0.0-known-issues]
11+
* Elasticsearch on Windows might fail to start, or might forbid some file-related operations, when referencing paths with a case different from the one stored by the filesystem. Windows treats paths as case-insensitive, but the filesystem stores them with case. Entitlements, the new security system used by Elasticsearch, treat all paths as case-sensitive, and can therefore prevent access to a path that should be accessible.
12+
13+
For example: If Elasticsearch is installed in `C:\ELK\elasticsearch`, and you try to launch it as `c:\elk\elasticsearch\bin\elasticsearch.bat`, you will get a `NotEntitledException` while booting. This is because Elasticsearch blocks access to `c:\elk\elasticsearch`, because does not match `C:\ELK\elasticsearch`. \
14+
This issue will be fixed in a future patch release (see [PR #126990](https://github.com/elastic/elasticsearch/pull/126990)).
15+
16+
As a workaround, make sure that all paths you specify have the same casing as the paths stored in the filesystem. Files and directory names should be entered as they appear in Windows Explorer or in a command prompt. This applies to paths specified in the command line, config files, environment variables and secure settings.
17+
18+
* Active Directory authentication is blocked by default. Entitlements, the new security system used by Elasticsearch, has a policy for the `x-pack-core` module that is too restrictive, and does not allow the LDAP library used for AD authentication to perform outbound network connections. This issue will be fixed in a future patch release (see [PR #126992](https://github.com/elastic/elasticsearch/pull/126992)).
19+
20+
As a workaround, you can temporarily patch the policy using a JVM option:
21+
22+
1. Create a file called `${ES_CONF_PATH}/jvm_options/workaround-127061.options`.
23+
2. Add the following line to the new file:
24+
25+
```
26+
-Des.entitlements.policy.x-pack-core=dmVyc2lvbnM6CiAgLSA4LjE4LjAKICAtIDkuMC4wCnBvbGljeToKICB1bmJvdW5kaWQubGRhcHNkazoKICAgIC0gc2V0X2h0dHBzX2Nvbm5lY3Rpb25fcHJvcGVydGllcwogICAgLSBvdXRib3VuZF9uZXR3b3Jr
27+
```
28+
29+
For information about editing your JVM settings, refer to [JVM settings](https://www.elastic.co/docs/reference/elasticsearch/jvm-settings).

gradle/verification-metadata.xml

Lines changed: 75 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -2971,129 +2971,129 @@
29712971
<sha256 value="015d5c229f3cd5c0ebf175c1da08d596d94043362ae9d92637d88848c90537c8" origin="Generated by Gradle"/>
29722972
</artifact>
29732973
</component>
2974-
<component group="org.apache.lucene" name="lucene-analysis-common" version="10.2.0">
2975-
<artifact name="lucene-analysis-common-10.2.0.jar">
2976-
<sha256 value="11dae94401d520fade4cf1a97773e1a83b0c6434243c504670f2cbe33cbbc11d" origin="Generated by Gradle"/>
2974+
<component group="org.apache.lucene" name="lucene-analysis-common" version="10.2.1-snapshot-ae6484f43e6">
2975+
<artifact name="lucene-analysis-common-10.2.1-snapshot-ae6484f43e6.jar">
2976+
<sha256 value="6937376789954a8ba29e92aa7f19f685be4127b866caa304daab064307037ac4" origin="Generated by Gradle"/>
29772977
</artifact>
29782978
</component>
2979-
<component group="org.apache.lucene" name="lucene-analysis-icu" version="10.2.0">
2980-
<artifact name="lucene-analysis-icu-10.2.0.jar">
2981-
<sha256 value="418ebd80950e43ff3cab04545f4356a1a6f6487356d5939a7105830001427c77" origin="Generated by Gradle"/>
2979+
<component group="org.apache.lucene" name="lucene-analysis-icu" version="10.2.1-snapshot-ae6484f43e6">
2980+
<artifact name="lucene-analysis-icu-10.2.1-snapshot-ae6484f43e6.jar">
2981+
<sha256 value="366b0138ffa7e5020fd3713ce9d9d109584ab552843b69948c25ef70236db0b3" origin="Generated by Gradle"/>
29822982
</artifact>
29832983
</component>
2984-
<component group="org.apache.lucene" name="lucene-analysis-kuromoji" version="10.2.0">
2985-
<artifact name="lucene-analysis-kuromoji-10.2.0.jar">
2986-
<sha256 value="c47a368fffac76020e310fe7e45207ab3c9d54967f7a035d2f6453fd4f98702d" origin="Generated by Gradle"/>
2984+
<component group="org.apache.lucene" name="lucene-analysis-kuromoji" version="10.2.1-snapshot-ae6484f43e6">
2985+
<artifact name="lucene-analysis-kuromoji-10.2.1-snapshot-ae6484f43e6.jar">
2986+
<sha256 value="26edb5ff3d7ecbc96933bdb19e141c1b943770ebafa3e188f121ad0c4ac180e8" origin="Generated by Gradle"/>
29872987
</artifact>
29882988
</component>
2989-
<component group="org.apache.lucene" name="lucene-analysis-morfologik" version="10.2.0">
2990-
<artifact name="lucene-analysis-morfologik-10.2.0.jar">
2991-
<sha256 value="dd3153a94d43c3cdeea235a1edc9becb11ea74f5dbaf4a53005f3b6a77ac731d" origin="Generated by Gradle"/>
2989+
<component group="org.apache.lucene" name="lucene-analysis-morfologik" version="10.2.1-snapshot-ae6484f43e6">
2990+
<artifact name="lucene-analysis-morfologik-10.2.1-snapshot-ae6484f43e6.jar">
2991+
<sha256 value="346d4413c6869797e6aa7c9dc619dd7178557581cc43f0650297b414ec16cb79" origin="Generated by Gradle"/>
29922992
</artifact>
29932993
</component>
2994-
<component group="org.apache.lucene" name="lucene-analysis-nori" version="10.2.0">
2995-
<artifact name="lucene-analysis-nori-10.2.0.jar">
2996-
<sha256 value="48e0cf2452be7538655dbd2f0d67a9453c5fbac515aaf5ceeb8e854045a2684b" origin="Generated by Gradle"/>
2994+
<component group="org.apache.lucene" name="lucene-analysis-nori" version="10.2.1-snapshot-ae6484f43e6">
2995+
<artifact name="lucene-analysis-nori-10.2.1-snapshot-ae6484f43e6.jar">
2996+
<sha256 value="d225d16bc306c630f78d3e93b6a6ca693d82e0cbc9fbd94f3a682f98d09db196" origin="Generated by Gradle"/>
29972997
</artifact>
29982998
</component>
2999-
<component group="org.apache.lucene" name="lucene-analysis-phonetic" version="10.2.0">
3000-
<artifact name="lucene-analysis-phonetic-10.2.0.jar">
3001-
<sha256 value="993afea6401c89642345b23ab9eca70cdae9a1c038f1b6b7f1c64138392f695c" origin="Generated by Gradle"/>
2999+
<component group="org.apache.lucene" name="lucene-analysis-phonetic" version="10.2.1-snapshot-ae6484f43e6">
3000+
<artifact name="lucene-analysis-phonetic-10.2.1-snapshot-ae6484f43e6.jar">
3001+
<sha256 value="d1b203bae5e13c7e41878fa0cca7dee829b76c262ad172c9a0e9ddfee969a771" origin="Generated by Gradle"/>
30023002
</artifact>
30033003
</component>
3004-
<component group="org.apache.lucene" name="lucene-analysis-smartcn" version="10.2.0">
3005-
<artifact name="lucene-analysis-smartcn-10.2.0.jar">
3006-
<sha256 value="5ed3d5d3310612dda2fb6ce26eb601d690931b2a5f56a702def5b3b998aa582c" origin="Generated by Gradle"/>
3004+
<component group="org.apache.lucene" name="lucene-analysis-smartcn" version="10.2.1-snapshot-ae6484f43e6">
3005+
<artifact name="lucene-analysis-smartcn-10.2.1-snapshot-ae6484f43e6.jar">
3006+
<sha256 value="c52c5f820de69992f0c4b34357f9aa338f580c87eb4c37c6005ef64617f0f5c1" origin="Generated by Gradle"/>
30073007
</artifact>
30083008
</component>
3009-
<component group="org.apache.lucene" name="lucene-analysis-stempel" version="10.2.0">
3010-
<artifact name="lucene-analysis-stempel-10.2.0.jar">
3011-
<sha256 value="908528bcc03b87d4ee314f6099f3333e3f1cd4a139e793e2e1ed554164341906" origin="Generated by Gradle"/>
3009+
<component group="org.apache.lucene" name="lucene-analysis-stempel" version="10.2.1-snapshot-ae6484f43e6">
3010+
<artifact name="lucene-analysis-stempel-10.2.1-snapshot-ae6484f43e6.jar">
3011+
<sha256 value="5f9552254bce85d20c5e36d7c5a99b7eaa0c199f79b67b27067b0e1ccd589101" origin="Generated by Gradle"/>
30123012
</artifact>
30133013
</component>
3014-
<component group="org.apache.lucene" name="lucene-backward-codecs" version="10.2.0">
3015-
<artifact name="lucene-backward-codecs-10.2.0.jar">
3016-
<sha256 value="5f91c3eba54cf25d990e9c6a3cd13185521ca61c546eb5603f0c258627d0dfc6" origin="Generated by Gradle"/>
3014+
<component group="org.apache.lucene" name="lucene-backward-codecs" version="10.2.1-snapshot-ae6484f43e6">
3015+
<artifact name="lucene-backward-codecs-10.2.1-snapshot-ae6484f43e6.jar">
3016+
<sha256 value="b95dca15b5002700a347006deba1514fea4952454a3678d59c697b5bbfc5ab50" origin="Generated by Gradle"/>
30173017
</artifact>
30183018
</component>
3019-
<component group="org.apache.lucene" name="lucene-codecs" version="10.2.0">
3020-
<artifact name="lucene-codecs-10.2.0.jar">
3021-
<sha256 value="48aed5ccc90d3173a5484e073050e9396bb7333591e35c23188da48883bed071" origin="Generated by Gradle"/>
3019+
<component group="org.apache.lucene" name="lucene-codecs" version="10.2.1-snapshot-ae6484f43e6">
3020+
<artifact name="lucene-codecs-10.2.1-snapshot-ae6484f43e6.jar">
3021+
<sha256 value="42353bf402867d623a7123be39ff01ee780a1b842be1fa7deb1bce6fa74d8590" origin="Generated by Gradle"/>
30223022
</artifact>
30233023
</component>
3024-
<component group="org.apache.lucene" name="lucene-core" version="10.2.0">
3025-
<artifact name="lucene-core-10.2.0.jar">
3026-
<sha256 value="15fc7bf52454c50e7107b068e2386b3cb2fdf024698bf7965eb3dd33e6813e76" origin="Generated by Gradle"/>
3024+
<component group="org.apache.lucene" name="lucene-core" version="10.2.1-snapshot-ae6484f43e6">
3025+
<artifact name="lucene-core-10.2.1-snapshot-ae6484f43e6.jar">
3026+
<sha256 value="e138d97f5f99f4163a04e289546c34a950e5805ce3dbae7c9e2ea6b80e200bb9" origin="Generated by Gradle"/>
30273027
</artifact>
30283028
</component>
3029-
<component group="org.apache.lucene" name="lucene-expressions" version="10.2.0">
3030-
<artifact name="lucene-expressions-10.2.0.jar">
3031-
<sha256 value="f27ad8ae738adfaf685249ea84d597cb2f13fd7ba427c2b468afb14dfba11613" origin="Generated by Gradle"/>
3029+
<component group="org.apache.lucene" name="lucene-expressions" version="10.2.1-snapshot-ae6484f43e6">
3030+
<artifact name="lucene-expressions-10.2.1-snapshot-ae6484f43e6.jar">
3031+
<sha256 value="a76d416f1fb95b104051071adec4f68b62d1d38ed1b9b9f41f5179538cb2117c" origin="Generated by Gradle"/>
30323032
</artifact>
30333033
</component>
3034-
<component group="org.apache.lucene" name="lucene-facet" version="10.2.0">
3035-
<artifact name="lucene-facet-10.2.0.jar">
3036-
<sha256 value="4c822196f98576b52fd2fd6cf9b727c4066fca95c8c98074ff960f2a5f4178ee" origin="Generated by Gradle"/>
3034+
<component group="org.apache.lucene" name="lucene-facet" version="10.2.1-snapshot-ae6484f43e6">
3035+
<artifact name="lucene-facet-10.2.1-snapshot-ae6484f43e6.jar">
3036+
<sha256 value="8da50cde7e28c219c12ff0ca0ad79d70366d460e653b635f26d70864c6bfb72b" origin="Generated by Gradle"/>
30373037
</artifact>
30383038
</component>
3039-
<component group="org.apache.lucene" name="lucene-grouping" version="10.2.0">
3040-
<artifact name="lucene-grouping-10.2.0.jar">
3041-
<sha256 value="24dc2dff712371abc753453cb1b563edbaf94a2191f9471f2bc21c89deae21cf" origin="Generated by Gradle"/>
3039+
<component group="org.apache.lucene" name="lucene-grouping" version="10.2.1-snapshot-ae6484f43e6">
3040+
<artifact name="lucene-grouping-10.2.1-snapshot-ae6484f43e6.jar">
3041+
<sha256 value="e32f0055672b48c0b8a8386f0e1c7e3f52644799e0ac028df09e6f76e2c1bee5" origin="Generated by Gradle"/>
30423042
</artifact>
30433043
</component>
3044-
<component group="org.apache.lucene" name="lucene-highlighter" version="10.2.0">
3045-
<artifact name="lucene-highlighter-10.2.0.jar">
3046-
<sha256 value="68b867175d2ce9d9fb42256423d47fb4045163176f9e3c2614086657d2442a77" origin="Generated by Gradle"/>
3044+
<component group="org.apache.lucene" name="lucene-highlighter" version="10.2.1-snapshot-ae6484f43e6">
3045+
<artifact name="lucene-highlighter-10.2.1-snapshot-ae6484f43e6.jar">
3046+
<sha256 value="d98cb5700706dbd29121157bd1addf8f98457566029d576e98f9d8f52765aba8" origin="Generated by Gradle"/>
30473047
</artifact>
30483048
</component>
3049-
<component group="org.apache.lucene" name="lucene-join" version="10.2.0">
3050-
<artifact name="lucene-join-10.2.0.jar">
3051-
<sha256 value="4307f925407a47938b5b284edd70ff9ea28d283ffdec23d7485db6cb6c48eecb" origin="Generated by Gradle"/>
3049+
<component group="org.apache.lucene" name="lucene-join" version="10.2.1-snapshot-ae6484f43e6">
3050+
<artifact name="lucene-join-10.2.1-snapshot-ae6484f43e6.jar">
3051+
<sha256 value="d37fa3dc38e8ddd641fd94f65f7a3ab06911674b1755f0612027f34c30039eeb" origin="Generated by Gradle"/>
30523052
</artifact>
30533053
</component>
3054-
<component group="org.apache.lucene" name="lucene-memory" version="10.2.0">
3055-
<artifact name="lucene-memory-10.2.0.jar">
3056-
<sha256 value="49e00517f1e090169e686f4073efa387c3ad782d4d4a22b2f33f510328d2cb92" origin="Generated by Gradle"/>
3054+
<component group="org.apache.lucene" name="lucene-memory" version="10.2.1-snapshot-ae6484f43e6">
3055+
<artifact name="lucene-memory-10.2.1-snapshot-ae6484f43e6.jar">
3056+
<sha256 value="5a4a2519b066cd12ee6b99327eb86ddc44efb90081146501beb3b98c7810efae" origin="Generated by Gradle"/>
30573057
</artifact>
30583058
</component>
3059-
<component group="org.apache.lucene" name="lucene-misc" version="10.2.0">
3060-
<artifact name="lucene-misc-10.2.0.jar">
3061-
<sha256 value="509c4a9ef26a8db257e8ea63eb77275c1fe43e8c33a8f19cc0393b1b58492ff0" origin="Generated by Gradle"/>
3059+
<component group="org.apache.lucene" name="lucene-misc" version="10.2.1-snapshot-ae6484f43e6">
3060+
<artifact name="lucene-misc-10.2.1-snapshot-ae6484f43e6.jar">
3061+
<sha256 value="54a087d5d1ba529c13d77a045bf9870ddfec78d4a056cafa376eba3593807b09" origin="Generated by Gradle"/>
30623062
</artifact>
30633063
</component>
3064-
<component group="org.apache.lucene" name="lucene-queries" version="10.2.0">
3065-
<artifact name="lucene-queries-10.2.0.jar">
3066-
<sha256 value="7b5335b9db3bba42f4c3a7188bbaf7602d2cad2f84787d4e569b329ed38e9367" origin="Generated by Gradle"/>
3064+
<component group="org.apache.lucene" name="lucene-queries" version="10.2.1-snapshot-ae6484f43e6">
3065+
<artifact name="lucene-queries-10.2.1-snapshot-ae6484f43e6.jar">
3066+
<sha256 value="ba91caf5e0ebe1fdb598c5fac6a22d3ab8e909d4a5fe2156a5f7d2f3d37aaed3" origin="Generated by Gradle"/>
30673067
</artifact>
30683068
</component>
3069-
<component group="org.apache.lucene" name="lucene-queryparser" version="10.2.0">
3070-
<artifact name="lucene-queryparser-10.2.0.jar">
3071-
<sha256 value="43e58b4b89a399fb925a07343f787cdd1baa0353ddf7910d0053cd0aa2437d16" origin="Generated by Gradle"/>
3069+
<component group="org.apache.lucene" name="lucene-queryparser" version="10.2.1-snapshot-ae6484f43e6">
3070+
<artifact name="lucene-queryparser-10.2.1-snapshot-ae6484f43e6.jar">
3071+
<sha256 value="c818fc0a8a4f7c89c8a4da68d09fc51519f71ef5fe126dea25e49d92f7ef3d5d" origin="Generated by Gradle"/>
30723072
</artifact>
30733073
</component>
3074-
<component group="org.apache.lucene" name="lucene-sandbox" version="10.2.0">
3075-
<artifact name="lucene-sandbox-10.2.0.jar">
3076-
<sha256 value="53ae14d5a088f0a731e18c30d8a1b4cbfe028a832cb5e07aa9889d94f389f380" origin="Generated by Gradle"/>
3074+
<component group="org.apache.lucene" name="lucene-sandbox" version="10.2.1-snapshot-ae6484f43e6">
3075+
<artifact name="lucene-sandbox-10.2.1-snapshot-ae6484f43e6.jar">
3076+
<sha256 value="92a7a3754250c37bd63aa3192706ae4c836fcb3a298596293b9d9964206d4ebe" origin="Generated by Gradle"/>
30773077
</artifact>
30783078
</component>
3079-
<component group="org.apache.lucene" name="lucene-spatial-extras" version="10.2.0">
3080-
<artifact name="lucene-spatial-extras-10.2.0.jar">
3081-
<sha256 value="f1e8d7970892de0ec56e8b58f5e3f9021f319755e87ad22ca9fa1a684cf38f2d" origin="Generated by Gradle"/>
3079+
<component group="org.apache.lucene" name="lucene-spatial-extras" version="10.2.1-snapshot-ae6484f43e6">
3080+
<artifact name="lucene-spatial-extras-10.2.1-snapshot-ae6484f43e6.jar">
3081+
<sha256 value="ec61f33001af50a4244407ed4c06546c2d567b87c0e5f8a1076404972ed0355b" origin="Generated by Gradle"/>
30823082
</artifact>
30833083
</component>
3084-
<component group="org.apache.lucene" name="lucene-spatial3d" version="10.2.0">
3085-
<artifact name="lucene-spatial3d-10.2.0.jar">
3086-
<sha256 value="52592455a5c92518f0e73424ada943600700f9c187f15eae936aa1fd2c4b9c51" origin="Generated by Gradle"/>
3084+
<component group="org.apache.lucene" name="lucene-spatial3d" version="10.2.1-snapshot-ae6484f43e6">
3085+
<artifact name="lucene-spatial3d-10.2.1-snapshot-ae6484f43e6.jar">
3086+
<sha256 value="d7ef6ec7ec2c7111f41f494176ba82d9800afb46e1c129f5df175b3312c22f2a" origin="Generated by Gradle"/>
30873087
</artifact>
30883088
</component>
3089-
<component group="org.apache.lucene" name="lucene-suggest" version="10.2.0">
3090-
<artifact name="lucene-suggest-10.2.0.jar">
3091-
<sha256 value="1fbcf35565bd7e9634795afd17deed8b51c6150d2b4165ca7cbfb76bf82b065d" origin="Generated by Gradle"/>
3089+
<component group="org.apache.lucene" name="lucene-suggest" version="10.2.1-snapshot-ae6484f43e6">
3090+
<artifact name="lucene-suggest-10.2.1-snapshot-ae6484f43e6.jar">
3091+
<sha256 value="834e34badfa0af72604641a1ac52c29f6bfc2d83e35006837ba752604f125b96" origin="Generated by Gradle"/>
30923092
</artifact>
30933093
</component>
3094-
<component group="org.apache.lucene" name="lucene-test-framework" version="10.2.0">
3095-
<artifact name="lucene-test-framework-10.2.0.jar">
3096-
<sha256 value="6ab50d8cb5976c6707610cfa0b6238922f2bbd66307e45f831b18564627d454f" origin="Generated by Gradle"/>
3094+
<component group="org.apache.lucene" name="lucene-test-framework" version="10.2.1-snapshot-ae6484f43e6">
3095+
<artifact name="lucene-test-framework-10.2.1-snapshot-ae6484f43e6.jar">
3096+
<sha256 value="a7be31ba894f41ec43a51401b8094b1ea96a848362c9de494d2d5382a2aafc71" origin="Generated by Gradle"/>
30973097
</artifact>
30983098
</component>
30993099
<component group="org.apache.maven" name="maven-api-meta" version="4.0.0-alpha-9">

0 commit comments

Comments
 (0)