Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit dc1d1c2

Browse files
author
Max Schaefer
committed
JavaScript: Update expected output.
1 parent 278ea90 commit dc1d1c2

25 files changed

Lines changed: 325 additions & 695 deletions

javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected

Lines changed: 6 additions & 660 deletions
Large diffs are not rendered by default.

javascript/ql/test/query-tests/Security/CWE-022/ZipSlip/ZipSlip.expected

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
nodes
22
| AdmZipBad.js:6:24:6:41 | zipEntry.entryName |
3+
| AdmZipBad.js:6:24:6:41 | zipEntry.entryName |
4+
| TarSlipBad.js:6:36:6:46 | header.name |
35
| TarSlipBad.js:6:36:6:46 | header.name |
46
| ZipSlipBad2.js:5:9:5:46 | fileName |
57
| ZipSlipBad2.js:5:20:5:46 | 'output ... ry.path |
@@ -12,6 +14,8 @@ nodes
1214
| ZipSlipBadUnzipper.js:7:20:7:29 | entry.path |
1315
| ZipSlipBadUnzipper.js:8:37:8:44 | fileName |
1416
edges
17+
| AdmZipBad.js:6:24:6:41 | zipEntry.entryName | AdmZipBad.js:6:24:6:41 | zipEntry.entryName |
18+
| TarSlipBad.js:6:36:6:46 | header.name | TarSlipBad.js:6:36:6:46 | header.name |
1519
| ZipSlipBad2.js:5:9:5:46 | fileName | ZipSlipBad2.js:6:22:6:29 | fileName |
1620
| ZipSlipBad2.js:5:20:5:46 | 'output ... ry.path | ZipSlipBad2.js:5:9:5:46 | fileName |
1721
| ZipSlipBad2.js:5:37:5:46 | entry.path | ZipSlipBad2.js:5:20:5:46 | 'output ... ry.path |

