@hpcc-js/comms 2.83.0 → 2.83.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -46,8 +46,8 @@ var tmp__namespace = /*#__PURE__*/_interopNamespace(tmp);
46
46
  var trustwave = "\nTrustwave Secure Global Extended Validation CA, Level 1\nSecureTrust Corporation\n00F6F61CE4A3635BB0CA8AACEEFCB2D0F0\n-----BEGIN CERTIFICATE-----\nMIIE+DCCA+CgAwIBAgIRAPb2HOSjY1uwyoqs7vyy0PAwDQYJKoZIhvcNAQELBQAw\nSjELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRkwFwYDVQQDExBTZWN1cmUgR2xvYmFsIENBMB4XDTE1MDgxMjIwMTcyOVoXDTI1\nMDgwOTIwMTcyOVowgbgxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQ\nMA4GA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMUAwPgYDVQQDEzdUcnVzdHdhdmUgU2VjdXJlIEdsb2JhbCBFeHRlbmRlZCBW\nYWxpZGF0aW9uIENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdh\ndmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx6D45slgLGq8\n2G/NPFnuFscv7UM1eRoQyx3h0DdSTfoRvHkkNv4Gf6OudZDOXqwV86v/SjcNEP87\nnjMOEqQ7dKQPtiYzEkK0MOrjbRySFC5dvCTI9T8tnBgFpYA9YXwbpUqXxEi0Ayoq\nhA7UQhS7Q+YGrVwZaJ6LiWrQw+x8ACPLqEvPmMZhrxagKwrsKbylMsAQ1ljk8X74\nJ76TSxi/AZpxos7tHD0XbO8elXFZexfsgPLDRpMs6jREVeQj1jVCWLtg9twiXzcI\naUCchBsTSc92WGkKwBnH70dlL2N8kT/BNe3tAsXuBpZRILANY59jLrLnHEJNfado\nt6ZpougolQIDAQABo4IBaDCCAWQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4E\nFgQUx33qXRmrVNT6P+ZKc956sjwdbC4wDgYDVR0PAQH/BAQDAgGGMD0GA1UdIAQ2\nMDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9TR0NBLmNybDBsBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9v\nY3NwLnRydXN0d2F2ZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9pc3N1ZXJzL1NHQ0EuY3J0MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr\nBgEFBQcDATAfBgNVHSMEGDAWgBSvRATCQX5Ig9tOOQLs7IR65s7JpDANBgkqhkiG\n9w0BAQsFAAOCAQEAkn/4wKQRLo41fDRkZtfF+3o8JtUmfQXf2zoo9Ll29hhCiz8k\nBOpIek9MrFd/cdNgUw1nckIi+J3udyFrbO5p64JBvtc0K4kAOPFSKpHssFcnRLPx\nFXgGxXq6ohD4Py+xaEApslYFfMy89N6DKs/v/10/+/xD831RFEUMUoQxBimsmmNf\n+cLoMwF5bpoSz9JcWqCmSlK0Nla1dPphaoA/MObLN2iQPpeM3yF5dTUm1tPxe39W\nOlr6nLU1xO+yRDrlGLXrVDP1l1/qGVuwi+xufIAcdFycLLBjSSNX7LOIK3tbva7A\nWctLUs+qhIlUrbPyFERm7YOY4SttWdozeYFNfg==\n-----END CERTIFICATE-----\n\nSecureTrust Domain Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E80B1BAF9870A7C4B6CBE401A32D68\n-----BEGIN CERTIFICATE-----\nMIIEfzCCA2egAwIBAgITBvHsAOgLG6+YcKfEtsvkAaMtaDANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowfDEyMDAGA1UEAxMpU2VjdXJlVHJ1c3QgRG9tYWluIFZhbGlk\nYXRpb24gQ0EsIExldmVsIDExFDASBgNVBAoTC1NlY3VyZVRydXN0MRAwDgYDVQQH\nEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggEiMA0G\nCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjRHBw8iIivBBrfE6HqexQK0oMt2Y/\nx8jO3fN96KEazZwEoGidwloRBk2Q7VfVvZ0ZDk+qwJZGLZJLS1ntGaZLH4/Iel+r\nPnp36IVF7J5MNDB+K81a/y9svEMfDu0p3FdlBUyhHvizZ/zFNP3tolmQfZ7T0mGL\n7lutlNAzFYoVTUlVeF5cSC8Yca906TEKyizYXuXcY8Diee+t+fQRHmSI5Hk5kyXD\nYFWcf2tXEfdkuFlDjJ7HPdFyfJzrNjD+cbqt8R5rZKnK1GNVP1dXm0cIYS+BMlMa\nCC1yF18oygbnOZLw5fDv9bxs4MOgF8E/Iypw0hLQHVkuD8wAvxVgPsqvAgMBAAGj\nggEsMIIBKDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNV\nHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUYt6tehfefLfDfCMXo7Em5UbXOvQw\nHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wQQYDVR0gBDowODA2BgRV\nHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMuc2VjdXJldHJ1c3QuY29t\nL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9T\nVENBLmNybDA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGGGmh0dHA6Ly9vY3Nw\nLnRydXN0d2F2ZS5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQAHXPYhl+++o//di2Qm\naWGmC1ijxbGbKA4jOSDRvQfxlWOVkqPF11Dpxz+V8Rxw7QFFVoJ5mHpfoXtQOijV\ntsCFknxTKgzQeArNkZrkXBNpYOJAcuc5v0eX0OllBWgVdIvZRl2TM5L/u1WFrlPr\nqwWdEYTkinQwgAHXVV/7WZi6c4StcqNnlw93mlvN6Vspzaf/mWtcYp+aqT9vrqHt\nyNR1k8Ri5eIRPIU0B8woiXTj3bifLg6/O217SY5cWwQKCMFsa6nGWoRVCJ0JJXa0\nZ+m3mPQD2OcW5YMrynhL2VWohyfZAjB8l/NZaeRT7M+vki56fxbx3Bk2lqy8Z1Zz\nWd5m\n-----END CERTIFICATE-----\n\nSecureTrust Extended Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E31E46D341B2B2633CE480D915F81D\n-----BEGIN CERTIFICATE-----\nMIIEizCCA3OgAwIBAgITBvHsAOMeRtNBsrJjPOSA2RX4HTANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowfjE0MDIGA1UEAxMrU2VjdXJlVHJ1c3QgRXh0ZW5kZWQgVmFs\naWRhdGlvbiBDQSwgTGV2ZWwgMTEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxEDAOBgNV\nBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUzCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANS6vRtFpCJBJ7zJODH07Y3k54Qn\nVIBhnQmmWoqFqzCVMX97GAyAfzjcQrhl/TNiJiRCrVQWPI4n0R8eUd91Ab1Qzfsr\nnp+0NRbagVDa6+nF0KcNxbSZ6/iZQ7Ac3HyhCvJS2rH2CVYlzqdsrxDXcZk69jOO\ndPV8+w+7eNIn34BKpB/ZF7iXApDoAKG81kg1VtpGOxJhxTsKLuJmURT4pQjtZqF+\nF6rN64j5T2DOK0gOA4G7BLoTdOQuXkPS38LXKgZ43lKqEenjmiOaMF/XuLYzaHrW\nGYgCM2wJsykgdB9hCsTTEwsHRZzt2q9mLBDvYYWVhql1/kR4K/RN4JdESEECAwEA\nAaOCATYwggEyMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMB0G\nA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAdBgNVHQ4EFgQUA6uAxlUKKpWh\n4Nf+GubAynjMsJYwHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wQQYD\nVR0gBDowODA2BgRVHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMuc2Vj\ndXJldHJ1c3QuY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1\nc3R3YXZlLmNvbS9TVENBLmNybDA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGG\nGmh0dHA6Ly9vY3NwLnRydXN0d2F2ZS5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQB1\nfzAmGGmtbJyIvOfjq2McCpUoYkXAq6JTN51+nb9NDAihhDoTKMde+801bC1/l54h\nxPPm4HImM6GK6LFckDew/FGwbdRbEznUOJ7uVL5ploNBIjte23kTBUZa9fx3+aXK\nhUTAipSyPtNjnOwVVBVXzrMynfMhdsyRRe7gLXNFYCXIxtks3IkIpuYnc86NAuV9\nnBLFlZzgmbAsW+tMc5QsNvQJ9pQ539K8cqZaM+HFCScreDERxmNtHHbMw+hCa2yL\nOj4ntekgWLO8KQbE0lPUNLIM17QK8aktJavj+GezBztKMmJJwhVYQy9nxS388ApX\nxcZsEgIzOCeH0SOWg4FA\n-----END CERTIFICATE-----\n\nSecureTrust Organization Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E58E9ADD372C871D25843FDAB852D9\n-----BEGIN CERTIFICATE-----\nMIIEkDCCA3igAwIBAgITBvHsAOWOmt03LIcdJYQ/2rhS2TANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowgYIxODA2BgNVBAMTL1NlY3VyZVRydXN0IE9yZ2FuaXphdGlv\nbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMRQwEgYDVQQKEwtTZWN1cmVUcnVzdDEQ\nMA4GA1UEBxMHQ2hpY2FnbzERMA8GA1UECBMISWxsaW5vaXMxCzAJBgNVBAYTAlVT\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4QVBCdYToXFIfzd1SQfi\nTEgg1bwHXM2cE2VsyxwWK8NEFH8zMYdKy2hYOAjbfpm0xE6q4TQzS8KL2vAtCNyY\nVrwX7d3IvKR25H5s1LUDeQXSl1JBBZCtgJf2caJcwaYa6n2pZ0EKt3wBB+QteSFn\n57ENB37T13y7Nn8gCt9ZZaPYqRWxHcPaIWO3CVzQZ3tXjCLqzJMCV2KqhK85DZk3\nwo33Zb6cyYDkerDbWyric+10dJ/wdgE49dkfyZxVxEGpHg1SCSJdHjGb4z85Zx/u\neBpxBS6g3dfrkDjjT3MUxyNS4EaRTZp7o/2EqVCYDWJDM1HcOZL64kyWyi0d9jqA\n7wIDAQABo4IBNjCCATIwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC\nAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBR/QuNI\nbljpLrlhyGp3tPcDuM1qWjAfBgNVHSMEGDAWgBRCMrYW+gT9/l1LesP990xAHVpD\nrzBBBgNVHSAEOjA4MDYGBFUdIAAwLjAsBggrBgEFBQcCARYgaHR0cHM6Ly9jZXJ0\ncy5zZWN1cmV0cnVzdC5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2Ny\nbC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMDYGCCsGAQUFBwEBBCowKDAmBggrBgEF\nBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbS8wDQYJKoZIhvcNAQELBQAD\nggEBAIwGM/ejz4Hbjf7Vc11gS8jzf+BwtZq9N4t1Nibj4rIDsW2G2jDE0S7fCN2m\nMhq76xkfnwfXhBbXDEKz6rj/M0G2u1kHw4Y8ZtKSzYEyRtgpeBFm4qU6voCSREpD\nFJXsL+Go2/YLRSE6xkWVSocklxppx4hi5o/RVdMMQept6ooOSFzBpH5XZYUoblKi\n99Yj0FUe8egIa9qSts42TObTpH1YVRMDnH3k2MNX3rcgPf9v/QO9Cf8W6RQ2+X3R\nCaYMPdL5OIKh4RGYjxXe3LpgiTKBWik/ZWTFL5sZSjetrJFl50NONzTc8E+BJtrx\nVCHAI2OcWyloxrYd4zMipw0YjDw=\n-----END CERTIFICATE-----\n\nTrustwave Domain Validation SHA256 CA, Level 1\nSecureTrust Corporation\n00DDEDF6F64298490E694C36EFA422C88F\n-----BEGIN CERTIFICATE-----\nMIIE7jCCA9agAwIBAgIRAN3t9vZCmEkOaUw276QiyI8wDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNDEwMDExOTIyMzJaFw0yNDA5\nMjgxOTIyMzJaMIGvMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE3MDUGA1UEAxMuVHJ1c3R3YXZlIERvbWFpbiBWYWxpZGF0aW9uIFNIQTI1NiBD\nQSwgTGV2ZWwgMTEfMB0GCSqGSIb3DQEJARYQY2FAdHJ1c3R3YXZlLmNvbTCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNr4Z91k7AKM+Pz5XXWTIuVeMts\nPU2W/pI4WdEHG9Zab1EOWPLbthB6fzUJLLLBBk1wy2OM9yG1HywB/CwfGHcoKS8Z\n/efGV+ZKTzEpIestriUWx7wUnzxKzGML48Xv7sNuY1Crru5Hgce1Ax5uOfP7OB6t\norbMunvKQC10WcSrqFg6LapZ0UhgGmQzdjYguOBF6WZJR3QLghQaNrSUZuA6neXR\ncUsBgmzrxiEVHyzt+lmnYFMFvKVwGOyIZ2RU2LAFthS6UDDrSLGsJysxc1MK1Sti\n/VP8e8wj9rJdmiWNfA+lz6hDAPzRbv+WVJNoHEGbIx8rai+rVMiLy2HIbPsCAwEA\nAaOCAWkwggFlMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPQc4jqvtqTk\n2emd/u8cd6VjPe+IMA4GA1UdDwEB/wQEAwIBhjBIBgNVHSAEQTA/MD0GDysGAQQB\nge0YAwMDAwQFAzAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9TVENBLmNybDBsBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9v\nY3NwLnRydXN0d2F2ZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9pc3N1ZXJzL1NUQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8G\nA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0GCSqGSIb3DQEBCwUAA4IB\nAQAjoDrTysopn7t+onDZ6rZSQW8rYlWZQpSiNHrq9xAAcMExrhcN0bQC9OQ+VRci\noMDascvwum7hVkyh2w2Ad7lC3Ir9gIuA8HycjqQJ4t1eSF3geYyf8lp259ztZ/TO\nxSAwJ9W0Szc8fslOA0SWlyA3lnRVcYVu54Idc1dPXXBxwlQ1NUCYgcsXZs+6QjLL\nYhYL85DhuitQSddoYemGpfVJnaYH9tBiWmwtzwc4qsVqTsKEJ/1zYAy2GrEAv8sB\nFKSfMNMopBmmDA8/aCIW/tH6KTD2DC15QQwL6yAUbSa5mhzFSA9O8zmF881YwBVG\nn+z3isMPClgpNw/eWSbaSLZ+\n-----END CERTIFICATE-----\n\nTrustwave Domain Validation SHA256 CA, Level 1\nSecureTrust Corporation\n390A3F7EECA8FB4347DCAF701861662B\n-----BEGIN CERTIFICATE-----\nMIIE/zCCA+egAwIBAgIQOQo/fuyo+0NH3K9wGGFmKzANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE2MDkwMTE0MzUzMloXDTI0MDky\nOTE0MzUzMlowga8xCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMTcwNQYDVQQDEy5UcnVzdHdhdmUgRG9tYWluIFZhbGlkYXRpb24gU0hBMjU2IENB\nLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs2vhn3WTsAoz4/PlddZMi5V4y2w9\nTZb+kjhZ0Qcb1lpvUQ5Y8tu2EHp/NQksssEGTXDLY4z3IbUfLAH8LB8YdygpLxn9\n58ZX5kpPMSkh6y2uJRbHvBSfPErMYwvjxe/uw25jUKuu7keBx7UDHm458/s4Hq2i\ntsy6e8pALXRZxKuoWDotqlnRSGAaZDN2NiC44EXpZklHdAuCFBo2tJRm4Dqd5dFx\nSwGCbOvGIRUfLO36WadgUwW8pXAY7IhnZFTYsAW2FLpQMOtIsawnKzFzUwrVK2L9\nU/x7zCP2sl2aJY18D6XPqEMA/NFu/5ZUk2gcQZsjHytqL6tUyIvLYchs+wIDAQAB\no4IBezCCAXcwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU9BziOq+2pOTZ\n6Z3+7xx3pWM974gwDgYDVR0PAQH/BAQDAgGGMDIGA1UdHwQrMCkwJ6AloCOGIWh0\ndHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9TVENBLmNybDA9BgNVHSAENjA0MDIGBFUd\nIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zc2wudHJ1c3R3YXZlLmNvbS9DQTBs\nBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnRydXN0d2F2\nZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9pc3N1\nZXJzL1NUQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFEIy\nthb6BP3+XUt6w/33TEAdWkOvMBsGA1UdEQQUMBKBEGNhQHRydXN0d2F2ZS5jb20w\nDQYJKoZIhvcNAQELBQADggEBAFcdG0/3P/CkeGb76tz/mn1viDZiftD05i9Jw70k\nH9ulRwdCHgzhSZVN5zHvG919oHA9WHbxH04J+iAnVl1+FjoDNN+A+2icy2WXqH9w\ngaNUGyUwLdo0JCfgUeGbrCF6WUYCj47pS7zAY02CdGlstZZsqouXK3RnOMKOD3Dq\nf5kiSh56KvhW/F0OZY7PAbdV79LVAiSTiAFdoe/jMjmj8fqXOiCIjllqH/O9/DAm\nRwQStFpauwR+nBbFhq4sYwlZQvJ0NvIxN5JOTECTkMM+X21kf8mrwRdxBfw0YEPa\nUTeZhFr48Fwvnt4jpo7gqpJzt7jjsbWPd1FHtey2Q8zmSHY=\n-----END CERTIFICATE-----\n\nTrustwave Extended Validation SHA256 CA, Level 1\nSecureTrust Corporation\n00C1BD27B383958D0D8BCA5E4F08D009D9\n-----BEGIN CERTIFICATE-----\nMIIFGDCCBACgAwIBAgIRAMG9J7ODlY0Ni8peTwjQCdkwDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNDEwMTMxODE3MzlaFw0yNDEw\nMTAxODE3MzlaMIGxMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE5MDcGA1UEAxMwVHJ1c3R3YXZlIEV4dGVuZGVkIFZhbGlkYXRpb24gU0hBMjU2\nIENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIB\nIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAre9mHLqiv689FWIk7PaeQLuW\nos8ldRX4rNLHeD7/X7JrTfaXuIQaLfrUODtyRaZs0LtJsEHgpr7dUonDIH69PjBP\nrHg+hBLu7ob4udEx3J03NQSdnR/fqPY0ZMH2NP7e9TFSKKctZ/SmzA8jGclVmdiT\nGg1bTx6xgWuPWq9OprIQSgkP5NRe1GeTQ7U/E1zxLqaw6PeQWjESHPGeilyw0jr6\nqVyHM5ack9ps60sN3CKNGushyaQe3w2bYxRJ9RRH/sILCAmmTbjc/cXrGQMGdaYt\naiGnXbc45r39cqfbynZ71hPPNEtFbOdqk3C7I8vrhIHiKaAtFkTMRSWmHHk4HwID\nAQABo4IBkTCCAY0wEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU5eQkWRUy\nJ8kgs0ICbLDvMt6bIFowDgYDVR0PAQH/BAQDAgGGMGYGA1UdIARfMF0wDAYKKwYB\nBAGB7RgDADAOBgxghkgBhv1kAQECBAEwPQYPKwYBBAGB7RgDAwMDBAMDMCowKAYI\nKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwMgYDVR0fBCsw\nKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMGwGCCsG\nAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJ1c3R3YXZlLmNv\nbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMv\nU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQY\nMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0GCSqGSIb3DQEBCwUAA4IBAQCly1p1\nrvcOlRS+ODBLb2kYHd4q+cXDl65X+IQ7hOlXg9dpa7CzSAGNNpzhyYMbE48mB/RE\nBXxbZkMzEhWPFj+4jdGNsmX0zjEWatJWsnNVxpA7hDR0iZssezu86oDQ/sbVoaXj\n0a5jB2cZsnMS5287CNDk5i+ImruhbMAYV9sadliXoDy3y01Sv+FLMx39C5UhYhWU\ngvoT9igbSCoc/DPOukEDqsnKMmDqTf3JzuFI1CbJcR6M8R1hAda4mZrxIdGcbT8R\nXp8JQ8Vuv/+plPMcAiZ2Bzed0hPVr5A1Mz8K8w9OyORGlRwjWS65jsr26bjMCcfj\npvuAANrc0Alu4nJC\n-----END CERTIFICATE-----\n\nTrustwave Extended Validation SHA256 CA, Level 1\nSecureTrust Corporation\n35962F305C5A0BEC400D4E9877528C65\n-----BEGIN CERTIFICATE-----\nMIIFCzCCA/OgAwIBAgIQNZYvMFxaC+xADU6Yd1KMZTANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE2MDkwMTE0MzUzNFoXDTI0MDky\nOTE0MzUzNFowgbExCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMTkwNwYDVQQDEzBUcnVzdHdhdmUgRXh0ZW5kZWQgVmFsaWRhdGlvbiBTSEEyNTYg\nQ0EsIExldmVsIDExHzAdBgkqhkiG9w0BCQEWEGNhQHRydXN0d2F2ZS5jb20wggEi\nMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCt72YcuqK/rz0VYiTs9p5Au5ai\nzyV1Ffis0sd4Pv9fsmtN9pe4hBot+tQ4O3JFpmzQu0mwQeCmvt1SicMgfr0+ME+s\neD6EEu7uhvi50THcnTc1BJ2dH9+o9jRkwfY0/t71MVIopy1n9KbMDyMZyVWZ2JMa\nDVtPHrGBa49ar06mshBKCQ/k1F7UZ5NDtT8TXPEuprDo95BaMRIc8Z6KXLDSOvqp\nXIczlpyT2mzrSw3cIo0a6yHJpB7fDZtjFEn1FEf+wgsICaZNuNz9xesZAwZ1pi1q\nIaddtzjmvf1yp9vKdnvWE880S0Vs52qTcLsjy+uEgeIpoC0WRMxFJaYceTgfAgMB\nAAGjggGFMIIBgTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTl5CRZFTIn\nySCzQgJssO8y3psgWjAOBgNVHQ8BAf8EBAMCAYYwMgYDVR0fBCswKTAnoCWgI4Yh\naHR0cDovL2NybC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMD0GA1UdIAQ2MDQwMgYE\nVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NB\nMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJ1c3R3\nYXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lz\nc3VlcnMvU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8G\nA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMBsGA1UdEQQUMBKBEGNhQHRy\ndXN0d2F2ZS5jb20wDQYJKoZIhvcNAQELBQADggEBAGUMIDkrvlMJ0wHLuP3lkneC\nwGU6mZ3g17jyU2RJwhRinYctraryG7Jh20DQ9/ppTHoxTIADw2JDsC5ByplabteQ\nnLghrl17K1b6PO+rzWA/NFKVwo6u8Gh7Lz0iUuit7ZBD4eKcRedxRZcPQlnD9KTR\nIs94SRpootsuCv/Y5b+1FMPV1KrYtbco9yEVlaNEWLpmiEsqvLjxiWEmt71rzz+0\nS59OtA/ihnbGP9Xrnhe7wf1ybCNOO5gZQMKr/OszfLZ7oVKACGOPLlcSZRRW98gA\nszE+1ZvlHkdjamfTSs4yMvUorYn9NhXnjAWl28NuD9m3FPiE2O50ezEDnHTiaOQ=\n-----END CERTIFICATE-----\n\nTrustwave Organization Validation SHA256 CA, Level 1\nSecureTrust Corporation\n4B2C6646F434775B67DF34A04DD504E6\n-----BEGIN CERTIFICATE-----\nMIIE/TCCA+WgAwIBAgIQSyxmRvQ0d1tn3zSgTdUE5jANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE0MTAwMTE5MjIzNloXDTI0MDky\nODE5MjIzNlowgbUxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMT0wOwYDVQQDEzRUcnVzdHdhdmUgT3JnYW5pemF0aW9uIFZhbGlkYXRpb24gU0hB\nMjU2IENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29t\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA49OohlJHBJ/juiQTmibO\nS28pHvCCp1bPOc6elQ62DCYE/A14JXUtI8yaUc9nFjh6dNzR7KjFPEq/qDplQl7f\n1Tvh5ifBNNP2wQ6e820TWlPO4HhR/5g4+3iFmJ1N7kFrxDp1/P8e3+9lcJsXckXC\ntfFkQ9slogJqnaCsipgdrH4gQhicFAL5YqHw2AKfctZLSPpxhI3xISMV/lIQwZPW\nI2221v9ALckokh5pW6dTK8x8yNUUye1zt5msWzqunfBjVYVUj5/LXu46hS99Mfxu\n80ARJRyHsXIuHbMzwVXGqKVPZfKAdHBl5e3ElCjNwNy+Hgi09vS7PoAUhjCf/wbO\nnQIDAQABo4IBczCCAW8wEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUys4d\nGAN3HhzzfFiymnCoCIAW9K4wDgYDVR0PAQH/BAQDAgGGMEgGA1UdIARBMD8wPQYP\nKwYBBAGB7RgDAwMDBAQDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0\nd2F2ZS5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdh\ndmUuY29tL1NUQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0\ncDovL29jc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50\ncnVzdHdhdmUuY29tL2lzc3VlcnMvU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUH\nAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0G\nCSqGSIb3DQEBCwUAA4IBAQBN/Qb6x5VSQHIt/FqvXAkjfCI7jwXGzRoxThavUqv0\npJr1azXKv2L2ye9Sl4OCqiDHZ8ZJZ/Z19Ae1yvGTpG++0O5dWTHZ8qy/JSj17Mg1\nvWiefVpJKtkYflzhC9B9/eB3QuKVTRKDqm1ZC9kbm3MWOwtnEOw4WURWS1X2v4Hv\n2AJaXe11ZRqjx7/c6U50tYp3eVpRDCw7bOIXRffLG0oibhjHiEu8dgq7KkTSrx9m\nQFS6T2x9GLiJKhj2mEfPuGr73TfBPyKsRBymOpG67LThKVnwoUfH3pghA6VkZp5Z\n1Vm6AcDm+eelf5XPvZtNve4evLVPYueA3TmGyxXh1m2d\n-----END CERTIFICATE-----\n\nTrustwave Organization Validation SHA256 CA, Level 1\nSecureTrust Corporation\n0092B8744F71CED0E26C72A3D8D5D925B2\n-----BEGIN CERTIFICATE-----\nMIIFEDCCA/igAwIBAgIRAJK4dE9xztDibHKj2NXZJbIwDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNjA5MDExNDM1MzVaFw0yNDA5\nMjkxNDM1MzVaMIG1MQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE9MDsGA1UEAxM0VHJ1c3R3YXZlIE9yZ2FuaXphdGlvbiBWYWxpZGF0aW9uIFNI\nQTI1NiBDQSwgTGV2ZWwgMTEfMB0GCSqGSIb3DQEJARYQY2FAdHJ1c3R3YXZlLmNv\nbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPTqIZSRwSf47okE5om\nzktvKR7wgqdWzznOnpUOtgwmBPwNeCV1LSPMmlHPZxY4enTc0eyoxTxKv6g6ZUJe\n39U74eYnwTTT9sEOnvNtE1pTzuB4Uf+YOPt4hZidTe5Ba8Q6dfz/Ht/vZXCbF3JF\nwrXxZEPbJaICap2grIqYHax+IEIYnBQC+WKh8NgCn3LWS0j6cYSN8SEjFf5SEMGT\n1iNtttb/QC3JKJIeaVunUyvMfMjVFMntc7eZrFs6rp3wY1WFVI+fy17uOoUvfTH8\nbvNAESUch7FyLh2zM8FVxqilT2XygHRwZeXtxJQozcDcvh4ItPb0uz6AFIYwn/8G\nzp0CAwEAAaOCAYUwggGBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMrO\nHRgDdx4c83xYsppwqAiAFvSuMA4GA1UdDwEB/wQEAwIBhjAyBgNVHR8EKzApMCeg\nJaAjhiFodHRwOi8vY3JsLnRydXN0d2F2ZS5jb20vU1RDQS5jcmwwPQYDVR0gBDYw\nNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5j\nb20vQ0EwbAYIKwYBBQUHAQEEYDBeMCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC50\ncnVzdHdhdmUuY29tMDUGCCsGAQUFBzAChilodHRwOi8vc3NsLnRydXN0d2F2ZS5j\nb20vaXNzdWVycy9TVENBLmNydDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH\nAwEwHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wGwYDVR0RBBQwEoEQ\nY2FAdHJ1c3R3YXZlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAC0OvN7/UJBcRDXch\nA4b2qJo7mBD05+XR96N7vucMaanz26CnUxs1o8DcBckpqyEXCxdOanIr+/UJNbBL\nXLJCzNLJEJcgV9TjbVu33eQR23yMuXD+cZsqLMF+L5IIM47W8dlwKJvMy0xs7Jb1\nS3NOIhcoVu+XPzRsgKv8Yi2B6l278RfzegiCx4vYJv0pBjFzizEiFH9bWTYIOlIJ\nJSM57hoICgjCTS8BoEgndwWIyc/nEmlYaUwmCo9QynY+UmW1WPWmVITEJPMdMK6A\nZqvvaWmuHJ6/vURaz+Hoc5D3z0yJDDCkv52bXV04ZoF6cbcWry7JvNA+djvay/4B\nRR4SZQ==\n-----END CERTIFICATE-----\n\nSecureTrust TWG Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C25181828DAC4F5F7DE4AFC87AD132\n-----BEGIN CERTIFICATE-----\nMIIG2zCCBMOgAwIBAgITBy8w6cJRgYKNrE9ffeSvyHrRMjANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMjAxMDA4MDY0OTQwWhcNMzAxMDA4MDY0ODQwWjBWMQswCQYDVQQGEwJVUzEUMBIG\nA1UEChMLU2VjdXJlVHJ1c3QxMTAvBgNVBAMTKFNlY3VyZVRydXN0IFRXRyBTZWN1\ncmUgRW1haWwgQ0EsIExldmVsIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\nAoICAQCcD5Wc7H480gOv3ae6SELBls0oNOvpw1ZFjK55nLw+W6PhgqTGNEHlO/Ga\nWt13yS1iO1/WzRaUc2XsFRGcjv3QIfDZb+6UzhL1LL9ZE8zcs0B6fepn4smQg1yK\ngtAWGoD70Z9kEBtypkG23sO5xIiRACJWgRWVZ/891pQBBz+ElCxUnIyDGghHlWCD\nzn5dLoBIVic69Pfpi384uNoNfHV/WATUQEEnwY+5yMMUALAWrRD6Jeh5R4m9qKxG\nUlrO9ObDebK9mFEJvrCPtkTIWT1He4ZD58Lt0NIkaItQ7KsKF9wgwH7BTsRGwQXb\nP6/0LvfO8UDRKNE/4C39u9dwUw/Zpu2iNXTadVWBtaSDsrPFVb5rBu+pvn4l4Hw5\njtySyHAOWn4mhuxDXMuKBtaoTi/qF94d7N0CbqPdN9WSN79Cy2O0BexTGHSJVndX\nEbKyn96b5STPshKVpG9DmUekfnDtnHR9dmH74a05X/A8k/XeSJWXphM6NvyZap2A\nWiIkrS7MsfwnCdZlX+9WGY2qHxnm4Y6JdNah0qxozBbQHkqHsSN4k8O7zr2lfZhC\nuarm0Q1t6tjsmp7PUh26u6PCe0m+MctIrD6ZckUzZeuPduRb55K2p8MxjQSVNH1S\nJ2aaHp77qOYV+rvHXIL7le4OR5lDWyzYtXLc8u17/kLbUtgnmQIDAQABo4IBbTCC\nAWkwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAww\nCgYIKwYBBQUHAwQwHQYDVR0OBBYEFKpD9MNsQCriSoEcg6nez7XhG7bOMB8GA1Ud\nIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6HMEEGA1UdIAQ6MDgwNgYEVR0gADAu\nMCwGCCsGAQUFBwIBFiBodHRwczovL2NlcnRzLnNlY3VyZXRydXN0LmNvbS9DQTA1\nBgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3JsLnNlY3VyZXRydXN0LmNvbS9UV0dD\nQS5jcmwwdAYIKwYBBQUHAQEEaDBmMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5z\nZWN1cmV0cnVzdC5jb20vMDoGCCsGAQUFBzAChi5odHRwOi8vY2VydHMuc2VjdXJl\ndHJ1c3QuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQBb\ntCXryLFewOafyNENB3NzgAQVVztwaWSyvF5FYSqav95JKcoHZzy3wG7aKlTPtGnq\n1QzJst03qPmZJ3j63obz2AvfEEzLEMlsPmOTy3B9oIrNzd2QhpGW1oF6pIgGB/VP\n5zh7U2ibUC+zRLmihwt+j2+7NBbuLbPozgxDTWh2f9O4rJb5bv98Q8RdbGrypBb9\nhOhDvmNCCfjSe+Q8myqsvawEG5p7s8gsIK/V3xbyqDihXjsGc7xeEWNftlU91jBL\nKPRbrLmXhhWnHJjYs4y5IHu735HA3aAT4TqURS9dGHOMVDRumkFpLqR2W7ptpDki\nOtIFZjO5smU29OD4AlcNUXqQuKEFasyTtkRlORnWhU37c36HB8dc57xWQKOf8pMq\n7lK+ublO9G4mO1Aqr9mioTN4oMONFJG4W5dWwG9baNg682ZACkvPaw45MqSztL3A\nKb4s2cDTWu/D34hV3oafkTwu8B7B2mFZnWRJ9q4akPmZF45uw4RZx2ALaYGGGs67\n+r5qS300As9ONg8hxfVkFQSHOc00IiBkgi3OpoCofEKTgDwZwHVqOJyyPjk6H9Sh\nZANmUOT2mGDLwl86Ar5bTu8ipzlsyDYQMFjho7WaVs8I5OXyVdONXDYLIOtpITGT\n1fRcXFzxYHhrNuFwrdj2zBVyvVD4O6xV97/9nv2Eng==\n-----END CERTIFICATE-----\n\nTrustwave Global Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9AD30465CF22697F246B101EC92953B\n-----BEGIN CERTIFICATE-----\nMIIHCDCCBPCgAwIBAgITBs6C2a0wRlzyJpfyRrEB7JKVOzANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBjjE3MDUGA1UEAxMuVHJ1c3R3\nYXZlIEdsb2JhbCBEb21haW4gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UE\nChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAwDgYDVQQHEwdDaGljYWdvMREw\nDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3DQEBAQUA\nA4ICDwAwggIKAoICAQChh5brvvk/kFUZwhlUhqdsUmsMCBjzYqBBLnTyNrKPr4nd\nS9s2h2JvA+9TY7NnJc/Mq1eN5V6zqvbn/LN3c8W06f76xrVvFEKs5SzCefUS/V3Z\nC18dgwXXFrP+RgfK2kqfTHGIPrWoRSnUiLn3iUNEBtJ06oXjAqAMnAyL5AzD+eHm\nZzRK/yCw/gMPnVp2S7Dstka607fS4fW9Sl33mOMNwJRxEjQWHHR25PAb4muP6wjN\nvmoLMgiDMKseHSFVtC7SpmO89PsrUV6MahKJrZcAfquAyoO1zR2c2eGaCI/m8oSx\n3B7KiMZJ3NZims/siMp/5szemsutf36WJ31nmr7PqLJGJdVpoxbLckWIhZnNYSFm\n/pTutpNONqpyYC2gGSXdw5LuxU61913SbAPpk8DZiHi3WslHBo26ghXG++sgJUGj\nhtKZhiYlp8uD21WTP6/60wngpXyCtt9cpHxW1lXmqcxwe2J4/2S3xjHz1dC6BKxb\nr61HCPVrbTD90CZUpMI8JPdsVbz5eegv+SIyybHxZe4S0D9Kv5pgWfqdXf0BAiJC\nTbGwYmFr4uisKhkfMThyOgWEH+CRBzQqdZREQ5lTIlVyzi3jGPuu9Q6brAS9U9Ue\nQhUwX8TtY8Igfo8HlhjugDpy6WvDYQ9i+tG3AC6v8sJLdOOU83Lr+2C1LEF5ZwID\nAQABo4IBYTCCAV0wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYw\nEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0OBBYEFIaZQQzOP7aMcEnlkwfwhgcd\nLXqVMB8GA1UdIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6HMD0GA1UdIAQ2MDQw\nMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29t\nL0NBMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9U\nV0dDQS5jcmwwbgYIKwYBBQUHAQEEYjBgMCYGCCsGAQUFBzABhhpodHRwOi8vb2Nz\ncC50cnVzdHdhdmUuY29tLzA2BggrBgEFBQcwAoYqaHR0cDovL3NzbC50cnVzdHdh\ndmUuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQAmn0jp\n+lNp188KxjKQZtpJ3mixLmuqGdH6SVpRs40BYQg/68xOPH3C6AJ17tqE6IwZMW9s\nlgiO4B7khR3ESA6Sct3zmkA8woR/KJVzzegjscHhtQUifQ+Eb9Gi0ORNnetGV+5g\n5vlrFZMptBRGUxXMo2xa+Z/NTyimpMopfXj7qCW/nQWQbzvkQGchK9IokyqV2wra\ntX68/P3zleG+LLwzoJd5AhHYSXWrIRJpClZHN+LQKkbI3MYW7+upo/1e9HEmFKxu\n5SFV3nuQm5wSOsz/ZtIL1AS8IoZYxcSe1Q/yuV9GjnxtL1jkPbzsBx4eBGxUrcIe\nsBat6SI8G58uHTpIPpqUxRYsg8w0FdjK3kNBB5QWDeXiDxzqIRzA0iE1kHeTXRZ3\n7qgGXUcce7ciW5KqeRApjQbD5BSZG2EKkQ7aaOhvxK0LiuxHZnjPW4/fdEcaCuku\nMT5qMDiF2U85V9BvanEy/xkYn4I2UeK4EdSXe7q6j+CIJz9WnoLQDbIS04GqIWe0\nVRQUlx3idUWYSJU/SG8KrEHhlJLmgSjshCwtT6qo4vHwT5WcWDLIbjMqgL1iQ6JS\n4gxXuOGia3d0I4/wec5x23EWwx9V8BtDJ8N7NDeRNmZ8RXOHSYJsVQYIQuFUEXE1\nv3WMSIxuyQMyR5FYSCG9xnKRFzNmiPngDil5IA==\n-----END CERTIFICATE-----\n\nTrustwave Global Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D99FB3B180C281020314A2D1C7640017\n-----BEGIN CERTIFICATE-----\nMIIHFDCCBPygAwIBAgITBs6C2Z+zsYDCgQIDFKLRx2QAFzANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBkDE5MDcGA1UEAxMwVHJ1c3R3\nYXZlIEdsb2JhbCBFeHRlbmRlZCBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMSEwHwYD\nVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xEDAOBgNVBAcTB0NoaWNhZ28x\nETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEB\nBQADggIPADCCAgoCggIBAMRO7orfWjfmz6Y6qoAmDp2lqCJcdvbRQ8w18rl1JE3j\nf/1CScZLrnLg4RDm8JiRcvFuvoMXn/XNUWy5ICG57tjG2nO7jvBuXfvbdkGA+foN\n3yJKMTX/PmmGlN4qpzFtsB0kLrP14/0TRGeJB7qDfAFH0ReFk0ftQobLBGBOpEca\n+bv+LhcTe40/uNUSK2yQ9GpIw200mcsD3B9c29Im4tSZFuA2o1vnEeizYW5M4sPX\nHu7p5ZCxjJrXVNqWUPM38rShhMUNL5uaVYWoi7TG5JXbg0Lmt2nq1k5nnig9Yp/W\nlAFooWXjKQzHf/z+XZ57bqPe7SzLW5pzpZdSmY2VRybAwEmzMjCXgHiP2ru3TpAD\n+giakPDoz3ZmbKjwYKZ5PmnOmXx0Z2GloO37MjamjPor/+fZohfyma7VAQE8znJt\nI9MVoRN3G3gW/tuT3jXfzYdFBlfGoO7OYyLN1LK5YBKH2qXrCHD8rG2DauBt7U+w\nfOvwfkp8FcdTnfQ92Xe65U3Xdu0eCgQJbChxZtWhhLnbY6xhmwAWyJ1my+Im72Kx\nGP/XcA8SH2sz6/k0782BjRckDuFpVVpTNYl9wqe/tuOrZhWPapOsRlfsDTuhgGu5\n2inM9sU3CAzmFE85zoRQFZQSof3kFN2rUZF20bmTak99cBNLli6/ja3+KntpZ08d\nAgMBAAGjggFrMIIBZzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIB\nhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHQYDVR0OBBYEFHM4IMZH\nbabGL3tQ4EDe3sedR958MB8GA1UdIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6H\nMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50\ncnVzdHdhdmUuY29tL0NBMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudHJ1\nc3R3YXZlLmNvbS9UV0dDQS5jcmwwbgYIKwYBBQUHAQEEYjBgMCYGCCsGAQUFBzAB\nhhpodHRwOi8vb2NzcC50cnVzdHdhdmUuY29tLzA2BggrBgEFBQcwAoYqaHR0cDov\nL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEB\nCwUAA4ICAQBwnSHECaf+hfGrm3Cg+aRr57ytoOSzI1DjlTNcM7k4uSt6kJRPHJ4c\nldIujMaETV52RgE6ykaMGkuIwQOIsLI6SXwjU1f5gXFUbDTS3KTWc/jwQeyLmdOe\nhvc+wBSFv8d10Sx/Qiti8mqsTqr0+N94Cx01+SkiWxWWoSZOAPkz8DMQGlD4yndK\nceTMGtQ03cLnD/36Mv6tz/Ds9l/OExrJGGxHD0tmYwYwBZpPHm7BBY2ZzycVxLcg\n+uuggcX1pg5MhJ1rDyod+7X+ilvTgH7ftHCmxvR7viMLwSUuytZ05zb2teRQgU+8\niWnPEHO/ADm5VD1Zb5Rx0579/YEENBJtGUPPJzo+JEpiZIOIlwZ69ETWWNCLZr0V\nvoi+SDl65cr+dgR9JreJ2I4W9FzS45ruxYEC8LGKEmV46sAk1YLbnIBmhehAKy9t\nP8RVz3QXYJ6rLOAuXF7R2eVV0SqfivW9bVzvBZTUTFsbdSMBAAF1BJjdRqYR63DI\ncQASY7CRoUiak1NTgPkzeV8VcNJmUt8c2eKJIifqBAjquH6+6UXs9Ol0aMPn6v0y\nB+TSuxhX2sSrpna9QcOh/QyoR5Hvcd81rZSbMc7yasKoUMXviotV1SfEqs3RU5Ts\nwnU4NHPn5ITRiuh5VMuvB/VnjnPC953u5uqAGtZ8BkC7X9cu5E0rMQ==\n-----END CERTIFICATE-----\n\nTrustwave Global Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A69703AEFE5D37D18858C74026B004\n-----BEGIN CERTIFICATE-----\nMIIHGDCCBQCgAwIBAgITBs6C2aaXA67+XTfRiFjHQCawBDANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBlDE9MDsGA1UEAxM0VHJ1c3R3\nYXZlIEdsb2JhbCBPcmdhbml6YXRpb24gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEh\nMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAwDgYDVQQHEwdDaGlj\nYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3\nDQEBAQUAA4ICDwAwggIKAoICAQC8BzZtA3eWejFOGHc2DLgex6P471dLWIIHSlrF\nY4a2BCtzAd/VlpQ3gslWnTgthOmK2/hCc+WSaOLPVZzZf3lGnxbb0+Y87Kx+nS1m\nIfJ/4OR6o8XLMLoCTAI1jsWxggiB4NBMqsW2xXQ5VAvBb66KEQYbshNlRpTbtBFq\nEed4YIvCdjbnCUOy1zubgVHUVyCFHzN4XPjEQCtT5vZM576Lt10Je9COnqG0CtPU\nQNP2tjnSmOOYdWcVRZ0UqXUl2fMBfmSDHd8902foigjpP04AYYbq6AetqEgqdvQP\nxz5pVbZqzy8UrE/s/raJLFyTuIAYVt18M0whSgWzGgUWkq2xRqbfn7b1hd56dwRb\nR7pKc51FyTbeocnKlYLC+Dlzp7iKQ3Pb7WHRwLhaJB7u4CzwqhUxHc0xplMYsq92\nMbZ6WN5L5mI7hxY8gLMOR7vNX9CKz9XcYRS01iCDe5Y/9muW8bzGyNXLX1YaHAy4\n+6ncksb3Y3RUKj3f0+T4nbiRISmGazravJKSssBLP3kPa9h5aX+Vd00eL+Q7sXrh\nFO7xz+oWtOL5rfVszyc87JQvjw1sDHA710nViqzUE1bJZNe61EXdCb/RV+Wsu+rO\ncAMSr5x2j/wW875sh+U3EJmTzdEBUBxHnBD2mDTyonT7wL47TRXTEO1IaS4mVbnv\no0jWvQIDAQABo4IBazCCAWcwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E\nBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBS3\n/VNzOCaKcKuTyoupCOrH07fj/TAfBgNVHSMEGDAWgBSZ4BlnDWLbdrPaPbhb6P1C\n0jEOhzA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9z\nc2wudHJ1c3R3YXZlLmNvbS9DQTAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3Js\nLnRydXN0d2F2ZS5jb20vVFdHQ0EuY3JsMG4GCCsGAQUFBwEBBGIwYDAmBggrBgEF\nBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbS8wNgYIKwYBBQUHMAKGKmh0\ndHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9pc3N1ZXJzL1RXR0NBLmNydDANBgkqhkiG\n9w0BAQsFAAOCAgEAFXwfmELpEGKUguzVTMix79XbUnkfLa7IXcqBOrwOWEF1V8F1\nxGY6jLlUTtoEXRYZwCpqOK/i4m4nmWCYE45O7URR8nqeFffceTi62t4Yvh6LkC9g\nUnj3aChLiO/Zdxilq6vfsXO0mKafrGtZXwjyskS250Pj9DsANs57QqvYN4hqbplJ\nzc95p09OUvEhPiyRyx6FyY28U+3X6+mSNMJWd4Nhr+3HtvmItLIXP2JCLxuYtu/K\n6nKcpFCFFKeF8K3PWpjsAb0hfXL4vc3WfyCYsQnvJeisyAh7yEuge2iDwl1/xXIo\nEOAyyYAxvy5UnzcAa0Z2lwjptve+jZ4gQ+A1ioYUavR3pSfBNzuJW30nZCWFadKc\nNXOPoAPkK8JLxgRBH3JboeBCXG6xgy/pXrTjyhW7/SS+Z+7eKkp9jgdTVQ12yUtc\nCiYWUuM4l240D/z+s03WOEcLTluESwFkJhzs3D9i5crTL72uSkDDmlh8HXoPAyYO\nl3Mn9cGWhd8M8IeQRXmb6O7gvvQZDoSXDVDbjBKcW1lFpi0wBxIBzLaOi4CX4OhI\nJHJ/H3duOMaltuzXLSLkc26jwHzMeq8seQRSXraXJi1t5oBKlmEWFEgq6xlH7mLW\n3TOqS19cuiSWl/CsnlLGaW8MH5YHmk+MJxQE1BcLBs6ciapvHlhLEd9EUpU=\n-----END CERTIFICATE-----\n\nSecureTrust TWG ECDSA P-256 Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C4627001DECFEBF6BF5D3B1066D7E3\n-----BEGIN CERTIFICATE-----\nMIIDbTCCAxKgAwIBAgITBy8w6cRicAHez+v2v107EGbX4zAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMjAxMDA4MDY0OTQxWhcNMzAxMDA4MDY0ODQxWjBiMQswCQYDVQQGEwJV\nUzEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxPTA7BgNVBAMTNFNlY3VyZVRydXN0IFRX\nRyBFQ0RTQSBQLTI1NiBTZWN1cmUgRW1haWwgQ0EsIExldmVsIDIwWTATBgcqhkjO\nPQIBBggqhkjOPQMBBwNCAAT4KazLm94aiykBGkNQVkBrjmK77RlP627D2n3EwK3s\n49ljRkN6wiTWXHx3jPD5BBE/7mWhGWnphzGu1Deb6yzco4IBdTCCAXEwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUH\nAwQwHQYDVR0OBBYEFHMQ2nwjQr8tFHfBImxM7ct8lbBYMB8GA1UdIwQYMBaAFKNB\nBqyQbdFK63WlShCZs7Ghi0r3MEEGA1UdIAQ6MDgwNgYEVR0gADAuMCwGCCsGAQUF\nBwIBFiBodHRwczovL2NlcnRzLnNlY3VyZXRydXN0LmNvbS9DQTA5BgNVHR8EMjAw\nMC6gLKAqhihodHRwOi8vY3JsLnNlY3VyZXRydXN0LmNvbS9UV0dQMjU2Q0EuY3Js\nMHgGCCsGAQUFBwEBBGwwajAoBggrBgEFBQcwAYYcaHR0cDovL29jc3Auc2VjdXJl\ndHJ1c3QuY29tLzA+BggrBgEFBQcwAoYyaHR0cDovL2NlcnRzLnNlY3VyZXRydXN0\nLmNvbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwIDSQAwRgIhAN8G\nPwKUpMgV3LZjq7fuKS96f15BrwBjmTlKhOwgX83BAiEA9WpWhzRRoKeJGAqqXrMk\nZ8RE9xRtOFBqYdv9H5CeTVk=\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9AF531423847B85FB677932AAF80508\n-----BEGIN CERTIFICATE-----\nMIIDmDCCAz+gAwIBAgITBs6C2a9TFCOEe4X7Z3kyqvgFCDAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBmjFDMEEGA1UEAxM6\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBEb21haW4gVmFsaWRhdGlvbiBD\nQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAw\nDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMw\nWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATWpfTIQFPkZIoXXMDN9utRU+AbLGcg\nBmLA06x2qqdcpCMlYFoJhuRWzYCiqz1mKrAvNlQYkgoHfemk92sf8iaro4IBaTCC\nAWUwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAww\nCgYIKwYBBQUHAwEwHQYDVR0OBBYEFA/DUGGZflb1xtmcOeiDWJAHuhq0MB8GA1Ud\nIwQYMBaAFKNBBqyQbdFK63WlShCZs7Ghi0r3MD0GA1UdIAQ2MDQwMgYEVR0gADAq\nMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NBMDcGA1Ud\nHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9UV0dQMjU2Q0Eu\nY3JsMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0cDovL29jc3AudHJ1\nc3R3YXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNv\nbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwIDRwAwRAIgICvA5ttD\n0oeUcd37iYvoQ7iMIpZINp4e1j5NrlI3UnYCIEZhimm9+1dUWAfx9ZkGmIu0HiHR\nzEZifAHbPM3SJbRu\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A20A3797CD878EB3DAA41D08680AF7\n-----BEGIN CERTIFICATE-----\nMIIDpjCCA0ugAwIBAgITBs6C2aIKN5fNh46z2qQdCGgK9zAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBnDFFMEMGA1UEAxM8\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBFeHRlbmRlZCBWYWxpZGF0aW9u\nIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4x\nEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJV\nUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKXHfFxFDVI6uYWZlWciFFKtYzuJ\n+IBhot3PQGikE3sjU8d9dARkZCkInqmDyP/+XiLzgrYPMy7NS8lZcRsE5p2jggFz\nMIIBbzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUE\nFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHQYDVR0OBBYEFAwlVqqzYgakv+7gGxtX\nzC8s9g1QMB8GA1UdIwQYMBaAFKNBBqyQbdFK63WlShCZs7Ghi0r3MD0GA1UdIAQ2\nMDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9UV0dQMjU2Q0EuY3JsMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0\ncDovL29jc3AudHJ1c3R3YXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wu\ndHJ1c3R3YXZlLmNvbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwID\nSQAwRgIhALahroq1NScrFeCvG5uMgMKH/bo190D+Mkh2ZIojrUOfAiEAosFXFE73\n0WLRPjX2uOkLhXuA4cQEb1R1oeGDH4MNVOo=\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A8B57C104843994DACD79E28633E5F\n-----BEGIN CERTIFICATE-----\nMIIDqDCCA0+gAwIBAgITBs6C2ai1fBBIQ5lNrNeeKGM+XzAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBoDFJMEcGA1UEAxNA\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBPcmdhbml6YXRpb24gVmFsaWRh\ndGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UE\nBhMCVVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmHWo0mogvX1J61xysTqsn\n6qV06wxUH68/QJ2aDIka6beTrDoTZv3mIkyPxFTPy+9idjgSAERlBsDirgO2/NiY\no4IBczCCAW8wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwHQYD\nVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBSv+Ju8XTSl3tA+\nFCldDY4lrbClhTAfBgNVHSMEGDAWgBSjQQaskG3RSut1pUoQmbOxoYtK9zA9BgNV\nHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9DQTA3BgNVHR8EMDAuMCygKqAohiZodHRwOi8vY3JsLnRydXN0d2F2\nZS5jb20vVFdHUDI1NkNBLmNybDByBggrBgEFBQcBAQRmMGQwJgYIKwYBBQUHMAGG\nGmh0dHA6Ly9vY3NwLnRydXN0d2F2ZS5jb20vMDoGCCsGAQUFBzAChi5odHRwOi8v\nc3NsLnRydXN0d2F2ZS5jb20vaXNzdWVycy9UV0dQMjU2Q0EuY3J0MAoGCCqGSM49\nBAMCA0cAMEQCIGa3JyBYlXxRN5GIIulLaDxnANNRnY4j1Et166CCC5h+AiAVUlzJ\nIJTfUDBU7jnSTKSw/F+bLIPvaC6frMZv0h+RTA==\n-----END CERTIFICATE-----\n\nSecureTrust TWG ECDSA P-384 Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C58D91DEF98A7F9EB2666CFE7BE1EE\n-----BEGIN CERTIFICATE-----\nMIIDqjCCAy+gAwIBAgITBy8w6cWNkd75in+esmZs/nvh7jAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMjAxMDA4MDY0OTQxWhcNMzAxMDA4MDY0ODQxWjBiMQswCQYDVQQGEwJV\nUzEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxPTA7BgNVBAMTNFNlY3VyZVRydXN0IFRX\nRyBFQ0RTQSBQLTM4NCBTZWN1cmUgRW1haWwgQ0EsIExldmVsIDIwdjAQBgcqhkjO\nPQIBBgUrgQQAIgNiAAR4nTJ6MvtPBb7+L3tklhdDw0tr5FNY5Q1hsp6NR5OzZVeG\nx/X3VrCvkOsae1OEZHNqWCnnI1s/ix9qn/2+q0pPpXrT6wkN/HOQzpQaJWzCF7yX\nIfIB0o+x1Pr17UOX2qGjggF1MIIBcTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1Ud\nDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDBDAdBgNVHQ4EFgQUJd3xyUp6\n6EP6L9hCmkRrWAcU2mwwHwYDVR0jBBgwFoAUVamEidLBMr0Yy2ymB07I552+gpAw\nQQYDVR0gBDowODA2BgRVHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMu\nc2VjdXJldHJ1c3QuY29tL0NBMDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu\nc2VjdXJldHJ1c3QuY29tL1RXR1AzODRDQS5jcmwweAYIKwYBBQUHAQEEbDBqMCgG\nCCsGAQUFBzABhhxodHRwOi8vb2NzcC5zZWN1cmV0cnVzdC5jb20vMD4GCCsGAQUF\nBzAChjJodHRwOi8vY2VydHMuc2VjdXJldHJ1c3QuY29tL2lzc3VlcnMvVFdHUDM4\nNENBLmNydDAKBggqhkjOPQQDAwNpADBmAjEA8X5zwZHtdHjLIn60rwG3Z3NAa6cU\n6gOFxyF+ksTCXvWCUP0oFUqsRPMKMYE2mtdQAjEA2diuEHTPUgCQ0ynhLjged8BO\nFyzL3UlFieGGp90v58gUpfjoFq0BReAw7MPYo/Qa\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9B07A17CC5376157813389A2930A44A\n-----BEGIN CERTIFICATE-----\nMIID1TCCA1ygAwIBAgITBs6C2bB6F8xTdhV4EziaKTCkSjAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBmjFDMEEGA1UEAxM6\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBEb21haW4gVmFsaWRhdGlvbiBD\nQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAw\nDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMw\ndjAQBgcqhkjOPQIBBgUrgQQAIgNiAASxlBEflNumTKsypgdOscM2x6ZRpQGSyB4B\nhJScRQI81UhZvzYSwxPWcxNZwFQoV457HfqR51pviJnHltRS8MJhJ9Q9Rf1sSmy4\nW6SPsM9qnBjwfBRxghByIsEIaTW/PKyjggFpMIIBZTASBgNVHRMBAf8ECDAGAQH/\nAgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4E\nFgQUp6etGGS1u/oGGEfIwJ68Zf9pAWAwHwYDVR0jBBgwFoAUVamEidLBMr0Yy2ym\nB07I552+gpAwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBz\nOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDov\nL2NybC50cnVzdHdhdmUuY29tL1RXR1AzODRDQS5jcmwwcgYIKwYBBQUHAQEEZjBk\nMCYGCCsGAQUFBzABhhpodHRwOi8vb2NzcC50cnVzdHdhdmUuY29tLzA6BggrBgEF\nBQcwAoYuaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvVFdHUDM4NENB\nLmNydDAKBggqhkjOPQQDAwNnADBkAjA6fS1jRjt+DvnWSI58v4lX+8DCXbdEhDaB\nbBOS/rXwS/ntsFXqTf0B90GPv3AWlFMCMBbz6nXMwX0jKRkaFZOZx9tvwUapdq7M\n6jYpT/NnAzH68x1t3/7ysZ8lPuKIqAwdKQ==\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A331594530006781829387E40DBCB6\n-----BEGIN CERTIFICATE-----\nMIID4zCCA2igAwIBAgITBs6C2aMxWUUwAGeBgpOH5A28tjAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBnDFFMEMGA1UEAxM8\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBFeHRlbmRlZCBWYWxpZGF0aW9u\nIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4x\nEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJV\nUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABKcVGieqBjW3BuVza9VhkBlpGLHLZqQg\nI0GXaTpt5CogNWz6BmlZ1yAPjRnDUVfVwl57ATRtV7u+5TPFzKZ+RheFVc0iA8vl\nQ2JINGRz8XLDaivvuygQtFKSzCWn4e66cKOCAXMwggFvMBIGA1UdEwEB/wQIMAYB\nAf8CAQAwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF\nBQcDATAdBgNVHQ4EFgQUMFfit09gayJACkNfT/oNzXO8JCcwHwYDVR0jBBgwFoAU\nVamEidLBMr0Yy2ymB07I552+gpAwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYB\nBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwNwYDVR0fBDAwLjAs\noCqgKIYmaHR0cDovL2NybC50cnVzdHdhdmUuY29tL1RXR1AzODRDQS5jcmwwcgYI\nKwYBBQUHAQEEZjBkMCYGCCsGAQUFBzABhhpodHRwOi8vb2NzcC50cnVzdHdhdmUu\nY29tLzA6BggrBgEFBQcwAoYuaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3Vl\ncnMvVFdHUDM4NENBLmNydDAKBggqhkjOPQQDAwNpADBmAjEA6pScrGT+SruK7iON\n7iDJZfhQsjfQIhaq9sHiEXd89B8ibWOb57no/K265dPxeuALAjEA27NTMZM344eT\nX3df9B22dY5ZshsUMIiRcMo1K4B/GBO8SIA0jParkHS5g4WO5K7O\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A9D8E29837EF90BEAF59DC6551BED6\n-----BEGIN CERTIFICATE-----\nMIID5jCCA2ygAwIBAgITBs6C2anY4pg375C+r1ncZVG+1jAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBoDFJMEcGA1UEAxNA\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBPcmdhbml6YXRpb24gVmFsaWRh\ndGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UE\nBhMCVVMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATvG09PrsO8UQZhH5Zw54rwgcUw\nKjC9D2V3myjD5WOa8uxdTL8PzdwPk4TCcSf6UUG1Tt74j/I+vBOi2tgMcDt68Zld\nvTj+jZT1BBYTQtYh6/dOUjmiapQU5XqoFMRNubGjggFzMIIBbzASBgNVHRMBAf8E\nCDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYI\nKwYBBQUHAwEwHQYDVR0OBBYEFDoXwH5iO1eguEDKzDRHzZZ+/AmIMB8GA1UdIwQY\nMBaAFFWphInSwTK9GMtspgdOyOedvoKQMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgG\nCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NBMDcGA1UdHwQw\nMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9UV0dQMzg0Q0EuY3Js\nMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3\nYXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9p\nc3N1ZXJzL1RXR1AzODRDQS5jcnQwCgYIKoZIzj0EAwMDaAAwZQIwMyHlVCVMacxP\nO0fC+uc4M7Eq1F9woaWBmLSSNC6EWe3nShMqsR9HrNWrOHBHucNWAjEArwrzEM8g\nJkR4iZxbyYNIn2sNEkNZt2pxqJn4G2cDDDFfOarykKVzP1aJ9OMdYUvs\n-----END CERTIFICATE-----\n\nTrustwave S/MIME SHA256 CA, Level 1\nXRamp Security Services Inc\n3A83B71EE02C3CCA1CE1A2643E9B66EA\n-----BEGIN CERTIFICATE-----\nMIIFHTCCBAWgAwIBAgIQOoO3HuAsPMoc4aJkPptm6jANBgkqhkiG9w0BAQsFADCB\ngjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk\nMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY\nUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQxMDAxMTky\nMjM4WhcNMjQwOTI4MTkyMjM4WjCBpDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCEls\nbGlub2lzMRAwDgYDVQQHEwdDaGljYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9s\nZGluZ3MsIEluYy4xLDAqBgNVBAMTI1RydXN0d2F2ZSBTL01JTUUgU0hBMjU2IENB\nLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4c5I5giD0wEh+RuoLIJkD7a6mBlm\n+YzTtXSefGejVVYtpjclkUl4C4hEfQMCUcrBnU3ORHVprXi/Q82dKNFPac8FI9bj\n8mtq0cjdSDfXJKfdf52wPXnTjASwKyhJt+CoJik+Fz72KAkjxi+OUSpWdQBeAQra\ndbtu4UGFTgPcuU/cwpF8J0g4CGk/saVKkkJNpq5wqpfQRYl025FyKbzmRjqhB/Ta\npoHlbHMQ7aeoZ+qtDC+eWnE3AqTUHx14Z5fegjLQRmPWqqdeZafthouglbEuHt4A\neyzefTDNwyXjUiRD/n0kaNNW+lcsLpw7ouw1OU8mwQ0C7LoPJljpXRjvOwIDAQAB\no4IBaTCCAWUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUDDOjV6rjq9ZL\ncBs2nqPtYVDmr3QwDgYDVR0PAQH/BAQDAgGGMEgGA1UdIARBMD8wPQYPKwYBBAGB\n7RgDAwMFBAMDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5j\nb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdhdmUuY29t\nL1hHQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29j\nc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdh\ndmUuY29tL2lzc3VlcnMvWEdDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwQwHwYD\nVR0jBBgwFoAUxk+iPQZjhAmczmLkBKyNXLXpthswDQYJKoZIhvcNAQELBQADggEB\nAIdGLHufUegzFKVBQVWs3YAIFqCcJvdak14TMRImxJsnQWLz+jIW0olC0JATY6Ng\nxAbjIJA4wtW/tA+rgE6WcA5y3bLN3bRMQVDSu6X26hkVjvwo4/VYykOp3e9Cqlfe\ngJAsrqBQKXkUpEbYEmmorXxj6/74e//xwXTz0XS0BS9cXhONlTQffyJnMeLaunzQ\nS1x/MvALfPCHCZCTOfLDmwylKtHHu+V2Ks0HV+ZrzCBRR5W3MhGTU7PpNEMQwyGF\n+MG5eZTd0jyxOSOjaXQm7iDh0tG/iKZZegn5AhNdaHE74QEHTjK+teLQlo60QGBk\necyzakgVYZ/Ezalz8nQwhCA=\n-----END CERTIFICATE-----\n\nTrustwave XRamp Global Extended Validation CA, Level 1\nXRamp Security Services Inc\n00D3D519C2B2EB5C7040F64CBC957BBD2C\n-----BEGIN CERTIFICATE-----\nMIIFMDCCBBigAwIBAgIRANPVGcKy61xwQPZMvJV7vSwwDQYJKoZIhvcNAQELBQAw\ngYIxCzAJBgNVBAYTAlVTMR4wHAYDVQQLExV3d3cueHJhbXBzZWN1cml0eS5jb20x\nJDAiBgNVBAoTG1hSYW1wIFNlY3VyaXR5IFNlcnZpY2VzIEluYzEtMCsGA1UEAxMk\nWFJhbXAgR2xvYmFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE1MDgxMjIw\nMTczMVoXDTI1MDgwOTIwMTczMVowgbcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJ\nbGxpbm9pczEQMA4GA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhv\nbGRpbmdzLCBJbmMuMT8wPQYDVQQDEzZUcnVzdHdhdmUgWFJhbXAgR2xvYmFsIEV4\ndGVuZGVkIFZhbGlkYXRpb24gQ0EsIExldmVsIDExHzAdBgkqhkiG9w0BCQEWEGNh\nQHRydXN0d2F2ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9\nAAbj9SknrNJT9pDatGvlR386KRi0SkqIOGr+C5W91+8E8PqydEHwjrnrWt/MTLGO\n+2kfEO3TEJlWxQQqbHy8SdhjCANefLzOT1cfTfjroWBIS9yiHpBIQytAaz/td95Y\n+JKrRBVCnIR/wB5qMMQ982RWwqggD763XLma0c1AIndsZL+dXp1zET4KBreoxn3q\nRYzMIsZIL2mAJoiCOTYuOGrOMVuaQn0HSu3K7bU+CpkdLQ/j+ikcQiI10IL9oOcO\nU9Gnt/hRyUX66Gk91RIpYXhla2tIYrg7ezrAnFoZIZCb891JjFtbSEOvAAK9F5d6\nfkkjPx0432o/v1c5GRFPAgMBAAGjggFoMIIBZDASBgNVHRMBAf8ECDAGAQH/AgEA\nMB0GA1UdDgQWBBTFzrk7QkXAzQnlaOhIOoNdbI6rGDAOBgNVHQ8BAf8EBAMCAYYw\nPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRy\ndXN0d2F2ZS5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVz\ndHdhdmUuY29tL1hHQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZ\naHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3Nz\nbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvWEdDQS5jcnQwHQYDVR0lBBYwFAYIKwYB\nBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFMZPoj0GY4QJnM5i5ASsjVy16bYb\nMA0GCSqGSIb3DQEBCwUAA4IBAQCA2N/WVTGYRGNTuvF2qKWPrQUx0/6pKmGqELl6\nNXs1bwRXCci98SkeNjiaa2dHEwcGR43/M1Y0nekXP8QCEFVqGOwaY0pnTb8wL+CI\n/HTp1zfmoCYNvtzt1fIq/+9ynLYEjX8rsrf51HIEjJJK8K3k/Ub3cFT+yJKNN2YN\nJS0IvJYlbpqS6VbcInwLcW7WvJmXUuL7t0Vtt0d2q1h5UdnJQP+skiOmN/B0zPut\nbRC4v5pNGJJmwbk58UlOSeviH2qzDGutamOJ6dFNWqQFoZorAT7fUsr3WDA4HKtx\neraYdCIRJX7weW9xpdMNsVO7Wy/Ma7Fz9fzKnOH5mnInBOof\n-----END CERTIFICATE-----\n\nSecure Global CA\nSecureTrust Corporation\n075622A4E8D48A894DF413C8F0F8EAA5\n-----BEGIN CERTIFICATE-----\nMIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx\nMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg\nQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG\nSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ\niQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa\n/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ\njnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI\nHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7\nsFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w\ngZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF\nMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw\nKaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG\nAQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L\nURYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO\nH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm\nI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY\niNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc\nf8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW\n-----END CERTIFICATE-----\n\nSecureTrust CA\nSecureTrust Corporation\n0CF08E5C0816A5AD427FF0EB271859D0\n-----BEGIN CERTIFICATE-----\nMIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz\nMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv\ncnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz\nZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO\n0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao\nwW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj\n7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS\n8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT\nBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB\n/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg\nJYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC\nNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3\n6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/\n3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm\nD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS\nCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR\n3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=\n-----END CERTIFICATE-----\n\nTrustwave Global Certification Authority\nTrustwave Holdings, Inc.\n05F70E86DA49F346352EBAB2\n-----BEGIN CERTIFICATE-----\nMIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw\nCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x\nITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1\nc3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx\nOTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI\nSWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI\nb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp\nY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn\nswuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu\n7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8\n1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW\n80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP\nJqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l\nRtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw\nhI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10\ncoos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc\nBW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n\ntwiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud\nEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud\nDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W\n0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe\nuyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q\nlG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB\naCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE\nsLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT\nMaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe\nqu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh\nVicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8\nh6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9\nEEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK\nyeC2nOnOcXHebD8WpHk=\n-----END CERTIFICATE-----\n\nTrustwave Global ECC P256 Certification Authority\nTrustwave Holdings, Inc.\n0D6A5F083F285C3E5195DF5D\n-----BEGIN CERTIFICATE-----\nMIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf\nBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3\nYXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x\nNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G\nA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0\nd2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF\nQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG\nSM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN\nFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w\nDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw\nCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh\nDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7\n-----END CERTIFICATE-----\n\nTrustwave Global ECC P384 Certification Authority\nTrustwave Holdings, Inc.\n08BD85976C9927A48068473B\n-----BEGIN CERTIFICATE-----\nMIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf\nBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3\nYXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x\nNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G\nA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0\nd2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF\nQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB\nBAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ\nj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF\n1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\nA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3\nAZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC\nMGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu\nSw==\n-----END CERTIFICATE-----\n";
