from atom.views import (ActionMessageMixin, ActionView, CreateMessageMixin,
                        DeleteMessageMixin, UpdateMessageMixin)
from braces.views import (FormValidMessageMixin, PrefetchRelatedMixin,
                          SelectRelatedMixin, UserFormKwargsMixin)
from cached_property import cached_property
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
from django.core.urlresolvers import reverse, reverse_lazy
from django.shortcuts import get_object_or_404, redirect
from django.utils.translation import ugettext_lazy as _
from django.views.generic import (CreateView, DeleteView, DetailView, FormView,
                                  UpdateView)
from django_filters.views import FilterView

from feder.cases.models import Case
from feder.main.mixins import (AttrPermissionRequiredMixin,
                               RaisePermissionRequiredMixin)
from .filters import TaskFilter
from .forms import AnswerFormSet, SurveyForm, TaskForm
from .models import Survey, Task

DONE_MESSAGE_TEXT = _("Already done the job. If you want to change the answer - delete answers.")

THANK_TEXT = _("Thank you for your submission. It is approaching us to know the " +
               "truth, by obtaining reliable data.")

EXHAUSTED_TEXT = _("Thank you for your help. Unfortunately, all the tasks " +
                   "for you have been exhausted.")


class TaskListView(SelectRelatedMixin, FilterView):
    filterset_class = TaskFilter
    model = Task
    select_related = ['case', 'questionary']
    paginate_by = 25

    def get_context_data(self, **kwargs):
        context = super(TaskListView, self).get_context_data(**kwargs)
        context['stats'] = self.object_list.survey_stats()
        return context


class TaskDetailView(SelectRelatedMixin, PrefetchRelatedMixin, DetailView):
    model = Task
    select_related = ['case__monitoring', 'case__institution', 'questionary']
    prefetch_related = ['survey_set', 'questionary__question_set']

    def get_user_survey(self):
        try:
            return (self.object.survey_set.with_full_answer().
                    of_user(self.request.user, self.request.light_user).get())
        except Survey.DoesNotExist:
            return None

    def get_context_data(self, **kwargs):
        context = super(TaskDetailView, self).get_context_data(**kwargs)
        context['formset'] = AnswerFormSet(questionary=self.object.questionary)
        context['user_survey'] = self.get_user_survey()
        return context


class TaskSurveyView(SelectRelatedMixin, PrefetchRelatedMixin, DetailView):
    model = Task
    select_related = ['case__monitoring', 'case__institution', 'questionary', ]
    prefetch_related = ['questionary__question_set']
    template_name_suffix = '_survey'

    def get_context_data(self, **kwargs):
        context = super(TaskSurveyView, self).get_context_data(**kwargs)
        survey_list = (Survey.objects.for_task(self.object).with_user().with_full_answer().all())
        context['survey_list'] = survey_list
        user_survey_list = [x for x in survey_list if x.user == self.request.user]  # TODO: Lazy
        context['user_survey'] = user_survey_list[0] if user_survey_list else None
        return context


class TaskCreateView(RaisePermissionRequiredMixin, UserFormKwargsMixin,
                     CreateMessageMixin, CreateView):
    model = Task
    form_class = TaskForm
    permission_required = 'monitorings.add_task'

    @cached_property
    def case(self):
        return get_object_or_404(Case.objects.select_related('monitoring'),
                                 pk=self.kwargs['case'])

    def get_permission_object(self):
        return self.case.monitoring

    def get_form_kwargs(self):
        kw = super(TaskCreateView, self).get_form_kwargs()
        kw['case'] = self.case
        return kw

    def get_context_data(self, **kwargs):
        context = super(TaskCreateView, self).get_context_data(**kwargs)
        context['case'] = self.case
        return context


class TaskUpdateView(AttrPermissionRequiredMixin, UserFormKwargsMixin,
                     UpdateMessageMixin, FormValidMessageMixin, UpdateView):
    model = Task
    form_class = TaskForm
    permission_required = 'change_task'
    permission_attribute = 'case__monitoring'


class TaskDeleteView(AttrPermissionRequiredMixin, DeleteMessageMixin, DeleteView):
    model = Task
    success_url = reverse_lazy('tasks:list')
    permission_required = 'delete_task'
    permission_attribute = 'case__monitoring'