javascript/ql/test/query-tests/Security/CWE-078/CommandInjection.expected

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,21 @@ nodes
1919
| child_process-test.js:38:12:38:20 | '/bin/sh' |
2020
| child_process-test.js:39:14:39:15 | sh |
2121
| child_process-test.js:39:18:39:30 | [ flag, cmd ] |
22+
| child_process-test.js:39:18:39:30 | [ flag, cmd ] |
2223
| child_process-test.js:39:26:39:28 | cmd |
2324
| child_process-test.js:41:9:41:17 | args |
2425
| child_process-test.js:41:16:41:17 | [] |
2526
| child_process-test.js:43:15:43:17 | cmd |
2627
| child_process-test.js:44:17:44:27 | "/bin/bash" |
28+
| child_process-test.js:44:17:44:27 | "/bin/bash" |
2729
| child_process-test.js:44:30:44:33 | args |
2830
| child_process-test.js:46:9:46:12 | "sh" |
2931
| child_process-test.js:46:15:46:18 | args |
3032
| child_process-test.js:48:9:48:17 | args |
3133
| child_process-test.js:48:16:48:17 | [] |
3234
| child_process-test.js:50:15:50:17 | cmd |
3335
| child_process-test.js:51:17:51:32 | `/bin` + "/bash" |
36+
| child_process-test.js:51:17:51:32 | `/bin` + "/bash" |
3437
| child_process-test.js:51:35:51:38 | args |
3538
| child_process-test.js:55:14:55:16 | cmd |
3639
| child_process-test.js:55:19:55:22 | args |
@@ -70,6 +73,7 @@ nodes
7073
| third-party-command-injection.js:5:20:5:26 | command |
7174
| third-party-command-injection.js:6:21:6:27 | command |
7275
| tst_shell-command-injection-from-environment.js:4:25:4:61 | ['-rf', ... temp")] |
76+
| tst_shell-command-injection-from-environment.js:4:25:4:61 | ['-rf', ... temp")] |
7377
edges
7478
| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:17:13:17:15 | cmd |
7579
| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:18:17:18:19 | cmd |
@@ -91,13 +95,16 @@ edges
9195
| child_process-test.js:36:12:36:20 | 'cmd.exe' | child_process-test.js:36:7:36:20 | sh |
9296
| child_process-test.js:38:7:38:20 | sh | child_process-test.js:39:14:39:15 | sh |
9397
| child_process-test.js:38:12:38:20 | '/bin/sh' | child_process-test.js:38:7:38:20 | sh |
98+
| child_process-test.js:39:18:39:30 | [ flag, cmd ] | child_process-test.js:39:18:39:30 | [ flag, cmd ] |
9499
| child_process-test.js:41:9:41:17 | args | child_process-test.js:44:30:44:33 | args |
95100
| child_process-test.js:41:9:41:17 | args | child_process-test.js:46:15:46:18 | args |
96101
| child_process-test.js:41:16:41:17 | [] | child_process-test.js:41:9:41:17 | args |
102+
| child_process-test.js:44:17:44:27 | "/bin/bash" | child_process-test.js:44:17:44:27 | "/bin/bash" |
97103
| child_process-test.js:46:9:46:12 | "sh" | child_process-test.js:55:14:55:16 | cmd |
98104
| child_process-test.js:46:15:46:18 | args | child_process-test.js:55:19:55:22 | args |
99105
| child_process-test.js:48:9:48:17 | args | child_process-test.js:51:35:51:38 | args |
100106
| child_process-test.js:48:16:48:17 | [] | child_process-test.js:48:9:48:17 | args |
107+
| child_process-test.js:51:17:51:32 | `/bin` + "/bash" | child_process-test.js:51:17:51:32 | `/bin` + "/bash" |
101108
| child_process-test.js:55:14:55:16 | cmd | child_process-test.js:56:12:56:14 | cmd |
102109
| child_process-test.js:55:19:55:22 | args | child_process-test.js:56:17:56:20 | args |
103110
| execSeries.js:3:20:3:22 | arr | execSeries.js:6:14:6:16 | arr |
@@ -131,6 +138,7 @@ edges
131138
| other.js:5:15:5:49 | url.par ... ry.path | other.js:5:9:5:49 | cmd |
132139
| other.js:5:25:5:31 | req.url | other.js:5:15:5:38 | url.par ... , true) |
133140
| third-party-command-injection.js:5:20:5:26 | command | third-party-command-injection.js:6:21:6:27 | command |
141+
| tst_shell-command-injection-from-environment.js:4:25:4:61 | ['-rf', ... temp")] | tst_shell-command-injection-from-environment.js:4:25:4:61 | ['-rf', ... temp")] |
134142
#select
135143
| child_process-test.js:17:13:17:15 | cmd | child_process-test.js:6:25:6:31 | req.url | child_process-test.js:17:13:17:15 | cmd | This command depends on $@. | child_process-test.js:6:25:6:31 | req.url | a user-provided value |
136144
| child_process-test.js:18:17:18:19 | cmd | child_process-test.js:6:25:6:31 | req.url | child_process-test.js:18:17:18:19 | cmd | This command depends on $@. | child_process-test.js:6:25:6:31 | req.url | a user-provided value |