47
47
 
48
48
  var PKG_NAME = "@hpcc-js/comms";
49
- var PKG_VERSION = "2.83.0";
50
- var BUILD_VERSION = "2.104.22";
49
+ var PKG_VERSION = "2.83.2";
50
+ var BUILD_VERSION = "2.104.24";
51
51
 
52
52
  /******************************************************************************
53
53
  Copyright (c) Microsoft Corporation.
@@ -139,7 +139,7 @@ function __spreadArray(to, from, pack) {
139
139
  return to.concat(ar || Array.prototype.slice.call(from));
140
140
  }
141
141
 
142
- var logger$4 = util.scopedLogger("comms/connection.ts");
142
+ var logger$5 = util.scopedLogger("comms/connection.ts");
143
143
  function instanceOfIOptions(object) {
144
144
  return "baseUrl" in object;
145
145
  }
@@ -241,12 +241,12 @@ function jsonp(opts, action, request, responseType, header) {
241
241
  respondedTimeout -= respondedTick;
242
242
  if (respondedTimeout <= 0) {
243
243
  clearInterval(progress);
244
- logger$4.error("Request timeout: " + script.src);
244
+ logger$5.error("Request timeout: " + script.src);
245
245
  doCallback();
246
246
  reject(Error("Request timeout: " + script.src));
247
247
  }
248
248
  else {
249
- logger$4.debug("Request pending (" + respondedTimeout / 1000 + " sec): " + script.src);
249
+ logger$5.debug("Request pending (" + respondedTimeout / 1000 + " sec): " + script.src);
250
250
  }
251
251
  }
252
252
  }, respondedTick);
@@ -656,202 +656,202 @@ var FileSprayService = /** @class */ (function (_super) {
656
656
  return FileSprayService;
657
657
  }(FileSprayServiceBase));