class SurveyDeleteView(LoginRequiredMixin, DeleteMessageMixin, DeleteView):
    model = Survey
    slug_url_kwarg = 'task_id'
    slug_field = 'task_id'

    def get_queryset(self, *args, **kwargs):
        qs = super(SurveyDeleteView, self).get_queryset()
        return qs.of_user(self.request.user, self.request.light_user).with_full_answer()

    def get_success_url(self):
        return self.object.task.get_absolute_url()


class SurveySelectView(AttrPermissionRequiredMixin, ActionMessageMixin,
                       SelectRelatedMixin, ActionView):  # TODO: Write test
    model = Survey
    template_name_suffix = '_select'
    select_related = ['task__case__monitoring', ]
    permission_required = 'monitorings.select_survey'
    permission_attribute = 'task__case__monitoring'
    direction = None
    change = {'up': 1, 'down': -1}

    def action(self, *args, **kwargs):
        self.object.credibility_update(self.change[self.direction])
        self.object.save()

    def get_success_message(self):
        return _("Survey {object} selected!").format(object=self.object)

    def get_success_url(self):
        return reverse('tasks:survey', kwargs={'pk': self.object.task_id})


class SurveyFillView(FormView):
    template_name = 'tasks/survey_fill.html'
    form_class = SurveyForm
    formset_class = AnswerFormSet

    @cached_property
    def task(self):
        return get_object_or_404(Task, pk=self.kwargs['pk'])

    @cached_property
    def object(self):
        try:
            return Survey.objects.filter(task=self.task).of_user(user=self.request.user,
                                                                 light_user=self.request.light_user).all()[0]
        except IndexError:
            return None

    def get_form_kwargs(self):
        kwargs = super(SurveyFillView, self).get_form_kwargs()
        kwargs['task'] = self.task
        kwargs['instance'] = self.object
        return kwargs

    def get_success_url(self):
        if 'save' in self.request.POST:  # only save
            return self.object.task.get_absolute_url()

        # find next task
        try:
            next_task = self.task.get_next_for_user(self.request.user)
            return next_task.get_absolute_url()
        except Task.DoesNotExist:
            messages.success(self.request, EXHAUSTED_TEXT)
            return self.task.case.monitoring.get_absolute_url()

    @cached_property
    def formset(self):
        return self.formset_class(data=self.request.POST or None,
                                  survey=self.object,
                                  questionary=self.task.questionary)

    def form_valid(self, form):
        self.object = form.save(commit=False)
        if self.formset.is_valid():
            if self.request.user.is_authenticated():
                self.object.user = self.request.user
            else:
                self.object.light_user = self.request.light_user_new
            self.object.save()
            self.formset.save()
            return self.formset_valid(form, self.object, self.formset)
        return self.render_to_response(self.get_context_data())

    def formset_valid(self, form, obj, formset):
        messages.success(self.request, THANK_TEXT)
        obj.save()
        formset.save()
        return redirect(self.get_success_url())

    def get_context_data(self, **kwargs):
        context = super(SurveyFillView, self).get_context_data(**kwargs)
        context['formset'] = self.formset
        context['object'] = self.object
        context['task'] = self.task
        return context

feder/tasks/views.py
from atom.views import (ActionMessageMixin, ActionView, CreateMessageMixin,
                        DeleteMessageMixin, UpdateMessageMixin)
from braces.views import (FormValidMessageMixin, PrefetchRelatedMixin,
                          SelectRelatedMixin, UserFormKwargsMixin)
from cached_property import cached_property
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
from django.core.urlresolvers import reverse, reverse_lazy
from django.shortcuts import get_object_or_404, redirect
from django.utils.translation import ugettext_lazy as _
from django.views.generic import (CreateView, DeleteView, DetailView, FormView,
                                  UpdateView)
from django_filters.views import FilterView

from feder.cases.models import Case
from feder.main.mixins import (AttrPermissionRequiredMixin,
                               RaisePermissionRequiredMixin)
from .filters import TaskFilter
from .forms import AnswerFormSet, SurveyForm, TaskForm
from .models import Survey, Task

DONE_MESSAGE_TEXT = _("Already done the job. If you want to change the answer - delete answers.")

