Skip to content

Commit 908a395

Browse files
author
awstools
committed
feat(client-bedrock-agent): This release introduces APIs to upload documents directly into a Knowledge Base
1 parent 824c92f commit 908a395

21 files changed

+3390
-447
lines changed

clients/client-bedrock-agent/README.md

+32
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,14 @@ DeleteKnowledgeBase
362362

363363
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock-agent/command/DeleteKnowledgeBaseCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/DeleteKnowledgeBaseCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/DeleteKnowledgeBaseCommandOutput/)
364364

365+
</details>
366+
<details>
367+
<summary>
368+
DeleteKnowledgeBaseDocuments
369+
</summary>
370+
371+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock-agent/command/DeleteKnowledgeBaseDocumentsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/DeleteKnowledgeBaseDocumentsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/DeleteKnowledgeBaseDocumentsCommandOutput/)
372+
365373
</details>
366374
<details>
367375
<summary>
@@ -466,6 +474,14 @@ GetKnowledgeBase
466474

467475
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock-agent/command/GetKnowledgeBaseCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/GetKnowledgeBaseCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/GetKnowledgeBaseCommandOutput/)
468476

477+
</details>
478+
<details>
479+
<summary>
480+
GetKnowledgeBaseDocuments
481+
</summary>
482+
483+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock-agent/command/GetKnowledgeBaseDocumentsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/GetKnowledgeBaseDocumentsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/GetKnowledgeBaseDocumentsCommandOutput/)
484+
469485
</details>
470486
<details>
471487
<summary>
@@ -474,6 +490,14 @@ GetPrompt
474490

475491
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock-agent/command/GetPromptCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/GetPromptCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/GetPromptCommandOutput/)
476492

493+
</details>
494+
<details>
495+
<summary>
496+
IngestKnowledgeBaseDocuments
497+
</summary>
498+
499+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock-agent/command/IngestKnowledgeBaseDocumentsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/IngestKnowledgeBaseDocumentsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/IngestKnowledgeBaseDocumentsCommandOutput/)
500+
477501
</details>
478502
<details>
479503
<summary>
@@ -554,6 +578,14 @@ ListIngestionJobs
554578

555579
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock-agent/command/ListIngestionJobsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/ListIngestionJobsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/ListIngestionJobsCommandOutput/)
556580

581+
</details>
582+
<details>
583+
<summary>
584+
ListKnowledgeBaseDocuments
585+
</summary>
586+
587+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock-agent/command/ListKnowledgeBaseDocumentsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/ListKnowledgeBaseDocumentsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock-agent/Interface/ListKnowledgeBaseDocumentsCommandOutput/)
588+
557589
</details>
558590
<details>
559591
<summary>

clients/client-bedrock-agent/src/BedrockAgent.ts