658
658
 
659
- var ViewMemberType;
660
- (function (ViewMemberType) {
661
- ViewMemberType["User"] = "User";
662
- ViewMemberType["Group"] = "Group";
663
- })(ViewMemberType || (ViewMemberType = {}));
664
- var UserSortBy;
665
- (function (UserSortBy) {
666
- UserSortBy["Username"] = "Username";
667
- UserSortBy["Fullname"] = "Fullname";
668
- UserSortBy["Passwordexpiration"] = "Passwordexpiration";
669
- UserSortBy["EmployeeID"] = "EmployeeID";
670
- UserSortBy["EmployeeNumber"] = "EmployeeNumber";
671
- })(UserSortBy || (UserSortBy = {}));
672
- var GroupSortBy;
673
- (function (GroupSortBy) {
674
- GroupSortBy["Name"] = "Name";
675
- GroupSortBy["ManagedBy"] = "ManagedBy";
676
- })(GroupSortBy || (GroupSortBy = {}));
677
- var AccountTypeReq;
678
- (function (AccountTypeReq) {
679
- AccountTypeReq["Any"] = "Any";
680
- AccountTypeReq["User"] = "User";
681
- AccountTypeReq["Group"] = "Group";
682
- })(AccountTypeReq || (AccountTypeReq = {}));
683
- var ResourcePermissionSortBy;
684
- (function (ResourcePermissionSortBy) {
685
- ResourcePermissionSortBy["Name"] = "Name";
686
- ResourcePermissionSortBy["Type"] = "Type";
687
- })(ResourcePermissionSortBy || (ResourcePermissionSortBy = {}));
688
- var ResourceSortBy;
689
- (function (ResourceSortBy) {
690
- ResourceSortBy["Name"] = "Name";
691
- })(ResourceSortBy || (ResourceSortBy = {}));
659
+ exports.WsAccess = void 0;
660
+ (function (WsAccess) {
661
+ (function (ViewMemberType) {
662
+ ViewMemberType["User"] = "User";
663
+ ViewMemberType["Group"] = "Group";
664
+ })(WsAccess.ViewMemberType || (WsAccess.ViewMemberType = {}));
665
+ (function (UserSortBy) {
666
+ UserSortBy["username"] = "username";
667
+ UserSortBy["fullname"] = "fullname";
668
+ UserSortBy["passwordexpiration"] = "passwordexpiration";
669
+ UserSortBy["employeeID"] = "employeeID";
670
+ UserSortBy["employeeNumber"] = "employeeNumber";
671
+ })(WsAccess.UserSortBy || (WsAccess.UserSortBy = {}));
672
+ (function (GroupSortBy) {
673
+ GroupSortBy["Name"] = "Name";
674
+ GroupSortBy["ManagedBy"] = "ManagedBy";
675
+ })(WsAccess.GroupSortBy || (WsAccess.GroupSortBy = {}));
676
+ (function (AccountTypeReq) {
677
+ AccountTypeReq["Any"] = "Any";
678
+ AccountTypeReq["User"] = "User";
679
+ AccountTypeReq["Group"] = "Group";
680
+ })(WsAccess.AccountTypeReq || (WsAccess.AccountTypeReq = {}));
681
+ (function (ResourcePermissionSortBy) {
682
+ ResourcePermissionSortBy["Name"] = "Name";
683
+ ResourcePermissionSortBy["Type"] = "Type";
684
+ })(WsAccess.ResourcePermissionSortBy || (WsAccess.ResourcePermissionSortBy = {}));
685
+ (function (ResourceSortBy) {
686
+ ResourceSortBy["Name"] = "Name";
687
+ })(WsAccess.ResourceSortBy || (WsAccess.ResourceSortBy = {}));
688
+ })(exports.WsAccess || (exports.WsAccess = {}));
692
689
  var AccessServiceBase = /** @class */ (function (_super) {
693
690
  __extends(AccessServiceBase, _super);
694
691
  function AccessServiceBase(optsConnection) {
695
- return _super.call(this, optsConnection, "ws_access", "1.16") || this;
692
+ return _super.call(this, optsConnection, "ws_access", "1.17") || this;
696
693
  }
697
694
  AccessServiceBase.prototype.AccountPermissions = function (request) {
698
- return this._connection.send("AccountPermissions", request);
695
+ return this._connection.send("AccountPermissions", request, "json", false, undefined, "AccountPermissionsResponse");
696
+ };
697
+ AccessServiceBase.prototype.AccountPermissionsV2 = function (request) {
698
+ return this._connection.send("AccountPermissionsV2", request, "json", false, undefined, "AccountPermissionsV2Response");
699
699
  };
700
700
  AccessServiceBase.prototype.AddUser = function (request) {
701
- return this._connection.send("AddUser", request);
701
+ return this._connection.send("AddUser", request, "json", false, undefined, "AddUserResponse");
702
702
  };
703
703
  AccessServiceBase.prototype.AddView = function (request) {
704
- return this._connection.send("AddView", request);
704
+ return this._connection.send("AddView", request, "json", false, undefined, "AddViewResponse");
705
705
  };
706
706
  AccessServiceBase.prototype.AddViewColumn = function (request) {
707
- return this._connection.send("AddViewColumn", request);
707
+ return this._connection.send("AddViewColumn", request, "json", false, undefined, "AddViewColumnResponse");
708
708
  };
709
709
  AccessServiceBase.prototype.AddViewMember = function (request) {
710
- return this._connection.send("AddViewMember", request);
710
+ return this._connection.send("AddViewMember", request, "json", false, undefined, "AddViewMemberResponse");
711
711
  };
712
712
  AccessServiceBase.prototype.ClearPermissionsCache = function (request) {
713
- return this._connection.send("ClearPermissionsCache", request);
713
+ return this._connection.send("ClearPermissionsCache", request, "json", false, undefined, "ClearPermissionsCacheResponse");
714
714
  };
715
715
  AccessServiceBase.prototype.DeleteView = function (request) {
716
- return this._connection.send("DeleteView", request);
716
+ return this._connection.send("DeleteView", request, "json", false, undefined, "DeleteViewResponse");
717
717
  };
718
718
  AccessServiceBase.prototype.DeleteViewColumn = function (request) {
719
- return this._connection.send("DeleteViewColumn", request);
719
+ return this._connection.send("DeleteViewColumn", request, "json", false, undefined, "DeleteViewColumnResponse");
720
720
  };
721
721
  AccessServiceBase.prototype.DeleteViewMember = function (request) {
722
- return this._connection.send("DeleteViewMember", request);
722
+ return this._connection.send("DeleteViewMember", request, "json", false, undefined, "DeleteViewMemberResponse");
723
723
  };
724
724
  AccessServiceBase.prototype.DisableScopeScans = function (request) {
725
- return this._connection.send("DisableScopeScans", request);
725
+ return this._connection.send("DisableScopeScans", request, "json", false, undefined, "DisableScopeScansResponse");
726
726
  };
727
727
  AccessServiceBase.prototype.EnableScopeScans = function (request) {
728
- return this._connection.send("EnableScopeScans", request);
728
+ return this._connection.send("EnableScopeScans", request, "json", false, undefined, "EnableScopeScansResponse");
729
729
  };
730
730
  AccessServiceBase.prototype.FilePermission = function (request) {
731
- return this._connection.send("FilePermission", request);
731
+ return this._connection.send("FilePermission", request, "json", false, undefined, "FilePermissionResponse");
732
732
  };
733
733
  AccessServiceBase.prototype.GroupAction = function (request) {
734
- return this._connection.send("GroupAction", request);
734
+ return this._connection.send("GroupAction", request, "json", false, undefined, "GroupActionResponse");
735
735
  };
736
736
  AccessServiceBase.prototype.GroupAdd = function (request) {
737
- return this._connection.send("GroupAdd", request);
737
+ return this._connection.send("GroupAdd", request, "json", false, undefined, "GroupAddResponse");
738
738
  };
739
739
  AccessServiceBase.prototype.GroupEdit = function (request) {
740
- return this._connection.send("GroupEdit", request);
740
+ return this._connection.send("GroupEdit", request, "json", false, undefined, "GroupEditResponse");
741
741
  };
742
742
  AccessServiceBase.prototype.GroupMemberEdit = function (request) {
743
- return this._connection.send("GroupMemberEdit", request);
743
+ return this._connection.send("GroupMemberEdit", request, "json", false, undefined, "GroupMemberEditResponse");
744
744
  };
745
745
  AccessServiceBase.prototype.GroupMemberEditInput = function (request) {
746
- return this._connection.send("GroupMemberEditInput", request);
746
+ return this._connection.send("GroupMemberEditInput", request, "json", false, undefined, "GroupMemberEditInputResponse");
747
747
  };
748
748
  AccessServiceBase.prototype.GroupMemberQuery = function (request) {
749
- return this._connection.send("GroupMemberQuery", request);
749
+ return this._connection.send("GroupMemberQuery", request, "json", false, undefined, "GroupMemberQueryResponse");
750
750
  };
751
751
  AccessServiceBase.prototype.GroupQuery = function (request) {
752
- return this._connection.send("GroupQuery", request);
752
+ return this._connection.send("GroupQuery", request, "json", false, undefined, "GroupQueryResponse");
753
753
  };
754
754
  AccessServiceBase.prototype.Groups = function (request) {
755
- return this._connection.send("Groups", request);
755
+ return this._connection.send("Groups", request, "json", false, undefined, "GroupResponse");
756
756
  };
757
757
  AccessServiceBase.prototype.PermissionAction = function (request) {
758
- return this._connection.send("PermissionAction", request);
758
+ return this._connection.send("PermissionAction", request, "json", false, undefined, "PermissionActionResponse");
759
759
  };
760
760
  AccessServiceBase.prototype.PermissionAddInput = function (request) {
761
- return this._connection.send("PermissionAddInput", request);
761
+ return this._connection.send("PermissionAddInput", request, "json", false, undefined, "PermissionAddResponse");
762
762
  };
763
763
  AccessServiceBase.prototype.Permissions = function (request) {
764
- return this._connection.send("Permissions", request);
764
+ return this._connection.send("Permissions", request, "json", false, undefined, "BasednsResponse");
765
765
  };
766
766
  AccessServiceBase.prototype.PermissionsReset = function (request) {
767
- return this._connection.send("PermissionsReset", request);
767
+ return this._connection.send("PermissionsReset", request, "json", false, undefined, "PermissionsResetResponse");
768
768
  };
769
769
  AccessServiceBase.prototype.PermissionsResetInput = function (request) {
770
- return this._connection.send("PermissionsResetInput", request);
770
+ return this._connection.send("PermissionsResetInput", request, "json", false, undefined, "PermissionsResetInputResponse");
771
771
  };
772
772
  AccessServiceBase.prototype.Ping = function (request) {
773
- return this._connection.send("Ping", request);
773
+ return this._connection.send("Ping", request, "json", false, undefined, "ws_accessPingResponse");
774
774
  };
775
775
  AccessServiceBase.prototype.QueryScopeScansEnabled = function (request) {
776
- return this._connection.send("QueryScopeScansEnabled", request);
776
+ return this._connection.send("QueryScopeScansEnabled", request, "json", false, undefined, "QueryScopeScansEnabledResponse");
777
777
  };
778
778
  AccessServiceBase.prototype.QueryUserViewColumns = function (request) {
779
- return this._connection.send("QueryUserViewColumns", request);
779
+ return this._connection.send("QueryUserViewColumns", request, "json", false, undefined, "QueryUserViewColumnsResponse");
780
780
  };
781
781
  AccessServiceBase.prototype.QueryViewColumns = function (request) {
782
- return this._connection.send("QueryViewColumns", request);
782
+ return this._connection.send("QueryViewColumns", request, "json", false, undefined, "QueryViewColumnsResponse");
783
783
  };
784
784
  AccessServiceBase.prototype.QueryViewMembers = function (request) {
785
- return this._connection.send("QueryViewMembers", request);
785
+ return this._connection.send("QueryViewMembers", request, "json", false, undefined, "QueryViewMembersResponse");
786
786
  };
787
787
  AccessServiceBase.prototype.QueryViews = function (request) {
788
- return this._connection.send("QueryViews", request);
788
+ return this._connection.send("QueryViews", request, "json", false, undefined, "QueryViewsResponse");
789
789
  };
790
790
  AccessServiceBase.prototype.ResourceAdd = function (request) {
791
- return this._connection.send("ResourceAdd", request);
791
+ return this._connection.send("ResourceAdd", request, "json", false, undefined, "ResourceAddResponse");
792
792
  };
793
793
  AccessServiceBase.prototype.ResourceAddInput = function (request) {
794
- return this._connection.send("ResourceAddInput", request);
794
+ return this._connection.send("ResourceAddInput", request, "json", false, undefined, "ResourceAddInputResponse");
795
795
  };
796
796
  AccessServiceBase.prototype.ResourceDelete = function (request) {
797
- return this._connection.send("ResourceDelete", request);
797
+ return this._connection.send("ResourceDelete", request, "json", false, undefined, "ResourceDeleteResponse");
798
798
  };
799
799
  AccessServiceBase.prototype.ResourcePermissionQuery = function (request) {
800
- return this._connection.send("ResourcePermissionQuery", request);
800
+ return this._connection.send("ResourcePermissionQuery", request, "json", false, undefined, "ResourcePermissionQueryResponse");
801
801
  };
802
802
  AccessServiceBase.prototype.ResourcePermissions = function (request) {
803
- return this._connection.send("ResourcePermissions", request);
803
+ return this._connection.send("ResourcePermissions", request, "json", false, undefined, "ResourcePermissionsResponse");
804
804
  };
805
805
  AccessServiceBase.prototype.ResourceQuery = function (request) {
806
- return this._connection.send("ResourceQuery", request);
806
+ return this._connection.send("ResourceQuery", request, "json", false, undefined, "ResourceQueryResponse");
807
807
  };
808
808
  AccessServiceBase.prototype.Resources = function (request) {
809
- return this._connection.send("Resources", request);
809
+ return this._connection.send("Resources", request, "json", false, undefined, "ResourcesResponse");
810
810
  };
811
811
  AccessServiceBase.prototype.UserAccountExport = function (request) {
812
- return this._connection.send("UserAccountExport", request);
812
+ return this._connection.send("UserAccountExport", request, "json", false, undefined, "UserAccountExportResponse");
813
813
  };
814
814
  AccessServiceBase.prototype.UserAction = function (request) {
815
- return this._connection.send("UserAction", request);
815
+ return this._connection.send("UserAction", request, "json", false, undefined, "UserActionResponse");
816
816
  };
817
817
  AccessServiceBase.prototype.UserEdit = function (request) {
818
- return this._connection.send("UserEdit", request);
818
+ return this._connection.send("UserEdit", request, "json", false, undefined, "UserEditResponse");
819
819
  };
820
820
  AccessServiceBase.prototype.UserGroupEdit = function (request) {
821
- return this._connection.send("UserGroupEdit", request);
821
+ return this._connection.send("UserGroupEdit", request, "json", false, undefined, "UserGroupEditResponse");
822
822
  };
823
823
  AccessServiceBase.prototype.UserGroupEditInput = function (request) {
824
- return this._connection.send("UserGroupEditInput", request);
824
+ return this._connection.send("UserGroupEditInput", request, "json", false, undefined, "UserGroupEditInputResponse");
825
825
  };
826
826
  AccessServiceBase.prototype.UserInfoEdit = function (request) {
827
- return this._connection.send("UserInfoEdit", request);
827
+ return this._connection.send("UserInfoEdit", request, "json", false, undefined, "UserInfoEditResponse");
828
828
  };
829
829
  AccessServiceBase.prototype.UserInfoEditInput = function (request) {
830
- return this._connection.send("UserInfoEditInput", request);
830
+ return this._connection.send("UserInfoEditInput", request, "json", false, undefined, "UserInfoEditInputResponse");
831
831
  };
832
832
  AccessServiceBase.prototype.UserPosix = function (request) {
833
- return this._connection.send("UserPosix", request);
833
+ return this._connection.send("UserPosix", request, "json", false, undefined, "UserPosixResponse");
834
834
  };
835
835
  AccessServiceBase.prototype.UserPosixInput = function (request) {
836
- return this._connection.send("UserPosixInput", request);
836
+ return this._connection.send("UserPosixInput", request, "json", false, undefined, "UserPosixInputResponse");
837
837
  };
838
838
  AccessServiceBase.prototype.UserQuery = function (request) {
839
- return this._connection.send("UserQuery", request);
839
+ return this._connection.send("UserQuery", request, "json", false, undefined, "UserQueryResponse");
840
840
  };
841
841
  AccessServiceBase.prototype.UserResetPass = function (request) {
842
- return this._connection.send("UserResetPass", request);
842
+ return this._connection.send("UserResetPass", request, "json", false, undefined, "UserResetPassResponse");
843
843
  };
844
844
  AccessServiceBase.prototype.UserResetPassInput = function (request) {
845
- return this._connection.send("UserResetPassInput", request);
845
+ return this._connection.send("UserResetPassInput", request, "json", false, undefined, "UserResetPassInputResponse");
846
846
  };
847
847
  AccessServiceBase.prototype.UserSudoers = function (request) {
848
- return this._connection.send("UserSudoers", request);
848
+ return this._connection.send("UserSudoers", request, "json", false, undefined, "UserSudoersResponse");
849
849
  };
850
850
  AccessServiceBase.prototype.UserSudoersInput = function (request) {
851
- return this._connection.send("UserSudoersInput", request);
851
+ return this._connection.send("UserSudoersInput", request, "json", false, undefined, "UserSudoersInputResponse");
852
852
  };
853
853
  AccessServiceBase.prototype.Users = function (request) {
854
- return this._connection.send("Users", request);
854
+ return this._connection.send("Users", request, "json", false, undefined, "UserResponse");
855
855
  };
856
856
  return AccessServiceBase;
857
857
  }(Service));