javascript/ql/test/query-tests/Security/CWE-078/IndirectCommandInjection.expected

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,25 @@ nodes
55
| child_process-test.js:38:12:38:20 | '/bin/sh' |
66
| child_process-test.js:39:14:39:15 | sh |
77
| child_process-test.js:39:18:39:30 | [ flag, cmd ] |
8+
| child_process-test.js:39:18:39:30 | [ flag, cmd ] |
89
| child_process-test.js:41:9:41:17 | args |
910
| child_process-test.js:41:16:41:17 | [] |
1011
| child_process-test.js:44:17:44:27 | "/bin/bash" |
12+
| child_process-test.js:44:17:44:27 | "/bin/bash" |
1113
| child_process-test.js:44:30:44:33 | args |
1214
| child_process-test.js:46:9:46:12 | "sh" |
1315
| child_process-test.js:46:15:46:18 | args |
1416
| child_process-test.js:48:9:48:17 | args |
1517
| child_process-test.js:48:16:48:17 | [] |
1618
| child_process-test.js:51:17:51:32 | `/bin` + "/bash" |
19+
| child_process-test.js:51:17:51:32 | `/bin` + "/bash" |
1720
| child_process-test.js:51:35:51:38 | args |
1821
| child_process-test.js:55:14:55:16 | cmd |
1922
| child_process-test.js:55:19:55:22 | args |
2023
| child_process-test.js:56:12:56:14 | cmd |
2124
| child_process-test.js:56:17:56:20 | args |
2225
| command-line-parameter-command-injection.js:4:10:4:21 | process.argv |
26+
| command-line-parameter-command-injection.js:4:10:4:21 | process.argv |
2327
| command-line-parameter-command-injection.js:8:10:8:36 | "cmd.sh ... argv[2] |
2428
| command-line-parameter-command-injection.js:8:22:8:33 | process.argv |
2529
| command-line-parameter-command-injection.js:8:22:8:36 | process.argv[2] |
@@ -55,20 +59,25 @@ nodes
5559
| command-line-parameter-command-injection.js:27:32:27:35 | args |
5660
| command-line-parameter-command-injection.js:27:32:27:45 | args.join(' ') |
5761
| tst_shell-command-injection-from-environment.js:4:25:4:61 | ['-rf', ... temp")] |
62+
| tst_shell-command-injection-from-environment.js:4:25:4:61 | ['-rf', ... temp")] |
5863
edges
5964
| child_process-test.js:36:7:36:20 | sh | child_process-test.js:39:14:39:15 | sh |
6065
| child_process-test.js:36:12:36:20 | 'cmd.exe' | child_process-test.js:36:7:36:20 | sh |
6166
| child_process-test.js:38:7:38:20 | sh | child_process-test.js:39:14:39:15 | sh |
6267
| child_process-test.js:38:12:38:20 | '/bin/sh' | child_process-test.js:38:7:38:20 | sh |
68+
| child_process-test.js:39:18:39:30 | [ flag, cmd ] | child_process-test.js:39:18:39:30 | [ flag, cmd ] |
6369
| child_process-test.js:41:9:41:17 | args | child_process-test.js:44:30:44:33 | args |
6470
| child_process-test.js:41:9:41:17 | args | child_process-test.js:46:15:46:18 | args |
6571
| child_process-test.js:41:16:41:17 | [] | child_process-test.js:41:9:41:17 | args |
72+
| child_process-test.js:44:17:44:27 | "/bin/bash" | child_process-test.js:44:17:44:27 | "/bin/bash" |
6673
| child_process-test.js:46:9:46:12 | "sh" | child_process-test.js:55:14:55:16 | cmd |
6774
| child_process-test.js:46:15:46:18 | args | child_process-test.js:55:19:55:22 | args |
6875
| child_process-test.js:48:9:48:17 | args | child_process-test.js:51:35:51:38 | args |
6976
| child_process-test.js:48:16:48:17 | [] | child_process-test.js:48:9:48:17 | args |
77+
| child_process-test.js:51:17:51:32 | `/bin` + "/bash" | child_process-test.js:51:17:51:32 | `/bin` + "/bash" |
7078
| child_process-test.js:55:14:55:16 | cmd | child_process-test.js:56:12:56:14 | cmd |
7179
| child_process-test.js:55:19:55:22 | args | child_process-test.js:56:17:56:20 | args |
80+
| command-line-parameter-command-injection.js:4:10:4:21 | process.argv | command-line-parameter-command-injection.js:4:10:4:21 | process.argv |
7281
| command-line-parameter-command-injection.js:8:22:8:33 | process.argv | command-line-parameter-command-injection.js:8:22:8:36 | process.argv[2] |
7382
| command-line-parameter-command-injection.js:8:22:8:36 | process.argv[2] | command-line-parameter-command-injection.js:8:10:8:36 | "cmd.sh ... argv[2] |
7483
| command-line-parameter-command-injection.js:10:6:10:33 | args | command-line-parameter-command-injection.js:11:14:11:17 | args |
@@ -100,6 +109,7 @@ edges
100109
| command-line-parameter-command-injection.js:26:32:26:38 | args[0] | command-line-parameter-command-injection.js:26:14:26:50 | `node $ ... ption"` |
101110
| command-line-parameter-command-injection.js:27:32:27:35 | args | command-line-parameter-command-injection.js:27:32:27:45 | args.join(' ') |
102111
| command-line-parameter-command-injection.js:27:32:27:45 | args.join(' ') | command-line-parameter-command-injection.js:27:14:27:57 | `node $ ... ption"` |
112+
| tst_shell-command-injection-from-environment.js:4:25:4:61 | ['-rf', ... temp")] | tst_shell-command-injection-from-environment.js:4:25:4:61 | ['-rf', ... temp")] |
103113
#select
104114
| command-line-parameter-command-injection.js:4:10:4:21 | process.argv | command-line-parameter-command-injection.js:4:10:4:21 | process.argv | command-line-parameter-command-injection.js:4:10:4:21 | process.argv | This command depends on an unsanitized $@. | command-line-parameter-command-injection.js:4:10:4:21 | process.argv | command-line argument |
105115
| command-line-parameter-command-injection.js:8:10:8:36 | "cmd.sh ... argv[2] | command-line-parameter-command-injection.js:8:22:8:33 | process.argv | command-line-parameter-command-injection.js:8:10:8:36 | "cmd.sh ... argv[2] | This command depends on an unsanitized $@. | command-line-parameter-command-injection.js:8:22:8:33 | process.argv | command-line argument |

javascript/ql/test/query-tests/Security/CWE-078/ShellCommandInjectionFromEnvironment.expected

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,25 @@ nodes
55
| child_process-test.js:38:12:38:20 | '/bin/sh' |
66
| child_process-test.js:39:14:39:15 | sh |
77
| child_process-test.js:39:18:39:30 | [ flag, cmd ] |
8+
| child_process-test.js:39:18:39:30 | [ flag, cmd ] |
89
| child_process-test.js:41:9:41:17 | args |
910
| child_process-test.js:41:16:41:17 | [] |
1011
| child_process-test.js:44:17:44:27 | "/bin/bash" |
12+
| child_process-test.js:44:17:44:27 | "/bin/bash" |
1113
| child_process-test.js:44:30:44:33 | args |
1214
| child_process-test.js:46:9:46:12 | "sh" |
1315
| child_process-test.js:46:15:46:18 | args |
1416
| child_process-test.js:48:9:48:17 | args |
1517
| child_process-test.js:48:16:48:17 | [] |
1618
| child_process-test.js:51:17:51:32 | `/bin` + "/bash" |
19+
| child_process-test.js:51:17:51:32 | `/bin` + "/bash" |
1720
| child_process-test.js:51:35:51:38 | args |
1821
| child_process-test.js:55:14:55:16 | cmd |
1922
| child_process-test.js:55:19:55:22 | args |
2023
| child_process-test.js:56:12:56:14 | cmd |
2124
| child_process-test.js:56:17:56:20 | args |
2225
| tst_shell-command-injection-from-environment.js:4:25:4:61 | ['-rf', ... temp")] |
26+
| tst_shell-command-injection-from-environment.js:4:25:4:61 | ['-rf', ... temp")] |
2327
| tst_shell-command-injection-from-environment.js:5:14:5:53 | 'rm -rf ... "temp") |
2428
| tst_shell-command-injection-from-environment.js:5:26:5:53 | path.jo ... "temp") |
2529
| tst_shell-command-injection-from-environment.js:5:36:5:44 | __dirname |
@@ -28,15 +32,19 @@ edges
2832
| child_process-test.js:36:12:36:20 | 'cmd.exe' | child_process-test.js:36:7:36:20 | sh |
2933
| child_process-test.js:38:7:38:20 | sh | child_process-test.js:39:14:39:15 | sh |
3034
| child_process-test.js:38:12:38:20 | '/bin/sh' | child_process-test.js:38:7:38:20 | sh |
35+
| child_process-test.js:39:18:39:30 | [ flag, cmd ] | child_process-test.js:39:18:39:30 | [ flag, cmd ] |
3136
| child_process-test.js:41:9:41:17 | args | child_process-test.js:44:30:44:33 | args |
3237
| child_process-test.js:41:9:41:17 | args | child_process-test.js:46:15:46:18 | args |
3338
| child_process-test.js:41:16:41:17 | [] | child_process-test.js:41:9:41:17 | args |
39+
| child_process-test.js:44:17:44:27 | "/bin/bash" | child_process-test.js:44:17:44:27 | "/bin/bash" |
3440
| child_process-test.js:46:9:46:12 | "sh" | child_process-test.js:55:14:55:16 | cmd |
3541
| child_process-test.js:46:15:46:18 | args | child_process-test.js:55:19:55:22 | args |
3642
| child_process-test.js:48:9:48:17 | args | child_process-test.js:51:35:51:38 | args |
3743
| child_process-test.js:48:16:48:17 | [] | child_process-test.js:48:9:48:17 | args |
44+
| child_process-test.js:51:17:51:32 | `/bin` + "/bash" | child_process-test.js:51:17:51:32 | `/bin` + "/bash" |
3845
| child_process-test.js:55:14:55:16 | cmd | child_process-test.js:56:12:56:14 | cmd |
3946
| child_process-test.js:55:19:55:22 | args | child_process-test.js:56:17:56:20 | args |
47+
| tst_shell-command-injection-from-environment.js:4:25:4:61 | ['-rf', ... temp")] | tst_shell-command-injection-from-environment.js:4:25:4:61 | ['-rf', ... temp")] |
4048
| tst_shell-command-injection-from-environment.js:5:26:5:53 | path.jo ... "temp") | tst_shell-command-injection-from-environment.js:5:14:5:53 | 'rm -rf ... "temp") |
4149
| tst_shell-command-injection-from-environment.js:5:36:5:44 | __dirname | tst_shell-command-injection-from-environment.js:5:26:5:53 | path.jo ... "temp") |
4250
#select

javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ nodes
3232
| promises.js:6:11:6:11 | x |
3333
| promises.js:6:11:6:11 | x |
3434
| promises.js:6:25:6:25 | x |
35-
| promises.js:6:25:6:25 | x |
3635
| tst2.js:6:7:6:30 | p |
3736
| tst2.js:6:7:6:30 | r |
3837
| tst2.js:6:9:6:9 | p |
@@ -87,7 +86,6 @@ edges
8786
| partial.js:28:14:28:18 | x + y | partial.js:31:47:31:53 | req.url | partial.js:28:14:28:18 | x + y | Cross-site scripting vulnerability due to $@. | partial.js:31:47:31:53 | req.url | user-provided value |
8887
| partial.js:37:14:37:18 | x + y | partial.js:40:43:40:49 | req.url | partial.js:37:14:37:18 | x + y | Cross-site scripting vulnerability due to $@. | partial.js:40:43:40:49 | req.url | user-provided value |
8988
| promises.js:6:25:6:25 | x | promises.js:5:44:5:57 | req.query.data | promises.js:6:25:6:25 | x | Cross-site scripting vulnerability due to $@. | promises.js:5:44:5:57 | req.query.data | user-provided value |
90-
| promises.js:6:25:6:25 | x | promises.js:5:44:5:57 | req.query.data | promises.js:6:25:6:25 | x | Cross-site scripting vulnerability due to $@. | promises.js:5:44:5:57 | req.query.data | user-provided value |
9189
| tst2.js:7:12:7:12 | p | tst2.js:6:9:6:9 | p | tst2.js:7:12:7:12 | p | Cross-site scripting vulnerability due to $@. | tst2.js:6:9:6:9 | p | user-provided value |
9290
| tst2.js:8:12:8:12 | r | tst2.js:6:12:6:15 | q: r | tst2.js:8:12:8:12 | r | Cross-site scripting vulnerability due to $@. | tst2.js:6:12:6:15 | q: r | user-provided value |
9391
| tst2.js:18:12:18:12 | p | tst2.js:14:9:14:9 | p | tst2.js:18:12:18:12 | p | Cross-site scripting vulnerability due to $@. | tst2.js:14:9:14:9 | p | user-provided value |

