<sub id=tCF1></sub>>>><button hidden=false id=tCF7>><video crossorigin="" poster="http://localhost:8080/misc/resources/compass.jpg">><style>
.c29:nth-child(1814762996n + 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999) { -webkit-locale: "zh_CN";</style><script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}
docElement = document.body ? document.body : document.documentElement;
function initCF() {
try { tCF44 = document.createElementNS("http://www.w3.org/1999/xhtml", "multicol"); } catch(e) {}
try { tCF44.setAttribute("class", "c29"); } catch(e) {}
try { docElement.appendChild(tCF44); } catch(e) {}
setTimeout("CFcrash()", 400);
}
window.onload = initCF;
function editFuzz() {
}
function CFcrash() {
try { if (tCF1 != docElement) tCF1.parentNode.removeChild(tCF1); } catch(e) {}
window.scrollBy(-484, -400);
try { tCF7.innerText = tCF44.textContent; } catch(e) {}
if (window.testRunner)
    testRunner.notifyDone();
}</script>