@@ -1426,7 +1426,7 @@ var LogaccessServiceBase = /** @class */ (function (_super) {
1426
1426
  return LogaccessServiceBase;
1427
1427
  }(Service));
1428
1428
 
1429
- var logger$3 = util.scopedLogger("@hpcc-js/comms/services/wsLogaccess.ts");
1429
+ var logger$4 = util.scopedLogger("@hpcc-js/comms/services/wsLogaccess.ts");
1430
1430
  var ElasticKnownColumns;
1431
1431
  (function (ElasticKnownColumns) {
1432
1432
  ElasticKnownColumns["audience"] = "hpcc.log.audience";
@@ -1628,7 +1628,7 @@ var LogaccessService = /** @class */ (function (_super) {
1628
1628
  lines = (_d = (_c = logLines.lines) === null || _c === void 0 ? void 0 : _c.map(elasticToLogLine)) !== null && _d !== void 0 ? _d : [];
1629
1629
  break;
1630
1630
  default:
1631
- logger$3.warning("Unknown RemoteLogManagerType: ".concat(logInfo.RemoteLogManagerType));
1631
+ logger$4.warning("Unknown RemoteLogManagerType: ".concat(logInfo.RemoteLogManagerType));
1632
1632
  lines = [];
1633
1633
  }
1634
1634
  return {
@@ -1637,7 +1637,7 @@ var LogaccessService = /** @class */ (function (_super) {
1637
1637
  };
1638
1638
  }
1639
1639
  catch (e) {
1640
- logger$3.error(e);
1640
+ logger$4.error(e);
1641
1641
  }
1642
1642
  return {
1643
1643
  lines: [],
@@ -5025,7 +5025,7 @@ function formatNum(num) {
5025
5025
  }
5026
5026
  return num;
5027
5027
  }
5028
- var logger$2 = util.scopedLogger("workunit.ts");
5028
+ var logger$3 = util.scopedLogger("workunit.ts");
5029
5029
  var WUStateID = exports.WUStateID;
5030
5030
  var WorkunitCache = /** @class */ (function (_super) {
5031
5031
  __extends(WorkunitCache, _super);
@@ -6141,7 +6141,7 @@ var Workunit = /** @class */ (function (_super) {
6141
6141
  return false;
6142
6142
  });
6143
6143
  if (!wuMissing) {
6144
- logger$2.warning("Unexpected exception: ");
6144
+ logger$3.warning("Unexpected exception: ");
6145
6145
  throw e;
6146
6146
  }
6147
6147
  return {};
@@ -6178,7 +6178,7 @@ var Workunit = /** @class */ (function (_super) {
6178
6178
  return false;
6179
6179
  });
6180
6180
  if (!wuMissing) {
6181
- logger$2.warning("Unexpected exception: ");
6181
+ logger$3.warning("Unexpected exception: ");
6182
6182
  throw e;
6183
6183
  }
6184
6184
  return {};
@@ -6267,7 +6267,7 @@ var Workunit = /** @class */ (function (_super) {
6267
6267
  }
6268
6268
  return new util.XMLNode(command);
6269
6269
  }).catch(function (_) {
6270
- logger$2.error(_);
6270
+ logger$3.error(_);
6271
6271
  return Promise.resolve(new util.XMLNode(command));
6272
6272
  });
6273
6273
  };
@@ -7086,156 +7086,490 @@ var Machine = /** @class */ (function (_super) {
7086
7086
  return Machine;
7087
7087
  }(util.StateObject));
7088
7088
 
7089
- var QueryCache = /** @class */ (function (_super) {
7090
- __extends(QueryCache, _super);
7091
- function QueryCache() {
7089
+ var TargetClusterCache = /** @class */ (function (_super) {
7090
+ __extends(TargetClusterCache, _super);
7091
+ function TargetClusterCache() {
7092
7092
  return _super.call(this, function (obj) {
7093
- return util.Cache.hash([obj.QueryId, obj.QuerySet]);
7093
+ return "".concat(obj.BaseUrl, "-").concat(obj.Name);
7094
7094
  }) || this;
7095
7095
  }
7096
- return QueryCache;
7096
+ return TargetClusterCache;
7097
7097
  }(util.Cache));
7098
- var _queries = new QueryCache();
7099
- var Query = /** @class */ (function (_super) {
7100
- __extends(Query, _super);
7101
- function Query(optsConnection, querySet, queryID, queryDetails) {
7098
+ var _targetCluster = new TargetClusterCache();
7099
+ var TargetCluster = /** @class */ (function (_super) {
7100
+ __extends(TargetCluster, _super);
7101
+ function TargetCluster(optsConnection, name) {
7102
7102
  var _this = _super.call(this) || this;
7103
- if (optsConnection instanceof EclService) {
7103
+ if (optsConnection instanceof TopologyService) {
7104
7104
  _this.connection = optsConnection;
7105
- // this._topology = new Topology(this.connection.opts());
7105
+ _this.machineConnection = new MachineService(optsConnection.connectionOptions());
7106
7106
  }
7107
7107
  else {
7108
- _this.connection = new EclService(optsConnection);
7109
- // this._topology = new Topology(optsConnection);
7108
+ _this.connection = new TopologyService(optsConnection);
7109
+ _this.machineConnection = new MachineService(optsConnection);
7110
7110
  }
7111
- _this._wsWorkunits = new WorkunitsService(optsConnection);
7112
- _this.set(__assign({ QuerySet: querySet, QueryId: queryID }, queryDetails));
7111
+ _this.clear({
7112
+ Name: name
7113
+ });
7113
7114
  return _this;
7114
7115
  }
7115
- Object.defineProperty(Query.prototype, "BaseUrl", {
7116
+ Object.defineProperty(TargetCluster.prototype, "BaseUrl", {
7116
7117
  get: function () { return this.connection.baseUrl; },
7117
7118
  enumerable: false,
7118
7119
  configurable: true
7119
7120
  });
7120
- Object.defineProperty(Query.prototype, "properties", {
7121
- get: function () { return this.get(); },
7122
- enumerable: false,
7123
- configurable: true
7124
- });
7125
- Object.defineProperty(Query.prototype, "Exceptions", {
7126
- get: function () { return this.get("Exceptions"); },
7127
- enumerable: false,
7128
- configurable: true
7129
- });
7130
- Object.defineProperty(Query.prototype, "QueryId", {
7131
- get: function () { return this.get("QueryId"); },
7132
- enumerable: false,
7133
- configurable: true
7134
- });
7135
- Object.defineProperty(Query.prototype, "QuerySet", {
7136
- get: function () { return this.get("QuerySet"); },
7137
- enumerable: false,
7138
- configurable: true
7139
- });
7140
- Object.defineProperty(Query.prototype, "QueryName", {
7141
- get: function () { return this.get("QueryName"); },
7142
- enumerable: false,
7143
- configurable: true
7144
- });
7145
- Object.defineProperty(Query.prototype, "Wuid", {
7146
- get: function () { return this.get("Wuid"); },
7121
+ Object.defineProperty(TargetCluster.prototype, "Name", {
7122
+ get: function () { return this.get("Name"); },
7147
7123
  enumerable: false,
7148
7124
  configurable: true
7149
7125
  });
7150
- Object.defineProperty(Query.prototype, "Dll", {
7151
- get: function () { return this.get("Dll"); },
7126
+ Object.defineProperty(TargetCluster.prototype, "Prefix", {
7127
+ get: function () { return this.get("Prefix"); },
7152
7128
  enumerable: false,
7153
7129
  configurable: true
7154
7130
  });
7155
- Object.defineProperty(Query.prototype, "Suspended", {
7156
- get: function () { return this.get("Suspended"); },
7131
+ Object.defineProperty(TargetCluster.prototype, "Type", {
7132
+ get: function () { return this.get("Type"); },
7157
7133
  enumerable: false,
7158
7134
  configurable: true
7159
7135
  });
7160
- Object.defineProperty(Query.prototype, "Activated", {
7161
- get: function () { return this.get("Activated"); },
7136
+ Object.defineProperty(TargetCluster.prototype, "IsDefault", {
7137
+ get: function () { return this.get("IsDefault"); },
7162
7138
  enumerable: false,
7163
7139
  configurable: true
7164
7140
  });
7165
- Object.defineProperty(Query.prototype, "SuspendedBy", {
7166
- get: function () { return this.get("SuspendedBy"); },
7141
+ Object.defineProperty(TargetCluster.prototype, "TpClusters", {
7142
+ get: function () { return this.get("TpClusters"); },
7167
7143
  enumerable: false,
7168
7144
  configurable: true
7169
7145
  });
7170
- Object.defineProperty(Query.prototype, "Clusters", {
7171
- get: function () { return this.get("Clusters"); },
7146
+ Object.defineProperty(TargetCluster.prototype, "TpEclCCServers", {
7147
+ get: function () { return this.get("TpEclCCServers"); },
7172
7148
  enumerable: false,
7173
7149
  configurable: true
7174
7150
  });
7175
- Object.defineProperty(Query.prototype, "PublishedBy", {
7176
- get: function () { return this.get("PublishedBy"); },
7151
+ Object.defineProperty(TargetCluster.prototype, "TpEclServers", {
7152
+ get: function () { return this.get("TpEclServers"); },
7177
7153
  enumerable: false,
7178
7154
  configurable: true
7179
7155
  });
7180
- Object.defineProperty(Query.prototype, "Comment", {
7181
- get: function () { return this.get("Comment"); },
7156
+ Object.defineProperty(TargetCluster.prototype, "TpEclAgents", {
7157
+ get: function () { return this.get("TpEclAgents"); },
7182
7158
  enumerable: false,
7183
7159
  configurable: true
7184
7160
  });
7185
- Object.defineProperty(Query.prototype, "LogicalFiles", {
7186
- get: function () { return this.get("LogicalFiles"); },
7161
+ Object.defineProperty(TargetCluster.prototype, "TpEclSchedulers", {
7162
+ get: function () { return this.get("TpEclSchedulers"); },
7187
7163
  enumerable: false,
7188
7164
  configurable: true
7189
7165
  });
7190
- Object.defineProperty(Query.prototype, "SuperFiles", {
7191
- get: function () { return this.get("SuperFiles"); },
7166
+ Object.defineProperty(TargetCluster.prototype, "MachineInfoEx", {
7167
+ get: function () { return this.get("MachineInfoEx", []); },
7192
7168
  enumerable: false,
7193
7169
  configurable: true
7194
7170
  });
7195
- Object.defineProperty(Query.prototype, "IsLibrary", {
7196
- get: function () { return this.get("IsLibrary"); },
7171
+ Object.defineProperty(TargetCluster.prototype, "CMachineInfoEx", {
7172
+ get: function () {
7173
+ var _this = this;
7174
+ return this.MachineInfoEx.map(function (machineInfoEx) { return Machine.attach(_this.machineConnection, machineInfoEx.Address, machineInfoEx); });
7175
+ },
7197
7176
  enumerable: false,
7198
7177
  configurable: true
7199
7178
  });
7200
- Object.defineProperty(Query.prototype, "Priority", {
7201
- get: function () { return this.get("Priority"); },
7202
- enumerable: false,
7203
- configurable: true
7179
+ TargetCluster.attach = function (optsConnection, name, state) {
7180
+ var retVal = _targetCluster.get({ BaseUrl: optsConnection.baseUrl, Name: name }, function () {
7181
+ return new TargetCluster(optsConnection, name);
7182
+ });
7183
+ if (state) {
7184
+ retVal.set(__assign({}, state));
7185
+ }
7186
+ return retVal;
7187
+ };
7188
+ TargetCluster.prototype.fetchMachines = function (request) {
7189
+ var _this = this;
7190
+ if (request === void 0) { request = {}; }
7191
+ return this.machineConnection.GetTargetClusterInfo(__assign({ TargetClusters: {
7192
+ Item: ["".concat(this.Type, ":").concat(this.Name)]
7193
+ } }, request)).then(function (response) {
7194
+ var retVal = [];
7195
+ for (var _i = 0, _a = response.TargetClusterInfoList.TargetClusterInfo; _i < _a.length; _i++) {
7196
+ var machineInfo = _a[_i];
7197
+ for (var _b = 0, _c = machineInfo.Processes.MachineInfoEx; _b < _c.length; _b++) {
7198
+ var machineInfoEx = _c[_b];
7199
+ retVal.push(machineInfoEx);
7200
+ }
7201
+ }
7202
+ _this.set("MachineInfoEx", retVal);
7203
+ return _this.CMachineInfoEx;
7204
+ });
7205
+ };
7206
+ TargetCluster.prototype.machineStats = function () {
7207
+ var maxDisk = 0;
7208
+ var totalFree = 0;
7209
+ var total = 0;
7210
+ for (var _i = 0, _a = this.CMachineInfoEx; _i < _a.length; _i++) {
7211
+ var machine = _a[_i];
7212
+ for (var _b = 0, _c = machine.Storage.StorageInfo; _b < _c.length; _b++) {
7213
+ var storageInfo = _c[_b];
7214
+ totalFree += storageInfo.Available;
7215
+ total += storageInfo.Total;
7216
+ var usage = 1 - storageInfo.Available / storageInfo.Total;
7217
+ if (usage > maxDisk) {
7218
+ maxDisk = usage;
7219
+ }
7220
+ }
7221
+ }
7222
+ return {
7223
+ maxDisk: maxDisk,
7224
+ meanDisk: 1 - (total ? totalFree / total : 1)
7225
+ };
7226
+ };
7227
+ TargetCluster.prototype.fetchUsage = function () {
7228
+ return this.machineConnection.GetTargetClusterUsageEx([this.Name]);
7229
+ };
7230
+ return TargetCluster;
7231
+ }(util.StateObject));
7232
+ function targetClusters(optsConnection) {
7233
+ var connection;
7234
+ if (optsConnection instanceof TopologyService) {
7235
+ connection = optsConnection;
7236
+ }
7237
+ else {
7238
+ connection = new TopologyService(optsConnection);
7239
+ }
7240
+ return connection.TpListTargetClusters({}).then(function (response) {
7241
+ return response.TargetClusters.TpClusterNameType.map(function (item) { return TargetCluster.attach(optsConnection, item.Name, item); });
7204
7242
  });
7205
- Object.defineProperty(Query.prototype, "WUSnapShot", {
7206
- get: function () { return this.get("WUSnapShot"); },
7243
+ }
7244
+ var _defaultTargetCluster = {};
7245
+ function defaultTargetCluster(optsConnection) {
7246
+ if (!_defaultTargetCluster[optsConnection.baseUrl]) {
7247
+ var connection = void 0;
7248
+ if (optsConnection instanceof TopologyService) {
7249
+ connection = optsConnection;
7250
+ }
7251
+ else {
7252
+ connection = new TopologyService(optsConnection);
7253
+ }
7254
+ _defaultTargetCluster[optsConnection.baseUrl] = connection.TpListTargetClusters({}).then(function (response) {
7255
+ var firstItem;
7256
+ var defaultItem;
7257
+ var hthorItem;
7258
+ response.TargetClusters.TpClusterNameType.forEach(function (item) {
7259
+ if (!firstItem) {
7260
+ firstItem = item;
7261
+ }
7262
+ if (!defaultItem && item.IsDefault === true) {
7263
+ defaultItem = item;
7264
+ }
7265
+ if (!hthorItem && item.Type === "hthor") {
7266
+ hthorItem = item;
7267
+ }
7268
+ });
7269
+ var defItem = defaultItem || hthorItem || firstItem;
7270
+ return TargetCluster.attach(optsConnection, defItem.Name, defItem);
7271
+ });
7272
+ }
7273
+ return _defaultTargetCluster[optsConnection.baseUrl];
7274
+ }
7275
+
7276
+ var TopologyCache = /** @class */ (function (_super) {
7277
+ __extends(TopologyCache, _super);
7278
+ function TopologyCache() {
7279
+ return _super.call(this, function (obj) {
7280
+ return obj.BaseUrl;
7281
+ }) || this;
7282
+ }
7283
+ return TopologyCache;
7284
+ }(util.Cache));
7285
+ var _topology = new TopologyCache();
7286
+ var Topology = /** @class */ (function (_super) {
7287
+ __extends(Topology, _super);
7288
+ function Topology(optsConnection) {
7289
+ var _this = _super.call(this) || this;
7290
+ if (optsConnection instanceof TopologyService) {
7291
+ _this.connection = optsConnection;
7292
+ }
7293
+ else {
7294
+ _this.connection = new TopologyService(optsConnection);
7295
+ }
7296
+ return _this;
7297
+ }
7298
+ Object.defineProperty(Topology.prototype, "BaseUrl", {
7299
+ get: function () { return this.connection.baseUrl; },
7207
7300
  enumerable: false,
7208
7301
  configurable: true
7209
7302
  });
7210
- Object.defineProperty(Query.prototype, "CompileTime", {
7211
- get: function () { return this.get("CompileTime"); },
7303
+ Object.defineProperty(Topology.prototype, "properties", {
7304
+ // Accessors ---
7305
+ get: function () { return this.get(); },
7212
7306
  enumerable: false,
7213
7307
  configurable: true
7214
7308
  });
7215
- Object.defineProperty(Query.prototype, "LibrariesUsed", {
7216
- get: function () { return this.get("LibrariesUsed"); },
7309
+ Object.defineProperty(Topology.prototype, "TargetClusters", {
7310
+ get: function () { return this.get("TargetClusters"); },
7217
7311
  enumerable: false,
7218
7312
  configurable: true
7219
7313
  });
7220
- Object.defineProperty(Query.prototype, "CountGraphs", {
7221
- get: function () { return this.get("CountGraphs"); },
7314
+ Object.defineProperty(Topology.prototype, "CTargetClusters", {
7315
+ get: function () {
7316
+ var _this = this;
7317
+ return this.TargetClusters.map(function (tc) { return TargetCluster.attach(_this.connection, tc.Name, tc); });
7318
+ },
7222
7319
  enumerable: false,
7223
7320
  configurable: true
7224
7321
  });
7225
- Object.defineProperty(Query.prototype, "ResourceURLCount", {
7226
- get: function () { return this.get("ResourceURLCount"); },
7322
+ Object.defineProperty(Topology.prototype, "LogicalClusters", {
7323
+ get: function () { return this.get("LogicalClusters"); },
7227
7324
  enumerable: false,
7228
7325
  configurable: true
7229
7326
  });
7230
- Object.defineProperty(Query.prototype, "WsEclAddresses", {
7231
- get: function () { return this.get("WsEclAddresses"); },
7327
+ Object.defineProperty(Topology.prototype, "Services", {
7328
+ get: function () { return this.get("Services"); },
7232
7329
  enumerable: false,
7233
7330
  configurable: true
7234
7331
  });
7235
- Object.defineProperty(Query.prototype, "WUGraphs", {
7236
- get: function () { return this.get("WUGraphs"); },
7237
- enumerable: false,
7238
- configurable: true
7332
+ Topology.attach = function (optsConnection) {
7333
+ var retVal = _topology.get({ BaseUrl: optsConnection.baseUrl }, function () {
7334
+ return new Topology(optsConnection);
7335
+ });
7336
+ return retVal;
7337
+ };
7338
+ Topology.prototype.GetESPServiceBaseURL = function (type) {
7339
+ var _this = this;
7340
+ if (type === void 0) { type = ""; }
7341
+ return this.connection.TpServiceQuery({}).then(function (response) {
7342
+ var rootProtocol = _this.connection.protocol();
7343
+ var ip = _this.connection.ip();
7344
+ var port = rootProtocol === "https:" ? "18002" : "8002";
7345
+ if (util.exists("ServiceList.TpEspServers.TpEspServer", response)) {
7346
+ for (var _i = 0, _a = response.ServiceList.TpEspServers.TpEspServer; _i < _a.length; _i++) {
7347
+ var item = _a[_i];
7348
+ if (util.exists("TpBindings.TpBinding", item)) {
7349
+ for (var _b = 0, _c = item.TpBindings.TpBinding; _b < _c.length; _b++) {
7350
+ var binding = _c[_b];
7351
+ if (binding.Service === type && binding.Protocol + ":" === rootProtocol) {
7352
+ port = binding.Port;
7353
+ }
7354
+ }
7355
+ }
7356
+ }
7357
+ }
7358
+ return "".concat(rootProtocol, "//").concat(ip, ":").concat(port, "/");
7359
+ });
7360
+ };
7361
+ Topology.prototype.fetchTargetClusters = function () {
7362
+ var _this = this;
7363
+ return this.connection.TpTargetClusterQuery({ Type: "ROOT" }).then(function (response) {
7364
+ var _a, _b;
7365
+ _this.set({
7366
+ TargetClusters: (_b = (_a = response.TpTargetClusters) === null || _a === void 0 ? void 0 : _a.TpTargetCluster) !== null && _b !== void 0 ? _b : []
7367
+ });
7368
+ return _this.CTargetClusters;
7369
+ });
7370
+ };
7371
+ Topology.prototype.fetchLogicalClusters = function (request) {
7372
+ var _this = this;
7373
+ if (request === void 0) { request = {}; }
7374
+ return this.connection.TpLogicalClusterQuery(request).then(function (response) {
7375
+ _this.set({
7376
+ LogicalClusters: response.TpLogicalClusters.TpLogicalCluster
7377
+ });
7378
+ return _this.LogicalClusters;
7379
+ });
7380
+ };
7381
+ Topology.prototype.fetchServices = function (request) {
7382
+ var _this = this;
7383
+ if (request === void 0) { request = {}; }
7384
+ return this.connection.TpServiceQuery(request).then(function (response) {
7385
+ _this.set({
7386
+ Services: response.ServiceList
7387
+ });
7388
+ return _this.Services;
7389
+ });
7390
+ };
7391
+ Topology.prototype.refresh = function (force) {
7392
+ var _this = this;
7393
+ if (force === void 0) { force = false; }
7394
+ if (!this._prevRefresh || force) {
7395
+ this._prevRefresh = Promise.all([this.fetchTargetClusters(), this.fetchLogicalClusters(), this.fetchServices()]).then(function () {
7396
+ return _this;
7397
+ });
7398
+ }
7399
+ return this._prevRefresh;
7400
+ };
7401
+ // Monitoring ---
7402
+ // Events ---
7403
+ Topology.prototype.on = function (eventID, propIDorCallback, callback) {
7404
+ if (this.isCallback(propIDorCallback)) {
7405
+ switch (eventID) {
7406
+ case "changed":
7407
+ _super.prototype.on.call(this, eventID, propIDorCallback);
7408
+ break;
7409
+ }
7410
+ }
7411
+ else {
7412
+ switch (eventID) {
7413
+ case "changed":
7414
+ _super.prototype.on.call(this, eventID, propIDorCallback, callback);
7415
+ break;
7416
+ }
7417
+ }
7418
+ this._monitor();
7419
+ return this;
7420
+ };
7421
+ return Topology;
7422
+ }(util.StateObject));
7423
+
7424
+ var logger$2 = util.scopedLogger("@hpcc-js/comms/ecl/query.ts");
7425
+ var QueryCache = /** @class */ (function (_super) {
7426
+ __extends(QueryCache, _super);
7427
+ function QueryCache() {
7428
+ return _super.call(this, function (obj) {
7429
+ return util.Cache.hash([obj.QueryId, obj.QuerySet]);
7430
+ }) || this;
7431
+ }
7432
+ return QueryCache;
7433
+ }(util.Cache));
7434
+ var _queries = new QueryCache();
7435
+ var Query = /** @class */ (function (_super) {
7436
+ __extends(Query, _super);
7437
+ function Query(optsConnection, querySet, queryID, queryDetails) {
7438
+ var _this = _super.call(this) || this;
7439
+ if (optsConnection instanceof WorkunitsService) {
7440
+ _this.wsWorkunitsService = optsConnection;
7441
+ }
7442
+ else {
7443
+ _this.wsWorkunitsService = new WorkunitsService(optsConnection);
7444
+ }
7445
+ _this.topology = Topology.attach(_this.wsWorkunitsService.opts());
7446
+ _this.set(__assign({ QuerySet: querySet, QueryId: queryID }, queryDetails));
7447
+ return _this;
7448
+ }
7449
+ Object.defineProperty(Query.prototype, "BaseUrl", {
7450
+ get: function () { return this.wsWorkunitsService.baseUrl; },
7451
+ enumerable: false,
7452
+ configurable: true
7453
+ });
7454
+ Object.defineProperty(Query.prototype, "properties", {
7455
+ get: function () { return this.get(); },
7456
+ enumerable: false,
7457
+ configurable: true
7458
+ });
7459
+ Object.defineProperty(Query.prototype, "Exceptions", {
7460
+ get: function () { return this.get("Exceptions"); },
7461
+ enumerable: false,
7462
+ configurable: true
7463
+ });
7464
+ Object.defineProperty(Query.prototype, "QueryId", {
7465
+ get: function () { return this.get("QueryId"); },
7466
+ enumerable: false,
7467
+ configurable: true
7468
+ });
7469
+ Object.defineProperty(Query.prototype, "QuerySet", {
7470
+ get: function () { return this.get("QuerySet"); },
7471
+ enumerable: false,
7472
+ configurable: true
7473
+ });
7474
+ Object.defineProperty(Query.prototype, "QueryName", {
7475
+ get: function () { return this.get("QueryName"); },
7476
+ enumerable: false,
7477
+ configurable: true
7478
+ });
7479
+ Object.defineProperty(Query.prototype, "Wuid", {
7480
+ get: function () { return this.get("Wuid"); },
7481
+ enumerable: false,
7482
+ configurable: true
7483
+ });
7484
+ Object.defineProperty(Query.prototype, "Dll", {
7485
+ get: function () { return this.get("Dll"); },
7486
+ enumerable: false,
7487
+ configurable: true
7488
+ });
7489
+ Object.defineProperty(Query.prototype, "Suspended", {
7490
+ get: function () { return this.get("Suspended"); },
7491
+ enumerable: false,
7492
+ configurable: true
7493
+ });
7494
+ Object.defineProperty(Query.prototype, "Activated", {
7495
+ get: function () { return this.get("Activated"); },
7496
+ enumerable: false,
7497
+ configurable: true
7498
+ });
7499
+ Object.defineProperty(Query.prototype, "SuspendedBy", {
7500
+ get: function () { return this.get("SuspendedBy"); },
7501
+ enumerable: false,
7502
+ configurable: true
7503
+ });
7504
+ Object.defineProperty(Query.prototype, "Clusters", {
7505
+ get: function () { return this.get("Clusters"); },
7506
+ enumerable: false,
7507
+ configurable: true
7508
+ });
7509
+ Object.defineProperty(Query.prototype, "PublishedBy", {
7510
+ get: function () { return this.get("PublishedBy"); },
7511
+ enumerable: false,
7512
+ configurable: true
7513
+ });
7514
+ Object.defineProperty(Query.prototype, "Comment", {
7515
+ get: function () { return this.get("Comment"); },
7516
+ enumerable: false,
7517
+ configurable: true
7518
+ });
7519
+ Object.defineProperty(Query.prototype, "LogicalFiles", {
7520
+ get: function () { return this.get("LogicalFiles"); },
7521
+ enumerable: false,
7522
+ configurable: true
7523
+ });
7524
+ Object.defineProperty(Query.prototype, "SuperFiles", {
7525
+ get: function () { return this.get("SuperFiles"); },
7526
+ enumerable: false,
7527
+ configurable: true
7528
+ });
7529
+ Object.defineProperty(Query.prototype, "IsLibrary", {
7530
+ get: function () { return this.get("IsLibrary"); },
7531
+ enumerable: false,
7532
+ configurable: true
7533
+ });
7534
+ Object.defineProperty(Query.prototype, "Priority", {
7535
+ get: function () { return this.get("Priority"); },
7536
+ enumerable: false,
7537
+ configurable: true
7538
+ });
7539
+ Object.defineProperty(Query.prototype, "WUSnapShot", {
7540
+ get: function () { return this.get("WUSnapShot"); },
7541
+ enumerable: false,
7542
+ configurable: true
7543
+ });
7544
+ Object.defineProperty(Query.prototype, "CompileTime", {
7545
+ get: function () { return this.get("CompileTime"); },
7546
+ enumerable: false,
7547
+ configurable: true
7548
+ });
7549
+ Object.defineProperty(Query.prototype, "LibrariesUsed", {
7550
+ get: function () { return this.get("LibrariesUsed"); },
7551
+ enumerable: false,
7552
+ configurable: true
7553
+ });
7554
+ Object.defineProperty(Query.prototype, "CountGraphs", {
7555
+ get: function () { return this.get("CountGraphs"); },
7556
+ enumerable: false,
7557
+ configurable: true
7558
+ });
7559
+ Object.defineProperty(Query.prototype, "ResourceURLCount", {
7560
+ get: function () { return this.get("ResourceURLCount"); },
7561
+ enumerable: false,
7562
+ configurable: true
7563
+ });
7564
+ Object.defineProperty(Query.prototype, "WsEclAddresses", {
7565
+ get: function () { return this.get("WsEclAddresses"); },
7566
+ enumerable: false,
7567
+ configurable: true
7568
+ });
7569
+ Object.defineProperty(Query.prototype, "WUGraphs", {
7570
+ get: function () { return this.get("WUGraphs"); },
7571
+ enumerable: false,
7572
+ configurable: true
7239
7573
  });
7240
7574
  Object.defineProperty(Query.prototype, "WUTimers", {
7241
7575
  get: function () { return this.get("WUTimers"); },
@@ -7248,17 +7582,40 @@ var Query = /** @class */ (function (_super) {
7248
7582
  });
7249
7583
  return retVal;
7250
7584
  };
7585
+ Query.prototype.wsEclService = function () {
7586
+ return __awaiter(this, void 0, void 0, function () {
7587
+ return __generator(this, function (_a) {
7588
+ if (!this._eclService) {
7589
+ this._eclService = this.topology.fetchServices({}).then(function (services) {
7590
+ var _a, _b, _c, _d;
7591
+ for (var _i = 0, _e = (_b = (_a = services === null || services === void 0 ? void 0 : services.TpEspServers) === null || _a === void 0 ? void 0 : _a.TpEspServer) !== null && _b !== void 0 ? _b : []; _i < _e.length; _i++) {
7592
+ var espServer = _e[_i];
7593
+ for (var _f = 0, _g = (_d = (_c = espServer === null || espServer === void 0 ? void 0 : espServer.TpBindings) === null || _c === void 0 ? void 0 : _c.TpBinding) !== null && _d !== void 0 ? _d : []; _f < _g.length; _f++) {
7594
+ var binding = _g[_f];
7595
+ if ((binding === null || binding === void 0 ? void 0 : binding.Service) === "ws_ecl") {
7596
+ var baseUrl = "".concat(binding.Protocol, "://").concat(globalThis.location.hostname, ":").concat(binding.Port);
7597
+ return new EclService({ baseUrl: baseUrl });
7598
+ }
7599
+ }
7600
+ }
7601
+ return undefined;
7602
+ });
7603
+ }
7604
+ return [2 /*return*/, this._eclService];
7605
+ });
7606
+ });
7607
+ };
7251
7608
  Query.prototype.fetchDetails = function () {
7252
7609
  return __awaiter(this, void 0, void 0, function () {
7253
7610
  var queryDetails;
7254
7611
  return __generator(this, function (_a) {
7255
7612
  switch (_a.label) {
7256
- case 0: return [4 /*yield*/, this._wsWorkunits.WUQueryDetails({
7613
+ case 0: return [4 /*yield*/, this.wsWorkunitsService.WUQueryDetails({
7257
7614
  QuerySet: this.QuerySet,
7258
7615
  QueryId: this.QueryId,
7259
- IncludeStateOnClusters: false,
7260
- IncludeSuperFiles: false,
7261
- IncludeWsEclAddresses: false,
7616
+ IncludeStateOnClusters: true,
7617
+ IncludeSuperFiles: true,
7618
+ IncludeWsEclAddresses: true,
7262
7619
  CheckAllNodes: false
7263
7620
  })];
7264
7621
  case 1:
@@ -7270,31 +7627,57 @@ var Query = /** @class */ (function (_super) {
7270
7627
  });
7271
7628
  };
7272
7629
  Query.prototype.fetchRequestSchema = function () {
7630
+ var _a;
7273
7631
  return __awaiter(this, void 0, void 0, function () {
7274
- var _a;
7275
- return __generator(this, function (_b) {
7276
- switch (_b.label) {
7277
- case 0:
7278
- _a = this;
7279
- return [4 /*yield*/, this.connection.requestJson(this.QuerySet, this.QueryId)];
7632
+ var wsEclService, _b, e_1;
7633
+ return __generator(this, function (_c) {
7634
+ switch (_c.label) {
7635
+ case 0: return [4 /*yield*/, this.wsEclService()];
7280
7636
  case 1:
7281
- _a._requestSchema = _b.sent();
7282
- return [2 /*return*/];
7637
+ wsEclService = _c.sent();
7638
+ _c.label = 2;
7639
+ case 2:
7640
+ _c.trys.push([2, 4, , 5]);
7641
+ _b = this;
7642
+ return [4 /*yield*/, (wsEclService === null || wsEclService === void 0 ? void 0 : wsEclService.requestJson(this.QuerySet, this.QueryId))];
7643
+ case 3:
7644
+ _b._requestSchema = (_a = _c.sent()) !== null && _a !== void 0 ? _a : [];
7645
+ return [3 /*break*/, 5];
7646
+ case 4:
7647
+ e_1 = _c.sent();
7648
+ // See: https://track.hpccsystems.com/browse/HPCC-29827
7649
+ logger$2.debug(e_1);
7650
+ this._requestSchema = [];
7651
+ return [3 /*break*/, 5];
7652
+ case 5: return [2 /*return*/];
7283
7653
  }
7284
7654
  });
7285
7655
  });
7286
7656
  };
7287
7657
  Query.prototype.fetchResponseSchema = function () {
7658
+ var _a;
7288
7659
  return __awaiter(this, void 0, void 0, function () {
7289
- var _a;
7290
- return __generator(this, function (_b) {
7291
- switch (_b.label) {
7292
- case 0:
7293
- _a = this;
7294
- return [4 /*yield*/, this.connection.responseJson(this.QuerySet, this.QueryId)];
7660
+ var wsEclService, _b, e_2;
7661
+ return __generator(this, function (_c) {
7662
+ switch (_c.label) {
7663
+ case 0: return [4 /*yield*/, this.wsEclService()];
7295
7664
  case 1:
7296
- _a._responseSchema = _b.sent();
7297
- return [2 /*return*/];
7665
+ wsEclService = _c.sent();
7666
+ _c.label = 2;
7667
+ case 2:
7668
+ _c.trys.push([2, 4, , 5]);
7669
+ _b = this;
7670
+ return [4 /*yield*/, (wsEclService === null || wsEclService === void 0 ? void 0 : wsEclService.responseJson(this.QuerySet, this.QueryId))];
7671
+ case 3:
7672
+ _b._responseSchema = (_a = _c.sent()) !== null && _a !== void 0 ? _a : {};
7673
+ return [3 /*break*/, 5];
7674
+ case 4:
7675
+ e_2 = _c.sent();
7676
+ // See: https://track.hpccsystems.com/browse/HPCC-29827
7677
+ logger$2.debug(e_2);
7678
+ this._responseSchema = {};
7679
+ return [3 /*break*/, 5];
7680
+ case 5: return [2 /*return*/];
7298
7681
  }
7299
7682
  });
7300
7683
  });
@@ -7312,14 +7695,33 @@ var Query = /** @class */ (function (_super) {
7312
7695
  });
7313
7696
  };
7314
7697
  Query.prototype.fetchSummaryStats = function () {
7315
- return this._wsWorkunits.WUQueryGetSummaryStats({ Target: this.QuerySet, QueryId: this.QueryId });
7698
+ return this.wsWorkunitsService.WUQueryGetSummaryStats({ Target: this.QuerySet, QueryId: this.QueryId });
7316
7699
  };
7317
7700
  Query.prototype.submit = function (request) {
7318
- return this.connection.submit(this.QuerySet, this.QueryId, request).then(function (results) {
7319
- for (var key in results) {
7320
- results[key] = results[key].Row;
7321
- }
7322
- return results;
7701
+ var _a;
7702
+ return __awaiter(this, void 0, void 0, function () {
7703
+ var wsEclService;
7704
+ return __generator(this, function (_b) {
7705
+ switch (_b.label) {
7706
+ case 0: return [4 /*yield*/, this.wsEclService()];
7707
+ case 1:
7708
+ wsEclService = _b.sent();
7709
+ try {
7710
+ return [2 /*return*/, (_a = wsEclService === null || wsEclService === void 0 ? void 0 : wsEclService.submit(this.QuerySet, this.QueryId, request).then(function (results) {
7711
+ for (var key in results) {
7712
+ results[key] = results[key].Row;
7713
+ }
7714
+ return results;
7715
+ })) !== null && _a !== void 0 ? _a : []];
7716
+ }
7717
+ catch (e) {
7718
+ // See: https://track.hpccsystems.com/browse/HPCC-29827
7719
+ logger$2.debug(e);
7720
+ return [2 /*return*/, []];
7721
+ }
7722
+ return [2 /*return*/];
7723
+ }
7724
+ });
7323
7725
  });
7324
7726
  };
7325
7727
  Query.prototype.refresh = function () {
@@ -7522,341 +7924,6 @@ var Store = /** @class */ (function () {
7522
7924
  return Store;
7523
7925
  }());
7524
7926
 
7525
- var TargetClusterCache = /** @class */ (function (_super) {
7526
- __extends(TargetClusterCache, _super);
7527
- function TargetClusterCache() {
7528
- return _super.call(this, function (obj) {
7529
- return "".concat(obj.BaseUrl, "-").concat(obj.Name);
7530
- }) || this;
7531
- }
7532
- return TargetClusterCache;
7533
- }(util.Cache));
7534
- var _targetCluster = new TargetClusterCache();
7535
- var TargetCluster = /** @class */ (function (_super) {
7536
- __extends(TargetCluster, _super);
7537
- function TargetCluster(optsConnection, name) {
7538
- var _this = _super.call(this) || this;
7539
- if (optsConnection instanceof TopologyService) {
7540
- _this.connection = optsConnection;
7541
- _this.machineConnection = new MachineService(optsConnection.connectionOptions());
7542
- }
7543
- else {
7544
- _this.connection = new TopologyService(optsConnection);
7545
- _this.machineConnection = new MachineService(optsConnection);
7546
- }
7547
- _this.clear({
7548
- Name: name
7549
- });
7550
- return _this;
7551
- }
7552
- Object.defineProperty(TargetCluster.prototype, "BaseUrl", {
7553
- get: function () { return this.connection.baseUrl; },
7554
- enumerable: false,
7555
- configurable: true
7556
- });
7557
- Object.defineProperty(TargetCluster.prototype, "Name", {
7558
- get: function () { return this.get("Name"); },
7559
- enumerable: false,
7560
- configurable: true
7561
- });
7562
- Object.defineProperty(TargetCluster.prototype, "Prefix", {
7563
- get: function () { return this.get("Prefix"); },
7564
- enumerable: false,
7565
- configurable: true
7566
- });
7567
- Object.defineProperty(TargetCluster.prototype, "Type", {
7568
- get: function () { return this.get("Type"); },
7569
- enumerable: false,
7570
- configurable: true
7571
- });
7572
- Object.defineProperty(TargetCluster.prototype, "IsDefault", {
7573
- get: function () { return this.get("IsDefault"); },
7574
- enumerable: false,
7575
- configurable: true
7576
- });
7577
- Object.defineProperty(TargetCluster.prototype, "TpClusters", {
7578
- get: function () { return this.get("TpClusters"); },
7579
- enumerable: false,
7580
- configurable: true
7581
- });
7582
- Object.defineProperty(TargetCluster.prototype, "TpEclCCServers", {
7583
- get: function () { return this.get("TpEclCCServers"); },
7584
- enumerable: false,
7585
- configurable: true
7586
- });
7587
- Object.defineProperty(TargetCluster.prototype, "TpEclServers", {
7588
- get: function () { return this.get("TpEclServers"); },
7589
- enumerable: false,
7590
- configurable: true
7591
- });
7592
- Object.defineProperty(TargetCluster.prototype, "TpEclAgents", {
7593
- get: function () { return this.get("TpEclAgents"); },
7594
- enumerable: false,
7595
- configurable: true
7596
- });
7597
- Object.defineProperty(TargetCluster.prototype, "TpEclSchedulers", {
7598
- get: function () { return this.get("TpEclSchedulers"); },
7599
- enumerable: false,
7600
- configurable: true
7601
- });
7602
- Object.defineProperty(TargetCluster.prototype, "MachineInfoEx", {
7603
- get: function () { return this.get("MachineInfoEx", []); },
7604
- enumerable: false,
7605
- configurable: true
7606
- });
7607
- Object.defineProperty(TargetCluster.prototype, "CMachineInfoEx", {
7608
- get: function () {
7609
- var _this = this;
7610
- return this.MachineInfoEx.map(function (machineInfoEx) { return Machine.attach(_this.machineConnection, machineInfoEx.Address, machineInfoEx); });
7611
- },
7612
- enumerable: false,
7613
- configurable: true
7614
- });
7615
- TargetCluster.attach = function (optsConnection, name, state) {
7616
- var retVal = _targetCluster.get({ BaseUrl: optsConnection.baseUrl, Name: name }, function () {
7617
- return new TargetCluster(optsConnection, name);
7618
- });
7619
- if (state) {
7620
- retVal.set(__assign({}, state));
7621
- }
7622
- return retVal;
7623
- };
7624
- TargetCluster.prototype.fetchMachines = function (request) {
7625
- var _this = this;
7626
- if (request === void 0) { request = {}; }
7627
- return this.machineConnection.GetTargetClusterInfo(__assign({ TargetClusters: {
7628
- Item: ["".concat(this.Type, ":").concat(this.Name)]
7629
- } }, request)).then(function (response) {
7630
- var retVal = [];
7631
- for (var _i = 0, _a = response.TargetClusterInfoList.TargetClusterInfo; _i < _a.length; _i++) {
7632
- var machineInfo = _a[_i];
7633
- for (var _b = 0, _c = machineInfo.Processes.MachineInfoEx; _b < _c.length; _b++) {
7634
- var machineInfoEx = _c[_b];
7635
- retVal.push(machineInfoEx);
7636
- }
7637
- }
7638
- _this.set("MachineInfoEx", retVal);
7639
- return _this.CMachineInfoEx;
7640
- });
7641
- };
7642
- TargetCluster.prototype.machineStats = function () {
7643
- var maxDisk = 0;
7644
- var totalFree = 0;
7645
- var total = 0;
7646
- for (var _i = 0, _a = this.CMachineInfoEx; _i < _a.length; _i++) {
7647
- var machine = _a[_i];
7648
- for (var _b = 0, _c = machine.Storage.StorageInfo; _b < _c.length; _b++) {
7649
- var storageInfo = _c[_b];
7650
- totalFree += storageInfo.Available;
7651
- total += storageInfo.Total;
7652
- var usage = 1 - storageInfo.Available / storageInfo.Total;
7653
- if (usage > maxDisk) {
7654
- maxDisk = usage;
7655
- }
7656
- }
7657
- }
7658
- return {
7659
- maxDisk: maxDisk,
7660
- meanDisk: 1 - (total ? totalFree / total : 1)
7661
- };
7662
- };
7663
- TargetCluster.prototype.fetchUsage = function () {
7664
- return this.machineConnection.GetTargetClusterUsageEx([this.Name]);
7665
- };
7666
- return TargetCluster;
7667
- }(util.StateObject));
7668
- function targetClusters(optsConnection) {
7669
- var connection;
7670
- if (optsConnection instanceof TopologyService) {
7671
- connection = optsConnection;
7672
- }
7673
- else {
7674
- connection = new TopologyService(optsConnection);
7675
- }
7676
- return connection.TpListTargetClusters({}).then(function (response) {
7677
- return response.TargetClusters.TpClusterNameType.map(function (item) { return TargetCluster.attach(optsConnection, item.Name, item); });
7678
- });
7679
- }
7680
- var _defaultTargetCluster = {};
7681
- function defaultTargetCluster(optsConnection) {
7682
- if (!_defaultTargetCluster[optsConnection.baseUrl]) {
7683
- var connection = void 0;
7684
- if (optsConnection instanceof TopologyService) {
7685
- connection = optsConnection;
7686
- }
7687
- else {
7688
- connection = new TopologyService(optsConnection);
7689
- }
7690
- _defaultTargetCluster[optsConnection.baseUrl] = connection.TpListTargetClusters({}).then(function (response) {
7691
- var firstItem;
7692
- var defaultItem;
7693
- var hthorItem;
7694
- response.TargetClusters.TpClusterNameType.forEach(function (item) {
7695
- if (!firstItem) {
7696
- firstItem = item;
7697
- }
7698
- if (!defaultItem && item.IsDefault === true) {
7699
- defaultItem = item;
7700
- }
7701
- if (!hthorItem && item.Type === "hthor") {
7702
- hthorItem = item;
7703
- }
7704
- });
7705
- var defItem = defaultItem || hthorItem || firstItem;
7706
- return TargetCluster.attach(optsConnection, defItem.Name, defItem);
7707
- });
7708
- }
7709
- return _defaultTargetCluster[optsConnection.baseUrl];
7710
- }
7711
-
7712
- var TopologyCache = /** @class */ (function (_super) {
7713
- __extends(TopologyCache, _super);
7714
- function TopologyCache() {
7715
- return _super.call(this, function (obj) {
7716
- return obj.BaseUrl;
7717
- }) || this;
7718
- }
7719
- return TopologyCache;
7720
- }(util.Cache));
7721
- var _topology = new TopologyCache();
7722
- var Topology = /** @class */ (function (_super) {
7723
- __extends(Topology, _super);
7724
- function Topology(optsConnection) {
7725
- var _this = _super.call(this) || this;
7726
- if (optsConnection instanceof TopologyService) {
7727
- _this.connection = optsConnection;
7728
- }
7729
- else {
7730
- _this.connection = new TopologyService(optsConnection);
7731
- }
7732
- return _this;
7733
- }
7734
- Object.defineProperty(Topology.prototype, "BaseUrl", {
7735
- get: function () { return this.connection.baseUrl; },
7736
- enumerable: false,
7737
- configurable: true
7738
- });
7739
- Object.defineProperty(Topology.prototype, "properties", {
7740
- // Accessors ---
7741
- get: function () { return this.get(); },
7742
- enumerable: false,
7743
- configurable: true
7744
- });
7745
- Object.defineProperty(Topology.prototype, "TargetClusters", {
7746
- get: function () { return this.get("TargetClusters"); },
7747
- enumerable: false,
7748
- configurable: true
7749
- });
7750
- Object.defineProperty(Topology.prototype, "CTargetClusters", {
7751
- get: function () {
7752
- var _this = this;
7753
- return this.TargetClusters.map(function (tc) { return TargetCluster.attach(_this.connection, tc.Name, tc); });
7754
- },
7755
- enumerable: false,
7756
- configurable: true
7757
- });
7758
- Object.defineProperty(Topology.prototype, "LogicalClusters", {
7759
- get: function () { return this.get("LogicalClusters"); },
7760
- enumerable: false,
7761
- configurable: true
7762
- });
7763
- Object.defineProperty(Topology.prototype, "Services", {
7764
- get: function () { return this.get("Services"); },
7765
- enumerable: false,
7766
- configurable: true
7767
- });
7768
- Topology.attach = function (optsConnection) {
7769
- var retVal = _topology.get({ BaseUrl: optsConnection.baseUrl }, function () {
7770
- return new Topology(optsConnection);
7771
- });
7772
- return retVal;
7773
- };
7774
- Topology.prototype.GetESPServiceBaseURL = function (type) {
7775
- var _this = this;
7776
- if (type === void 0) { type = ""; }
7777
- return this.connection.TpServiceQuery({}).then(function (response) {
7778
- var rootProtocol = _this.connection.protocol();
7779
- var ip = _this.connection.ip();
7780
- var port = rootProtocol === "https:" ? "18002" : "8002";
7781
- if (util.exists("ServiceList.TpEspServers.TpEspServer", response)) {
7782
- for (var _i = 0, _a = response.ServiceList.TpEspServers.TpEspServer; _i < _a.length; _i++) {
7783
- var item = _a[_i];
7784
- if (util.exists("TpBindings.TpBinding", item)) {
7785
- for (var _b = 0, _c = item.TpBindings.TpBinding; _b < _c.length; _b++) {
7786
- var binding = _c[_b];
7787
- if (binding.Service === type && binding.Protocol + ":" === rootProtocol) {
7788
- port = binding.Port;
7789
- }
7790
- }
7791
- }
7792
- }
7793
- }
7794
- return "".concat(rootProtocol, "//").concat(ip, ":").concat(port, "/");
7795
- });
7796
- };
7797
- Topology.prototype.fetchTargetClusters = function () {
7798
- var _this = this;
7799
- return this.connection.TpTargetClusterQuery({ Type: "ROOT" }).then(function (response) {
7800
- var _a, _b;
7801
- _this.set({
7802
- TargetClusters: (_b = (_a = response.TpTargetClusters) === null || _a === void 0 ? void 0 : _a.TpTargetCluster) !== null && _b !== void 0 ? _b : []
7803
- });
7804
- return _this.CTargetClusters;
7805
- });
7806
- };
7807
- Topology.prototype.fetchLogicalClusters = function (request) {
7808
- var _this = this;
7809
- if (request === void 0) { request = {}; }
7810
- return this.connection.TpLogicalClusterQuery(request).then(function (response) {
7811
- _this.set({
7812
- LogicalClusters: response.TpLogicalClusters.TpLogicalCluster
7813
- });
7814
- return _this.LogicalClusters;
7815
- });
7816
- };
7817
- Topology.prototype.fetchServices = function (request) {
7818
- var _this = this;
7819
- if (request === void 0) { request = {}; }
7820
- return this.connection.TpServiceQuery(request).then(function (response) {
7821
- _this.set({
7822
- Services: response.ServiceList
7823
- });
7824
- return _this.Services;
7825
- });
7826
- };
7827
- Topology.prototype.refresh = function (force) {
7828
- var _this = this;
7829
- if (force === void 0) { force = false; }
7830
- if (!this._prevRefresh || force) {
7831
- this._prevRefresh = Promise.all([this.fetchTargetClusters(), this.fetchLogicalClusters(), this.fetchServices()]).then(function () {
7832
- return _this;
7833
- });
7834
- }
7835
- return this._prevRefresh;
7836
- };
7837
- // Monitoring ---
7838
- // Events ---
7839
- Topology.prototype.on = function (eventID, propIDorCallback, callback) {
7840
- if (this.isCallback(propIDorCallback)) {
7841
- switch (eventID) {
7842
- case "changed":
7843
- _super.prototype.on.call(this, eventID, propIDorCallback);
7844
- break;
7845
- }
7846
- }
7847
- else {
7848
- switch (eventID) {
7849
- case "changed":
7850
- _super.prototype.on.call(this, eventID, propIDorCallback, callback);
7851
- break;
7852
- }
7853
- }
7854
- this._monitor();
7855
- return this;
7856
- };
7857
- return Topology;
7858
- }(util.StateObject));
7859
-
7860
7927
  var logger$1 = util.scopedLogger("@hpcc-js/comms/dfuWorkunit.ts");
7861
7928
  var States;
7862
7929
  (function (States) {