{# @var \App\Entity\ExternalJudgement externalJudgement #} {% extends "jury/base.html.twig" %} {% block title %}Submission s{{ submission.submitid }} - {{ parent() }}{% endblock %} {% block extrahead %} {{ parent() }} {% endblock %} {% block content %} {% if submission.externalJudgements.empty %} {% set externalJudgement = null %} {% else %} {% set externalJudgement = submission.externalJudgements.first %} {% endif %} {% if claimWarning %}
{{ claimWarning }}
{% endif %} {% if requestedOutputCount %}
Waiting for {{ requestedOutputCount }} team output(s) (or full debug package) to be grabbed and uploaded.
{% endif %} {% if selectedJudging is not null and selectedJudging.result is not empty and submission.expectedResults %} {% if selectedJudging.result|upper not in submission.expectedResults %}
Actual result {{ selectedJudging.result | printValidJuryResult }} does NOT match expected result(s): {% for expectedResult in submission.expectedResults %} {{ expectedResult | printValidJuryResult }} {% if not loop.last %}or{% endif %} {% endfor %}.
{% elseif submission.expectedResults|length > 1 %}
Actual result {{ selectedJudging.result | printValidJuryResult }} matches one of multiple expected results: {% for expectedResult in submission.expectedResults %} {{ expectedResult | printValidJuryResult }} {% if not loop.last %}or{% endif %} {% endfor %}.
{% else %}
Actual result matches the expected result ({{ selectedJudging.result | printValidJuryResult }}).
{% endif %} {% endif %} {% if version_warnings is not null and version_warnings is not empty %} {% for type, versions in version_warnings %}

This judging did not use the same {{ type}} version for all testcases. This may lead to unexpected results. Versions used:

{% for version in versions %}

{{ version }}
{% if not loop.last %}
{% endif %} {% endfor %}

{% endfor %} {% endif %}

Submission {{ submission.submitid }} {% if submission.originalSubmission %} {% set origSubmissionUrl = path('jury_submission', {submitId: submission.originalSubmission.submitid}) %} (resubmit of s{{ submission.originalSubmission.submitid }}) {% endif %} {% if submission.resubmissions is not empty %} (resubmitted as {%- for resubmission in submission.resubmissions -%} {% set resubmissionUrl = path('jury_submission', {submitId: resubmission.submitid}) %} s{{ resubmission.submitid }} {%- if not loop.last -%},{%- endif -%} {%- endfor -%} ) {% endif %} {% if not submission.valid %} (ignored) {% endif %}

{% if not submission.importError %} {% if is_granted('ROLE_ADMIN') %} {% if submission.valid %} {% set action = 'ignore' %} {% else %} {% set action = 'unignore' %} {% endif %}
{% endif %} {% include 'jury/partials/rejudge_form.html.twig' with {table: 'submission', id: submission.submitid} %} {% endif %}
{% if not submission.valid %}
This submission is not used during scoreboard calculations.
{% endif %} {% if submission.importError %}
This submission could not be imported into DOMjudge and thus will only show external data.
The error during import was: {{ submission.importError }}
{% endif %} {% if not submission.contestProblem %}
This submission is for a problem that is not part (anymore) of the contest of the submission.
{% endif %} {# Condensed submission info on a single line with icons #}
{{ submission.team.effectiveName }} {{ submission.team | entityIdBadge('t') }} {% if submission.user %} {{ submission.user.username }} {{ submission.user | entityIdBadge('u') }} {% endif %} {% if current_contest.cid != submission.contest.cid %} {{ submission.contest.shortname }} {{ submission.contest | entityIdBadge('c') }} {% endif %} {% if submission.contestProblem %} {{ submission.contestProblem | problemBadge }}: {{ submission.problem.name }} {% else %} {{ submission.problem.name }} {% endif %} {{ submission.problem | entityIdBadge('p') }} {{ submission.language.name }} {{ submission.language | entityIdBadge }} {{ submission.submittime | printtime(null, submission.contest) }} {{ submission.problem.timelimit * submission.language.timeFactor }}s View {{ submission.files | printFiles }} {% if external_ccs_submission_url is not empty %} {% set externalSubmissionUrl = submission | externalCcsUrl %} {% if externalSubmissionUrl is not empty %} View in external CCS {% endif %} {% endif %}
{% if submission.externalid %}
External ID: {% if external_ccs_submission_url is empty %} {{- submission.externalid -}} {% else %} {{- submission.externalid -}} {%- endif -%} {%- if externalJudgement is not null -%} , {{ externalJudgement.result | printValidJuryResult }} {% endif %}
{% endif %} {% if externalJudgement is not null and externalJudgement.result is not empty and ( (selectedJudging is not null and selectedJudging.result is not empty and externalJudgement.result != selectedJudging.result) or submission.importError) %}
Results differ!

This submission was judged as {% if external_ccs_submission_url is empty %} {{ externalJudgement.result | printValidJuryResult }} by the external CCS {% else %} {{ externalJudgement.result | printValidJuryResult }} by the external CCS {% endif -%} , but as {% if submission.importError %} {{ 'import-error' | printValidJuryResult }} {% else %} {{ selectedJudging.result | printValidJuryResult }} {% endif %} by DOMjudge.

{% include 'jury/partials/verify_form.html.twig' with { label: 'Shadow difference verified', judging: externalJudgement, form_action: path('jury_shadow_difference_verify', {extjudgementid: externalJudgement.extjudgementid}), show_form: true, show_icat: false} %}
{% endif %} {% if not sameTestcaseIds and selectedJudging is not null and selectedJudging.result is not empty %}
The problem's testcases have changed since this judging has been performed. We recommend rejudging the whole problem.
{% endif %} {% if judgings | length > 1 or (judgings | length == 1 and selectedJudging is null) %}

Judgings

{% for judging in judgings %} {% set link = path('jury_submission', {submitId: submission.submitid, jid: judging.judgingid}) %} {% endfor %}
ID start max runtime judgehost result rejudging
{% if selectedJudging is not null and selectedJudging.judgingid == judging.judgingid %} {% else %}   {% endif %} j{{ judging.judgingid }} {{ judging.starttime | printtime(null, submission.contest) }} {% if maxRunTimes[judging.judgingId] is not null %} {{ maxRunTimes[judging.judgingId] }}s {% endif %} {{ judging.judgehosts | printHosts }} {{ judging.result | printResult(judging.valid, true) }} {% if judging.stillBusy %} (…) {% endif %} {% if judging.rejudging is not null %} r{{ judging.rejudging.rejudgingid }} ({{ judging.rejudging.reason }}) {% endif %}
{% endif %} {% if unjudgableReasons is not empty %} {% for reason in unjudgableReasons %}
{{ reason }}
{% endfor %} {% endif %} {% if selectedJudging is not null or externalJudgement is not null %} {% if (selectedJudging is not null and selectedJudging.result != 'compiler-error') or (externalJudgement is not null and externalJudgement.result != 'compiler-error') %} {% include 'jury/partials/submission_graph.html.twig' %} {% endif %} {% if selectedJudging is not null %} {# Show judging information #}

Judging j{{ selectedJudging.judgingid }} {% if selectedJudging.rejudging %} (rejudging r{{ selectedJudging.rejudging.rejudgingid }}, reason: {{ selectedJudging.rejudging.reason }}) {% elseif not selectedJudging.valid %} (Invalid) {% endif %}

  {% if selectedJudging.debugPackages | length > 0 %} {% for debug_package in selectedJudging.debugPackages %} {% endfor %} {% else %} {% if not requestedOutputCount %} {% endif %} {% endif %}   {% if not selectedJudging.verified %}
{% if selectedJudging.juryMember is not empty %} (claimed by {{ selectedJudging.juryMember }}) {% endif %} {% if app.user.username == selectedJudging.juryMember %} {% else %} {% endif %}
{% endif %}   {% if selectedJudging is null or selectedJudging.result is empty %} {%- if not selectedJudging or not selectedJudging.started %} {%- endif %} {%- endif %}
{% endif %}
{% if not submission.importError %} {% if selectedJudging is null or selectedJudging.result is empty %} {%- if selectedJudging and selectedJudging.started %} {{- '' | printValidJuryResult -}} {%- else %} {{- 'queued' | printValidJuryResult -}} {%- endif %} {%- else %} {{- selectedJudging.result | printValidJuryResult -}} {%- endif %} {%- if submission.stillBusy -%} (…) {%- endif -%} {% endif %} {%- if lastJudging is not null -%} {% set lastSubmissionLink = path('jury_submission', {submitId: lastSubmission.submitid}) %}{#- -#} (s{{ lastSubmission.submitid }}: {{ lastJudging.result | printResult }}){#- -#} {%- endif -%} {%- if externalJudgement is not null %} {% if submission.importError %} External result: {{ externalJudgement.result | printValidJuryResult }} {% else %} (external: {{ externalJudgement.result | printValidJuryResult }}) {% endif %} {%- endif %} {%- if selectedJudging is not null and judgehosts is not empty -%} , on {{ judgehosts | printHosts }} {% if selectedJudging.starttime %} {% if selectedJudging.endtime %} , took {{ selectedJudging.starttime | printHumanTimeDiff(selectedJudging.endtime) }} {% elseif selectedJudging.valid or selectedJudging.rejudging %}  [still judging - busy {{ selectedJudging.starttime | printtimediff }}] {% else %}  [aborted] {% endif %} (started: {{ selectedJudging.starttime | printtime('H:i:s') }}) {% else %} , not started yet {% endif %} {% endif -%} {%- if externalJudgement is not null %} (external judging started: {{ externalJudgement.starttime | printtime('H:i:s') }} {%- if externalJudgement.endtime -%} , finished in {{ externalJudgement.starttime | printtimediff(externalJudgement.endtime) }}s {%- else -%}  [still judging - busy {{ externalJudgement.starttime | printtimediff }}] {%- endif -%} ) {%- endif -%}
{# Display testcase results #} {% if externalJudgement is not null or (selectedJudging is not null and selectedJudging.result != 'compiler-error') %} {% if not submission.importError %} {% endif %} {% if externalJudgement is not null %} {% endif %} {% if lastJudging is not null %} {% endif %}
{% if selectedJudging is null %} {% set judgingDone = false %} {% else %} {% set judgingDone = selectedJudging.endtime is not empty %} {% endif %} {{ runs | displayTestcaseResults(judgingDone) }} {% if selectedJudging is not null and runsOutstanding %} {% if selectedJudging.judgeCompletely %} {% elseif selectedJudging.result is not null %}
{% endif %} {% endif %}
{{ externalRuns | displayTestcaseResults(externalJudgement.endtime is not empty, true) }} {% if externalSubmissionUrl and externalSubmissionUrl is not empty %} {% endif %} external {{ externalJudgement.extjudgementid }} {% if externalSubmissionUrl and externalSubmissionUrl is not empty %} {% endif %}
{{ lastRuns | displayTestcaseResults(lastJudging.endtime is not empty) }} previous s{{ lastSubmission.submitid }} {% if lastJudging.verifyComment %} (verify comment: '{{ lastJudging.verifyComment }}') {% endif %}
{% endif %}
{# Show verify info, but only when a result is known #} {% if selectedJudging is not null and selectedJudging.result is not empty %} {% include 'jury/partials/verify_form.html.twig' with { label: 'Verified', judging: selectedJudging, form_action: path('jury_judging_verify', {judgingId: selectedJudging.judgingid}), show_form: not (verificationRequired and selectedJudging.verified and selectedJudging.valid), show_icat: true} %} {% if submission.contestProblem and icat_url %} {% endif %} {% elseif selectedJudging is not null %}
Judging is not ready yet!
{% endif %} {# Display compile output #} {% set color = '#6666FF' %} {% set message = 'not finished yet' %} {% set output = null %} {% if selectedJudging is not null %} {% set output = selectedJudging.outputCompile(true) %} {% endif %} {% if output is not null %} {% if selectedJudging.result == 'compiler-error' %} {% set message = 'unsuccessful' %} {% else %} {% set message = 'successful' %} {% if output is not empty %} {% set outputLines = output | lineCount %} {% if outputLines == 1 %} {% set message = message ~ ' (with 1 line of output)' %} {% else %} {% set message = message ~ ' (with ' ~ outputLines ~ ' lines of output)' %} {% endif %} {% endif %} {% endif %} {% endif %}

Compilation {{ message }}

{% if selectedJudging is not null and selectedJudging.compileMetadata is not null %} {{ selectedJudging.compileMetadata | printMetadata }}
{{ selectedJudging.compileMetadata }}


{% endif %}
Compilation output
{% if output is empty %}
There were no compiler errors or warnings.
{% else %}
{{ output }}
{% endif %}
{% if externalJudgement is not null or (selectedJudging is not null and selectedJudging.result != 'compiler-error') %} {# Show run info. Only when compilation was successful or we have an external judgement #} {% for runIdx, run in runs %} {% set externalRun = null %} {% if externalRuns[runIdx] is defined %} {% set externalRun = externalRuns[runIdx] %} {% endif %}
Run #{{ run.rank }} {% if run.origInputFilename is not null %} | {{ run.origInputFilename }}.in {% else %} {% if run.description is not null %} | {{ run.description(true) }} {% endif %} {% endif %} {% if run.firstJudgingRun is not null %} | {% if run.firstJudgingRun.runresult is not null %} {{ run.firstJudgingRun.runresult }} {% if run.firstJudgingRun.runresult == 'timelimit' %} {% if runsOutput[runIdx].terminated %} (terminated) {% else %} (finished late) {% endif %} {% endif %} {% else %} {% if runsOutput[runIdx].hostname is null %} queued {% else %} judging {% endif %} {% endif %} {% endif %} {% if runsOutput[runIdx].hostname is not null %} {% set judgehostLink = path('jury_judgehost', {judgehostid: runsOutput[runIdx].judgehostid}) %} | {{ runsOutput[runIdx].hostname | printHost }} {% endif %} {% if externalRun is not null and externalRun.firstExternalRun is not null %} {% if externalRun.firstExternalRun is not null %} (external: {{ externalRun.firstExternalRun.result }}{#- -#}{#- -#}) {% endif %} {% endif %} {% if runsOutput[runIdx].testcasedir is defined and runsOutput[runIdx].testcasedir is not null %} | .../{{ runsOutput[runIdx].testcasedir | split('/') | last }}{#- -#} {% endif %} {% if run.firstJudgingRun is not null %} {% if runsOutput[runIdx].is_output_run_truncated_in_db %} {% endif %} {% endif %}
{% if run.firstJudgingRun is not null %} {{ runsOutput[runIdx].metadata | printMetadata }} {% if runsOutput[runIdx].metadata is not null %} {% if runsOutput[runIdx].output_limit %}
The submission output ({{ runsOutput[runIdx].output_limit }}) was truncated because of the configured output limit.
{% endif %}
{{ runsOutput[runIdx].metadata }}
{% endif %} {% endif %} {% if run.description is not null %}

{{ run.description(true) | descriptionExpand }}

{% endif %} {% if runsOutput[runIdx].image_thumb %} {% set imgUrl = path('jury_problem_testcase_fetch', {'probId': submission.problem.probid, 'rank': run.rank, 'type': 'image'}) %} {% endif %} {% set runDone = false %} {% if run is not null and run.firstJudgingRun is not null and run.firstJudgingRun.runresult is not null %} {% set runDone = true %} {% endif %} {% if not runDone %}

{% if selectedJudging is not null and selectedJudging.result %} Run not used for final result. {% else %} Run not started/finished yet. {% endif %}

{% else %} {% if run.firstJudgingRun is not null and run.firstJudgingRun.runresult is not null %} {% if combinedRunCompare %}
Validator output
{% if runsOutput[runIdx].output_diff is empty %}

There was no validator output.

{% else %}
{{ runsOutput[runIdx].output_diff }}
{% endif %} {% else %}
Diff output
{% if runsOutput[runIdx].output_diff is empty %}

There was no diff output.

{% else %}
{{ runsOutput[runIdx].output_diff }}
{% endif %} {% if run.firstJudgingRun.runresult != 'correct' %} {{ runsOutput[runIdx] | runDiff }} {% endif %} {% endif %} {% if combinedRunCompare %}
Validator/Submission interaction
{% if runsOutput[runIdx].output_run is empty %}

There was no interaction log.

{% else %} {{ runsOutput[runIdx].output_run | interactiveLog }} {% endif %} {% else %}
Program output
{% if runsOutput[runIdx].output_run is empty %}

There was no program output.

{% else %}
{{ runsOutput[runIdx].output_run }}
{% endif %} {% endif %}
Program error output
{% if runsOutput[runIdx].output_error is empty %}

There was no stderr output.

{% else %}
{{ runsOutput[runIdx].output_error }}
{% endif %}
Judging system output (info/debug/errors)
{% if runsOutput[runIdx].output_system is empty %}

There was no judging system output.

{% else %}
{{ runsOutput[runIdx].output_system }}
{% endif %} {% if runsOutput[runIdx].team_message is not empty %}
Judge message for the team
{{  runsOutput[runIdx].team_message }}
{% endif %} {% endif %} {% endif %}
{% endfor %} {% endif %} {# selectedJudging.result != 'compiler-error' #} {% endif %} {# selectedJudging is not null or externalJudgement is not null #} {% endblock %}