THANK_TEXT = _("Thank you for your submission. It is approaching us to know the " +
               "truth, by obtaining reliable data.")

EXHAUSTED_TEXT = _("Thank you for your help. Unfortunately, all the tasks " +
                   "for you have been exhausted.")


class TaskListView(SelectRelatedMixin, FilterView):
    filterset_class = TaskFilter
    model = Task
    select_related = ['case', 'questionary']
    paginate_by = 25

    def get_context_data(self, **kwargs):
        context = super(TaskListView, self).get_context_data(**kwargs)
        context['stats'] = self.object_list.survey_stats()
        return context


class TaskDetailView(SelectRelatedMixin, PrefetchRelatedMixin, DetailView):
    model = Task
    select_related = ['case__monitoring', 'case__institution', 'questionary']
    prefetch_related = ['survey_set', 'questionary__question_set']

    def get_user_survey(self):
        try:
            return (self.object.survey_set.with_full_answer().
                    of_user(self.request.user, self.request.light_user).get())
        except Survey.DoesNotExist:
            return None

    def get_context_data(self, **kwargs):
        context = super(TaskDetailView, self).get_context_data(**kwargs)
        context['formset'] = AnswerFormSet(questionary=self.object.questionary)
        context['user_survey'] = self.get_user_survey()
        return context


class TaskSurveyView(SelectRelatedMixin, PrefetchRelatedMixin, DetailView):
    model = Task
    select_related = ['case__monitoring', 'case__institution', 'questionary', ]
    prefetch_related = ['questionary__question_set']
    template_name_suffix = '_survey'

    def get_context_data(self, **kwargs):
        context = super(TaskSurveyView, self).get_context_data(**kwargs)
        survey_list = (Survey.objects.for_task(self.object).with_user().with_full_answer().all())
        context['survey_list'] = survey_list
        user_survey_list = [x for x in survey_list if x.user == self.request.user]  # TODO: Lazy
        context['user_survey'] = user_survey_list[0] if user_survey_list else None
        return context


class TaskCreateView(RaisePermissionRequiredMixin, UserFormKwargsMixin,
                     CreateMessageMixin, CreateView):
    model = Task
    form_class = TaskForm
    permission_required = 'monitorings.add_task'

    @cached_property
    def case(self):
        return get_object_or_404(Case.objects.select_related('monitoring'),
                                 pk=self.kwargs['case'])

    def get_permission_object(self):
        return self.case.monitoring

    def get_form_kwargs(self):
        kw = super(TaskCreateView, self).get_form_kwargs()
        kw['case'] = self.case
        return kw

    def get_context_data(self, **kwargs):
        context = super(TaskCreateView, self).get_context_data(**kwargs)
        context['case'] = self.case
        return context


class TaskUpdateView(AttrPermissionRequiredMixin, UserFormKwargsMixin,
                     UpdateMessageMixin, FormValidMessageMixin, UpdateView):
    model = Task
    form_class = TaskForm
    permission_required = 'change_task'
    permission_attribute = 'case__monitoring'


class TaskDeleteView(AttrPermissionRequiredMixin, DeleteMessageMixin, DeleteView):
    model = Task
    success_url = reverse_lazy('tasks:list')
    permission_required = 'delete_task'
    permission_attribute = 'case__monitoring'


class SurveyDeleteView(LoginRequiredMixin, DeleteMessageMixin, DeleteView):
    model = Survey
    slug_url_kwarg = 'task_id'
    slug_field = 'task_id'

    def get_queryset(self, *args, **kwargs):
        qs = super(SurveyDeleteView, self).get_queryset()
        return qs.of_user(self.request.user, self.request.light_user).with_full_answer()

    def get_success_url(self):
        return self.object.task.get_absolute_url()


class SurveySelectView(AttrPermissionRequiredMixin, ActionMessageMixin,
                       SelectRelatedMixin, ActionView):  # TODO: Write test
    model = Survey
    template_name_suffix = '_select'
    select_related = ['task__case__monitoring', ]
    permission_required = 'monitorings.select_survey'
    permission_attribute = 'task__case__monitoring'
    direction = None
    change = {'up': 1, 'down': -1}

    def action(self, *args, **kwargs):
        self.object.credibility_update(self.change[self.direction])
        self.object.save()

    def get_success_message(self):
        if self.direction == 'up':
            return _("Survey credibility increased!")
        else:
            return _("Survey credibility decreased!")

    def get_success_url(self):
        return reverse('tasks:survey', kwargs={'pk': self.object.task_id})


