The following has evaluated to null or missing: ==> FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) [in template "252001#252047#252845" at line 128, column 37] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: dMTJsonObject = FrontendService.media... [in template "252001#252047#252845" at line 128, column 21] ----
1<#-- used @ Veranstaltung-Detailseite Intro
2 used @ Publikation-Detailseite Intro
3-->
4
5<#--
6Web content templates to display teaser on thema detail page
7
8Generic template for detail pages Intro / Teaser element
9-->
10<#--
11Display the current page title
12-->
13<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" />
14<#include "${fullTemplatesPath}/macros/debugging.ftl" />
15
16<#include "${fullTemplatesPath}/macros/page-modules/PMIntro.ftl" />
17<#include "${fullTemplatesPath}/macros/atomic-modules/AMPublicationCarousel.ftl" />
18<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadata.ftl" />
19<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" />
20
21
22<#--
23 renders the Intro for nearly all Pages
24 TODO: remove Share? (was in the designs, but not anymore?)
25 TODO: check if languageSelect/filter are working (js)
26
27 - portletId
28 - data = {
29 "media": string (src from image),
30 "category": string,
31 "title": string,
32 "author": string,
33 "subheadline": string,
34 "copy": string,
35 "filter": {
36 "id": string,
37 "name": string,
38 "entries": Array<Object> ({key:value}),
39 },
40 "languageSelect": {
41 "id": string,
42 "name": string,
43 "entries": Array<Object> ({key:value}),
44 },
45 "meta": {
46 "pos"; string (top/bottom)
47 "date": string,
48 "hash": string,
49 "info": string, (url)
50 },
51 "share" : {
52 "login": string,
53 "print": string,
54 "mail": string,
55 "multishare": string?? (tbd)
56 }
57 - AMMetadata: macro
58 - position: String ("top") -> defines wether the meta-data should be rendered above or below the intro-content
59 }
60-->
61
62<#assign
63 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
64
65 ServiceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
66 DLAPP = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService")
67
68 themeDisplay = ServiceContext.getThemeDisplay()
69 editmode = FrontendService.user.isPrivilegedUser(themeDisplay)
70
71 languageId = themeDisplay.getLocale()
72 groupId = themeDisplay.getScopeGroupId()
73 currentUrl = themeDisplay.getURLCurrent()
74
75 layout = themeDisplay.getLayout()
76 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id")
77/>
78
79<#setting locale="${languageId}">
80
81<#-- get article from url -->
82
83<#assign entry = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! >
84
85
86<#if entry?has_content>
87
88 <#if entry.resourcePrimKey??>
89 <#assign primaryKey = entry.resourcePrimKey?number >
90 <#elseif entry.classPK??>
91 <#assign primaryKey = entry.classPK?number >
92 </#if>
93
94 <#assign
95 jsonString = FrontendService.article.getWebcontent(primaryKey)
96 json = FrontendService.json.parseAsJson(jsonString)
97 availablelanguages = FrontendService.article.getAssetEntryToUrl(primaryKey).getAvailableLanguageIds()
98
99 title = entry.getTitle(languageId)
100 data = {
101 "title": title
102 }
103 />
104 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" />
105
106 <#if hasContent('untertitel', languageId, json)>
107 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } >
108 </#if>
109
110 <#if hasContent('beschreibung', languageId, json)>
111 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } >
112 </#if>
113
114 <#-- fill meta data -->
115 <#assign meta = {} />
116
117 <#-- PUBLIKATIONEN DETAIL -->
118 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")>
119
120 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)>
121 <#assign
122 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first")
123 />
124
125 <#if coverBildString?has_content>
126 <#assign
127 coverBild = FrontendService.json.parseAsJson(coverBildString)
128 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale )
129 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid )
130 data = data + { "media": linkToDMT, "meta" : dMTJsonObject }
131 />
132 <#if dMTJsonObject.altText?? >
133 <#assign data = data + {"alt" : dMTJsonObject.altText} />
134 </#if>
135 <#if dMTJsonObject.quelle??>
136 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } />
137 </#if>
138 </#if>
139 <#-- uncomment to display pdf cover as Intro Image
140 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)>
141 <#assign
142 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first")
143 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/>
144 <#if fileEntry?has_content>
145 <#assign
146 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay)
147 data = data + { "media": linkToThumbnail }
148 />
149 </#if>
150 -->
151 </#if>
152
153 <#assign
154 meta = meta + { "orderInfo": "true" }
155 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!""
156 />
157
158
159
160 <#if hasContent('erscheinungsdatum', languageId, json)>
161 <#assign
162 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
163 />
164 <#if erscheinungsdatum?has_content >
165 <#assign
166 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId )
167 meta = meta + { "date": erscheinungsdatumFormatted }
168 />
169 </#if>
170 </#if>
171
172 <#if verbundJournalArticle?has_content>
173 <#assign
174 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey)
175 verbundJson = FrontendService.json.parseAsJson(verbundJsonString)
176 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first")
177 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first")
178 />
179 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" />
180 <#assign meta = meta + { "laufendenummer": laufendenummer } >
181
182 <#if coverImg?has_content && coverImg.url?has_content >
183 <#assign meta = meta + { "coverImg": coverImg.url } >
184 </#if>
185 </#if>
186
187
188 <#if meta?has_content>
189 <#assign data = data + {"meta": meta } >
190 </#if>
191
192 </#if>
193 <#-- PUBLIKATIONEN DETAIL END -->
194
195
196 <#-- VERANSTALTUNGEN DETAIL -->
197 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")>
198 <#assign
199 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!""
200 links = []
201 />
202 <#if availablelanguages?has_content && friendlyUrl?has_content>
203 <#if (availablelanguages?size > 1) >
204 <#list availablelanguages as language>
205 <#assign
206 defaultLanguage = "de_DE"
207 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage)
208 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale
209 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId)
210
211 link = {
212 "key": language!defaultLanguage,
213 "value": linkLocale.getDisplayLanguage(languageId),
214 "url": "/c/portal/update_language?p_l_id=" +
215 layout.plid + "&redirect=" + langFriendlyUrl +
216 "&languageId=" + language
217 }
218 />
219 <#if language == languageId>
220 <#assign link = link + { "selected": "true" } >
221 </#if>
222 <#assign links = links + [link]>
223 </#list>
224 <#assign
225 data = data + {
226 "languageSelect": {
227 "id": "languageSelectRedirect",
228 "name": "languageselectRedirect",
229 "entries": links,
230 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar")
231 }
232 }
233 />
234 </#if>
235 </#if>
236 </#if>
237
238 <#if hasContent('erscheinungsdatum', languageId, json)>
239 <#assign
240 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
241 meta = meta + { "start": startdate?date.iso, "end": "" }
242 />
243 </#if>
244
245 <#if hasContent('startdatum', languageId, json)>
246 <#assign
247 startdate = getValueForLanguage('startdatum', languageId, json, "first")
248 meta = meta + { "start": startdate?date.iso, "end": "" }
249 />
250 </#if>
251
252 <#if hasValue('einfuehrungText', locale, json)>
253 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } >
254 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")>
255 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } >
256 </#if>
257
258 <#if hasContent('endedatum', languageId, json)>
259 <#assign
260 enddate = getValueForLanguage('endedatum', languageId, json, "first")
261 meta = meta + { "end": enddate?date.iso }
262 />
263 </#if>
264
265 <#if hasContent('startzeit', languageId, json)>
266 <#assign
267 startzeit = getValueForLanguage('startzeit', languageId, json, "first")
268 />
269 <#if startzeit?has_content >
270 <#assign meta = meta + { "startzeit": startzeit } />
271 </#if>
272 </#if>
273
274 <#if hasContent('endezeit', languageId, json)>
275 <#assign
276 endezeit = getValueForLanguage('endezeit', languageId, json, "first")
277 meta = meta + { "endezeit": endezeit }
278 />
279 </#if>
280
281 <#if hasContent('ortWCSKASDEORT', languageId, json)>
282 <#assign
283 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first"))
284 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number
285 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!""
286 />
287 <#if ortWCSKASDEORTWebContent?has_content >
288 <#assign
289 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!""
290 />
291 <#if ortWCSKASDEORTTitle?has_content >
292 <#assign
293 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle }
294 />
295 </#if>
296 </#if>
297 </#if>
298
299
300 <#if hasContent('veranstaltungsnummer', languageId, json)>
301 <#assign
302 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first")
303 meta = meta + { "verauuid": verauuid }
304 />
305 </#if>
306
307
308 <#if (data.meta)?has_content >
309 <#assign meta = data.meta />
310 </#if>
311
312 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)>
313 <#assign
314 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first")
315 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution")
316 />
317 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} >
318
319
320 <#if mediaData.meta?? && mediaData.meta.quelle??>
321 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } />
322 </#if>
323 </#if>
324
325
326 <#if meta?has_content>
327 <#assign data = data + {"meta": meta } >
328 </#if>
329
330 <#-- END fill meta data -->
331
332 <#if hasContentForSequence('autorenWCSKASDEPERSON', languageId, json)>
333 <#assign
334 journalArticles = getValueForLanguageAnsprechpartner('autorenWCSKASDEPERSON', languageId, json)
335 authors = []
336 />
337 <#list journalArticles as articleString>
338 <#assign article = FrontendService.json.parseAsJson(articleString) />
339 <#if article?has_content && article?is_hash && article.classPK??>
340 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" />
341 <#if articleDereferenced?has_content >
342 <#assign
343 author = ""
344 articlePrimaryKey = articleDereferenced.classPK?number
345 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey)
346 articleJson = FrontendService.json.parseAsJson(articleJsonString)
347 />
348 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" />
349 <#if hasValue('anredetitel', languageId, articleJson)>
350 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " ">
351 </#if>
352 <#if hasValue('vorname', languageId, articleJson)>
353 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " ">
354 </#if>
355 <#if hasValue('nachname', languageId, articleJson)>
356 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " ">
357 </#if>
358
359 <#attempt>
360 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" >
361 <#recover>
362 <#assign href = "#" >
363 </#attempt>
364 <#if href?has_content && href != "#" && href != "/_404">
365 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'>
366 </#if>
367
368 <#assign authors = authors + [author?trim]>
369 </#if>
370 </#if>
371 </#list>
372 <#if authors?has_content>
373 <#assign data = data + { "author": authors?join(", ") } >
374 </#if>
375 </#if>
376
377 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") >
378 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! >
379 <#if categories?has_content && categories[0]?has_content >
380 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
381 </#if>
382
383 <#if hasContent('ausgebucht', languageId, json)>
384 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }>
385 </#if>
386
387 <#if hasContent('storniert', languageId, json)>
388 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }>
389 </#if>
390
391 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") >
392 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! >
393 <#if categories?has_content && categories[0]?has_content >
394 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
395 </#if>
396 <#else>
397 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! >
398 <#if categories?has_content && categories[0]?has_content >
399 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
400 </#if>
401 </#if>
402
403
404 <#assign
405 languages = []
406 />
407
408 <#attempt>
409 <#if json["document_pdfDMTBASICDOCUMENT"]?? >
410 <#if availablelanguages?has_content>
411 <#list availablelanguages as pdf_language>
412 <#assign
413 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first")
414 docRef = FrontendService.json.parseAsJson(docRefJson)
415 />
416 <#if docRef?is_hash && pdf_language != languageId >
417 <#assign
418 lang = FrontendService.language.getLocaleByKey(pdf_language)!""
419 docGroupId = docRef["groupId"]?number
420 docUuid = docRef["uuid"]
421 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale )
422 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject )
423 />
424 <#if lang?has_content>
425 <#assign
426 languages = languages + [
427 {
428 "key": pdf_language,
429 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(),
430 "url": dMTLink
431 }]
432 />
433 </#if>
434 </#if>
435 </#list>
436 </#if>
437 </#if>
438 <#recover>
439 </#attempt>
440
441 <#if (languages?size > 0)>
442 <#attempt>
443 <#assign
444 data = data + { "languageSelect": {
445 "id": "languageSelect",
446 "name": "languageselect",
447 "entries": languages,
448 "documents": "",
449 "button": "true"
450 }}
451 />
452 <#recover>
453 </#attempt>
454 </#if>
455
456 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" />
457 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)}
458
459 <#if data.meta?has_content>
460 <#if data.meta.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()>
461 <div>
462 <div id="publicationVerbundPagination">
463 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg />
464 </div>
465 </div>
466 </#if>
467 </#if>
468
469<#elseif (editmode?? && editmode)>
470 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl />
471</#if>
Vorgeschichte der Anklage
Seit dem Amtswechsel im Präsidentenamt im Mai 2019 muss sich das ehemalige Staatsoberhaupt Petro Poroschenko immer wieder mit juristischen Vorwürfen und gegen ihn eingeleiteten Verfahren auseinandersetzen. Seit Mitte Dezember 2021 sieht sich der heutige Parlamentsabgeordnete und Vorsitzende der Oppositionspartei „Europäische Solidarität“ mit einem neuen Vorwurf konfrontiert. Die ukrainische Generalstaatsanwaltschaft erhob vor einem Kiewer Gericht Anklage wegen Hochverrats (§111,1 des ukrainischen Strafgesetzbuches), der Unterstützung einer terroristischen Organisation (§258, 3 StGB) und der Finanzierung von Terrorismus (§258, 5 StGB). Im Falle einer Verurteilung drohen Poroschenko bis zu fünfzehn Jahre Haft. Die Anklage stützt sich auf Kohlelieferungen, welche die ukrainische Regierung im Winter 2014/2015 aus den nicht-regierungskontrollierten Gebieten im Osten des Landes bestellt hatte.
Seit Bekanntmachung des eingeleiteten Verfahrens gegen Poroschenko sind immer wieder Zweifel geäußert worden, ob die erhobenen Vorwürfe einer juristischen Prüfung standhalten. Im Winter 2014/15 bestand die reelle Gefahr, die Energieversorgung des Landes nicht aufrecht erhalten zu können. So muss das Vorgehen Poroschenkos rückblickend im Kontext der damaligen Ereignisse gesehen werden. Die Generalstaatsanwaltschaft hingegen argumentiert, Poroschenko hätte zur Sicherstellung der Energieversorgung auch Kohle aus Südafrika beziehen können. Poroschenko widerspricht und verweist auf höhere Preise und schlechte Qualität dieser Importkohle. Tatsächlich hatte die Staatsanwaltschaft damals bereits ermittelt und war seinerzeit ebenfalls zu dem Ergebnis gelangt, dass die südafrikanische Kohle von ungenügender Qualität sei, woraufhin die Lieferungen gestoppt wurden. Heute argumentiert die Generalstaatsanwaltschaft hingegen, die Qualitätsprüfung sei nur ein Vorwand gewesen und stuft die südafrikanische Kohle rückblickend als gleichwertig ein. Für die unterstellte Gleichwertigkeit wurden allerdings weder Beweise vorgelegt, noch erklärt, wie diese Schlussfolgerung zustande gekommen ist.[1]
Laut dem für Untersuchungen gegen hohe Beamte zuständigen staatlichem Ermittlungsbüro beläuft sich die Summe der für die Kohlelieferungen 2014/15 abgeschlossenen Verträge auf insgesamt drei Milliarden Griwna (UAH). Von dieser Summe sollen jedoch nur 205 Millionen UAH umgesetzt worden sein, ungeachtet möglicher Bartransfers. Dieses Geld sei seitens der sogenannten Separatisten nach Abwicklung des Geschäfts in ihre militärische Ausrüstung investiert worden, um damit die Souveränität der Ukraine anzugreifen. Durch diesen Umstand, so die Staatsanwaltschaft, erfüllten die Kohlelieferungen den Tatbestand des Hochverrats. Diese hatte am 20. Dezember 2021 ihre Anklage veröffentlicht. Zu diesem Zeitpunkt befand sich Poroschenko allerdings nicht in der Ukraine, sondern in der polnischen Hauptstadt Warschau. Nachdem die Anklage gegen ihn bekannt wurde, äußerte sich Poroschenko mehrmals dahingehend, dass der gegen ihn angestrengte Prozess politisch motiviert sei. Nur einen Tag nach der Anklageerhebung entschied zudem das ukrainische Antimonopolkomitee, drei Unternehmen, die dem Poroschenko gehörenden Roshen-Konzern angehören, mit einer Geldstrafe in Höhe von knapp zehn Millionen Euro zu belegen. Am 7. Januar, genau am Tag des orthodoxen Weihnachtsfests, ist zusätzlich das gesamte Vermögen Poroschenkos eingefroren worden.[2]
Gerichtsanhörung am Tag der Rückkehr
Gegenüber Medienvertretern hatte Poroschenko angekündigt, er würde Mitte Januar in die Ukraine zurückkehren. Damit begegnete er dem Verdacht, sein kurzfristiger Auslandsaufenthalt sei eine Flucht vor der Justiz gewesen und könnte zum Exil werden. Denn bereits vor der Anklageerhebung wegen Hochverrat war kolportiert worden, dass Poroschenko sich ins Ausland abgesetzt hätte, um einer juristischen Anhörung zu entgehen. Am Vorabend seiner Rückkehr gab sich Poroschenko auf einer Pressekonferenz kämpferisch: „Ich kehre in die Ukraine zurück, um für die Ukraine zu kämpfen, nicht um gegen Selenskyj zu kämpfen.“[3]
Am Morgen des 17. Januar 2022 landete Poroschenko um 9:10 Uhr auf dem Kiewer Stadtflughafen Schuljany. Anders als teilweise angenommen worden war, wurde Poroschenko nicht direkt am Flughafen festgesetzt. Allerdings wurde er länger bei der Grenzkontrolle aufgehalten, da ihm, wie er später angab, zuerst die Einreise verwehrt werden sollte. Vor dem Flughafengebäude wurde der ehemalige Präsident von mehreren tausend Unterstützern empfangen. Knapp zwei Stunden nach seiner Ankunft musste sich Poroschenko vor einem Kiewer Gericht einfinden. Dort sollte ab 11 Uhr die Frage nach etwaigen verfahrenssichernden Maßnahmen gegen ihn verhandelt werden. Vor dem Gericht warteten ebenfalls viele Anhänger Poroschenkos, die den Vorsitzenden der Partei "Europäische Solidarität" stürmisch begrüßten.
Die Verhandlung selbst zog sich über fast zwölf Stunden. Die Staatsanwaltschaft forderte eine zunächst zweimonatige Untersuchungshaft oder eine Milliarde UAH Kautionsleistung (umgerechnet ca. 31 Millionen Euro). Nach sechs Stunden verließ der Richter Oleksiy Sokolov den Saal für eine kurze Pause, ohne daraufhin zurückzukehren. Nach sechs weiteren Stunden wurde die Sitzung auf den übernächsten Tag verschoben. Am 19. Januar entschied das Gericht dann, Poroschenko werde weder in Untersuchungshaft genommen, noch sei die geforderte Kaution zu hinterlegen. Poroschenko unterschrieb stattdessen eine Verpflichtungserklärung, in der er zusicherte, beim nächsten Termin zu erscheinen. Zusätzlich ist es ihm untersagt, die Region Kiew ohne richterliche Genehmigung zu verlassen. Seine Passdokumente wurden Poroschenko ebenfalls entzogen. Die angeordneten Auflagen gelten ab dem 19. Januar 2022 für zwei Monate und ermöglichen ihm die weitere Ausübung seines Parlamentsmandats innerhalb der Hauptstadt.
Die Ermittlungsresultate des ukrainischen Inlandsgeheimdienstes SBU führten dabei nicht nur zur Anklage gegen Poroschenko, sondern auch gegen den Geschäftsmann Serhiy Kuzyara, den Politiker und Oligarchen Viktor Medwedtschuk und den damaligen Energieminister Volodymyr Demtschyschyn. Den Ermittlern zufolge verhandelte Medwedtschuk auf beiden Seiten der Konfliktparteien. Poroschenko hingegen behauptet, er habe mit Medwedtschuk nie über Kohlelieferungen gesprochen und Kuzyara nie getroffen.
Politisch motivierte Strafverfolgung und selektive Justiz?
Das aktuelle Verfahren ist das bislang letzte in einer Reihe von juristischen Auseinandersetzungen, mit denen sich Poroschenko konfrontiert sieht.[4] In den bisherigen Ermittlungen gegen den fünften Präsidenten der unabhängigen Ukraine wurden ihm Staatsverrat und Amtsmissbrauch vorgeworfen, sowie Korruption, Veruntreuung und Geldwäsche zur Last gelegt. Mittlerweile sind über zwanzig Verfahren (die genaue Zahl der Verfahren kann aufgrund institutioneller Intransparenz nicht eindeutig angegeben werden[5]) gegen Poroschenko geführt worden, ohne dass es bisher zu einer strafrechtlichen Verurteilung gekommen ist.
Beobachter haben angemerkt, dass die gegen Poroschenko geführten Ermittlungen überwiegend seitens Personen gefördert worden sind, die Teil der Elite um den ehemaligen, nach der Maidan-Revolution nach Russland geflüchteten Präsidenten Viktor Janukowytsch waren. Prominentes Beispiel ist hier sicherlich Andrij Portnow, der unter Poroschenkos Amtsvorgänger Janukowytsch stellvertretender Leiter der Präsidialverwaltung war und sich seit 2014 in Russland aufgehalten hatte. Portnow war erst mit dem Wahlsieg Selenskyjs in die Ukraine zurückgekehrt. Seitdem hat er mehr als ein halbes Dutzend Anträge auf Einleitung eines Verfahren gegen Poroschenko gestellt – mit dem erklärten Ziel, Poroschenko ins Gefängnis zu bringen.[6]
Das aktuelle Verfahren wurde durch die Generalstaatanwaltschaft unter Leitung von Iryna Venediktova angestrengt. Venediktova führt die Behörde seit 2020. Am Tag der Bekanntmachung hatte Venediktova allerdings unvorhergesehen Urlaub genommen. Daher unterzeichnete einer ihrer Stellvertreter, Oleksiy Symonenko, die Anklageschrift. Bisher wurde die Generalstaatsanwältin als Verbündete Selenskyjs wahrgenommen, zumal sie früher Parlamentsabgeordnete für die Partei „Diener des Volkes“ war.[7] Daher fiel Venediktovas fehlende Unterschrift unter der Anklage auf. Angesichts der Tragweite einer Hochverratsanklage gegen ein ehemaliges Staatsoberhaupt ist es kaum vorstellbar, dass die Behördenleiterin nicht involviert war. Entsprechend wurde gemutmaßt, ob der Generalstaatsanwältin selbst die rechtliche Argumentationskette zu wenig überzeugend war oder sie den Anschein eines politisch motivierten Prozesses von vornherein möglichst vermeiden wollte.
Ein Schuldspruch Poroschenkos käme einem abrupten Ende seiner politischen Laufbahn gleich, was wiederum Auswirkungen auf den nächsten Wahlkampf um das Amt des Staatspräsidenten hätte. 2019 hatte Selenskyj unter anderem mit dem Versprechen die Wahl gewonnen, er und seine Partei würden konsequenter als sein Vorgänger die Korruption im Land bekämpfen. Als politischer Neuling stand er während des Wahlkampfes auch weniger als seine Mitbewerber im Verdacht, aufgrund von Eigeninteressen zu handeln. Nach mehr als der Hälfte seiner Amtszeit wird der Erfolg der Regierung in der Korruptionsbekämpfung jedoch als überschaubar bewertet. Diese Einschätzung spiegelt sich auch in Selenskyjs Beliebtheitswerten, die in demoskopischen Umfragen seit längerem sinken.[8] Insofern würde eine Verurteilung Poroschenkos den Anspruch der aktuellen Administration unterstreichen, entschlossener gegen die Korruption vorzugehen.
Selenskyis Kampf gegen die Oligarchie
Doch sind Reformprojekte, wie das sogenannte Anti-Oligarchen-Gesetz, das von Selenskyjs Unterstützern als ein großer Schritt bei der Bekämpfung korrupter Strukturen begrüßt wurde und auch international Beachtung[9] fand, in Kritik geraten. Ursprünglich sollte das Gesetz den Einfluss der ukrainischen Oligarchen eindämmen. Doch das Gesetz sei, so ein Einwand, in seiner aktuellen Fassung anfällig für politische Vorteilsnahme. Wie Kira Rudyk, Abgeordnete der „Holos“-Partei, argumentiert, ermögliche das Gesetz „dem Nationalen Sicherheits- und Verteidigungsrat, der vom Präsidenten persönlich ernannt wird, zu bestimmen, wer ein Oligarch ist und wem Beschränkungen für den Besitz von Medien oder die Teilnahme am politischen Leben des Landes auferlegt werden sollten.“[10] Poroschenko hat bereits Konsequenzen aus der Regulierung des Presse- und Medienmarktes ziehen müssen und Anfang November seine Anteile an den Fernsehsendern „Pryamyi“ und „5. Kanal“ an eine Medienholding abgetreten. Die Bekanntmachung dieses Schrittes verband Poroschenko mit dem an die aktuelle Regierung gerichteten Vorwurf, das Gesetz diene hauptsächlich dazu, die Kontrolle über die Medienlandschaft zu festigen.[11]
Das juristische Vorgehen gegen die Oligarchie beschränkt sich jedoch nicht auf Poroschenko, wie die Situation Wiktor Medwedtschuks belegt, der ebenfalls im Zusammenhang mit den Kohlelieferungen im Winter 2014/15 angeklagt ist. Er soll die Verhandlungen maßgeblich organisiert haben. Medwedtschuk, der die pro-russische Partei “Oppositionsplattform – Für das Leben” anführt, wird eine große Nähe zu Putin nachgesagt. Der russische Präsident ist Patenonkel der jüngsten Tochter Medwedtschuks. Bereits im Mai letzten Jahres wurde Medwedtschuk unter Hausarrest gestellt, der am 10. Januar 2022 um zwei weitere Monate verlängert wurde. Der Nationale Sicherheits- und Verteidigungsrat hat bereits drei TV-Sender, die Medwedtschuk gehören sollen, abgeschaltet. Hinzu kommt Selenskyjs öffentliche Auseinandersetzung mit dem Oligarchen Rinat Achmetow, den der Präsident im Dezember 2021 beschuldigte, ihn mit russischer Hilfe stürzen zu wollen. Selenskyj hatte hierzu auf einer Pressekonferenz behauptet, er verfüge über Audioaufnahmen, in denen im Zusammenhang mit Umsturzplänen auch der Name des ukrainischen Milliardärs falle. Achmetow widersprach den Anschuldigungen empört. Auch Achmetow hatte sich öffentlich gegen das Anti-Oligarchen-Gesetz geäußert. Zu dem aus Dnipro stammenden Oligarchen Ihor Kolomojskyj hatte Selenskyj zunächst ein gutes Verhältnis. Kolomojskyj galt als offener Unterstützer Selenskyjs. Kolomojskyjs Sender „1+1“ übertrug die Serie „Diener des Volkes“, die Selenskyj berühmt machte und seiner Partei ihren Namen gibt. Auch nach seiner Kandidatur unterstützte Kolomojskyj den Schauspieler. Doch der von westlichen Partnern geforderte und geförderte Reformprozess hat dazu geführt, dass Staatspräsident Selenskyj heute zumindest öffentlich Distanz hält.
Experten haben an dem sogenannten Anti-Oligarchen-Gesetz kritisiert, dass sich bei seiner Anwendung die Grenze zwischen Korruptionsbekämpfung und politisch motivierter Verfolgung nicht immer deutlich genug ziehen lasse. Die immense Machtkonzentration der Oligarchen – gerade im Bereich der Medien – stellt zwar eine große Herausforderung für die ukrainische Demokratie dar, doch solange sich administrative Eingriffe vorrangig gegen Einzelpersonen richten, bleibt der Kampf gegen die Korruption in der Ukraine politisch abhängig. Der zu beschreitende Weg liegt vielmehr in einer Stärkung der Institutionen zur unabhängigen Korruptionsbekämpfung und einer Reform im Bereich der Rechtsprechung.
Verschleppte Justizreform
Dieses Defizit wird vor allem am Beispiel der 2016 begonnenen Justizreform deutlich. Ihr Ziel ist es, die Justiz unabhängiger und vertrauenswürdiger zu machen. Doch wird die Reform immer wieder blockiert und die Besetzung von Spitzenämtern verzögert. Jüngstes Beispiel hierfür ist die Ernennung für den Leitungsposten der Staatsanwaltschaft für Korruptionsbekämpfung (SAP), die im Dezember beinahe abgeschlossen war. Als sich abzeichnete, dass der unabhängige Kandidat Oleksandr Klymenko den Posten erhalten würde, weigerten sich Mitglieder der parlamentarischen Auswahlkommission, diesen zu nominieren.[12]
So bleiben die strukturellen Resultate der Korruptionsbekämpfung hinter den Erwartungen zurück. Zeitgleich werden öffentlichkeitswirksam Prozesse gegen Einzelpersonen geführt. Dass in der Justizreform dringend Fortschritte gemacht werden müssen, unterstrich vor kurzem auch der amerikanische Außenminister Antony Blinken. Trotz der aktuellen Bedrohungslage mahnte er an, die Justizreform voranzubringen, denn die ukrainischen Schritte im Kampf gegen Korruption und für Transparenz werden erst durch eine unabhängige Justiz erfolgreich und langfristig belastbar.
Die Rolle der Kohle bei der ukrainischen Energieversorgung
Durch die Anklage gegen Poroschenko sind auch die anhaltenden Zwänge bei der ukrainischen Energieversorgung wieder in den öffentlichen Fokus geraten. Nach wie vor importiert die Ukraine einen Großteil ihres Kohlebedarfs, obwohl das Land die achtgrößten Kohlereserven der Welt besitzt. Doch gelten die Bergwerke als schlecht und unrentabel geführt, was die Kosten in die Höhe treibt.[13] Viele der Minen befinden sich zudem in den „Volksrepubliken“ und stehen damit nicht mehr unter der Kontrolle Kiews. Im Konfliktgebiet ist die für die Pumpanlagen wichtige stabile Elektrizitätsversorgung häufig beeinträchtigt gewesen oder die Minen wurden schlicht stillgelegt, sodass heute viele Schächte irreparabel unter Wasser stehen und die schlechte Grundwasserqualität in einigen Gegenden gesundheitsgefährdende Ausmaße erreicht hat.[14] Die ukrainische Kohle-Jahresproduktion lag daher 2021 bei nur noch rund 29 Millionen Tonnen – gegenüber 84 Millionen Tonnen vor Konfliktbeginn im Jahr 2013.[15] Gut 20 Prozent des ukrainischen Kohlebedarfs wird daher importiert.[16] Gut drei Viertel dieser Importkohle kommen aus Russland, wobei davon ausgegangen werden muss, dass darunter auch eigentlich ukrainische Kohle aus den sog. „Volksrepubliken“ ist.[17] Allerdings hat Russland seit dem 1. November 2021 alle Kohlelieferungen unter Verweis auf die eigene Inlandsnachfrage gestoppt. Dies verstärkt den im Zusammenhang mit der geplanten Inbetriebnahme der Gaspipeline Nord Stream 2 immer wieder erhobenen Vorwurf, Russland nutze seine fossilen Ressourcen auch als politisches Druckmittel. So wächst – ähnlich wie 2014/2015[18] – der Druck auf Kiew, erneut Kohle aus den nicht-regierungskontrollierten Gebieten zu bestellen, um die Energieversorgung gewährleisten zu können. Aufgrund der diesjährigen Kohleknappheit mussten bereits 19 ukrainische Kraftwerke zeitweise heruntergefahren werden. Der russische Ausfuhrstopp destabilisiert damit die energiepolitische Situation in der Ukraine, auch wenn die Regierung Sorgen vor einer Energiekrise im – bislang recht mild verlaufenden – Winter zerstreuen will. So wies das ukrainische Energieministerium darauf hin, dass der staatliche Atomkraftwerksbetreiber Energoatom die Versorgungslücken schließen könne. Seit dem 30. Januar 2022 sind tatsächlich alle der insgesamt 15 ukrainischen Reaktoren hochgefahren, was einen Rekordwert darstellt. Im letzten Winter waren lediglich zehn Reaktoren am Netz. Im Regelfall deckt die Ukraine rund die Hälfte ihres Strombedarfs durch Kernenergie. Die völlige Auslastung der Atomreaktoren bedeutet aber auch, dass bei einem möglichen Ausfall anderer Kraftwerke kaum noch Reserven zur Verfügung stehen.
In der Vergangenheit wurden derartige Elektrizitätsengpässe zusätzlich durch Stromlieferungen aus Belarus kompensiert. Aus Sowjetzeiten sind Russland, Belarus und die Ukraine nach wie vor über ihre Stromnetze miteinander verbunden. Zuletzt entsprachen diese Stromtransfers aus dem nördlichen Nachbarland in etwa der Leistung eines Atommeilers. Angesichts der russisch-belarusischen Annäherungen in den letzten Monaten und vor dem Hintergrund der Manöver in Nähe der ukrainischen Grenze wird die Verlässlichkeit dieser alternativen Versorgungsoption allerdings zunehmend mit Fragezeichen versehen.[19] Aufgrund der aktuellen Spannungen warnen Analysten zudem vor möglichen Sabotageakten oder Hackerangriffen auf die ukrainische Energieversorgung im Rahmen einer auch hybrid geführten Auseinandersetzung. Insbesondere die Sicherheit der ukrainischen Kernreaktoren könnte bei einer denkbaren Eskalation gefährdet sein. So liegt das Kernkraftwerk Saporischschja, das mit seinen sechs Blöcken sowjetischen Typs zweitgrößte AKW in Europa, keine 200 Kilometer von der heutigen Kontaktlinie entfernt.[20]
Hinzu kommt eine weitere Befürchtung: Für 2023 plant die Ukraine ihren Anschluss an das europäische Verbundsystem und die Abkoppelung von den alten sowjetischen Stromtrassen. Das Land erhofft sich neben der politischen Signalwirkung bessere Zugangsmöglichkeiten zum europäischen Strommarkt. Auch soll die Energiesicherheit damit mittelfristig verbessert werden, da – unabhängig vom Stromhandel – bei dem bestehenden System eine technische Abhängigkeit vom russischen Netzbetreiber besteht.[21] Ende Februar soll daher für 72 Stunden die Abkoppelung vom bisherigen Netz getestet werden. Ungeachtet der außenpolitischen Bedrohungslage hält die Ukraine bislang an diesem „Inseltest“ fest. Nach diesem und weiteren Tests soll die Synchronisierung mit dem europäischen Stromnetz im nächsten Jahr erfolgen. Experten befürchten allerdings, dass der Wiederanschluss nach diesem ersten Test verzögert und die ukrainische Energieversorgung in einer sicherheitspolitisch angespannten Situation zusätzlich gefährdet werden könnte.
Gefahr einer Destabilisierung auch ohne militärische Eskalation
Das Verfahren gegen Poroschenko erfolgt im Windschatten internationaler Spannungen, die durch den massiven russischen Truppenaufwuchs an der Grenze zur Ukraine ausgelöst wurden. Die geopolitische Dimension des Konfliktes darf jedoch nicht den Blick auf die innere Entwicklung der Ukraine verstellen. So ist, wie politische Kommentatoren anführen, der Zeitpunkt des Prozesses gegen Poroschenko ausgesprochen bedenklich, da im Moment eines immensen äußeren Bedrohungspotentials ein innenpolitischer Konflikt ausgetragen wird, der die Einigkeit der Ukraine gefährdet. Dass diese dringend geboten ist, wird deutlich vor dem Hintergrund einer ständigen hybriden Bedrohungslage. Hierzu gehören bereits jetzt Cyber-Attacken, wie jüngst gegen 22 staatliche Einrichtungen. Ebenso fluten anhaltende Desinformationskampagnen sowie seit Wochen eine Welle anonymer Bombendrohungen gegen staatliche Einrichtungen – einschließlich Schulen – das Land. Seit Herbst letzten Jahres kann eine deutliche Zunahme solcher Aktivitäten beobachtet werden. So besteht eine hohe Wahrscheinlichkeit, dass Versuche unternommen werden, auch die juristische Auseinandersetzung zu instrumentalisieren. Sollte es zu einer Verurteilung Poroschenkos kommen, wären massive Proteste seiner Anhänger zu erwarten.
Den Konflikt im Osten befrieden zu wollen, war ein weiteres, zentrales Versprechen, mit dem Amtsinhaber Selenskyj während des Präsidentschaftswahlkampfs angetreten war. Allerdings sind seine diesbezüglichen Bemühungen im Sande verlaufen, auch weil der Kreml ihn immer wieder auflaufen ließ. Mehrere direkte Gesprächsangebote an den russischen Präsident Wladimir Putin blieben ergebnislos. Durch die fehlenden Erfolge gerät Präsident Selenskyj auch innenpolitisch unter Druck. Seine Zustimmungswerte in Umfragen liegen bei nur noch rund 25 Prozent. Sein Amtsvorgänger und in aktuellen Umfragen größter Konkurrent Poroschenko hat sich hingegen stets für einen harten Kurs gegenüber Moskau ausgesprochen. Die jüngsten Ereignisse scheinen dessen Sicht zu bestätigen, dass Dialogbereitschaft gegenüber Russland nur begrenzt Erfolg verspricht.
Für eine weitere innenpolitische Zwickmühle könnte das Minsker Abkommen sorgen. Auf der einen Seite stellt es das einzige verbindende Dokument und damit einen diplomatischen Minimalkonsens dar, auf den auch die westlichen Partner der Ukraine immer wieder mit Nachdruck verweisen. Auf der anderen Seite krankt es an dem grundlegenden Makel, dass es Russland nicht als Konfliktpartei benennt, sondern ihm genauso wie Frankreich und Deutschland eine vermeintlich neutrale Vermittlerrolle zuspricht. Da es sich beim sogenannten Ukrainekonflikt aber de facto um einen russisch-ukrainischen Konflikt handelt, wie die russischen Aktivitäten im Donbas und die von Russland völkerrechtswidrig annektierte Krim unterstreichen, scheinen Fortschritte auf Grundlage dieser Vereinbarung mehr als fraglich. Ein allzu großes Entgegenkommen im Rahmen von Minsk-2 würde vermutlich jede ukrainische Regierung innenpolitisch enorm belasten. Unweigerliche Folge wäre eine weitere politische Polarisierung im Land, die zwar im Interesse Moskaus, nicht jedoch im Interesse der westlichen Partner der Ukraine läge. Insofern wäre eine Wiederbelebung des Minsk-Prozesses ein zweischneidiges Schwert, das die Ukraine im schlimmsten Fall vor eine gesellschaftliche Zerreißprobe stellt und zur Destabilisierung beiträgt. Auch dieser Effekt würde im Kreml wohl begrüßt werden, stärkt es doch das russische Narrativ der gegenwärtigen Ukraine als chaotischem und schwachem Staat.
Auch ohne militärische Eskalation hat die russische Truppenkonzentration entlang der Grenze und die von den Medien aufgegriffene Kriegsgefahr bereits handfeste Auswirkungen auf die Ukraine. Ausländisches Kapital fließt aus dem Land ab und ukrainische Staatsanleihen sind bereits massiv unter Druck geraten. Äußerungen Präsident Selenskyjs, bei denen er vor ausländischen Journalisten vor Panikmache und Kriegsangst warnte, sind daher insbesondere in einem innen- und wirtschaftspolitischen Kontext zu sehen.[22]
Insgesamt geht von der demokratischen Konsolidierung der Ukraine vermutlich eine weitaus größere „Bedrohung“ aus, als von deren bündnispolitischen Ambitionen. Wenn im Nachbarland, mit dem Russland mehr als nur die sowjetische Vergangenheit teilt, eine plurale Parteienlandschaft fortbesteht und ein funktionierender Rechtsstaat arbeitet, würde dies einen permanenten Systemvergleich bedeuten. In der Ukraine belegen Umfragen unterdessen, dass der europäische, pro-demokratische Weg immer breitere Unterstützung findet. Rund 70 Prozent sprechen sich landesweit für eine EU-Annäherung aus. Auch die Zustimmungswerte zu einem NATO-Beitritt sind seit 2014 kontinuierlich gestiegen und liegen bei rund 60 Prozent.
Positiv hervorzuheben ist, dass jenseits der offenkundigen Spannungen zwischen Regierung und Opposition die als pro-europäisch geltenden politischen Kräfte der Ukraine nach wie vor den Schulterschluss suchen. So hielten bei einem Delegierten-Parteitag der Partei UDAR (Ukrainische Demokratische Allianz für Reformen) des Kiewer Bürgermeisters Vitalij Klitschko am 4. Februar 2022 auch Vertreter von „Batkiwschtschina“ (Vaterland), „Holos“ (Stimme) und „Europäische Solidarität“ jeweils Grußworte. Für letztere sprach Petro Poroschenko persönlich.
[1]https://khpg.org/en/1608809950
[2]https://khpg.org/en/1608809950
[3]https://www.pravda.com.ua/news/2022/01/16/7320565/
[4]https://laender-analysen.de/ukraine-analysen/238/strafverfahren-gegen-petro-poroschenko/
[5]https://ru.slovoidilo.ua/2021/12/20/statja/politika/poroshenko-obyavili-podozrenii-ugolnomu-delu-kakix-eshhe-proizvodstvax-figuriruet-pyatyj-prezident?
[6]https://laender-analysen.de/ukraine-analysen/238/poroschenko-im-rampenlicht-der-gesellschaftliche-wunsch-nach-rechtsstaatlichkeit-setzt-selenskyj-unter-zugzwang/
[7]https://www.kyivpost.com/ukraine-politics/self-servant-of-the-people-zelenskys-offshore-schemes.html
[8]https://www.kiis.com.ua/?lang=ukr&cat=reports&id=1090&page=1
[9]Joint statement following the 23rd EU-Ukraine Summit (12. October 2021) https://www.consilium.europa.eu/media/52383/20211012-joint-statement-final.pdf
[10]https://www.atlanticcouncil.org/blogs/ukrainealert/ukraines-anti-oligarch-law-president-zelenskyys-populist-power-grab/
[11]https://eurosolidarity.org/2021/11/08/we-will-not-allow-the-destruction-of-free-media-poroshenko-transferred-shares-of-pryamiy-and-channel-5-to-journalists/
[12]https://kyivindependent.com/national/selection-panel-fails-to-appoint-anti-graft-prosecutor-undermines-ties-with-west/
[13]https://www.kyivpost.com/business/russia-to-stop-exporting-thermal-coal-to-ukraine-from-nov-1.html
[14]https://www.dw.com/en/toxic-waters-in-war-torn-ukraine-how-not-to-phase-out-coal/a-60084288
[15]https://edition.cnn.com/2022/02/05/europe/gallery/ukraine-coal-miners/index.html
[16]https://ukraineverstehen.de/wp-content/uploads/Ukraine-winter-energy-outlook-2021-2022_LibMod_Mykhailenko_Zachmann.pdf
[17]https://www.kyivpost.com/business/russia-to-stop-exporting-thermal-coal-to-ukraine-from-nov-1.html
[18]https://www.ukrinform.net/rubric-polytics/3342448-russia-trying-to-coerce-ukraine-into-buying-coal-from-donbas-terrorists-expert.html
[19]https://www.rferl.org/a/ukraine-power-crunch-russia-squeeze/31689964.html
[20]https://www.forbes.com/sites/craighooper/2021/12/28/a-ukraine-invasion-will-go-nuclear-15-reactors-are-in-the-war-zone/?sh=3c1a78d227aa
[21]https://www.swp-berlin.org/publications/products/aktuell/2021A72_Ukraine_Europas_Stromsystem.pdf
[22]https://www.zeit.de/news/2022-02/01/keine-kriegsangst-in-der-ukraine-selenskyj-irritiert-westen