Import Cobalt 22.lts.3.306369
diff --git a/src/cobalt/browser/browser_module.cc b/src/cobalt/browser/browser_module.cc index ea42569..5bea38e 100644 --- a/src/cobalt/browser/browser_module.cc +++ b/src/cobalt/browser/browser_module.cc
@@ -1766,22 +1766,31 @@ ResetResources(); + // Suspend media module and update system window and resource provider. + if (media_module_) { + DCHECK(system_window_); + window_size_ = system_window_->GetWindowSize(); +#if SB_API_VERSION >= 13 + // This needs to be done before destroying the renderer module as it + // may use the renderer module to release assets during the update. + media_module_->UpdateSystemWindowAndResourceProvider(NULL, + GetResourceProvider()); +#endif // SB_API_VERSION >= 13 + } + if (renderer_module_) { // Destroy the renderer module into so that it releases all its graphical // resources. DestroyRendererModule(); } - if (media_module_) { - DCHECK(system_window_); - window_size_ = system_window_->GetWindowSize(); #if SB_API_VERSION >= 13 + // Reset system window after renderer module destroyed. + if (media_module_) { input_device_manager_.reset(); system_window_.reset(); - media_module_->UpdateSystemWindowAndResourceProvider(NULL, - GetResourceProvider()); -#endif // SB_API_VERSION >= 13 } +#endif // SB_API_VERSION >= 13 } void BrowserModule::FreezeInternal(SbTimeMonotonic timestamp) {
diff --git a/src/cobalt/build/build.id b/src/cobalt/build/build.id index bd615ed..74c5406 100644 --- a/src/cobalt/build/build.id +++ b/src/cobalt/build/build.id
@@ -1 +1 @@ -306081 \ No newline at end of file +306369 \ No newline at end of file
diff --git a/src/cobalt/content/ssl/certs/002c0b4f.0 b/src/cobalt/content/ssl/certs/002c0b4f.0 new file mode 100644 index 0000000..559a390 --- /dev/null +++ b/src/cobalt/content/ssl/certs/002c0b4f.0
@@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA +MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD +VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy +MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt +c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ +OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG +vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud +316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo +0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE +y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF +zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE ++cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN +I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs +x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa +ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC +4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4 +7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg +JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti +2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk +pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF +FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt +rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk +ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5 +u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP +4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6 +N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3 +vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6 +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/0c4c9b6c.0 b/src/cobalt/content/ssl/certs/0c4c9b6c.0 deleted file mode 100644 index 70b4ce4..0000000 --- a/src/cobalt/content/ssl/certs/0c4c9b6c.0 +++ /dev/null
@@ -1,41 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx -MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy -cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG -A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl -BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed -KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 -G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 -zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 -ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG -HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 -Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V -yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e -beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r -6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog -zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW -BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr -ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp -ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk -cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt -YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC -CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow -KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI -hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ -UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz -X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x -fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz -a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd -Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd -SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O -AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso -M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge -v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/116bf586.0 b/src/cobalt/content/ssl/certs/116bf586.0 deleted file mode 100644 index f9364c0..0000000 --- a/src/cobalt/content/ssl/certs/116bf586.0 +++ /dev/null
@@ -1,17 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL -MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj -KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 -MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV -BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw -NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV -BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH -MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL -So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal -tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG -CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT -qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz -rD6ogRLQy7rQkgu2npaqBA+K ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/128805a3.0 b/src/cobalt/content/ssl/certs/128805a3.0 deleted file mode 100644 index 013d461..0000000 --- a/src/cobalt/content/ssl/certs/128805a3.0 +++ /dev/null
@@ -1,24 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1 -MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1 -czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG -CSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIwMTAxMDMwMTAxMDMwWhgPMjAzMDEy -MTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0aWZpdHNl -ZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBS -b290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUy -euuOF0+W2Ap7kaJjbMeMTC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvO -bntl8jixwKIy72KyaOBhU8E2lf/slLo2rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIw -WFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw93X2PaRka9ZP585ArQ/d -MtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtNP2MbRMNE -1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/ -zQas8fElyalL1BSZMEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYB -BQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEF -BQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+RjxY6hUFaTlrg4wCQiZrxTFGGV -v9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqMlIpPnTX/dqQG -E5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u -uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIW -iAYLtqZLICjU3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/v -GVCJYMzpJJUPwssd8m92kMfMdcGWxZ0= ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/2c543cd1.0 b/src/cobalt/content/ssl/certs/2c543cd1.0 deleted file mode 100644 index bcb2529..0000000 --- a/src/cobalt/content/ssl/certs/2c543cd1.0 +++ /dev/null
@@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/2e4eed3c.0 b/src/cobalt/content/ssl/certs/2e4eed3c.0 deleted file mode 100644 index 998460f..0000000 --- a/src/cobalt/content/ssl/certs/2e4eed3c.0 +++ /dev/null
@@ -1,25 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB -qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf -Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw -MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV -BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw -NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j -LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG -A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs -W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta -3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk -6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 -Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J -NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA -MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP -r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU -DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz -YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX -xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 -/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ -LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 -jVaMaA== ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/2e5ac55d.0 b/src/cobalt/content/ssl/certs/2e5ac55d.0 deleted file mode 100644 index b2e43c9..0000000 --- a/src/cobalt/content/ssl/certs/2e5ac55d.0 +++ /dev/null
@@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ -MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT -DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow -PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD -Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O -rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq -OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b -xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw -7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD -aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG -SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 -ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr -AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz -R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 -JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo -Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/3fb36b73.0 b/src/cobalt/content/ssl/certs/3fb36b73.0 new file mode 100644 index 0000000..59f8ce3 --- /dev/null +++ b/src/cobalt/content/ssl/certs/3fb36b73.0
@@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEM +BQAwaTELMAkGA1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRG +T1JNIENvcnAuMTIwMAYDVQQDDClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4NDJaFw0zNzA4MTgyMzU5NTlaMGkx +CzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVTUyBQTEFURk9STSBD +b3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVA +iQqrDZBbUGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH +38dq6SZeWYp34+hInDEW+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lE +HoSTGEq0n+USZGnQJoViAbbJAh2+g1G7XNr4rRVqmfeSVPc0W+m/6imBEtRTkZaz +kVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2aacp+yPOiNgSnABIqKYP +szuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4Yb8Obtoq +vC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHf +nZ3zVHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaG +YQ5fG8Ir4ozVu53BA0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo +0es+nPxdGoMuK8u180SdOqcXYZaicdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3a +CJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejyYhbLgGvtPe31HzClrkvJE+2K +AQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNVHQ4EFgQU0p+I +36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoN +qo0hV4/GPnrK21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatj +cu3cvuzHV+YwIHHW1xDBE1UBjCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm ++LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bxhYTeodoS76TiEJd6eN4MUZeoIUCL +hr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTgE34h5prCy8VCZLQe +lHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTHD8z7 +p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8 +piKCk5XQA76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLR +LBT/DShycpWbXgnbiUSYqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX +5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oGI/hGoiLtk/bdmuYqh7GYVPEi92tF4+KO +dh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmgkpzNNIaRkPpkUZ3+/uul +9XXeifdy +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/480720ec.0 b/src/cobalt/content/ssl/certs/480720ec.0 deleted file mode 100644 index 03c70c7..0000000 --- a/src/cobalt/content/ssl/certs/480720ec.0 +++ /dev/null
@@ -1,21 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY -MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo -R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx -MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK -Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 -AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA -ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 -7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W -kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI -mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G -A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ -KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 -6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl -4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K -oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj -UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU -AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/4a6481c9.0 b/src/cobalt/content/ssl/certs/4a6481c9.0 deleted file mode 100644 index 6f0f8db..0000000 --- a/src/cobalt/content/ssl/certs/4a6481c9.0 +++ /dev/null
@@ -1,22 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 -MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL -v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 -eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq -tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd -C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa -zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB -mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH -V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n -bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG -3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs -J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO -291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS -ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd -AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 -TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/5a4d6896.0 b/src/cobalt/content/ssl/certs/5a4d6896.0 deleted file mode 100644 index bc6a756..0000000 --- a/src/cobalt/content/ssl/certs/5a4d6896.0 +++ /dev/null
@@ -1,32 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO -TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh -dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloX -DTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl -ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv -b3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4yolQP -cPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WW -IkYFsO2tx1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqX -xz8ecAgwoNzFs21v0IJyEavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFy -KJLZWyNtZrVtB0LrpjPOktvA9mxjeM3KTj215VKb8b475lRgsGYeCasH/lSJEULR -9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUurmkVLoR9BvUhTFXFkC4az -5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU51nus6+N8 -6U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7 -Ngzp07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHP -bMk7ccHViLVlvMDoFxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXt -BznaqB16nzaeErAMZRKQFWDZJkBE41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTt -XUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMBAAGjQjBAMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleuyjWcLhL75Lpd -INyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD -U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwp -LiniyMMB8jPqKqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8 -Ipf3YF3qKS9Ysr1YvY2WTxB1v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixp -gZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA8KCWAg8zxXHzniN9lLf9OtMJgwYh -/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b8KKaa8MFSu1BYBQw -0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0rmj1A -fsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq -4BZ+Extq1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR -1VmiiXTTn74eS9fGbbeIJG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/ -QFH1T/U67cjF68IeHRaVesd+QnGTbksVtzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM -94B7IWcnMFk= ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/5f618aec.0 b/src/cobalt/content/ssl/certs/5f618aec.0 new file mode 100644 index 0000000..573ec33 --- /dev/null +++ b/src/cobalt/content/ssl/certs/5f618aec.0
@@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNV +BAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04g +Uk9PVCBDQSBHMjAeFw0xNzAyMDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJ +BgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJ +R04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDF +dRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05N0Iw +vlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZ +uIt4ImfkabBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhp +n+Sc8CnTXPnGFiWeI8MgwT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKs +cpc/I1mbySKEwQdPzH/iV8oScLumZfNpdWO9lfsbl83kqK/20U6o2YpxJM02PbyW +xPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91QqhngLjYl/rNUssuHLoPj1P +rCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732jcZZroiF +DsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fx +DTvf95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgy +LcsUDFDYg2WD7rlcz8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6C +eWRgKRM+o/1Pcmqr4tTluCRVLERLiohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSCIS1mxteg4BXrzkwJ +d8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOBywaK8SJJ6ejq +kX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC +b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQl +qiCA2ClV9+BB/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0 +OJD7uNGzcgbJceaBxXntC6Z58hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+c +NywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5BiKDUyUM/FHE5r7iOZULJK2v0ZXk +ltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklWatKcsWMy5WHgUyIO +pwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tUSxfj +03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZk +PuXaTH4MNMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE +1LlSVHJ7liXMvGnjSG4N0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MX +QRBdJ3NghVdJIgc= +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/6410666e.0 b/src/cobalt/content/ssl/certs/6410666e.0 deleted file mode 100644 index 51187d8..0000000 --- a/src/cobalt/content/ssl/certs/6410666e.0 +++ /dev/null
@@ -1,32 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/ -MQswCQYDVQQGEwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MB4XDTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1ow -PzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dvdmVybm1lbnQgUm9vdCBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB -AJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qNw8XR -IePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1q -gQdW8or5BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKy -yhwOeYHWtXBiCAEuTk8O1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAts -F/tnyMKtsc2AtJfcdgEWFelq16TheEfOhtX7MfP6Mb40qij7cEwdScevLJ1tZqa2 -jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wovJ5pGfaENda1UhhXcSTvx -ls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7Q3hub/FC -VGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHK -YS1tB6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoH -EgKXTiCQ8P8NHuJBO9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThN -Xo+EHWbNxWCWtFJaBYmOlXqYwZE8lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1Ud -DgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNVHRMEBTADAQH/MDkGBGcqBwAE -MTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg209yewDL7MTqK -UWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ -TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyf -qzvS/3WXy6TjZwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaK -ZEk9GhiHkASfQlK3T8v+R0F2Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFE -JPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlUD7gsL0u8qV1bYH+Mh6XgUmMqvtg7 -hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6QzDxARvBMB1uUO07+1 -EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+HbkZ6Mm -nD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WX -udpVBrkk7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44Vbnz -ssQwmSNOXfJIoRIM3BKQCZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDe -LMDDav7v3Aun+kbfYNucpllQdSNpc5Oy+fwC00fmcc4QAu4njIT/rEUNE1yDMuAl -pYYsfPQS ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/76cb8f92.0 b/src/cobalt/content/ssl/certs/76cb8f92.0 deleted file mode 100644 index edbeb27..0000000 --- a/src/cobalt/content/ssl/certs/76cb8f92.0 +++ /dev/null
@@ -1,22 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG -A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh -bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE -ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS -b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 -7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS -J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y -HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP -t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz -FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY -XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ -MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw -hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js -MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA -A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj -Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx -XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o -omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc -A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW -WL1WMRJOEcgh4LMRkWXbtKaIOM5V ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/7d0b38bd.0 b/src/cobalt/content/ssl/certs/7d0b38bd.0 deleted file mode 100644 index e19fdea..0000000 --- a/src/cobalt/content/ssl/certs/7d0b38bd.0 +++ /dev/null
@@ -1,21 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW -ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp -U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y -aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp -U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg -SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln -biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm -GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve -fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw -AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ -aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj -aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW -kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC -4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga -FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/8867006a.0 b/src/cobalt/content/ssl/certs/8867006a.0 deleted file mode 100644 index bed6cd0..0000000 --- a/src/cobalt/content/ssl/certs/8867006a.0 +++ /dev/null
@@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy -c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD -VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 -c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC -AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 -WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG -FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq -XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL -se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb -KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd -IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 -y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt -hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc -QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 -Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV -HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ -KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z -dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ -L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr -Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo -ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY -T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz -GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m -1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV -OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH -6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX -QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/8d89cda1.0 b/src/cobalt/content/ssl/certs/8d89cda1.0 new file mode 100644 index 0000000..e3be2a5 --- /dev/null +++ b/src/cobalt/content/ssl/certs/8d89cda1.0
@@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYD +VQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw +MTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4MjMxNjA0WjBlMQswCQYDVQQGEwJV +UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNy +b3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZR +ogPZnZH6thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYb +hGBKia/teQ87zvH2RPUBeMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBTIy5lycFIM+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3 +FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlfXu5gKcs68tvWMoQZP3zV +L8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaReNtUjGUB +iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/9482e63a.0 b/src/cobalt/content/ssl/certs/9482e63a.0 new file mode 100644 index 0000000..81f8a2e --- /dev/null +++ b/src/cobalt/content/ssl/certs/9482e63a.0
@@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw +CQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw +JQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT +EENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0 +WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT +LkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX +BgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE +KI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm +Fy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8 +EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J +UG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn +nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/9b5697b0.0 b/src/cobalt/content/ssl/certs/9b5697b0.0 new file mode 100644 index 0000000..8f308f5 --- /dev/null +++ b/src/cobalt/content/ssl/certs/9b5697b0.0
@@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf +BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 +YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x +NzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G +A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 +d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF +Q0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG +SM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN +FWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w +DwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw +CgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh +DDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/9f727ac7.0 b/src/cobalt/content/ssl/certs/9f727ac7.0 new file mode 100644 index 0000000..f440412 --- /dev/null +++ b/src/cobalt/content/ssl/certs/9f727ac7.0
@@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBs +MQswCQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0Eg +Um9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUzOFoXDTQ1MDIxMzEwNTUzN1owbDEL +MAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl +YXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNBIFJv +b3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569l +mwVnlskNJLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE +4VGC/6zStGndLuwRo0Xua2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uv +a9of08WRiFukiZLRgeaMOVig1mlDqa2YUlhu2wr7a89o+uOkXjpFc5gH6l8Cct4M +pbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K5FrZx40d/JiZ+yykgmvw +Kh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEvdmn8kN3b +LW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcY +AuUR0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqB +AGMUuTNe3QvboEUHGjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYq +E613TBoYm5EPWNgGVMWX+Ko/IIqmhaZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHr +W2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQCPxrvrNQKlr9qEgYRtaQQJKQ +CoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAU +X15QvWiWkKQUEapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3 +f5Z2EMVGpdAgS1D0NTsY9FVqQRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxaja +H6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxDQpSbIPDRzbLrLFPCU3hKTwSUQZqP +JzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcRj88YxeMn/ibvBZ3P +zzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5vZSt +jBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0 +/L5H9MG0qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pT +BGIBnfHAT+7hOtSLIBD6Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79 +aPib8qXPMThcFarmlwDB31qlpzmq6YR/PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YW +xw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnnkf3/W9b3raYvAwtt41dU +63ZTGI0RmLo= +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/ad088e1d.0 b/src/cobalt/content/ssl/certs/ad088e1d.0 deleted file mode 100644 index 6bc2888..0000000 --- a/src/cobalt/content/ssl/certs/ad088e1d.0 +++ /dev/null
@@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy -c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE -BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 -IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV -VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 -cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT -QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh -F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v -c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w -mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd -VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX -teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ -f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe -Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ -nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB -/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY -MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG -9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc -aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX -IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn -ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z -uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN -Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja -QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW -koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 -ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt -DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm -bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/b1b8a7f3.0 b/src/cobalt/content/ssl/certs/b1b8a7f3.0 deleted file mode 100644 index a695c21..0000000 --- a/src/cobalt/content/ssl/certs/b1b8a7f3.0 +++ /dev/null
@@ -1,24 +0,0 @@ ------BEGIN CERTIFICATE----- -MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCB -ijELMAkGA1UEBhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHly -aWdodCAoYykgMjAwNTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl -ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQSBDQTAeFw0w -NTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYDVQQGEwJDSDEQMA4G -A1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIwIAYD -VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBX -SVNlS2V5IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAy0+zAJs9Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxR -VVuuk+g3/ytr6dTqvirdqFEr12bDYVxgAsj1znJ7O7jyTmUIms2kahnBAbtzptf2 -w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbDd50kc3vkDIzh2TbhmYsF -mQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ/yxViJGg -4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t9 -4B3RLoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYw -DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQw -EAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOx -SPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vImMMkQyh2I+3QZH4VFvbBsUfk2 -ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4+vg1YFkCExh8 -vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa -hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZi -Fj4A4xylNoEYokxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ -/L7fCg0= ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/b204d74a.0 b/src/cobalt/content/ssl/certs/b204d74a.0 deleted file mode 100644 index 707ff08..0000000 --- a/src/cobalt/content/ssl/certs/b204d74a.0 +++ /dev/null
@@ -1,28 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB -yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL -ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp -U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW -ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW -ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp -U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y -aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 -nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex -t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz -SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG -BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ -rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ -NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E -BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH -BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy -aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv -MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE -p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y -5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK -WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ -4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N -hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/b433981b.0 b/src/cobalt/content/ssl/certs/b433981b.0 new file mode 100644 index 0000000..c371237 --- /dev/null +++ b/src/cobalt/content/ssl/certs/b433981b.0
@@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/b81b93f0.0 b/src/cobalt/content/ssl/certs/b81b93f0.0 new file mode 100644 index 0000000..8dde431 --- /dev/null +++ b/src/cobalt/content/ssl/certs/b81b93f0.0
@@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw +CQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw +FgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S +Q00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5 +MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL +DAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS +QUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH +sbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK +Um8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu +SuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC +MQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy +v+c= +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/ba89ed3b.0 b/src/cobalt/content/ssl/certs/ba89ed3b.0 deleted file mode 100644 index acfed9d..0000000 --- a/src/cobalt/content/ssl/certs/ba89ed3b.0 +++ /dev/null
@@ -1,25 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB -rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf -Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw -MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV -BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa -Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl -LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u -MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl -ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm -gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 -YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf -b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 -9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S -zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk -OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV -HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA -2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW -oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu -t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c -KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM -m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu -MdRAGmI0Nj81Aa6sY6A= ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/bf53fb88.0 b/src/cobalt/content/ssl/certs/bf53fb88.0 new file mode 100644 index 0000000..3bdfb23 --- /dev/null +++ b/src/cobalt/content/ssl/certs/bf53fb88.0
@@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBl +MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw +NAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIwNzE4MjMwMDIzWjBlMQswCQYDVQQG +EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1N +aWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZ +Nt9GkMml7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0 +ZdDMbRnMlfl7rEqUrQ7eS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1 +HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw71VdyvD/IybLeS2v4I2wDwAW9lcfNcztm +gGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+dkC0zVJhUXAoP8XFWvLJ +jEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49FyGcohJUc +aDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaG +YaRSMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6 +W6IYZVcSn2i51BVrlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4K +UGsTuqwPN1q3ErWQgR5WrlcihtnJ0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH ++FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJClTUFLkqqNfs+avNJVgyeY+Q +W5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZC +LgLNFgVZJ8og6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OC +gMNPOsduET/m4xaRhPtthH80dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6 +tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk+ONVFT24bcMKpBLBaYVu32TxU5nh +SnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex/2kskZGT4d9Mozd2 +TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDyAmH3 +pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGR +xpl/j8nWZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiApp +GWSZI1b7rCoucL5mxAyE7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9 +dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKTc0QWbej09+CVgI+WXTik9KveCjCHk9hN +AHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D5KbvtwEwXlGjefVwaaZB +RA+GsCyRxj3qrg+E +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/c01cdfa2.0 b/src/cobalt/content/ssl/certs/c01cdfa2.0 deleted file mode 100644 index b5f1875..0000000 --- a/src/cobalt/content/ssl/certs/c01cdfa2.0 +++ /dev/null
@@ -1,28 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB -vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL -ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp -U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W -ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX -MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 -IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y -IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh -bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF -9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH -H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H -LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN -/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT -rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw -WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs -exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud -DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 -sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ -seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz -4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ -BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR -lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 -7M2CYfE45k+XmCpajQ== ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/c089bbbd.0 b/src/cobalt/content/ssl/certs/c089bbbd.0 deleted file mode 100644 index 447ee3d..0000000 --- a/src/cobalt/content/ssl/certs/c089bbbd.0 +++ /dev/null
@@ -1,16 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp -IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi -BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw -MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh -d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig -YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v -dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ -BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 -papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K -DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 -KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox -XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/c0ff1f52.0 b/src/cobalt/content/ssl/certs/c0ff1f52.0 deleted file mode 100644 index 6880364..0000000 --- a/src/cobalt/content/ssl/certs/c0ff1f52.0 +++ /dev/null
@@ -1,24 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b -N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t -KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu -kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm -CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ -Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu -imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te -2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe -DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p -F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt -TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/c47d9980.0 b/src/cobalt/content/ssl/certs/c47d9980.0 deleted file mode 100644 index 7d3a249..0000000 --- a/src/cobalt/content/ssl/certs/c47d9980.0 +++ /dev/null
@@ -1,42 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz -IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz -MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj -dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw -EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp -MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 -28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq -VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q -DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR -5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL -ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a -Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl -UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s -+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 -Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx -hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV -HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 -+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN -YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t -L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy -ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt -IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV -HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w -DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW -PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF -5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 -glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH -FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 -pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD -xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG -tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq -jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De -fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ -d0jQ ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/d853d49e.0 b/src/cobalt/content/ssl/certs/d853d49e.0 deleted file mode 100644 index fb804c9..0000000 --- a/src/cobalt/content/ssl/certs/d853d49e.0 +++ /dev/null
@@ -1,21 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBF -MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQL -ExNUcnVzdGlzIEZQUyBSb290IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTEx -MzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1RydXN0aXMgTGltaXRlZDEc -MBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQRUN+ -AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihH -iTHcDnlkH5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjj -vSkCqPoc4Vu5g6hBSLwacY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA -0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zto3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlB -OrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEAAaNTMFEwDwYDVR0TAQH/ -BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAdBgNVHQ4E -FgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01 -GX2cGE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmW -zaD+vkAMXBJV+JOCyinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP4 -1BIy+Q7DsdwyhEQsb8tGD+pmQQ9P8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZE -f1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHVl/9D7S3B2l0pKoU/rGXuhg8F -jZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYliB6XzCGcKQEN -ZetX2fNXlrtIzYE= ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/d887a5bb.0 b/src/cobalt/content/ssl/certs/d887a5bb.0 new file mode 100644 index 0000000..e1ddb42 --- /dev/null +++ b/src/cobalt/content/ssl/certs/d887a5bb.0
@@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf +BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 +YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x +NzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G +A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 +d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF +Q0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB +BAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ +j9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF +1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G +A1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3 +AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC +MGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu +Sw== +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/def36a68.0 b/src/cobalt/content/ssl/certs/def36a68.0 deleted file mode 100644 index 014657f..0000000 --- a/src/cobalt/content/ssl/certs/def36a68.0 +++ /dev/null
@@ -1,33 +0,0 @@ ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/e2799e36.0 b/src/cobalt/content/ssl/certs/e2799e36.0 deleted file mode 100644 index dc1f859..0000000 --- a/src/cobalt/content/ssl/certs/e2799e36.0 +++ /dev/null
@@ -1,24 +0,0 @@ ------BEGIN CERTIFICATE----- -MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB -mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT -MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ -BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg -MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 -BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz -+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm -hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn -5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W -JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL -DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC -huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw -HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB -AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB -zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN -kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD -AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH -SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G -spki4cErx5z481+oghLrGREt ------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/e35234b1.0 b/src/cobalt/content/ssl/certs/e35234b1.0 new file mode 100644 index 0000000..fa7fa74 --- /dev/null +++ b/src/cobalt/content/ssl/certs/e35234b1.0
@@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/e868b802.0 b/src/cobalt/content/ssl/certs/e868b802.0 new file mode 100644 index 0000000..b6f59c2 --- /dev/null +++ b/src/cobalt/content/ssl/certs/e868b802.0
@@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNV +BAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRk +LjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJv +b3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZaFw00MjA4MjIxMjA3MDZaMHExCzAJ +BgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMg +THRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25v +IFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtv +xie+RJCxs1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+H +Wyx7xf58etqjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBSHERUI0arBeAyxr87GyZDvvzAEwDAfBgNVHSMEGDAWgBSHERUI0arB +eAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEAtVfd14pVCzbhhkT61Nlo +jbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxOsvxyqltZ ++efcMQ== +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/ecccd8db.0 b/src/cobalt/content/ssl/certs/ecccd8db.0 new file mode 100644 index 0000000..42924b0 --- /dev/null +++ b/src/cobalt/content/ssl/certs/ecccd8db.0
@@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQsw +CQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2Vh +cmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9v +dCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoXDTQ1MDIxMzExMDEwOVowbDELMAkG +A1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj +aCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJvb3Qg +Q0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7 +KKrxcm1lAEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9Y +STHMmE5gEYd103KUkE+bECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQD +AgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAircJRQO9gcS3ujwLEXQNw +SaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/QwCZ61IygN +nxS2PFOiTAZpffpskcYqSUXm7LcT4Tps +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/f249de83.0 b/src/cobalt/content/ssl/certs/f249de83.0 new file mode 100644 index 0000000..85da765 --- /dev/null +++ b/src/cobalt/content/ssl/certs/f249de83.0
@@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw +CQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x +ITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1 +c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx +OTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI +SWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +ALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn +swuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu +7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8 +1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW +80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP +JqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l +RtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw +hI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10 +coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc +BW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n +twiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud +DwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W +0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe +uyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q +lG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB +aCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE +sLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT +MaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe +qu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh +VicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8 +h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9 +EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK +yeC2nOnOcXHebD8WpHk= +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/fa5da96b.0 b/src/cobalt/content/ssl/certs/fa5da96b.0 new file mode 100644 index 0000000..c80b4e8 --- /dev/null +++ b/src/cobalt/content/ssl/certs/fa5da96b.0
@@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkG +A1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkw +FwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYx +MDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9u +aXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMIICIjANBgkq +hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWiD59b +RatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9Z +YybNpyrOVPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3 +QWPKzv9pj2gOlTblzLmMCcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPw +yJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCmfecqQjuCgGOlYx8ZzHyyZqjC0203b+J+ +BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKAA1GqtH6qRNdDYfOiaxaJ +SaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9ORJitHHmkH +r96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj0 +4KlGDfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9Me +dKZssCz3AwyIDMvUclOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIw +q7ejMZdnrY8XD2zHc+0klGvIg5rQmjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2 +nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1UdIwQYMBaAFNwu +H9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA +VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJC +XtzoRlgHNQIw4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd +6IwPS3BD0IL/qMy/pJTAvoe9iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf ++I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS8cE54+X1+NZK3TTN+2/BT+MAi1bi +kvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2HcqtbepBEX4tdJP7 +wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxSvTOB +TI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6C +MUO+1918oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn +4rnvyOL2NSl6dPrFf4IFYqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+I +aFvowdlxfv1k7/9nR4hYJS8+hge9+6jlgqispdNpQ80xiEmEU5LAsTkbOYMBMMTy +qfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/fd64f3fc.0 b/src/cobalt/content/ssl/certs/fd64f3fc.0 new file mode 100644 index 0000000..58c5b54 --- /dev/null +++ b/src/cobalt/content/ssl/certs/fd64f3fc.0
@@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQEL +BQAwYTELMAkGA1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUg +Q2VydGlmaWNhdGlvbiBFbGVjdHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJv +b3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQwNDI2MDg1NzU2WjBhMQswCQYDVQQG +EwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBDZXJ0aWZpY2F0aW9u +IEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZ +n56eY+hz2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd +2JQDoOw05TDENX37Jk0bbjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgF +VwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZ +GoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAdgjH8KcwAWJeRTIAAHDOF +li/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViWVSHbhlnU +r8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2 +eY8fTpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIb +MlEsPvLfe/ZdeikZjuXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISg +jwBUFfyRbVinljvrS5YnzWuioYasDXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB +7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwSVXAkPcvCFDVDXSdOvsC9qnyW +5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI04Y+oXNZtPdE +ITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0 +90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+z +xiD2BkewhpMl0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYu +QEkHDVneixCwSQXi/5E/S7fdAo74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4 +FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRYYdZ2vyJ/0Adqp2RT8JeNnYA/u8EH +22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJpadbGNjHh/PqAulxP +xOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65xxBzn +dFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5 +Xc0yGYuPjCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7b +nV2UqL1g52KAdoGDDIzMMEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQ +CvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9zZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZH +u/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3rAZ3r2OvEhJn7wAzMMujj +d9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= +-----END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/feffd413.0 b/src/cobalt/content/ssl/certs/feffd413.0 new file mode 100644 index 0000000..d9e601c --- /dev/null +++ b/src/cobalt/content/ssl/certs/feffd413.0
@@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx +CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD +ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw +MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex +HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq +R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd +yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ +7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8 ++RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= +-----END CERTIFICATE-----
diff --git a/src/cobalt/extension/platform_service.h b/src/cobalt/extension/platform_service.h index 1d85cc9..4b66e86 100644 --- a/src/cobalt/extension/platform_service.h +++ b/src/cobalt/extension/platform_service.h
@@ -42,7 +42,7 @@ // When a client receives a message from a service, the service will be passed // in as the |context| here, with |data|, which has length |length|. -typedef void (*ReceiveMessageCallback)(void* context, void* data, +typedef void (*ReceiveMessageCallback)(void* context, const void* data, uint64_t length); typedef struct CobaltExtensionPlatformServiceApi {
diff --git a/src/cobalt/extension/updater_notification.h b/src/cobalt/extension/updater_notification.h index ce301dc..906cafc 100644 --- a/src/cobalt/extension/updater_notification.h +++ b/src/cobalt/extension/updater_notification.h
@@ -31,9 +31,15 @@ kCobaltExtensionUpdaterNotificationStateDownloading = 3, kCobaltExtensionUpdaterNotificationStateDownloaded = 4, kCobaltExtensionUpdaterNotificationStateInstalling = 5, +#if SB_API_VERSION > 13 + kCobaltExtensionUpdaterNotificationStateUpdated = 6, + kCobaltExtensionUpdaterNotificationStateUpToDate = 7, + kCobaltExtensionUpdaterNotificationStateUpdateFailed = 8, +#else kCobaltExtensionUpdaterNotificationStatekUpdated = 6, kCobaltExtensionUpdaterNotificationStatekUpToDate = 7, kCobaltExtensionUpdaterNotificationStatekUpdateFailed = 8, +#endif } CobaltExtensionUpdaterNotificationState; typedef struct CobaltExtensionUpdaterNotificationApi {
diff --git a/src/cobalt/h5vcc/h5vcc_platform_service.cc b/src/cobalt/h5vcc/h5vcc_platform_service.cc index 2ee9d73..f20b5ca 100644 --- a/src/cobalt/h5vcc/h5vcc_platform_service.cc +++ b/src/cobalt/h5vcc/h5vcc_platform_service.cc
@@ -14,6 +14,9 @@ #include "cobalt/h5vcc/h5vcc_platform_service.h" +#include <utility> +#include <vector> + #include "cobalt/base/polymorphic_downcast.h" #include "cobalt/dom/dom_settings.h" #include "starboard/common/string.h" @@ -129,17 +132,23 @@ } // static -void H5vccPlatformService::Receive(void* context, void* data, uint64_t length) { +void H5vccPlatformService::Receive(void* context, const void* data, + uint64_t length) { DCHECK(context) << "Platform should not call Receive with NULL context"; - static_cast<H5vccPlatformService*>(context)->ReceiveInternal(data, length); + // Make a copy of the data before potentially crossing thread boundaries, + // since we don't have any guarantee of the lifetime of the given data. + const uint8_t* input_data = static_cast<const uint8_t*>(data); + std::vector<uint8_t> internal_data(input_data, input_data + length); + static_cast<H5vccPlatformService*>(context)->ReceiveInternal( + std::move(internal_data)); } -void H5vccPlatformService::ReceiveInternal(void* data, uint64_t length) { +void H5vccPlatformService::ReceiveInternal(std::vector<uint8_t> data) { // ReceiveInternal may be called by another thread. if (!main_message_loop_->BelongsToCurrentThread()) { main_message_loop_->PostTask( FROM_HERE, base::Bind(&H5vccPlatformService::ReceiveInternal, - weak_this_, data, length)); + weak_this_, std::move(data))); return; } DCHECK(main_message_loop_->BelongsToCurrentThread()); @@ -148,10 +157,11 @@ return; } script::Handle<script::ArrayBuffer> data_array_buffer; - if (length) { - data_array_buffer = script::ArrayBuffer::New(environment_, data, length); - } else { + if (data.empty()) { data_array_buffer = script::ArrayBuffer::New(environment_, 0); + } else { + data_array_buffer = + script::ArrayBuffer::New(environment_, data.data(), data.size()); } const scoped_refptr<H5vccPlatformService>& service(this);
diff --git a/src/cobalt/h5vcc/h5vcc_platform_service.h b/src/cobalt/h5vcc/h5vcc_platform_service.h index 1a86286..62ac3e1 100644 --- a/src/cobalt/h5vcc/h5vcc_platform_service.h +++ b/src/cobalt/h5vcc/h5vcc_platform_service.h
@@ -17,6 +17,7 @@ #include <map> #include <string> +#include <vector> #include "base/message_loop/message_loop.h" #include "base/optional.h" @@ -65,9 +66,9 @@ private: static constexpr size_t kMaxNameLength = 1024; - void ReceiveInternal(void* data, uint64_t length); + void ReceiveInternal(std::vector<uint8_t> data); - static void Receive(void* context, void* data, uint64_t length); + static void Receive(void* context, const void* data, uint64_t length); bool IsOpen();
diff --git a/src/cobalt/media/decoder_buffer_allocator.cc b/src/cobalt/media/decoder_buffer_allocator.cc index 9515da1..76ba23c 100644 --- a/src/cobalt/media/decoder_buffer_allocator.cc +++ b/src/cobalt/media/decoder_buffer_allocator.cc
@@ -60,13 +60,8 @@ // We cannot call SbMediaGetMaxBufferCapacity because |video_codec_| is not // set yet. Use 0 (unbounded) until |video_codec_| is updated in // UpdateVideoConfig(). - int max_capacity = 0; - reuse_allocator_.reset(new nb::BidirectionalFitReuseAllocator( - &fallback_allocator_, initial_capacity_, kSmallAllocationThreshold, - allocation_unit_, max_capacity)); - DLOG(INFO) << "Allocated " << initial_capacity_ - << " bytes for media buffer pool as its initial buffer, with max" - << " capacity set to " << max_capacity; + starboard::ScopedLock scoped_lock(mutex_); + CreateReuseAllocator(0); } DecoderBufferAllocator::~DecoderBufferAllocator() { @@ -84,6 +79,36 @@ } } +void DecoderBufferAllocator::Suspend() { + if (!using_memory_pool_ || is_memory_pool_allocated_on_demand_) { + return; + } + + TRACK_MEMORY_SCOPE("Media"); + + starboard::ScopedLock scoped_lock(mutex_); + + if (reuse_allocator_ && reuse_allocator_->GetAllocated() == 0) { + DLOG(INFO) << "Freed " << reuse_allocator_->GetCapacity() + << " bytes of media buffer pool `on suspend`."; + reuse_allocator_.reset(); + } +} + +void DecoderBufferAllocator::Resume() { + if (!using_memory_pool_ || is_memory_pool_allocated_on_demand_) { + return; + } + + TRACK_MEMORY_SCOPE("Media"); + + starboard::ScopedLock scoped_lock(mutex_); + + if (!reuse_allocator_) { + CreateReuseAllocator(0); + } +} + DecoderBuffer::Allocator::Allocations DecoderBufferAllocator::Allocate( size_t size, size_t alignment, intptr_t context) { TRACK_MEMORY_SCOPE("Media"); @@ -106,12 +131,7 @@ max_capacity = SbMediaGetMaxBufferCapacity( video_codec_, resolution_width_, resolution_height_, bits_per_pixel_); } - reuse_allocator_.reset(new nb::BidirectionalFitReuseAllocator( - &fallback_allocator_, initial_capacity_, kSmallAllocationThreshold, - allocation_unit_, max_capacity)); - DLOG(INFO) << "Allocated " << initial_capacity_ - << " bytes for media buffer pool, with max capacity set to " - << max_capacity; + CreateReuseAllocator(max_capacity); } void* p = reuse_allocator_->Allocate(size, alignment); @@ -217,6 +237,17 @@ resolution_height_, bits_per_pixel_); } +void DecoderBufferAllocator::CreateReuseAllocator(int max_capacity) { + mutex_.DCheckAcquired(); + + reuse_allocator_.reset(new nb::BidirectionalFitReuseAllocator( + &fallback_allocator_, initial_capacity_, kSmallAllocationThreshold, + allocation_unit_, max_capacity)); + DLOG(INFO) << "Allocated " << initial_capacity_ + << " bytes for media buffer pool, with max capacity set to " + << max_capacity; +} + bool DecoderBufferAllocator::UpdateAllocationRecord() const { #if !defined(COBALT_BUILD_TYPE_GOLD) // This code is not quite multi-thread safe but is safe enough for tracking
diff --git a/src/cobalt/media/decoder_buffer_allocator.h b/src/cobalt/media/decoder_buffer_allocator.h index e78e6af..67e5352 100644 --- a/src/cobalt/media/decoder_buffer_allocator.h +++ b/src/cobalt/media/decoder_buffer_allocator.h
@@ -37,6 +37,9 @@ DecoderBufferAllocator(); ~DecoderBufferAllocator() override; + void Suspend(); + void Resume(); + Allocations Allocate(size_t size, size_t alignment, intptr_t context) override; void Free(Allocations allocations) override; @@ -46,6 +49,8 @@ size_t GetMaximumMemoryCapacity() const override; private: + void CreateReuseAllocator(int max_capacity); + // Update the Allocation record, and return false if allocation exceeds the // max buffer capacity, or true otherwise. bool UpdateAllocationRecord() const;
diff --git a/src/cobalt/media/media_module.cc b/src/cobalt/media/media_module.cc index 3f6671d..8d4e195 100644 --- a/src/cobalt/media/media_module.cc +++ b/src/cobalt/media/media_module.cc
@@ -203,6 +203,8 @@ } } + decoder_buffer_allocator_.Suspend(); + resource_provider_ = NULL; } @@ -216,6 +218,8 @@ window = system_window_->GetSbWindow(); } + decoder_buffer_allocator_.Resume(); + for (Players::iterator iter = players_.begin(); iter != players_.end(); ++iter) { DCHECK(!iter->second);
diff --git a/src/cobalt/renderer/rasterizer/skia/skia/src/ports/SkFontStyleSet_cobalt.cc b/src/cobalt/renderer/rasterizer/skia/skia/src/ports/SkFontStyleSet_cobalt.cc index 6862a5e..8e670b6 100644 --- a/src/cobalt/renderer/rasterizer/skia/skia/src/ports/SkFontStyleSet_cobalt.cc +++ b/src/cobalt/renderer/rasterizer/skia/skia/src/ports/SkFontStyleSet_cobalt.cc
@@ -80,8 +80,7 @@ manager_owned_mutex_(manager_owned_mutex), is_fallback_family_(family_info.is_fallback_family), language_(family_info.language), - page_ranges_(family_info.page_ranges), - is_character_map_generated_(!is_fallback_family_) { + page_ranges_(family_info.page_ranges) { TRACE_EVENT0("cobalt::renderer", "SkFontStyleSet_Cobalt::SkFontStyleSet_Cobalt()"); DCHECK(manager_owned_mutex_); @@ -90,7 +89,6 @@ return; } - character_map_ = base::MakeRefCounted<font_character_map::CharacterMap>(); disable_character_map_ = family_info.disable_caching; family_name_ = family_info.names[0]; @@ -232,7 +230,7 @@ SkFontStyleSetEntry_Cobalt* style = styles_[style_index].get(); // If the typeface doesn't already exist, then attempt to create it. if (style->typeface == NULL) { - CreateStreamProviderTypeface(style); + CreateStreamProviderTypeface(style, style_index); // If the creation attempt failed and the typeface is still NULL, then // remove the entry from the set's styles. if (style->typeface == NULL) { @@ -286,7 +284,8 @@ // The character map is lazily generated. Generate it now if it isn't already // generated. - if (!is_character_map_generated_) { + int style_index = GetClosestStyleIndex(style); + if (!character_maps_[style_index]) { TRACE_EVENT0("cobalt::renderer", "SkFontStyleSet_Cobalt::ContainsCharacter() and " "!is_character_map_generated_"); @@ -294,7 +293,6 @@ // it will be removed from the set and, as long as font styles remain in the // set, the logic will be attempted again. while (styles_.count() > 0) { - int style_index = GetClosestStyleIndex(style); SkFontStyleSetEntry_Cobalt* closest_style = styles_[style_index].get(); SkFileMemoryChunkStreamProvider* stream_provider = @@ -310,9 +308,11 @@ std::unique_ptr<SkFileMemoryChunkStream> stream( stream_provider->OpenStream()); - if (GenerateStyleFaceInfo(closest_style, stream.get())) { - if (CharacterMapContainsCharacter(character)) { - CreateStreamProviderTypeface(closest_style, stream_provider); + if (GenerateStyleFaceInfo(closest_style, stream.get(), style_index)) { + if (CharacterMapContainsCharacter(character, + character_maps_[style_index])) { + CreateStreamProviderTypeface(closest_style, style_index, + stream_provider); return true; } else { // If a typeface was not created, destroy the stream and purge any @@ -329,27 +329,34 @@ styles_.pop_back(); } - is_character_map_generated_ = true; } - return CharacterMapContainsCharacter(character); + DCHECK(character_maps_[style_index]); + return CharacterMapContainsCharacter(character, character_maps_[style_index]); } -bool SkFontStyleSet_Cobalt::CharacterMapContainsCharacter(SkUnichar character) { - font_character_map::Character c = character_map_->Find(character); +bool SkFontStyleSet_Cobalt::CharacterMapContainsCharacter( + SkUnichar character, + const scoped_refptr<font_character_map::CharacterMap>& map) { + font_character_map::Character c = map->Find(character); return c.is_set && c.id > 0; } bool SkFontStyleSet_Cobalt::GenerateStyleFaceInfo( - SkFontStyleSetEntry_Cobalt* style, SkStreamAsset* stream) { + SkFontStyleSetEntry_Cobalt* style, SkStreamAsset* stream, int style_index) { if (style->is_face_info_generated) { return true; } // Providing a pointer to the character map will cause it to be generated // during ScanFont. Only provide it if it hasn't already been generated. - font_character_map::CharacterMap* character_map = - !is_character_map_generated_ ? character_map_.get() : NULL; + + font_character_map::CharacterMap* character_map = NULL; + if (!character_maps_[style_index]) { + character_maps_[style_index] = + base::MakeRefCounted<font_character_map::CharacterMap>(); + character_map = character_maps_[style_index].get(); + } if (!sk_freetype_cobalt::ScanFont( stream, style->face_index, &style->face_name, &style->font_style, @@ -358,7 +365,6 @@ } style->is_face_info_generated = true; - is_character_map_generated_ = true; return true; } @@ -376,7 +382,7 @@ } void SkFontStyleSet_Cobalt::CreateStreamProviderTypeface( - SkFontStyleSetEntry_Cobalt* style_entry, + SkFontStyleSetEntry_Cobalt* style_entry, int style_index, SkFileMemoryChunkStreamProvider* stream_provider /*=NULL*/) { TRACE_EVENT0("cobalt::renderer", "SkFontStyleSet_Cobalt::CreateStreamProviderTypeface()"); @@ -388,13 +394,13 @@ std::unique_ptr<SkFileMemoryChunkStream> stream( stream_provider->OpenStream()); - if (GenerateStyleFaceInfo(style_entry, stream.get())) { + if (GenerateStyleFaceInfo(style_entry, stream.get(), style_index)) { LOG(INFO) << "Scanned font from file: " << style_entry->face_name.c_str() << "(" << style_entry->font_style.weight() << ", " << style_entry->font_style.width() << ", " << style_entry->font_style.slant() << ")"; scoped_refptr<font_character_map::CharacterMap> map = - disable_character_map_ ? NULL : character_map_; + disable_character_map_ ? NULL : character_maps_[style_index]; style_entry->typeface.reset(new SkTypeface_CobaltStreamProvider( stream_provider, style_entry->face_index, style_entry->font_style, style_entry->face_is_fixed_pitch, family_name_,
diff --git a/src/cobalt/renderer/rasterizer/skia/skia/src/ports/SkFontStyleSet_cobalt.h b/src/cobalt/renderer/rasterizer/skia/skia/src/ports/SkFontStyleSet_cobalt.h index 774a90f..d7ea193 100644 --- a/src/cobalt/renderer/rasterizer/skia/skia/src/ports/SkFontStyleSet_cobalt.h +++ b/src/cobalt/renderer/rasterizer/skia/skia/src/ports/SkFontStyleSet_cobalt.h
@@ -113,14 +113,16 @@ bool ContainsTypeface(const SkTypeface* typeface); bool ContainsCharacter(const SkFontStyle& style, SkUnichar character); - bool CharacterMapContainsCharacter(SkUnichar character); + bool CharacterMapContainsCharacter( + SkUnichar character, + const scoped_refptr<font_character_map::CharacterMap>& map); bool GenerateStyleFaceInfo(SkFontStyleSetEntry_Cobalt* style, - SkStreamAsset* stream); + SkStreamAsset* stream, int style_index); int GetClosestStyleIndex(const SkFontStyle& pattern); void CreateStreamProviderTypeface( - SkFontStyleSetEntry_Cobalt* style, + SkFontStyleSetEntry_Cobalt* style, int style_index, SkFileMemoryChunkStreamProvider* stream_provider = NULL); // Purge typefaces that are only referenced internally. @@ -139,8 +141,10 @@ bool disable_character_map_; // NOTE: The following characters require locking when being accessed. - bool is_character_map_generated_; - scoped_refptr<font_character_map::CharacterMap> character_map_; + // This map will store one map per style, and can be indexed with the + // style_index of each style. + std::unordered_map<int, scoped_refptr<font_character_map::CharacterMap>> + character_maps_; SkTArray<sk_sp<SkFontStyleSetEntry_Cobalt>, true> styles_;
diff --git a/src/cobalt/site/docs/gen/cobalt/doc/deep_links.md b/src/cobalt/site/docs/gen/cobalt/doc/deep_links.md new file mode 100644 index 0000000..c73491f --- /dev/null +++ b/src/cobalt/site/docs/gen/cobalt/doc/deep_links.md
@@ -0,0 +1,139 @@ +--- +layout: doc +title: "Cobalt Deep Links" +--- +# Cobalt Deep Links + +- [Cobalt Deep Links](#cobalt-deep-links) + - [Deep Links](#deep-links) + - [Web API](#web-api) + - [Platform (Starboard) API](#platform-starboard-api) + - [Behavior details](#behavior-details) +## Deep Links + +For Cobalt, a deep link is a string that can be sent from the platform to an +application running in Cobalt. Generally, it can be used as any string value +signal, but typically deep links are used to specify a view, page, or content +to be shown by the application. While these strings typically are URI formatted +values, when deep link strings are received by Cobalt they are forwarded to the +running application without separate validation or modification. + +Applications should interpret received deep links as superseding previous deep +links. Deep links received by Cobalt in rapid succession are not guaranteed to +all be delivered to the application. On a busy or slow device, intermediate +deep links can be dropped before they are delivered to the application. + +The startup URL passed to Cobalt determines which application Cobalt will load. +Web deep links intended as a signal to the application should not be sent to +Cobalt as a startup URL because that would result in a different application +being loaded. Since a deep link is a string that may originate from an +untrusted source on the device, it should not be used directly to determine +what application Cobalt will load. + +Deep links are made visible to applications by Cobalt with a Web API that is +separate from the Location interface web API. Cobalt will never directly +navigate as a result of a received deep link, even if the link matches the +current application location, for example with a query or fragment identifier. +Applications that wish to navigate as a result of incoming deep links should do +so explicitly when they are received. + +## Web API + +The deep link Web API consists of two parts: The +`h5vcc.runtime.initialDeepLink` property and `h5vcc.runtime.onDeepLink` event +target. + +Applications can read the value of `initialDeepLink`, and/or they can use +`h5vcc.runtime.onDeepLink.addListener(foo)` to register callback functions to +be called when deep links are received. + +A deep link is considered 'consumed' when it is read from `initialDeepLink`, or +when it is reported to a callback function registered to `onDeepLink`. + +The IDL for this Cobalt specific interface can be found in cobalt/h5vcc, and is +repeated below. + +``` +interface H5vccRuntime { + readonly attribute DOMString initialDeepLink; + readonly attribute H5vccDeepLinkEventTarget onDeepLink; +} +interface H5vccDeepLinkEventTarget { + void addListener(H5vccDeepLinkEventCallback callback); +}; +callback H5vccDeepLinkEventCallback = void(DOMString link); +interface H5vcc { + readonly attribute H5vccRuntime runtime; +} +``` + +## Platform (Starboard) API + +Deep links can be passed into Cobalt in two ways: + * As the 'Startup Link': + * When Cobalt is first started, a deep link can be passed in with the + initial event (either `kSbEventTypePreload` or `kSbEventTypeStart`). This + can be achieved by calling `Application::SetStartLink` or by using and + overload of `Application::Run` that has the 'link_data' parameter to start + Cobalt. The value passed in there is then passed into Cobalt via the + 'link' member of the SbEventStartData event parameter, constructed in + `Application::CreateInitialEvent`. + * As a 'Deep Link Event': + * At any time while Cobalt is running, it can be sent as the string value + passed with a kSbEventTypeLink event. The `Application::Link` method can + be called to inject such an event. + +On many platforms, the 'Startup Link' value can also be set with the `--link` +command-line parameter (See `kLinkSwitch` in `Application::Run`). + +The `Application` class mentioned above can be found at +`starboard/shared/starboard/application.cc`. + +## Behavior details + +Both the 'Startup Link' and 'Deep Link Event' values are treated the same by +Cobalt: A 'Startup Link' is treated as a 'Deep Link Event' that was received +immediately at startup. For the application, it is transparent whether a deep +link was received as a 'Startup Link' or arrived from a 'Deep Link Event'. Deep +link values of either type are made available as soon as they are known, with +the same Web API interface. + +The most recently received deep link is remembered by Cobalt until it is +consumed by the application. This includes deep links received by Cobalt while +the application is still being fetched and loaded, including during page +redirects or reloads, and after the application is loaded, if it has not +consumed the deep link. + +Deep link values are considered consumed when the application either reads them +from the `initialDeepLink` attribute or receives them in a callback to an +`onDeepLink` listener. An application can use either or both reads of +`initialDeepLink` or `onDeepLink` listeners to consume the most recently +received deep link value. + +Calls to `onDeepLink` listeners are done as soon as deep links are available. +Specifically, they can be called before `document.onreadystatechange`, +`document.onload` & `window.onload` event handlers are called. As a result, +deep link values can be consumed in synchronously loaded JavaScript that +executes before the `document.onload` event. + +Until the first `onDeepLink` listener is added, the `initialDeepLink` property +will return the most recently received deep link value. When an `onDeepLink` +listener is added, the `initialDeepLink` value will no longer be updated, even +when additional deep link events are received subsequently. + +An application can decide to never register an `onDeepLink` listener and poll +the `initialDeepLink` value instead. This will then always return the value of +the most recently received deep link. + +An application can decide to register an `onDeepLink` listener without reading +the `initialDeepLink` value. Upon registering, the most recently received deep +link, which may be the 'Startup Link' or from a 'Deep Link Event', will be +reported to the listener. + +If a deep link value is consumed, it will not be made available again if the +page is navigated (e.g. redirected or reloaded). When a deep link is consumed +before a page redirect or reload, the deep link will not be repeated later. + +If a deep link value is not consumed, it will be made available again if the +page is navigated (e.g. redirected or reloaded). A deep link will not be lost +if a page redirect or reload is done without consuming it.
diff --git a/src/cobalt/site/docs/gen/cobalt/doc/memory_tuning.md b/src/cobalt/site/docs/gen/cobalt/doc/memory_tuning.md index a053b40..44a94b6 100644 --- a/src/cobalt/site/docs/gen/cobalt/doc/memory_tuning.md +++ b/src/cobalt/site/docs/gen/cobalt/doc/memory_tuning.md
@@ -11,12 +11,6 @@ the memory allocations that will be assigned to the various subsystems in cobalt. -As an example, at the cost of performance you can reduce CPU memory on your -platform by 5MB and GPU memory usage on your platform by 10MB using these -command line flags: - -`cobalt --reduce_cpu_memory_by=5MB --reduce_gpu_memory_by=10MB` - Some settings will be "fixed" while others will be "flexible" so that their memory consumption will scale down for memory constrained platforms. @@ -24,8 +18,7 @@ **IMPORTANT** *Setting `--max_cobalt_cpu_usage` and `--max_cobalt_gpu_usage` on the -command line is a beta feature. When reducing memory, please use -`--reduce_cpu_memory_by` and `--reduce_gpu_memory_by`.* +command line is a beta feature.* ### Memory Settings Table ### @@ -33,33 +26,16 @@ ~~~ AutoMem: - - SETTING NAME VALUE TYPE SOURCE - ________________________________________________________________________________ -| | | | | | -| image_cache_size_in_bytes | 33554432 | 32.0 MB | GPU | AutoSet | -|______________________________________|_____________|__________|______|_________| -| | | | | | -| javascript_gc_threshold_in_bytes | 8388608 | 8.0 MB | CPU | Build | -|______________________________________|_____________|__________|______|_________| -| | | | | | -| misc_cobalt_cpu_size_in_bytes | 124780544 | 119.0 MB | CPU | AutoSet | -|______________________________________|_____________|__________|______|_________| -| | | | | | -| misc_cobalt_gpu_size_in_bytes | 25165824 | 24.0 MB | GPU | AutoSet | -|______________________________________|_____________|__________|______|_________| -| | | | | | -| remote_typeface_cache_size_in_bytes | 4194304 | 4.0 MB | CPU | Build | -|______________________________________|_____________|__________|______|_________| -| | | | | | -| skia_atlas_texture_dimensions | 4096x8192x2 | 64.0 MB | GPU | Build | -|______________________________________|_____________|__________|______|_________| -| | | | | | -| skia_cache_size_in_bytes | 4194304 | 4.0 MB | GPU | Build | -|______________________________________|_____________|__________|______|_________| -| | | | | | -| software_surface_cache_size_in_bytes | N/A | N/A | N/A | N/A | -|______________________________________|_____________|__________|______|_________| + _______________________________________________________________________________ +|SETTING NAME |VALUE | |TYPE |SOURCE | +| encoded_image_cache_size_in_bytes | 1048576 | 1.0 MB | CPU | Build | +| image_cache_size_in_bytes | 10485760 | 10.0 MB | GPU | AutoSet | +| offscreen_target_cache_size_in_bytes | 2097152 | 2.0 MB | GPU | AutoSet | +| remote_typeface_cache_size_in_bytes | 4194304 | 4.0 MB | CPU | Build | +| skia_atlas_texture_dimensions | 2048x2048x2 | 8.0 MB | GPU | AutoSet | +| skia_cache_size_in_bytes | 4194304 | 4.0 MB | GPU | Build | +| software_surface_cache_size_in_bytes | N/A | N/A | N/A | N/A | +|______________________________________|_____________|_________|______|_________| ~~~ This table shows the breakdown of how much memory is being allocated to each @@ -105,8 +81,6 @@ * `AutoSet (Constrained)` * This value was AutoSet to a default value, but then was reduced in response to `max_cobalt_cpu_usage` or `max_cobalt_gpu_usage being` set too low. - This will also trigger in response to `reduce_cpu_memory_by` or - `reduce_cpu_memory_by` being set. See "Memory Scaling" section below. ### Maximum Memory Table ### @@ -187,18 +161,6 @@ **TOTAL** value. The memory settings will be scaled down until their consumption is less than or equal the maximum allowed value **TOTAL**. See also **SETTINGS CONSUME**. -Another way to scale down the memory size is by passing the flags -`--reduce_cpu_memory_by=XX` and `--reduce_gpu_memory_by=XX` which will: -1) Ignore the `--max_cobalt_cpu_usage` and `--max_cobalt_gpu_usage`. -2) Use the current memory consumption of the settings and then reduce that by - the amount. - -For example, if cobalt uses 160MB of CPU memory then passing in -`--reduce_cpu_memory_by=10MB` to the command line will attempt to reduce the -footprint of cobalt by 10MB to 150MB. Note that this reduction is an an attempt, -and it's possible this attempt will fail if the memory reduction is too aggressive -or if memory settings have been explicitly set via the build or command line. - *Forcing a Memory Setting to be flexible* If a memory setting is set via a build setting, then it's possible to make it @@ -269,16 +231,6 @@ * Note that `SbSystemGetTotalGPUMemory()` is optional. If no value exists for `max_cobalt_gpu_usage` in build/commandline/starboard settings then no GPU memory checking is performed. - * `reduce_cpu_memory_by` - * This setting will trigger CPU memory consumption to be reduced by the amount - specified. *This overrides the memory scaling behavior of `max_cobalt_cpu_usage`*. - But this will not affect memory checking of `max_cobalt_cpu_usage` otherwise. - * Set via command line or else the platform gyp build file. - * `reduce_cpu_memory_by` - * This setting will trigger GPU memory consumption to be reduced by the amount - specified. *This overrides the memory scaling behavior of `max_cobalt_gpu_usage`*. - But this will not affect memory checking of `max_cobalt_gpu_usage` otherwise. - * Set via command line or else the platform gyp build file. #### Memory Setting API #### @@ -286,10 +238,6 @@ * See documentation *Image cache capacity* in `performance_tuning.md` for what this setting does. * Set via command line, or else build system, or else automatically by Cobalt. - * `javascript_gc_threshold_in_bytes` - * See documentation *Garbage collection trigger threshold* in `performance_tuning.md` - for what this setting does. - * Set via command line, or else build system, or else automatically by Cobalt. * `remote_typeface_cache_size_in_bytes` * Determines the capacity of the remote typefaces cache which manages all typefaces downloaded from a web page.
diff --git a/src/cobalt/updater/configurator.cc b/src/cobalt/updater/configurator.cc index d26d9a4..4c3b6cf 100644 --- a/src/cobalt/updater/configurator.cc +++ b/src/cobalt/updater/configurator.cc
@@ -29,14 +29,7 @@ // Default time constants. const int kDelayOneMinute = 60; const int kDelayOneHour = kDelayOneMinute * 60; - -#if defined(COBALT_BUILD_TYPE_DEBUG) || defined(COBALT_BUILD_TYPE_DEVEL) -const char kDefaultUpdaterChannel[] = "dev"; -#elif defined(COBALT_BUILD_TYPE_QA) -const char kDefaultUpdaterChannel[] = "qa"; -#elif defined(COBALT_BUILD_TYPE_GOLD) const char kDefaultUpdaterChannel[] = "prod"; -#endif std::string GetDeviceProperty(SbSystemPropertyId id) { const size_t kSystemPropertyMaxLength = 1024;
diff --git a/src/cobalt/updater/updater_module.cc b/src/cobalt/updater/updater_module.cc index 2cf09b5..e2e4001 100644 --- a/src/cobalt/updater/updater_module.cc +++ b/src/cobalt/updater/updater_module.cc
@@ -67,12 +67,21 @@ return kCobaltExtensionUpdaterNotificationStateDownloaded; case ComponentState::kUpdating: return kCobaltExtensionUpdaterNotificationStateInstalling; +#if SB_API_VERSION > 13 + case ComponentState::kUpdated: + return kCobaltExtensionUpdaterNotificationStateUpdated; + case ComponentState::kUpToDate: + return kCobaltExtensionUpdaterNotificationStateUpToDate; + case ComponentState::kUpdateError: + return kCobaltExtensionUpdaterNotificationStateUpdateFailed; +#else case ComponentState::kUpdated: return kCobaltExtensionUpdaterNotificationStatekUpdated; case ComponentState::kUpToDate: - return kCobaltExtensionUpdaterNotificationStatekUpdated; + return kCobaltExtensionUpdaterNotificationStatekUpToDate; case ComponentState::kUpdateError: return kCobaltExtensionUpdaterNotificationStatekUpdateFailed; +#endif default: return kCobaltExtensionUpdaterNotificationStateNone; }
diff --git a/src/components/update_client/component.cc b/src/components/update_client/component.cc index d9158fc..8b4fa5d 100644 --- a/src/components/update_client/component.cc +++ b/src/components/update_client/component.cc
@@ -333,6 +333,7 @@ #if defined(STARBOARD) void Component::Cancel() { DCHECK(thread_checker_.CalledOnValidThread()); + is_cancelled_ = true; state_->Cancel(); } #endif @@ -447,7 +448,16 @@ void Component::NotifyObservers(UpdateClient::Observer::Events event) const { DCHECK(thread_checker_.CalledOnValidThread()); + +#if defined(STARBOARD) + if (!is_cancelled_) { + update_context_.notify_observers_callback.Run(event, id_); + } else { + LOG(WARNING) << "Component::NotifyObservers: skip callback"; + } +#else update_context_.notify_observers_callback.Run(event, id_); +#endif } base::TimeDelta Component::GetUpdateDuration() const { @@ -1023,7 +1033,6 @@ const auto& update_context = component.update_context_; DCHECK(component.crx_component()); - component.NotifyObservers(Events::COMPONENT_UPDATE_READY); base::CreateSequencedTaskRunnerWithTraits(kTaskTraits) @@ -1043,6 +1052,7 @@ component.crx_component()->crx_format_requirement, base::BindOnce(&Component::StateUpdating::InstallComplete, base::Unretained(this)))); + } void Component::StateUpdating::InstallComplete(ErrorCategory error_category,
diff --git a/src/components/update_client/component.h b/src/components/update_client/component.h index 83b8a35..4944204 100644 --- a/src/components/update_client/component.h +++ b/src/components/update_client/component.h
@@ -133,6 +133,9 @@ std::vector<base::Value> GetEvents() const; private: +#if defined(STARBOARD) + bool is_cancelled_ = false; +#endif friend class MockPingManagerImpl; friend class UpdateCheckerTest;
diff --git a/src/components/update_client/update_engine.cc b/src/components/update_client/update_engine.cc index 9e39a0f..2dbfb0f 100644 --- a/src/components/update_client/update_engine.cc +++ b/src/components/update_client/update_engine.cc
@@ -200,6 +200,13 @@ return; } +#if defined(STARBOARD) + if (is_cancelled_) { + LOG(WARNING) << "UpdateEngine::ComponentCheckingForUpdatesStart cancelled"; + return; + } +#endif + base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(&UpdateEngine::DoUpdateCheck, base::Unretained(this), update_context)); @@ -379,8 +386,16 @@ next_update_delay); next_update_delay = base::TimeDelta(); - notify_observers_callback_.Run( +#if defined(STARBOARD) + if (!is_cancelled_) { + notify_observers_callback_.Run(UpdateClient::Observer::Events::COMPONENT_WAIT, id); + } else { + LOG(WARNING) << "UpdateEngine::HandleComponent skip NotifyObservers"; + } +#else + notify_observers_callback_.Run( UpdateClient::Observer::Events::COMPONENT_WAIT, id); +#endif return; } @@ -409,8 +424,18 @@ update_context->next_update_delay = component->GetUpdateDuration(); if (!component->events().empty()) { +#if defined(STARBOARD) + if (!is_cancelled_) { + ping_manager_->SendPing(*component, + base::BindOnce([](int, const std::string&) {})); + + } else { + LOG(WARNING) << "UpdateEngine::HandleComponentComplete skip SendPing"; + } +#else ping_manager_->SendPing(*component, base::BindOnce([](int, const std::string&) {})); +#endif } queue.pop(); @@ -475,7 +500,7 @@ void UpdateEngine::Cancel(const std::string& update_context_session_id, const std::vector<std::string>& crx_component_ids) { LOG(INFO) << "UpdateEngine::Cancel"; - + is_cancelled_ = true; if (ping_manager_.get()) { ping_manager_->Cancel(); }
diff --git a/src/components/update_client/update_engine.h b/src/components/update_client/update_engine.h index 1cd0ac9..1bf1cd7 100644 --- a/src/components/update_client/update_engine.h +++ b/src/components/update_client/update_engine.h
@@ -134,6 +134,9 @@ // update protocol. See the comments for X-Retry-After header. base::TimeTicks throttle_updates_until_; +#if defined(STARBOARD) + bool is_cancelled_ = false; +#endif DISALLOW_COPY_AND_ASSIGN(UpdateEngine); };
diff --git a/src/components/update_client/url_fetcher_downloader.cc b/src/components/update_client/url_fetcher_downloader.cc index b5c13cc..4536da6 100644 --- a/src/components/update_client/url_fetcher_downloader.cc +++ b/src/components/update_client/url_fetcher_downloader.cc
@@ -92,6 +92,11 @@ #if defined(STARBOARD) void UrlFetcherDownloader::ConfirmSlot(const GURL& url) { LOG(INFO) << "UrlFetcherDownloader::ConfirmSlot: url=" << url; + if (is_cancelled_) { + LOG(ERROR) << "UrlFetcherDownloader::ConfirmSlot: Download already cancelled"; + ReportDownloadFailure(url); + return; + } if (!cobalt_slot_management_.ConfirmSlot(download_dir_)) { ReportDownloadFailure(url, CrxDownloaderError::SLOT_UNAVAILABLE); return; @@ -104,6 +109,11 @@ void UrlFetcherDownloader::SelectSlot(const GURL& url) { LOG(INFO) << "UrlFetcherDownloader::SelectSlot: url=" << url; + if (is_cancelled_) { + LOG(ERROR) << "UrlFetcherDownloader::SelectSlot: Download already cancelled"; + ReportDownloadFailure(url); + return; + } if (!cobalt_slot_management_.SelectSlot(&download_dir_)) { ReportDownloadFailure(url, CrxDownloaderError::SLOT_UNAVAILABLE); return; @@ -125,7 +135,11 @@ #if defined(STARBOARD) LOG(INFO) << "UrlFetcherDownloader::DoStartDownload"; - + if (is_cancelled_) { + LOG(ERROR) << "UrlFetcherDownloader::DoStartDownload: Download already cancelled"; + ReportDownloadFailure(url); + return; + } const CobaltExtensionInstallationManagerApi* installation_api = static_cast<const CobaltExtensionInstallationManagerApi*>( SbSystemGetExtension(kCobaltExtensionInstallationManagerName)); @@ -155,6 +169,7 @@ void UrlFetcherDownloader::DoCancelDownload() { LOG(INFO) << "UrlFetcherDownloader::DoCancelDownload"; DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + is_cancelled_ = true; if (network_fetcher_.get()) { network_fetcher_->Cancel(); } @@ -208,6 +223,11 @@ #if defined(STARBOARD) LOG(INFO) << "UrlFetcherDownloader::StartURLFetch: url" << url << " download_dir=" << download_dir_; + if (is_cancelled_) { + LOG(ERROR) << "UrlFetcherDownloader::StartURLFetch: Download already cancelled"; + ReportDownloadFailure(url); + return; + } #endif if (download_dir_.empty()) {
diff --git a/src/components/update_client/url_fetcher_downloader.h b/src/components/update_client/url_fetcher_downloader.h index 3880efc..3adc4c2 100644 --- a/src/components/update_client/url_fetcher_downloader.h +++ b/src/components/update_client/url_fetcher_downloader.h
@@ -82,6 +82,7 @@ #if defined(STARBOARD) CobaltSlotManagement cobalt_slot_management_; scoped_refptr<Configurator> config_; + bool is_cancelled_ = false; #endif DISALLOW_COPY_AND_ASSIGN(UrlFetcherDownloader);
diff --git a/src/starboard/android/apk/app/src/main/java/dev/cobalt/coat/MediaPlaybackService.java b/src/starboard/android/apk/app/src/main/java/dev/cobalt/coat/MediaPlaybackService.java index 1b54143..e24faf6 100644 --- a/src/starboard/android/apk/app/src/main/java/dev/cobalt/coat/MediaPlaybackService.java +++ b/src/starboard/android/apk/app/src/main/java/dev/cobalt/coat/MediaPlaybackService.java
@@ -40,13 +40,14 @@ @Override public void onCreate() { - super.onCreate(); - Log.i(TAG, "Creating a Media playback foreground service."); if (getStarboardBridge() == null) { Log.e(TAG, "StarboardBridge already destroyed."); return; } + Log.i(TAG, "Creating a Media playback foreground service."); + super.onCreate(); getStarboardBridge().onServiceStart(this); + createNotificationChannel(); } @Override @@ -69,13 +70,12 @@ Log.e(TAG, "StarboardBridge already destroyed."); return; } + Log.i(TAG, "Destroying the Media playback service."); getStarboardBridge().onServiceDestroy(this); super.onDestroy(); - Log.i(TAG, "Destroying the Media playback service."); } public void startService() { - createChannel(); try { startForeground(NOTIFICATION_ID, buildNotification()); } catch (IllegalStateException e) { @@ -84,25 +84,15 @@ } public void stopService() { - // Do not remove notification here. - stopForeground(false); + // Let service itself handle notification deletion. + stopForeground(true); stopSelf(); - // Delete notification after foreground stopped. - deleteChannel(); - hideNotification(); } - private void hideNotification() { - Log.i(TAG, "Hiding notification after stopped the service"); - NotificationManager notificationManager = - (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); - notificationManager.cancel(NOTIFICATION_ID); - } - - private void createChannel() { + private void createNotificationChannel() { if (Build.VERSION.SDK_INT >= 26) { try { - createChannelInternalV26(); + createNotificationChannelInternalV26(); } catch (RemoteException e) { Log.e(TAG, "Failed to create Notification Channel.", e); } @@ -110,7 +100,7 @@ } @RequiresApi(26) - private void createChannelInternalV26() throws RemoteException { + private void createNotificationChannelInternalV26() throws RemoteException { NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); NotificationChannel channel = @@ -122,19 +112,6 @@ notificationManager.createNotificationChannel(channel); } - public void deleteChannel() { - if (Build.VERSION.SDK_INT >= 26) { - deleteChannelInternalV26(); - } - } - - @RequiresApi(26) - private void deleteChannelInternalV26() { - NotificationManager notificationManager = - (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); - notificationManager.deleteNotificationChannel(NOTIFICATION_CHANNEL_ID); - } - Notification buildNotification() { NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID)
diff --git a/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/CobaltMediaSession.java b/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/CobaltMediaSession.java index 4a95898..a310b15 100644 --- a/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/CobaltMediaSession.java +++ b/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/CobaltMediaSession.java
@@ -232,16 +232,20 @@ wakeLock(playbackState == PLAYBACK_STATE_PLAYING); audioFocus(playbackState == PLAYBACK_STATE_PLAYING); - boolean activating = true; - boolean deactivating = false; + boolean activating = playbackState != PLAYBACK_STATE_NONE; + boolean deactivating = playbackState == PLAYBACK_STATE_NONE; if (mediaSession != null) { - activating = playbackState != PLAYBACK_STATE_NONE && !mediaSession.isActive(); - deactivating = playbackState == PLAYBACK_STATE_NONE && mediaSession.isActive(); + activating = activating && !mediaSession.isActive(); + deactivating = deactivating && mediaSession.isActive(); } if (activating) { // Resuming or new playbacks land here. setMediaSession(); } + if (mediaSession == null) { + Log.i(TAG, "MediaSession already released"); + return; + } mediaSession.setActive(playbackState != PLAYBACK_STATE_NONE); if (lifecycleCallback != null) { lifecycleCallback.onMediaSessionLifecycle(
diff --git a/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/VideoFrameReleaseTimeHelper.java b/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/VideoFrameReleaseTimeHelper.java index 6afac46..622e92b 100644 --- a/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/VideoFrameReleaseTimeHelper.java +++ b/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/VideoFrameReleaseTimeHelper.java
@@ -35,12 +35,10 @@ import android.view.Choreographer; import android.view.Choreographer.FrameCallback; import android.view.Display; -import androidx.annotation.RequiresApi; import dev.cobalt.util.DisplayUtil; import dev.cobalt.util.UsedByNative; /** Makes a best effort to adjust frame release timestamps for a smoother visual result. */ -@RequiresApi(16) @SuppressWarnings("unused") @UsedByNative public final class VideoFrameReleaseTimeHelper {
diff --git a/src/starboard/android/shared/BUILD.gn b/src/starboard/android/shared/BUILD.gn index 3cf4157..dd4f76a 100644 --- a/src/starboard/android/shared/BUILD.gn +++ b/src/starboard/android/shared/BUILD.gn
@@ -223,7 +223,6 @@ "//starboard/shared/starboard/media/media_get_buffer_storage_type.cc", "//starboard/shared/starboard/media/media_get_progressive_buffer_budget.cc", "//starboard/shared/starboard/media/media_get_video_buffer_budget.cc", - "//starboard/shared/starboard/media/media_is_buffer_pool_allocate_on_demand.cc", "//starboard/shared/starboard/media/media_is_buffer_using_memory_pool.cc", "//starboard/shared/starboard/media/mime_type.cc", "//starboard/shared/starboard/media/mime_type.h", @@ -360,6 +359,7 @@ "media_get_initial_buffer_capacity.cc", "media_get_max_buffer_capacity.cc", "media_is_audio_supported.cc", + "media_is_buffer_pool_allocate_on_demand.cc", "media_is_video_supported.cc", "microphone_impl.cc", "network_status_impl.cc",
diff --git a/src/starboard/android/shared/audio_track_audio_sink_type.cc b/src/starboard/android/shared/audio_track_audio_sink_type.cc index 57e9aed..6af4aa6 100644 --- a/src/starboard/android/shared/audio_track_audio_sink_type.cc +++ b/src/starboard/android/shared/audio_track_audio_sink_type.cc
@@ -167,11 +167,7 @@ SB_LOG(INFO) << "AudioTrackAudioSink thread started."; int accumulated_written_frames = 0; - // TODO: |last_playback_head_changed_at| is also reset when a warning is - // logged after the playback head position hasn't been updated for a - // while. We should refine the name to make it better reflect its - // usage. - SbTime last_playback_head_changed_at = -1; + SbTime last_playback_head_event_at = -1; SbTime playback_head_not_changed_duration = 0; SbTime last_written_succeeded_at = -1; @@ -197,21 +193,21 @@ playback_head_position - last_playback_head_position_; SbTime now = SbTimeGetMonotonicNow(); - if (last_playback_head_changed_at == -1) { - last_playback_head_changed_at = now; + if (last_playback_head_event_at == -1) { + last_playback_head_event_at = now; } if (last_playback_head_position_ == playback_head_position) { - SbTime elapsed = now - last_playback_head_changed_at; + SbTime elapsed = now - last_playback_head_event_at; if (elapsed > 5 * kSbTimeSecond) { playback_head_not_changed_duration += elapsed; - last_playback_head_changed_at = now; + last_playback_head_event_at = now; SB_LOG(INFO) << "last playback head position is " << last_playback_head_position_ << " and it hasn't been updated for " << elapsed << " microseconds."; } } else { - last_playback_head_changed_at = now; + last_playback_head_event_at = now; playback_head_not_changed_duration = 0; } @@ -243,7 +239,7 @@ bridge_.Pause(); } else if (!was_playing && is_playing) { was_playing = true; - last_playback_head_changed_at = -1; + last_playback_head_event_at = -1; playback_head_not_changed_duration = 0; last_written_succeeded_at = -1; bridge_.Play();
diff --git a/src/starboard/android/shared/media_decoder.cc b/src/starboard/android/shared/media_decoder.cc index d6c7f71..44095f7 100644 --- a/src/starboard/android/shared/media_decoder.cc +++ b/src/starboard/android/shared/media_decoder.cc
@@ -170,6 +170,10 @@ SB_DCHECK(!error_cb_); error_cb_ = error_cb; + + if (error_occurred_) { + Schedule(std::bind(error_cb_, error_, error_message_)); + } } void MediaDecoder::WriteInputBuffer( @@ -445,7 +449,7 @@ " greater than |byte_buffer.capacity()| (%d).", size, static_cast<int>(byte_buffer.capacity())); SB_LOG(ERROR) << error_message; - error_cb_(kSbPlayerErrorDecode, error_message); + ReportError(kSbPlayerErrorDecode, error_message); return false; } byte_buffer.CopyInto(data, size); @@ -512,13 +516,13 @@ drm_system_->OnInsufficientOutputProtection(); } else { if (media_type_ == kSbMediaTypeAudio) { - error_cb_(kSbPlayerErrorDecode, - FormatString("%s failed with status %d (audio).", action_name, - status)); + ReportError(kSbPlayerErrorDecode, + FormatString("%s failed with status %d (audio).", action_name, + status)); } else { - error_cb_(kSbPlayerErrorDecode, - FormatString("%s failed with status %d (video).", action_name, - status)); + ReportError(kSbPlayerErrorDecode, + FormatString("%s failed with status %d (video).", action_name, + status)); } } @@ -532,6 +536,24 @@ } } +void MediaDecoder::ReportError(const SbPlayerError error, + const std::string error_message) { + if (!BelongsToCurrentThread()) { + Schedule(std::bind(&MediaDecoder::ReportError, this, error, error_message)); + return; + } + if (error_occurred_) { + // Avoid to report error multiple times. + return; + } + error_occurred_ = true; + error_ = error; + error_message_ = error_message; + if (error_cb_) { + error_cb_(error_, error_message_); + } +} + void MediaDecoder::OnMediaCodecError(bool is_recoverable, bool is_transient, const std::string& diagnostic_info) { @@ -539,16 +561,17 @@ << (is_recoverable ? "recoverable, " : "unrecoverable, ") << (is_transient ? "transient " : "intransient ") << " error with message: " << diagnostic_info; - + // The callback may be called on a different thread and before |error_cb_| is + // initialized. if (!is_transient) { if (media_type_ == kSbMediaTypeAudio) { - error_cb_(kSbPlayerErrorDecode, - "OnMediaCodecError (audio): " + diagnostic_info + - (is_recoverable ? ", recoverable " : ", unrecoverable ")); + ReportError(kSbPlayerErrorDecode, + "OnMediaCodecError (audio): " + diagnostic_info + + (is_recoverable ? ", recoverable " : ", unrecoverable ")); } else { - error_cb_(kSbPlayerErrorDecode, - "OnMediaCodecError (video): " + diagnostic_info + - (is_recoverable ? ", recoverable " : ", unrecoverable ")); + ReportError(kSbPlayerErrorDecode, + "OnMediaCodecError (video): " + diagnostic_info + + (is_recoverable ? ", recoverable " : ", unrecoverable ")); } } }
diff --git a/src/starboard/android/shared/media_decoder.h b/src/starboard/android/shared/media_decoder.h index 569036a..423d6ac 100644 --- a/src/starboard/android/shared/media_decoder.h +++ b/src/starboard/android/shared/media_decoder.h
@@ -32,6 +32,7 @@ #include "starboard/shared/internal_only.h" #include "starboard/shared/starboard/player/filter/common.h" #include "starboard/shared/starboard/player/input_buffer_internal.h" +#include "starboard/shared/starboard/player/job_queue.h" #include "starboard/shared/starboard/thread_checker.h" namespace starboard { @@ -40,7 +41,9 @@ // TODO: Better encapsulation the MediaCodecBridge so the decoders no longer // need to talk directly to the MediaCodecBridge. -class MediaDecoder : private MediaCodecBridge::Handler { +class MediaDecoder + : private MediaCodecBridge::Handler, + protected ::starboard::shared::starboard::player::JobQueue::JobOwner { public: typedef ::starboard::shared::starboard::player::filter::ErrorCB ErrorCB; typedef ::starboard::shared::starboard::player::InputBuffer InputBuffer; @@ -143,6 +146,7 @@ bool ProcessOneInputBuffer(std::deque<Event>* pending_tasks, std::vector<int>* input_buffer_indices); void HandleError(const char* action_name, jint status); + void ReportError(const SbPlayerError error, const std::string error_message); // MediaCodecBridge::Handler methods // Note that these methods are called from the default looper and is not on @@ -169,6 +173,10 @@ ErrorCB error_cb_; + bool error_occurred_ = false; + SbPlayerError error_; + std::string error_message_; + atomic_bool stream_ended_; atomic_bool destroying_;
diff --git a/src/starboard/android/shared/media_is_buffer_pool_allocate_on_demand.cc b/src/starboard/android/shared/media_is_buffer_pool_allocate_on_demand.cc new file mode 100644 index 0000000..3fc0676 --- /dev/null +++ b/src/starboard/android/shared/media_is_buffer_pool_allocate_on_demand.cc
@@ -0,0 +1,20 @@ +// Copyright 2021 The Cobalt Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "starboard/media.h" + +bool SbMediaIsBufferPoolAllocateOnDemand() { + // Minimize fragmentation by always having the media buffer pool allocated. + return false; +}
diff --git a/src/starboard/android/shared/starboard_platform.gypi b/src/starboard/android/shared/starboard_platform.gypi index e8579cb..95f0ba0 100644 --- a/src/starboard/android/shared/starboard_platform.gypi +++ b/src/starboard/android/shared/starboard_platform.gypi
@@ -141,6 +141,7 @@ 'media_get_initial_buffer_capacity.cc', 'media_get_max_buffer_capacity.cc', 'media_is_audio_supported.cc', + 'media_is_buffer_pool_allocate_on_demand.cc', 'media_is_video_supported.cc', 'network_status_impl.cc', 'microphone_impl.cc', @@ -401,7 +402,6 @@ '<(DEPTH)/starboard/shared/starboard/media/media_get_buffer_storage_type.cc', '<(DEPTH)/starboard/shared/starboard/media/media_get_progressive_buffer_budget.cc', '<(DEPTH)/starboard/shared/starboard/media/media_get_video_buffer_budget.cc', - '<(DEPTH)/starboard/shared/starboard/media/media_is_buffer_pool_allocate_on_demand.cc', '<(DEPTH)/starboard/shared/starboard/media/media_is_buffer_using_memory_pool.cc', '<(DEPTH)/starboard/shared/starboard/media/mime_type.cc', '<(DEPTH)/starboard/shared/starboard/media/mime_type.h',
diff --git a/src/starboard/evergreen/testing/shared/cycle_cobalt.sh b/src/starboard/evergreen/testing/shared/cycle_cobalt.sh index 9b26cf7..40ed24c 100755 --- a/src/starboard/evergreen/testing/shared/cycle_cobalt.sh +++ b/src/starboard/evergreen/testing/shared/cycle_cobalt.sh
@@ -78,7 +78,7 @@ URL="${1}" LOG="${2}" PAT="${3}" - ARGS="${4}" + ARGS="--min_log_level=info ${4}" start_cobalt "${URL}" "${LOG}" LOADER "${ARGS}"
diff --git a/src/starboard/evergreen/testing/tests/test.html b/src/starboard/evergreen/testing/tests/test.html index c1772d2..e53f706 100644 --- a/src/starboard/evergreen/testing/tests/test.html +++ b/src/starboard/evergreen/testing/tests/test.html
@@ -31,7 +31,7 @@ return; } - if (currentChannel == "qa") { + if (currentChannel == "prod") { window.h5vcc.updater.setUpdaterChannel(targetChannel); console.log("channel was changed to " + targetChannel); return;
diff --git a/src/starboard/nplb/media_can_play_mime_and_key_system_test.cc b/src/starboard/nplb/media_can_play_mime_and_key_system_test.cc index 4c7457c..3d5317c 100644 --- a/src/starboard/nplb/media_can_play_mime_and_key_system_test.cc +++ b/src/starboard/nplb/media_can_play_mime_and_key_system_test.cc
@@ -15,7 +15,9 @@ #include "starboard/common/string.h" #include "starboard/media.h" #include "starboard/nplb/drm_helpers.h" +#include "starboard/nplb/media_can_play_mime_and_key_system_test_helpers.h" #include "starboard/nplb/performance_helpers.h" +#include "starboard/time.h" #include "testing/gtest/include/gtest/gtest.h" namespace starboard { @@ -789,9 +791,35 @@ } TEST(SbMediaCanPlayMimeAndKeySystem, ValidatePerformance) { - TEST_PERF_FUNCWITHARGS_DEFAULT( - SbMediaCanPlayMimeAndKeySystem, - "video/webm; codecs=\"vp9\"; width=256; height=144; framerate=30", ""); + auto test_sequential_function_calls = + [](const char** mime_params, int num_function_calls, + SbTimeMonotonic max_time_delta, const char* query_type) { + const SbTimeMonotonic time_start = SbTimeGetMonotonicNow(); + for (int i = 0; i < num_function_calls; ++i) { + SbMediaCanPlayMimeAndKeySystem(mime_params[i], ""); + } + const SbTimeMonotonic time_last = SbTimeGetMonotonicNow(); + const SbTimeMonotonic time_delta = time_last - time_start; + const double time_per_call = + static_cast<double>(time_delta) / num_function_calls; + + SB_LOG(INFO) << "SbMediaCanPlayMimeAndKeySystem - " << query_type + << " measured duration " << time_delta + << "us total across " << num_function_calls << " calls."; + SB_LOG(INFO) << " Measured duration " << time_per_call + << "us average per call."; + EXPECT_LE(time_delta, max_time_delta); + }; + + test_sequential_function_calls(kSdrQueryParams, + SB_ARRAY_SIZE_INT(kSdrQueryParams), + 10 * kSbTimeMillisecond, "SDR queries"); + test_sequential_function_calls(kHdrQueryParams, + SB_ARRAY_SIZE_INT(kHdrQueryParams), + 20 * kSbTimeMillisecond, "HDR queries"); + test_sequential_function_calls(kDrmQueryParams, + SB_ARRAY_SIZE_INT(kDrmQueryParams), + 50 * kSbTimeMillisecond, "DRM queries"); } } // namespace
diff --git a/src/starboard/nplb/media_can_play_mime_and_key_system_test_helpers.h b/src/starboard/nplb/media_can_play_mime_and_key_system_test_helpers.h new file mode 100644 index 0000000..544961b --- /dev/null +++ b/src/starboard/nplb/media_can_play_mime_and_key_system_test_helpers.h
@@ -0,0 +1,363 @@ +// Copyright 2021 The Cobalt Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef STARBOARD_NPLB_MEDIA_CAN_PLAY_MIME_AND_KEY_SYSTEM_TEST_HELPERS_H_ +#define STARBOARD_NPLB_MEDIA_CAN_PLAY_MIME_AND_KEY_SYSTEM_TEST_HELPERS_H_ + +namespace starboard { +namespace nplb { + +// Query params from https://youtu.be/iXvy8ZeCs5M. +static const char* kSdrQueryParams[] = { + "video/mp4; codecs=\"avc1.42001E\"", + "audio/mp4; codecs=\"mp4a.40.2\"", + "video/webm; codecs=\"vp09.02.51.10.01.09.16.09.00\"", + "video/webm; codecs=\"vp09.02.51.10.01.09.99.99.00\"", + "audio/webm; codecs=\"opus\"", + "audio/webm; codecs=\"opus\"; channels=2", + "audio/webm; codecs=\"opus\"; channels=99", + "video/mp4; codecs=av01.0.05M.08", + "video/webm; codecs=\"vp9\"", + "video/webm; codecs=\"vp9\"; width=640", + "video/webm; codecs=\"vp9\"; width=99999", + "video/webm; codecs=\"vp9\"", + "video/webm; codecs=\"vp9\"; height=360", + "video/webm; codecs=\"vp9\"; height=99999", + "video/webm; codecs=\"vp9\"", + "video/webm; codecs=\"vp9\"; framerate=30", + "video/webm; codecs=\"vp9\"; framerate=9999", + "video/webm; codecs=\"vp9\"; width=3840; height=2160; bitrate=2000000", + "video/webm; codecs=\"vp9\"; width=3840; height=2160; bitrate=20000000", + "video/webm; codecs=\"vp9\"", + "video/webm; codecs=\"vp9\"; bitrate=300000", + "video/webm; codecs=\"vp9\"; bitrate=2000000000", + "video/mp4; codecs=\"avc1.4d4015\"; width=426; height=240; framerate=24; " + "bitrate=233713", + "video/mp4; codecs=\"avc1.4d401e\"; width=640; height=360; framerate=24; " + "bitrate=422012", + "audio/mp4; codecs=\"mp4a.40.2\"; channels=2", + "video/mp4; codecs=\"avc1.4d400c\"; width=256; height=144; framerate=24; " + "bitrate=110487", + "video/webm; codecs=\"vp9\"", + "video/webm; codecs=\"vp9\"; eotf=bt709", + "video/webm; codecs=\"vp9\"; eotf=catavision", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=426; " + "height=240; framerate=24; bitrate=191916; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=640; " + "height=360; framerate=24; bitrate=400973; eotf=bt709", + "audio/webm; codecs=\"opus\"; channels=2", + "audio/webm; codecs=\"opus\"; channels=2", + "video/mp4; codecs=\"av01.0.00M.08\"; width=256; height=144; framerate=24; " + "bitrate=76146; eotf=bt709", + "video/mp4; codecs=\"av01.0.00M.08\"; width=426; height=240; framerate=24; " + "bitrate=156234; eotf=bt709", + "video/mp4; codecs=\"av01.0.01M.08\"; width=640; height=360; framerate=24; " + "bitrate=302046; eotf=bt709", + "audio/webm; codecs=\"opus\"", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\""}; + +// Query params from https://youtu.be/1La4QzGeaaQ. +static const char* kHdrQueryParams[] = { + "video/webm; codecs=\"vp09.02.51.10.01.09.16.09.00\"", + "video/webm; codecs=\"vp09.02.51.10.01.09.99.99.00\"", + "audio/webm; codecs=\"opus\"", + "audio/webm; codecs=\"opus\"; channels=2", + "audio/webm; codecs=\"opus\"; channels=99", + "video/mp4; codecs=av01.0.05M.08", + "video/mp4; codecs=av99.0.05M.08", + "video/webm; codecs=\"vp9\"", + "video/webm; codecs=\"vp9\"; height=360", + "video/webm; codecs=\"vp9\"; height=99999", + "video/webm; codecs=\"vp9\"; width=3840; height=2160; bitrate=2000000", + "video/webm; codecs=\"vp9\"", + "video/webm; codecs=\"vp9\"; bitrate=300000", + "video/webm; codecs=\"vp9\"; bitrate=2000000000", + "video/webm; codecs=\"vp9\"", + "video/webm; codecs=\"vp9\"; width=640", + "video/webm; codecs=\"vp9\"; width=99999", + "video/webm; codecs=\"vp9\"", + "video/webm; codecs=\"vp9\"; framerate=30", + "video/webm; codecs=\"vp9\"; framerate=9999", + "video/mp4; codecs=\"avc1.4d4015\"; width=426; height=240; framerate=30; " + "bitrate=296736", + "video/mp4; codecs=\"avc1.4d401e\"; width=640; height=360; framerate=30; " + "bitrate=700126", + "video/mp4; codecs=\"avc1.4d401f\"; width=854; height=480; framerate=30; " + "bitrate=1357113", + "video/mp4; codecs=\"avc1.4d401f\"; width=1280; height=720; framerate=30; " + "bitrate=2723992", + "audio/mp4; codecs=\"mp4a.40.2\"; channels=2", + "video/mp4; codecs=\"avc1.4d400c\"; width=256; height=144; framerate=30; " + "bitrate=123753", + "video/webm; codecs=\"vp9\"", + "video/webm; codecs=\"vp9\"; eotf=bt709", + "video/webm; codecs=\"vp9\"; eotf=catavision", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=426; " + "height=240; framerate=30; bitrate=202710; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=640; " + "height=360; framerate=30; bitrate=427339; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=854; " + "height=480; framerate=30; bitrate=782821; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1280; " + "height=720; framerate=30; bitrate=1542503; eotf=bt709", + "audio/webm; codecs=\"opus\"; channels=2", + "audio/webm; codecs=\"opus\"; channels=2", + "video/mp4; codecs=\"avc1.4d4020\"; width=1280; height=720; framerate=60; " + "bitrate=3488936", + "video/mp4; codecs=\"avc1.64002a\"; width=1920; height=1080; framerate=60; " + "bitrate=5833750", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1280; " + "height=720; framerate=60; bitrate=2676194; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1920; " + "height=1080; framerate=60; bitrate=4461346; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=2560; " + "height=1440; framerate=60; bitrate=13384663; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=3840; " + "height=2160; framerate=60; bitrate=26752474; eotf=bt709", + "video/webm; codecs=\"vp09.02.51.10.01.09.16.09.00\"; width=256; " + "height=144; framerate=60; bitrate=245561", + "video/webm; codecs=\"vp09.02.51.10.01.09.16.09.00\"; width=426; " + "height=240; framerate=60; bitrate=500223", + "video/webm; codecs=\"vp09.02.51.10.01.09.16.09.00\"; width=640; " + "height=360; framerate=60; bitrate=1064485", + "video/webm; codecs=\"vp09.02.51.10.01.09.16.09.00\"; width=854; " + "height=480; framerate=60; bitrate=1998847", + "video/webm; codecs=\"vp09.02.51.10.01.09.16.09.00\"; width=1280; " + "height=720; framerate=60; bitrate=4556353", + "video/webm; codecs=\"vp09.02.51.10.01.09.16.09.00\"; width=1920; " + "height=1080; framerate=60; bitrate=6946958", + "video/webm; codecs=\"vp09.02.51.10.01.09.16.09.00\"; width=2560; " + "height=1440; framerate=60; bitrate=16930005", + "video/webm; codecs=\"vp09.02.51.10.01.09.16.09.00\"; width=3840; " + "height=2160; framerate=60; bitrate=30184402", + "video/mp4; codecs=\"av01.0.00M.10.0.110.09.16.09.0\"; width=256; " + "height=144; framerate=30; bitrate=89195; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.00M.10.0.110.09.16.09.0\"; width=426; " + "height=240; framerate=30; bitrate=172861; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.01M.10.0.110.09.16.09.0\"; width=640; " + "height=360; framerate=30; bitrate=369517; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.04M.10.0.110.09.16.09.0\"; width=854; " + "height=480; framerate=30; bitrate=695606; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.08M.10.0.110.09.16.09.0\"; width=1280; " + "height=720; framerate=60; bitrate=2017563; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.09M.10.0.110.09.16.09.0\"; width=1920; " + "height=1080; framerate=60; bitrate=3755257; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.12M.10.0.110.09.16.09.0\"; width=2560; " + "height=1440; framerate=60; bitrate=8546165; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.13M.10.0.110.09.16.09.0\"; width=3840; " + "height=2160; framerate=60; bitrate=17537773; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.17M.10.0.110.09.16.09.0\"; width=7680; " + "height=4320; framerate=60; bitrate=37270368; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.00M.10.0.110.09.16.09.0\"; width=256; " + "height=144; framerate=60; bitrate=193907; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.01M.10.0.110.09.16.09.0\"; width=426; " + "height=240; framerate=60; bitrate=400353; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.04M.10.0.110.09.16.09.0\"; width=640; " + "height=360; framerate=60; bitrate=817812; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.05M.10.0.110.09.16.09.0\"; width=854; " + "height=480; framerate=60; bitrate=1558025; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.08M.10.0.110.09.16.09.0\"; width=1280; " + "height=720; framerate=60; bitrate=4167668; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.09M.10.0.110.09.16.09.0\"; width=1920; " + "height=1080; framerate=60; bitrate=6870811; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.12M.10.0.110.09.16.09.0\"; width=2560; " + "height=1440; framerate=60; bitrate=17316706; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.13M.10.0.110.09.16.09.0\"; width=3840; " + "height=2160; framerate=60; bitrate=31942925; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.17M.10.0.110.09.16.09.0\"; width=7680; " + "height=4320; framerate=60; bitrate=66038840; eotf=smpte2084", + "video/mp4; codecs=\"av01.0.17M.10.0.110.09.16.09.0\"; width=7680; " + "height=4320; framerate=60; bitrate=45923436; eotf=smpte2084", + "video/mp4; codecs=\"avc1.4d4015\"; width=426; height=240; framerate=24; " + "bitrate=160590", + "video/mp4; codecs=\"avc1.4d401e\"; width=640; height=360; framerate=24; " + "bitrate=255156", + "video/mp4; codecs=\"avc1.4d401e\"; width=854; height=480; framerate=24; " + "bitrate=490890", + "video/mp4; codecs=\"avc1.4d401f\"; width=1280; height=720; framerate=24; " + "bitrate=1000556", + "video/mp4; codecs=\"avc1.640028\"; width=1920; height=1080; framerate=24; " + "bitrate=1810004", + "audio/mp4; codecs=\"mp4a.40.2\"; channels=2", + "video/mp4; codecs=\"avc1.4d400c\"; width=256; height=144; framerate=24; " + "bitrate=82746", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=426; " + "height=240; framerate=24; bitrate=178701; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=640; " + "height=360; framerate=24; bitrate=371303; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=854; " + "height=480; framerate=24; bitrate=579918; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1280; " + "height=720; framerate=24; bitrate=999223; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1920; " + "height=1080; framerate=24; bitrate=1814623; eotf=bt709", + "audio/webm; codecs=\"opus\"; channels=2", + "audio/webm; codecs=\"opus\"; channels=2"}; + +// Query params from https://youtu.be/1mSzHxMpji0. +static const char* kDrmQueryParams[] = { + "video/mp4; codecs=\"avc1.4d4015\"; width=426; height=240; framerate=24; " + "bitrate=281854", + "video/mp4; codecs=\"avc1.4d401e\"; width=640; height=360; framerate=24; " + "bitrate=637760", + "video/mp4; codecs=\"avc1.4d401e\"; width=854; height=480; framerate=24; " + "bitrate=1164612", + "video/mp4; codecs=\"avc1.640028\"; width=1920; height=1080; framerate=24; " + "bitrate=4362827", + "audio/mp4; codecs=\"mp4a.40.2\"; channels=2", + "video/mp4; codecs=\"avc1.4d400c\"; width=256; height=144; framerate=24; " + "bitrate=138907", + "video/mp4; codecs=\"avc1.4d401e\"; width=854; height=480; framerate=24; " + "bitrate=1746306", + "video/mp4; codecs=\"avc1.4d401e\"; width=854; height=480; framerate=24; " + "bitrate=3473564", + "video/mp4; codecs=\"avc1.4d401f\"; width=1280; height=720; framerate=24; " + "bitrate=3481130", + "video/mp4; codecs=\"avc1.4d401f\"; width=1280; height=720; framerate=24; " + "bitrate=5789806", + "video/mp4; codecs=\"avc1.640028\"; width=1920; height=1080; framerate=24; " + "bitrate=5856175", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=854; " + "height=480; framerate=24; bitrate=2629046; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1280; " + "height=720; framerate=24; bitrate=1328071; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1920; " + "height=1080; framerate=24; bitrate=2375894; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=426; " + "height=240; framerate=24; bitrate=229634; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=640; " + "height=360; framerate=24; bitrate=324585; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=854; " + "height=480; framerate=24; bitrate=639196; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=854; " + "height=480; framerate=24; bitrate=1055128; eotf=bt709; " + "cryptoblockformat=subsample", + "audio/mp4; codecs=\"ec-3\"; channels=6", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1280; " + "height=720; framerate=24; bitrate=2111149; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1280; " + "height=720; framerate=24; bitrate=3709033; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1920; " + "height=1080; framerate=24; bitrate=3679792; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1920; " + "height=1080; framerate=24; bitrate=5524689; eotf=bt709; " + "cryptoblockformat=subsample", + "audio/mp4; codecs=\"ac-3\"; channels=6", + "video/mp4; codecs=\"avc1.4d4015\"; width=426; height=240; framerate=24; " + "bitrate=281854", + "video/mp4; codecs=\"avc1.4d401e\"; width=640; height=360; framerate=24; " + "bitrate=637760", + "video/mp4; codecs=\"avc1.4d401e\"; width=854; height=480; framerate=24; " + "bitrate=1164612", + "video/mp4; codecs=\"avc1.640028\"; width=1920; height=1080; framerate=24; " + "bitrate=4362827", + "audio/mp4; codecs=\"mp4a.40.2\"; channels=2", + "video/mp4; codecs=\"avc1.4d400c\"; width=256; height=144; framerate=24; " + "bitrate=138907", + "video/mp4; codecs=\"avc1.4d401e\"; width=854; height=480; framerate=24; " + "bitrate=1746306", + "video/mp4; codecs=\"avc1.4d401e\"; width=854; height=480; framerate=24; " + "bitrate=3473564", + "video/mp4; codecs=\"avc1.4d401f\"; width=1280; height=720; framerate=24; " + "bitrate=3481130", + "video/mp4; codecs=\"avc1.4d401f\"; width=1280; height=720; framerate=24; " + "bitrate=5789806", + "video/mp4; codecs=\"avc1.640028\"; width=1920; height=1080; framerate=24; " + "bitrate=5856175", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=854; " + "height=480; framerate=24; bitrate=2629046; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1280; " + "height=720; framerate=24; bitrate=1328071; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1920; " + "height=1080; framerate=24; bitrate=2375894; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=426; " + "height=240; framerate=24; bitrate=229634; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=640; " + "height=360; framerate=24; bitrate=324585; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=854; " + "height=480; framerate=24; bitrate=639196; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=854; " + "height=480; framerate=24; bitrate=1055128; eotf=bt709; " + "cryptoblockformat=subsample", + "audio/mp4; codecs=\"ec-3\"; channels=6", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1280; " + "height=720; framerate=24; bitrate=2111149; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1280; " + "height=720; framerate=24; bitrate=3709033; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1920; " + "height=1080; framerate=24; bitrate=3679792; eotf=bt709; " + "cryptoblockformat=subsample", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1920; " + "height=1080; framerate=24; bitrate=5524689; eotf=bt709; " + "cryptoblockformat=subsample", + "audio/mp4; codecs=\"ac-3\"; channels=6", + "video/mp4; codecs=\"avc1.4d4015\"; width=426; height=240; framerate=24; " + "bitrate=149590", + "video/mp4; codecs=\"avc1.4d401e\"; width=640; height=360; framerate=24; " + "bitrate=261202", + "video/mp4; codecs=\"avc1.4d401e\"; width=854; height=480; framerate=24; " + "bitrate=368187", + "video/mp4; codecs=\"avc1.4d401f\"; width=1280; height=720; framerate=24; " + "bitrate=676316", + "video/mp4; codecs=\"avc1.640028\"; width=1920; height=1080; framerate=24; " + "bitrate=2691722", + "audio/mp4; codecs=\"mp4a.40.2\"; channels=2", + "video/mp4; codecs=\"avc1.4d400c\"; width=256; height=144; framerate=24; " + "bitrate=84646", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=426; " + "height=240; framerate=24; bitrate=192698; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=640; " + "height=360; framerate=24; bitrate=342403; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=854; " + "height=480; framerate=24; bitrate=514976; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1280; " + "height=720; framerate=24; bitrate=852689; eotf=bt709", + "video/webm; codecs=\"vp09.00.51.08.01.01.01.01.00\"; width=1920; " + "height=1080; framerate=24; bitrate=2389269; eotf=bt709", + "audio/webm; codecs=\"opus\"; channels=2", + "audio/webm; codecs=\"opus\"; channels=2", + "video/mp4; codecs=\"av01.0.00M.08\"; width=256; height=144; framerate=24; " + "bitrate=74957; eotf=bt709", + "video/mp4; codecs=\"av01.0.00M.08\"; width=426; height=240; framerate=24; " + "bitrate=148691; eotf=bt709", + "video/mp4; codecs=\"av01.0.01M.08\"; width=640; height=360; framerate=24; " + "bitrate=305616; eotf=bt709", + "video/mp4; codecs=\"av01.0.04M.08\"; width=854; height=480; framerate=24; " + "bitrate=577104; eotf=bt709", + "video/mp4; codecs=\"av01.0.05M.08\"; width=1280; height=720; " + "framerate=24; bitrate=989646; eotf=bt709", + "video/mp4; codecs=\"av01.0.08M.08\"; width=1920; height=1080; " + "framerate=24; bitrate=1766589; eotf=bt709"}; + +} // namespace nplb +} // namespace starboard + +#endif // STARBOARD_NPLB_MEDIA_CAN_PLAY_MIME_AND_KEY_SYSTEM_TEST_HELPERS_H_
diff --git a/src/starboard/nplb/nplb.gyp b/src/starboard/nplb/nplb.gyp index b0f9f91..845e6c8 100644 --- a/src/starboard/nplb/nplb.gyp +++ b/src/starboard/nplb/nplb.gyp
@@ -158,6 +158,7 @@ # files. 'media_buffer_test.cc', 'media_can_play_mime_and_key_system_test.cc', + 'media_can_play_mime_and_key_system_test_helpers.h', 'media_configuration_test.cc', 'memory_align_to_page_size_test.cc', 'memory_allocate_aligned_test.cc',
diff --git a/src/starboard/shared/starboard/player/player_worker.cc b/src/starboard/shared/starboard/player/player_worker.cc index a17ab85..5ab9a8a 100644 --- a/src/starboard/shared/starboard/player/player_worker.cc +++ b/src/starboard/shared/starboard/player/player_worker.cc
@@ -216,9 +216,13 @@ SB_DCHECK(job_queue_->BelongsToCurrentThread()); SB_DCHECK(player_state_ != kSbPlayerStateDestroyed); - SB_DCHECK(!error_occurred_); SB_DCHECK(ticket_ != ticket); + if (error_occurred_) { + SB_LOG(ERROR) << "Tried to seek after error occurred."; + return; + } + SB_DLOG(INFO) << "Try to seek to " << seek_to_time << " microseconds."; if (write_pending_sample_job_token_.is_valid()) {
diff --git a/src/third_party/angle/src/common/platform.h b/src/third_party/angle/src/common/platform.h index 7bb17b5..2dde125 100644 --- a/src/third_party/angle/src/common/platform.h +++ b/src/third_party/angle/src/common/platform.h
@@ -129,4 +129,10 @@ # endif #endif +// Disable std::async usage uniformly across all Starboard builds for more +// consistent behaviour and stability. +#if defined(STARBOARD) +# define ANGLE_STD_ASYNC_WORKERS 0 +#endif // defined(STARBOARD) + #endif // COMMON_PLATFORM_H_
diff --git a/src/third_party/crashpad/compat/linux/sys/mman.cc b/src/third_party/crashpad/compat/linux/sys/mman.cc index 12aaa2c..044dbca 100644 --- a/src/third_party/crashpad/compat/linux/sys/mman.cc +++ b/src/third_party/crashpad/compat/linux/sys/mman.cc
@@ -22,7 +22,7 @@ extern "C" { -int memfd_create(const char* name, unsigned int flags) { +int memfd_create(const char* name, unsigned int flags) __THROW { using MemfdCreateType = int (*)(const char*, int); static const MemfdCreateType next_memfd_create = reinterpret_cast<MemfdCreateType>(dlsym(RTLD_NEXT, "memfd_create"));
diff --git a/src/third_party/crashpad/compat/linux/sys/mman.h b/src/third_party/crashpad/compat/linux/sys/mman.h index 61c55d7..43155da 100644 --- a/src/third_party/crashpad/compat/linux/sys/mman.h +++ b/src/third_party/crashpad/compat/linux/sys/mman.h
@@ -29,7 +29,7 @@ extern "C" { #endif -int memfd_create(const char* name, unsigned int flags); +int memfd_create(const char* name, unsigned int flags) __THROW; #ifdef __cplusplus } // extern "C"