+92
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ import {
8787
DeleteKnowledgeBaseCommandInput,
8888
DeleteKnowledgeBaseCommandOutput,
8989
} from "./commands/DeleteKnowledgeBaseCommand";
90+
import {
91+
DeleteKnowledgeBaseDocumentsCommand,
92+
DeleteKnowledgeBaseDocumentsCommandInput,
93+
DeleteKnowledgeBaseDocumentsCommandOutput,
94+
} from "./commands/DeleteKnowledgeBaseDocumentsCommand";
9095
import {
9196
DeletePromptCommand,
9297
DeletePromptCommandInput,
@@ -144,7 +149,17 @@ import {
144149
GetKnowledgeBaseCommandInput,
145150
GetKnowledgeBaseCommandOutput,
146151
} from "./commands/GetKnowledgeBaseCommand";
152+
import {
153+
GetKnowledgeBaseDocumentsCommand,
154+
GetKnowledgeBaseDocumentsCommandInput,
155+
GetKnowledgeBaseDocumentsCommandOutput,
156+
} from "./commands/GetKnowledgeBaseDocumentsCommand";
147157
import { GetPromptCommand, GetPromptCommandInput, GetPromptCommandOutput } from "./commands/GetPromptCommand";
158+
import {
159+
IngestKnowledgeBaseDocumentsCommand,
160+
IngestKnowledgeBaseDocumentsCommandInput,
161+
IngestKnowledgeBaseDocumentsCommandOutput,
162+
} from "./commands/IngestKnowledgeBaseDocumentsCommand";
148163
import {
149164
ListAgentActionGroupsCommand,
150165
ListAgentActionGroupsCommandInput,
@@ -187,6 +202,11 @@ import {
187202
ListIngestionJobsCommandInput,
188203
ListIngestionJobsCommandOutput,
189204
} from "./commands/ListIngestionJobsCommand";
205+
import {
206+
ListKnowledgeBaseDocumentsCommand,
207+
ListKnowledgeBaseDocumentsCommandInput,
208+
ListKnowledgeBaseDocumentsCommandOutput,
209+
} from "./commands/ListKnowledgeBaseDocumentsCommand";
190210
import {
191211
ListKnowledgeBasesCommand,
192212
ListKnowledgeBasesCommandInput,
@@ -284,6 +304,7 @@ const commands = {
284304
DeleteFlowAliasCommand,
285305
DeleteFlowVersionCommand,
286306
DeleteKnowledgeBaseCommand,
307+
DeleteKnowledgeBaseDocumentsCommand,
287308
DeletePromptCommand,
288309
DisassociateAgentKnowledgeBaseCommand,
289310
GetAgentCommand,
@@ -297,7 +318,9 @@ const commands = {
297318
GetFlowVersionCommand,
298319
GetIngestionJobCommand,
299320
GetKnowledgeBaseCommand,
321+
GetKnowledgeBaseDocumentsCommand,
300322
GetPromptCommand,
323+
IngestKnowledgeBaseDocumentsCommand,
301324
ListAgentActionGroupsCommand,
302325
ListAgentAliasesCommand,
303326
ListAgentKnowledgeBasesCommand,
@@ -308,6 +331,7 @@ const commands = {
308331
ListFlowsCommand,
309332
ListFlowVersionsCommand,
310333
ListIngestionJobsCommand,
334+
ListKnowledgeBaseDocumentsCommand,
311335
ListKnowledgeBasesCommand,
312336
ListPromptsCommand,
313337
ListTagsForResourceCommand,
@@ -634,6 +658,23 @@ export interface BedrockAgent {
634658
cb: (err: any, data?: DeleteKnowledgeBaseCommandOutput) => void
635659
): void;
636660

661+
/**
662+
* @see {@link DeleteKnowledgeBaseDocumentsCommand}
663+
*/
664+
deleteKnowledgeBaseDocuments(
665+
args: DeleteKnowledgeBaseDocumentsCommandInput,
666+
options?: __HttpHandlerOptions
667+
): Promise<DeleteKnowledgeBaseDocumentsCommandOutput>;
668+
deleteKnowledgeBaseDocuments(
669+
args: DeleteKnowledgeBaseDocumentsCommandInput,
670+
cb: (err: any, data?: DeleteKnowledgeBaseDocumentsCommandOutput) => void
671+
): void;
672+
deleteKnowledgeBaseDocuments(
673+
args: DeleteKnowledgeBaseDocumentsCommandInput,
674+
options: __HttpHandlerOptions,
675+
cb: (err: any, data?: DeleteKnowledgeBaseDocumentsCommandOutput) => void
676+
): void;
677+
637678
/**
638679
* @see {@link DeletePromptCommand}
639680
*/
@@ -810,6 +851,23 @@ export interface BedrockAgent {
810851
cb: (err: any, data?: GetKnowledgeBaseCommandOutput) => void
811852
): void;
812853

854+
/**
855+
* @see {@link GetKnowledgeBaseDocumentsCommand}
856+
*/
857+
getKnowledgeBaseDocuments(
858+
args: GetKnowledgeBaseDocumentsCommandInput,
859+
options?: __HttpHandlerOptions
860+
): Promise<GetKnowledgeBaseDocumentsCommandOutput>;
861+
getKnowledgeBaseDocuments(
862+
args: GetKnowledgeBaseDocumentsCommandInput,
863+
cb: (err: any, data?: GetKnowledgeBaseDocumentsCommandOutput) => void
864+
): void;
865+
getKnowledgeBaseDocuments(
866+
args: GetKnowledgeBaseDocumentsCommandInput,
867+
options: __HttpHandlerOptions,
868+
cb: (err: any, data?: GetKnowledgeBaseDocumentsCommandOutput) => void
869+
): void;
870+
813871
/**
814872
* @see {@link GetPromptCommand}
815873
*/
@@ -821,6 +879,23 @@ export interface BedrockAgent {
821879
cb: (err: any, data?: GetPromptCommandOutput) => void
822880
): void;
823881

882+
/**
883+
* @see {@link IngestKnowledgeBaseDocumentsCommand}
884+
*/
885+
ingestKnowledgeBaseDocuments(
886+
args: IngestKnowledgeBaseDocumentsCommandInput,
887+
options?: __HttpHandlerOptions
888+
): Promise<IngestKnowledgeBaseDocumentsCommandOutput>;
889+
ingestKnowledgeBaseDocuments(
890+
args: IngestKnowledgeBaseDocumentsCommandInput,
891+
cb: (err: any, data?: IngestKnowledgeBaseDocumentsCommandOutput) => void
892+
): void;
893+
ingestKnowledgeBaseDocuments(
894+
args: IngestKnowledgeBaseDocumentsCommandInput,
895+
options: __HttpHandlerOptions,
896+
cb: (err: any, data?: IngestKnowledgeBaseDocumentsCommandOutput) => void
897+
): void;
898+
824899
/**
825900
* @see {@link ListAgentActionGroupsCommand}
826901
*/
@@ -975,6 +1050,23 @@ export interface BedrockAgent {
9751050
cb: (err: any, data?: ListIngestionJobsCommandOutput) => void
9761051
): void;
9771052

1053+
/**
1054+
* @see {@link ListKnowledgeBaseDocumentsCommand}
1055+
*/
1056+
listKnowledgeBaseDocuments(
1057+
args: ListKnowledgeBaseDocumentsCommandInput,
1058+
options?: __HttpHandlerOptions
1059+
): Promise<ListKnowledgeBaseDocumentsCommandOutput>;
1060+
listKnowledgeBaseDocuments(
1061+
args: ListKnowledgeBaseDocumentsCommandInput,
1062+
cb: (err: any, data?: ListKnowledgeBaseDocumentsCommandOutput) => void
1063+
): void;
1064+
listKnowledgeBaseDocuments(
1065+
args: ListKnowledgeBaseDocumentsCommandInput,
1066+
options: __HttpHandlerOptions,
1067+
cb: (err: any, data?: ListKnowledgeBaseDocumentsCommandOutput) => void
1068+
): void;
1069+
9781070
/**
9791071
* @see {@link ListKnowledgeBasesCommand}
9801072
*/

clients/client-bedrock-agent/src/BedrockAgentClient.ts

+24
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ import {
9191
DeleteKnowledgeBaseCommandInput,
9292
DeleteKnowledgeBaseCommandOutput,
9393
} from "./commands/DeleteKnowledgeBaseCommand";
94+
import {
95+
DeleteKnowledgeBaseDocumentsCommandInput,
96+
DeleteKnowledgeBaseDocumentsCommandOutput,
97+
} from "./commands/DeleteKnowledgeBaseDocumentsCommand";
9498
import { DeletePromptCommandInput, DeletePromptCommandOutput } from "./commands/DeletePromptCommand";
9599
import {
96100
DisassociateAgentKnowledgeBaseCommandInput,
@@ -113,7 +117,15 @@ import { GetFlowCommandInput, GetFlowCommandOutput } from "./commands/GetFlowCom
113117
import { GetFlowVersionCommandInput, GetFlowVersionCommandOutput } from "./commands/GetFlowVersionCommand";
114118
import { GetIngestionJobCommandInput, GetIngestionJobCommandOutput } from "./commands/GetIngestionJobCommand";
115119
import { GetKnowledgeBaseCommandInput, GetKnowledgeBaseCommandOutput } from "./commands/GetKnowledgeBaseCommand";
120+
import {
121+
GetKnowledgeBaseDocumentsCommandInput,
122+
GetKnowledgeBaseDocumentsCommandOutput,
123+
} from "./commands/GetKnowledgeBaseDocumentsCommand";
116124
import { GetPromptCommandInput, GetPromptCommandOutput } from "./commands/GetPromptCommand";
125+
import {
126+
IngestKnowledgeBaseDocumentsCommandInput,
127+
IngestKnowledgeBaseDocumentsCommandOutput,
128+
} from "./commands/IngestKnowledgeBaseDocumentsCommand";
117129
import {
118130
ListAgentActionGroupsCommandInput,
119131
ListAgentActionGroupsCommandOutput,
@@ -130,6 +142,10 @@ import { ListFlowAliasesCommandInput, ListFlowAliasesCommandOutput } from "./com
130142
import { ListFlowsCommandInput, ListFlowsCommandOutput } from "./commands/ListFlowsCommand";
131143
import { ListFlowVersionsCommandInput, ListFlowVersionsCommandOutput } from "./commands/ListFlowVersionsCommand";
132144
import { ListIngestionJobsCommandInput, ListIngestionJobsCommandOutput } from "./commands/ListIngestionJobsCommand";
145+
import {
146+
ListKnowledgeBaseDocumentsCommandInput,
147+
ListKnowledgeBaseDocumentsCommandOutput,
148+
} from "./commands/ListKnowledgeBaseDocumentsCommand";
133149
import { ListKnowledgeBasesCommandInput, ListKnowledgeBasesCommandOutput } from "./commands/ListKnowledgeBasesCommand";
134150
import { ListPromptsCommandInput, ListPromptsCommandOutput } from "./commands/ListPromptsCommand";
135151
import {
@@ -199,6 +215,7 @@ export type ServiceInputTypes =
199215
| DeleteFlowCommandInput
200216
| DeleteFlowVersionCommandInput
201217
| DeleteKnowledgeBaseCommandInput
218+
| DeleteKnowledgeBaseDocumentsCommandInput
202219
| DeletePromptCommandInput
203220
| DisassociateAgentKnowledgeBaseCommandInput
204221
| GetAgentActionGroupCommandInput
@@ -212,7 +229,9 @@ export type ServiceInputTypes =
212229
| GetFlowVersionCommandInput
213230
| GetIngestionJobCommandInput
214231
| GetKnowledgeBaseCommandInput
232+
| GetKnowledgeBaseDocumentsCommandInput
215233
| GetPromptCommandInput
234+
| IngestKnowledgeBaseDocumentsCommandInput
216235
| ListAgentActionGroupsCommandInput
217236
| ListAgentAliasesCommandInput
218237
| ListAgentKnowledgeBasesCommandInput
@@ -223,6 +242,7 @@ export type ServiceInputTypes =
223242
| ListFlowVersionsCommandInput
224243
| ListFlowsCommandInput
225244
| ListIngestionJobsCommandInput
245+
| ListKnowledgeBaseDocumentsCommandInput
226246
| ListKnowledgeBasesCommandInput
227247
| ListPromptsCommandInput
228248
| ListTagsForResourceCommandInput
@@ -267,6 +287,7 @@ export type ServiceOutputTypes =
267287
| DeleteFlowCommandOutput
268288
| DeleteFlowVersionCommandOutput
269289
| DeleteKnowledgeBaseCommandOutput
290+
| DeleteKnowledgeBaseDocumentsCommandOutput
270291
| DeletePromptCommandOutput
271292
| DisassociateAgentKnowledgeBaseCommandOutput
272293
| GetAgentActionGroupCommandOutput
@@ -280,7 +301,9 @@ export type ServiceOutputTypes =
280301
| GetFlowVersionCommandOutput
281302
| GetIngestionJobCommandOutput
282303
| GetKnowledgeBaseCommandOutput
304+
| GetKnowledgeBaseDocumentsCommandOutput
283305
| GetPromptCommandOutput
306+
| IngestKnowledgeBaseDocumentsCommandOutput
284307
| ListAgentActionGroupsCommandOutput
285308
| ListAgentAliasesCommandOutput
286309
| ListAgentKnowledgeBasesCommandOutput
@@ -291,6 +314,7 @@ export type ServiceOutputTypes =
291314
| ListFlowVersionsCommandOutput
292315
| ListFlowsCommandOutput
293316
| ListIngestionJobsCommandOutput
317+
| ListKnowledgeBaseDocumentsCommandOutput
294318
| ListKnowledgeBasesCommandOutput
295319
| ListPromptsCommandOutput
296320
| ListTagsForResourceCommandOutput

clients/client-bedrock-agent/src/commands/AssociateAgentKnowledgeBaseCommand.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { MetadataBearer as __MetadataBearer } from "@smithy/types";
66

77
import { BedrockAgentClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../BedrockAgentClient";
88
import { commonParams } from "../endpoint/EndpointParameters";
9-
import { AssociateAgentKnowledgeBaseRequest, AssociateAgentKnowledgeBaseResponse } from "../models/models_0";
9+
import { AssociateAgentKnowledgeBaseRequest, AssociateAgentKnowledgeBaseResponse } from "../models/models_1";
1010
import {
1111
de_AssociateAgentKnowledgeBaseCommand,
1212
se_AssociateAgentKnowledgeBaseCommand,

clients/client-bedrock-agent/src/commands/CreateDataSourceCommand.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export interface CreateDataSourceCommandInput extends CreateDataSourceRequest {}
3333
export interface CreateDataSourceCommandOutput extends CreateDataSourceResponse, __MetadataBearer {}
3434

3535
/**
36-
* <p>Creates a data source connector for a knowledge base.</p>
36+
* <p>Connects a knowledge base to a data source. You specify the configuration for the specific data source service in the <code>dataSourceConfiguration</code> field.</p>
3737
* <important>
3838
* <p>You can't change the <code>chunkingConfiguration</code> after you create the data source connector.</p>
3939
* </important>
@@ -49,7 +49,7 @@ export interface CreateDataSourceCommandOutput extends CreateDataSourceResponse,
4949
* name: "STRING_VALUE", // required
5050
* description: "STRING_VALUE",
5151
* dataSourceConfiguration: { // DataSourceConfiguration
52-
* type: "S3" || "WEB" || "CONFLUENCE" || "SALESFORCE" || "SHAREPOINT", // required
52+
* type: "S3" || "WEB" || "CONFLUENCE" || "SALESFORCE" || "SHAREPOINT" || "CUSTOM", // required
5353
* s3Configuration: { // S3DataSourceConfiguration
5454
* bucketArn: "STRING_VALUE", // required
5555
* inclusionPrefixes: [ // S3Prefixes
@@ -219,7 +219,7 @@ export interface CreateDataSourceCommandOutput extends CreateDataSourceResponse,
219219
* // status: "AVAILABLE" || "DELETING" || "DELETE_UNSUCCESSFUL", // required
220220
* // description: "STRING_VALUE",
221221
* // dataSourceConfiguration: { // DataSourceConfiguration
222-
* // type: "S3" || "WEB" || "CONFLUENCE" || "SALESFORCE" || "SHAREPOINT", // required
222+
* // type: "S3" || "WEB" || "CONFLUENCE" || "SALESFORCE" || "SHAREPOINT" || "CUSTOM", // required
223223
* // s3Configuration: { // S3DataSourceConfiguration
224224
* // bucketArn: "STRING_VALUE", // required
225225
* // inclusionPrefixes: [ // S3Prefixes

clients/client-bedrock-agent/src/commands/CreateKnowledgeBaseCommand.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { MetadataBearer as __MetadataBearer } from "@smithy/types";
66

77
import { BedrockAgentClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../BedrockAgentClient";
88
import { commonParams } from "../endpoint/EndpointParameters";
9-
import { CreateKnowledgeBaseRequest, CreateKnowledgeBaseResponse } from "../models/models_0";
9+
import { CreateKnowledgeBaseRequest, CreateKnowledgeBaseResponse } from "../models/models_1";
1010
import { de_CreateKnowledgeBaseCommand, se_CreateKnowledgeBaseCommand } from "../protocols/Aws_restJson1";
1111

1212
/**

clients/client-bedrock-agent/src/commands/DeleteKnowledgeBaseCommand.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { MetadataBearer as __MetadataBearer } from "@smithy/types";
66

77
import { BedrockAgentClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../BedrockAgentClient";
88
import { commonParams } from "../endpoint/EndpointParameters";
9-
import { DeleteKnowledgeBaseRequest, DeleteKnowledgeBaseResponse } from "../models/models_0";
9+
import { DeleteKnowledgeBaseRequest, DeleteKnowledgeBaseResponse } from "../models/models_1";
1010
import { de_DeleteKnowledgeBaseCommand, se_DeleteKnowledgeBaseCommand } from "../protocols/Aws_restJson1";
1111

1212
/**

0 commit comments

Comments
 (0)