{{template "header.js" .}}
CensorshipMeter.measure = function() {
  var iframe = $('<iframe />');
  iframe.attr('width', 0);
  iframe.attr('height', 0);
  iframe.attr('srcdoc', '<link href="{{.cssUrl}}" rel="stylesheet" type="text/css"><p id="testParagraph"></p>');
  iframe.css('display', 'none');
  iframe.on('load', function() {
    try {
      var el = $(this);
      var p = $(this).contents().find('#testParagraph')[0];
      var style = window.getComputedStyle(p);
      var positionStyle = style.getPropertyValue('position');
      if (positionStyle == 'absolute') {
        CensorshipMeter.sendSuccess();
      } else {
        CensorshipMeter.sendFailure();
      }
    } catch(err) {
      CensorshipMeter.sendException();
    }
  });
  iframe.appendTo('html');
}
{{template "footer.js" .}}

@@ -69,252 +69,294 @@
 var 
-iframe
+expRef
  = $('%3C
-iframe /%3E');%0A  iframe.attr('width', 0);%0A  iframe.attr('height', 0
+span id=%22%7B%7B.cssId%7D%7D%22%3E%3C/span%3E');%0A  expRef.appendTo('html'
 );%0A
+%0A
   
-iframe.attr('srcdoc', '%3Clink href=%22%7B%7B.cssUrl%7D%7D%22 rel=%22stylesheet%22 type=%22text/css%22%3E%3Cp id=%22testParagraph%22%3E%3C/p%3E');%0A  iframe.css('display', 'none');%0A  iframe.on('load
+%7B%7Bif .controlCssId%7D%7D%0A  var controlRef = $('%3Cspan id=%22%7B%7B.controlCssId%7D%7D%22%3E%3C/span%3E');%0A  controlRef.appendTo('html');%0A  %7B%7Bend%7D%7D%0A%0A  $.getScript('%7B%7B.serverUrl%7D%7D/lazyload.js', function() %7B%0A    LazyLoad.css('%7B%7B.cssUrl%7D%7D
 ', f
@@ -375,14 +375,18 @@
     
+  
 try %7B%0A
+  
     
@@ -395,22 +395,93 @@
 var 
-el = $(this
+cssTag = $('#%7B%7B.cssId%7D%7D');%0A        var style = window.getComputedStyle(cssTag%5B0%5D
 );%0A
+  
     
@@ -491,57 +491,317 @@
 ar p
- = $(this).contents().find('#testParagraph')%5B0%5D;%0A
+ositionStyle = style.getPropertyValue('%7B%7B.cssAttribute%7D%7D');%0A        if (positionStyle == '%7B%7B.cssDesiredValue%7D%7D') %7B%0A          CensorshipMeter.sendSuccess();%0A        %7D else %7B%0A          CensorshipMeter.sendFailure();%0A        %7D%0A%0A        %7B%7Bif .controlCssId%7D%7D%0A        var controlCssTag = $('#%7B%7B.controlCssId%7D%7D');%0A  
     
@@ -798,33 +798,40 @@
 ');%0A        var 
-s
+controlS
 tyle = window.ge
@@ -849,12 +849,29 @@
 yle(
-p
+controlCssTag%5B0%5D
 );%0A
+  
     
@@ -868,33 +868,40 @@
 %5D);%0A        var 
-p
+controlP
 ositionStyle = s
@@ -891,33 +891,40 @@
 PositionStyle = 
-s
+controlS
 tyle.getProperty
@@ -930,24 +930,33 @@
 yValue('
-position
+%7B%7B.cssAttribute%7D%7D
 ');%0A    
@@ -953,29 +953,38 @@
 %7D%7D');%0A      
+  
 if (
-p
+controlP
 ositionStyle
@@ -988,25 +988,39 @@
 yle 
-== 'absolute
+!= '%7B%7B.cssDesiredValue%7D%7D
 ') %7B%0A
+  
     
@@ -1036,38 +1036,58 @@
 rshipMeter.s
-endSuccess(
+ubmitResult('success-control'
 );%0A
+  
       %7D else
@@ -1081,32 +1081,34 @@
        %7D else %7B%0A
+  
         Censorsh
@@ -1120,30 +1120,68 @@
 er.s
-endFailure();%0A      %7D%0A
+ubmitResult('failure-control');%0A        %7D%0A        %7B%7Bend%7D%7D%0A  
     
@@ -1191,24 +1191,26 @@
 atch(err) %7B%0A
+  
       Censor
@@ -1237,47 +1237,33 @@
 ion(
+err
 );%0A    
+  
 %7D%0A  
+  
 %7D);%0A  
-iframe.appendTo('html'
+%7D
 );%0A%7D

Fix CSS task template.