2017-12-14 03:08:43 +00:00
< nav role = "navigation" >
< ol class = "breadcrumb" >
2018-01-23 03:16:50 +00:00
< li ng-repeat = "(k,exercice) in themes[current_theme].exercices" class = "breadcrumb-item" ng-class = "{active: k == current_exercice, disabled: !my.exercices[k]}" >
< a ng-if = "(k != current_exercice && !my.exercices[k])" > {{ exercice.title }}< / a >
< a ng-href = "/{{ themes[current_theme].urlid }}/{{ themes[current_theme].exercices[k].urlid }}" ng-if = "(k != current_exercice && my.exercices[k])" >
{{ exercice.title }}
< span class = "glyphicon glyphicon-gift" aria-hidden = "true" ng-if = "themes[current_theme].exercices[k].curcoeff > 1.0" > < / span >
< span class = "glyphicon glyphicon-ok" aria-hidden = "true" ng-if = "(my.team_id && my.exercices[k].solved)" > < / span >
< / a >
< strong ng-if = "k == current_exercice" class = "text-info" > {{ exercice.title }}< / strong >
< / li >
2017-12-14 03:08:43 +00:00
< / ol >
< / nav >
2016-01-16 21:40:59 +00:00
2017-02-22 03:39:14 +00:00
< div class = "alert alert-warning" style = "margin-top:15px;" ng-if = "!(my.exercices[current_exercice])" >
2016-01-21 00:38:43 +00:00
Vous n'avez pas encore accès à cet exercice.
< / div >
2018-01-23 01:29:15 +00:00
< div class = "jumbotron text-indent" style = "margin-top: 15px" class = "well well-lg" ng-if = "!(my.exercices[current_exercice])" >
< p class = "lead text-justify" ng-bind-html = "themes[current_theme].intro" > < / p >
< / div >
2017-12-17 15:07:04 +00:00
< div class = "jumbotron text-indent" style = "margin-top: 15px" class = "well well-lg" ng-if = "(my.exercices[current_exercice])" >
< h3 class = "display-4" > {{ themes[current_theme].exercices[current_exercice].title }}< / h3 >
< p class = "lead text-justify" ng-bind-html = "my.exercices[current_exercice].statement" > < / p >
2018-11-21 01:20:37 +00:00
< div class = "alert alert-{{my.exercices[current_exercice].issuekind}}" ng-if = "my.exercices[current_exercice].issue" ng-bind-html = "my.exercices[current_exercice].issue" > < / div >
2017-12-17 15:07:04 +00:00
< hr class = "my-3" >
2016-01-16 21:40:59 +00:00
< ul >
2018-01-22 16:42:00 +00:00
< li > < strong > Gain :< / strong > < ng-pluralize count = "themes[current_theme].exercices[current_exercice].gain" when = "{'one': '{} point', 'other': '{} points'}" > < / ng-pluralize > < em ng-if = "settings.firstBlood && themes[current_theme].exercices[current_exercice].solved < 1" > {{ 1 + settings.firstBlood | coeff }} prem's< / em > < em ng-if = "themes[current_theme].exercices[current_exercice].curcoeff != 1.0" > {{ themes[current_theme].exercices[current_exercice].curcoeff | coeff }} bonus< / em > < / li >
2017-12-14 03:08:43 +00:00
< li > < strong > Résolu par :< / strong > < ng-pluralize count = "themes[current_theme].exercices[current_exercice].solved" when = "{'0': 'aucune équipe', 'one': '{} équipe', 'other': '{} équipes'}" > < / ng-pluralize > .< / li >
2016-01-16 21:40:59 +00:00
< / ul >
< / div >
2017-12-14 03:08:43 +00:00
< div class = "row" >
2018-01-07 23:17:46 +00:00
< div class = "col-xl" ng-if = "(my.exercices[current_exercice] && my.exercices[current_exercice].files.length)" style = "margin-bottom: 15px" >
2017-12-14 03:08:43 +00:00
< div class = "card" style = "margin-bottom: 15px" >
< div class = "card-header text-white" >
< span class = "glyphicon glyphicon-download-alt" aria-hidden = "true" > < / span > Téléchargements
2016-01-16 21:40:59 +00:00
< / div >
2016-12-04 18:13:44 +00:00
< div class = "list-group" >
2017-01-15 22:56:28 +00:00
< a ng-href = "{{ file.path }}" target = "_self" class = "list-group-item" ng-repeat = "file in my.exercices[current_exercice].files" >
2018-01-07 23:17:46 +00:00
< h1 class = "float-left" style = "margin: 7px 7px 5px -5px" > < span class = "glyphicon glyphicon-download" aria-hidden = "true" > < / span > < / h1 >
2016-12-04 18:13:44 +00:00
< h4 class = "list-group-item-heading" > < strong > < samp > {{ file.name }}< / samp > < / strong > < / h4 >
2017-12-14 03:08:43 +00:00
< p class = "list-group-item-text" > < nobr > Taille : < span title = "{{ file.size }} octets" > {{ file.size | size }}< / span > < / nobr > – < nobr > < span title = "blake2.net" > b2sum< / span > : < samp class = "cksum" title = "{{ file.checksum }}" > {{ file.checksum }}< / samp > < / nobr > < / p >
2016-12-04 18:13:44 +00:00
< / a >
< / div >
2016-01-16 21:40:59 +00:00
< / div >
2017-12-14 03:08:43 +00:00
< / div >
2016-01-16 21:40:59 +00:00
2018-01-07 22:40:11 +00:00
< div class = "col-xl" ng-if = "(my.exercices[current_exercice] && my.exercices[current_exercice].hints.length)" style = "margin-bottom: 15px" >
< div class = "card border-info" style = "margin-bottom: 15px" >
2017-12-14 03:08:43 +00:00
< div class = "card-header bg-info text-white" >
< span class = "glyphicon glyphicon-lamp" aria-hidden = "true" > < / span > Indices
2016-12-04 18:15:39 +00:00
< / div >
2017-01-14 14:03:25 +00:00
< div class = "list-group" >
2018-01-07 22:40:11 +00:00
< a target = "_self" class = "list-group-item text-light" ng-repeat = "hint in my.exercices[current_exercice].hints" ng-href = "{{ hint.file }}" >
2018-11-18 20:34:08 +00:00
< button type = "button" ng-click = "hsubmit(hint)" class = "float-right btn btn-info" ng-if = "!(hint.content || hint.file)" ng-class = "{disabled: hint.submitted}" > < span class = "glyphicon glyphicon-lock" aria-hidden = "true" > < / span > Débloquer< / button >
< button type = "button" ng-click = "hint.hidden = false;" class = "float-right btn btn-info" ng-if = "!hint.file && hint.hidden" > < span class = "glyphicon glyphicon-lock" aria-hidden = "true" > < / span > Afficher< / button >
2018-01-07 22:40:11 +00:00
< h1 class = "float-left" style = "margin: 5px 7px 5px -5px" ng-if = "hint.file" > < span class = "glyphicon glyphicon-download" aria-hidden = "true" > < / span > < / h1 >
2016-12-04 18:15:39 +00:00
< h4 class = "list-group-item-heading" > {{ hint.title }}< / h4 >
2018-01-07 22:40:11 +00:00
< p class = "list-group-item-text" ng-if = "!hint.file && hint.content && !hint.hidden" ng-bind-html = "hint.content" > < / p >
< p class = "list-group-item-text" ng-if = "hint.file" > Cliquez ici pour télécharger l'indice. < samp class = "cksum" title = "Somme de contrôle BLAKE2b : {{ hint.content }}" > {{ hint.content }}< / samp > < / p >
2018-11-20 22:49:43 +00:00
< p class = "list-group-item-text" ng-if = "!hint.file && !hint.content && (hint.hidden === true || hint.hidden === undefined)" > Débloquer cet indice vous fera perdre < ng-pluralize count = "hint.cost" when = "{'one': '{} point', 'other': '{} points'}" > < / ng-pluralize > .< / p >
2017-01-14 14:03:25 +00:00
< / a >
< / div >
2016-12-04 18:15:39 +00:00
< / div >
2017-12-14 03:08:43 +00:00
< / div >
2016-12-04 18:15:39 +00:00
2017-12-14 03:08:43 +00:00
< div class = "col-xl" style = "margin-bottom: 25px" >
< div class = "card border-danger" ng-if = "my.team_id && my.exercices[current_exercice] && !(my.exercices[current_exercice].solved)" style = "margin-bottom: 15px" >
< div class = "card-header bg-danger text-white" >
2017-12-15 18:39:46 +00:00
< span class = "glyphicon glyphicon-flag" aria-hidden = "true" > < / span > Faire son rapport
2016-01-16 21:40:59 +00:00
< / div >
2017-02-22 03:39:14 +00:00
< ul class = "list-group" ng-if = "(my.exercices[current_exercice].tries || my.exercices[current_exercice].submitted || sberr)" >
2017-12-17 01:48:02 +00:00
< li class = "list-group-item text-warning" ng-if = "my.exercices[current_exercice].tries" > < ng-pluralize count = "my.exercices[current_exercice].tries" when = "{'one': '{} tentative effectuée', 'other': '{} tentatives effectuées'}" > < / ng-pluralize > . Dernière solution envoyée à {{ my.exercices[current_exercice].solved_time | date:"mediumTime" }}. < span ng-if = "my.exercices[current_exercice].solve_dist" > < ng-pluralize count = "my.exercices[current_exercice].solve_dist" when = "{'one': '{} réponse erronée', 'other': '{} réponses erronées'}" > < / ng-pluralize > .< / span > < / li >
2017-02-22 03:39:14 +00:00
< li class = "list-group-item" ng-class = "messageClass" ng-if = "my.exercices[current_exercice].submitted || sberr" > < strong ng-if = "!sberr" > Votre solution a bien été envoyée !< / strong > < strong ng-if = "sberr" > {{ sberr }}< / strong > {{ message }}< / li >
2016-01-24 13:32:46 +00:00
< / ul >
2017-12-14 03:08:43 +00:00
< div class = "card-body" ng-if = "!my.exercices[current_exercice].submitted || sberr" >
2016-01-23 11:29:19 +00:00
< form ng-controller = "SubmissionController" ng-submit = "ssubmit()" >
2017-12-17 15:07:04 +00:00
< div class = "form-group" ng-repeat = "key in flags" >
2017-12-14 03:08:43 +00:00
< label for = "sol_{{ key.id }}" > {{ key.name }} :< / label >
2018-01-23 00:22:39 +00:00
< input type = "text" class = "form-control" id = "sol_{{ key.id }}" autocomplete = "off" name = "sol_{{ key.id }}" ng-model = "key.value" ng-if = "!key.found" >
2018-11-20 23:11:15 +00:00
< small class = "form-text text-muted" ng-if = "key.help.length > 0" ng-bind = "key.help" > < / small >
2017-02-22 03:39:14 +00:00
< span class = "glyphicon glyphicon-ok form-control-feedback" aria-hidden = "true" ng-if = "key.found" > < / span >
2016-01-16 21:40:59 +00:00
< / div >
2017-12-16 01:12:44 +00:00
< div class = "form-check" ng-repeat = "(k,mcq) in mcqs" >
< p ng-if = "mcq.title" ng-bind = "mcq.title" > < / p >
2018-01-19 17:20:42 +00:00
< div class = "custom-control custom-checkbox" ng-repeat = "(cid,choice) in mcq.choices" style = "display: block" >
< input class = "custom-control-input" type = "checkbox" id = "mcq_{{k}}_{{cid}}" name = "mcq_{{k}}_{{cid}}" ng-model = "choice.value" >
< label class = "custom-control-label" for = "mcq_{{k}}_{{cid}}" ng-bind = "choice.label" > < / label >
< / div >
2017-12-16 01:12:44 +00:00
< hr >
< / div >
2016-01-24 13:32:46 +00:00
< div class = "form-group text-right" >
2016-12-04 18:13:09 +00:00
< button type = "submit" class = "btn btn-danger" id = "sbmt" > Soumettre< / button >
2016-01-24 13:32:46 +00:00
< / div >
2016-01-16 21:40:59 +00:00
< / form >
< / div >
< / div >
2017-12-14 03:08:43 +00:00
< div class = "card border-success" ng-if = "(my.team_id && my.exercices[current_exercice].solved)" >
< div class = "card-header bg-success text-white" >
< span class = "glyphicon glyphicon-flag" aria-hidden = "true" > < / span > Challenge réussi !
2016-01-16 21:40:59 +00:00
< / div >
2017-12-14 03:08:43 +00:00
< div class = "card-body" >
2017-12-17 15:07:04 +00:00
< p class = "card-text" >
Vous êtes la {{ my.exercices[current_exercice].solved_rank }}< sup > < ng-pluralize count = "my.exercices[current_exercice].solved_rank" when = "{'one': 're', 'other': 'e'}" > < / ng-pluralize > < / sup > équipe à avoir résolu ce challenge à {{ my.exercices[current_exercice].solved_time | date:"mediumTime" }}. Vous avez marqué < ng-pluralize count = "my.exercices[current_exercice].gain" when = "{'one': '{} point', 'other': '{} points'}" > < / ng-pluralize > !
< / p >
2018-01-18 10:07:50 +00:00
< a href = "/{{ themes[current_theme].urlid }}" class = "btn btn-success" > Passer au challenge suivant< / a >
2016-01-16 21:40:59 +00:00
< / div >
< / div >
2016-01-23 11:29:19 +00:00
2017-12-14 03:08:43 +00:00
< div class = "card border-success" ng-if = "(!my.team_id && my.exercices[current_exercice].keys)" >
2018-01-08 00:14:41 +00:00
< div class = "card-header bg-success text-white" >
2017-12-14 03:08:43 +00:00
< span class = "glyphicon glyphicon-flag" aria-hidden = "true" > < / span > Solution du challenge
2016-01-23 11:29:19 +00:00
< / div >
2017-12-14 03:08:43 +00:00
< div class = "card-body" >
2016-01-23 11:29:19 +00:00
< p >
2017-12-14 03:08:43 +00:00
Vérifiez les clefs que vous trouvez en comparant leur < a href = "https://blake2.net/" > BLAKE2b< / a > :
2016-01-23 11:29:19 +00:00
< / p >
< dl class = "dl-horizontal" ng-repeat = "key in my.exercices[current_exercice].keys" >
2016-12-04 18:13:09 +00:00
< dt title = "{{ key.slice(128) }}" > {{ key.slice(128) }}< / dt >
2018-01-07 23:17:46 +00:00
< dd > < samp class = "cksum" > {{ key.slice(0, 128) }}< / samp > < / dd >
2016-01-23 11:29:19 +00:00
< / dl >
2018-01-08 00:14:41 +00:00
< div class = "embed-responsive embed-responsive-16by9" >
2017-02-22 03:39:14 +00:00
< iframe type = "text/html" ng-if = "my.exercices[current_exercice].video_uri" ng-src = "{{ my.exercices[current_exercice].video_uri }}" class = "embed-responsive-item" >
2017-12-14 03:08:43 +00:00
Regardez la vidéo de résolution de cet exercice : < a ng-href = "{{ my.exercices[current_exercice].video_uri }}" > {{ my.exercices[current_exercice].video_uri }}< / a > .
2016-12-08 11:00:33 +00:00
< / iframe >
< / div >
2016-01-23 11:29:19 +00:00
< / div >
< / div >
2017-12-14 03:08:43 +00:00
< / div >
< / div >