class SurveyFillView(FormView):
    template_name = 'tasks/survey_fill.html'
    form_class = SurveyForm
    formset_class = AnswerFormSet

    @cached_property
    def task(self):
        return get_object_or_404(Task, pk=self.kwargs['pk'])

    @cached_property
    def object(self):
        try:
            return Survey.objects.filter(task=self.task).of_user(user=self.request.user,
                                                                 light_user=self.request.light_user).all()[0]
        except IndexError:
            return None

    def get_form_kwargs(self):
        kwargs = super(SurveyFillView, self).get_form_kwargs()
        kwargs['task'] = self.task
        kwargs['instance'] = self.object
        return kwargs

    def get_success_url(self):
        if 'save' in self.request.POST:  # only save
            return self.object.task.get_absolute_url()

        # find next task
        try:
            next_task = self.task.get_next_for_user(self.request.user)
            return next_task.get_absolute_url()
        except Task.DoesNotExist:
            messages.success(self.request, EXHAUSTED_TEXT)
            return self.task.case.monitoring.get_absolute_url()

    @cached_property
    def formset(self):
        return self.formset_class(data=self.request.POST or None,
                                  survey=self.object,
                                  questionary=self.task.questionary)

    def form_valid(self, form):
        self.object = form.save(commit=False)
        if self.formset.is_valid():
            if self.request.user.is_authenticated():
                self.object.user = self.request.user
            else:
                self.object.light_user = self.request.light_user_new
            self.object.save()
            self.formset.save()
            return self.formset_valid(form, self.object, self.formset)
        return self.render_to_response(self.get_context_data())

    def formset_valid(self, form, obj, formset):
        messages.success(self.request, THANK_TEXT)
        obj.save()
        formset.save()
        return redirect(self.get_success_url())

    def get_context_data(self, **kwargs):
        context = super(SurveyFillView, self).get_context_data(**kwargs)
        context['formset'] = self.formset
        context['object'] = self.object
        context['task'] = self.task
        return context

feder/tasks/views.py
diff --git a/feder/tasks/locale/pl/LC_MESSAGES/django.mo b/feder/tasks/locale/pl/LC_MESSAGES/django.mo
index 6ca3639b9..d24182059 100644
Binary files a/feder/tasks/locale/pl/LC_MESSAGES/django.mo and b/feder/tasks/locale/pl/LC_MESSAGES/django.mo differ
diff --git a/feder/tasks/locale/pl/LC_MESSAGES/django.po b/feder/tasks/locale/pl/LC_MESSAGES/django.po
index 1f42d33c9..b8a959c46 100644
--- a/feder/tasks/locale/pl/LC_MESSAGES/django.po
+++ b/feder/tasks/locale/pl/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: tasks 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-11 01:25+0000\n"
+"POT-Creation-Date: 2017-09-25 14:05+0000\n"
 "PO-Revision-Date: 2016-09-18 01:57+0200\n"
 "Last-Translator: Adam Dobrawy <naczelnik@jawnosc.tk>\n"
 "Language-Team: Adam Dobrawy <naczelnik@jawnosc.tk>\n"
@@ -19,7 +19,12 @@ msgstr ""
 "|| n%100>=20) ? 1 : 2);\n"
 "X-Generator: Poedit 1.8.7.1\n"
 
-#: filters.py:10 templates/tasks/task_survey.html:20
+#: apps.py:10 models.py:125 templates/tasks/base.html:5
+#: templates/tasks/task_detail.html:3
+msgid "Tasks"
+msgstr "Zadania"
+
+#: filters.py:10 templates/tasks/task_survey.html:24
 msgid "Creation date"
 msgstr "Data utworzenia"
 
@@ -27,11 +32,23 @@ msgstr "Data utworzenia"
 msgid "Is done?"
 msgstr "Czy ukończone?"
 
