[Flisol-br] Tabela de Equivalentes 2015

Barbara Tostes barbaratostes em gmail.com
Sábado Fevereiro 28 11:27:52 BRT 2015


Pode adicionar um Editor de PDF (joint e split) que eu uso aqui que é
ótimo: PDF-Shuffler?

tá dando erro pra mim, diz que minha conexão não é segura...

Sua conexão não é particular

Invasores podem estar tentando roubar suas informações de
*wiki.softwarelivre.org
<http://wiki.softwarelivre.org>*(por exemplo, senhas, mensagens ou cartões
de crédito).
Voltar à segurançaAvançado
<data:text/html;charset=utf-8,%3C!DOCTYPE%20html%3E%0A%3Chtml%20i18n-values=%22dir%3Atextdirection;.style.fontSize%3Afontsize%22%3E%0A%20%20%3Chead%3E%0A%20%20%20%20%3Cmeta%20charset=%22utf-8%22%3E%0A%20%20%20%20%3Cmeta%20name=%22viewport%22%0A%20%20%20%20%20%20%20%20content=%22initial-scale=1,%20minimum-scale=1,%20width=device-width%22%3E%0A%20%20%20%20%3Ctitle%20i18n-content=%22tabTitle%22%3E%3C/title%3E%0A%20%20%20%20%3Cstyle%3E/*%20Copyright%202014%20The%20Chromium%20Authors.%20All%20rights%20reserved.%0A%20%20%20Use%20of%20this%20source%20code%20is%20governed%20by%20a%20BSD-style%20license%20that%20can%20be%0A%20%20%20found%20in%20the%20LICENSE%20file.%20*/%0A%0Aa%20%7B%0A%20%20color%3A%20%23585858;%0A%7D%0A%0A.bad-clock%20.icon%20%7B%0A%20%20background-image%3A%20-webkit-image-set(%0A%20%20%20%20%20%20url(data%3Aimage/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAB3xJREFUeNrsnFtsFFUYgL8zO7vtbpeNWCUStV5SUYMiYhSIvijReMNIH4zGmCgo0eCLiuAFiQa8CzwZqhAkXmJ8wCDGQCBREjTKAwQtqCEEiTfQtrRly15m5+LDnLbLMLM72710pvInk3Z3uz3/+ea/njkzwrIszoi3KGcQnAFUlQiro6NRYyWB2cDVwBR5XAC0AhOAKFAA0kAv8CdwUB5dwPfAYEM03bRp+Fe1zkNdDdwH3AzM9DFeFDhbHpfJ7w2JDuwGdgKfSWh1l3oAmgg8DDwEXFtjXW+Ux4vAPuBDYCPQF4YYNAl4DTgCrK4xHDeZLsc5Arwuxw8koGZgOfAb8DyQanAcTQHPyfGXS30CA+h2GQteARJjnHASUo8uqdeYAkoA7wFbgfaAZeZ2qdf7tThpyigV+B5YGPAS5jGpZ3sjAd0E/ABMC0mdN03qe1MjAN0FbJeFXZikVep9Vz0BzQE+B+Ih7RjiUv9b6gFoJrAFiIW8rYoBX8r51AxQu/ynCcaHJOR82msBKAFsAs4dZw36uXJeiWoBrQlRthpNdltTDaA7QlDnVCsL/WQ2N0BJoJP/h6yV861ouWMJ0NYoDXOffHLae+l77qE1mUQRot7DXwgsBV7ya0GTgcVjfVr7s1l+7+0lncs1Yrhn5Lx9AVoalGJQN02602mODgygGUa9i8ilfgCdAywIUoCwgFyhwN/9/fRlMpj1u0S1QM6/JKBHygWsRstwBLIsTmSzHBsYIKNp9RgqKedfElBwrMfDUnTT5PjJk/QMDqKbZq1HfbQUoOuAy4NjOsL19dC7+UKB7nSadC5HDZ1uiuTgCmhe0AoU4RGThoBZlsVgPk9POk1e12s1bIcXoDvCUNW5QTMsi/5MhoFsFqN6t7vdDdBE7EsoAaMhysIp/kzTdfoyGbKaVo3bTQfOcgK6gYBdoxclAnU5q8poGieyWfTR1U4KMMv5xtSgGY9VIlD7sTzDNEnn82Q0bTS103RnLzYl6LFGlPs7D3iarqObJs2qSkz1fZV9qtOCrhi3vbrMdjld56Sm+Q3iFzsBnRfkCXpZjqiw0zdNk2yhQF7XywXx85yAJgQWkGWd6l5CICpwUeHinrphkNW0UpV4qxNQMkwWZJUBI1xAulmcpuvkdd0tiE9wAkoFznAqLBb9upxwcTtN1ykYRvGYqhNQIWiA4rNm+bYwMQorpMjSLMCQoGQQ152ABoMG6JwVK2h99VXUtrbKWo9iGF4W5VGhW5aFbpoUDCPtBNQbxPDTfP31TOrsJPXkkyjJZNl2wyse+a6pJDjLsnqdgP4aSxDmN994fxiJkJg7l9YNG4jffTdEIr4qbOExead7Ccfn8vUxJ6BfxxJQYv161JUrMQ8f9m6QUikmLFrExHffJTpjRsXWVAzFhxxxAjo41u6k/vILieXLEZ2dmP393gbV1kZqxQqSy5ahTJ7sK8ONQg44Af0clKKwadcu4s8+i7llC1aJRbDY7Nmk1q6lef58RCLh7U5eSybe7gX29uKR71gdHROBnqAteRiTJpG7/34iM0vvVrH6+sh/9BHG118P10NCCHsyEoRw/CwByESI1tjmzf3FgAD2ADOCmM3yV12F/uCDRMqkfPPwYQobNmAeOHAKEMUBRTjAOSxrr4Drops3n+JiANuC2m007d9Py7JlmOvWYaXT3oH80ktpWrmS2KJFrineZw+3zW0FDeztacEVwyCxcydNixdjbN0KJVYLze7uaqrvz70A7QlCNisnyuAgLR9/jLJkCcbevafHo+5u9C++qKiPKwJ3UHJwBQSwPizrYLFjx2hZtQrr7bcxjx4d6dA3bkTk8z7bOOFcGnGdf3Hn+gHwMiHajxjftw+zq4vsnDlw5ZWY3303kubd0r132s/I+VPKgnrCZEXDEzAMWrZvJ7Z6NYqilGwxvJZGpPX0uLmhs/Z5A8gSQolGIqTicZqj0ZF6x6NhPeVGZiGywJtexaUT0FHgHUIqAmiORkk2NaE6rclhWUWvVwF/ewVxt+r5LeB3QiyKEMRjsWFrKiF/iBLW4wVoEHiccSCqohCPxYjKZRIXVE/I+XqWAF7919D9VqEXIeNTs6o6N4W+D3xV1hpLfPYUDbqzuCGghCCmqkQjEQTsB54SPpZoSwHKYO+X6WYcSURRumOqOi+iKBm3ckBUAAjgEDBXwhoPkpHzORRRFFRFseHItC8qtKAh2Q3cC2ghh6PJeewuthxVUU4rMCsFBLBDulsupHByUv8dXmXBsDWNEhAy4t8KHA8ZnOPAbb4ylhCnWVOly6zfYt+x91NI4HRJfXdVUhZUA2gocM8G1gUczjrs7XSHqqrKq8gGC4E7q1WgDnJI6rWwFtm32isZW7Hv3nslAKsAWanHNKlXbfq6Gin2MvbWtTexH5DUSEnLcS+RetT0RNXyWti/2E9huQh4GvixzmB+kuNcLMf9py4Nbx3+Zx/2DbNrsJ9A9QD2DvZrqjwhpoS+DfiUED+Byplmu4AXsHewz8LeZjv0DLPzsbcAtmDvdDsBnJRLEH8x8gyzA7IC7muw+/LfAIUrD40hmRvrAAAAAElFTkSuQmCC)%201x);%0A%7D%0A%0Abody%20%7B%0A%20%20background-color%3A%20%23f7f7f7;%0A%20%20color%3A%20%23585858;%0A%20%20font-size%3A%20125%25;%0A%7D%0A%0Abody.safe-browsing%20%7B%0A%20%20background-color%3A%20rgb(206,%2052,%2038);%0A%20%20color%3A%20white;%0A%7D%0A%0Abutton%20%7B%0A%20%20background%3A%20rgb(76,%20142,%20250);%0A%20%20border%3A%200;%0A%20%20border-radius%3A%202px;%0A%20%20box-sizing%3A%20border-box;%0A%20%20color%3A%20%23fff;%0A%20%20cursor%3A%20pointer;%0A%20%20float%3A%20right;%0A%20%20font-size%3A%20.875em;%0A%20%20height%3A%2036px;%0A%20%20margin%3A%20-6px%200%200;%0A%20%20padding%3A%208px%2024px;%0A%20%20transition%3A%20box-shadow%20200ms%20cubic-bezier(0.4,%200,%200.2,%201);%0A%7D%0A%0A%5Bdir='rtl'%5D%20button%20%7B%0A%20%20float%3A%20left;%0A%7D%0A%0Abutton%3Aactive%20%7B%0A%20%20background%3A%20rgb(50,%20102,%20213);%0A%20%20outline%3A%200;%0A%7D%0A%0Abutton%3Ahover%20%7B%0A%20%20box-shadow%3A%200%201px%203px%20rgba(0,%200,%200,%20.50);%0A%7D%0A%0A.debugging-content%20%7B%0A%20%20line-height%3A%201em;%0A%20%20margin-bottom%3A%200;%0A%20%20margin-top%3A%200;%0A%7D%0A%0A.debugging-title%20%7B%0A%20%20font-weight%3A%20bold;%0A%7D%0A%0A%23details%20%7B%0A%20%20color%3A%20%23696969;%0A%20%20margin%3A%2045px%200%2050px;%0A%7D%0A%0A%23details%20p%3Anot(%3Afirst-of-type)%20%7B%0A%20%20margin-top%3A%2020px;%0A%7D%0A%0A%23error-code%20%7B%0A%20%20color%3A%20black;%0A%20%20opacity%3A%20.35;%0A%20%20text-transform%3A%20uppercase;%0A%7D%0A%0A%23error-debugging-info%20%7B%0A%20%20font-size%3A%200.8em;%0A%7D%0A%0Ah1%20%7B%0A%20%20color%3A%20%23585858;%0A%20%20font-size%3A%201.6em;%0A%20%20font-weight%3A%20normal;%0A%20%20line-height%3A%201.25em;%0A%20%20margin-bottom%3A%2016px;%0A%7D%0A%0Ah2%20%7B%0A%20%20font-size%3A%201.2em;%0A%20%20font-weight%3A%20normal;%0A%7D%0A%0A.hidden%20%7B%0A%20%20display%3A%20none;%0A%7D%0A%0A.icon%20%7B%0A%20%20background-repeat%3A%20no-repeat;%0A%20%20background-size%3A%20100%25;%0A%20%20height%3A%2072px;%0A%20%20margin%3A%200%200%2040px;%0A%20%20width%3A%2072px;%0A%7D%0A%0Ainput%5Btype=checkbox%5D%20%7B%0A%20%20visibility%3A%20hidden;%0A%7D%0A%0A.interstitial-wrapper%20%7B%0A%20%20box-sizing%3A%20border-box;%0A%20%20font-size%3A%201em;%0A%20%20line-height%3A%201.6em;%0A%20%20margin%3A%20100px%20auto%200;%0A%20%20max-width%3A%20600px;%0A%20%20width%3A%20100%25;%0A%7D%0A%0A%23malware-opt-in%20%7B%0A%20%20font-size%3A%20.875em;%0A%20%20margin-top%3A%2039px;%0A%7D%0A%0A.nav-wrapper%20%7B%0A%20%20margin-top%3A%2051px;%0A%7D%0A%0A.nav-wrapper%3A%3Aafter%20%7B%0A%20%20clear%3A%20both;%0A%20%20content%3A%20'';%0A%20%20display%3A%20table;%0A%20%20width%3A%20100%25;%0A%7D%0A%0A%23opt-in-label%20%7B%0A%20%20-webkit-margin-start%3A%2032px;%0A%7D%0A%0A.safe-browsing%20%3A-webkit-any(%0A%20%20%20%20a,%20%23details,%20%23details-button,%20h1,%20h2,%20p,%20.small-link)%20%7B%0A%20%20color%3A%20white;%0A%7D%0A%0A.safe-browsing%20button%20%7B%0A%20%20background-color%3A%20rgb(206,%2052,%2038);%0A%20%20border%3A%201px%20solid%20white;%0A%7D%0A%0A.safe-browsing%20button%3Aactive%20%7B%0A%20%20background-color%3A%20rgb(206,%2052,%2038);%0A%20%20border-color%3A%20rgba(255,%20255,%20255,%20.6);%0A%7D%0A%0A.safe-browsing%20button%3Ahover%20%7B%0A%20%20box-shadow%3A%200%202px%203px%20rgba(0,%200,%200,%20.5);%0A%7D%0A%0A.safe-browsing%20.icon%20%7B%0A%20%20background-image%3A%20-webkit-image-set(%0A%20%20%20%20%20%20url(data%3Aimage/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAABoVBMVEX///+Li4v////////y8vL09PT99fTbRDfXzMzt7e3v7+/s7Ozy8vLw8PDu7u799PPSQTXx8fHZdGv19fX09PTm5ubbV0zXzczgW1Dd3d3c3Nzjb2Th4eHr6+vl5eXp6enZ2dng4OD29vbz8/PYYFXZV0zaYVbjbWP219TRQTTXdGz43Nn++/rib2T////b29vTQjXaYVf66ObngXjjbmTq6ura2trngHf76Ofk19bX19fe3t7o6Oji4uLk5OTeU0f119TYQzbZQzbWQjbXQzbZRDfaRDfn5+fbV0vj4+PVQjXf39/Y2Njgcmney8rqk4zdysn43drcysjcUETa1tbadGvaV0vaWEzZYVbibmXc2NjfzMvi0M7mfHPYYVbhzszd2dnZx8XieXDkc2nWX1Xacmne2trZdGzbcWjj0c/XTUHX1NPVX1Xg3NzYdGvYXFHZ1dXWTUHgzczUX1Xh3d3XdWzWXFHaVkvXxcTVTEHhbmXTXlXi3t7ayMbVXFLgbmXUTEDXYFXSXlTXzMvk4ODUXFHWbGPWzMvk4eHZioP39/f9Ro5BAAAABnRSTlMAAOQk5ye8yu+CAAACRklEQVR4XrXWRZPbUBSEUWdmIpl5mJmZg8zMzMzMzPCr43isNqif76u6lW+nuzgrtUqB/1ptzUSVamrVDiS1A0ntQFI7kNQOJLUDSe1AUjuQ1A4ktQNJ70DSO5D0DiS9A0nvQIKjlOAoJThqyewsXZ1hQOL8YZNkcJrcJiIlBt2No0zKQSbHJVJiznW5BIg4kMocSDIEBxKcwvkoJAE6uMJAguO13xIaWyyRiDPdGGGQJBFnzb4Qh2Qp0VrmdHXFCSRKxFmYDAsQpNkSiTgtLZAAydIgcZqbYwQSJOqs3QsJkCRxp7s7RSBBok5bW5RAgkSd9bujIoS3AA0QZ0NHrx3ktLro5SvidNRnAUkO2nWZOPU7s4BEB9J74qzrzACSHNRwhDid8xlAogPpEHHa23sIxJyB60XpAHEioT9myBnf4XWq8W4aDw1niROKA/I7270u5HbxKI3Hk0+IEzZBzuktXn35XRw7jsOJi34nZoCcN5u9+gq7OJPGqf+czzFAzsdtXp+xi0tpHPtvVzopDl3Z6nUtWNzXjZs436p0DNDQnT0r3QuW7vT+g8L54XKlEzX8RAw9nvrX02D53p89z59f+J0602/NptfJZPKt52AX70Zy5w/EWR0wSp+Gv3z1f3++jQx/545Z+vGTfcd+/eYOJFIEDtkpccxSyNqRpLitI0uWjiyFLR1ZignOqoC1VN0BJEupag4gK8nsALKToiYHkK3Uyx0CiRJ3ANlLWe4AspcyxKGQLHEHkL3UQxwKyRJxCKTtLyVXfw+a8JTgAAAAAElFTkSuQmCC)%201x);%0A%7D%0A%0A.small-link%20%7B%0A%20%20color%3A%20%23696969;%0A%20%20font-size%3A%20.875em;%0A%7D%0A%0A.ssl%20.icon%20%7B%0A%20%20background-image%3A%20-webkit-image-set(%0A%20%20%20%20%20%20url(data%3Aimage/png;base64,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)%201x);%0A%7D%0A%0A.styled-checkbox%20%7B%0A%20%20float%3A%20left;%0A%20%20height%3A%2016px;%0A%20%20margin-top%3A%20.36em;%0A%20%20position%3A%20relative;%0A%20%20width%3A%2016px;%0A%7D%0A%0A%5Bdir='rtl'%5D%20.styled-checkbox%20%7B%0A%20%20float%3A%20right;%0A%7D%0A%0A.styled-checkbox%20label%20%7B%0A%20%20background%3A%20transparent;%0A%20%20border%3A%20white%20solid%201px;%0A%20%20border-radius%3A%202px;%0A%20%20height%3A%2014px;%0A%20%20left%3A%200;%0A%20%20position%3A%20absolute;%0A%20%20right%3A%200;%0A%20%20top%3A%200;%0A%20%20width%3A%2014px;%0A%7D%0A%0A.styled-checkbox%20label%3A%3Aafter%20%7B%0A%20%20background%3A%20transparent;%0A%20%20border%3A%202px%20solid%20white;%0A%20%20border-right-width%3A%200;%0A%20%20border-top-width%3A%200;%0A%20%20content%3A%20'';%0A%20%20height%3A%204px;%0A%20%20left%3A%202px;%0A%20%20opacity%3A%200.3;%0A%20%20position%3A%20absolute;%0A%20%20top%3A%203px;%0A%20%20transform%3A%20rotate(-45deg);%0A%20%20width%3A%209px;%0A%7D%0A%0A.styled-checkbox%20input%5Btype=checkbox%5D%3Achecked%20+%20label%3A%3Aafter%20%7B%0A%20%20opacity%3A%201;%0A%7D%0A%0A em media%20(max-width%3A%20700px)%20%7B%0A%20%20.interstitial-wrapper%20%7B%0A%20%20%20%20padding%3A%200%2010%25;%0A%20%20%7D%0A%7D%0A%0A em media%20(max-height%3A%20600px)%20%7B%0A%20%20.interstitial-wrapper%20%7B%0A%20%20%20%20margin-top%3A%2013%25;%0A%20%20%7D%0A%7D%0A%0A em media%20(max-width%3A%20400px)%20%7B%0A%20%20button,%0A%20%20%5Bdir='rtl'%5D%20button%20%7B%0A%20%20%20%20float%3A%20none;%0A%20%20%20%20font-size%3A%201em;%0A%20%20%20%20width%3A%20100%25;%0A%20%20%7D%0A%0A%20%20%23details%20%7B%0A%20%20%20%20margin%3A%2020px%200%2020px%200;%0A%20%20%7D%0A%0A%20%20%23details%20p%3Anot(%3Afirst-of-type)%20%7B%0A%20%20%20%20margin-top%3A%2010px;%0A%20%20%7D%0A%0A%20%20%23details-button%20%7B%0A%20%20%20%20display%3A%20block;%0A%20%20%20%20padding-top%3A%2014px;%0A%20%20%20%20text-align%3A%20center;%0A%20%20%20%20width%3A%20100%25;%0A%20%20%7D%0A%0A%20%20.interstitial-wrapper%20%7B%0A%20%20%20%20padding%3A%200%205%25;%0A%20%20%7D%0A%0A%20%20%23malware-opt-in%20%7B%0A%20%20%20%20margin-top%3A%2024px;%0A%20%20%7D%0A%0A%20%20.nav-wrapper%20%7B%0A%20%20%20%20margin-top%3A%2030px;%0A%20%20%7D%0A%0A%20%20.small-link%20%7B%0A%20%20%20%20font-size%3A%201em;%0A%20%20%7D%0A%7D%0A%3C/style%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%20(c)%202012%20The%20Chromium%20Authors.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed%20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20Copyright%20(c)%202013%20The%20Chromium%20Authors.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed%20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A/**%0A%20*%20 em fileoverview%20Assertion%20support.%0A%20*/%0A%0A/**%0A%20*%20Verify%20%7Ccondition%7C%20is%20truthy%20and%20return%20%7Ccondition%7C%20if%20so.%0A%20*%20 em template%20T%0A%20*%20 em param%20%7BT%7D%20condition%20A%20condition%20to%20check%20for%20truthiness.%20%20Note%20that%20this%0A%20*%20%20%20%20%20may%20be%20used%20to%20test%20whether%20a%20value%20is%20defined%20or%20not,%20and%20we%20don't%20want%0A%20*%20%20%20%20%20to%20force%20a%20cast%20to%20Boolean.%0A%20*%20 em param%20%7Bstring=%7D%20opt_message%20A%20message%20to%20show%20on%20failure.%0A%20*%20 em return%20%7BT%7D%20A%20non-null%20%7Ccondition%7C.%0A%20*/%0Afunction%20assert(condition,%20opt_message)%20%7B%0A%20%20'use%20strict';%0A%20%20if%20(!condition)%20%7B%0A%20%20%20%20var%20msg%20=%20'Assertion%20failed';%0A%20%20%20%20if%20(opt_message)%0A%20%20%20%20%20%20msg%20=%20msg%20+%20'%3A%20'%20+%20opt_message;%0A%20%20%20%20throw%20new%20Error(msg);%0A%20%20%7D%0A%20%20return%20condition;%0A%7D%0A%0A/**%0A%20*%20Call%20this%20from%20places%20in%20the%20code%20that%20should%20never%20be%20reached.%0A%20*%0A%20*%20For%20example,%20handling%20all%20the%20values%20of%20enum%20with%20a%20switch()%20like%20this%3A%0A%20*%0A%20*%20%20%20function%20getValueFromEnum(enum)%20%7B%0A%20*%20%20%20%20%20switch%20(enum)%20%7B%0A%20*%20%20%20%20%20%20%20case%20ENUM_FIRST_OF_TWO%3A%0A%20*%20%20%20%20%20%20%20%20%20return%20first%0A%20*%20%20%20%20%20%20%20case%20ENUM_LAST_OF_TWO%3A%0A%20*%20%20%20%20%20%20%20%20%20return%20last;%0A%20*%20%20%20%20%20%7D%0A%20*%20%20%20%20%20assertNotReached();%0A%20*%20%20%20%20%20return%20document;%0A%20*%20%20%20%7D%0A%20*%0A%20*%20This%20code%20should%20only%20be%20hit%20in%20the%20case%20of%20serious%20programmer%20error%20or%0A%20*%20unexpected%20input.%0A%20*%0A%20*%20 em param%20%7Bstring=%7D%20opt_message%20A%20message%20to%20show%20when%20this%20is%20hit.%0A%20*/%0Afunction%20assertNotReached(opt_message)%20%7B%0A%20%20throw%20new%20Error(opt_message%20%7C%7C%20'Unreachable%20code%20hit');%0A%7D%0A%0A/**%0A%20*%20 em param%20%7B*%7D%20value%20The%20value%20to%20check.%0A%20*%20 em param%20%7Bfunction(new%3A%20T,%20...)%7D%20type%20A%20user-defined%20constructor.%0A%20*%20 em param%20%7Bstring=%7D%20opt_message%20A%20message%20to%20show%20when%20this%20is%20hit.%0A%20*%20 em return%20%7BT%7D%0A%20*%20 em template%20T%0A%20*/%0Afunction%20assertInstanceof(value,%20type,%20opt_message)%20%7B%0A%20%20if%20(!(value%20instanceof%20type))%20%7B%0A%20%20%20%20throw%20new%20Error(opt_message%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%20+%20'%20is%20not%20a%5Bn%5D%20'%20+%20(type.name%20%7C%7C%20typeof%20type));%0A%20%20%7D%0A%20%20return%20value;%0A%7D%0A%0A%0A/**%0A%20*%20Alias%20for%20document.getElementById.%0A%20*%20 em param%20%7Bstring%7D%20id%20The%20ID%20of%20the%20element%20to%20find.%0A%20*%20 em return%20%7BHTMLElement%7D%20The%20found%20element%20or%20null%20if%20not%20found.%0A%20*/%0Afunction%20$(id)%20%7B%0A%20%20return%20document.getElementById(id);%0A%7D%0A%0A/**%0A%20*%20Add%20an%20accessible%20message%20to%20the%20page%20that%20will%20be%20announced%20to%0A%20*%20users%20who%20have%20spoken%20feedback%20on,%20but%20will%20be%20invisible%20to%20all%0A%20*%20other%20users.%20It's%20removed%20right%20away%20so%20it%20doesn't%20clutter%20the%20DOM.%0A%20*%20 em param%20%7Bstring%7D%20msg%20The%20text%20to%20be%20pronounced.%0A%20*/%0Afunction%20announceAccessibleMessage(msg)%20%7B%0A%20%20var%20element%20=%20document.createElement('div');%0A%20%20element.setAttribute('aria-live',%20'polite');%0A%20%20element.style.position%20=%20'relative';%0A%20%20element.style.left%20=%20'-9999px';%0A%20%20element.style.height%20=%20'0px';%0A%20%20element.innerText%20=%20msg;%0A%20%20document.body.appendChild(element);%0A%20%20window.setTimeout(function()%20%7B%0A%20%20%20%20document.body.removeChild(element);%0A%20%20%7D,%200);%0A%7D%0A%0A/**%0A%20*%20Calls%20chrome.send%20with%20a%20callback%20and%20restores%20the%20original%20afterwards.%0A%20*%20 em param%20%7Bstring%7D%20name%20The%20name%20of%20the%20message%20to%20send.%0A%20*%20 em param%20%7B!Array%7D%20params%20The%20parameters%20to%20send.%0A%20*%20 em param%20%7Bstring%7D%20callbackName%20The%20name%20of%20the%20function%20that%20the%20backend%20calls.%0A%20*%20 em param%20%7B!Function%7D%20callback%20The%20function%20to%20call.%0A%20*/%0Afunction%20chromeSend(name,%20params,%20callbackName,%20callback)%20%7B%0A%20%20var%20old%20=%20global%5BcallbackName%5D;%0A%20%20global%5BcallbackName%5D%20=%20function()%20%7B%0A%20%20%20%20//%20restore%0A%20%20%20%20global%5BcallbackName%5D%20=%20old;%0A%0A%20%20%20%20var%20args%20=%20Array.prototype.slice.call(arguments);%0A%20%20%20%20return%20callback.apply(global,%20args);%0A%20%20%7D;%0A%20%20chrome.send(name,%20params);%0A%7D%0A%0A/**%0A%20*%20Returns%20the%20scale%20factors%20supported%20by%20this%20platform.%0A%20*%20 em return%20%7BArray%7D%20The%20supported%20scale%20factors.%0A%20*/%0Afunction%20getSupportedScaleFactors()%20%7B%0A%20%20var%20supportedScaleFactors%20=%20%5B%5D;%0A%20%20if%20(cr.isMac%20%7C%7C%20cr.isChromeOS)%20%7B%0A%20%20%20%20supportedScaleFactors.push(1);%0A%20%20%20%20supportedScaleFactors.push(2);%0A%20%20%7D%20else%20%7B%0A%20%20%20%20//%20Windows%20must%20be%20restarted%20to%20display%20at%20a%20different%20scale%20factor.%0A%20%20%20%20supportedScaleFactors.push(window.devicePixelRatio);%0A%20%20%7D%0A%20%20return%20supportedScaleFactors;%0A%7D%0A%0A/**%0A%20*%20Generates%20a%20CSS%20url%20string.%0A%20*%20 em param%20%7Bstring%7D%20s%20The%20URL%20to%20generate%20the%20CSS%20url%20for.%0A%20*%20 em return%20%7Bstring%7D%20The%20CSS%20url%20string.%0A%20*/%0Afunction%20url(s)%20%7B%0A%20%20//%20http%3A//www.w3.org/TR/css3-values/%23uris%0A%20%20//%20Parentheses,%20commas,%20whitespace%20characters,%20single%20quotes%20(')%20and%20double%0A%20%20//%20quotes%20(%22)%20appearing%20in%20a%20URI%20must%20be%20escaped%20with%20a%20backslash%0A%20%20var%20s2%20=%20s.replace(/(%5C(%7C%5C)%7C%5C,%7C%5Cs%7C%5C'%7C%5C%22%7C%5C%5C)/g,%20'%5C%5C$1');%0A%20%20//%20WebKit%20has%20a%20bug%20when%20it%20comes%20to%20URLs%20that%20end%20with%20%5C%0A%20%20//%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid=28885%0A%20%20if%20(/%5C%5C%5C%5C$/.test(s2))%20%7B%0A%20%20%20%20//%20Add%20a%20space%20to%20work%20around%20the%20WebKit%20bug.%0A%20%20%20%20s2%20+=%20'%20';%0A%20%20%7D%0A%20%20return%20'url(%22'%20+%20s2%20+%20'%22)';%0A%7D%0A%0A/**%0A%20*%20Returns%20the%20URL%20of%20the%20image,%20or%20an%20image%20set%20of%20URLs%20for%20the%20profile%20avatar.%0A%20*%20Default%20avatars%20have%20resources%20available%20for%20multiple%20scalefactors,%20whereas%0A%20*%20the%20GAIA%20profile%20image%20only%20comes%20in%20one%20size.%0A%20*%0A%20*%20 em param%20%7Bstring%7D%20path%20The%20path%20of%20the%20image.%0A%20*%20 em return%20%7Bstring%7D%20The%20url,%20or%20an%20image%20set%20of%20URLs%20of%20the%20avatar%20image.%0A%20*/%0Afunction%20getProfileAvatarIcon(path)%20%7B%0A%20%20var%20chromeThemePath%20=%20'chrome%3A//theme';%0A%20%20var%20isDefaultAvatar%20=%0A%20%20%20%20%20%20(path.slice(0,%20chromeThemePath.length)%20==%20chromeThemePath);%0A%20%20return%20isDefaultAvatar%20%3F%20imageset(path%20+%20'@scalefactorx')%3A%20url(path);%0A%7D%0A%0A/**%0A%20*%20Generates%20a%20CSS%20-webkit-image-set%20for%20a%20chrome%3A//%20url.%0A%20*%20An%20entry%20in%20the%20image%20set%20is%20added%20for%20each%20of%20getSupportedScaleFactors().%0A%20*%20The%20scale-factor-specific%20url%20is%20generated%20by%20replacing%20the%20first%20instance%20of%0A%20*%20'scalefactor'%20in%20%7Cpath%7C%20with%20the%20numeric%20scale%20factor.%0A%20*%20 em param%20%7Bstring%7D%20path%20The%20URL%20to%20generate%20an%20image%20set%20for.%0A%20*%20%20%20%20%20'scalefactor'%20should%20be%20a%20substring%20of%20%7Cpath%7C.%0A%20*%20 em return%20%7Bstring%7D%20The%20CSS%20-webkit-image-set.%0A%20*/%0Afunction%20imageset(path)%20%7B%0A%20%20var%20supportedScaleFactors%20=%20getSupportedScaleFactors();%0A%0A%20%20var%20replaceStartIndex%20=%20path.indexOf('scalefactor');%0A%20%20if%20(replaceStartIndex%20%3C%200)%0A%20%20%20%20return%20url(path);%0A%0A%20%20var%20s%20=%20'';%0A%20%20for%20(var%20i%20=%200;%20i%20%3C%20supportedScaleFactors.length;%20++i)%20%7B%0A%20%20%20%20var%20scaleFactor%20=%20supportedScaleFactors%5Bi%5D;%0A%20%20%20%20var%20pathWithScaleFactor%20=%20path.substr(0,%20replaceStartIndex)%20+%20scaleFactor%20+%0A%20%20%20%20%20%20%20%20path.substr(replaceStartIndex%20+%20'scalefactor'.length);%0A%0A%20%20%20%20s%20+=%20url(pathWithScaleFactor)%20+%20'%20'%20+%20scaleFactor%20+%20'x';%0A%0A%20%20%20%20if%20(i%20!=%20supportedScaleFactors.length%20-%201)%0A%20%20%20%20%20%20s%20+=%20',%20';%0A%20%20%7D%0A%20%20return%20'-webkit-image-set('%20+%20s%20+%20')';%0A%7D%0A%0A/**%0A%20*%20Parses%20query%20parameters%20from%20Location.%0A%20*%20 em param%20%7BLocation%7D%20location%20The%20URL%20to%20generate%20the%20CSS%20url%20for.%0A%20*%20 em return%20%7BObject%7D%20Dictionary%20containing%20name%20value%20pairs%20for%20URL%0A%20*/%0Afunction%20parseQueryParams(location)%20%7B%0A%20%20var%20params%20=%20%7B%7D;%0A%20%20var%20query%20=%20unescape(location.search.substring(1));%0A%20%20var%20vars%20=%20query.split('&');%0A%20%20for%20(var%20i%20=%200;%20i%20%3C%20vars.length;%20i++)%20%7B%0A%20%20%20%20var%20pair%20=%20vars%5Bi%5D.split('=');%0A%20%20%20%20params%5Bpair%5B0%5D%5D%20=%20pair%5B1%5D;%0A%20%20%7D%0A%20%20return%20params;%0A%7D%0A%0A/**%0A%20*%20Creates%20a%20new%20URL%20by%20appending%20or%20replacing%20the%20given%20query%20key%20and%20value.%0A%20*%20Not%20supporting%20URL%20with%20username%20and%20password.%0A%20*%20 em param%20%7BLocation%7D%20location%20The%20original%20URL.%0A%20*%20 em param%20%7Bstring%7D%20key%20The%20query%20parameter%20name.%0A%20*%20 em param%20%7Bstring%7D%20value%20The%20query%20parameter%20value.%0A%20*%20 em return%20%7Bstring%7D%20The%20constructed%20new%20URL.%0A%20*/%0Afunction%20setQueryParam(location,%20key,%20value)%20%7B%0A%20%20var%20query%20=%20parseQueryParams(location);%0A%20%20query%5BencodeURIComponent(key)%5D%20=%20encodeURIComponent(value);%0A%0A%20%20var%20newQuery%20=%20'';%0A%20%20for%20(var%20q%20in%20query)%20%7B%0A%20%20%20%20newQuery%20+=%20(newQuery%20%3F%20'&'%20%3A%20'%3F')%20+%20q%20+%20'='%20+%20query%5Bq%5D;%0A%20%20%7D%0A%0A%20%20return%20location.origin%20+%20location.pathname%20+%20newQuery%20+%20location.hash;%0A%7D%0A%0A/**%0A%20*%20 em param%20%7BNode%7D%20el%20A%20node%20to%20search%20for%20ancestors%20with%20%7CclassName%7C.%0A%20*%20 em param%20%7Bstring%7D%20className%20A%20class%20to%20search%20for.%0A%20*%20 em return%20%7BElement%7D%20A%20node%20with%20class%20of%20%7CclassName%7C%20or%20null%20if%20none%20is%20found.%0A%20*/%0Afunction%20findAncestorByClass(el,%20className)%20%7B%0A%20%20return%20/**%20 em type%20%7BElement%7D%20*/(findAncestor(el,%20function(el)%20%7B%0A%20%20%20%20return%20el.classList%20&&%20el.classList.contains(className);%0A%20%20%7D));%0A%7D%0A%0A/**%0A%20*%20Return%20the%20first%20ancestor%20for%20which%20the%20%7B em code%20predicate%7D%20returns%20true.%0A%20*%20 em param%20%7BNode%7D%20node%20The%20node%20to%20check.%0A%20*%20 em param%20%7Bfunction(Node)%3Aboolean%7D%20predicate%20The%20function%20that%20tests%20the%0A%20*%20%20%20%20%20nodes.%0A%20*%20 em return%20%7BNode%7D%20The%20found%20ancestor%20or%20null%20if%20not%20found.%0A%20*/%0Afunction%20findAncestor(node,%20predicate)%20%7B%0A%20%20var%20last%20=%20false;%0A%20%20while%20(node%20!=%20null%20&&%20!(last%20=%20predicate(node)))%20%7B%0A%20%20%20%20node%20=%20node.parentNode;%0A%20%20%7D%0A%20%20return%20last%20%3F%20node%20%3A%20null;%0A%7D%0A%0Afunction%20swapDomNodes(a,%20b)%20%7B%0A%20%20var%20afterA%20=%20a.nextSibling;%0A%20%20if%20(afterA%20==%20b)%20%7B%0A%20%20%20%20swapDomNodes(b,%20a);%0A%20%20%20%20return;%0A%20%20%7D%0A%20%20var%20aParent%20=%20a.parentNode;%0A%20%20b.parentNode.replaceChild(a,%20b);%0A%20%20aParent.insertBefore(b,%20afterA);%0A%7D%0A%0A/**%0A%20*%20Disables%20text%20selection%20and%20dragging,%20with%20optional%20whitelist%20callbacks.%0A%20*%20 em param%20%7Bfunction(Event)%3Aboolean=%7D%20opt_allowSelectStart%20Unless%20this%20function%0A%20*%20%20%20%20is%20defined%20and%20returns%20true,%20the%20onselectionstart%20event%20will%20be%0A%20*%20%20%20%20surpressed.%0A%20*%20 em param%20%7Bfunction(Event)%3Aboolean=%7D%20opt_allowDragStart%20Unless%20this%20function%0A%20*%20%20%20%20is%20defined%20and%20returns%20true,%20the%20ondragstart%20event%20will%20be%20surpressed.%0A%20*/%0Afunction%20disableTextSelectAndDrag(opt_allowSelectStart,%20opt_allowDragStart)%20%7B%0A%20%20//%20Disable%20text%20selection.%0A%20%20document.onselectstart%20=%20function(e)%20%7B%0A%20%20%20%20if%20(!(opt_allowSelectStart%20&&%20opt_allowSelectStart.call(this,%20e)))%0A%20%20%20%20%20%20e.preventDefault();%0A%20%20%7D;%0A%0A%20%20//%20Disable%20dragging.%0A%20%20document.ondragstart%20=%20function(e)%20%7B%0A%20%20%20%20if%20(!(opt_allowDragStart%20&&%20opt_allowDragStart.call(this,%20e)))%0A%20%20%20%20%20%20e.preventDefault();%0A%20%20%7D;%0A%7D%0A%0A/**%0A%20*%20TODO(dbeam)%3A%20DO%20NOT%20USE.%20THIS%20IS%20DEPRECATED.%20Use%20an%20action-link%20instead.%0A%20*%20Call%20this%20to%20stop%20clicks%20on%20%3Ca%20href=%22%23%22%3E%20links%20from%20scrolling%20to%20the%20top%20of%0A%20*%20the%20page%20(and%20possibly%20showing%20a%20%23%20in%20the%20link).%0A%20*/%0Afunction%20preventDefaultOnPoundLinkClicks()%20%7B%0A%20%20document.addEventListener('click',%20function(e)%20%7B%0A%20%20%20%20var%20anchor%20=%20findAncestor(/**%20 em type%20%7BNode%7D%20*/(e.target),%20function(el)%20%7B%0A%20%20%20%20%20%20return%20el.tagName%20==%20'A';%0A%20%20%20%20%7D);%0A%20%20%20%20//%20Use%20getAttribute()%20to%20prevent%20URL%20normalization.%0A%20%20%20%20if%20(anchor%20&&%20anchor.getAttribute('href')%20==%20'%23')%0A%20%20%20%20%20%20e.preventDefault();%0A%20%20%7D);%0A%7D%0A%0A/**%0A%20*%20Check%20the%20directionality%20of%20the%20page.%0A%20*%20 em return%20%7Bboolean%7D%20True%20if%20Chrome%20is%20running%20an%20RTL%20UI.%0A%20*/%0Afunction%20isRTL()%20%7B%0A%20%20return%20document.documentElement.dir%20==%20'rtl';%0A%7D%0A%0A/**%0A%20*%20Get%20an%20element%20that's%20known%20to%20exist%20by%20its%20ID.%20We%20use%20this%20instead%20of%20just%0A%20*%20calling%20getElementById%20and%20not%20checking%20the%20result%20because%20this%20lets%20us%0A%20*%20satisfy%20the%20JSCompiler%20type%20system.%0A%20*%20 em param%20%7Bstring%7D%20id%20The%20identifier%20name.%0A%20*%20 em return%20%7B!HTMLElement%7D%20the%20Element.%0A%20*/%0Afunction%20getRequiredElement(id)%20%7B%0A%20%20return%20assertInstanceof($(id),%20HTMLElement,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20'Missing%20required%20element%3A%20'%20+%20id);%0A%7D%0A%0A/**%0A%20*%20Query%20an%20element%20that's%20known%20to%20exist%20by%20a%20selector.%20We%20use%20this%20instead%20of%0A%20*%20just%20calling%20querySelector%20and%20not%20checking%20the%20result%20because%20this%20lets%20us%0A%20*%20satisfy%20the%20JSCompiler%20type%20system.%0A%20*%20 em param%20%7B(!Document%7C!DocumentFragment%7C!Element)%7D%20context%20The%20context%20object%0A%20*%20%20%20%20%20for%20querySelector.%0A%20*%20 em param%20%7Bstring%7D%20selectors%20CSS%20selectors%20to%20query%20the%20element.%0A%20*%20 em return%20%7B!HTMLElement%7D%20the%20Element.%0A%20*/%0Afunction%20queryRequiredElement(context,%20selectors)%20%7B%0A%20%20var%20element%20=%20context.querySelector(selectors);%0A%20%20return%20assertInstanceof(element,%20HTMLElement,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20'Missing%20required%20element%3A%20'%20+%20selectors);%0A%7D%0A%0A//%20Handle%20click%20on%20a%20link.%20If%20the%20link%20points%20to%20a%20chrome%3A%20or%20file%3A%20url,%20then%0A//%20call%20into%20the%20browser%20to%20do%20the%20navigation.%0Adocument.addEventListener('click',%20function(e)%20%7B%0A%20%20if%20(e.defaultPrevented)%0A%20%20%20%20return;%0A%0A%20%20var%20el%20=%20e.target;%0A%20%20if%20(el.nodeType%20==%20Node.ELEMENT_NODE%20&&%0A%20%20%20%20%20%20el.webkitMatchesSelector('A,%20A%20*'))%20%7B%0A%20%20%20%20while%20(el.tagName%20!=%20'A')%20%7B%0A%20%20%20%20%20%20el%20=%20el.parentElement;%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20((el.protocol%20==%20'file%3A'%20%7C%7C%20el.protocol%20==%20'about%3A')%20&&%0A%20%20%20%20%20%20%20%20(e.button%20==%200%20%7C%7C%20e.button%20==%201))%20%7B%0A%20%20%20%20%20%20chrome.send('navigateToUrl',%20%5B%0A%20%20%20%20%20%20%20%20el.href,%0A%20%20%20%20%20%20%20%20el.target,%0A%20%20%20%20%20%20%20%20e.button,%0A%20%20%20%20%20%20%20%20e.altKey,%0A%20%20%20%20%20%20%20%20e.ctrlKey,%0A%20%20%20%20%20%20%20%20e.metaKey,%0A%20%20%20%20%20%20%20%20e.shiftKey%0A%20%20%20%20%20%20%5D);%0A%20%20%20%20%20%20e.preventDefault();%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D);%0A%0A/**%0A%20*%20Creates%20a%20new%20URL%20which%20is%20the%20old%20URL%20with%20a%20GET%20param%20of%20key=value.%0A%20*%20 em param%20%7Bstring%7D%20url%20The%20base%20URL.%20There%20is%20not%20sanity%20checking%20on%20the%20URL%20so%0A%20*%20%20%20%20%20it%20must%20be%20passed%20in%20a%20proper%20format.%0A%20*%20 em param%20%7Bstring%7D%20key%20The%20key%20of%20the%20param.%0A%20*%20 em param%20%7Bstring%7D%20value%20The%20value%20of%20the%20param.%0A%20*%20 em return%20%7Bstring%7D%20The%20new%20URL.%0A%20*/%0Afunction%20appendParam(url,%20key,%20value)%20%7B%0A%20%20var%20param%20=%20encodeURIComponent(key)%20+%20'='%20+%20encodeURIComponent(value);%0A%0A%20%20if%20(url.indexOf('%3F')%20==%20-1)%0A%20%20%20%20return%20url%20+%20'%3F'%20+%20param;%0A%20%20return%20url%20+%20'&'%20+%20param;%0A%7D%0A%0A/**%0A%20*%20Creates%20a%20CSS%20-webkit-image-set%20for%20a%20favicon%20request.%0A%20*%20 em param%20%7Bstring%7D%20url%20The%20url%20for%20the%20favicon.%0A%20*%20 em param%20%7Bnumber=%7D%20opt_size%20Optional%20preferred%20size%20of%20the%20favicon.%0A%20*%20 em param%20%7Bstring=%7D%20opt_type%20Optional%20type%20of%20favicon%20to%20request.%20Valid%20values%0A%20*%20%20%20%20%20are%20'favicon'%20and%20'touch-icon'.%20Default%20is%20'favicon'.%0A%20*%20 em return%20%7Bstring%7D%20-webkit-image-set%20for%20the%20favicon.%0A%20*/%0Afunction%20getFaviconImageSet(url,%20opt_size,%20opt_type)%20%7B%0A%20%20var%20size%20=%20opt_size%20%7C%7C%2016;%0A%20%20var%20type%20=%20opt_type%20%7C%7C%20'favicon';%0A%20%20return%20imageset(%0A%20%20%20%20%20%20'chrome%3A//'%20+%20type%20+%20'/size/'%20+%20size%20+%20'@scalefactorx/'%20+%20url);%0A%7D%0A%0A/**%0A%20*%20Creates%20a%20new%20URL%20for%20a%20favicon%20request%20for%20the%20current%20device%20pixel%20ratio.%0A%20*%20The%20URL%20must%20be%20updated%20when%20the%20user%20moves%20the%20browser%20to%20a%20screen%20with%20a%0A%20*%20different%20device%20pixel%20ratio.%20Use%20getFaviconImageSet()%20for%20the%20updating%20to%0A%20*%20occur%20automatically.%0A%20*%20 em param%20%7Bstring%7D%20url%20The%20url%20for%20the%20favicon.%0A%20*%20 em param%20%7Bnumber=%7D%20opt_size%20Optional%20preferred%20size%20of%20the%20favicon.%0A%20*%20 em param%20%7Bstring=%7D%20opt_type%20Optional%20type%20of%20favicon%20to%20request.%20Valid%20values%0A%20*%20%20%20%20%20are%20'favicon'%20and%20'touch-icon'.%20Default%20is%20'favicon'.%0A%20*%20 em return%20%7Bstring%7D%20Updated%20URL%20for%20the%20favicon.%0A%20*/%0Afunction%20getFaviconUrlForCurrentDevicePixelRatio(url,%20opt_size,%20opt_type)%20%7B%0A%20%20var%20size%20=%20opt_size%20%7C%7C%2016;%0A%20%20var%20type%20=%20opt_type%20%7C%7C%20'favicon';%0A%20%20return%20'chrome%3A//'%20+%20type%20+%20'/size/'%20+%20size%20+%20'@'%20+%0A%20%20%20%20%20%20window.devicePixelRatio%20+%20'x/'%20+%20url;%0A%7D%0A%0A/**%0A%20*%20Creates%20an%20element%20of%20a%20specified%20type%20with%20a%20specified%20class%20name.%0A%20*%20 em param%20%7Bstring%7D%20type%20The%20node%20type.%0A%20*%20 em param%20%7Bstring%7D%20className%20The%20class%20name%20to%20use.%0A%20*%20 em return%20%7BElement%7D%20The%20created%20element.%0A%20*/%0Afunction%20createElementWithClassName(type,%20className)%20%7B%0A%20%20var%20elm%20=%20document.createElement(type);%0A%20%20elm.className%20=%20className;%0A%20%20return%20elm;%0A%7D%0A%0A/**%0A%20*%20webkitTransitionEnd%20does%20not%20always%20fire%20(e.g.%20when%20animation%20is%20aborted%0A%20*%20or%20when%20no%20paint%20happens%20during%20the%20animation).%20This%20function%20sets%20up%0A%20*%20a%20timer%20and%20emulate%20the%20event%20if%20it%20is%20not%20fired%20when%20the%20timer%20expires.%0A%20*%20 em param%20%7B!HTMLElement%7D%20el%20The%20element%20to%20watch%20for%20webkitTransitionEnd.%0A%20*%20 em param%20%7Bnumber%7D%20timeOut%20The%20maximum%20wait%20time%20in%20milliseconds%20for%20the%0A%20*%20%20%20%20%20webkitTransitionEnd%20to%20happen.%0A%20*/%0Afunction%20ensureTransitionEndEvent(el,%20timeOut)%20%7B%0A%20%20var%20fired%20=%20false;%0A%20%20el.addEventListener('webkitTransitionEnd',%20function%20f(e)%20%7B%0A%20%20%20%20el.removeEventListener('webkitTransitionEnd',%20f);%0A%20%20%20%20fired%20=%20true;%0A%20%20%7D);%0A%20%20window.setTimeout(function()%20%7B%0A%20%20%20%20if%20(!fired)%0A%20%20%20%20%20%20cr.dispatchSimpleEvent(el,%20'webkitTransitionEnd');%0A%20%20%7D,%20timeOut);%0A%7D%0A%0A/**%0A%20*%20Alias%20for%20document.scrollTop%20getter.%0A%20*%20 em param%20%7B!HTMLDocument%7D%20doc%20The%20document%20node%20where%20information%20will%20be%0A%20*%20%20%20%20%20queried%20from.%0A%20*%20 em return%20%7Bnumber%7D%20The%20Y%20document%20scroll%20offset.%0A%20*/%0Afunction%20scrollTopForDocument(doc)%20%7B%0A%20%20return%20doc.documentElement.scrollTop%20%7C%7C%20doc.body.scrollTop;%0A%7D%0A%0A/**%0A%20*%20Alias%20for%20document.scrollTop%20setter.%0A%20*%20 em param%20%7B!HTMLDocument%7D%20doc%20The%20document%20node%20where%20information%20will%20be%0A%20*%20%20%20%20%20queried%20from.%0A%20*%20 em param%20%7Bnumber%7D%20value%20The%20target%20Y%20scroll%20offset.%0A%20*/%0Afunction%20setScrollTopForDocument(doc,%20value)%20%7B%0A%20%20doc.documentElement.scrollTop%20=%20doc.body.scrollTop%20=%20value;%0A%7D%0A%0A/**%0A%20*%20Alias%20for%20document.scrollLeft%20getter.%0A%20*%20 em param%20%7B!HTMLDocument%7D%20doc%20The%20document%20node%20where%20information%20will%20be%0A%20*%20%20%20%20%20queried%20from.%0A%20*%20 em return%20%7Bnumber%7D%20The%20X%20document%20scroll%20offset.%0A%20*/%0Afunction%20scrollLeftForDocument(doc)%20%7B%0A%20%20return%20doc.documentElement.scrollLeft%20%7C%7C%20doc.body.scrollLeft;%0A%7D%0A%0A/**%0A%20*%20Alias%20for%20document.scrollLeft%20setter.%0A%20*%20 em param%20%7B!HTMLDocument%7D%20doc%20The%20document%20node%20where%20information%20will%20be%0A%20*%20%20%20%20%20queried%20from.%0A%20*%20 em param%20%7Bnumber%7D%20value%20The%20target%20X%20scroll%20offset.%0A%20*/%0Afunction%20setScrollLeftForDocument(doc,%20value)%20%7B%0A%20%20doc.documentElement.scrollLeft%20=%20doc.body.scrollLeft%20=%20value;%0A%7D%0A%0A/**%0A%20*%20Replaces%20'&',%20'%3C',%20'%3E',%20'%22',%20and%20'''%20characters%20with%20their%20HTML%20encoding.%0A%20*%20 em param%20%7Bstring%7D%20original%20The%20original%20string.%0A%20*%20 em return%20%7Bstring%7D%20The%20string%20with%20all%20the%20characters%20mentioned%20above%20replaced.%0A%20*/%0Afunction%20HTMLEscape(original)%20%7B%0A%20%20return%20original.replace(/&/g,%20'&')%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace(/%3C/g,%20'<')%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace(/%3E/g,%20'>')%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace(/%22/g,%20'"')%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace(/'/g,%20'&%2339;');%0A%7D%0A%0A/**%0A%20*%20Shortens%20the%20provided%20string%20(if%20necessary)%20to%20a%20string%20of%20length%20at%20most%0A%20*%20%7CmaxLength%7C.%0A%20*%20 em param%20%7Bstring%7D%20original%20The%20original%20string.%0A%20*%20 em param%20%7Bnumber%7D%20maxLength%20The%20maximum%20length%20allowed%20for%20the%20string.%0A%20*%20 em return%20%7Bstring%7D%20The%20original%20string%20if%20its%20length%20does%20not%20exceed%0A%20*%20%20%20%20%20%7CmaxLength%7C.%20Otherwise%20the%20first%20%7CmaxLength%7C%20-%201%20characters%20with%20'...'%0A%20*%20%20%20%20%20appended.%0A%20*/%0Afunction%20elide(original,%20maxLength)%20%7B%0A%20%20if%20(original.length%20%3C=%20maxLength)%0A%20%20%20%20return%20original;%0A%20%20return%20original.substring(0,%20maxLength%20-%201)%20+%20'%5Cu2026';%0A%7D%0A%3C/script%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%202014%20The%20Chromium%20Authors.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed%20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20Should%20match%20SSLBlockingPageCommands%20in%20ssl_blocking_page.cc.%0Avar%20SSL_CMD_DONT_PROCEED%20=%200;%0Avar%20SSL_CMD_PROCEED%20=%201;%0Avar%20SSL_CMD_MORE%20=%202;%0Avar%20SSL_CMD_RELOAD%20=%203;%0Avar%20SSL_CMD_HELP%20=%204;%0Avar%20SSL_CMD_CLOCK%20=%205;%0A%0Afunction%20setupSSLDebuggingInfo()%20%7B%0A%20%20if%20(loadTimeData.getString('type')%20!=%20'SSL')%0A%20%20%20%20return;%0A%0A%20%20//%20The%20titles%20are%20not%20internationalized%20because%20this%20is%20debugging%20information%0A%20%20//%20for%20bug%20reports,%20help%20center%20posts,%20etc.%0A%20%20appendDebuggingField('Subject',%20loadTimeData.getString('subject'));%0A%20%20appendDebuggingField('Issuer',%20loadTimeData.getString('issuer'));%0A%20%20appendDebuggingField('Expires%20on',%20loadTimeData.getString('expirationDate'));%0A%20%20appendDebuggingField('Current%20date',%20loadTimeData.getString('currentDate'));%0A%20%20appendDebuggingField('PEM%20encoded%20chain',%20loadTimeData.getString('pem'));%0A%0A%20%20$('error-code').addEventListener('click',%20toggleDebuggingInfo);%0A%7D%0A%3C/script%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%202014%20The%20Chromium%20Authors.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed%20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20Must%20match%20the%20commands%20handled%20by%20SafeBrowsingBlockingPage%3A%3ACommandReceived.%0Avar%20SB_CMD_DO_REPORT%20=%20'doReport';%0Avar%20SB_CMD_DONT_REPORT%20=%20'dontReport';%0Avar%20SB_CMD_EXPANDED_SEE_MORE%20=%20'expandedSeeMore';%0Avar%20SB_CMD_LEARN_MORE_2%20=%20'learnMore2';%0Avar%20SB_CMD_PROCEED%20=%20'proceed';%0Avar%20SB_CMD_SHOW_DIAGNOSTIC%20=%20'showDiagnostic';%0Avar%20SB_CMD_SHOW_PRIVACY%20=%20'showPrivacy';%0Avar%20SB_CMD_TAKE_ME_BACK%20=%20'takeMeBack';%0A%0A//%20Other%20constants%20defined%20in%20safe_browsing_blocking_page.cc.%0Avar%20SB_BOX_CHECKED%20=%20'boxchecked';%0Avar%20SB_DISPLAY_CHECK_BOX%20=%20'displaycheckbox';%0A%0A//%20This%20sets%20up%20the%20Extended%20Safe%20Browsing%20Reporting%20opt-in.%0Afunction%20setupCheckbox()%20%7B%0A%20%20if%20(loadTimeData.getString('type')%20!=%20'SAFEBROWSING'%20%7C%7C%0A%20%20%20%20%20%20loadTimeData.getBoolean('phishing')%20%7C%7C%0A%20%20%20%20%20%20!loadTimeData.getBoolean(SB_DISPLAY_CHECK_BOX))%20%7B%0A%20%20%20%20return;%0A%20%20%7D%0A%0A%20%20$('opt-in-label').innerHTML%20=%20loadTimeData.getString('optInLink');%0A%20%20$('opt-in-checkbox').checked%20=%20loadTimeData.getBoolean(SB_BOX_CHECKED);%0A%20%20$('malware-opt-in').classList.remove('hidden');%0A%0A%20%20$('opt-in-checkbox').addEventListener('click',%20function()%20%7B%0A%20%20%20%20sendCommand(%0A%20%20%20%20%20%20%20%20$('opt-in-checkbox').checked%20%3F%20SB_CMD_DO_REPORT%20%3A%20SB_CMD_DONT_REPORT);%0A%20%20%7D);%0A%7D%0A%3C/script%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%202014%20The%20Chromium%20Authors.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed%20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20This%20is%20the%20shared%20code%20for%20the%20new%20(Chrome%2037)%20security%20interstitials.%20It%20is%0A//%20used%20for%20both%20SSL%20interstitials%20and%20Safe%20Browsing%20interstitials.%0A%0Avar%20expandedDetails%20=%20false;%0Avar%20keyPressState%20=%200;%0A%0A/**%0A%20*%20A%20convenience%20method%20for%20sending%20commands%20to%20the%20parent%20page.%0A%20*%20 em param%20%7Bstring%7D%20cmd%20%20The%20command%20to%20send.%0A%20*/%0Afunction%20sendCommand(cmd)%20%7B%0A%20%20window.domAutomationController.setAutomationId(1);%0A%20%20window.domAutomationController.send(cmd);%0A%7D%0A%0A/**%0A%20*%20This%20allows%20errors%20to%20be%20skippped%20by%20typing%20%22danger%22%20into%20the%20page.%0A%20*%20 em param%20%7Bstring%7D%20e%20The%20key%20that%20was%20just%20pressed.%0A%20*/%0Afunction%20handleKeypress(e)%20%7B%0A%20%20var%20BYPASS_SEQUENCE%20=%20'danger';%0A%20%20if%20(BYPASS_SEQUENCE.charCodeAt(keyPressState)%20==%20e.keyCode)%20%7B%0A%20%20%20%20keyPressState++;%0A%20%20%20%20if%20(keyPressState%20==%20BYPASS_SEQUENCE.length)%20%7B%0A%20%20%20%20%20%20sendCommand(SSL_CMD_PROCEED);%0A%20%20%20%20%20%20keyPressState%20=%200;%0A%20%20%20%20%7D%0A%20%20%7D%20else%20%7B%0A%20%20%20%20keyPressState%20=%200;%0A%20%20%7D%0A%7D%0A%0A/**%0A%20*%20This%20appends%20a%20piece%20of%20debugging%20information%20to%20the%20end%20of%20the%20warning.%0A%20*%20When%20complete,%20the%20caller%20must%20also%20make%20the%20debugging%20div%0A%20*%20(error-debugging-info)%20visible.%0A%20*%20 em param%20%7Bstring%7D%20title%20%20The%20name%20of%20this%20debugging%20field.%0A%20*%20 em param%20%7Bstring%7D%20value%20%20The%20value%20of%20the%20debugging%20field.%0A%20*/%0Afunction%20appendDebuggingField(title,%20value)%20%7B%0A%20%20//%20The%20values%20input%20here%20are%20not%20trusted.%20Never%20use%20innerHTML%20on%20these%0A%20%20//%20values!%0A%20%20var%20spanTitle%20=%20document.createElement('span');%0A%20%20spanTitle.classList.add('debugging-title');%0A%20%20spanTitle.innerText%20=%20title%20+%20'%3A%20';%0A%0A%20%20var%20spanValue%20=%20document.createElement('span');%0A%20%20spanValue.classList.add('debugging-value');%0A%20%20spanValue.innerText%20=%20value;%0A%0A%20%20var%20pElem%20=%20document.createElement('p');%0A%20%20pElem.classList.add('debugging-content');%0A%20%20pElem.appendChild(spanTitle);%0A%20%20pElem.appendChild(spanValue);%0A%20%20$('error-debugging-info').appendChild(pElem);%0A%7D%0A%0Afunction%20toggleDebuggingInfo()%20%7B%0A%20%20$('error-debugging-info').classList.toggle('hidden');%0A%7D%0A%0Afunction%20setupEvents()%20%7B%0A%20%20var%20overridable%20=%20loadTimeData.getBoolean('overridable');%0A%20%20var%20ssl%20=%20loadTimeData.getString('type')%20===%20'SSL';%0A%20%20var%20badClock%20=%20ssl%20&&%20loadTimeData.getBoolean('bad_clock');%0A%20%20var%20hidePrimaryButton%20=%20badClock%20&&%20loadTimeData.getBoolean(%0A%20%20%20%20%20%20'hide_primary_button');%0A%0A%20%20if%20(ssl)%20%7B%0A%20%20%20%20$('body').classList.add(badClock%20%3F%20'bad-clock'%20%3A%20'ssl');%0A%20%20%20%20$('error-code').textContent%20=%20loadTimeData.getString('errorCode');%0A%20%20%20%20$('error-code').classList.remove('hidden');%0A%20%20%7D%20else%20%7B%0A%20%20%20%20$('body').classList.add('safe-browsing');%0A%20%20%7D%0A%0A%20%20if%20(hidePrimaryButton)%20%7B%0A%20%20%20%20$('primary-button').classList.add('hidden');%0A%20%20%7D%20else%20%7B%0A%20%20%20%20$('primary-button').addEventListener('click',%20function()%20%7B%0A%20%20%20%20%20%20if%20(!ssl)%0A%20%20%20%20%20%20%20%20sendCommand(SB_CMD_TAKE_ME_BACK);%0A%20%20%20%20%20%20else%20if%20(badClock)%0A%20%20%20%20%20%20%20%20sendCommand(SSL_CMD_CLOCK);%0A%20%20%20%20%20%20else%20if%20(overridable)%0A%20%20%20%20%20%20%20%20sendCommand(SSL_CMD_DONT_PROCEED);%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20sendCommand(SSL_CMD_RELOAD);%0A%20%20%20%20%7D);%0A%20%20%7D%0A%0A%20%20if%20(overridable)%20%7B%0A%20%20%20%20$('proceed-link').addEventListener('click',%20function(event)%20%7B%0A%20%20%20%20%20%20sendCommand(ssl%20%3F%20SSL_CMD_PROCEED%20%3A%20SB_CMD_PROCEED);%0A%20%20%20%20%7D);%0A%20%20%7D%20else%20if%20(!ssl)%20%7B%0A%20%20%20%20$('final-paragraph').classList.add('hidden');%0A%20%20%7D%0A%0A%20%20if%20(ssl%20&&%20overridable)%20%7B%0A%20%20%20%20$('proceed-link').classList.add('small-link');%0A%20%20%7D%20else%20if%20($('help-link'))%20%7B%0A%20%20%20%20//%20Overridable%20SSL%20page%20doesn't%20have%20this%20link.%0A%20%20%20%20$('help-link').addEventListener('click',%20function(event)%20%7B%0A%20%20%20%20%20%20if%20(ssl)%0A%20%20%20%20%20%20%20%20sendCommand(SSL_CMD_HELP);%0A%20%20%20%20%20%20else%20if%20(loadTimeData.getBoolean('phishing'))%0A%20%20%20%20%20%20%20%20sendCommand(SB_CMD_LEARN_MORE_2);%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20sendCommand(SB_CMD_SHOW_DIAGNOSTIC);%0A%20%20%20%20%7D);%0A%20%20%7D%0A%0A%20%20$('details-button').addEventListener('click',%20function(event)%20%7B%0A%20%20%20%20var%20hiddenDetails%20=%20$('details').classList.toggle('hidden');%0A%20%20%20%20$('details-button').innerText%20=%20hiddenDetails%20%3F%0A%20%20%20%20%20%20%20%20loadTimeData.getString('openDetails')%20%3A%0A%20%20%20%20%20%20%20%20loadTimeData.getString('closeDetails');%0A%20%20%20%20if%20(!expandedDetails)%20%7B%0A%20%20%20%20%20%20//%20Record%20a%20histogram%20entry%20only%20the%20first%20time%20that%20details%20is%20opened.%0A%20%20%20%20%20%20sendCommand(ssl%20%3F%20SSL_CMD_MORE%20%3A%20SB_CMD_EXPANDED_SEE_MORE);%0A%20%20%20%20%20%20expandedDetails%20=%20true;%0A%20%20%20%20%7D%0A%20%20%7D);%0A%0A%20%20preventDefaultOnPoundLinkClicks();%0A%20%20setupCheckbox();%0A%20%20setupSSLDebuggingInfo();%0A%20%20document.addEventListener('keypress',%20handleKeypress);%0A%7D%0A%0Adocument.addEventListener('DOMContentLoaded',%20setupEvents);%0A%3C/script%3E%0A%20%20%3C/head%3E%0A%3Cbody%20id=%22body%22%20i18n-values=%22.style.fontFamily%3Afontfamily%22%3E%0A%20%20%3Cdiv%20class=%22interstitial-wrapper%22%3E%0A%20%20%20%20%3Cdiv%20class=%22icon%22%20id=%22icon%22%3E%3C/div%3E%0A%20%20%20%20%3Cdiv%20id=%22main-message%22%3E%0A%20%20%20%20%20%20%3Ch1%20i18n-content=%22heading%22%3E%3C/h1%3E%0A%20%20%20%20%20%20%3Cp%20i18n-values=%22.innerHTML%3AprimaryParagraph%22%3E%3C/p%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%20%20%3Cdiv%20id=%22malware-opt-in%22%20class=%22hidden%22%3E%0A%20%20%20%20%20%20%3Cdiv%20class=%22styled-checkbox%22%3E%0A%20%20%20%20%20%20%20%20%3Cinput%20type=%22checkbox%22%20id=%22opt-in-checkbox%22%3E%0A%20%20%20%20%20%20%20%20%3Clabel%20for=%22opt-in-checkbox%22%3E%3C/label%3E%0A%20%20%20%20%20%20%3C/div%3E%0A%20%20%20%20%20%20%3Cdiv%20id=%22opt-in-label%22%3E%3C/div%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%20%20%3Cdiv%20class=%22nav-wrapper%22%3E%0A%20%20%20%20%20%20%3Cbutton%20i18n-content=%22primaryButtonText%22%20id=%22primary-button%22%3E%3C/button%3E%0A%20%20%20%20%20%20%3Ca%20href=%22%23%22%20id=%22details-button%22%20class=%22small-link%22%0A%20%20%20%20%20%20%20%20%20%20i18n-content=%22openDetails%22%3E%3C/a%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%20%20%3Cdiv%20id=%22details%22%20class=%22hidden%22%3E%0A%20%20%20%20%20%20%3Cp%20i18n-values=%22.innerHTML%3AexplanationParagraph%22%3E%3C/p%3E%0A%20%20%20%20%20%20%3Cp%20i18n-values=%22.innerHTML%3AfinalParagraph%22%20id=%22final-paragraph%22%3E%3C/p%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%20%20%3Cdiv%20id=%22debugging%22%3E%0A%20%20%20%20%20%20%3Cp%20id=%22error-code%22%3E%3C/p%3E%0A%20%20%20%20%20%20%3Cdiv%20id=%22error-debugging-info%22%20class=%22hidden%22%3E%3C/div%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%3C/div%3E%0A%3C/body%3E%0A%3C/html%3E%0A%3Cscript%3E//%20Copyright%20(c)%202012%20The%20Chromium%20Authors.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed%20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A/**%0A%20*%20 em fileoverview%20This%20file%20defines%20a%20singleton%20which%20provides%20access%20to%20all%20data%0A%20*%20that%20is%20available%20as%20soon%20as%20the%20page's%20resources%20are%20loaded%20(before%20DOM%0A%20*%20content%20has%20finished%20loading).%20This%20data%20includes%20both%20localized%20strings%20and%0A%20*%20any%20data%20that%20is%20important%20to%20have%20ready%20from%20a%20very%20early%20stage%20(e.g.%20things%0A%20*%20that%20must%20be%20displayed%20right%20away).%0A%20*/%0A%0Avar%20loadTimeData;%0A%0A//%20Expose%20this%20type%20globally%20as%20a%20temporary%20work%20around%20until%0A//%20https%3A//github.com/google/closure-compiler/issues/544%20is%20fixed.%0A/**%20 em constructor%20*/%0Afunction%20LoadTimeData()%20%7B%7D%0A%0A(function()%20%7B%0A%20%20'use%20strict';%0A%0A%20%20LoadTimeData.prototype%20=%20%7B%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Sets%20the%20backing%20object.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%20that%20there%20is%20no%20getter%20for%20%7Cdata_%7C%20to%20discourage%20abuse%20of%20the%20form%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20var%20value%20=%20loadTimeData.data()%5B'key'%5D;%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20 em param%20%7BObject%7D%20value%20The%20de-serialized%20page%20data.%0A%20%20%20%20%20*/%0A%20%20%20%20set%20data(value)%20%7B%0A%20%20%20%20%20%20expect(!this.data_,%20'Re-setting%20data.');%0A%20%20%20%20%20%20this.data_%20=%20value;%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Returns%20a%20JsEvalContext%20for%20%7Cdata_%7C.%0A%20%20%20%20%20*%20 em returns%20%7BJsEvalContext%7D%0A%20%20%20%20%20*/%0A%20%20%20%20createJsEvalContext%3A%20function()%20%7B%0A%20%20%20%20%20%20return%20new%20JsEvalContext(this.data_);%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20 em param%20%7Bstring%7D%20id%20An%20ID%20of%20a%20value%20that%20might%20exist.%0A%20%20%20%20%20*%20 em return%20%7Bboolean%7D%20True%20if%20%7Cid%7C%20is%20a%20key%20in%20the%20dictionary.%0A%20%20%20%20%20*/%0A%20%20%20%20valueExists%3A%20function(id)%20%7B%0A%20%20%20%20%20%20return%20id%20in%20this.data_;%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Fetches%20a%20value,%20expecting%20that%20it%20exists.%0A%20%20%20%20%20*%20 em param%20%7Bstring%7D%20id%20The%20key%20that%20identifies%20the%20desired%20value.%0A%20%20%20%20%20*%20 em return%20%7B*%7D%20The%20corresponding%20value.%0A%20%20%20%20%20*/%0A%20%20%20%20getValue%3A%20function(id)%20%7B%0A%20%20%20%20%20%20expect(this.data_,%20'No%20data.%20Did%20you%20remember%20to%20include%20strings.js%3F');%0A%20%20%20%20%20%20var%20value%20=%20this.data_%5Bid%5D;%0A%20%20%20%20%20%20expect(typeof%20value%20!=%20'undefined',%20'Could%20not%20find%20value%20for%20'%20+%20id);%0A%20%20%20%20%20%20return%20value;%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20As%20above,%20but%20also%20makes%20sure%20that%20the%20value%20is%20a%20string.%0A%20%20%20%20%20*%20 em param%20%7Bstring%7D%20id%20The%20key%20that%20identifies%20the%20desired%20string.%0A%20%20%20%20%20*%20 em return%20%7Bstring%7D%20The%20corresponding%20string%20value.%0A%20%20%20%20%20*/%0A%20%20%20%20getString%3A%20function(id)%20%7B%0A%20%20%20%20%20%20var%20value%20=%20this.getValue(id);%0A%20%20%20%20%20%20expectIsType(id,%20value,%20'string');%0A%20%20%20%20%20%20return%20/**%20 em type%20%7Bstring%7D%20*/%20(value);%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Returns%20a%20formatted%20localized%20string%20where%20$1%20to%20$9%20are%20replaced%20by%20the%0A%20%20%20%20%20*%20second%20to%20the%20tenth%20argument.%0A%20%20%20%20%20*%20 em param%20%7Bstring%7D%20id%20The%20ID%20of%20the%20string%20we%20want.%0A%20%20%20%20%20*%20 em param%20%7B...string%7D%20var_args%20The%20extra%20values%20to%20include%20in%20the%20formatted%0A%20%20%20%20%20*%20%20%20%20%20output.%0A%20%20%20%20%20*%20 em return%20%7Bstring%7D%20The%20formatted%20string.%0A%20%20%20%20%20*/%0A%20%20%20%20getStringF%3A%20function(id,%20var_args)%20%7B%0A%20%20%20%20%20%20var%20value%20=%20this.getString(id);%0A%20%20%20%20%20%20if%20(!value)%0A%20%20%20%20%20%20%20%20return%20'';%0A%0A%20%20%20%20%20%20var%20varArgs%20=%20arguments;%0A%20%20%20%20%20%20return%20value.replace(/%5C$%5B$1-9%5D/g,%20function(m)%20%7B%0A%20%20%20%20%20%20%20%20return%20m%20==%20'$$'%20%3F%20'$'%20%3A%20varArgs%5Bm%5B1%5D%5D;%0A%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20As%20above,%20but%20also%20makes%20sure%20that%20the%20value%20is%20a%20boolean.%0A%20%20%20%20%20*%20 em param%20%7Bstring%7D%20id%20The%20key%20that%20identifies%20the%20desired%20boolean.%0A%20%20%20%20%20*%20 em return%20%7Bboolean%7D%20The%20corresponding%20boolean%20value.%0A%20%20%20%20%20*/%0A%20%20%20%20getBoolean%3A%20function(id)%20%7B%0A%20%20%20%20%20%20var%20value%20=%20this.getValue(id);%0A%20%20%20%20%20%20expectIsType(id,%20value,%20'boolean');%0A%20%20%20%20%20%20return%20/**%20 em type%20%7Bboolean%7D%20*/%20(value);%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20As%20above,%20but%20also%20makes%20sure%20that%20the%20value%20is%20an%20integer.%0A%20%20%20%20%20*%20 em param%20%7Bstring%7D%20id%20The%20key%20that%20identifies%20the%20desired%20number.%0A%20%20%20%20%20*%20 em return%20%7Bnumber%7D%20The%20corresponding%20number%20value.%0A%20%20%20%20%20*/%0A%20%20%20%20getInteger%3A%20function(id)%20%7B%0A%20%20%20%20%20%20var%20value%20=%20this.getValue(id);%0A%20%20%20%20%20%20expectIsType(id,%20value,%20'number');%0A%20%20%20%20%20%20expect(value%20==%20Math.floor(value),%20'Number%20isn%5C't%20integer%3A%20'%20+%20value);%0A%20%20%20%20%20%20return%20/**%20 em type%20%7Bnumber%7D%20*/%20(value);%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Override%20values%20in%20loadTimeData%20with%20the%20values%20found%20in%20%7Creplacements%7C.%0A%20%20%20%20%20*%20 em param%20%7BObject%7D%20replacements%20The%20dictionary%20object%20of%20keys%20to%20replace.%0A%20%20%20%20%20*/%0A%20%20%20%20overrideValues%3A%20function(replacements)%20%7B%0A%20%20%20%20%20%20expect(typeof%20replacements%20==%20'object',%0A%20%20%20%20%20%20%20%20%20%20%20%20%20'Replacements%20must%20be%20a%20dictionary%20object.');%0A%20%20%20%20%20%20for%20(var%20key%20in%20replacements)%20%7B%0A%20%20%20%20%20%20%20%20this.data_%5Bkey%5D%20=%20replacements%5Bkey%5D;%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D;%0A%0A%20%20/**%0A%20%20%20*%20Checks%20condition,%20displays%20error%20message%20if%20expectation%20fails.%0A%20%20%20*%20 em param%20%7B*%7D%20condition%20The%20condition%20to%20check%20for%20truthiness.%0A%20%20%20*%20 em param%20%7Bstring%7D%20message%20The%20message%20to%20display%20if%20the%20check%20fails.%0A%20%20%20*/%0A%20%20function%20expect(condition,%20message)%20%7B%0A%20%20%20%20if%20(!condition)%20%7B%0A%20%20%20%20%20%20console.error('Unexpected%20condition%20on%20'%20+%20document.location.href%20+%20'%3A%20'%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20message);%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20/**%0A%20%20%20*%20Checks%20that%20the%20given%20value%20has%20the%20given%20type.%0A%20%20%20*%20 em param%20%7Bstring%7D%20id%20The%20id%20of%20the%20value%20(only%20used%20for%20error%20message).%0A%20%20%20*%20 em param%20%7B*%7D%20value%20The%20value%20to%20check%20the%20type%20on.%0A%20%20%20*%20 em param%20%7Bstring%7D%20type%20The%20type%20we%20expect%20%7Cvalue%7C%20to%20be.%0A%20%20%20*/%0A%20%20function%20expectIsType(id,%20value,%20type)%20%7B%0A%20%20%20%20expect(typeof%20value%20==%20type,%20'%5B'%20+%20value%20+%20'%5D%20('%20+%20id%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20')%20is%20not%20a%20'%20+%20type);%0A%20%20%7D%0A%0A%20%20expect(!loadTimeData,%20'should%20only%20include%20this%20file%20once');%0A%20%20loadTimeData%20=%20new%20LoadTimeData;%0A%7D)();%0A%3C/script%3E%3Cscript%3EloadTimeData.data%20=%20%7B%22bad_clock%22%3Afalse,%22closeDetails%22%3A%22Ocultar%20detalhes%22,%22currentDate%22%3A%2228/02/2015%22,%22errorCode%22%3A%22net%3A%3AERR_CERT_AUTHORITY_INVALID%22,%22expirationDate%22%3A%2216/08/2015%22,%22explanationParagraph%22%3A%22Este%20servidor%20n%C3%A3o%20conseguiu%20provar%20que%20%C3%A9%20%5Cu003Cstrong%3Ewiki.softwarelivre.org%5Cu003C/strong%3E.%20O%20certificado%20de%20seguran%C3%A7a%20n%C3%A3o%20%C3%A9%20confi%C3%A1vel%20para%20o%20sistema%20operacional%20do%20seu%20computador.%20Isso%20pode%20ser%20causado%20por%20uma%20configura%C3%A7%C3%A3o%20incorreta%20ou%20pela%20intercepta%C3%A7%C3%A3o%20da%20sua%20conex%C3%A3o%20por%20um%20invasor.%22,%22finalParagraph%22%3A%22%5Cu003Ca%20href=%5C%22%23%5C%22%20id=%5C%22proceed-link%5C%22%3EIr%20para%20wiki.softwarelivre.org%20(n%C3%A3o%20seguro)%5Cu003C/a%3E%22,%22fontfamily%22%3A%22Ubuntu,%20Arial,%20sans-serif%22,%22fontsize%22%3A%2275%25%22,%22heading%22%3A%22Sua%20conex%C3%A3o%20n%C3%A3o%20%C3%A9%20particular%22,%22issuer%22%3A%22wiki.softwarelivre.org%22,%22openDetails%22%3A%22Avan%C3%A7ado%22,%22overridable%22%3Atrue,%22pem%22%3A%22-----BEGIN%20CERTIFICATE-----%5CnMIIEZzCCA0+gAwIBAgIJAKIyhOLREPg0MA0GCSqGSIb3DQEBBQUAMIHJMQswCQYD%5CnVQQGEwJCUjEaMBgGA1UECAwRUmlvIEdyYW5kZSBkbyBTdWwxFTATBgNVBAcMDFBv%5CncnRvIEFsZWdyZTErMCkGA1UECgwiQXNzb2NpYcODwqfDg8KjbyBTb2Z0d2FyZUxp%5CndnJlLm9yZzEMMAoGA1UECwwDQVNMMR8wHQYDVQQDDBZ3aWtpLnNvZnR3YXJlbGl2%5CncmUub3JnMSswKQYJKoZIhvcNAQkBFhxwb3N0bWFzdGVyQHNvZnR3YXJlbGl2cmUu%5Cnb3JnMB4XDTE0MDgxNjEzMjE1NFoXDTE1MDgxNjEzMjE1NFowgckxCzAJBgNVBAYT%5CnAkJSMRowGAYDVQQIDBFSaW8gR3JhbmRlIGRvIFN1bDEVMBMGA1UEBwwMUG9ydG8g%5CnQWxlZ3JlMSswKQYDVQQKDCJBc3NvY2lhw4PCp8ODwqNvIFNvZnR3YXJlTGl2cmUu%5Cnb3JnMQwwCgYDVQQLDANBU0wxHzAdBgNVBAMMFndpa2kuc29mdHdhcmVsaXZyZS5v%5CncmcxKzApBgkqhkiG9w0BCQEWHHBvc3RtYXN0ZXJAc29mdHdhcmVsaXZyZS5vcmcw%5CnggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCztON6NJ5FPJb3RdgfpP5X%5Cne6/shv+CHFj6GIGemTyWWdFIHHDcX6rWO/CM1UaKTjuvkFfghgda8tjyWWfnS1IA%5Cn25ec2fSUxfFrrPmsTPrQHQMUMufT9cafdDwIihFP5Y/As/FpqGn8sLJLoehhpxfj%5CnPO7ca2YXdPjgFGkPjV1Y+3sn/YsrRqDaD1Rk9ZurDQbkHrF8L0DiW9lUJZUvAb6O%5CnHznSfHPA5K/SGf2hvQtDqYQghjF/KcLs+zF1o13r4NVhxtlTcqMYcbHgzCmK2su0%5CnT40Dwv0uq8Oc96PqvM8Lesu8O04lQcJec/zOpTjxotmVGRhmE4fqQYomMXa2kFjz%5CnAgMBAAGjUDBOMB0GA1UdDgQWBBR/1KA/TkTMmb5/ZX/mRr8OzMtP9zAfBgNVHSME%5CnGDAWgBR/1KA/TkTMmb5/ZX/mRr8OzMtP9zAMBgNVHRMEBTADAQH/MA0GCSqGSIb3%5CnDQEBBQUAA4IBAQBAOXzQ1SZ+X+GLt9AQ4hkO2zl80/lBL12rn0ljeIk7Ci1EOPhC%5CnFfoGGHmmq8CVFcdaU08M809WSFQI9katlN2FAdvMPtCyzEjxstsorvpl5Z6PPmv8%5CnnfBxfetnj3O8C20Qwx5fAMDoQJ32gTLEJtqxFIafhNBI66ikK6K8K9jqxgxBiBtS%5Cn0u6QMcLqz1eYCFag/BDQnq1b/9OAknlKz5teUn+8Arf3afruCYqT96iGkwmxhE0h%5CnGo/bHbK03KRAlJVk36ZcWZkP4LIP8yg9CSjWtvXszzEH28+tqhMFB0ckB1knSfV0%5Cn7gTPSVkx5Wx1yIhdECpySzSsRwDQkmROEaH8%5Cn-----END%20CERTIFICATE-----%5Cn%22,%22primaryButtonText%22%3A%22Voltar%20%C3%A0%20seguran%C3%A7a%22,%22primaryParagraph%22%3A%22Invasores%20podem%20estar%20tentando%20roubar%20suas%20informa%C3%A7%C3%B5es%20de%20%5Cu003Cstrong%3Ewiki.softwarelivre.org%5Cu003C/strong%3E%20(por%20exemplo,%20senhas,%20mensagens%20ou%20cart%C3%B5es%20de%20cr%C3%A9dito).%22,%22subject%22%3A%22wiki.softwarelivre.org%22,%22tabTitle%22%3A%22Erro%20de%20privacidade%22,%22textdirection%22%3A%22ltr%22,%22type%22%3A%22SSL%22%7D;%3C/script%3E%3Cscript%3E//%20Copyright%20(c)%202012%20The%20Chromium%20Authors.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed%20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20Copyright%20(c)%202012%20The%20Chromium%20Authors.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed%20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A/**%0A%20*%20 em fileoverview%20This%20is%20a%20simple%20template%20engine%20inspired%20by%20JsTemplates%0A%20*%20optimized%20for%20i18n.%0A%20*%0A%20*%20It%20currently%20supports%20three%20handlers%3A%0A%20*%0A%20*%20%20%20*%20i18n-content%20which%20sets%20the%20textContent%20of%20the%20element.%0A%20*%0A%20*%20%20%20%20%20%3Cspan%20i18n-content=%22myContent%22%3E%3C/span%3E%0A%20*%0A%20*%20%20%20*%20i18n-options%20which%20generates%20%3Coption%3E%20elements%20for%20a%20%3Cselect%3E.%0A%20*%0A%20*%20%20%20%20%20%3Cselect%20i18n-options=%22myOptionList%22%3E%3C/select%3E%0A%20*%0A%20*%20%20%20*%20i18n-values%20is%20a%20list%20of%20attribute-value%20or%20property-value%20pairs.%0A%20*%20%20%20%20%20Properties%20are%20prefixed%20with%20a%20'.'%20and%20can%20contain%20nested%20properties.%0A%20*%0A%20*%20%20%20%20%20%3Cspan%20i18n-values=%22title%3AmyTitle;.style.fontSize%3AfontSize%22%3E%3C/span%3E%0A%20*%0A%20*%20This%20file%20is%20a%20copy%20of%20i18n_template.js,%20with%20minor%20tweaks%20to%20support%20using%0A%20*%20load_time_data.js.%20It%20should%20replace%20i18n_template.js%20eventually.%0A%20*/%0A%0Avar%20i18nTemplate%20=%20(function()%20%7B%0A%20%20/**%0A%20%20%20*%20This%20provides%20the%20handlers%20for%20the%20templating%20engine.%20The%20key%20is%20used%20as%0A%20%20%20*%20the%20attribute%20name%20and%20the%20value%20is%20the%20function%20that%20gets%20called%20for%20every%0A%20%20%20*%20single%20node%20that%20has%20this%20attribute.%0A%20%20%20*%20 em type%20%7B!Object%7D%0A%20%20%20*/%0A%20%20var%20handlers%20=%20%7B%0A%20%20%20%20/**%0A%20%20%20%20%20*%20This%20handler%20sets%20the%20textContent%20of%20the%20element.%0A%20%20%20%20%20*%20 em param%20%7BHTMLElement%7D%20element%20The%20node%20to%20modify.%0A%20%20%20%20%20*%20 em param%20%7Bstring%7D%20key%20The%20name%20of%20the%20value%20in%20the%20dictionary.%0A%20%20%20%20%20*%20 em param%20%7BLoadTimeData%7D%20dictionary%20The%20dictionary%20of%20strings%20to%20draw%20from.%0A%20%20%20%20%20*/%0A%20%20%20%20'i18n-content'%3A%20function(element,%20key,%20dictionary)%20%7B%0A%20%20%20%20%20%20element.textContent%20=%20dictionary.getString(key);%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20This%20handler%20adds%20options%20to%20a%20%3Cselect%3E%20element.%0A%20%20%20%20%20*%20 em param%20%7BHTMLElement%7D%20select%20The%20node%20to%20modify.%0A%20%20%20%20%20*%20 em param%20%7Bstring%7D%20key%20The%20name%20of%20the%20value%20in%20the%20dictionary.%20It%20should%0A%20%20%20%20%20*%20%20%20%20%20identify%20an%20array%20of%20values%20to%20initialize%20an%20%3Coption%3E.%20Each%20value,%0A%20%20%20%20%20*%20%20%20%20%20if%20a%20pair,%20represents%20%5Bcontent,%20value%5D.%20Otherwise,%20it%20should%20be%20a%0A%20%20%20%20%20*%20%20%20%20%20content%20string%20with%20no%20value.%0A%20%20%20%20%20*%20 em param%20%7BLoadTimeData%7D%20dictionary%20The%20dictionary%20of%20strings%20to%20draw%20from.%0A%20%20%20%20%20*/%0A%20%20%20%20'i18n-options'%3A%20function(select,%20key,%20dictionary)%20%7B%0A%20%20%20%20%20%20var%20options%20=%20dictionary.getValue(key);%0A%20%20%20%20%20%20options.forEach(function(optionData)%20%7B%0A%20%20%20%20%20%20%20%20var%20option%20=%20typeof%20optionData%20==%20'string'%20%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20new%20Option(optionData)%20%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20new%20Option(optionData%5B1%5D,%20optionData%5B0%5D);%0A%20%20%20%20%20%20%20%20select.appendChild(option);%0A%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20This%20is%20used%20to%20set%20HTML%20attributes%20and%20DOM%20properties.%20The%20syntax%20is%3A%0A%20%20%20%20%20*%20%20%20attributename%3Akey;%0A%20%20%20%20%20*%20%20%20.domProperty%3Akey;%0A%20%20%20%20%20*%20%20%20.nested.dom.property%3Akey%0A%20%20%20%20%20*%20 em param%20%7BHTMLElement%7D%20element%20The%20node%20to%20modify.%0A%20%20%20%20%20*%20 em param%20%7Bstring%7D%20attributeAndKeys%20The%20path%20of%20the%20attribute%20to%20modify%0A%20%20%20%20%20*%20%20%20%20%20followed%20by%20a%20colon,%20and%20the%20name%20of%20the%20value%20in%20the%20dictionary.%0A%20%20%20%20%20*%20%20%20%20%20Multiple%20attribute/key%20pairs%20may%20be%20separated%20by%20semicolons.%0A%20%20%20%20%20*%20 em param%20%7BLoadTimeData%7D%20dictionary%20The%20dictionary%20of%20strings%20to%20draw%20from.%0A%20%20%20%20%20*/%0A%20%20%20%20'i18n-values'%3A%20function(element,%20attributeAndKeys,%20dictionary)%20%7B%0A%20%20%20%20%20%20var%20parts%20=%20attributeAndKeys.replace(/%5Cs/g,%20'').split(/;/);%0A%20%20%20%20%20%20parts.forEach(function(part)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!part)%0A%20%20%20%20%20%20%20%20%20%20return;%0A%0A%20%20%20%20%20%20%20%20var%20attributeAndKeyPair%20=%20part.match(/%5E(%5B%5E%3A%5D+)%3A(.+)$/);%0A%20%20%20%20%20%20%20%20if%20(!attributeAndKeyPair)%0A%20%20%20%20%20%20%20%20%20%20throw%20new%20Error('malformed%20i18n-values%3A%20'%20+%20attributeAndKeys);%0A%0A%20%20%20%20%20%20%20%20var%20propName%20=%20attributeAndKeyPair%5B1%5D;%0A%20%20%20%20%20%20%20%20var%20propExpr%20=%20attributeAndKeyPair%5B2%5D;%0A%0A%20%20%20%20%20%20%20%20var%20value%20=%20dictionary.getValue(propExpr);%0A%0A%20%20%20%20%20%20%20%20//%20Allow%20a%20property%20of%20the%20form%20'.foo.bar'%20to%20assign%20a%20value%20into%0A%20%20%20%20%20%20%20%20//%20element.foo.bar.%0A%20%20%20%20%20%20%20%20if%20(propName%5B0%5D%20==%20'.')%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20path%20=%20propName.slice(1).split('.');%0A%20%20%20%20%20%20%20%20%20%20var%20targetObject%20=%20element;%0A%20%20%20%20%20%20%20%20%20%20while%20(targetObject%20&&%20path.length%20%3E%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20targetObject%20=%20targetObject%5Bpath.shift()%5D;%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20(targetObject)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20targetObject%5Bpath%5D%20=%20value;%0A%20%20%20%20%20%20%20%20%20%20%20%20//%20In%20case%20we%20set%20innerHTML%20(ignoring%20others)%20we%20need%20to%0A%20%20%20%20%20%20%20%20%20%20%20%20//%20recursively%20check%20the%20content.%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(path%20==%20'innerHTML')%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20process(element,%20dictionary);%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20element.setAttribute(propName,%20/**%20 em type%20%7Bstring%7D%20*/(value));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%7D;%0A%0A%20%20var%20attributeNames%20=%20Object.keys(handlers);%0A%20%20var%20selector%20=%20'%5B'%20+%20attributeNames.join('%5D,%5B')%20+%20'%5D';%0A%0A%20%20/**%0A%20%20%20*%20Processes%20a%20DOM%20tree%20with%20the%20%7B em code%20dictionary%7D%20map.%0A%20%20%20*%20 em param%20%7BHTMLElement%7D%20node%20The%20root%20of%20the%20DOM%20tree%20to%20process.%0A%20%20%20*%20 em param%20%7BLoadTimeData%7D%20dictionary%20The%20dictionary%20to%20draw%20from.%0A%20%20%20*/%0A%20%20function%20process(node,%20dictionary)%20%7B%0A%20%20%20%20var%20elements%20=%20node.querySelectorAll(selector);%0A%20%20%20%20for%20(var%20element,%20i%20=%200;%20element%20=%20elements%5Bi%5D;%20i++)%20%7B%0A%20%20%20%20%20%20for%20(var%20j%20=%200;%20j%20%3C%20attributeNames.length;%20j++)%20%7B%0A%20%20%20%20%20%20%20%20var%20name%20=%20attributeNames%5Bj%5D;%0A%20%20%20%20%20%20%20%20var%20attribute%20=%20element.getAttribute(name);%0A%20%20%20%20%20%20%20%20if%20(attribute%20!=%20null)%0A%20%20%20%20%20%20%20%20%20%20handlers%5Bname%5D(element,%20attribute,%20dictionary);%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20return%20%7B%0A%20%20%20%20process%3A%20process%0A%20%20%7D;%0A%7D());%0A%0A%0Ai18nTemplate.process(document,%20loadTimeData);%0A%3C/script%3E#>

NET::ERR_CERT_AUTHORITY_INVALID


2015-02-28 11:16 GMT-03:00 Paulo Henrique Santana <phls em softwarelivre.org>:

> ----- Mensagem original -----
>
> > De: "Barbara Tostes" <barbaratostes em gmail.com>
> > Para: "Organizadores do FLISOL nas cidades do Brasil"
> > <flisol-br em listas.softwarelivre.org>
> > Enviadas: Sábado, 28 de fevereiro de 2015 10:12:10
> > Assunto: [Flisol-br] Tabela de Equivalentes 2015
>
> > PessoAll,
>
> > Quem tem a Tabela de Equivalentes mais atualizada por aí?
>
> http://equivalentes.curitibalivre.org.br
>
>
> --
> Paulo Henrique de Lima Santana
> Curador de Software Livre da Campus Party Brasil
> Tim:  (41) 9638-1897
> Vivo: (41) 9198-1897
> Site: http://www.phls.com.br
> Jabber: phls em jabber.org
> Twitter: http://www.twitter.com/phls00
> GNU/Linux user: 228719  GPG ID: 0443C450
> _______________________________________________
> flisol-br mailing list
> flisol-br em listas.softwarelivre.org
> http://listas.softwarelivre.org/cgi-bin/mailman/listinfo/flisol-br
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.softwarelivre.org/pipermail/flisol-br/attachments/20150228/9a2c4c5c/attachment-0001.html>


More information about the flisol-br mailing list