javascript/ql/test/query-tests/Security/CWE-079/Xss.expected

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ nodes
3030
| stored-xss.js:5:20:5:52 | session ... ssion') |
3131
| stored-xss.js:8:20:8:48 | localSt ... local') |
3232
| string-manipulations.js:3:16:3:32 | document.location |
33+
| string-manipulations.js:3:16:3:32 | document.location |
3334
| string-manipulations.js:4:16:4:32 | document.location |
3435
| string-manipulations.js:4:16:4:37 | documen ... on.href |
3536
| string-manipulations.js:5:16:5:32 | document.location |
@@ -185,12 +186,17 @@ nodes
185186
| tst.js:248:60:248:82 | this.st ... Tainted |
186187
| tst.js:252:23:252:29 | tainted |
187188
| tst.js:256:7:256:17 | window.name |
189+
| tst.js:256:7:256:17 | window.name |
190+
| tst.js:257:7:257:10 | name |
188191
| tst.js:257:7:257:10 | name |
189192
| tst.js:261:11:261:21 | window.name |
193+
| tst.js:261:11:261:21 | window.name |
194+
| tst.js:277:22:277:29 | location |
190195
| tst.js:277:22:277:29 | location |
191196
| tst.js:282:9:282:29 | tainted |
192197
| tst.js:282:19:282:29 | window.name |
193198
| tst.js:285:59:285:65 | tainted |
199+
| tst.js:285:59:285:65 | tainted |
194200
| v-html.vue:2:8:2:23 | v-html=tainted |
195201
| v-html.vue:6:42:6:58 | document.location |
196202
| winjs.js:2:7:2:53 | tainted |
@@ -222,6 +228,7 @@ edges
222228
| stored-xss.js:2:39:2:62 | documen ... .search | stored-xss.js:5:20:5:52 | session ... ssion') |
223229
| stored-xss.js:3:35:3:51 | document.location | stored-xss.js:3:35:3:58 | documen ... .search |
224230
| stored-xss.js:3:35:3:58 | documen ... .search | stored-xss.js:8:20:8:48 | localSt ... local') |
231+
| string-manipulations.js:3:16:3:32 | document.location | string-manipulations.js:3:16:3:32 | document.location |
225232
| string-manipulations.js:4:16:4:32 | document.location | string-manipulations.js:4:16:4:37 | documen ... on.href |
226233
| string-manipulations.js:5:16:5:32 | document.location | string-manipulations.js:5:16:5:37 | documen ... on.href |
227234
| string-manipulations.js:5:16:5:37 | documen ... on.href | string-manipulations.js:5:16:5:47 | documen ... lueOf() |
@@ -342,8 +349,13 @@ edges
342349
| tst.js:238:23:238:29 | tainted | tst.js:228:32:228:49 | prevProps.tainted4 |
343350
| tst.js:244:39:244:55 | props.propTainted | tst.js:248:60:248:82 | this.st ... Tainted |
344351
| tst.js:252:23:252:29 | tainted | tst.js:244:39:244:55 | props.propTainted |
352+
| tst.js:256:7:256:17 | window.name | tst.js:256:7:256:17 | window.name |
353+
| tst.js:257:7:257:10 | name | tst.js:257:7:257:10 | name |
354+
| tst.js:261:11:261:21 | window.name | tst.js:261:11:261:21 | window.name |
355+
| tst.js:277:22:277:29 | location | tst.js:277:22:277:29 | location |
345356
| tst.js:282:9:282:29 | tainted | tst.js:285:59:285:65 | tainted |
346-
| tst.js:282:19:282:29 | window.name | tst.js:282:9:282:29 | tainted |
357+
| tst.js:282:19:282:29 | window.name | tst.js:285:59:285:65 | tainted |
358+
| tst.js:285:59:285:65 | tainted | tst.js:285:59:285:65 | tainted |
347359
| v-html.vue:6:42:6:58 | document.location | v-html.vue:2:8:2:23 | v-html=tainted |
348360
| winjs.js:2:7:2:53 | tainted | winjs.js:3:43:3:49 | tainted |
349361
| winjs.js:2:7:2:53 | tainted | winjs.js:4:43:4:49 | tainted |

0 commit comments

Comments
 (0)