-#: filters.py:27
+#: filters.py:17 models.py:65
+msgid "Name"
+msgstr "Nazwa"
+
+#: filters.py:21
+msgid "Monitoring"
+msgstr "Monitoring"
+
+#: filters.py:24
+msgid "Institution"
+msgstr "Instytucja"
+
+#: filters.py:31
 msgid "creation date (ascending)"
 msgstr "Data utworzenia (rosnąco)"
 
-#: filters.py:28
+#: filters.py:32
 msgid "creation date (descending)"
 msgstr "Data utworzenia (malejąco)"
 
@@ -51,11 +68,11 @@ msgstr "Przedrostek dla nazwy w postaci \"[przedrostek] #[numer]\"."
 msgid "They are available only cases relevant to the monitoring."
 msgstr "Tu są dostępne sprawy wyłącznie właściwe dla danego monitoringu. "
 
-#: models.py:19 templates/tasks/task_filter.html:6
+#: models.py:21 templates/tasks/task_filter.html:6
 msgid "Tasks index"
 msgstr "Wykaz zadań"
 
-#: models.py:21
+#: models.py:23
 msgid ""
 "Define how much answers do you need to mark tasks as done\n"
 " or count progress"
@@ -63,58 +80,50 @@ msgstr ""
 "Określ jak wiele odpowiedzi, aby oznaczyć odpowiedź jako wykonaną lub do "
 "liczenia postępu."
 
-#: models.py:63
-msgid "Name"
-msgstr "Nazwa"
-
-#: models.py:64 templates/tasks/_task_small.html:8
-#: templates/tasks/task_detail.html:26
+#: models.py:66 templates/tasks/_task_small.html:8
+#: templates/tasks/task_detail.html:50
 msgid "Case"
 msgstr "Sprawa"
 
-#: models.py:65 templates/tasks/_task_small.html:9
-#: templates/tasks/task_detail.html:31
+#: models.py:67 templates/tasks/_task_small.html:9
+#: templates/tasks/task_detail.html:55
 msgid "Questionary"
 msgstr "Kwestionariusz"
 
-#: models.py:66
+#: models.py:68
 msgid "Questionary to fill by user as task"
 msgstr "Kwestionariusz do wypełnienia przez użytkownika jako zadanie"
 
-#: models.py:67
+#: models.py:69
 msgid "Required survey count"
 msgstr "Liczba wymaganych ankiet"
 
-#: models.py:70
+#: models.py:72
 msgid "Done survey count"
 msgstr "Liczba ukończonych ankiet"
 
-#: models.py:122
+#: models.py:124
 msgid "Task"
 msgstr "Zadanie"
 
-#: models.py:123 templates/tasks/base.html:5
-msgid "Tasks"
-msgstr "Zadania"
-
-#: models.py:142 templates/tasks/task_survey.html:24
+#: models.py:166 templates/tasks/task_survey.html:28
 msgid "Credibility"
 msgstr "Wiarygodność"
 
-#: models.py:152
+#: models.py:176
 msgid "Survey"
 msgstr "Ankieta"
 
-#: models.py:153
+#: models.py:177
 msgid "Surveys"
 msgstr "Ankiety"
 
-#: models.py:171
+#: models.py:195
 msgid "Answer"
 msgstr "Odpowiedź"
 
-#: models.py:172 templates/tasks/_btn.html:26
-#: templates/tasks/task_survey.html:6
+#: models.py:196 templates/tasks/_btn.html:26
+#: templates/tasks/task_survey.html:10
 msgid "Answers"
 msgstr "Odpowiedzi"
 
@@ -122,8 +131,8 @@ msgstr "Odpowiedzi"
 msgid "Edit"
 msgstr "Edytuj"
 
-#: templates/tasks/_btn.html:13 templates/tasks/survey_confirm_delete.html:16
-#: templates/tasks/task_detail.html:43
+#: templates/tasks/_btn.html:13 templates/tasks/survey_confirm_delete.html:22
+#: templates/tasks/task_detail.html:67
 msgid "Delete"
 msgstr "Usuń"
 
@@ -139,11 +148,11 @@ msgstr "Zaktualizuj odpowiedź"
 msgid "Delete answer"
 msgstr "Usuń odpowiedź"
 
-#: templates/tasks/_formset.html:11 templates/tasks/survey_fill.html:27
+#: templates/tasks/_formset.html:11 templates/tasks/survey_fill.html:57
 msgid "Save"
 msgstr "Zapisz"
 
-#: templates/tasks/_formset.html:12 templates/tasks/survey_fill.html:28
+#: templates/tasks/_formset.html:12 templates/tasks/survey_fill.html:58
 msgid "Save and go next"
 msgstr "Zapisz i przejdź do następnego"
 
@@ -156,48 +165,48 @@ msgid ""
 msgstr "%(progress)s%% ukończono"
 
 #: templates/tasks/_task_select_list.html:11
-#: templates/tasks/task_detail.html:58 templates/tasks/task_filter.html:24
+#: templates/tasks/task_detail.html:82 templates/tasks/task_filter.html:24
 msgid "No rows."
 msgstr "Brak wierszy"
 
-#: templates/tasks/survey_confirm_delete.html:5
-#: templates/tasks/task_confirm_delete.html:4
+#: templates/tasks/survey_confirm_delete.html:10
+#: templates/tasks/task_confirm_delete.html:9
 msgid "Confirm delete"
 msgstr "Potwierdź usuwanie"
 
-#: templates/tasks/survey_fill.html:9
+#: templates/tasks/survey_fill.html:38
 msgid "Survey fill"
 msgstr "Wypełnianie ankiety"
 
-#: templates/tasks/survey_select.html:5
+#: templates/tasks/survey_select.html:10
 msgid "Confirm select answer"
 msgstr "Potwierdź wybranie odpowiedzi"
 
-#: templates/tasks/survey_select.html:14 templates/tasks/task_survey.html:32
+#: templates/tasks/survey_select.html:20 templates/tasks/task_survey.html:36
 msgid "Credibility update"
 msgstr "Aktualizacja wiarygodności"
 
-#: templates/tasks/task_detail.html:38
+#: templates/tasks/task_detail.html:62
 msgid "Analysis"
 msgstr "Analiza"
 
-#: templates/tasks/task_form.html:6
+#: templates/tasks/task_form.html:10
 msgid "Update task"
 msgstr "Zaktualizuj zadanie"
 
-#: templates/tasks/task_form.html:6
+#: templates/tasks/task_form.html:10
 msgid "Add task"
 msgstr "Dodaj zadanie"
 
-#: templates/tasks/task_survey.html:17
+#: templates/tasks/task_survey.html:21
 msgid "User"
 msgstr "Użytkownik / użytkowniczka"
 
-#: templates/tasks/task_survey.html:68
+#: templates/tasks/task_survey.html:72
 msgid "Up"
 msgstr "Do góry"
 
-#: templates/tasks/task_survey.html:75
+#: templates/tasks/task_survey.html:79
 msgid "Down"
 msgstr "W dół"
 
@@ -264,10 +273,13 @@ msgstr ""
 "Dziękujemy za Twoją pomoc. Niestety, wszystkie zadania - w tym monitoringu - "
 "zostały wyczerpane. "
 
-#: views.py:145
-#, python-brace-format
-msgid "Survey {object} selected!"
-msgstr "Ankieta {object} wybrana!"
+#: views.py:146
+msgid "Survey credibility increased!"
+msgstr "Wiarygodność została zwiększona!"
+
+#: views.py:148
+msgid "Survey credibility decreased!"
+msgstr "Wiarygodność została zmniejszona!"
 
 #~ msgid "Create task"
 #~ msgstr "Utwórz zadanie"
diff --git a/feder/tasks/views.py b/feder/tasks/views.py
index 12da03727..34ec3f6fc 100644
--- a/feder/tasks/views.py
+++ b/feder/tasks/views.py
@@ -142,7 +142,10 @@ def action(self, *args, **kwargs):
         self.object.save()
 
     def get_success_message(self):
-        return _("Survey {object} selected!").format(object=self.object)
+        if self.direction == 'up':
+            return _("Survey credibility increased!")
+        else:
+            return _("Survey credibility decreased!")
 
     def get_success_url(self):
         return reverse('tasks:survey', kwargs={'pk': self.object.task_id})

Przyjazny komunikat o aktualizacji wiarygodności
![zaznaczenie_1027](https://user-images.githubusercontent.com/3618479/30726463-49ccc99c-9f4b-11e7-8b74-db3108ac4e45.png)

