diff --git a/dist/crypto-pro-js-m.d.ts b/dist/crypto-pro-js-m.d.ts index 78a4cde..f90e815 100644 --- a/dist/crypto-pro-js-m.d.ts +++ b/dist/crypto-pro-js-m.d.ts @@ -1,4 +1,4 @@ -// Type definitions for crypto-pro-js-m 1.0.1 +// Type definitions for crypto-pro-js-m 1.1.0 // Project: crypto-pro-js-m // Definitions by: Serge Schekhovtsov https://github.com/schekhovtsov diff --git a/dist/crypto-pro-js-m.js b/dist/crypto-pro-js-m.js index da2ee55..96c639c 100644 --- a/dist/crypto-pro-js-m.js +++ b/dist/crypto-pro-js-m.js @@ -5383,11 +5383,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); /*! no static exports found */ /***/ (function(module, exports) { -;(function () { +; (function () { //already loaded - if(window.cadesplugin) - return; - + if (window.cadesplugin && window.cadesplugin.LOG_LEVEL_DEBUG) { + return; + } var pluginObject; var plugin_resolved = 0; var plugin_reject; @@ -5399,732 +5399,889 @@ Object.defineProperty(exports, "__esModule", { value: true }); var canPromise = !!window.Promise; var cadesplugin_loaded_event_recieved = false; var isFireFoxExtensionLoaded = false; - var cadesplugin; + var cadesplugin = {}; - if(canPromise) - { - cadesplugin = new Promise(function(resolve, reject) - { - plugin_resolve = resolve; - plugin_reject = reject; - }); - } else - { - cadesplugin = {}; + if (canPromise) { + cadesplugin = new window.Promise(function (resolve, reject) { + plugin_resolve = resolve; + plugin_reject = reject; + }); } function check_browser() { - var ua= navigator.userAgent, tem, M= ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; - if(/trident/i.test(M[1])){ - tem = /\brv[ :]+(\d+)/g.exec(ua) || []; - return { name:'IE', version:(tem[1] || '')}; - } - if(M[1] === 'Chrome'){ - tem = ua.match(/\b(OPR|Edg|YaBrowser)\/(\d+)/); - if (tem != null) - return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] }; - } - M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?']; - if ((tem = ua.match(/version\/(\d+)/i)) != null) - M.splice(1, 1, tem[1]); - return {name:M[0],version:M[1]}; + var ua = window.navigator.userAgent, + tem, + M = ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; + if (/trident/i.test(M[1])) { + tem = /\brv[ :]+(\d+)/g.exec(ua) || []; + return { name: 'IE', version: (tem[1] || '') }; + } + if (M[1] === "Chrome") { + tem = ua.match(/\b(OPR|Edg|YaBrowser)\/(\d+)/); + if (tem != null && (tem.length > 2)) { + return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] }; + } + } + M = M[2] ? [M[1], M[2]] : [window.navigator.appName, window.navigator.appVersion, '-?']; + if ((tem = ua.match(/version\/(\d+)/i)) != null) { + M.splice(1, 1, tem[1]); + } + return { name: M[0], version: M[1] }; } + var browserSpecs = check_browser(); - function cpcsp_console_log(level, msg){ - //IE9 не может писать в консоль если не открыта вкладка developer tools - if(typeof(console) === 'undefined') - return; - if (level <= cadesplugin.current_log_level ){ - if (level === cadesplugin.LOG_LEVEL_DEBUG) - console.log("DEBUG: %s", msg); - if (level === cadesplugin.LOG_LEVEL_INFO) - console.info("INFO: %s", msg); - if (level === cadesplugin.LOG_LEVEL_ERROR) - console.error("ERROR: %s", msg); - return; - } + function cpcsp_console_log(level, msg) { + //IE9 не может писать в консоль если не открыта вкладка developer tools + if (typeof console === 'undefined') { + return; + } + if (level <= cadesplugin.current_log_level) { + if (level === cadesplugin.LOG_LEVEL_DEBUG) { + console.log("DEBUG: %s", msg); + } + if (level === cadesplugin.LOG_LEVEL_INFO) { + console.info("INFO: %s", msg); + } + if (level === cadesplugin.LOG_LEVEL_ERROR) { + console.error("ERROR: %s", msg); + } + } } - function set_log_level(level){ - if (!((level === cadesplugin.LOG_LEVEL_DEBUG) || - (level === cadesplugin.LOG_LEVEL_INFO) || - (level === cadesplugin.LOG_LEVEL_ERROR))){ - cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "cadesplugin_api.js: Incorrect log_level: " + level); - return; - } - cadesplugin.current_log_level = level; - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) - cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = DEBUG"); - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) - cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = INFO"); - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) - cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = ERROR"); - if(isNativeMessageSupported()) - { - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) - window.postMessage("set_log_level=debug", "*"); - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) - window.postMessage("set_log_level=info", "*"); - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) - window.postMessage("set_log_level=error", "*"); - } + function get_extension_version(callback) { + window.postMessage("cadesplugin_extension_version_request", "*"); + window.addEventListener("message", function (event) { + var resp_prefix = "cadesplugin_extension_version_response:"; + if (typeof (event.data) !== "string" || event.data.indexOf(resp_prefix) !== 0) { + return; + } + var ext_version = event.data.substring(resp_prefix.length); + callback(ext_version); + }, false); } - function set_constantValues() - { - cadesplugin.CAPICOM_MEMORY_STORE = 0; - cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1; - cadesplugin.CAPICOM_CURRENT_USER_STORE = 2; - cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4; - cadesplugin.CADESCOM_MEMORY_STORE = 0; - cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1; - cadesplugin.CADESCOM_CURRENT_USER_STORE = 2; - cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4; - cadesplugin.CADESCOM_CONTAINER_STORE = 100; + function get_extension_id(callback) { + window.postMessage("cadesplugin_extension_id_request", "*"); + window.addEventListener("message", function (event) { + var resp_prefix = "cadesplugin_extension_id_response:"; + if (typeof (event.data) !== "string" || event.data.indexOf(resp_prefix) !== 0) { + return; + } + var ext_id = event.data.substring(resp_prefix.length); + callback(ext_id); + }, false); + } - cadesplugin.CAPICOM_MY_STORE = "My"; + function set_log_level(level) { + if (!((level === cadesplugin.LOG_LEVEL_DEBUG) || + (level === cadesplugin.LOG_LEVEL_INFO) || + (level === cadesplugin.LOG_LEVEL_ERROR))) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "cadesplugin_api.js: Incorrect log_level: " + level); + return; + } + cadesplugin.current_log_level = level; + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = DEBUG"); + } + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = INFO"); + } + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = ERROR"); + } + if (isNativeMessageSupported()) { + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) { + window.postMessage("set_log_level=debug", "*"); + } + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) { + window.postMessage("set_log_level=info", "*"); + } + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) { + window.postMessage("set_log_level=error", "*"); + } + } + } - cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2; + function set_constantValues() { + cadesplugin.CAPICOM_MEMORY_STORE = 0; + cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1; + cadesplugin.CAPICOM_CURRENT_USER_STORE = 2; + cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4; + cadesplugin.CADESCOM_MEMORY_STORE = 0; + cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1; + cadesplugin.CADESCOM_CURRENT_USER_STORE = 2; + cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4; + cadesplugin.CADESCOM_CONTAINER_STORE = 100; - cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; + cadesplugin.CAPICOM_ROOT_STORE = "Root"; + cadesplugin.CAPICOM_CA_STORE = "CA"; + cadesplugin.CAPICOM_MY_STORE = "My"; + cadesplugin.CAPICOM_ADDRESSBOOK_STORE = "AddressBook"; - cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0; - cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1; - cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2; + cadesplugin.CAPICOM_STORE_OPEN_READ_WRITE = 1; + cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2; + cadesplugin.CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256; - cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010; - cadesplugin.CADESCOM_XADES_BES = 0x00000020; - cadesplugin.CADESCOM_XADES_T = 0x00000050; - cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0; - cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000; + cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; - cadesplugin.XmlDsigGost3410UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"; - cadesplugin.XmlDsigGost3411UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr3411"; - cadesplugin.XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"; - cadesplugin.XmlDsigGost3411Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"; + cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0; + cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1; + cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2; - cadesplugin.XmlDsigGost3411Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"; - cadesplugin.XmlDsigGost3410Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"; - cadesplugin.XmlDsigGost3411Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512"; - cadesplugin.XmlDsigGost3410Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512"; + cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010; + cadesplugin.CADESCOM_XADES_BES = 0x00000020; + cadesplugin.CADESCOM_XADES_T = 0x00000050; + cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0; + cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000; - cadesplugin.CADESCOM_CADES_DEFAULT = 0; - cadesplugin.CADESCOM_CADES_BES = 1; - cadesplugin.CADESCOM_CADES_T = 0x5; - cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d; - cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff; + cadesplugin.XmlDsigGost3410UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"; + cadesplugin.XmlDsigGost3411UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr3411"; + cadesplugin.XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"; + cadesplugin.XmlDsigGost3411Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"; - cadesplugin.CADESCOM_ENCODE_BASE64 = 0; - cadesplugin.CADESCOM_ENCODE_BINARY = 1; - cadesplugin.CADESCOM_ENCODE_ANY = -1; + cadesplugin.XmlDsigGost3411Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"; + cadesplugin.XmlDsigGost3410Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"; + cadesplugin.XmlDsigGost3411Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512"; + cadesplugin.XmlDsigGost3410Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512"; - cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0; - cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1; - cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2; + cadesplugin.CADESCOM_CADES_DEFAULT = 0; + cadesplugin.CADESCOM_CADES_BES = 1; + cadesplugin.CADESCOM_CADES_T = 0x5; + cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d; + cadesplugin.CADESCOM_CADES_A = 0xdd; + cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff; - cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0; - cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1; + cadesplugin.CADESCOM_ENCODE_BASE64 = 0; + cadesplugin.CADESCOM_ENCODE_BINARY = 1; + cadesplugin.CADESCOM_ENCODE_ANY = -1; - cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0; - cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; - cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2; - cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3; - cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4; - cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5; - cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6; - cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7; - cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8; - cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9; - cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10; - cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11; - cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12; + cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0; + cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1; + cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2; + cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_NONE = 0x100; - cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128; + cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0; + cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1; - cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9; + cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0; + cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; + cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2; + cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3; + cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4; + cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5; + cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6; + cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7; + cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8; + cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9; + cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10; + cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11; + cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12; - cadesplugin.CAPICOM_OID_OTHER = 0; - cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10; + cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128; - cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2; - cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5; - cadesplugin.CAPICOM_EKU_OTHER = 0; + cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9; - cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; - cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1; - cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2; - cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; - cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1; - cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2; - cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100; - cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1; + cadesplugin.CAPICOM_OID_OTHER = 0; + cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10; - cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0; - cadesplugin.CADESCOM_BASE64_TO_BINARY = 1; + cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2; + cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5; + cadesplugin.CAPICOM_EKU_OTHER = 0; - cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0; - cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1; - cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2; + cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; + cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1; + cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2; + cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; + cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1; + cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2; + cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100; + cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25; + cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0; + cadesplugin.CADESCOM_BASE64_TO_BINARY = 1; - cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0; - cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1; - cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2; - cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3; - cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4; - cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5; - cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112; + cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0; + cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1; + cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2; - cadesplugin.LOG_LEVEL_DEBUG = 4; - cadesplugin.LOG_LEVEL_INFO = 2; - cadesplugin.LOG_LEVEL_ERROR = 1; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA = 35; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA_OMAC = 36; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK = 45; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK_OMAC = 46; - cadesplugin.CADESCOM_AllowNone = 0; - cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1; - cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2; - cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4; - cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000; - cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000; - cadesplugin.CADESCOM_UseContainerStore = 0x40000000; + cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0; + cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1; + cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2; + cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3; + cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4; + cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5; + cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112; - cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01; - cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02; - cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04; - cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07; + cadesplugin.CADESCOM_CERT_INFO_ROLE = 100; + cadesplugin.CADESCOM_ROLE_ROOT = "ROOT"; + cadesplugin.CADESCOM_ROLE_CA = "CA"; + cadesplugin.CADESCOM_ROLE_LEAF = "LEAF"; - cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00; - cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01; - cadesplugin.ENABLE_CARRIER_CREATE = 0x02; - cadesplugin.ENABLE_ANY_OPERATION = 0x03; + cadesplugin.LOG_LEVEL_DEBUG = 4; + cadesplugin.LOG_LEVEL_INFO = 2; + cadesplugin.LOG_LEVEL_ERROR = 1; - cadesplugin.CADESCOM_PRODUCT_CSP = 0; - cadesplugin.CADESCOM_PRODUCT_OCSP = 1; - cadesplugin.CADESCOM_PRODUCT_TSP = 2; + cadesplugin.CADESCOM_AllowNone = 0; + cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1; + cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2; + cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4; + cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000; + cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000; + cadesplugin.CADESCOM_UseContainerStore = 0x40000000; - cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001; - cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002; - cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004; - cadesplugin.MEDIA_TYPE_SCARD = 0x00000008; + cadesplugin.ContextNone = 0; + cadesplugin.ContextUser = 0x1; + cadesplugin.ContextMachine = 0x2; + cadesplugin.ContextAdministratorForceMachine = 0x3; - cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0; - cadesplugin.AT_KEYEXCHANGE = 1; - cadesplugin.AT_SIGNATURE = 2; + cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01; + cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02; + cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04; + cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07; - cadesplugin.CARRIER_FLAG_REMOVABLE = 1; - cadesplugin.CARRIER_FLAG_UNIQUE = 2; - cadesplugin.CARRIER_FLAG_PROTECTED = 4; - cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER = 8; - cadesplugin.CARRIER_FLAG_SECURE_MESSAGING = 16; - cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE = 64; - cadesplugin.CARRIER_FLAG_VIRTUAL = 128; + cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00; + cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01; + cadesplugin.ENABLE_CARRIER_CREATE = 0x02; + cadesplugin.ENABLE_ANY_OPERATION = 0x03; + + cadesplugin.CADESCOM_PRODUCT_CSP = 0; + cadesplugin.CADESCOM_PRODUCT_OCSP = 1; + cadesplugin.CADESCOM_PRODUCT_TSP = 2; + + cadesplugin.MEDIA_TYPE_DEFAULT = 0x00000000; + cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001; + cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002; + cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004; + cadesplugin.MEDIA_TYPE_SCARD = 0x00000008; + + cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0; + cadesplugin.XCN_CRYPT_STRING_BASE64 = 0x1; + cadesplugin.XCN_CRYPT_STRING_BINARY = 0x2; + cadesplugin.XCN_CRYPT_STRING_BASE64REQUESTHEADER = 0x3; + cadesplugin.XCN_CRYPT_STRING_HEX = 0x4; + cadesplugin.XCN_CRYPT_STRING_HEXASCII = 0x5; + cadesplugin.XCN_CRYPT_STRING_BASE64_ANY = 0x6; + cadesplugin.XCN_CRYPT_STRING_ANY = 0x7; + cadesplugin.XCN_CRYPT_STRING_HEX_ANY = 0x8; + cadesplugin.XCN_CRYPT_STRING_BASE64X509CRLHEADER = 0x9; + cadesplugin.XCN_CRYPT_STRING_HEXADDR = 0xa; + cadesplugin.XCN_CRYPT_STRING_HEXASCIIADDR = 0xb; + cadesplugin.XCN_CRYPT_STRING_HEXRAW = 0xc; + cadesplugin.XCN_CRYPT_STRING_BASE64URI = 0xd; + cadesplugin.XCN_CRYPT_STRING_ENCODEMASK = 0xff; + cadesplugin.XCN_CRYPT_STRING_CHAIN = 0x100; + cadesplugin.XCN_CRYPT_STRING_TEXT = 0x200; + cadesplugin.XCN_CRYPT_STRING_PERCENTESCAPE = 0x8000000; + cadesplugin.XCN_CRYPT_STRING_HASHDATA = 0x10000000; + cadesplugin.XCN_CRYPT_STRING_STRICT = 0x20000000; + cadesplugin.XCN_CRYPT_STRING_NOCRLF = 0x40000000; + cadesplugin.XCN_CRYPT_STRING_NOCR = 0x80000000; + + cadesplugin.XCN_CERT_NAME_STR_NONE = 0; + cadesplugin.XCN_AT_NONE = 0; + cadesplugin.XCN_AT_KEYEXCHANGE = 1; + cadesplugin.XCN_AT_SIGNATURE = 2; + + cadesplugin.AT_KEYEXCHANGE = 1; + cadesplugin.AT_SIGNATURE = 2; + + cadesplugin.CARRIER_FLAG_REMOVABLE = 1; + cadesplugin.CARRIER_FLAG_UNIQUE = 2; + cadesplugin.CARRIER_FLAG_PROTECTED = 4; + cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER = 8; + cadesplugin.CARRIER_FLAG_SECURE_MESSAGING = 16; + cadesplugin.CARRIER_FLAG_ABLE_SET_KEY = 32; + cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE = 64; + cadesplugin.CARRIER_FLAG_VIRTUAL = 128; + + cadesplugin.CRYPT_MODE_CBCSTRICT = 1; + cadesplugin.CRYPT_MODE_CNT = 3; + cadesplugin.CRYPT_MODE_CBCRFC4357 = 31; + cadesplugin.CRYPT_MODE_CTR = 32; + cadesplugin.CRYPT_MODE_MGM = 33; + cadesplugin.CRYPT_MODE_GCM = 34; + cadesplugin.CRYPT_MODE_OMAC_CTR = 35; + cadesplugin.CRYPT_MODE_WRAP = 36; + cadesplugin.CRYPT_MODE_WRAP_PAD = 37; + + cadesplugin.PKCS5_PADDING = 1; + cadesplugin.RANDOM_PADDING = 2; + cadesplugin.ZERO_PADDING = 3; + cadesplugin.ISO10126_PADDING = 4; + cadesplugin.ANSI_X923_PADDING = 5; + cadesplugin.TLS_1_0_PADDING = 6; + cadesplugin.ISO_IEC_7816_4_PADDING = 7; + + cadesplugin.CAPICOM_STORE_SAVE_AS_SERIALIZED = 0; + cadesplugin.CAPICOM_STORE_SAVE_AS_PKCS7 = 1; + + cadesplugin.CERT_TRUST_NO_ERROR = 0x00000000; + cadesplugin.CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001; + cadesplugin.CERT_TRUST_IS_REVOKED = 0x00000004; + cadesplugin.CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008; + cadesplugin.CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010; + cadesplugin.CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020; + cadesplugin.CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040; + cadesplugin.CERT_TRUST_IS_CYCLIC = 0x00000080; + cadesplugin.CERT_TRUST_INVALID_EXTENSION = 0x00000100; + cadesplugin.CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200; + cadesplugin.CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400; + cadesplugin.CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800; + cadesplugin.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000; + cadesplugin.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000; + cadesplugin.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000; + cadesplugin.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000; + cadesplugin.CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000; + cadesplugin.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000; + cadesplugin.CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000; + cadesplugin.CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000; + cadesplugin.CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000; + + cadesplugin.XCN_CERT_NO_KEY_USAGE = 0; + cadesplugin.XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE = 0x80; + cadesplugin.XCN_CERT_NON_REPUDIATION_KEY_USAGE = 0x40; + cadesplugin.XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE = 0x20; + cadesplugin.XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE = 0x10; + cadesplugin.XCN_CERT_KEY_AGREEMENT_KEY_USAGE = 0x8; + cadesplugin.XCN_CERT_KEY_CERT_SIGN_KEY_USAGE = 0x4; + cadesplugin.XCN_CERT_OFFLINE_CRL_SIGN_KEY_USAGE = 0x2; + cadesplugin.XCN_CERT_CRL_SIGN_KEY_USAGE = 0x2; + cadesplugin.XCN_CERT_ENCIPHER_ONLY_KEY_USAGE = 0x1; + cadesplugin.XCN_CERT_DECIPHER_ONLY_KEY_USAGE = 0x8000; + + cadesplugin.CADESCOM_XADES_ACCEPT_ANY_ID_ATTR_NAMESPACE = 1; + cadesplugin.CADES_USE_OCSP_AUTHORIZED_POLICY = 0x00020000; + + cadesplugin.XCN_NCRYPT_NO_OPERATION = 0; + cadesplugin.XCN_NCRYPT_CIPHER_OPERATION = 0x1; + cadesplugin.XCN_NCRYPT_HASH_OPERATION = 0x2; + cadesplugin.XCN_NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION = 0x4; + cadesplugin.XCN_NCRYPT_SECRET_AGREEMENT_OPERATION = 0x8; + cadesplugin.XCN_NCRYPT_SIGNATURE_OPERATION = 0x10; + cadesplugin.XCN_NCRYPT_RNG_OPERATION = 0x20; + + cadesplugin.XCN_CRYPT_ANY_GROUP_ID = 0; + cadesplugin.XCN_CRYPT_HASH_ALG_OID_GROUP_ID = 1; + cadesplugin.XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID = 2; + cadesplugin.XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID = 3; + cadesplugin.XCN_CRYPT_SIGN_ALG_OID_GROUP_ID = 4; + cadesplugin.XCN_CRYPT_RDN_ATTR_OID_GROUP_ID = 5; + cadesplugin.XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID = 6; + cadesplugin.XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID = 7; + cadesplugin.XCN_CRYPT_POLICY_OID_GROUP_ID = 8; + cadesplugin.XCN_CRYPT_TEMPLATE_OID_GROUP_ID = 9; + + cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_ANY = 0; + cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG = 0x80000000; + cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG = 0x40000000; + + cadesplugin.CONTROL_KEY_TIME_VALIDITY_DISABLED = 0; + cadesplugin.CONTROL_KEY_TIME_VALIDITY_ENABLED = 1; + cadesplugin.CONTROL_KEY_TIME_VALIDITY_STRICT = 2; + + cadesplugin.AlgorithmFlagsNone = 0; + cadesplugin.AlgorithmFlagsWrap = 0x1; } function async_spawn(generatorFunc) { - function continuer(verb, arg) { - var result; - try { - result = generator[verb](arg); - } catch (err) { - return Promise.reject(err); + function continuer(verb, arg) { + var result; + try { + result = generator[verb](arg); + } catch (err) { + return window.Promise.reject(err); + } + if (result.done) { + return result.value; + } else { + return window.Promise.resolve(result.value).then(onFulfilled, onRejected); + } } - if (result.done) { - return result.value; - } else { - return Promise.resolve(result.value).then(onFulfilled, onRejected); - } - } - var generator = generatorFunc(Array.prototype.slice.call(arguments, 1)); - var onFulfilled = continuer.bind(continuer, "next"); - var onRejected = continuer.bind(continuer, "throw"); - return onFulfilled(); + var generator = generatorFunc(Array.prototype.slice.call(arguments, 1)); + var onFulfilled = continuer.bind(continuer, "next"); + var onRejected = continuer.bind(continuer, "throw"); + return onFulfilled(); } function isIE() { - // var retVal = (("Microsoft Internet Explorer" == navigator.appName) || // IE < 11 - // navigator.userAgent.match(/Trident\/./i)); // IE 11 - return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE'); + // var retVal = (("Microsoft Internet Explorer" == navigator.appName) || // IE < 11 + // navigator.userAgent.match(/Trident\/./i)); // IE 11 + return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE'); } function isIOS() { - return (navigator.userAgent.match(/ipod/i) || - navigator.userAgent.match(/ipad/i) || - navigator.userAgent.match(/iphone/i)); + return (window.navigator.userAgent.match(/ipod/i) || + window.navigator.userAgent.match(/ipad/i) || + window.navigator.userAgent.match(/iphone/i)); } - function isNativeMessageSupported() - { - // В IE работаем через NPAPI - if(isIE()) - return false; - // В Edge работаем через NativeMessage - if (browserSpecs.name === 'Edg') { - return true; - } - if (browserSpecs.name === 'YaBrowser') { - isYandex = true; - return true; - } - // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии - if(browserSpecs.name === 'Opera') { - isOpera = true; - if(browserSpecs.version >= 33){ - return true; + function isNativeMessageSupported() { + // В IE работаем через NPAPI + if (isIE()) { + return false; } - else{ - return false; + // В Edge работаем через NativeMessage + if (browserSpecs.name === 'Edg') { + return true; } - } - if(browserSpecs.name === 'Firefox') { - isFireFox = true; - if(browserSpecs.version >= 52){ - return true; + if (browserSpecs.name === 'YaBrowser') { + isYandex = true; + return true; } - else{ - return false; + // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии + if (browserSpecs.name === 'Opera') { + isOpera = true; + return (browserSpecs.version >= 33); } - } - if(browserSpecs.name === 'Chrome') { - if(browserSpecs.version >= 42){ - return true; + if (browserSpecs.name === 'Firefox') { + isFireFox = true; + return (browserSpecs.version >= 52); } - else{ - return false; + if (browserSpecs.name === 'Chrome') { + return (browserSpecs.version >= 42); } - } - //В Сафари начиная с 12 версии нет NPAPI - if(browserSpecs.name === 'Safari') { - isSafari = true; - if(browserSpecs.version >= 12) { - return true; - } else { - return false; + //В Сафари начиная с 12 версии нет NPAPI + if (browserSpecs.name === 'Safari') { + isSafari = true; + return (browserSpecs.version >= 12); } - } } // Функция активации объектов КриптоПро ЭЦП Browser plug-in function CreateObject(name) { - if (isIOS()) { - // На iOS для создания объектов используется функция - // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js - return call_ru_cryptopro_npcades_10_native_bridge("CreateObject", [name]); - } - if (isIE()) { - // В Internet Explorer создаются COM-объекты - if (name.match(/X509Enrollment/i)) { - try { - // Объекты CertEnroll пробуем создавать через нашу фабрику, - // если не получилось то через CX509EnrollmentWebClassFactory - var objCertEnrollClassFactory = document.getElementById("webClassFactory"); - return objCertEnrollClassFactory.CreateObject(name); - } - catch (e) { + if (isIOS()) { + // На iOS для создания объектов используется функция + // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js + return call_ru_cryptopro_npcades_10_native_bridge("CreateObject", [name]); + } + var objWebClassFactory; + if (isIE()) { + // В Internet Explorer создаются COM-объекты + if (name.match(/X509Enrollment/i)) { + try { + // Объекты CertEnroll пробуем создавать через нашу фабрику, + // если не получилось то через CX509EnrollmentWebClassFactory + objWebClassFactory = document.getElementById("webClassFactory"); + return objWebClassFactory.CreateObject(name); + } + catch (e) { + try { + var objCertEnrollClassFactory = document.getElementById("certEnrollClassFactory"); + return objCertEnrollClassFactory.CreateObject(name); + } + catch (err) { + throw ("Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS"); + } + } + } + // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory try { - var objWebClassFactory = document.getElementById("certEnrollClassFactory"); - return objWebClassFactory.CreateObject(name); + objWebClassFactory = document.getElementById("webClassFactory"); + return objWebClassFactory.CreateObject(name); + } catch (e) { + // Для версий плагина ниже 2.0.12538 + return new window.ActiveXObject(name); } - catch (err) { - throw ("Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS"); - } - } } - // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory - try { - var objWebClassFactory = document.getElementById("webClassFactory"); - return objWebClassFactory.CreateObject(name); - } - catch (e) { - // Для версий плагина ниже 2.0.12538 - return new ActiveXObject(name); - } - } - // создаются объекты NPAPI - return pluginObject.CreateObject(name); + // создаются объекты NPAPI + return pluginObject.CreateObject(name); } function decimalToHexString(number) { - if (number < 0) { - number = 0xFFFFFFFF + number + 1; - } + if (number < 0) { + number = 0xFFFFFFFF + number + 1; + } - return number.toString(16).toUpperCase(); + return number.toString(16).toUpperCase(); } function GetMessageFromException(e) { - var err = e.message; - if (!err) { - err = e; - } else if (e.number) { - err += " (0x" + decimalToHexString(e.number) + ")"; - } - return err; + var err = e.message; + if (!err) { + err = e; + } else if (e.number) { + err += " (0x" + decimalToHexString(e.number) + ")"; + } + return err; } function getLastError(exception) { - if(isNativeMessageSupported() || isIE() || isIOS() ) { - return GetMessageFromException(exception); - } + if (isNativeMessageSupported() || isIE() || isIOS()) { + return GetMessageFromException(exception); + } - try { - return pluginObject.getLastError(); - } catch(e) { - return GetMessageFromException(exception); - } + try { + return pluginObject.getLastError(); + } catch (e) { + return GetMessageFromException(exception); + } } // Функция для удаления созданных объектов function ReleasePluginObjects() { - return cpcsp_chrome_nmcades.ReleasePluginObjects(); + // noinspection JSUnresolvedVariable + return cpcsp_chrome_nmcades.ReleasePluginObjects(); } // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in function CreateObjectAsync(name) { - return pluginObject.CreateObjectAsync(name); + return pluginObject.CreateObjectAsync(name); } - //Функции для IOS + // Функции для IOS + // noinspection JSUnusedGlobalSymbols var ru_cryptopro_npcades_10_native_bridge = { - callbacksCount : 1, - callbacks : {}, + callbacksCount: 1, + callbacks: {}, - // Automatically called by native layer when a result is available - resultForCallback : function resultForCallback(callbackId, resultArray) { - var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId]; - if (!callback) return; - callback.apply(null,resultArray); - }, + // Automatically called by native layer when a result is available + resultForCallback: function resultForCallback(callbackId, resultArray) { + var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId]; + if (!callback) { + return; + } + callback.apply(null, resultArray); + }, - // Use this in javascript to request native objective-c code - // functionName : string (I think the name is explicit :p) - // args : array of arguments - // callback : function with n-arguments that is going to be called when the native code returned - call : function call(functionName, args, callback) { - var hasCallback = callback && typeof callback === "function"; - var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0; + // Use this in javascript to request native objective-c code + // functionName : string (I think the name is explicit :p) + // args : array of arguments + // callback : function with n-arguments that is going to be called when the native code returned + call: function call(functionName, args, callback) { + var hasCallback = callback && typeof callback === "function"; + var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0; - if (hasCallback) - ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback; + if (hasCallback) { + ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback; + } - var iframe = document.createElement("IFRAME"); - var arrObjs = new Array("_CPNP_handle"); - try{ - iframe.setAttribute("src", "cpnp-js-call:" + functionName + ":" + callbackId+ ":" + encodeURIComponent(JSON.stringify(args, arrObjs))); - } catch(e){ - alert(e); + var iframe = document.createElement("IFRAME"); + var arrObjs = new Array("_CPNP_handle"); + try { + iframe.setAttribute("src", "cpnp-js-call:" + functionName + ":" + callbackId + ":" + encodeURIComponent(window.JSON.stringify(args, arrObjs))); + } catch (e) { + window.alert(e); + } + document.documentElement.appendChild(iframe); + iframe.parentNode.removeChild(iframe); + iframe = null; } - document.documentElement.appendChild(iframe); - iframe.parentNode.removeChild(iframe); - iframe = null; - } }; - function call_ru_cryptopro_npcades_10_native_bridge(functionName, array){ - var tmpobj; - var ex; - ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function(e, response){ - ex = e; - var str='tmpobj='+response; - eval(str); - if (typeof (tmpobj) === "string"){ - tmpobj = tmpobj.replace(/\\\n/gm, "\n"); - tmpobj = tmpobj.replace(/\\\r/gm, "\r"); + function call_ru_cryptopro_npcades_10_native_bridge(functionName, array) { + var tmpobj; + var ex; + ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function (e, response) { + ex = e; + var tmpobj = ""; + try { + tmpobj = window.JSON.parse(response); + } + catch (err) { + tmpobj = response; + } + if (typeof tmpobj === "string") { + tmpobj = tmpobj.replace(/\\\n/gm, "\n"); + tmpobj = tmpobj.replace(/\\\r/gm, "\r"); + } + }); + if (ex) { + throw ex; } - }); - if(ex) - throw ex; - return tmpobj; + return tmpobj; } - function show_firefox_missing_extension_dialog() - { - if (!window.cadesplugin_skip_extension_install) - { - var ovr = document.createElement('div'); - ovr.id = "cadesplugin_ovr"; - ovr.style = "visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)"; - ovr.innerHTML = "
" + - "" + - "

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его." + - "

Скачать расширение

" + - "
"; - document.getElementsByTagName("Body")[0].appendChild(ovr); - document.getElementById("cadesplugin_close_install").addEventListener('click',function() - { - plugin_loaded_error("Плагин недоступен"); - document.getElementById("cadesplugin_ovr").style.visibility = 'hidden'; - }); + function show_firefox_missing_extension_dialog() { + if (!window.cadesplugin_skip_extension_install) { + var ovr = document.createElement('div'); + ovr.id = "cadesplugin_ovr"; + ovr.style = "visibility: hidden; position: fixed; left: 0; top: 0; width:100%; height:100%; background-color: rgba(0,0,0,0.7)"; + ovr.innerHTML = "
" + + "" + + "

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его." + + "

Скачать расширение

" + + "
"; + document.getElementsByTagName("Body")[0].appendChild(ovr); + document.getElementById("cadesplugin_close_install").addEventListener('click', function () { + plugin_loaded_error("Плагин недоступен"); + document.getElementById("cadesplugin_ovr").style.visibility = 'hidden'; + }); - ovr.addEventListener('click',function() - { - plugin_loaded_error("Плагин недоступен"); - document.getElementById("cadesplugin_ovr").style.visibility = 'hidden'; - }); - ovr.style.visibility="visible"; - } + ovr.addEventListener('click', function () { + plugin_loaded_error("Плагин недоступен"); + document.getElementById("cadesplugin_ovr").style.visibility = 'hidden'; + }); + ovr.style.visibility = "visible"; + } } + function firefox_or_safari_nmcades_onload() { - if (window.cadesplugin_extension_loaded_callback) - window.cadesplugin_extension_loaded_callback(); - isFireFoxExtensionLoaded = true; - cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error); + // noinspection JSUnresolvedVariable + if (window.cadesplugin_extension_loaded_callback) { + window.cadesplugin_extension_loaded_callback(); + } + isFireFoxExtensionLoaded = true; + // noinspection JSUnresolvedVariable,JSUnresolvedFunction + cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error); + } + + function load_js_script(url, successFunc, errorFunc) { + var script = document.createElement("script"); + script.setAttribute("type", "text/javascript"); + script.setAttribute("src", url); + script.onerror = errorFunc; + script.onload = successFunc; + document.getElementsByTagName("head")[0].appendChild(script); } function nmcades_api_onload() { - if (!isIE() && !isFireFox && !isSafari) { - if (window.cadesplugin_extension_loaded_callback) - window.cadesplugin_extension_loaded_callback(); - } - window.postMessage("cadesplugin_echo_request", "*"); - window.addEventListener("message", function (event){ - if (typeof(event.data) !== "string" || !event.data.match("cadesplugin_loaded")) - return; - if (cadesplugin_loaded_event_recieved) - return; - if(isFireFox || isSafari) - { - // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js - var url = event.data.substring(event.data.indexOf("url:") + 4); - if (!url.match("^moz-extension://[a-zA-Z0-9-]+/nmcades_plugin_api.js$") - && !url.match("^safari-extension://[a-zA-Z0-9-]+/[a-zA-Z0-9]+/nmcades_plugin_api.js$")) - { - cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "Bad url \"" + url + "\" for load CryptoPro Extension for CAdES Browser plug-in"); - plugin_loaded_error(); - return; - } - var fileref = document.createElement('script'); - fileref.setAttribute("type", "text/javascript"); - fileref.setAttribute("src", url); - fileref.onerror = plugin_loaded_error; - fileref.onload = firefox_or_safari_nmcades_onload; - document.getElementsByTagName("head")[0].appendChild(fileref); - }else { - cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error); + if (!isIE() && !isFireFox && !isSafari) { + // noinspection JSUnresolvedVariable + if (window.cadesplugin_extension_loaded_callback) { + window.cadesplugin_extension_loaded_callback(); + } } - cadesplugin_loaded_event_recieved = true; - }, false); + window.postMessage("cadesplugin_echo_request", "*"); + window.addEventListener("message", function (event) { + if (typeof (event.data) !== "string" || !event.data.match("cadesplugin_loaded")) { + return; + } + if (cadesplugin_loaded_event_recieved) { + return; + } + if (isFireFox || isSafari) { + // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js + var url = event.data.substring(event.data.indexOf("url:") + 4); + if (!url.match("^(moz|safari)-extension://[a-zA-Z0-9/_-]+/nmcades_plugin_api.js$")) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "Bad url \"" + url + "\" for load CryptoPro Extension for CAdES Browser plug-in"); + plugin_loaded_error(); + return; + } + load_js_script(url, firefox_or_safari_nmcades_onload, plugin_loaded_error); + } else { + // noinspection JSUnresolvedVariable,JSUnresolvedFunction + cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error); + } + cadesplugin_loaded_event_recieved = true; + }, false); } - //Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari - function load_extension() - { - if(isFireFox || isSafari){ - // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера. - nmcades_api_onload(); - } else { - // в асинхронном варианте для Yandex и Opera подключаем расширение из Opera store. - if (isOpera || isYandex) { - var fileref = document.createElement('script'); - fileref.setAttribute("type", "text/javascript"); - fileref.setAttribute("src", "chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js"); - fileref.onerror = plugin_loaded_error; - fileref.onload = nmcades_api_onload; - document.getElementsByTagName("head")[0].appendChild(fileref); - } else { - // для Chrome, Chromium, Chromium Edge расширение из Chrome store - var fileref = document.createElement('script'); - fileref.setAttribute("type", "text/javascript"); - fileref.setAttribute("src", "chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js"); - fileref.onerror = plugin_loaded_error; - fileref.onload = nmcades_api_onload; - document.getElementsByTagName("head")[0].appendChild(fileref); + // Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari + function load_extension() { + if (isFireFox || isSafari) { + // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера. + nmcades_api_onload(); + return; } - } + var operaUrl = "chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js"; + var manifestv2Url = "chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js"; + var manifestv3Url = "chrome-extension://pfhgbfnnjiafkhfdkmpiflachepdcjod/nmcades_plugin_api.js"; + if (isYandex || isOpera) { + // в асинхронном варианте для Yandex пробуем подключить расширения по очереди + load_js_script(operaUrl, nmcades_api_onload, function () { + load_js_script(manifestv2Url, nmcades_api_onload, function () { + load_js_script(manifestv3Url, nmcades_api_onload, plugin_loaded_error); + }); + }); + return; + } + // для Chrome, Chromium, Chromium Edge расширение из Chrome store + load_js_script(manifestv2Url, nmcades_api_onload, function () { + load_js_script(manifestv3Url, nmcades_api_onload, plugin_loaded_error); + }); } //Загружаем плагин для NPAPI - function load_npapi_plugin() - { - var elem = document.createElement('object'); - elem.setAttribute("id", "cadesplugin_object"); - elem.setAttribute("type", "application/x-cades"); - elem.setAttribute("style", "visibility: hidden"); - document.getElementsByTagName("body")[0].appendChild(elem); - pluginObject = document.getElementById("cadesplugin_object"); - if(isIE()) - { - var elem1 = document.createElement('object'); - elem1.setAttribute("id", "certEnrollClassFactory"); - elem1.setAttribute("classid", "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"); - elem1.setAttribute("style", "visibility: hidden"); - document.getElementsByTagName("body")[0].appendChild(elem1); - var elem2 = document.createElement('object'); - elem2.setAttribute("id", "webClassFactory"); - elem2.setAttribute("classid", "clsid:B04C8637-10BD-484E-B0DA-B8A039F60024"); - elem2.setAttribute("style", "visibility: hidden"); - document.getElementsByTagName("body")[0].appendChild(elem2); - } + function load_npapi_plugin() { + var elem = document.createElement('object'); + elem.setAttribute("id", "cadesplugin_object"); + elem.setAttribute("type", "application/x-cades"); + elem.setAttribute("style", "visibility: hidden"); + document.getElementsByTagName("body")[0].appendChild(elem); + pluginObject = document.getElementById("cadesplugin_object"); + if (isIE()) { + var elem1 = document.createElement('object'); + elem1.setAttribute("id", "certEnrollClassFactory"); + elem1.setAttribute("classid", "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"); + elem1.setAttribute("style", "visibility: hidden"); + document.getElementsByTagName("body")[0].appendChild(elem1); + var elem2 = document.createElement('object'); + elem2.setAttribute("id", "webClassFactory"); + elem2.setAttribute("classid", "clsid:B04C8637-10BD-484E-B0DA-B8A039F60024"); + elem2.setAttribute("style", "visibility: hidden"); + document.getElementsByTagName("body")[0].appendChild(elem2); + } } //Отправляем событие что все ок. - function plugin_loaded() - { - plugin_resolved = 1; - if(canPromise) - { - plugin_resolve(); - }else { - window.postMessage("cadesplugin_loaded", "*"); - } + function plugin_loaded() { + plugin_resolved = 1; + if (canPromise) { + plugin_resolve(); + } else { + window.postMessage("cadesplugin_loaded", "*"); + } } //Отправляем событие что сломались. - function plugin_loaded_error(msg) - { - if(typeof(msg) === 'undefined' || typeof(msg) === 'object') - msg = "Плагин недоступен"; - plugin_resolved = 1; - if(canPromise) - { - plugin_reject(msg); - } else { - window.postMessage("cadesplugin_load_error", "*"); - } + function plugin_loaded_error(msg) { + if (typeof (msg) === 'undefined' || typeof (msg) === 'object') { + msg = "Плагин недоступен"; + } + plugin_resolved = 1; + if (canPromise) { + plugin_reject(msg); + } else { + window.postMessage("cadesplugin_load_error", "*"); + } } //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку - function check_load_timeout() - { - if(plugin_resolved === 1) - return; - if(isFireFox) - { - if (!isFireFoxExtensionLoaded) - show_firefox_missing_extension_dialog(); - } - plugin_resolved = 1; - if(canPromise) - { - plugin_reject("Истекло время ожидания загрузки плагина"); - } else { - window.postMessage("cadesplugin_load_error", "*"); - } - - } - - //Вспомогательная функция для NPAPI - function createPromise(arg) - { - return new Promise(arg); - } - - function check_npapi_plugin (){ - try { - var oAbout = CreateObject("CAdESCOM.About"); - plugin_loaded(); - } - catch (err) { - document.getElementById("cadesplugin_object").style.display = 'none'; - // Объект создать не удалось, проверим, установлен ли - // вообще плагин. Такая возможность есть не во всех браузерах - var mimetype = navigator.mimeTypes["application/x-cades"]; - if (mimetype) { - var plugin = mimetype.enabledPlugin; - if (plugin) { - plugin_loaded_error("Плагин загружен, но не создаются обьекты"); - }else - { - plugin_loaded_error("Ошибка при загрузке плагина"); - } - }else - { - plugin_loaded_error("Плагин недоступен"); + function check_load_timeout() { + if (plugin_resolved === 1) { + return; } - } - } - - //Проверяем работает ли плагин - function check_plugin_working() - { - var div = document.createElement("div"); - div.innerHTML = ""; - var isIeLessThan9 = (div.getElementsByTagName("i").length === 1); - if (isIeLessThan9) { - plugin_loaded_error("Internet Explorer версии 8 и ниже не поддерживается"); - return; - } - - if(isNativeMessageSupported()) - { - load_extension(); - }else if(!canPromise) { - window.addEventListener("message", function (event){ - if (event.data !== "cadesplugin_echo_request") - return; - load_npapi_plugin(); - check_npapi_plugin(); - }, - false); - }else - { - if(document.readyState === "complete"){ - load_npapi_plugin(); - check_npapi_plugin(); + if (isFireFox && !isFireFoxExtensionLoaded) { + show_firefox_missing_extension_dialog(); + } + plugin_resolved = 1; + if (canPromise) { + plugin_reject("Истекло время ожидания загрузки плагина"); } else { - window.addEventListener("load", function (event) { - load_npapi_plugin(); - check_npapi_plugin(); - }, false); + window.postMessage("cadesplugin_load_error", "*"); } - } } - function set_pluginObject(obj) - { - pluginObject = obj; + function check_npapi_plugin() { + try { + CreateObject("CAdESCOM.About"); + plugin_loaded(); + } catch (err) { + document.getElementById("cadesplugin_object").style.display = 'none'; + // Объект создать не удалось, проверим, установлен ли + // вообще плагин. Такая возможность есть не во всех браузерах + // noinspection JSDeprecatedSymbols + var mimetype = window.navigator.mimeTypes["application/x-cades"]; + if (mimetype) { + // noinspection JSDeprecatedSymbols + var plugin = mimetype.enabledPlugin; + if (plugin) { + plugin_loaded_error("Плагин загружен, но не создаются обьекты"); + } else { + plugin_loaded_error("Ошибка при загрузке плагина"); + } + } else { + plugin_loaded_error("Плагин недоступен"); + } + } } - function is_capilite_enabled() - { - if ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP) - return true; - return false; + // Проверяем работает ли плагин + function check_plugin_working() { + var div = document.createElement("div"); + div.innerHTML = ""; + var isIeLessThan9 = (div.getElementsByTagName("i").length === 1); + if (isIeLessThan9) { + plugin_loaded_error("Internet Explorer версии 8 и ниже не поддерживается"); + return; + } + + if (isNativeMessageSupported()) { + load_extension(); + } else if (!canPromise) { + window.addEventListener("message", function (event) { + if (event.data !== "cadesplugin_echo_request") { + return; + } + load_npapi_plugin(); + check_npapi_plugin(); + }, false); + } else { + if (document.readyState === "complete") { + load_npapi_plugin(); + check_npapi_plugin(); + } else { + window.addEventListener("load", function (event) { + load_npapi_plugin(); + check_npapi_plugin(); + }, false); + } + } + } + + function set_pluginObject(obj) { + pluginObject = obj; + } + + function is_capilite_enabled() { + // noinspection JSUnresolvedVariable + return ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP); + } + + function set_load_timeout() { + // noinspection JSUnresolvedVariable + if (window.cadesplugin_load_timeout) { + window.setTimeout(check_load_timeout, window.cadesplugin_load_timeout); + } else { + window.setTimeout(check_load_timeout, 20000); + } + } + + // noinspection JSUnusedLocalSymbols + var onVisibilityChange = function (event) { + if (document.hidden === false) { + document.removeEventListener("visibilitychange", onVisibilityChange); + set_load_timeout(); + check_plugin_working(); + } }; //Export - cadesplugin.JSModuleVersion = "2.3.2"; + cadesplugin.JSModuleVersion = "2.4.2"; cadesplugin.async_spawn = async_spawn; cadesplugin.set = set_pluginObject; cadesplugin.set_log_level = set_log_level; + cadesplugin.get_extension_version = get_extension_version; + cadesplugin.get_extension_id = get_extension_id; cadesplugin.getLastError = getLastError; cadesplugin.is_capilite_enabled = is_capilite_enabled; - if(isNativeMessageSupported()) - { - cadesplugin.CreateObjectAsync = CreateObjectAsync; - cadesplugin.ReleasePluginObjects = ReleasePluginObjects; + if (isNativeMessageSupported()) { + cadesplugin.CreateObjectAsync = CreateObjectAsync; + cadesplugin.ReleasePluginObjects = ReleasePluginObjects; } - if(!isNativeMessageSupported()) - { - cadesplugin.CreateObject = CreateObject; - } - - if(window.cadesplugin_load_timeout) - { - setTimeout(check_load_timeout, window.cadesplugin_load_timeout); - } - else - { - setTimeout(check_load_timeout, 20000); + if (!isNativeMessageSupported()) { + cadesplugin.CreateObject = CreateObject; } set_constantValues(); cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR; window.cadesplugin = cadesplugin; + if (isSafari && document.hidden) { + document.addEventListener("visibilitychange", onVisibilityChange); + return; + } + set_load_timeout(); check_plugin_working(); }()); diff --git a/dist/crypto-pro-js-m.js.map b/dist/crypto-pro-js-m.js.map index 81c8b7d..d36a53b 100644 --- a/dist/crypto-pro-js-m.js.map +++ b/dist/crypto-pro-js-m.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://cryptoPro/webpack/universalModuleDefinition","webpack://cryptoPro/webpack/bootstrap","webpack://cryptoPro/../node_modules/base64-js/index.js","webpack://cryptoPro/../node_modules/buffer/index.js","webpack://cryptoPro/../node_modules/buffer/node_modules/isarray/index.js","webpack://cryptoPro/../node_modules/ieee754/index.js","webpack://cryptoPro/../node_modules/webpack/buildin/global.js","webpack://cryptoPro/./api/addAttachedSignature.ts","webpack://cryptoPro/./api/addDetachedSignature.ts","webpack://cryptoPro/./api/certificate/certificate.ts","webpack://cryptoPro/./api/certificate/exportBase64.ts","webpack://cryptoPro/./api/certificate/getAlgorithm.ts","webpack://cryptoPro/./api/certificate/getCadesProp.ts","webpack://cryptoPro/./api/certificate/getDecodedExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getInfo.ts","webpack://cryptoPro/./api/certificate/hasExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/index.ts","webpack://cryptoPro/./api/certificate/isValid.ts","webpack://cryptoPro/./api/createAttachedSignature.ts","webpack://cryptoPro/./api/createDetachedSignature.ts","webpack://cryptoPro/./api/createHash.ts","webpack://cryptoPro/./api/createXMLSignature.ts","webpack://cryptoPro/./api/getAllCertificates.ts","webpack://cryptoPro/./api/getAllContainerCertificates.ts","webpack://cryptoPro/./api/getAllUserCertificates.ts","webpack://cryptoPro/./api/getCertificate.ts","webpack://cryptoPro/./api/getCertificates.ts","webpack://cryptoPro/./api/getContainerCertificates.ts","webpack://cryptoPro/./api/getCspVersion.ts","webpack://cryptoPro/./api/getPluginVersion.ts","webpack://cryptoPro/./api/getSystemInfo.ts","webpack://cryptoPro/./api/getUserCertificates.ts","webpack://cryptoPro/./api/index.ts","webpack://cryptoPro/./api/isValidSystemSetup.ts","webpack://cryptoPro/./constants/cades-constants.ts","webpack://cryptoPro/./constants/index.ts","webpack://cryptoPro/./constants/issuer-tags-translations.ts","webpack://cryptoPro/./constants/oids-dictionary.ts","webpack://cryptoPro/./constants/subject-tags-translations.ts","webpack://cryptoPro/./crypto-pro-js-m.ts","webpack://cryptoPro/./helpers/_afterPluginsLoaded.ts","webpack://cryptoPro/./helpers/_extractCommonName.ts","webpack://cryptoPro/./helpers/_extractMeaningfulErrorMessage.ts","webpack://cryptoPro/./helpers/_generateCadesFn.ts","webpack://cryptoPro/./helpers/_getCadesCert.ts","webpack://cryptoPro/./helpers/_getCadesContainerCert.ts","webpack://cryptoPro/./helpers/_getCadesUserCert.ts","webpack://cryptoPro/./helpers/_getDateObj.ts","webpack://cryptoPro/./helpers/_isSupportedCSPVersion.ts","webpack://cryptoPro/./helpers/_isSupportedCadesVersion.ts","webpack://cryptoPro/./helpers/_parseCertInfo.ts","webpack://cryptoPro/./helpers/getSignType.ts","webpack://cryptoPro/./vendor/cadesplugin_api.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,qDAAW;AAChC,cAAc,mBAAO,CAAC,iDAAS;AAC/B,cAAc,mBAAO,CAAC,qEAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5vDA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;;;;;ACpFA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA,kFAA6E;AAC7E,0HAAqE;AACrE,2JAA2F;AAC3F,iHAAiH;AACjH,wGAAyD;AACzD,kGAAqD;AACrD,kGAA+D;AAE/D;;;;;;;GAOG;AACU,4BAAoB,GAAG,yCAAmB,CACrD,UAAO,UAAkB,EAAE,aAAmC,EAAE,QAA4B;IAA5B,6CAA4B;;;;;;oBAClF,WAAW,GAAK,MAAM,Y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BAAgB,CAAC;SACrC;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,WAAW,CAAC,mBAAmB,CAAC;SACxC;KACF;AACH,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBF,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB,WAAW,UAAU,YAAY,aAAa;AACrG,+EAA+E,aAAa,mBAAmB,uBAAuB,uBAAuB,cAAc,mBAAmB,YAAY;AAC1M,oEAAoE,iBAAiB,yBAAyB,WAAW;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC","file":"crypto-pro-js-m.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cryptoPro\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cryptoPro\"] = factory();\n\telse\n\t\troot[\"cryptoPro\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./crypto-pro-js-m.ts\");\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const addAttachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, signedMessage: string | ArrayBuffer, signType: SignType = 'PKCS7'): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addAttachedSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let messageBase64;\n\n try {\n messageBase64 = Buffer.from(signedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, signTypeConst));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const addDetachedSignature = _afterPluginsLoaded(\n async (\n thumbprint: string,\n signedMessage: string | ArrayBuffer,\n messageHash: string,\n signType: SignType = 'PKCS7',\n ): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyHash(cadesHashedData, signedMessage, signTypeConst));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { ISSUER_TAGS_TRANSLATIONS, SUBJECT_TAGS_TRANSLATIONS } from '../../constants';\nimport { TagTranslation } from '../../helpers/_parseCertInfo';\nimport { exportBase64 } from './exportBase64';\nimport { getAlgorithm } from './getAlgorithm';\nimport { getCadesProp } from './getCadesProp';\nimport { getDecodedExtendedKeyUsage, ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';\nimport { getExtendedKeyUsage } from './getExtendedKeyUsage';\nimport { getInfo } from './getInfo';\nimport { hasExtendedKeyUsage } from './hasExtendedKeyUsage';\nimport { isValid } from './isValid';\n\nexport type CadesCertificate = any;\n\nexport class Certificate {\n constructor(\n public _cadesCertificate: CadesCertificate,\n public name: string,\n public issuerName: string,\n public subjectName: string,\n public thumbprint: string,\n public validFrom: string,\n public validTo: string,\n ) {}\n\n public getOwnerInfo(): Promise {\n return getInfo.call(this, SUBJECT_TAGS_TRANSLATIONS, 'SubjectName');\n }\n\n public getIssuerInfo(): Promise {\n return getInfo.call(this, ISSUER_TAGS_TRANSLATIONS, 'IssuerName');\n }\n\n public getExtendedKeyUsage(): Promise {\n return getExtendedKeyUsage.call(this);\n }\n\n public getDecodedExtendedKeyUsage(): Promise {\n return getDecodedExtendedKeyUsage.call(this);\n }\n\n public getAlgorithm(): Promise {\n return getAlgorithm.call(this);\n }\n\n public getCadesProp(propName): Promise {\n return getCadesProp.call(this, propName);\n }\n\n public isValid(): Promise {\n return isValid.call(this);\n }\n\n public exportBase64(): Promise {\n return exportBase64.call(this);\n }\n\n public hasExtendedKeyUsage(oids): Promise {\n return hasExtendedKeyUsage.call(this, oids);\n }\n}\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Экспортирует сертификат в формате base64\n *\n * @returns сертификат в формате base64\n */\nexport const exportBase64 = _afterPluginsLoaded(function (): string {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function exportBase64(): string {\n let base64: string;\n\n try {\n base64 = __cadesAsyncToken__ + cadesCertificate.Export(0);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при экспорте сертификата');\n }\n\n return base64;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\ninterface AlgorithmInfo {\n algorithm: string;\n oid: string;\n}\n\n/**\n * Возвращает информацию об алгоритме сертификата\n *\n * @returns информацию об алгоритме и его OID'е\n */\nexport const getAlgorithm = _afterPluginsLoaded(function (): AlgorithmInfo {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getAlgorithm(): AlgorithmInfo {\n const algorithmInfo: AlgorithmInfo = {\n algorithm: null,\n oid: null,\n };\n let cadesPublicKey;\n\n try {\n cadesPublicKey = __cadesAsyncToken__ + cadesCertificate.PublicKey();\n cadesPublicKey = __cadesAsyncToken__ + cadesPublicKey.Algorithm;\n algorithmInfo.algorithm = __cadesAsyncToken__ + cadesPublicKey.FriendlyName;\n algorithmInfo.oid = __cadesAsyncToken__ + cadesPublicKey.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении алгоритма');\n }\n\n return algorithmInfo;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает указанное внутренее свойство у сертификата в формате Cades\n *\n * @param propName = наименование свойства\n * @returns значение запрошенного свойства\n */\nexport const getCadesProp = _afterPluginsLoaded(function (propName: string): any {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getCadesProp() {\n let propertyValue;\n\n try {\n propertyValue = __cadesAsyncToken__ + cadesCertificate[propName];\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при обращении к свойству сертификата');\n }\n\n return propertyValue;\n }),\n );\n});\n","import { OIDS_DICTIONARY } from '../../constants';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\nexport interface ExtendedKeysTranslations {\n [key: string]: string | null;\n}\n\n/**\n * Возвращает расшифрованные ОИД'ы сертификата\n *\n * @returns словарь расшифрованных ОИД'ов\n */\nexport const getDecodedExtendedKeyUsage = _afterPluginsLoaded(async function (): Promise {\n const certificateOids = await (this as Certificate).getExtendedKeyUsage();\n\n return certificateOids.reduce(\n (decodedOids, oidCode) => ({\n ...decodedOids,\n [oidCode]: OIDS_DICTIONARY[oidCode] || null,\n }),\n {},\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает ОИД'ы сертификата\n *\n * @returns список ОИД'ов\n */\nexport const getExtendedKeyUsage = _afterPluginsLoaded(function (): string[] {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getExtendedKeyUsage(): string[] {\n const OIDS: string[] = [];\n let count: any;\n\n try {\n count = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n count = __cadesAsyncToken__ + count.EKUs;\n count = __cadesAsyncToken__ + count.Count;\n\n if (count > 0) {\n while (count > 0) {\n let cadesExtendedKeyUsage;\n\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.EKUs;\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.Item(count);\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.OID;\n\n OIDS.push(cadesExtendedKeyUsage);\n\n count--;\n }\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || \"Ошибка при получении ОИД'ов\");\n }\n\n return OIDS;\n }),\n );\n});\n","import { TagsTranslations } from '../../constants/tags-translations';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { _parseCertInfo, TagTranslation } from '../../helpers/_parseCertInfo';\nimport { getCadesProp } from './getCadesProp';\n\n/**\n * Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам\n *\n * @param tags = словарь\n * @param entitiesPath = путь к разбираемой сущности\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const getInfo = _afterPluginsLoaded(async function (\n tags: TagsTranslations[],\n entitiesPath: string,\n): Promise {\n let entities: string;\n\n try {\n entities = await getCadesProp.call(this, entitiesPath);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при извлечении информации из сертификата');\n }\n\n return _parseCertInfo(tags, entities);\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет наличие ОИД'а (ОИД'ов) у сертификата\n *\n * @param oids - ОИД'ы для проверки\n * @returns флаг наличия ОИД'ов у сертификата\n */\nexport const hasExtendedKeyUsage = _afterPluginsLoaded(async function (oids: string | string[]): Promise {\n const certOids = await (this as Certificate).getExtendedKeyUsage();\n\n let result: boolean;\n\n if (Array.isArray(oids)) {\n result = oids.every((oidToCheck) => certOids.some((certOid) => certOid === oidToCheck));\n } else {\n result = certOids.some((certOid) => certOid === oids);\n }\n\n return result;\n});\n","export * from './certificate';\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет действительность сертификата\n *\n * @returns флаг валидности\n */\nexport const isValid = _afterPluginsLoaded(function (): boolean {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function isValid() {\n let isValid;\n\n try {\n isValid = __cadesAsyncToken__ + cadesCertificate.IsValid();\n isValid = __cadesAsyncToken__ + isValid.Result;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при проверке сертификата');\n }\n\n return Boolean(isValid);\n }),\n );\n});\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Создает присоединенную подпись сообщения по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param message - подписываемое сообщение\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const createAttachedSignature = _afterPluginsLoaded(\n async (\n thumbprint: string,\n unencryptedMessage: string | ArrayBuffer,\n signType: SignType = 'PKCS7',\n ): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createAttachedSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let messageBase64;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Создает отсоединенную подпись хеша по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\n\nexport const createDetachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, messageHash: string, signType: SignType = 'PKCS7'): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedData.SignHash(cadesHashedData, cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит\n * https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B8%D0%B1%D0%BE%D0%B3_(%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F)\n *\n * @param unencryptedMessage - сообщение для хеширования\n *\n * @returns хеш\n */\nexport const createHash = _afterPluginsLoaded(\n async (unencryptedMessage: string | ArrayBuffer): Promise => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function createHash(): string {\n const cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n let messageBase64;\n let hash;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesHashedData.Hash(messageBase64));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации хэширования');\n }\n\n try {\n hash = __cadesAsyncToken__ + cadesHashedData.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при создании хэша');\n }\n\n return hash;\n }),\n );\n },\n);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\n\n/**\n * Создает XML подпись для документа в формате XML\n *\n * @param thumbprint - отпечаток сертификата\n * @param unencryptedMessage - подписываемое сообщение в формате XML\n * @returns подпись\n */\nexport const createXMLSignature = _afterPluginsLoaded(\n async (thumbprint: string, unencryptedMessage: string): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createXMLSignature(): string {\n let cadesSigner;\n let cadesSignedXML;\n\n try {\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n cadesSignedXML = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.SignedXML');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n try {\n const signatureMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n const digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n void (__cadesAsyncToken__ + cadesSigner.propset_CheckCertificate(true));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_Content(unencryptedMessage));\n void (\n __cadesAsyncToken__ +\n cadesSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED)\n );\n void (__cadesAsyncToken__ + cadesSignedXML.propset_SignatureMethod(signatureMethod));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_DigestMethod(digestMethod));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedXML.Sign(cadesSigner);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getAllUserCertificates } from './getAllUserCertificates';\nimport { getAllContainerCertificates } from './getAllContainerCertificates';\n\nlet certificatesCache: Certificate[];\n/**\n * Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе, без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllCertificates = _afterPluginsLoaded(\n async (resetCache: boolean = false): Promise => {\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n let availableCertificates: Certificate[];\n\n try {\n availableCertificates = await getAllUserCertificates(resetCache);\n } catch (error) {\n console.error(error);\n\n availableCertificates = [];\n }\n\n try {\n const containerAllCertificates: Certificate[] = await getAllContainerCertificates(resetCache);\n\n if (!availableCertificates) {\n availableCertificates = containerAllCertificates;\n } else {\n let containerAllCertificatesCount = containerAllCertificates.length - 1;\n let foundAvailableCertificate;\n\n while (containerAllCertificatesCount) {\n foundAvailableCertificate = availableCertificates.find(\n (cert) => cert.thumbprint === containerAllCertificates[containerAllCertificatesCount].thumbprint,\n );\n\n if (!foundAvailableCertificate) {\n availableCertificates.push(containerAllCertificates[containerAllCertificatesCount]);\n }\n\n containerAllCertificatesCount--;\n }\n }\n } catch (error) {\n console.error(error);\n }\n\n if (!availableCertificates) {\n throw new Error('Нет доступных сертификатов');\n }\n\n certificatesCache = availableCertificates;\n\n return certificatesCache;\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllContainerCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getAllContainerCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { CadesCertificate, Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getAllUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getCertificates } from './getCertificates';\nimport { getAllCertificates } from './getAllCertificates';\n\n/**\n * Возвращает сертификат по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @param validOnly - проверять сертификаты по дате и наличию приватного ключа\n * @returns сертификат\n */\nexport const getCertificate = _afterPluginsLoaded(\n async (thumbprint: string, validOnly: boolean = true): Promise => {\n if (!thumbprint) {\n throw new Error('Отпечаток не указан');\n }\n\n let availableCertificates: Certificate[];\n\n if (validOnly) {\n availableCertificates = await getCertificates();\n } else {\n availableCertificates = await getAllCertificates();\n }\n\n const foundCertificate: Certificate = availableCertificates.find((cert) => cert.thumbprint === thumbprint);\n\n if (!foundCertificate) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\n }\n\n return foundCertificate;\n },\n);\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getUserCertificates } from './getUserCertificates';\nimport { getContainerCertificates } from './getContainerCertificates';\nimport { getAllUserCertificates } from './getAllUserCertificates';\nimport { getAllContainerCertificates } from './getAllContainerCertificates';\n\nlet certificatesCache: Certificate[];\n/**\n * Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getCertificates = _afterPluginsLoaded(\n async (resetCache: boolean = false): Promise => {\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n let availableCertificates: Certificate[];\n\n try {\n availableCertificates = await getUserCertificates(resetCache);\n } catch (error) {\n console.error(error);\n\n availableCertificates = [];\n }\n\n try {\n const containerCertificates: Certificate[] = await getContainerCertificates(resetCache);\n\n if (!availableCertificates) {\n availableCertificates = containerCertificates;\n } else {\n let containerCertificatesCount = containerCertificates.length - 1;\n let foundAvailableCertificate;\n\n while (containerCertificatesCount) {\n foundAvailableCertificate = availableCertificates.find(\n (cert) => cert.thumbprint === containerCertificates[containerCertificatesCount].thumbprint,\n );\n\n if (!foundAvailableCertificate) {\n availableCertificates.push(containerCertificates[containerCertificatesCount]);\n }\n\n containerCertificatesCount--;\n }\n }\n } catch (error) {\n console.error(error);\n }\n\n if (!availableCertificates) {\n throw new Error('Нет доступных сертификатов');\n }\n\n certificatesCache = availableCertificates;\n\n return certificatesCache;\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getContainerCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getContainerCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP\n */\nexport const getCspVersion = _afterPluginsLoaded((): string => {\n let cspVersion = null;\n\n return eval(\n _generateCadesFn(function getCspVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n cspVersion = __cadesAsyncToken__ + cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении версии системы');\n }\n\n return cspVersion;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о плагине\n */\nexport const getPluginVersion = _afterPluginsLoaded((): string => {\n let cadesVersion = null;\n\n return eval(\n _generateCadesFn(function getPluginVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n\n if (!cadesVersion) {\n cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n cadesVersion = __cadesAsyncToken__ + cadesVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о плагине');\n }\n\n return cadesVersion;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nexport interface SystemInfo {\n cadesVersion: string;\n cspVersion: string;\n}\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP и плагине\n */\nexport const getSystemInfo = _afterPluginsLoaded(\n (): SystemInfo => {\n const sysInfo = {\n cadesVersion: null,\n cspVersion: null,\n };\n\n return eval(\n _generateCadesFn(function getSystemInfo(): SystemInfo {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n sysInfo.cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n if (!sysInfo.cadesVersion) {\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + sysInfo.cadesVersion.toString();\n sysInfo.cspVersion = __cadesAsyncToken__ + sysInfo.cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о системе');\n }\n\n return sysInfo;\n }),\n );\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","export * from './getCertificate';\nexport * from './getUserCertificates';\nexport * from './getAllUserCertificates';\nexport * from './getContainerCertificates';\nexport * from './getAllContainerCertificates';\nexport * from './getCertificates';\nexport * from './getAllCertificates';\nexport * from './getSystemInfo';\nexport * from './isValidSystemSetup';\nexport * from './createXMLSignature';\nexport * from './createDetachedSignature';\nexport * from './addDetachedSignature';\nexport * from './createAttachedSignature';\nexport * from './addAttachedSignature';\nexport * from './createHash';\nexport * from './certificate';\nexport * from './getCspVersion';\nexport * from './getPluginVersion';\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { _isSupportedCadesVersion } from '../helpers/_isSupportedCadesVersion';\nimport { _isSupportedCSPVersion } from '../helpers/_isSupportedCSPVersion';\nimport { getSystemInfo, SystemInfo } from './getSystemInfo';\n\n/**\n * Проверяет корректность настроек ЭП на машине\n *\n * @returns флаг корректности настроек\n */\nexport const isValidSystemSetup = _afterPluginsLoaded(\n async (): Promise => {\n let systemInfo: SystemInfo;\n\n try {\n systemInfo = await getSystemInfo();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Настройки ЭП на данной машине не верны');\n }\n\n if (!_isSupportedCadesVersion(systemInfo.cadesVersion)) {\n throw new Error('Не поддерживаемая версия плагина');\n }\n\n if (!_isSupportedCSPVersion(systemInfo.cspVersion)) {\n throw new Error('Не поддерживаемая версия CSP');\n }\n\n return true;\n },\n);\n","export const CADESCOM_ATTRIBUTE_OTHER = -1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CADESCOM_AllowNoOutstandingRequest = 1;\nexport const CADESCOM_AllowNone = 0;\nexport const CADESCOM_AllowUntrustedCertificate = 2;\nexport const CADESCOM_AllowUntrustedRoot = 4;\nexport const CADESCOM_BASE64_TO_BINARY = 0x01;\nexport const CADESCOM_CADES_BES = 1;\nexport const CADESCOM_CADES_DEFAULT = 0;\nexport const CADESCOM_CADES_T = 5;\nexport const CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\nexport const CADESCOM_CONTAINER_STORE = 100;\nexport const CADESCOM_CURRENT_USER_STORE = 2;\nexport const CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\nexport const CADESCOM_DISPLAY_DATA_CONTENT = 1;\nexport const CADESCOM_DISPLAY_DATA_NONE = 0;\nexport const CADESCOM_ENCODE_ANY = -1;\nexport const CADESCOM_ENCODE_BASE64 = 0;\nexport const CADESCOM_ENCODE_BINARY = 1;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\nexport const CADESCOM_HASH_ALGORITHM_MD2 = 1;\nexport const CADESCOM_HASH_ALGORITHM_MD4 = 2;\nexport const CADESCOM_HASH_ALGORITHM_MD5 = 3;\nexport const CADESCOM_HASH_ALGORITHM_SHA1 = 0;\nexport const CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\nexport const CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\nexport const CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\nexport const CADESCOM_LOCAL_MACHINE_STORE = 1;\nexport const CADESCOM_PKCS7_TYPE = 65535;\nexport const CADESCOM_STRING_TO_UCS2LE = 0x00;\nexport const CADESCOM_SkipInstallToStore = 268435456;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\nexport const CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\nexport const CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\nexport const CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\nexport const CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\nexport const CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\nexport const CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\nexport const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\nexport const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\nexport const CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\nexport const CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\nexport const CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\nexport const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\nexport const CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\nexport const CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\nexport const CAPICOM_CURRENT_USER_STORE = 2;\nexport const CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\nexport const CAPICOM_EKU_CLIENT_AUTH = 2;\nexport const CAPICOM_EKU_OTHER = 0;\nexport const CAPICOM_EKU_SMARTCARD_LOGON = 5;\nexport const CAPICOM_LOCAL_MACHINE_STORE = 1;\nexport const CAPICOM_MEMORY_STORE = 0;\nexport const CAPICOM_MY_STORE = 'My';\nexport const CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\nexport const CAPICOM_OID_OTHER = 0;\nexport const CAPICOM_PROPID_ACCESS_STATE = 14;\nexport const CAPICOM_PROPID_ARCHIVED = 19;\nexport const CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;\nexport const CAPICOM_PROPID_AUTO_ENROLL = 21;\nexport const CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;\nexport const CAPICOM_PROPID_CTL_USAGE = 9;\nexport const CAPICOM_PROPID_DATE_STAMP = 27;\nexport const CAPICOM_PROPID_DESCRIPTION = 13;\nexport const CAPICOM_PROPID_EFS = 17;\nexport const CAPICOM_PROPID_ENHKEY_USAGE = 9;\nexport const CAPICOM_PROPID_ENROLLMENT = 26;\nexport const CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;\nexport const CAPICOM_PROPID_FIRST_RESERVED = 66;\nexport const CAPICOM_PROPID_FIRST_USER = 0x00008000;\nexport const CAPICOM_PROPID_FORTEZZA_DATA = 18;\nexport const CAPICOM_PROPID_FRIENDLY_NAME = 11;\nexport const CAPICOM_PROPID_HASH_PROP = 3;\nexport const CAPICOM_PROPID_IE30_RESERVED = 7;\nexport const CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;\nexport const CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;\nexport const CAPICOM_PROPID_KEY_CONTEXT = 5;\nexport const CAPICOM_PROPID_KEY_IDENTIFIER = 20;\nexport const CAPICOM_PROPID_KEY_PROV_HANDLE = 1;\nexport const CAPICOM_PROPID_KEY_PROV_INFO = 2;\nexport const CAPICOM_PROPID_KEY_SPEC = 6;\nexport const CAPICOM_PROPID_LAST_RESERVED = 0x00007fff;\nexport const CAPICOM_PROPID_LAST_USER = 0x0000ffff;\nexport const CAPICOM_PROPID_MD5_HASH = 4;\nexport const CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;\nexport const CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;\nexport const CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;\nexport const CAPICOM_PROPID_PVK_FILE = 12;\nexport const CAPICOM_PROPID_RENEWAL = 64;\nexport const CAPICOM_PROPID_SHA1_HASH = 3;\nexport const CAPICOM_PROPID_SIGNATURE_HASH = 15;\nexport const CAPICOM_PROPID_SMART_CARD_DATA = 16;\nexport const CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;\nexport const CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;\nexport const CAPICOM_PROPID_UNKNOWN = 0;\nexport const CAPICOM_SMART_CARD_USER_STORE = 4;\nexport const CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;\nexport const CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\nexport const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\nexport const CAPICOM_STORE_OPEN_READ_ONLY = 0;\nexport const CAPICOM_STORE_OPEN_READ_WRITE = 1;\nexport const CHECK_NONE = 0;\nexport const CHECK_OFFLINE_REVOCATION_STATUS = 16;\nexport const CHECK_ONLINE_REVOCATION_STATUS = 8;\nexport const CHECK_SIGNATURE_VALIDITY = 4;\nexport const CHECK_TIME_VALIDITY = 2;\nexport const CHECK_TRUSTED_ROOT = 1;\nexport const LOG_LEVEL_DEBUG = 4;\nexport const LOG_LEVEL_ERROR = 1;\nexport const LOG_LEVEL_INFO = 2;\nexport const TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;\nexport const TRUST_CTL_IS_NOT_TIME_VALID = 131072;\nexport const TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;\nexport const TRUST_IS_CYCLIC = 128;\nexport const TRUST_IS_NOT_SIGNATURE_VALID = 8;\nexport const TRUST_IS_NOT_TIME_NESTED = 2;\nexport const TRUST_IS_NOT_TIME_VALID = 1;\nexport const TRUST_IS_NOT_VALID_FOR_USAGE = 16;\nexport const TRUST_IS_PARTIAL_CHAIN = 65536;\nexport const TRUST_IS_REVOKED = 4;\nexport const TRUST_IS_UNTRUSTED_ROOT = 32;\nexport const TRUST_REVOCATION_STATUS_UNKNOWN = 64;\nexport const XmlDsigGost3410Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\nexport const XmlDsigGost3410UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411';\nexport const XmlDsigGost3411Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\nexport const XmlDsigGost3411UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr3411';\n","export * from './cades-constants';\nexport * from './issuer-tags-translations';\nexport * from './oids-dictionary';\nexport * from './subject-tags-translations';\n","import { TagsTranslations } from './tags-translations';\n\nexport const ISSUER_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UN', 'UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN', 'commonName'], translation: 'Удостоверяющий центр' },\n { possibleNames: ['C', 'countryName'], translation: 'Страна' },\n { possibleNames: ['S', 'ST', 'stateOrProvinceName'], translation: 'Регион' },\n { possibleNames: ['STREET', 'streetAddress'], translation: 'Адрес' },\n { possibleNames: ['O', 'organizationName'], translation: 'Компания' },\n { possibleNames: ['OU', 'organizationalUnitName'], translation: 'Тип' },\n { possibleNames: ['T', 'TITLE'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'ИННФЛ', 'ИНН ФЛ', 'INN', 'ИНН физического лица'], translation: 'ИНН' },\n { possibleNames: ['ИННЮЛ', 'ИНН ЮЛ', 'INN LE', 'INNLE', 'ИНН организации'], translation: 'ИНН организации' },\n { possibleNames: ['E', 'email', 'emailAddress', 'pkcs9email'], translation: 'Email' },\n { possibleNames: ['L', 'localityName'], translation: 'Город' },\n];\n","export const OIDS_DICTIONARY = {\n '1.2.643.2.2.34.6': 'Пользователь Центра Регистрации',\n '1.2.643.2.39.1.1': 'Использование в программных продуктах системы \"1С:Предприятие 8\"',\n '1.2.643.3.131.1.1': 'ИНН',\n '1.2.643.100.4': 'ИНН организации',\n '1.2.643.100.1': 'ОГРН',\n '1.2.643.100.5': 'ОГРНИП',\n '1.2.643.100.3': 'СНИЛС',\n '1.2.643.3.141.1.1': 'РНС ФСС',\n '1.2.643.3.141.1.2': 'КП ФСС',\n '1.2.643.3.2.100.65.13.11': 'Использование в системе АИС \"Госзакупки\" Сахалинской области.',\n '1.2.643.3.8.100.1': 'Сертификат типа \"ekey-ГОСТ\"',\n '1.2.643.3.8.100.1.1': 'Общее использование в системах ИОК без права заверения финансовых документов',\n '1.2.643.3.8.100.1.10':\n 'Для участия в электронных торгах и подписания государственного контракта в информационных системах Тендерного комитета города Москвы уполномоченными лицами участников размещения государственного заказа города Москвы',\n '1.2.643.3.8.100.1.11':\n 'Подписание электронных документов в автоматизированной информационной системе размещения государственного и муниципального заказа Саратовской области',\n '1.2.643.3.8.100.1.12': 'Использование в системе государственного заказа Иркутской области',\n '1.2.643.3.8.100.1.13':\n 'Использование в электронной торговой площадке агентства государственного заказа Красноярского края',\n '1.2.643.3.8.100.1.14': 'Использование в электронной торговой площадке \"Тендер\"',\n '1.2.643.3.8.100.1.2': 'Передача отчетности по ТКС',\n '1.2.643.3.8.100.1.3': 'Оформление взаимных обязательств, соглашений, договоров, актов и т.п.',\n '1.2.643.3.8.100.1.4': 'Внутрикорпоративный документооборот',\n '1.2.643.3.8.100.1.5': 'Использование в системах электронной торговли',\n '1.2.643.3.8.100.1.6': 'Использование в торгово-закупочной системе \"ЭЛЕКТРА\"',\n '1.2.643.3.8.100.1.7': 'Использование в системе Портал государственных закупок Ставропольского края.',\n '1.2.643.3.8.100.1.8': 'Использование в Единой системе электронной торговли B2B-Center и B2G.',\n '1.2.643.3.8.100.1.9':\n 'Для участия в электронных торгах и подписания государственного контракта в электронной площадке ОАО «ЕЭТП» уполномоченными лицами участников размещения государственного или муниципального заказа',\n '1.2.643.5.1.24.2.1.3':\n 'Формирование документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.1.3.1':\n 'Формирование кадастровым инженером документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.2.2': 'Формирование документов как результата оказания услуги со стороны органов регистрации прав',\n '1.2.643.5.1.24.2.2.3':\n 'Формирование документов для получения государственных услуг в сфере государственной регистрации прав на недвижимое имущество и сделок с ним со стороны заявителя',\n '1.2.643.6.2.1.7.1':\n 'Использование единоличным исполнительным органом юридического лица или уполномоченными представителями юридического лица в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских и иных прав и обязанностей в сфере негосударственного пенсионного обеспечения, негосударственного пенсионного страхования, в сфере деятельности паевых инвестиционных фондов, акционерных инвестиционных фондов, профессиональных участников рынка ценных бумаг, а также связанной с обслуживанием указанной деятельности услуг кредитных и иных организаций',\n '1.2.643.6.2.1.7.2':\n 'Использование физическим лицом в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских прав и обязанностей в отношении инвестиционных паев паевых инвестиционных фондов, в том числе отношения, связанные с учетом и/или фиксацией прав на инвестиционные паи паевых инвестиционных фондов',\n '1.2.643.6.3':\n 'Использование в электронных торговых системах и в программном обеспечении, связанным с обменом электронных сообщений',\n '1.2.643.6.3.1.1': 'Использование на электронных площадок отобранных для проведения аукционах в электронной форме',\n '1.2.643.6.3.1.2.1': 'Тип участника - Юридическое лицо',\n '1.2.643.6.3.1.2.2': 'Тип участника - Физическое лицо',\n '1.2.643.6.3.1.2.3': 'Тип участника - Индивидуальный предприниматель',\n '1.2.643.6.3.1.3.1': 'Участник размещения заказа',\n '1.2.643.6.3.1.4.1': 'Администратор организации',\n '1.2.643.6.3.1.4.2': 'Уполномоченный специалист',\n '1.2.643.6.3.1.4.3': 'Специалист с правом подписи контракта',\n '1.2.840.113549.1.9.2': 'Неструктурированное имя',\n '1.3.6.1.4.1.24138.1.1.8.1': 'Обеспечение юридической значимости в Системе \"Электронная Торговая Площадка\"',\n '1.3.6.1.4.1.29919.21': 'Использование в системе Портал государственных закупок Ростовской области \"Рефери\".',\n '1.3.6.1.5.5.7.3.2': 'Проверка подлинности клиента',\n '1.3.6.1.5.5.7.3.4': 'Защищенная электронная почта',\n '1.3.643.3.8.100.15': 'Использование в ЭТП \"uTender\"',\n};\n","import { TagsTranslations } from './tags-translations';\n\nexport const SUBJECT_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UN', 'UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN', 'commonName'], translation: 'Владелец' },\n { possibleNames: ['SN', 'surname'], translation: 'Фамилия' },\n { possibleNames: ['G', 'givenName', 'gn'], translation: 'Имя Отчество' },\n { possibleNames: ['C', 'countryName'], translation: 'Страна' },\n { possibleNames: ['S', 'ST', 'stateOrProvinceName'], translation: 'Регион' },\n { possibleNames: ['STREET', 'streetAddress'], translation: 'Адрес' },\n { possibleNames: ['O', 'organizationName'], translation: 'Компания' },\n { possibleNames: ['OU', 'organizationalUnitName'], translation: 'Отдел/подразделение' },\n { possibleNames: ['T', 'TITLE'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'ИННФЛ', 'ИНН ФЛ', 'INN', 'ИНН физического лица'], translation: 'ИНН' },\n { possibleNames: ['ИННЮЛ', 'ИНН ЮЛ', 'INN LE', 'INNLE', 'ИНН организации'], translation: 'ИНН организации' },\n { possibleNames: ['E', 'email', 'emailAddress', 'pkcs9email'], translation: 'Email' },\n { possibleNames: ['L', 'localityName'], translation: 'Город' },\n];\n","export * from './api';\nexport * from './helpers';\n","import { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\n\ntype Unpromisify = T extends Promise ? R : T;\n\nlet isSetLogLevel = false;\nlet isPluginLoaded = false;\n\nexport const _afterPluginsLoaded = any>(\n fn: T,\n): ((...args: Parameters) => Promise>>) => {\n const canPromise = Boolean(window.Promise);\n\n return async function (...args: Parameters): Promise>> {\n if (!isPluginLoaded) {\n try {\n require('../vendor/cadesplugin_api');\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при подключении модуля для работы с Cades plugin',\n );\n }\n\n isPluginLoaded = true;\n }\n\n const { cadesplugin } = window;\n\n if (!canPromise) {\n throw new Error('Необходим полифилл для Promise');\n }\n\n if (!cadesplugin) {\n throw new Error('Не подключен модуль для работы с Cades plugin');\n }\n\n if (!isSetLogLevel) {\n cadesplugin.set_log_level(cadesplugin.LOG_LEVEL_ERROR);\n\n isSetLogLevel = true;\n }\n\n try {\n await cadesplugin;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации модуля для работы с Cades plugin',\n );\n }\n\n return await fn.apply(this, args);\n };\n};\n","export const _extractCommonName = (subjectName: string): string | undefined =>\n subjectName.match(/CN=\"?(.+?)\"?(?:,|$)/)?.[1]?.replace(/\"{2}/g, '\"');\n","export const _extractMeaningfulErrorMessage = (error: Error): string | null => {\n let errorContainer = window.cadesplugin?.getLastError && window.cadesplugin.getLastError(error);\n\n if (!errorContainer?.message) {\n if (!error.message) {\n return null;\n }\n\n errorContainer = error;\n }\n\n const containsRussianLetters = /[а-яА-Я]/.test(errorContainer.message);\n\n if (!containsRussianLetters) {\n return null;\n }\n\n const searchResult = errorContainer.message.match(/^(.*?)(?:(?:\\.?\\s?\\(?(0x[0-9a-zA-Z]{1,8})\\)?)|(?:\\.?$))/);\n\n return searchResult ? searchResult[1] + (searchResult[2] ? ' (Код ошибки: ' + searchResult[2] + ')' : '') : null;\n};\n","// синтетические переменные, которые подменяются в рантайме\nexport const __cadesAsyncToken__ = {};\nexport const __createCadesPluginObject__ = (...args): any => ({});\n\nfunction getGeneratorConstructor(): GeneratorFunction {\n return new Function('', 'return Object.getPrototypeOf(function*(){}).constructor')();\n}\n\nexport const _generateCadesFn = (callback: Function): string => {\n const { cadesplugin } = window;\n const cadesGeneratorsAPI = Boolean(cadesplugin.CreateObjectAsync);\n const callbackName = callback.name || 'dynamicFn';\n const callbackLiteral = String(callback);\n const callbackArguments = callbackLiteral.match(/^function[\\s\\w]*?\\((.*?)\\)/)?.[1] || '';\n const callbackBody = callbackLiteral.replace(/^.*?{([\\s\\S]*?)}$/, '$1');\n let crossEnvCallbackLiteral = String(\n new (cadesGeneratorsAPI ? getGeneratorConstructor() : Function)(callbackArguments, callbackBody),\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__createCadesPluginObject__(\\([\\s\\S]*?\\))/gm,\n `cadesplugin.CreateObject${cadesGeneratorsAPI ? 'Async' : ''}$1`,\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__cadesAsyncToken__\\s*?\\+\\s*?\\b/gm,\n cadesGeneratorsAPI ? 'yield ' : '',\n );\n\n if (!cadesGeneratorsAPI) {\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/propset_(.*?)\\((.*?)\\)/gm, '$1 = $2');\n }\n\n return [\n cadesGeneratorsAPI ? `cadesplugin.async_spawn(${crossEnvCallbackLiteral});` : `(${crossEnvCallbackLiteral})();`,\n `//# sourceURL=crypto-pro_${callbackName}.js`,\n ].join('');\n};\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _getCadesUserCert } from './_getCadesUserCert';\nimport { _getCadesContainerCert } from './_getCadesContainerCert';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesCert = _afterPluginsLoaded(\n async (thumbprint: string): Promise => {\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificate = await _getCadesUserCert(thumbprint);\n } catch (error) {\n console.log(error);\n\n cadesCertificate = await _getCadesContainerCert(thumbprint);\n }\n\n return cadesCertificate;\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку из хранилища закрытого ключа\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesContainerCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища закрытого ключа');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) ||\n 'Ошибка получения списка сертификатов из хранилища закрытого ключа',\n );\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов в хранилище закрытого ключа');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден в хранилище закрытого ключа`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата из хранилища закрытого ключа',\n );\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку из хранилища пользователя\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesUserCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища пользователя');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов из хранилища пользователя',\n );\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов в хранилище пользователя');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден в хранилище пользователя`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата из хранилища пользователя',\n );\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","/**\n * Возвращает объект даты, совместимый с Cades plugin'ом, зависящий от браузера.\n *\n * В IE необходимо использовать специфичный формат \"VT_DATE\"\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Microsoft_Extensions/Date.getVarDate\n */\nexport const _getDateObj = (dateObj): Date => (dateObj.getVarDate ? dateObj.getVarDate() : dateObj);\n","const oldestSupportedCSPVersion = 4.0;\n\nexport const _isSupportedCSPVersion = (version: string): boolean => {\n version = version.match(/\\d+?\\b(?:\\.\\d+)?/)?.[0];\n\n return Number(version) >= oldestSupportedCSPVersion;\n};\n","export const _isSupportedCadesVersion = (version: string): boolean => {\n const match = version.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n\n if (!match) {\n return false;\n }\n\n const [, major, minor, patch] = match;\n\n if (Number(major) < 2) {\n return false;\n }\n\n if (Number(major) === 2 && Number(patch) < 12438) {\n return false;\n }\n\n return true;\n};\n","import { OIDS_DICTIONARY } from '../constants';\nimport { TagsTranslations } from '../constants/tags-translations';\n\nexport interface TagTranslation {\n description: string;\n title: string;\n isTranslated: boolean;\n}\n\n/**\n * Парсит информацию из строки с информацией о сертификате\n *\n * @param tagsTranslations - словарь с расшифровками тэгов\n * @param rawInfo - данные для парсинга\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const _parseCertInfo = (tagsTranslations: TagsTranslations[], rawInfo: string): TagTranslation[] => {\n const extractedEntities: string[] = rawInfo.match(/([а-яА-Яa-zA-Z0-9\\s.]+)=(?:(\"[^\"]+?\")|(.+?))(?:,|$)/g);\n\n if (extractedEntities) {\n return extractedEntities.map((group) => {\n const segmentsMatch = group.trim().match(/^([а-яА-Яa-zA-Z0-9\\s.]+)=(.+?),?$/);\n let title = segmentsMatch?.[1];\n // Вырезаем лишние кавычки\n const description = segmentsMatch?.[2]?.replace(/^\"(.*)\"/, '$1')?.replace(/\"{2}/g, '\"');\n const oidIdentifierMatch = title?.match(/^OID\\.(.*)/);\n const oidIdentifier = oidIdentifierMatch?.[1];\n let isTranslated = false;\n\n // Если нашли в тайтле ОИД, пытаемся его расшифровать\n if (oidIdentifier) {\n const oidTranslation = OIDS_DICTIONARY[oidIdentifier];\n\n if (oidTranslation) {\n title = oidTranslation;\n isTranslated = true;\n }\n }\n\n const tagTranslation = tagsTranslations.find((tag) => tag.possibleNames.find((name) => name === title))\n ?.translation;\n\n if (tagTranslation) {\n title = tagTranslation;\n isTranslated = true;\n }\n\n return { description, title, isTranslated };\n });\n }\n};\n","export declare type SignType = 'CAdES BES' | 'CAdES-X Long Type 1' | 'CAdES T' | 'PKCS7';\n\nexport const getSignType = (cadesplugin: any, signType: SignType): any => {\n switch (signType) {\n case 'CAdES BES': {\n return cadesplugin.CADESCOM_CADES_BES;\n }\n case 'CAdES-X Long Type 1': {\n return cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1;\n }\n case 'CAdES T': {\n return cadesplugin.CADESCOM_CADES_T;\n }\n case 'PKCS7': {\n return cadesplugin.CADESCOM_PKCS7_TYPE;\n }\n }\n};\n",";(function () {\r\n //already loaded\r\n if(window.cadesplugin)\r\n return;\r\n\r\n var pluginObject;\r\n var plugin_resolved = 0;\r\n var plugin_reject;\r\n var plugin_resolve;\r\n var isOpera = 0;\r\n var isFireFox = 0;\r\n var isSafari = 0;\r\n var isYandex = 0;\r\n var canPromise = !!window.Promise;\r\n var cadesplugin_loaded_event_recieved = false;\r\n var isFireFoxExtensionLoaded = false;\r\n var cadesplugin;\r\n\r\n if(canPromise)\r\n {\r\n cadesplugin = new Promise(function(resolve, reject)\r\n {\r\n plugin_resolve = resolve;\r\n plugin_reject = reject;\r\n });\r\n } else\r\n {\r\n cadesplugin = {};\r\n }\r\n\r\n function check_browser() {\r\n var ua= navigator.userAgent, tem, M= ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n if(/trident/i.test(M[1])){\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name:'IE', version:(tem[1] || '')};\r\n }\r\n if(M[1] === 'Chrome'){\r\n tem = ua.match(/\\b(OPR|Edg|YaBrowser)\\/(\\d+)/);\r\n if (tem != null)\r\n return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\r\n }\r\n M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null)\r\n M.splice(1, 1, tem[1]);\r\n return {name:M[0],version:M[1]};\r\n }\r\n var browserSpecs = check_browser();\r\n\r\n function cpcsp_console_log(level, msg){\r\n //IE9 не может писать в консоль если не открыта вкладка developer tools\r\n if(typeof(console) === 'undefined')\r\n return;\r\n if (level <= cadesplugin.current_log_level ){\r\n if (level === cadesplugin.LOG_LEVEL_DEBUG)\r\n console.log(\"DEBUG: %s\", msg);\r\n if (level === cadesplugin.LOG_LEVEL_INFO)\r\n console.info(\"INFO: %s\", msg);\r\n if (level === cadesplugin.LOG_LEVEL_ERROR)\r\n console.error(\"ERROR: %s\", msg);\r\n return;\r\n }\r\n }\r\n\r\n function set_log_level(level){\r\n if (!((level === cadesplugin.LOG_LEVEL_DEBUG) ||\r\n (level === cadesplugin.LOG_LEVEL_INFO) ||\r\n (level === cadesplugin.LOG_LEVEL_ERROR))){\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"cadesplugin_api.js: Incorrect log_level: \" + level);\r\n return;\r\n }\r\n cadesplugin.current_log_level = level;\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = DEBUG\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = INFO\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = ERROR\");\r\n if(isNativeMessageSupported())\r\n {\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\r\n window.postMessage(\"set_log_level=debug\", \"*\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\r\n window.postMessage(\"set_log_level=info\", \"*\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\r\n window.postMessage(\"set_log_level=error\", \"*\");\r\n }\r\n }\r\n\r\n function set_constantValues()\r\n {\r\n cadesplugin.CAPICOM_MEMORY_STORE = 0;\r\n cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_MEMORY_STORE = 0;\r\n cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_CONTAINER_STORE = 100;\r\n\r\n cadesplugin.CAPICOM_MY_STORE = \"My\";\r\n\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\r\n\r\n cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010;\r\n cadesplugin.CADESCOM_XADES_BES = 0x00000020;\r\n cadesplugin.CADESCOM_XADES_T = 0x00000050;\r\n cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0;\r\n cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000;\r\n\r\n cadesplugin.XmlDsigGost3410UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr3411\";\r\n cadesplugin.XmlDsigGost3410Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411\";\r\n\r\n cadesplugin.XmlDsigGost3411Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3410Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3411Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512\";\r\n cadesplugin.XmlDsigGost3410Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512\";\r\n\r\n cadesplugin.CADESCOM_CADES_DEFAULT = 0;\r\n cadesplugin.CADESCOM_CADES_BES = 1;\r\n cadesplugin.CADESCOM_CADES_T = 0x5;\r\n cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\r\n cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff;\r\n\r\n cadesplugin.CADESCOM_ENCODE_BASE64 = 0;\r\n cadesplugin.CADESCOM_ENCODE_BINARY = 1;\r\n cadesplugin.CADESCOM_ENCODE_ANY = -1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\r\n\r\n cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\r\n cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\r\n\r\n cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\r\n\r\n cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9;\r\n\r\n cadesplugin.CAPICOM_OID_OTHER = 0;\r\n cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\r\n\r\n cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2;\r\n cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5;\r\n cadesplugin.CAPICOM_EKU_OTHER = 0;\r\n\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100;\r\n cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1;\r\n\r\n cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0;\r\n cadesplugin.CADESCOM_BASE64_TO_BINARY = 1;\r\n\r\n cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\r\n\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\r\n\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\r\n\r\n cadesplugin.LOG_LEVEL_DEBUG = 4;\r\n cadesplugin.LOG_LEVEL_INFO = 2;\r\n cadesplugin.LOG_LEVEL_ERROR = 1;\r\n\r\n cadesplugin.CADESCOM_AllowNone = 0;\r\n cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1;\r\n cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2;\r\n cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4;\r\n cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000;\r\n cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000;\r\n cadesplugin.CADESCOM_UseContainerStore = 0x40000000;\r\n\r\n cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04;\r\n cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07;\r\n\r\n cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00;\r\n cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01;\r\n cadesplugin.ENABLE_CARRIER_CREATE = 0x02;\r\n cadesplugin.ENABLE_ANY_OPERATION = 0x03;\r\n\r\n cadesplugin.CADESCOM_PRODUCT_CSP = 0;\r\n cadesplugin.CADESCOM_PRODUCT_OCSP = 1;\r\n cadesplugin.CADESCOM_PRODUCT_TSP = 2;\r\n\r\n cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001;\r\n cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002;\r\n cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004;\r\n cadesplugin.MEDIA_TYPE_SCARD = 0x00000008;\r\n\r\n cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0;\r\n cadesplugin.AT_KEYEXCHANGE = 1;\r\n cadesplugin.AT_SIGNATURE = 2;\r\n\r\n cadesplugin.CARRIER_FLAG_REMOVABLE = 1;\r\n cadesplugin.CARRIER_FLAG_UNIQUE = 2;\r\n cadesplugin.CARRIER_FLAG_PROTECTED = 4;\r\n cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER = 8;\r\n cadesplugin.CARRIER_FLAG_SECURE_MESSAGING = 16;\r\n cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE = 64;\r\n cadesplugin.CARRIER_FLAG_VIRTUAL = 128;\r\n }\r\n\r\n function async_spawn(generatorFunc) {\r\n function continuer(verb, arg) {\r\n var result;\r\n try {\r\n result = generator[verb](arg);\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n if (result.done) {\r\n return result.value;\r\n } else {\r\n return Promise.resolve(result.value).then(onFulfilled, onRejected);\r\n }\r\n }\r\n var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));\r\n var onFulfilled = continuer.bind(continuer, \"next\");\r\n var onRejected = continuer.bind(continuer, \"throw\");\r\n return onFulfilled();\r\n }\r\n\r\n function isIE() {\r\n // var retVal = ((\"Microsoft Internet Explorer\" == navigator.appName) || // IE < 11\r\n // navigator.userAgent.match(/Trident\\/./i)); // IE 11\r\n return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE');\r\n }\r\n\r\n function isIOS() {\r\n return (navigator.userAgent.match(/ipod/i) ||\r\n navigator.userAgent.match(/ipad/i) ||\r\n navigator.userAgent.match(/iphone/i));\r\n }\r\n\r\n function isNativeMessageSupported()\r\n {\r\n // В IE работаем через NPAPI\r\n if(isIE())\r\n return false;\r\n // В Edge работаем через NativeMessage\r\n if (browserSpecs.name === 'Edg') {\r\n return true;\r\n }\r\n if (browserSpecs.name === 'YaBrowser') {\r\n isYandex = true;\r\n return true;\r\n }\r\n // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии\r\n if(browserSpecs.name === 'Opera') {\r\n isOpera = true;\r\n if(browserSpecs.version >= 33){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n if(browserSpecs.name === 'Firefox') {\r\n isFireFox = true;\r\n if(browserSpecs.version >= 52){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n if(browserSpecs.name === 'Chrome') {\r\n if(browserSpecs.version >= 42){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n //В Сафари начиная с 12 версии нет NPAPI\r\n if(browserSpecs.name === 'Safari') {\r\n isSafari = true;\r\n if(browserSpecs.version >= 12) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // Функция активации объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObject(name) {\r\n if (isIOS()) {\r\n // На iOS для создания объектов используется функция\r\n // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js\r\n return call_ru_cryptopro_npcades_10_native_bridge(\"CreateObject\", [name]);\r\n }\r\n if (isIE()) {\r\n // В Internet Explorer создаются COM-объекты\r\n if (name.match(/X509Enrollment/i)) {\r\n try {\r\n // Объекты CertEnroll пробуем создавать через нашу фабрику,\r\n // если не получилось то через CX509EnrollmentWebClassFactory\r\n var objCertEnrollClassFactory = document.getElementById(\"webClassFactory\");\r\n return objCertEnrollClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n try {\r\n var objWebClassFactory = document.getElementById(\"certEnrollClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (err) {\r\n throw (\"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS\");\r\n }\r\n }\r\n }\r\n // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory\r\n try {\r\n var objWebClassFactory = document.getElementById(\"webClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n // Для версий плагина ниже 2.0.12538\r\n return new ActiveXObject(name);\r\n }\r\n }\r\n // создаются объекты NPAPI\r\n return pluginObject.CreateObject(name);\r\n }\r\n\r\n function decimalToHexString(number) {\r\n if (number < 0) {\r\n number = 0xFFFFFFFF + number + 1;\r\n }\r\n\r\n return number.toString(16).toUpperCase();\r\n }\r\n\r\n function GetMessageFromException(e) {\r\n var err = e.message;\r\n if (!err) {\r\n err = e;\r\n } else if (e.number) {\r\n err += \" (0x\" + decimalToHexString(e.number) + \")\";\r\n }\r\n return err;\r\n }\r\n\r\n function getLastError(exception) {\r\n if(isNativeMessageSupported() || isIE() || isIOS() ) {\r\n return GetMessageFromException(exception);\r\n }\r\n\r\n try {\r\n return pluginObject.getLastError();\r\n } catch(e) {\r\n return GetMessageFromException(exception);\r\n }\r\n }\r\n\r\n // Функция для удаления созданных объектов\r\n function ReleasePluginObjects() {\r\n return cpcsp_chrome_nmcades.ReleasePluginObjects();\r\n }\r\n\r\n // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObjectAsync(name) {\r\n return pluginObject.CreateObjectAsync(name);\r\n }\r\n\r\n //Функции для IOS\r\n var ru_cryptopro_npcades_10_native_bridge = {\r\n callbacksCount : 1,\r\n callbacks : {},\r\n\r\n // Automatically called by native layer when a result is available\r\n resultForCallback : function resultForCallback(callbackId, resultArray) {\r\n var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId];\r\n if (!callback) return;\r\n callback.apply(null,resultArray);\r\n },\r\n\r\n // Use this in javascript to request native objective-c code\r\n // functionName : string (I think the name is explicit :p)\r\n // args : array of arguments\r\n // callback : function with n-arguments that is going to be called when the native code returned\r\n call : function call(functionName, args, callback) {\r\n var hasCallback = callback && typeof callback === \"function\";\r\n var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0;\r\n\r\n if (hasCallback)\r\n ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback;\r\n\r\n var iframe = document.createElement(\"IFRAME\");\r\n var arrObjs = new Array(\"_CPNP_handle\");\r\n try{\r\n iframe.setAttribute(\"src\", \"cpnp-js-call:\" + functionName + \":\" + callbackId+ \":\" + encodeURIComponent(JSON.stringify(args, arrObjs)));\r\n } catch(e){\r\n alert(e);\r\n }\r\n document.documentElement.appendChild(iframe);\r\n iframe.parentNode.removeChild(iframe);\r\n iframe = null;\r\n }\r\n };\r\n\r\n function call_ru_cryptopro_npcades_10_native_bridge(functionName, array){\r\n var tmpobj;\r\n var ex;\r\n ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function(e, response){\r\n ex = e;\r\n var str='tmpobj='+response;\r\n eval(str);\r\n if (typeof (tmpobj) === \"string\"){\r\n tmpobj = tmpobj.replace(/\\\\\\n/gm, \"\\n\");\r\n tmpobj = tmpobj.replace(/\\\\\\r/gm, \"\\r\");\r\n }\r\n });\r\n if(ex)\r\n throw ex;\r\n return tmpobj;\r\n }\r\n\r\n function show_firefox_missing_extension_dialog()\r\n {\r\n if (!window.cadesplugin_skip_extension_install)\r\n {\r\n var ovr = document.createElement('div');\r\n ovr.id = \"cadesplugin_ovr\";\r\n ovr.style = \"visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)\";\r\n ovr.innerHTML = \"
\" +\r\n \"\" +\r\n \"

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.\" +\r\n \"

Скачать расширение

\" +\r\n \"
\";\r\n document.getElementsByTagName(\"Body\")[0].appendChild(ovr);\r\n document.getElementById(\"cadesplugin_close_install\").addEventListener('click',function()\r\n {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n\r\n ovr.addEventListener('click',function()\r\n {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n ovr.style.visibility=\"visible\";\r\n }\r\n }\r\n function firefox_or_safari_nmcades_onload() {\r\n if (window.cadesplugin_extension_loaded_callback)\r\n window.cadesplugin_extension_loaded_callback();\r\n isFireFoxExtensionLoaded = true;\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n\r\n function nmcades_api_onload() {\r\n if (!isIE() && !isFireFox && !isSafari) {\r\n if (window.cadesplugin_extension_loaded_callback)\r\n window.cadesplugin_extension_loaded_callback();\r\n }\r\n window.postMessage(\"cadesplugin_echo_request\", \"*\");\r\n window.addEventListener(\"message\", function (event){\r\n if (typeof(event.data) !== \"string\" || !event.data.match(\"cadesplugin_loaded\"))\r\n return;\r\n if (cadesplugin_loaded_event_recieved)\r\n return;\r\n if(isFireFox || isSafari)\r\n {\r\n // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js\r\n var url = event.data.substring(event.data.indexOf(\"url:\") + 4);\r\n if (!url.match(\"^moz-extension://[a-zA-Z0-9-]+/nmcades_plugin_api.js$\")\r\n && !url.match(\"^safari-extension://[a-zA-Z0-9-]+/[a-zA-Z0-9]+/nmcades_plugin_api.js$\"))\r\n {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"Bad url \\\"\" + url + \"\\\" for load CryptoPro Extension for CAdES Browser plug-in\");\r\n plugin_loaded_error();\r\n return;\r\n }\r\n var fileref = document.createElement('script');\r\n fileref.setAttribute(\"type\", \"text/javascript\");\r\n fileref.setAttribute(\"src\", url);\r\n fileref.onerror = plugin_loaded_error;\r\n fileref.onload = firefox_or_safari_nmcades_onload;\r\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\r\n }else {\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n cadesplugin_loaded_event_recieved = true;\r\n }, false);\r\n }\r\n\r\n //Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari\r\n function load_extension()\r\n {\r\n if(isFireFox || isSafari){\r\n // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера.\r\n nmcades_api_onload();\r\n } else {\r\n // в асинхронном варианте для Yandex и Opera подключаем расширение из Opera store.\r\n if (isOpera || isYandex) {\r\n var fileref = document.createElement('script');\r\n fileref.setAttribute(\"type\", \"text/javascript\");\r\n fileref.setAttribute(\"src\", \"chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js\");\r\n fileref.onerror = plugin_loaded_error;\r\n fileref.onload = nmcades_api_onload;\r\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\r\n } else {\r\n // для Chrome, Chromium, Chromium Edge расширение из Chrome store\r\n var fileref = document.createElement('script');\r\n fileref.setAttribute(\"type\", \"text/javascript\");\r\n fileref.setAttribute(\"src\", \"chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js\");\r\n fileref.onerror = plugin_loaded_error;\r\n fileref.onload = nmcades_api_onload;\r\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\r\n }\r\n }\r\n }\r\n\r\n //Загружаем плагин для NPAPI\r\n function load_npapi_plugin()\r\n {\r\n var elem = document.createElement('object');\r\n elem.setAttribute(\"id\", \"cadesplugin_object\");\r\n elem.setAttribute(\"type\", \"application/x-cades\");\r\n elem.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem);\r\n pluginObject = document.getElementById(\"cadesplugin_object\");\r\n if(isIE())\r\n {\r\n var elem1 = document.createElement('object');\r\n elem1.setAttribute(\"id\", \"certEnrollClassFactory\");\r\n elem1.setAttribute(\"classid\", \"clsid:884e2049-217d-11da-b2a4-000e7bbb2b09\");\r\n elem1.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem1);\r\n var elem2 = document.createElement('object');\r\n elem2.setAttribute(\"id\", \"webClassFactory\");\r\n elem2.setAttribute(\"classid\", \"clsid:B04C8637-10BD-484E-B0DA-B8A039F60024\");\r\n elem2.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem2);\r\n }\r\n }\r\n\r\n //Отправляем событие что все ок.\r\n function plugin_loaded()\r\n {\r\n plugin_resolved = 1;\r\n if(canPromise)\r\n {\r\n plugin_resolve();\r\n }else {\r\n window.postMessage(\"cadesplugin_loaded\", \"*\");\r\n }\r\n }\r\n\r\n //Отправляем событие что сломались.\r\n function plugin_loaded_error(msg)\r\n {\r\n if(typeof(msg) === 'undefined' || typeof(msg) === 'object')\r\n msg = \"Плагин недоступен\";\r\n plugin_resolved = 1;\r\n if(canPromise)\r\n {\r\n plugin_reject(msg);\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n }\r\n\r\n //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку\r\n function check_load_timeout()\r\n {\r\n if(plugin_resolved === 1)\r\n return;\r\n if(isFireFox)\r\n {\r\n if (!isFireFoxExtensionLoaded)\r\n show_firefox_missing_extension_dialog();\r\n }\r\n plugin_resolved = 1;\r\n if(canPromise)\r\n {\r\n plugin_reject(\"Истекло время ожидания загрузки плагина\");\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n\r\n }\r\n\r\n //Вспомогательная функция для NPAPI\r\n function createPromise(arg)\r\n {\r\n return new Promise(arg);\r\n }\r\n\r\n function check_npapi_plugin (){\r\n try {\r\n var oAbout = CreateObject(\"CAdESCOM.About\");\r\n plugin_loaded();\r\n }\r\n catch (err) {\r\n document.getElementById(\"cadesplugin_object\").style.display = 'none';\r\n // Объект создать не удалось, проверим, установлен ли\r\n // вообще плагин. Такая возможность есть не во всех браузерах\r\n var mimetype = navigator.mimeTypes[\"application/x-cades\"];\r\n if (mimetype) {\r\n var plugin = mimetype.enabledPlugin;\r\n if (plugin) {\r\n plugin_loaded_error(\"Плагин загружен, но не создаются обьекты\");\r\n }else\r\n {\r\n plugin_loaded_error(\"Ошибка при загрузке плагина\");\r\n }\r\n }else\r\n {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n }\r\n }\r\n }\r\n\r\n //Проверяем работает ли плагин\r\n function check_plugin_working()\r\n {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = \"\";\r\n var isIeLessThan9 = (div.getElementsByTagName(\"i\").length === 1);\r\n if (isIeLessThan9) {\r\n plugin_loaded_error(\"Internet Explorer версии 8 и ниже не поддерживается\");\r\n return;\r\n }\r\n\r\n if(isNativeMessageSupported())\r\n {\r\n load_extension();\r\n }else if(!canPromise) {\r\n window.addEventListener(\"message\", function (event){\r\n if (event.data !== \"cadesplugin_echo_request\")\r\n return;\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n },\r\n false);\r\n }else\r\n {\r\n if(document.readyState === \"complete\"){\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n } else {\r\n window.addEventListener(\"load\", function (event) {\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n }, false);\r\n }\r\n }\r\n }\r\n\r\n function set_pluginObject(obj)\r\n {\r\n pluginObject = obj;\r\n }\r\n\r\n function is_capilite_enabled()\r\n {\r\n if ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP)\r\n return true;\r\n return false;\r\n };\r\n\r\n //Export\r\n cadesplugin.JSModuleVersion = \"2.3.2\";\r\n cadesplugin.async_spawn = async_spawn;\r\n cadesplugin.set = set_pluginObject;\r\n cadesplugin.set_log_level = set_log_level;\r\n cadesplugin.getLastError = getLastError;\r\n cadesplugin.is_capilite_enabled = is_capilite_enabled;\r\n\r\n if(isNativeMessageSupported())\r\n {\r\n cadesplugin.CreateObjectAsync = CreateObjectAsync;\r\n cadesplugin.ReleasePluginObjects = ReleasePluginObjects;\r\n }\r\n\r\n if(!isNativeMessageSupported())\r\n {\r\n cadesplugin.CreateObject = CreateObject;\r\n }\r\n\r\n if(window.cadesplugin_load_timeout)\r\n {\r\n setTimeout(check_load_timeout, window.cadesplugin_load_timeout);\r\n }\r\n else\r\n {\r\n setTimeout(check_load_timeout, 20000);\r\n }\r\n\r\n set_constantValues();\r\n\r\n cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR;\r\n window.cadesplugin = cadesplugin;\r\n check_plugin_working();\r\n}());\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://cryptoPro/webpack/universalModuleDefinition","webpack://cryptoPro/webpack/bootstrap","webpack://cryptoPro/../node_modules/base64-js/index.js","webpack://cryptoPro/../node_modules/buffer/index.js","webpack://cryptoPro/../node_modules/buffer/node_modules/isarray/index.js","webpack://cryptoPro/../node_modules/ieee754/index.js","webpack://cryptoPro/../node_modules/webpack/buildin/global.js","webpack://cryptoPro/./api/addAttachedSignature.ts","webpack://cryptoPro/./api/addDetachedSignature.ts","webpack://cryptoPro/./api/certificate/certificate.ts","webpack://cryptoPro/./api/certificate/exportBase64.ts","webpack://cryptoPro/./api/certificate/getAlgorithm.ts","webpack://cryptoPro/./api/certificate/getCadesProp.ts","webpack://cryptoPro/./api/certificate/getDecodedExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getInfo.ts","webpack://cryptoPro/./api/certificate/hasExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/index.ts","webpack://cryptoPro/./api/certificate/isValid.ts","webpack://cryptoPro/./api/createAttachedSignature.ts","webpack://cryptoPro/./api/createDetachedSignature.ts","webpack://cryptoPro/./api/createHash.ts","webpack://cryptoPro/./api/createXMLSignature.ts","webpack://cryptoPro/./api/getAllCertificates.ts","webpack://cryptoPro/./api/getAllContainerCertificates.ts","webpack://cryptoPro/./api/getAllUserCertificates.ts","webpack://cryptoPro/./api/getCertificate.ts","webpack://cryptoPro/./api/getCertificates.ts","webpack://cryptoPro/./api/getContainerCertificates.ts","webpack://cryptoPro/./api/getCspVersion.ts","webpack://cryptoPro/./api/getPluginVersion.ts","webpack://cryptoPro/./api/getSystemInfo.ts","webpack://cryptoPro/./api/getUserCertificates.ts","webpack://cryptoPro/./api/index.ts","webpack://cryptoPro/./api/isValidSystemSetup.ts","webpack://cryptoPro/./constants/cades-constants.ts","webpack://cryptoPro/./constants/index.ts","webpack://cryptoPro/./constants/issuer-tags-translations.ts","webpack://cryptoPro/./constants/oids-dictionary.ts","webpack://cryptoPro/./constants/subject-tags-translations.ts","webpack://cryptoPro/./crypto-pro-js-m.ts","webpack://cryptoPro/./helpers/_afterPluginsLoaded.ts","webpack://cryptoPro/./helpers/_extractCommonName.ts","webpack://cryptoPro/./helpers/_extractMeaningfulErrorMessage.ts","webpack://cryptoPro/./helpers/_generateCadesFn.ts","webpack://cryptoPro/./helpers/_getCadesCert.ts","webpack://cryptoPro/./helpers/_getCadesContainerCert.ts","webpack://cryptoPro/./helpers/_getCadesUserCert.ts","webpack://cryptoPro/./helpers/_getDateObj.ts","webpack://cryptoPro/./helpers/_isSupportedCSPVersion.ts","webpack://cryptoPro/./helpers/_isSupportedCadesVersion.ts","webpack://cryptoPro/./helpers/_parseCertInfo.ts","webpack://cryptoPro/./helpers/getSignType.ts","webpack://cryptoPro/./vendor/cadesplugin_api.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,qDAAW;AAChC,cAAc,mBAAO,CAAC,iDAAS;AAC/B,cAAc,mBAAO,CAAC,qEAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5vDA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;;;;;ACpFA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA,kFAA6E;AAC7E,0HAAqE;AACrE,2JAA2F;AAC3F,iHAAiH;AACjH,wGAAyD;AACzD,kGAAqD;AACrD,kGAA+D;AAE/D;;;;;;;GAOG;AACU,4BAAoB,GAAG,yCAAmB,CACrD,UAAO,UAAkB,EAAE,aAAmC,EAAE,QAA4B;IAA5B,6CAA4B;;;;;;oBAClF,WAAW,GAAK,MAAM,Y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BAAgB,CAAC;SACrC;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,WAAW,CAAC,mBAAmB,CAAC;SACxC;KACF;AACH,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C,iBAAiB,SAAS,QAAQ,YAAY,aAAa;AACrG,mFAAmF,iBAAiB,mBAAmB,uBAAuB,uBAAuB,cAAc,mBAAmB,YAAY;AAClN,0EAA0E,iBAAiB,yBAAyB,WAAW;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","file":"crypto-pro-js-m.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cryptoPro\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cryptoPro\"] = factory();\n\telse\n\t\troot[\"cryptoPro\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./crypto-pro-js-m.ts\");\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const addAttachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, signedMessage: string | ArrayBuffer, signType: SignType = 'PKCS7'): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addAttachedSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let messageBase64;\n\n try {\n messageBase64 = Buffer.from(signedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, signTypeConst));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const addDetachedSignature = _afterPluginsLoaded(\n async (\n thumbprint: string,\n signedMessage: string | ArrayBuffer,\n messageHash: string,\n signType: SignType = 'PKCS7',\n ): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyHash(cadesHashedData, signedMessage, signTypeConst));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { ISSUER_TAGS_TRANSLATIONS, SUBJECT_TAGS_TRANSLATIONS } from '../../constants';\nimport { TagTranslation } from '../../helpers/_parseCertInfo';\nimport { exportBase64 } from './exportBase64';\nimport { getAlgorithm } from './getAlgorithm';\nimport { getCadesProp } from './getCadesProp';\nimport { getDecodedExtendedKeyUsage, ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';\nimport { getExtendedKeyUsage } from './getExtendedKeyUsage';\nimport { getInfo } from './getInfo';\nimport { hasExtendedKeyUsage } from './hasExtendedKeyUsage';\nimport { isValid } from './isValid';\n\nexport type CadesCertificate = any;\n\nexport class Certificate {\n constructor(\n public _cadesCertificate: CadesCertificate,\n public name: string,\n public issuerName: string,\n public subjectName: string,\n public thumbprint: string,\n public validFrom: string,\n public validTo: string,\n ) {}\n\n public getOwnerInfo(): Promise {\n return getInfo.call(this, SUBJECT_TAGS_TRANSLATIONS, 'SubjectName');\n }\n\n public getIssuerInfo(): Promise {\n return getInfo.call(this, ISSUER_TAGS_TRANSLATIONS, 'IssuerName');\n }\n\n public getExtendedKeyUsage(): Promise {\n return getExtendedKeyUsage.call(this);\n }\n\n public getDecodedExtendedKeyUsage(): Promise {\n return getDecodedExtendedKeyUsage.call(this);\n }\n\n public getAlgorithm(): Promise {\n return getAlgorithm.call(this);\n }\n\n public getCadesProp(propName): Promise {\n return getCadesProp.call(this, propName);\n }\n\n public isValid(): Promise {\n return isValid.call(this);\n }\n\n public exportBase64(): Promise {\n return exportBase64.call(this);\n }\n\n public hasExtendedKeyUsage(oids): Promise {\n return hasExtendedKeyUsage.call(this, oids);\n }\n}\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Экспортирует сертификат в формате base64\n *\n * @returns сертификат в формате base64\n */\nexport const exportBase64 = _afterPluginsLoaded(function (): string {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function exportBase64(): string {\n let base64: string;\n\n try {\n base64 = __cadesAsyncToken__ + cadesCertificate.Export(0);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при экспорте сертификата');\n }\n\n return base64;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\ninterface AlgorithmInfo {\n algorithm: string;\n oid: string;\n}\n\n/**\n * Возвращает информацию об алгоритме сертификата\n *\n * @returns информацию об алгоритме и его OID'е\n */\nexport const getAlgorithm = _afterPluginsLoaded(function (): AlgorithmInfo {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getAlgorithm(): AlgorithmInfo {\n const algorithmInfo: AlgorithmInfo = {\n algorithm: null,\n oid: null,\n };\n let cadesPublicKey;\n\n try {\n cadesPublicKey = __cadesAsyncToken__ + cadesCertificate.PublicKey();\n cadesPublicKey = __cadesAsyncToken__ + cadesPublicKey.Algorithm;\n algorithmInfo.algorithm = __cadesAsyncToken__ + cadesPublicKey.FriendlyName;\n algorithmInfo.oid = __cadesAsyncToken__ + cadesPublicKey.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении алгоритма');\n }\n\n return algorithmInfo;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает указанное внутренее свойство у сертификата в формате Cades\n *\n * @param propName = наименование свойства\n * @returns значение запрошенного свойства\n */\nexport const getCadesProp = _afterPluginsLoaded(function (propName: string): any {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getCadesProp() {\n let propertyValue;\n\n try {\n propertyValue = __cadesAsyncToken__ + cadesCertificate[propName];\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при обращении к свойству сертификата');\n }\n\n return propertyValue;\n }),\n );\n});\n","import { OIDS_DICTIONARY } from '../../constants';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\nexport interface ExtendedKeysTranslations {\n [key: string]: string | null;\n}\n\n/**\n * Возвращает расшифрованные ОИД'ы сертификата\n *\n * @returns словарь расшифрованных ОИД'ов\n */\nexport const getDecodedExtendedKeyUsage = _afterPluginsLoaded(async function (): Promise {\n const certificateOids = await (this as Certificate).getExtendedKeyUsage();\n\n return certificateOids.reduce(\n (decodedOids, oidCode) => ({\n ...decodedOids,\n [oidCode]: OIDS_DICTIONARY[oidCode] || null,\n }),\n {},\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает ОИД'ы сертификата\n *\n * @returns список ОИД'ов\n */\nexport const getExtendedKeyUsage = _afterPluginsLoaded(function (): string[] {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getExtendedKeyUsage(): string[] {\n const OIDS: string[] = [];\n let count: any;\n\n try {\n count = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n count = __cadesAsyncToken__ + count.EKUs;\n count = __cadesAsyncToken__ + count.Count;\n\n if (count > 0) {\n while (count > 0) {\n let cadesExtendedKeyUsage;\n\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.EKUs;\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.Item(count);\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.OID;\n\n OIDS.push(cadesExtendedKeyUsage);\n\n count--;\n }\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || \"Ошибка при получении ОИД'ов\");\n }\n\n return OIDS;\n }),\n );\n});\n","import { TagsTranslations } from '../../constants/tags-translations';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { _parseCertInfo, TagTranslation } from '../../helpers/_parseCertInfo';\nimport { getCadesProp } from './getCadesProp';\n\n/**\n * Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам\n *\n * @param tags = словарь\n * @param entitiesPath = путь к разбираемой сущности\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const getInfo = _afterPluginsLoaded(async function (\n tags: TagsTranslations[],\n entitiesPath: string,\n): Promise {\n let entities: string;\n\n try {\n entities = await getCadesProp.call(this, entitiesPath);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при извлечении информации из сертификата');\n }\n\n return _parseCertInfo(tags, entities);\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет наличие ОИД'а (ОИД'ов) у сертификата\n *\n * @param oids - ОИД'ы для проверки\n * @returns флаг наличия ОИД'ов у сертификата\n */\nexport const hasExtendedKeyUsage = _afterPluginsLoaded(async function (oids: string | string[]): Promise {\n const certOids = await (this as Certificate).getExtendedKeyUsage();\n\n let result: boolean;\n\n if (Array.isArray(oids)) {\n result = oids.every((oidToCheck) => certOids.some((certOid) => certOid === oidToCheck));\n } else {\n result = certOids.some((certOid) => certOid === oids);\n }\n\n return result;\n});\n","export * from './certificate';\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет действительность сертификата\n *\n * @returns флаг валидности\n */\nexport const isValid = _afterPluginsLoaded(function (): boolean {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function isValid() {\n let isValid;\n\n try {\n isValid = __cadesAsyncToken__ + cadesCertificate.IsValid();\n isValid = __cadesAsyncToken__ + isValid.Result;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при проверке сертификата');\n }\n\n return Boolean(isValid);\n }),\n );\n});\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Создает присоединенную подпись сообщения по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param message - подписываемое сообщение\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const createAttachedSignature = _afterPluginsLoaded(\n async (\n thumbprint: string,\n unencryptedMessage: string | ArrayBuffer,\n signType: SignType = 'PKCS7',\n ): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createAttachedSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let messageBase64;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Создает отсоединенную подпись хеша по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\n\nexport const createDetachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, messageHash: string, signType: SignType = 'PKCS7'): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedData.SignHash(cadesHashedData, cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит\n * https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B8%D0%B1%D0%BE%D0%B3_(%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F)\n *\n * @param unencryptedMessage - сообщение для хеширования\n *\n * @returns хеш\n */\nexport const createHash = _afterPluginsLoaded(\n async (unencryptedMessage: string | ArrayBuffer): Promise => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function createHash(): string {\n const cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n let messageBase64;\n let hash;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesHashedData.Hash(messageBase64));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации хэширования');\n }\n\n try {\n hash = __cadesAsyncToken__ + cadesHashedData.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при создании хэша');\n }\n\n return hash;\n }),\n );\n },\n);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\n\n/**\n * Создает XML подпись для документа в формате XML\n *\n * @param thumbprint - отпечаток сертификата\n * @param unencryptedMessage - подписываемое сообщение в формате XML\n * @returns подпись\n */\nexport const createXMLSignature = _afterPluginsLoaded(\n async (thumbprint: string, unencryptedMessage: string): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createXMLSignature(): string {\n let cadesSigner;\n let cadesSignedXML;\n\n try {\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n cadesSignedXML = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.SignedXML');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n try {\n const signatureMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n const digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n void (__cadesAsyncToken__ + cadesSigner.propset_CheckCertificate(true));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_Content(unencryptedMessage));\n void (\n __cadesAsyncToken__ +\n cadesSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED)\n );\n void (__cadesAsyncToken__ + cadesSignedXML.propset_SignatureMethod(signatureMethod));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_DigestMethod(digestMethod));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedXML.Sign(cadesSigner);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getAllUserCertificates } from './getAllUserCertificates';\nimport { getAllContainerCertificates } from './getAllContainerCertificates';\n\nlet certificatesCache: Certificate[];\n/**\n * Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе, без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllCertificates = _afterPluginsLoaded(\n async (resetCache: boolean = false): Promise => {\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n let availableCertificates: Certificate[];\n\n try {\n availableCertificates = await getAllUserCertificates(resetCache);\n } catch (error) {\n console.error(error);\n\n availableCertificates = [];\n }\n\n try {\n const containerAllCertificates: Certificate[] = await getAllContainerCertificates(resetCache);\n\n if (!availableCertificates) {\n availableCertificates = containerAllCertificates;\n } else {\n let containerAllCertificatesCount = containerAllCertificates.length - 1;\n let foundAvailableCertificate;\n\n while (containerAllCertificatesCount) {\n foundAvailableCertificate = availableCertificates.find(\n (cert) => cert.thumbprint === containerAllCertificates[containerAllCertificatesCount].thumbprint,\n );\n\n if (!foundAvailableCertificate) {\n availableCertificates.push(containerAllCertificates[containerAllCertificatesCount]);\n }\n\n containerAllCertificatesCount--;\n }\n }\n } catch (error) {\n console.error(error);\n }\n\n if (!availableCertificates) {\n throw new Error('Нет доступных сертификатов');\n }\n\n certificatesCache = availableCertificates;\n\n return certificatesCache;\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllContainerCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getAllContainerCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { CadesCertificate, Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getAllUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getCertificates } from './getCertificates';\nimport { getAllCertificates } from './getAllCertificates';\n\n/**\n * Возвращает сертификат по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @param validOnly - проверять сертификаты по дате и наличию приватного ключа\n * @returns сертификат\n */\nexport const getCertificate = _afterPluginsLoaded(\n async (thumbprint: string, validOnly: boolean = true): Promise => {\n if (!thumbprint) {\n throw new Error('Отпечаток не указан');\n }\n\n let availableCertificates: Certificate[];\n\n if (validOnly) {\n availableCertificates = await getCertificates();\n } else {\n availableCertificates = await getAllCertificates();\n }\n\n const foundCertificate: Certificate = availableCertificates.find((cert) => cert.thumbprint === thumbprint);\n\n if (!foundCertificate) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\n }\n\n return foundCertificate;\n },\n);\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getUserCertificates } from './getUserCertificates';\nimport { getContainerCertificates } from './getContainerCertificates';\nimport { getAllUserCertificates } from './getAllUserCertificates';\nimport { getAllContainerCertificates } from './getAllContainerCertificates';\n\nlet certificatesCache: Certificate[];\n/**\n * Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getCertificates = _afterPluginsLoaded(\n async (resetCache: boolean = false): Promise => {\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n let availableCertificates: Certificate[];\n\n try {\n availableCertificates = await getUserCertificates(resetCache);\n } catch (error) {\n console.error(error);\n\n availableCertificates = [];\n }\n\n try {\n const containerCertificates: Certificate[] = await getContainerCertificates(resetCache);\n\n if (!availableCertificates) {\n availableCertificates = containerCertificates;\n } else {\n let containerCertificatesCount = containerCertificates.length - 1;\n let foundAvailableCertificate;\n\n while (containerCertificatesCount) {\n foundAvailableCertificate = availableCertificates.find(\n (cert) => cert.thumbprint === containerCertificates[containerCertificatesCount].thumbprint,\n );\n\n if (!foundAvailableCertificate) {\n availableCertificates.push(containerCertificates[containerCertificatesCount]);\n }\n\n containerCertificatesCount--;\n }\n }\n } catch (error) {\n console.error(error);\n }\n\n if (!availableCertificates) {\n throw new Error('Нет доступных сертификатов');\n }\n\n certificatesCache = availableCertificates;\n\n return certificatesCache;\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getContainerCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getContainerCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP\n */\nexport const getCspVersion = _afterPluginsLoaded((): string => {\n let cspVersion = null;\n\n return eval(\n _generateCadesFn(function getCspVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n cspVersion = __cadesAsyncToken__ + cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении версии системы');\n }\n\n return cspVersion;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о плагине\n */\nexport const getPluginVersion = _afterPluginsLoaded((): string => {\n let cadesVersion = null;\n\n return eval(\n _generateCadesFn(function getPluginVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n\n if (!cadesVersion) {\n cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n cadesVersion = __cadesAsyncToken__ + cadesVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о плагине');\n }\n\n return cadesVersion;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nexport interface SystemInfo {\n cadesVersion: string;\n cspVersion: string;\n}\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP и плагине\n */\nexport const getSystemInfo = _afterPluginsLoaded(\n (): SystemInfo => {\n const sysInfo = {\n cadesVersion: null,\n cspVersion: null,\n };\n\n return eval(\n _generateCadesFn(function getSystemInfo(): SystemInfo {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n sysInfo.cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n if (!sysInfo.cadesVersion) {\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + sysInfo.cadesVersion.toString();\n sysInfo.cspVersion = __cadesAsyncToken__ + sysInfo.cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о системе');\n }\n\n return sysInfo;\n }),\n );\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","export * from './getCertificate';\nexport * from './getUserCertificates';\nexport * from './getAllUserCertificates';\nexport * from './getContainerCertificates';\nexport * from './getAllContainerCertificates';\nexport * from './getCertificates';\nexport * from './getAllCertificates';\nexport * from './getSystemInfo';\nexport * from './isValidSystemSetup';\nexport * from './createXMLSignature';\nexport * from './createDetachedSignature';\nexport * from './addDetachedSignature';\nexport * from './createAttachedSignature';\nexport * from './addAttachedSignature';\nexport * from './createHash';\nexport * from './certificate';\nexport * from './getCspVersion';\nexport * from './getPluginVersion';\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { _isSupportedCadesVersion } from '../helpers/_isSupportedCadesVersion';\nimport { _isSupportedCSPVersion } from '../helpers/_isSupportedCSPVersion';\nimport { getSystemInfo, SystemInfo } from './getSystemInfo';\n\n/**\n * Проверяет корректность настроек ЭП на машине\n *\n * @returns флаг корректности настроек\n */\nexport const isValidSystemSetup = _afterPluginsLoaded(\n async (): Promise => {\n let systemInfo: SystemInfo;\n\n try {\n systemInfo = await getSystemInfo();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Настройки ЭП на данной машине не верны');\n }\n\n if (!_isSupportedCadesVersion(systemInfo.cadesVersion)) {\n throw new Error('Не поддерживаемая версия плагина');\n }\n\n if (!_isSupportedCSPVersion(systemInfo.cspVersion)) {\n throw new Error('Не поддерживаемая версия CSP');\n }\n\n return true;\n },\n);\n","export const CADESCOM_ATTRIBUTE_OTHER = -1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CADESCOM_AllowNoOutstandingRequest = 1;\nexport const CADESCOM_AllowNone = 0;\nexport const CADESCOM_AllowUntrustedCertificate = 2;\nexport const CADESCOM_AllowUntrustedRoot = 4;\nexport const CADESCOM_BASE64_TO_BINARY = 0x01;\nexport const CADESCOM_CADES_BES = 1;\nexport const CADESCOM_CADES_DEFAULT = 0;\nexport const CADESCOM_CADES_T = 5;\nexport const CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\nexport const CADESCOM_CONTAINER_STORE = 100;\nexport const CADESCOM_CURRENT_USER_STORE = 2;\nexport const CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\nexport const CADESCOM_DISPLAY_DATA_CONTENT = 1;\nexport const CADESCOM_DISPLAY_DATA_NONE = 0;\nexport const CADESCOM_ENCODE_ANY = -1;\nexport const CADESCOM_ENCODE_BASE64 = 0;\nexport const CADESCOM_ENCODE_BINARY = 1;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\nexport const CADESCOM_HASH_ALGORITHM_MD2 = 1;\nexport const CADESCOM_HASH_ALGORITHM_MD4 = 2;\nexport const CADESCOM_HASH_ALGORITHM_MD5 = 3;\nexport const CADESCOM_HASH_ALGORITHM_SHA1 = 0;\nexport const CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\nexport const CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\nexport const CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\nexport const CADESCOM_LOCAL_MACHINE_STORE = 1;\nexport const CADESCOM_PKCS7_TYPE = 65535;\nexport const CADESCOM_STRING_TO_UCS2LE = 0x00;\nexport const CADESCOM_SkipInstallToStore = 268435456;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\nexport const CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\nexport const CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\nexport const CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\nexport const CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\nexport const CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\nexport const CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\nexport const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\nexport const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\nexport const CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\nexport const CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\nexport const CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\nexport const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\nexport const CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\nexport const CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\nexport const CAPICOM_CURRENT_USER_STORE = 2;\nexport const CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\nexport const CAPICOM_EKU_CLIENT_AUTH = 2;\nexport const CAPICOM_EKU_OTHER = 0;\nexport const CAPICOM_EKU_SMARTCARD_LOGON = 5;\nexport const CAPICOM_LOCAL_MACHINE_STORE = 1;\nexport const CAPICOM_MEMORY_STORE = 0;\nexport const CAPICOM_MY_STORE = 'My';\nexport const CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\nexport const CAPICOM_OID_OTHER = 0;\nexport const CAPICOM_PROPID_ACCESS_STATE = 14;\nexport const CAPICOM_PROPID_ARCHIVED = 19;\nexport const CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;\nexport const CAPICOM_PROPID_AUTO_ENROLL = 21;\nexport const CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;\nexport const CAPICOM_PROPID_CTL_USAGE = 9;\nexport const CAPICOM_PROPID_DATE_STAMP = 27;\nexport const CAPICOM_PROPID_DESCRIPTION = 13;\nexport const CAPICOM_PROPID_EFS = 17;\nexport const CAPICOM_PROPID_ENHKEY_USAGE = 9;\nexport const CAPICOM_PROPID_ENROLLMENT = 26;\nexport const CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;\nexport const CAPICOM_PROPID_FIRST_RESERVED = 66;\nexport const CAPICOM_PROPID_FIRST_USER = 0x00008000;\nexport const CAPICOM_PROPID_FORTEZZA_DATA = 18;\nexport const CAPICOM_PROPID_FRIENDLY_NAME = 11;\nexport const CAPICOM_PROPID_HASH_PROP = 3;\nexport const CAPICOM_PROPID_IE30_RESERVED = 7;\nexport const CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;\nexport const CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;\nexport const CAPICOM_PROPID_KEY_CONTEXT = 5;\nexport const CAPICOM_PROPID_KEY_IDENTIFIER = 20;\nexport const CAPICOM_PROPID_KEY_PROV_HANDLE = 1;\nexport const CAPICOM_PROPID_KEY_PROV_INFO = 2;\nexport const CAPICOM_PROPID_KEY_SPEC = 6;\nexport const CAPICOM_PROPID_LAST_RESERVED = 0x00007fff;\nexport const CAPICOM_PROPID_LAST_USER = 0x0000ffff;\nexport const CAPICOM_PROPID_MD5_HASH = 4;\nexport const CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;\nexport const CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;\nexport const CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;\nexport const CAPICOM_PROPID_PVK_FILE = 12;\nexport const CAPICOM_PROPID_RENEWAL = 64;\nexport const CAPICOM_PROPID_SHA1_HASH = 3;\nexport const CAPICOM_PROPID_SIGNATURE_HASH = 15;\nexport const CAPICOM_PROPID_SMART_CARD_DATA = 16;\nexport const CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;\nexport const CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;\nexport const CAPICOM_PROPID_UNKNOWN = 0;\nexport const CAPICOM_SMART_CARD_USER_STORE = 4;\nexport const CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;\nexport const CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\nexport const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\nexport const CAPICOM_STORE_OPEN_READ_ONLY = 0;\nexport const CAPICOM_STORE_OPEN_READ_WRITE = 1;\nexport const CHECK_NONE = 0;\nexport const CHECK_OFFLINE_REVOCATION_STATUS = 16;\nexport const CHECK_ONLINE_REVOCATION_STATUS = 8;\nexport const CHECK_SIGNATURE_VALIDITY = 4;\nexport const CHECK_TIME_VALIDITY = 2;\nexport const CHECK_TRUSTED_ROOT = 1;\nexport const LOG_LEVEL_DEBUG = 4;\nexport const LOG_LEVEL_ERROR = 1;\nexport const LOG_LEVEL_INFO = 2;\nexport const TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;\nexport const TRUST_CTL_IS_NOT_TIME_VALID = 131072;\nexport const TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;\nexport const TRUST_IS_CYCLIC = 128;\nexport const TRUST_IS_NOT_SIGNATURE_VALID = 8;\nexport const TRUST_IS_NOT_TIME_NESTED = 2;\nexport const TRUST_IS_NOT_TIME_VALID = 1;\nexport const TRUST_IS_NOT_VALID_FOR_USAGE = 16;\nexport const TRUST_IS_PARTIAL_CHAIN = 65536;\nexport const TRUST_IS_REVOKED = 4;\nexport const TRUST_IS_UNTRUSTED_ROOT = 32;\nexport const TRUST_REVOCATION_STATUS_UNKNOWN = 64;\nexport const XmlDsigGost3410Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\nexport const XmlDsigGost3410UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411';\nexport const XmlDsigGost3411Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\nexport const XmlDsigGost3411UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr3411';\n","export * from './cades-constants';\nexport * from './issuer-tags-translations';\nexport * from './oids-dictionary';\nexport * from './subject-tags-translations';\n","import { TagsTranslations } from './tags-translations';\n\nexport const ISSUER_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UN', 'UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN', 'commonName'], translation: 'Удостоверяющий центр' },\n { possibleNames: ['C', 'countryName'], translation: 'Страна' },\n { possibleNames: ['S', 'ST', 'stateOrProvinceName'], translation: 'Регион' },\n { possibleNames: ['STREET', 'streetAddress'], translation: 'Адрес' },\n { possibleNames: ['O', 'organizationName'], translation: 'Компания' },\n { possibleNames: ['OU', 'organizationalUnitName'], translation: 'Тип' },\n { possibleNames: ['T', 'TITLE'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'ИННФЛ', 'ИНН ФЛ', 'INN', 'ИНН физического лица'], translation: 'ИНН' },\n { possibleNames: ['ИННЮЛ', 'ИНН ЮЛ', 'INN LE', 'INNLE', 'ИНН организации'], translation: 'ИНН организации' },\n { possibleNames: ['E', 'email', 'emailAddress', 'pkcs9email'], translation: 'Email' },\n { possibleNames: ['L', 'localityName'], translation: 'Город' },\n];\n","export const OIDS_DICTIONARY = {\n '1.2.643.2.2.34.6': 'Пользователь Центра Регистрации',\n '1.2.643.2.39.1.1': 'Использование в программных продуктах системы \"1С:Предприятие 8\"',\n '1.2.643.3.131.1.1': 'ИНН',\n '1.2.643.100.4': 'ИНН организации',\n '1.2.643.100.1': 'ОГРН',\n '1.2.643.100.5': 'ОГРНИП',\n '1.2.643.100.3': 'СНИЛС',\n '1.2.643.3.141.1.1': 'РНС ФСС',\n '1.2.643.3.141.1.2': 'КП ФСС',\n '1.2.643.3.2.100.65.13.11': 'Использование в системе АИС \"Госзакупки\" Сахалинской области.',\n '1.2.643.3.8.100.1': 'Сертификат типа \"ekey-ГОСТ\"',\n '1.2.643.3.8.100.1.1': 'Общее использование в системах ИОК без права заверения финансовых документов',\n '1.2.643.3.8.100.1.10':\n 'Для участия в электронных торгах и подписания государственного контракта в информационных системах Тендерного комитета города Москвы уполномоченными лицами участников размещения государственного заказа города Москвы',\n '1.2.643.3.8.100.1.11':\n 'Подписание электронных документов в автоматизированной информационной системе размещения государственного и муниципального заказа Саратовской области',\n '1.2.643.3.8.100.1.12': 'Использование в системе государственного заказа Иркутской области',\n '1.2.643.3.8.100.1.13':\n 'Использование в электронной торговой площадке агентства государственного заказа Красноярского края',\n '1.2.643.3.8.100.1.14': 'Использование в электронной торговой площадке \"Тендер\"',\n '1.2.643.3.8.100.1.2': 'Передача отчетности по ТКС',\n '1.2.643.3.8.100.1.3': 'Оформление взаимных обязательств, соглашений, договоров, актов и т.п.',\n '1.2.643.3.8.100.1.4': 'Внутрикорпоративный документооборот',\n '1.2.643.3.8.100.1.5': 'Использование в системах электронной торговли',\n '1.2.643.3.8.100.1.6': 'Использование в торгово-закупочной системе \"ЭЛЕКТРА\"',\n '1.2.643.3.8.100.1.7': 'Использование в системе Портал государственных закупок Ставропольского края.',\n '1.2.643.3.8.100.1.8': 'Использование в Единой системе электронной торговли B2B-Center и B2G.',\n '1.2.643.3.8.100.1.9':\n 'Для участия в электронных торгах и подписания государственного контракта в электронной площадке ОАО «ЕЭТП» уполномоченными лицами участников размещения государственного или муниципального заказа',\n '1.2.643.5.1.24.2.1.3':\n 'Формирование документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.1.3.1':\n 'Формирование кадастровым инженером документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.2.2': 'Формирование документов как результата оказания услуги со стороны органов регистрации прав',\n '1.2.643.5.1.24.2.2.3':\n 'Формирование документов для получения государственных услуг в сфере государственной регистрации прав на недвижимое имущество и сделок с ним со стороны заявителя',\n '1.2.643.6.2.1.7.1':\n 'Использование единоличным исполнительным органом юридического лица или уполномоченными представителями юридического лица в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских и иных прав и обязанностей в сфере негосударственного пенсионного обеспечения, негосударственного пенсионного страхования, в сфере деятельности паевых инвестиционных фондов, акционерных инвестиционных фондов, профессиональных участников рынка ценных бумаг, а также связанной с обслуживанием указанной деятельности услуг кредитных и иных организаций',\n '1.2.643.6.2.1.7.2':\n 'Использование физическим лицом в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских прав и обязанностей в отношении инвестиционных паев паевых инвестиционных фондов, в том числе отношения, связанные с учетом и/или фиксацией прав на инвестиционные паи паевых инвестиционных фондов',\n '1.2.643.6.3':\n 'Использование в электронных торговых системах и в программном обеспечении, связанным с обменом электронных сообщений',\n '1.2.643.6.3.1.1': 'Использование на электронных площадок отобранных для проведения аукционах в электронной форме',\n '1.2.643.6.3.1.2.1': 'Тип участника - Юридическое лицо',\n '1.2.643.6.3.1.2.2': 'Тип участника - Физическое лицо',\n '1.2.643.6.3.1.2.3': 'Тип участника - Индивидуальный предприниматель',\n '1.2.643.6.3.1.3.1': 'Участник размещения заказа',\n '1.2.643.6.3.1.4.1': 'Администратор организации',\n '1.2.643.6.3.1.4.2': 'Уполномоченный специалист',\n '1.2.643.6.3.1.4.3': 'Специалист с правом подписи контракта',\n '1.2.840.113549.1.9.2': 'Неструктурированное имя',\n '1.3.6.1.4.1.24138.1.1.8.1': 'Обеспечение юридической значимости в Системе \"Электронная Торговая Площадка\"',\n '1.3.6.1.4.1.29919.21': 'Использование в системе Портал государственных закупок Ростовской области \"Рефери\".',\n '1.3.6.1.5.5.7.3.2': 'Проверка подлинности клиента',\n '1.3.6.1.5.5.7.3.4': 'Защищенная электронная почта',\n '1.3.643.3.8.100.15': 'Использование в ЭТП \"uTender\"',\n};\n","import { TagsTranslations } from './tags-translations';\n\nexport const SUBJECT_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UN', 'UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN', 'commonName'], translation: 'Владелец' },\n { possibleNames: ['SN', 'surname'], translation: 'Фамилия' },\n { possibleNames: ['G', 'givenName', 'gn'], translation: 'Имя Отчество' },\n { possibleNames: ['C', 'countryName'], translation: 'Страна' },\n { possibleNames: ['S', 'ST', 'stateOrProvinceName'], translation: 'Регион' },\n { possibleNames: ['STREET', 'streetAddress'], translation: 'Адрес' },\n { possibleNames: ['O', 'organizationName'], translation: 'Компания' },\n { possibleNames: ['OU', 'organizationalUnitName'], translation: 'Отдел/подразделение' },\n { possibleNames: ['T', 'TITLE'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'ИННФЛ', 'ИНН ФЛ', 'INN', 'ИНН физического лица'], translation: 'ИНН' },\n { possibleNames: ['ИННЮЛ', 'ИНН ЮЛ', 'INN LE', 'INNLE', 'ИНН организации'], translation: 'ИНН организации' },\n { possibleNames: ['E', 'email', 'emailAddress', 'pkcs9email'], translation: 'Email' },\n { possibleNames: ['L', 'localityName'], translation: 'Город' },\n];\n","export * from './api';\nexport * from './helpers';\n","import { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\n\ntype Unpromisify = T extends Promise ? R : T;\n\nlet isSetLogLevel = false;\nlet isPluginLoaded = false;\n\nexport const _afterPluginsLoaded = any>(\n fn: T,\n): ((...args: Parameters) => Promise>>) => {\n const canPromise = Boolean(window.Promise);\n\n return async function (...args: Parameters): Promise>> {\n if (!isPluginLoaded) {\n try {\n require('../vendor/cadesplugin_api');\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при подключении модуля для работы с Cades plugin',\n );\n }\n\n isPluginLoaded = true;\n }\n\n const { cadesplugin } = window;\n\n if (!canPromise) {\n throw new Error('Необходим полифилл для Promise');\n }\n\n if (!cadesplugin) {\n throw new Error('Не подключен модуль для работы с Cades plugin');\n }\n\n if (!isSetLogLevel) {\n cadesplugin.set_log_level(cadesplugin.LOG_LEVEL_ERROR);\n\n isSetLogLevel = true;\n }\n\n try {\n await cadesplugin;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации модуля для работы с Cades plugin',\n );\n }\n\n return await fn.apply(this, args);\n };\n};\n","export const _extractCommonName = (subjectName: string): string | undefined =>\n subjectName.match(/CN=\"?(.+?)\"?(?:,|$)/)?.[1]?.replace(/\"{2}/g, '\"');\n","export const _extractMeaningfulErrorMessage = (error: Error): string | null => {\n let errorContainer = window.cadesplugin?.getLastError && window.cadesplugin.getLastError(error);\n\n if (!errorContainer?.message) {\n if (!error.message) {\n return null;\n }\n\n errorContainer = error;\n }\n\n const containsRussianLetters = /[а-яА-Я]/.test(errorContainer.message);\n\n if (!containsRussianLetters) {\n return null;\n }\n\n const searchResult = errorContainer.message.match(/^(.*?)(?:(?:\\.?\\s?\\(?(0x[0-9a-zA-Z]{1,8})\\)?)|(?:\\.?$))/);\n\n return searchResult ? searchResult[1] + (searchResult[2] ? ' (Код ошибки: ' + searchResult[2] + ')' : '') : null;\n};\n","// синтетические переменные, которые подменяются в рантайме\nexport const __cadesAsyncToken__ = {};\nexport const __createCadesPluginObject__ = (...args): any => ({});\n\nfunction getGeneratorConstructor(): GeneratorFunction {\n return new Function('', 'return Object.getPrototypeOf(function*(){}).constructor')();\n}\n\nexport const _generateCadesFn = (callback: Function): string => {\n const { cadesplugin } = window;\n const cadesGeneratorsAPI = Boolean(cadesplugin.CreateObjectAsync);\n const callbackName = callback.name || 'dynamicFn';\n const callbackLiteral = String(callback);\n const callbackArguments = callbackLiteral.match(/^function[\\s\\w]*?\\((.*?)\\)/)?.[1] || '';\n const callbackBody = callbackLiteral.replace(/^.*?{([\\s\\S]*?)}$/, '$1');\n let crossEnvCallbackLiteral = String(\n new (cadesGeneratorsAPI ? getGeneratorConstructor() : Function)(callbackArguments, callbackBody),\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__createCadesPluginObject__(\\([\\s\\S]*?\\))/gm,\n `cadesplugin.CreateObject${cadesGeneratorsAPI ? 'Async' : ''}$1`,\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__cadesAsyncToken__\\s*?\\+\\s*?\\b/gm,\n cadesGeneratorsAPI ? 'yield ' : '',\n );\n\n if (!cadesGeneratorsAPI) {\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/propset_(.*?)\\((.*?)\\)/gm, '$1 = $2');\n }\n\n return [\n cadesGeneratorsAPI ? `cadesplugin.async_spawn(${crossEnvCallbackLiteral});` : `(${crossEnvCallbackLiteral})();`,\n `//# sourceURL=crypto-pro_${callbackName}.js`,\n ].join('');\n};\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _getCadesUserCert } from './_getCadesUserCert';\nimport { _getCadesContainerCert } from './_getCadesContainerCert';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesCert = _afterPluginsLoaded(\n async (thumbprint: string): Promise => {\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificate = await _getCadesUserCert(thumbprint);\n } catch (error) {\n console.log(error);\n\n cadesCertificate = await _getCadesContainerCert(thumbprint);\n }\n\n return cadesCertificate;\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку из хранилища закрытого ключа\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesContainerCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища закрытого ключа');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) ||\n 'Ошибка получения списка сертификатов из хранилища закрытого ключа',\n );\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов в хранилище закрытого ключа');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден в хранилище закрытого ключа`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата из хранилища закрытого ключа',\n );\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку из хранилища пользователя\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesUserCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища пользователя');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов из хранилища пользователя',\n );\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов в хранилище пользователя');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден в хранилище пользователя`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата из хранилища пользователя',\n );\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","/**\n * Возвращает объект даты, совместимый с Cades plugin'ом, зависящий от браузера.\n *\n * В IE необходимо использовать специфичный формат \"VT_DATE\"\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Microsoft_Extensions/Date.getVarDate\n */\nexport const _getDateObj = (dateObj): Date => (dateObj.getVarDate ? dateObj.getVarDate() : dateObj);\n","const oldestSupportedCSPVersion = 4.0;\n\nexport const _isSupportedCSPVersion = (version: string): boolean => {\n version = version.match(/\\d+?\\b(?:\\.\\d+)?/)?.[0];\n\n return Number(version) >= oldestSupportedCSPVersion;\n};\n","export const _isSupportedCadesVersion = (version: string): boolean => {\n const match = version.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n\n if (!match) {\n return false;\n }\n\n const [, major, minor, patch] = match;\n\n if (Number(major) < 2) {\n return false;\n }\n\n if (Number(major) === 2 && Number(patch) < 12438) {\n return false;\n }\n\n return true;\n};\n","import { OIDS_DICTIONARY } from '../constants';\nimport { TagsTranslations } from '../constants/tags-translations';\n\nexport interface TagTranslation {\n description: string;\n title: string;\n isTranslated: boolean;\n}\n\n/**\n * Парсит информацию из строки с информацией о сертификате\n *\n * @param tagsTranslations - словарь с расшифровками тэгов\n * @param rawInfo - данные для парсинга\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const _parseCertInfo = (tagsTranslations: TagsTranslations[], rawInfo: string): TagTranslation[] => {\n const extractedEntities: string[] = rawInfo.match(/([а-яА-Яa-zA-Z0-9\\s.]+)=(?:(\"[^\"]+?\")|(.+?))(?:,|$)/g);\n\n if (extractedEntities) {\n return extractedEntities.map((group) => {\n const segmentsMatch = group.trim().match(/^([а-яА-Яa-zA-Z0-9\\s.]+)=(.+?),?$/);\n let title = segmentsMatch?.[1];\n // Вырезаем лишние кавычки\n const description = segmentsMatch?.[2]?.replace(/^\"(.*)\"/, '$1')?.replace(/\"{2}/g, '\"');\n const oidIdentifierMatch = title?.match(/^OID\\.(.*)/);\n const oidIdentifier = oidIdentifierMatch?.[1];\n let isTranslated = false;\n\n // Если нашли в тайтле ОИД, пытаемся его расшифровать\n if (oidIdentifier) {\n const oidTranslation = OIDS_DICTIONARY[oidIdentifier];\n\n if (oidTranslation) {\n title = oidTranslation;\n isTranslated = true;\n }\n }\n\n const tagTranslation = tagsTranslations.find((tag) => tag.possibleNames.find((name) => name === title))\n ?.translation;\n\n if (tagTranslation) {\n title = tagTranslation;\n isTranslated = true;\n }\n\n return { description, title, isTranslated };\n });\n }\n};\n","export declare type SignType = 'CAdES BES' | 'CAdES-X Long Type 1' | 'CAdES T' | 'PKCS7';\n\nexport const getSignType = (cadesplugin: any, signType: SignType): any => {\n switch (signType) {\n case 'CAdES BES': {\n return cadesplugin.CADESCOM_CADES_BES;\n }\n case 'CAdES-X Long Type 1': {\n return cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1;\n }\n case 'CAdES T': {\n return cadesplugin.CADESCOM_CADES_T;\n }\n case 'PKCS7': {\n return cadesplugin.CADESCOM_PKCS7_TYPE;\n }\n }\n};\n","; (function () {\r\n //already loaded\r\n if (window.cadesplugin && window.cadesplugin.LOG_LEVEL_DEBUG) {\r\n return;\r\n }\r\n var pluginObject;\r\n var plugin_resolved = 0;\r\n var plugin_reject;\r\n var plugin_resolve;\r\n var isOpera = 0;\r\n var isFireFox = 0;\r\n var isSafari = 0;\r\n var isYandex = 0;\r\n var canPromise = !!window.Promise;\r\n var cadesplugin_loaded_event_recieved = false;\r\n var isFireFoxExtensionLoaded = false;\r\n var cadesplugin = {};\r\n\r\n if (canPromise) {\r\n cadesplugin = new window.Promise(function (resolve, reject) {\r\n plugin_resolve = resolve;\r\n plugin_reject = reject;\r\n });\r\n }\r\n\r\n function check_browser() {\r\n var ua = window.navigator.userAgent,\r\n tem,\r\n M = ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE', version: (tem[1] || '') };\r\n }\r\n if (M[1] === \"Chrome\") {\r\n tem = ua.match(/\\b(OPR|Edg|YaBrowser)\\/(\\d+)/);\r\n if (tem != null && (tem.length > 2)) {\r\n return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\r\n }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [window.navigator.appName, window.navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\r\n M.splice(1, 1, tem[1]);\r\n }\r\n return { name: M[0], version: M[1] };\r\n }\r\n\r\n var browserSpecs = check_browser();\r\n\r\n function cpcsp_console_log(level, msg) {\r\n //IE9 не может писать в консоль если не открыта вкладка developer tools\r\n if (typeof console === 'undefined') {\r\n return;\r\n }\r\n if (level <= cadesplugin.current_log_level) {\r\n if (level === cadesplugin.LOG_LEVEL_DEBUG) {\r\n console.log(\"DEBUG: %s\", msg);\r\n }\r\n if (level === cadesplugin.LOG_LEVEL_INFO) {\r\n console.info(\"INFO: %s\", msg);\r\n }\r\n if (level === cadesplugin.LOG_LEVEL_ERROR) {\r\n console.error(\"ERROR: %s\", msg);\r\n }\r\n }\r\n }\r\n\r\n function get_extension_version(callback) {\r\n window.postMessage(\"cadesplugin_extension_version_request\", \"*\");\r\n window.addEventListener(\"message\", function (event) {\r\n var resp_prefix = \"cadesplugin_extension_version_response:\";\r\n if (typeof (event.data) !== \"string\" || event.data.indexOf(resp_prefix) !== 0) {\r\n return;\r\n }\r\n var ext_version = event.data.substring(resp_prefix.length);\r\n callback(ext_version);\r\n }, false);\r\n }\r\n\r\n function get_extension_id(callback) {\r\n window.postMessage(\"cadesplugin_extension_id_request\", \"*\");\r\n window.addEventListener(\"message\", function (event) {\r\n var resp_prefix = \"cadesplugin_extension_id_response:\";\r\n if (typeof (event.data) !== \"string\" || event.data.indexOf(resp_prefix) !== 0) {\r\n return;\r\n }\r\n var ext_id = event.data.substring(resp_prefix.length);\r\n callback(ext_id);\r\n }, false);\r\n }\r\n\r\n function set_log_level(level) {\r\n if (!((level === cadesplugin.LOG_LEVEL_DEBUG) ||\r\n (level === cadesplugin.LOG_LEVEL_INFO) ||\r\n (level === cadesplugin.LOG_LEVEL_ERROR))) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"cadesplugin_api.js: Incorrect log_level: \" + level);\r\n return;\r\n }\r\n cadesplugin.current_log_level = level;\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = DEBUG\");\r\n }\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = INFO\");\r\n }\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = ERROR\");\r\n }\r\n if (isNativeMessageSupported()) {\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) {\r\n window.postMessage(\"set_log_level=debug\", \"*\");\r\n }\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) {\r\n window.postMessage(\"set_log_level=info\", \"*\");\r\n }\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) {\r\n window.postMessage(\"set_log_level=error\", \"*\");\r\n }\r\n }\r\n }\r\n\r\n function set_constantValues() {\r\n cadesplugin.CAPICOM_MEMORY_STORE = 0;\r\n cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_MEMORY_STORE = 0;\r\n cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_CONTAINER_STORE = 100;\r\n\r\n cadesplugin.CAPICOM_ROOT_STORE = \"Root\";\r\n cadesplugin.CAPICOM_CA_STORE = \"CA\";\r\n cadesplugin.CAPICOM_MY_STORE = \"My\";\r\n cadesplugin.CAPICOM_ADDRESSBOOK_STORE = \"AddressBook\";\r\n\r\n cadesplugin.CAPICOM_STORE_OPEN_READ_WRITE = 1;\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\r\n cadesplugin.CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\r\n\r\n cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010;\r\n cadesplugin.CADESCOM_XADES_BES = 0x00000020;\r\n cadesplugin.CADESCOM_XADES_T = 0x00000050;\r\n cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0;\r\n cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000;\r\n\r\n cadesplugin.XmlDsigGost3410UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr3411\";\r\n cadesplugin.XmlDsigGost3410Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411\";\r\n\r\n cadesplugin.XmlDsigGost3411Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3410Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3411Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512\";\r\n cadesplugin.XmlDsigGost3410Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512\";\r\n\r\n cadesplugin.CADESCOM_CADES_DEFAULT = 0;\r\n cadesplugin.CADESCOM_CADES_BES = 1;\r\n cadesplugin.CADESCOM_CADES_T = 0x5;\r\n cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\r\n cadesplugin.CADESCOM_CADES_A = 0xdd;\r\n cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff;\r\n\r\n cadesplugin.CADESCOM_ENCODE_BASE64 = 0;\r\n cadesplugin.CADESCOM_ENCODE_BINARY = 1;\r\n cadesplugin.CADESCOM_ENCODE_ANY = -1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_NONE = 0x100;\r\n\r\n cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\r\n cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\r\n\r\n cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\r\n\r\n cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9;\r\n\r\n cadesplugin.CAPICOM_OID_OTHER = 0;\r\n cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\r\n\r\n cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2;\r\n cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5;\r\n cadesplugin.CAPICOM_EKU_OTHER = 0;\r\n\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100;\r\n cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1;\r\n\r\n cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0;\r\n cadesplugin.CADESCOM_BASE64_TO_BINARY = 1;\r\n\r\n cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\r\n\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA = 35;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA_OMAC = 36;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK = 45;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK_OMAC = 46;\r\n\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\r\n\r\n cadesplugin.CADESCOM_CERT_INFO_ROLE = 100;\r\n cadesplugin.CADESCOM_ROLE_ROOT = \"ROOT\";\r\n cadesplugin.CADESCOM_ROLE_CA = \"CA\";\r\n cadesplugin.CADESCOM_ROLE_LEAF = \"LEAF\";\r\n\r\n cadesplugin.LOG_LEVEL_DEBUG = 4;\r\n cadesplugin.LOG_LEVEL_INFO = 2;\r\n cadesplugin.LOG_LEVEL_ERROR = 1;\r\n\r\n cadesplugin.CADESCOM_AllowNone = 0;\r\n cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1;\r\n cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2;\r\n cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4;\r\n cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000;\r\n cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000;\r\n cadesplugin.CADESCOM_UseContainerStore = 0x40000000;\r\n\r\n cadesplugin.ContextNone = 0;\r\n cadesplugin.ContextUser = 0x1;\r\n cadesplugin.ContextMachine = 0x2;\r\n cadesplugin.ContextAdministratorForceMachine = 0x3;\r\n\r\n cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04;\r\n cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07;\r\n\r\n cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00;\r\n cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01;\r\n cadesplugin.ENABLE_CARRIER_CREATE = 0x02;\r\n cadesplugin.ENABLE_ANY_OPERATION = 0x03;\r\n\r\n cadesplugin.CADESCOM_PRODUCT_CSP = 0;\r\n cadesplugin.CADESCOM_PRODUCT_OCSP = 1;\r\n cadesplugin.CADESCOM_PRODUCT_TSP = 2;\r\n\r\n cadesplugin.MEDIA_TYPE_DEFAULT = 0x00000000;\r\n cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001;\r\n cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002;\r\n cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004;\r\n cadesplugin.MEDIA_TYPE_SCARD = 0x00000008;\r\n\r\n cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64 = 0x1;\r\n cadesplugin.XCN_CRYPT_STRING_BINARY = 0x2;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64REQUESTHEADER = 0x3;\r\n cadesplugin.XCN_CRYPT_STRING_HEX = 0x4;\r\n cadesplugin.XCN_CRYPT_STRING_HEXASCII = 0x5;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64_ANY = 0x6;\r\n cadesplugin.XCN_CRYPT_STRING_ANY = 0x7;\r\n cadesplugin.XCN_CRYPT_STRING_HEX_ANY = 0x8;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64X509CRLHEADER = 0x9;\r\n cadesplugin.XCN_CRYPT_STRING_HEXADDR = 0xa;\r\n cadesplugin.XCN_CRYPT_STRING_HEXASCIIADDR = 0xb;\r\n cadesplugin.XCN_CRYPT_STRING_HEXRAW = 0xc;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64URI = 0xd;\r\n cadesplugin.XCN_CRYPT_STRING_ENCODEMASK = 0xff;\r\n cadesplugin.XCN_CRYPT_STRING_CHAIN = 0x100;\r\n cadesplugin.XCN_CRYPT_STRING_TEXT = 0x200;\r\n cadesplugin.XCN_CRYPT_STRING_PERCENTESCAPE = 0x8000000;\r\n cadesplugin.XCN_CRYPT_STRING_HASHDATA = 0x10000000;\r\n cadesplugin.XCN_CRYPT_STRING_STRICT = 0x20000000;\r\n cadesplugin.XCN_CRYPT_STRING_NOCRLF = 0x40000000;\r\n cadesplugin.XCN_CRYPT_STRING_NOCR = 0x80000000;\r\n\r\n cadesplugin.XCN_CERT_NAME_STR_NONE = 0;\r\n cadesplugin.XCN_AT_NONE = 0;\r\n cadesplugin.XCN_AT_KEYEXCHANGE = 1;\r\n cadesplugin.XCN_AT_SIGNATURE = 2;\r\n\r\n cadesplugin.AT_KEYEXCHANGE = 1;\r\n cadesplugin.AT_SIGNATURE = 2;\r\n\r\n cadesplugin.CARRIER_FLAG_REMOVABLE = 1;\r\n cadesplugin.CARRIER_FLAG_UNIQUE = 2;\r\n cadesplugin.CARRIER_FLAG_PROTECTED = 4;\r\n cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER = 8;\r\n cadesplugin.CARRIER_FLAG_SECURE_MESSAGING = 16;\r\n cadesplugin.CARRIER_FLAG_ABLE_SET_KEY = 32;\r\n cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE = 64;\r\n cadesplugin.CARRIER_FLAG_VIRTUAL = 128;\r\n\r\n cadesplugin.CRYPT_MODE_CBCSTRICT = 1;\r\n cadesplugin.CRYPT_MODE_CNT = 3;\r\n cadesplugin.CRYPT_MODE_CBCRFC4357 = 31;\r\n cadesplugin.CRYPT_MODE_CTR = 32;\r\n cadesplugin.CRYPT_MODE_MGM = 33;\r\n cadesplugin.CRYPT_MODE_GCM = 34;\r\n cadesplugin.CRYPT_MODE_OMAC_CTR = 35;\r\n cadesplugin.CRYPT_MODE_WRAP = 36;\r\n cadesplugin.CRYPT_MODE_WRAP_PAD = 37;\r\n\r\n cadesplugin.PKCS5_PADDING = 1;\r\n cadesplugin.RANDOM_PADDING = 2;\r\n cadesplugin.ZERO_PADDING = 3;\r\n cadesplugin.ISO10126_PADDING = 4;\r\n cadesplugin.ANSI_X923_PADDING = 5;\r\n cadesplugin.TLS_1_0_PADDING = 6;\r\n cadesplugin.ISO_IEC_7816_4_PADDING = 7;\r\n\r\n cadesplugin.CAPICOM_STORE_SAVE_AS_SERIALIZED = 0;\r\n cadesplugin.CAPICOM_STORE_SAVE_AS_PKCS7 = 1;\r\n\r\n cadesplugin.CERT_TRUST_NO_ERROR = 0x00000000;\r\n cadesplugin.CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001;\r\n cadesplugin.CERT_TRUST_IS_REVOKED = 0x00000004;\r\n cadesplugin.CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008;\r\n cadesplugin.CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010;\r\n cadesplugin.CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020;\r\n cadesplugin.CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040;\r\n cadesplugin.CERT_TRUST_IS_CYCLIC = 0x00000080;\r\n cadesplugin.CERT_TRUST_INVALID_EXTENSION = 0x00000100;\r\n cadesplugin.CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200;\r\n cadesplugin.CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400;\r\n cadesplugin.CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800;\r\n cadesplugin.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000;\r\n cadesplugin.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000;\r\n cadesplugin.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000;\r\n cadesplugin.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000;\r\n cadesplugin.CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000;\r\n cadesplugin.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000;\r\n cadesplugin.CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000;\r\n cadesplugin.CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000;\r\n cadesplugin.CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000;\r\n\r\n cadesplugin.XCN_CERT_NO_KEY_USAGE = 0;\r\n cadesplugin.XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE = 0x80;\r\n cadesplugin.XCN_CERT_NON_REPUDIATION_KEY_USAGE = 0x40;\r\n cadesplugin.XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE = 0x20;\r\n cadesplugin.XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE = 0x10;\r\n cadesplugin.XCN_CERT_KEY_AGREEMENT_KEY_USAGE = 0x8;\r\n cadesplugin.XCN_CERT_KEY_CERT_SIGN_KEY_USAGE = 0x4;\r\n cadesplugin.XCN_CERT_OFFLINE_CRL_SIGN_KEY_USAGE = 0x2;\r\n cadesplugin.XCN_CERT_CRL_SIGN_KEY_USAGE = 0x2;\r\n cadesplugin.XCN_CERT_ENCIPHER_ONLY_KEY_USAGE = 0x1;\r\n cadesplugin.XCN_CERT_DECIPHER_ONLY_KEY_USAGE = 0x8000;\r\n\r\n cadesplugin.CADESCOM_XADES_ACCEPT_ANY_ID_ATTR_NAMESPACE = 1;\r\n cadesplugin.CADES_USE_OCSP_AUTHORIZED_POLICY = 0x00020000;\r\n\r\n cadesplugin.XCN_NCRYPT_NO_OPERATION = 0;\r\n cadesplugin.XCN_NCRYPT_CIPHER_OPERATION = 0x1;\r\n cadesplugin.XCN_NCRYPT_HASH_OPERATION = 0x2;\r\n cadesplugin.XCN_NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION = 0x4;\r\n cadesplugin.XCN_NCRYPT_SECRET_AGREEMENT_OPERATION = 0x8;\r\n cadesplugin.XCN_NCRYPT_SIGNATURE_OPERATION = 0x10;\r\n cadesplugin.XCN_NCRYPT_RNG_OPERATION = 0x20;\r\n\r\n cadesplugin.XCN_CRYPT_ANY_GROUP_ID = 0;\r\n cadesplugin.XCN_CRYPT_HASH_ALG_OID_GROUP_ID = 1;\r\n cadesplugin.XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID = 2;\r\n cadesplugin.XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID = 3;\r\n cadesplugin.XCN_CRYPT_SIGN_ALG_OID_GROUP_ID = 4;\r\n cadesplugin.XCN_CRYPT_RDN_ATTR_OID_GROUP_ID = 5;\r\n cadesplugin.XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID = 6;\r\n cadesplugin.XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID = 7;\r\n cadesplugin.XCN_CRYPT_POLICY_OID_GROUP_ID = 8;\r\n cadesplugin.XCN_CRYPT_TEMPLATE_OID_GROUP_ID = 9;\r\n\r\n cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_ANY = 0;\r\n cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG = 0x80000000;\r\n cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG = 0x40000000;\r\n\r\n cadesplugin.CONTROL_KEY_TIME_VALIDITY_DISABLED = 0;\r\n cadesplugin.CONTROL_KEY_TIME_VALIDITY_ENABLED = 1;\r\n cadesplugin.CONTROL_KEY_TIME_VALIDITY_STRICT = 2;\r\n\r\n cadesplugin.AlgorithmFlagsNone = 0;\r\n cadesplugin.AlgorithmFlagsWrap = 0x1;\r\n }\r\n\r\n function async_spawn(generatorFunc) {\r\n function continuer(verb, arg) {\r\n var result;\r\n try {\r\n result = generator[verb](arg);\r\n } catch (err) {\r\n return window.Promise.reject(err);\r\n }\r\n if (result.done) {\r\n return result.value;\r\n } else {\r\n return window.Promise.resolve(result.value).then(onFulfilled, onRejected);\r\n }\r\n }\r\n var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));\r\n var onFulfilled = continuer.bind(continuer, \"next\");\r\n var onRejected = continuer.bind(continuer, \"throw\");\r\n return onFulfilled();\r\n }\r\n\r\n function isIE() {\r\n // var retVal = ((\"Microsoft Internet Explorer\" == navigator.appName) || // IE < 11\r\n // navigator.userAgent.match(/Trident\\/./i)); // IE 11\r\n return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE');\r\n }\r\n\r\n function isIOS() {\r\n return (window.navigator.userAgent.match(/ipod/i) ||\r\n window.navigator.userAgent.match(/ipad/i) ||\r\n window.navigator.userAgent.match(/iphone/i));\r\n }\r\n\r\n function isNativeMessageSupported() {\r\n // В IE работаем через NPAPI\r\n if (isIE()) {\r\n return false;\r\n }\r\n // В Edge работаем через NativeMessage\r\n if (browserSpecs.name === 'Edg') {\r\n return true;\r\n }\r\n if (browserSpecs.name === 'YaBrowser') {\r\n isYandex = true;\r\n return true;\r\n }\r\n // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии\r\n if (browserSpecs.name === 'Opera') {\r\n isOpera = true;\r\n return (browserSpecs.version >= 33);\r\n }\r\n if (browserSpecs.name === 'Firefox') {\r\n isFireFox = true;\r\n return (browserSpecs.version >= 52);\r\n }\r\n if (browserSpecs.name === 'Chrome') {\r\n return (browserSpecs.version >= 42);\r\n }\r\n //В Сафари начиная с 12 версии нет NPAPI\r\n if (browserSpecs.name === 'Safari') {\r\n isSafari = true;\r\n return (browserSpecs.version >= 12);\r\n }\r\n }\r\n\r\n // Функция активации объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObject(name) {\r\n if (isIOS()) {\r\n // На iOS для создания объектов используется функция\r\n // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js\r\n return call_ru_cryptopro_npcades_10_native_bridge(\"CreateObject\", [name]);\r\n }\r\n var objWebClassFactory;\r\n if (isIE()) {\r\n // В Internet Explorer создаются COM-объекты\r\n if (name.match(/X509Enrollment/i)) {\r\n try {\r\n // Объекты CertEnroll пробуем создавать через нашу фабрику,\r\n // если не получилось то через CX509EnrollmentWebClassFactory\r\n objWebClassFactory = document.getElementById(\"webClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n try {\r\n var objCertEnrollClassFactory = document.getElementById(\"certEnrollClassFactory\");\r\n return objCertEnrollClassFactory.CreateObject(name);\r\n }\r\n catch (err) {\r\n throw (\"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS\");\r\n }\r\n }\r\n }\r\n // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory\r\n try {\r\n objWebClassFactory = document.getElementById(\"webClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n } catch (e) {\r\n // Для версий плагина ниже 2.0.12538\r\n return new window.ActiveXObject(name);\r\n }\r\n }\r\n // создаются объекты NPAPI\r\n return pluginObject.CreateObject(name);\r\n }\r\n\r\n function decimalToHexString(number) {\r\n if (number < 0) {\r\n number = 0xFFFFFFFF + number + 1;\r\n }\r\n\r\n return number.toString(16).toUpperCase();\r\n }\r\n\r\n function GetMessageFromException(e) {\r\n var err = e.message;\r\n if (!err) {\r\n err = e;\r\n } else if (e.number) {\r\n err += \" (0x\" + decimalToHexString(e.number) + \")\";\r\n }\r\n return err;\r\n }\r\n\r\n function getLastError(exception) {\r\n if (isNativeMessageSupported() || isIE() || isIOS()) {\r\n return GetMessageFromException(exception);\r\n }\r\n\r\n try {\r\n return pluginObject.getLastError();\r\n } catch (e) {\r\n return GetMessageFromException(exception);\r\n }\r\n }\r\n\r\n // Функция для удаления созданных объектов\r\n function ReleasePluginObjects() {\r\n // noinspection JSUnresolvedVariable\r\n return cpcsp_chrome_nmcades.ReleasePluginObjects();\r\n }\r\n\r\n // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObjectAsync(name) {\r\n return pluginObject.CreateObjectAsync(name);\r\n }\r\n\r\n // Функции для IOS\r\n // noinspection JSUnusedGlobalSymbols\r\n var ru_cryptopro_npcades_10_native_bridge = {\r\n callbacksCount: 1,\r\n callbacks: {},\r\n\r\n // Automatically called by native layer when a result is available\r\n resultForCallback: function resultForCallback(callbackId, resultArray) {\r\n var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId];\r\n if (!callback) {\r\n return;\r\n }\r\n callback.apply(null, resultArray);\r\n },\r\n\r\n // Use this in javascript to request native objective-c code\r\n // functionName : string (I think the name is explicit :p)\r\n // args : array of arguments\r\n // callback : function with n-arguments that is going to be called when the native code returned\r\n call: function call(functionName, args, callback) {\r\n var hasCallback = callback && typeof callback === \"function\";\r\n var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0;\r\n\r\n if (hasCallback) {\r\n ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback;\r\n }\r\n\r\n var iframe = document.createElement(\"IFRAME\");\r\n var arrObjs = new Array(\"_CPNP_handle\");\r\n try {\r\n iframe.setAttribute(\"src\", \"cpnp-js-call:\" + functionName + \":\" + callbackId + \":\" + encodeURIComponent(window.JSON.stringify(args, arrObjs)));\r\n } catch (e) {\r\n window.alert(e);\r\n }\r\n document.documentElement.appendChild(iframe);\r\n iframe.parentNode.removeChild(iframe);\r\n iframe = null;\r\n }\r\n };\r\n\r\n function call_ru_cryptopro_npcades_10_native_bridge(functionName, array) {\r\n var tmpobj;\r\n var ex;\r\n ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function (e, response) {\r\n ex = e;\r\n var tmpobj = \"\";\r\n try {\r\n tmpobj = window.JSON.parse(response);\r\n }\r\n catch (err) {\r\n tmpobj = response;\r\n }\r\n if (typeof tmpobj === \"string\") {\r\n tmpobj = tmpobj.replace(/\\\\\\n/gm, \"\\n\");\r\n tmpobj = tmpobj.replace(/\\\\\\r/gm, \"\\r\");\r\n }\r\n });\r\n if (ex) {\r\n throw ex;\r\n }\r\n return tmpobj;\r\n }\r\n\r\n function show_firefox_missing_extension_dialog() {\r\n if (!window.cadesplugin_skip_extension_install) {\r\n var ovr = document.createElement('div');\r\n ovr.id = \"cadesplugin_ovr\";\r\n ovr.style = \"visibility: hidden; position: fixed; left: 0; top: 0; width:100%; height:100%; background-color: rgba(0,0,0,0.7)\";\r\n ovr.innerHTML = \"
\" +\r\n \"\" +\r\n \"

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.\" +\r\n \"

Скачать расширение

\" +\r\n \"
\";\r\n document.getElementsByTagName(\"Body\")[0].appendChild(ovr);\r\n document.getElementById(\"cadesplugin_close_install\").addEventListener('click', function () {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n\r\n ovr.addEventListener('click', function () {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n ovr.style.visibility = \"visible\";\r\n }\r\n }\r\n\r\n function firefox_or_safari_nmcades_onload() {\r\n // noinspection JSUnresolvedVariable\r\n if (window.cadesplugin_extension_loaded_callback) {\r\n window.cadesplugin_extension_loaded_callback();\r\n }\r\n isFireFoxExtensionLoaded = true;\r\n // noinspection JSUnresolvedVariable,JSUnresolvedFunction\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n\r\n function load_js_script(url, successFunc, errorFunc) {\r\n var script = document.createElement(\"script\");\r\n script.setAttribute(\"type\", \"text/javascript\");\r\n script.setAttribute(\"src\", url);\r\n script.onerror = errorFunc;\r\n script.onload = successFunc;\r\n document.getElementsByTagName(\"head\")[0].appendChild(script);\r\n }\r\n\r\n function nmcades_api_onload() {\r\n if (!isIE() && !isFireFox && !isSafari) {\r\n // noinspection JSUnresolvedVariable\r\n if (window.cadesplugin_extension_loaded_callback) {\r\n window.cadesplugin_extension_loaded_callback();\r\n }\r\n }\r\n window.postMessage(\"cadesplugin_echo_request\", \"*\");\r\n window.addEventListener(\"message\", function (event) {\r\n if (typeof (event.data) !== \"string\" || !event.data.match(\"cadesplugin_loaded\")) {\r\n return;\r\n }\r\n if (cadesplugin_loaded_event_recieved) {\r\n return;\r\n }\r\n if (isFireFox || isSafari) {\r\n // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js\r\n var url = event.data.substring(event.data.indexOf(\"url:\") + 4);\r\n if (!url.match(\"^(moz|safari)-extension://[a-zA-Z0-9/_-]+/nmcades_plugin_api.js$\")) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"Bad url \\\"\" + url + \"\\\" for load CryptoPro Extension for CAdES Browser plug-in\");\r\n plugin_loaded_error();\r\n return;\r\n }\r\n load_js_script(url, firefox_or_safari_nmcades_onload, plugin_loaded_error);\r\n } else {\r\n // noinspection JSUnresolvedVariable,JSUnresolvedFunction\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n cadesplugin_loaded_event_recieved = true;\r\n }, false);\r\n }\r\n\r\n // Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari\r\n function load_extension() {\r\n if (isFireFox || isSafari) {\r\n // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера.\r\n nmcades_api_onload();\r\n return;\r\n }\r\n var operaUrl = \"chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js\";\r\n var manifestv2Url = \"chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js\";\r\n var manifestv3Url = \"chrome-extension://pfhgbfnnjiafkhfdkmpiflachepdcjod/nmcades_plugin_api.js\";\r\n if (isYandex || isOpera) {\r\n // в асинхронном варианте для Yandex пробуем подключить расширения по очереди\r\n load_js_script(operaUrl, nmcades_api_onload, function () {\r\n load_js_script(manifestv2Url, nmcades_api_onload, function () {\r\n load_js_script(manifestv3Url, nmcades_api_onload, plugin_loaded_error);\r\n });\r\n });\r\n return;\r\n }\r\n // для Chrome, Chromium, Chromium Edge расширение из Chrome store\r\n load_js_script(manifestv2Url, nmcades_api_onload, function () {\r\n load_js_script(manifestv3Url, nmcades_api_onload, plugin_loaded_error);\r\n });\r\n }\r\n\r\n //Загружаем плагин для NPAPI\r\n function load_npapi_plugin() {\r\n var elem = document.createElement('object');\r\n elem.setAttribute(\"id\", \"cadesplugin_object\");\r\n elem.setAttribute(\"type\", \"application/x-cades\");\r\n elem.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem);\r\n pluginObject = document.getElementById(\"cadesplugin_object\");\r\n if (isIE()) {\r\n var elem1 = document.createElement('object');\r\n elem1.setAttribute(\"id\", \"certEnrollClassFactory\");\r\n elem1.setAttribute(\"classid\", \"clsid:884e2049-217d-11da-b2a4-000e7bbb2b09\");\r\n elem1.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem1);\r\n var elem2 = document.createElement('object');\r\n elem2.setAttribute(\"id\", \"webClassFactory\");\r\n elem2.setAttribute(\"classid\", \"clsid:B04C8637-10BD-484E-B0DA-B8A039F60024\");\r\n elem2.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem2);\r\n }\r\n }\r\n\r\n //Отправляем событие что все ок.\r\n function plugin_loaded() {\r\n plugin_resolved = 1;\r\n if (canPromise) {\r\n plugin_resolve();\r\n } else {\r\n window.postMessage(\"cadesplugin_loaded\", \"*\");\r\n }\r\n }\r\n\r\n //Отправляем событие что сломались.\r\n function plugin_loaded_error(msg) {\r\n if (typeof (msg) === 'undefined' || typeof (msg) === 'object') {\r\n msg = \"Плагин недоступен\";\r\n }\r\n plugin_resolved = 1;\r\n if (canPromise) {\r\n plugin_reject(msg);\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n }\r\n\r\n //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку\r\n function check_load_timeout() {\r\n if (plugin_resolved === 1) {\r\n return;\r\n }\r\n if (isFireFox && !isFireFoxExtensionLoaded) {\r\n show_firefox_missing_extension_dialog();\r\n }\r\n plugin_resolved = 1;\r\n if (canPromise) {\r\n plugin_reject(\"Истекло время ожидания загрузки плагина\");\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n }\r\n\r\n function check_npapi_plugin() {\r\n try {\r\n CreateObject(\"CAdESCOM.About\");\r\n plugin_loaded();\r\n } catch (err) {\r\n document.getElementById(\"cadesplugin_object\").style.display = 'none';\r\n // Объект создать не удалось, проверим, установлен ли\r\n // вообще плагин. Такая возможность есть не во всех браузерах\r\n // noinspection JSDeprecatedSymbols\r\n var mimetype = window.navigator.mimeTypes[\"application/x-cades\"];\r\n if (mimetype) {\r\n // noinspection JSDeprecatedSymbols\r\n var plugin = mimetype.enabledPlugin;\r\n if (plugin) {\r\n plugin_loaded_error(\"Плагин загружен, но не создаются обьекты\");\r\n } else {\r\n plugin_loaded_error(\"Ошибка при загрузке плагина\");\r\n }\r\n } else {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n }\r\n }\r\n }\r\n\r\n // Проверяем работает ли плагин\r\n function check_plugin_working() {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = \"\";\r\n var isIeLessThan9 = (div.getElementsByTagName(\"i\").length === 1);\r\n if (isIeLessThan9) {\r\n plugin_loaded_error(\"Internet Explorer версии 8 и ниже не поддерживается\");\r\n return;\r\n }\r\n\r\n if (isNativeMessageSupported()) {\r\n load_extension();\r\n } else if (!canPromise) {\r\n window.addEventListener(\"message\", function (event) {\r\n if (event.data !== \"cadesplugin_echo_request\") {\r\n return;\r\n }\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n }, false);\r\n } else {\r\n if (document.readyState === \"complete\") {\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n } else {\r\n window.addEventListener(\"load\", function (event) {\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n }, false);\r\n }\r\n }\r\n }\r\n\r\n function set_pluginObject(obj) {\r\n pluginObject = obj;\r\n }\r\n\r\n function is_capilite_enabled() {\r\n // noinspection JSUnresolvedVariable\r\n return ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP);\r\n }\r\n\r\n function set_load_timeout() {\r\n // noinspection JSUnresolvedVariable\r\n if (window.cadesplugin_load_timeout) {\r\n window.setTimeout(check_load_timeout, window.cadesplugin_load_timeout);\r\n } else {\r\n window.setTimeout(check_load_timeout, 20000);\r\n }\r\n }\r\n\r\n // noinspection JSUnusedLocalSymbols\r\n var onVisibilityChange = function (event) {\r\n if (document.hidden === false) {\r\n document.removeEventListener(\"visibilitychange\", onVisibilityChange);\r\n set_load_timeout();\r\n check_plugin_working();\r\n }\r\n };\r\n\r\n //Export\r\n cadesplugin.JSModuleVersion = \"2.4.2\";\r\n cadesplugin.async_spawn = async_spawn;\r\n cadesplugin.set = set_pluginObject;\r\n cadesplugin.set_log_level = set_log_level;\r\n cadesplugin.get_extension_version = get_extension_version;\r\n cadesplugin.get_extension_id = get_extension_id;\r\n cadesplugin.getLastError = getLastError;\r\n cadesplugin.is_capilite_enabled = is_capilite_enabled;\r\n\r\n if (isNativeMessageSupported()) {\r\n cadesplugin.CreateObjectAsync = CreateObjectAsync;\r\n cadesplugin.ReleasePluginObjects = ReleasePluginObjects;\r\n }\r\n\r\n if (!isNativeMessageSupported()) {\r\n cadesplugin.CreateObject = CreateObject;\r\n }\r\n\r\n set_constantValues();\r\n\r\n cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR;\r\n window.cadesplugin = cadesplugin;\r\n if (isSafari && document.hidden) {\r\n document.addEventListener(\"visibilitychange\", onVisibilityChange);\r\n return;\r\n }\r\n set_load_timeout();\r\n check_plugin_working();\r\n}());\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/crypto-pro-js-m.min.js b/dist/crypto-pro-js-m.min.js index 885844d..c60c5c9 100644 --- a/dist/crypto-pro-js-m.min.js +++ b/dist/crypto-pro-js-m.min.js @@ -1,11 +1,11 @@ -!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define("cryptoPro",[],r):"object"==typeof exports?exports.cryptoPro=r():e.cryptoPro=r()}(window,(function(){return function(e){var r={};function t(n){if(r[n])return r[n].exports;var _=r[n]={i:n,l:!1,exports:{}};return e[n].call(_.exports,_,_.exports,t),_.l=!0,_.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var _ in e)t.d(n,_,function(r){return e[r]}.bind(null,_));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=18)}([function(e,r,t){"use strict";var n=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},_=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(r,"__esModule",{value:!0}),r._afterPluginsLoaded=void 0;var a=t(1),s=!1,o=!1;r._afterPluginsLoaded=function(e){var r=Boolean(window.Promise);return function(){for(var i=[],c=0;c0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(r,"__esModule",{value:!0}),r._getCadesCert=void 0;var a=t(0),s=t(39),o=t(40);r._getCadesCert=a._afterPluginsLoaded((function(e){return n(void 0,void 0,void 0,(function(){var r,t;return _(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,4]),[4,s._getCadesUserCert(e)];case 1:return r=n.sent(),[3,4];case 2:return t=n.sent(),console.log(t),[4,o._getCadesContainerCert(e)];case 3:return r=n.sent(),[3,4];case 4:return[2,r]}}))}))}))},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r._extractCommonName=void 0,r._extractCommonName=function(e){var r,t;return null===(t=null===(r=e.match(/CN="?(.+?)"?(?:,|$)/))||void 0===r?void 0:r[1])||void 0===t?void 0:t.replace(/"{2}/g,'"')}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r._getDateObj=void 0,r._getDateObj=function(e){return e.getVarDate?e.getVarDate():e}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.getSignType=void 0,r.getSignType=function(e,r){switch(r){case"CAdES BES":return e.CADESCOM_CADES_BES;case"CAdES-X Long Type 1":return e.CADESCOM_CADES_X_LONG_TYPE_1;case"CAdES T":return e.CADESCOM_CADES_T;case"PKCS7":return e.CADESCOM_PKCS7_TYPE}}},function(e,r,t){"use strict";(function(e){ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("cryptoPro",[],t):"object"==typeof exports?exports.cryptoPro=t():e.cryptoPro=t()}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var _=t[n]={i:n,l:!1,exports:{}};return e[n].call(_.exports,_,_.exports,r),_.l=!0,_.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var _ in e)r.d(n,_,function(t){return e[t]}.bind(null,_));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=18)}([function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},_=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(t,"__esModule",{value:!0}),t._afterPluginsLoaded=void 0;var a=r(1),o=!1,s=!1;t._afterPluginsLoaded=function(e){var t=Boolean(window.Promise);return function(){for(var i=[],c=0;c0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(t,"__esModule",{value:!0}),t._getCadesCert=void 0;var a=r(0),o=r(39),s=r(40);t._getCadesCert=a._afterPluginsLoaded((function(e){return n(void 0,void 0,void 0,(function(){var t,r;return _(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,4]),[4,o._getCadesUserCert(e)];case 1:return t=n.sent(),[3,4];case 2:return r=n.sent(),console.log(r),[4,s._getCadesContainerCert(e)];case 3:return t=n.sent(),[3,4];case 4:return[2,t]}}))}))}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t._extractCommonName=void 0,t._extractCommonName=function(e){var t,r;return null===(r=null===(t=e.match(/CN="?(.+?)"?(?:,|$)/))||void 0===t?void 0:t[1])||void 0===r?void 0:r.replace(/"{2}/g,'"')}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t._getDateObj=void 0,t._getDateObj=function(e){return e.getVarDate?e.getVarDate():e}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getSignType=void 0,t.getSignType=function(e,t){switch(t){case"CAdES BES":return e.CADESCOM_CADES_BES;case"CAdES-X Long Type 1":return e.CADESCOM_CADES_X_LONG_TYPE_1;case"CAdES T":return e.CADESCOM_CADES_T;case"PKCS7":return e.CADESCOM_PKCS7_TYPE}}},function(e,t,r){"use strict";(function(e){ /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ -var n=t(45),_=t(46),a=t(47);function s(){return i.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function o(e,r){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function g(e,r){if(i.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var t=e.length;if(0===t)return 0;for(var n=!1;;)switch(r){case"ascii":case"latin1":case"binary":return t;case"utf8":case"utf-8":case void 0:return G(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*t;case"hex":return t>>>1;case"base64":return B(e).length;default:if(n)return G(e).length;r=(""+r).toLowerCase(),n=!0}}function E(e,r,t){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return"";if((void 0===t||t>this.length)&&(t=this.length),t<=0)return"";if((t>>>=0)<=(r>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return b(this,r,t);case"utf8":case"utf-8":return P(this,r,t);case"ascii":return R(this,r,t);case"latin1":case"binary":return w(this,r,t);case"base64":return y(this,r,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return v(this,r,t);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function f(e,r,t){var n=e[r];e[r]=e[t],e[t]=n}function p(e,r,t,n,_){if(0===e.length)return-1;if("string"==typeof t?(n=t,t=0):t>2147483647?t=2147483647:t<-2147483648&&(t=-2147483648),t=+t,isNaN(t)&&(t=_?0:e.length-1),t<0&&(t=e.length+t),t>=e.length){if(_)return-1;t=e.length-1}else if(t<0){if(!_)return-1;t=0}if("string"==typeof r&&(r=i.from(r,n)),i.isBuffer(r))return 0===r.length?-1:A(e,r,t,n,_);if("number"==typeof r)return r&=255,i.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?_?Uint8Array.prototype.indexOf.call(e,r,t):Uint8Array.prototype.lastIndexOf.call(e,r,t):A(e,[r],t,n,_);throw new TypeError("val must be string, number or Buffer")}function A(e,r,t,n,_){var a,s=1,o=e.length,i=r.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||r.length<2)return-1;s=2,o/=2,i/=2,t/=2}function c(e,r){return 1===s?e[r]:e.readUInt16BE(r*s)}if(_){var u=-1;for(a=t;ao&&(t=o-i),a=t;a>=0;a--){for(var l=!0,d=0;d_&&(n=_):n=_;var a=r.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var s=0;s>8,_=t%256,a.push(_),a.push(n);return a}(r,e.length-t),e,t,n)}function y(e,r,t){return 0===r&&t===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(r,t))}function P(e,r,t){t=Math.min(e.length,t);for(var n=[],_=r;_239?4:c>223?3:c>191?2:1;if(_+l<=t)switch(l){case 1:c<128&&(u=c);break;case 2:128==(192&(a=e[_+1]))&&(i=(31&c)<<6|63&a)>127&&(u=i);break;case 3:a=e[_+1],s=e[_+2],128==(192&a)&&128==(192&s)&&(i=(15&c)<<12|(63&a)<<6|63&s)>2047&&(i<55296||i>57343)&&(u=i);break;case 4:a=e[_+1],s=e[_+2],o=e[_+3],128==(192&a)&&128==(192&s)&&128==(192&o)&&(i=(15&c)<<18|(63&a)<<12|(63&s)<<6|63&o)>65535&&i<1114112&&(u=i)}null===u?(u=65533,l=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),_+=l}return function(e){var r=e.length;if(r<=4096)return String.fromCharCode.apply(String,e);var t="",n=0;for(;n0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},i.prototype.compare=function(e,r,t,n,_){if(!i.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===r&&(r=0),void 0===t&&(t=e?e.length:0),void 0===n&&(n=0),void 0===_&&(_=this.length),r<0||t>e.length||n<0||_>this.length)throw new RangeError("out of range index");if(n>=_&&r>=t)return 0;if(n>=_)return-1;if(r>=t)return 1;if(this===e)return 0;for(var a=(_>>>=0)-(n>>>=0),s=(t>>>=0)-(r>>>=0),o=Math.min(a,s),c=this.slice(n,_),u=e.slice(r,t),l=0;l_)&&(t=_),e.length>0&&(t<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return O(this,e,r,t);case"utf8":case"utf-8":return T(this,e,r,t);case"ascii":return h(this,e,r,t);case"latin1":case"binary":return I(this,e,r,t);case"base64":return M(this,e,r,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,r,t);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function R(e,r,t){var n="";t=Math.min(e.length,t);for(var _=r;_n)&&(t=n);for(var _="",a=r;at)throw new RangeError("Trying to access beyond buffer length")}function N(e,r,t,n,_,a){if(!i.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>_||re.length)throw new RangeError("Index out of range")}function m(e,r,t,n){r<0&&(r=65535+r+1);for(var _=0,a=Math.min(e.length-t,2);_>>8*(n?_:1-_)}function L(e,r,t,n){r<0&&(r=4294967295+r+1);for(var _=0,a=Math.min(e.length-t,4);_>>8*(n?_:3-_)&255}function F(e,r,t,n,_,a){if(t+n>e.length)throw new RangeError("Index out of range");if(t<0)throw new RangeError("Index out of range")}function x(e,r,t,n,a){return a||F(e,0,t,4),_.write(e,r,t,n,23,4),t+4}function U(e,r,t,n,a){return a||F(e,0,t,8),_.write(e,r,t,n,52,8),t+8}i.prototype.slice=function(e,r){var t,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(r=void 0===r?n:~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),r0&&(_*=256);)n+=this[e+--r]*_;return n},i.prototype.readUInt8=function(e,r){return r||D(e,1,this.length),this[e]},i.prototype.readUInt16LE=function(e,r){return r||D(e,2,this.length),this[e]|this[e+1]<<8},i.prototype.readUInt16BE=function(e,r){return r||D(e,2,this.length),this[e]<<8|this[e+1]},i.prototype.readUInt32LE=function(e,r){return r||D(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},i.prototype.readUInt32BE=function(e,r){return r||D(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},i.prototype.readIntLE=function(e,r,t){e|=0,r|=0,t||D(e,r,this.length);for(var n=this[e],_=1,a=0;++a=(_*=128)&&(n-=Math.pow(2,8*r)),n},i.prototype.readIntBE=function(e,r,t){e|=0,r|=0,t||D(e,r,this.length);for(var n=r,_=1,a=this[e+--n];n>0&&(_*=256);)a+=this[e+--n]*_;return a>=(_*=128)&&(a-=Math.pow(2,8*r)),a},i.prototype.readInt8=function(e,r){return r||D(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},i.prototype.readInt16LE=function(e,r){r||D(e,2,this.length);var t=this[e]|this[e+1]<<8;return 32768&t?4294901760|t:t},i.prototype.readInt16BE=function(e,r){r||D(e,2,this.length);var t=this[e+1]|this[e]<<8;return 32768&t?4294901760|t:t},i.prototype.readInt32LE=function(e,r){return r||D(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},i.prototype.readInt32BE=function(e,r){return r||D(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},i.prototype.readFloatLE=function(e,r){return r||D(e,4,this.length),_.read(this,e,!0,23,4)},i.prototype.readFloatBE=function(e,r){return r||D(e,4,this.length),_.read(this,e,!1,23,4)},i.prototype.readDoubleLE=function(e,r){return r||D(e,8,this.length),_.read(this,e,!0,52,8)},i.prototype.readDoubleBE=function(e,r){return r||D(e,8,this.length),_.read(this,e,!1,52,8)},i.prototype.writeUIntLE=function(e,r,t,n){(e=+e,r|=0,t|=0,n)||N(this,e,r,t,Math.pow(2,8*t)-1,0);var _=1,a=0;for(this[r]=255&e;++a=0&&(a*=256);)this[r+_]=e/a&255;return r+t},i.prototype.writeUInt8=function(e,r,t){return e=+e,r|=0,t||N(this,e,r,1,255,0),i.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[r]=255&e,r+1},i.prototype.writeUInt16LE=function(e,r,t){return e=+e,r|=0,t||N(this,e,r,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):m(this,e,r,!0),r+2},i.prototype.writeUInt16BE=function(e,r,t){return e=+e,r|=0,t||N(this,e,r,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):m(this,e,r,!1),r+2},i.prototype.writeUInt32LE=function(e,r,t){return e=+e,r|=0,t||N(this,e,r,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=255&e):L(this,e,r,!0),r+4},i.prototype.writeUInt32BE=function(e,r,t){return e=+e,r|=0,t||N(this,e,r,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):L(this,e,r,!1),r+4},i.prototype.writeIntLE=function(e,r,t,n){if(e=+e,r|=0,!n){var _=Math.pow(2,8*t-1);N(this,e,r,t,_-1,-_)}var a=0,s=1,o=0;for(this[r]=255&e;++a>0)-o&255;return r+t},i.prototype.writeIntBE=function(e,r,t,n){if(e=+e,r|=0,!n){var _=Math.pow(2,8*t-1);N(this,e,r,t,_-1,-_)}var a=t-1,s=1,o=0;for(this[r+a]=255&e;--a>=0&&(s*=256);)e<0&&0===o&&0!==this[r+a+1]&&(o=1),this[r+a]=(e/s>>0)-o&255;return r+t},i.prototype.writeInt8=function(e,r,t){return e=+e,r|=0,t||N(this,e,r,1,127,-128),i.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[r]=255&e,r+1},i.prototype.writeInt16LE=function(e,r,t){return e=+e,r|=0,t||N(this,e,r,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):m(this,e,r,!0),r+2},i.prototype.writeInt16BE=function(e,r,t){return e=+e,r|=0,t||N(this,e,r,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):m(this,e,r,!1),r+2},i.prototype.writeInt32LE=function(e,r,t){return e=+e,r|=0,t||N(this,e,r,4,2147483647,-2147483648),i.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24):L(this,e,r,!0),r+4},i.prototype.writeInt32BE=function(e,r,t){return e=+e,r|=0,t||N(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),i.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):L(this,e,r,!1),r+4},i.prototype.writeFloatLE=function(e,r,t){return x(this,e,r,!0,t)},i.prototype.writeFloatBE=function(e,r,t){return x(this,e,r,!1,t)},i.prototype.writeDoubleLE=function(e,r,t){return U(this,e,r,!0,t)},i.prototype.writeDoubleBE=function(e,r,t){return U(this,e,r,!1,t)},i.prototype.copy=function(e,r,t,n){if(t||(t=0),n||0===n||(n=this.length),r>=e.length&&(r=e.length),r||(r=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-r=0;--_)e[_+r]=this[_+t];else if(a<1e3||!i.TYPED_ARRAY_SUPPORT)for(_=0;_>>=0,t=void 0===t?this.length:t>>>0,e||(e=0),"number"==typeof e)for(a=r;a55295&&t<57344){if(!_){if(t>56319){(r-=3)>-1&&a.push(239,191,189);continue}if(s+1===n){(r-=3)>-1&&a.push(239,191,189);continue}_=t;continue}if(t<56320){(r-=3)>-1&&a.push(239,191,189),_=t;continue}t=65536+(_-55296<<10|t-56320)}else _&&(r-=3)>-1&&a.push(239,191,189);if(_=null,t<128){if((r-=1)<0)break;a.push(t)}else if(t<2048){if((r-=2)<0)break;a.push(t>>6|192,63&t|128)}else if(t<65536){if((r-=3)<0)break;a.push(t>>12|224,t>>6&63|128,63&t|128)}else{if(!(t<1114112))throw new Error("Invalid code point");if((r-=4)<0)break;a.push(t>>18|240,t>>12&63|128,t>>6&63|128,63&t|128)}}return a}function B(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(k,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function Y(e,r,t,n){for(var _=0;_=r.length||_>=e.length);++_)r[_+t]=e[_];return _}}).call(this,t(44))},function(e,r,t){"use strict";var n=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},_=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(r,"__esModule",{value:!0}),r.getCertificates=void 0;var a,s=t(0),o=t(11),i=t(13);r.getCertificates=s._afterPluginsLoaded((function(e){return void 0===e&&(e=!1),n(void 0,void 0,void 0,(function(){var r,t,n,s,c;return _(this,(function(_){switch(_.label){case 0:if(!e&&a)return[2,a];_.label=1;case 1:return _.trys.push([1,3,,4]),[4,o.getUserCertificates(e)];case 2:return r=_.sent(),[3,4];case 3:return t=_.sent(),console.error(t),r=[],[3,4];case 4:return _.trys.push([4,6,,7]),[4,i.getContainerCertificates(e)];case 5:if(n=_.sent(),r)for(s=n.length-1,void 0;s;)r.find((function(e){return e.thumbprint===n[s].thumbprint}))||r.push(n[s]),s--;else r=n;return[3,7];case 6:return c=_.sent(),console.error(c),[3,7];case 7:if(!r)throw new Error("Нет доступных сертификатов");return[2,a=r]}}))}))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getUserCertificates=void 0;var certificate_1=__webpack_require__(4),constants_1=__webpack_require__(3),_afterPluginsLoaded_1=__webpack_require__(0),_extractCommonName_1=__webpack_require__(6),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),certificatesCache;exports.getUserCertificates=_afterPluginsLoaded_1._afterPluginsLoaded((function(resetCache){void 0===resetCache&&(resetCache=!1);var cadesplugin=window.cadesplugin;return!resetCache&&certificatesCache?certificatesCache:eval(_generateCadesFn_1._generateCadesFn((function(){var e,r,t;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.Store")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при попытке доступа к хранилищу")}try{_generateCadesFn_1.__cadesAsyncToken__,e.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE,cadesplugin.CAPICOM_MY_STORE,cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при открытии хранилища")}try{(r=_generateCadesFn_1.__cadesAsyncToken__+e.Certificates)&&(r=_generateCadesFn_1.__cadesAsyncToken__+r.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID),r=_generateCadesFn_1.__cadesAsyncToken__+r.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,constants_1.CAPICOM_PROPID_KEY_PROV_INFO),t=_generateCadesFn_1.__cadesAsyncToken__+r.Count)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка получения списка сертификатов")}if(!t)throw new Error("Нет доступных сертификатов");var n=[];try{for(;t;){var _=_generateCadesFn_1.__cadesAsyncToken__+r.Item(t);n.push(new certificate_1.Certificate(_,_extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName),_generateCadesFn_1.__cadesAsyncToken__+_.IssuerName,_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName,_generateCadesFn_1.__cadesAsyncToken__+_.Thumbprint,_generateCadesFn_1.__cadesAsyncToken__+_.ValidFromDate,_generateCadesFn_1.__cadesAsyncToken__+_.ValidToDate)),t--}}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка обработки сертификатов")}return e.Close(),certificatesCache=n})))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCadesProp=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports.getCadesProp=_afterPluginsLoaded_1._afterPluginsLoaded((function(propName){var cadesCertificate=this._cadesCertificate;return eval(_generateCadesFn_1._generateCadesFn((function(){var e;try{e=_generateCadesFn_1.__cadesAsyncToken__+cadesCertificate[propName]}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при обращении к свойству сертификата")}return e})))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getContainerCertificates=void 0;var certificate_1=__webpack_require__(4),constants_1=__webpack_require__(3),_afterPluginsLoaded_1=__webpack_require__(0),_extractCommonName_1=__webpack_require__(6),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),certificatesCache;exports.getContainerCertificates=_afterPluginsLoaded_1._afterPluginsLoaded((function(resetCache){void 0===resetCache&&(resetCache=!1);var cadesplugin=window.cadesplugin;return!resetCache&&certificatesCache?certificatesCache:eval(_generateCadesFn_1._generateCadesFn((function(){var e,r,t;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.Store")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при попытке доступа к хранилищу")}try{_generateCadesFn_1.__cadesAsyncToken__,e.Open(cadesplugin.CADESCOM_CONTAINER_STORE,cadesplugin.CAPICOM_MY_STORE,cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при открытии хранилища")}try{(r=_generateCadesFn_1.__cadesAsyncToken__+e.Certificates)&&(r=_generateCadesFn_1.__cadesAsyncToken__+r.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID),r=_generateCadesFn_1.__cadesAsyncToken__+r.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,constants_1.CAPICOM_PROPID_KEY_PROV_INFO),t=_generateCadesFn_1.__cadesAsyncToken__+r.Count)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка получения списка сертификатов")}if(!t)throw new Error("Нет доступных сертификатов");var n=[];try{for(;t;){var _=_generateCadesFn_1.__cadesAsyncToken__+r.Item(t);n.push(new certificate_1.Certificate(_,_extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName),_generateCadesFn_1.__cadesAsyncToken__+_.IssuerName,_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName,_generateCadesFn_1.__cadesAsyncToken__+_.Thumbprint,_generateCadesFn_1.__cadesAsyncToken__+_.ValidFromDate,_generateCadesFn_1.__cadesAsyncToken__+_.ValidToDate)),t--}}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка обработки сертификатов")}return e.Close(),certificatesCache=n})))}))},function(e,r,t){"use strict";var n=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},_=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(r,"__esModule",{value:!0}),r.getAllCertificates=void 0;var a,s=t(0),o=t(15),i=t(16);r.getAllCertificates=s._afterPluginsLoaded((function(e){return void 0===e&&(e=!1),n(void 0,void 0,void 0,(function(){var r,t,n,s,c;return _(this,(function(_){switch(_.label){case 0:if(!e&&a)return[2,a];_.label=1;case 1:return _.trys.push([1,3,,4]),[4,o.getAllUserCertificates(e)];case 2:return r=_.sent(),[3,4];case 3:return t=_.sent(),console.error(t),r=[],[3,4];case 4:return _.trys.push([4,6,,7]),[4,i.getAllContainerCertificates(e)];case 5:if(n=_.sent(),r)for(s=n.length-1,void 0;s;)r.find((function(e){return e.thumbprint===n[s].thumbprint}))||r.push(n[s]),s--;else r=n;return[3,7];case 6:return c=_.sent(),console.error(c),[3,7];case 7:if(!r)throw new Error("Нет доступных сертификатов");return[2,a=r]}}))}))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAllUserCertificates=void 0;var certificate_1=__webpack_require__(4),_afterPluginsLoaded_1=__webpack_require__(0),_extractCommonName_1=__webpack_require__(6),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),certificatesCache;exports.getAllUserCertificates=_afterPluginsLoaded_1._afterPluginsLoaded((function(resetCache){void 0===resetCache&&(resetCache=!1);var cadesplugin=window.cadesplugin;return!resetCache&&certificatesCache?certificatesCache:eval(_generateCadesFn_1._generateCadesFn((function(){var e,r,t;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.Store")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при попытке доступа к хранилищу")}try{_generateCadesFn_1.__cadesAsyncToken__,e.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE,cadesplugin.CAPICOM_MY_STORE,cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при открытии хранилища")}try{r=_generateCadesFn_1.__cadesAsyncToken__+e.Certificates,t=_generateCadesFn_1.__cadesAsyncToken__+r.Count}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка получения списка сертификатов")}if(!t)throw new Error("Нет доступных сертификатов");var n=[];try{for(;t;){var _=_generateCadesFn_1.__cadesAsyncToken__+r.Item(t);n.push(new certificate_1.Certificate(_,_extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName),_generateCadesFn_1.__cadesAsyncToken__+_.IssuerName,_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName,_generateCadesFn_1.__cadesAsyncToken__+_.Thumbprint,_generateCadesFn_1.__cadesAsyncToken__+_.ValidFromDate,_generateCadesFn_1.__cadesAsyncToken__+_.ValidToDate)),t--}}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка обработки сертификатов")}return e.Close(),certificatesCache=n})))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAllContainerCertificates=void 0;var certificate_1=__webpack_require__(4),_afterPluginsLoaded_1=__webpack_require__(0),_extractCommonName_1=__webpack_require__(6),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),certificatesCache;exports.getAllContainerCertificates=_afterPluginsLoaded_1._afterPluginsLoaded((function(resetCache){void 0===resetCache&&(resetCache=!1);var cadesplugin=window.cadesplugin;return!resetCache&&certificatesCache?certificatesCache:eval(_generateCadesFn_1._generateCadesFn((function(){var e,r,t;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.Store")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при попытке доступа к хранилищу")}try{_generateCadesFn_1.__cadesAsyncToken__,e.Open(cadesplugin.CADESCOM_CONTAINER_STORE,cadesplugin.CAPICOM_MY_STORE,cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при открытии хранилища")}try{r=_generateCadesFn_1.__cadesAsyncToken__+e.Certificates,t=_generateCadesFn_1.__cadesAsyncToken__+r.Count}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка получения списка сертификатов")}if(!t)throw new Error("Нет доступных сертификатов");var n=[];try{for(;t;){var _=_generateCadesFn_1.__cadesAsyncToken__+r.Item(t);n.push(new certificate_1.Certificate(_,_extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName),_generateCadesFn_1.__cadesAsyncToken__+_.IssuerName,_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName,_generateCadesFn_1.__cadesAsyncToken__+_.Thumbprint,_generateCadesFn_1.__cadesAsyncToken__+_.ValidFromDate,_generateCadesFn_1.__cadesAsyncToken__+_.ValidToDate)),t--}}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка обработки сертификатов")}return e.Close(),certificatesCache=n})))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSystemInfo=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports.getSystemInfo=_afterPluginsLoaded_1._afterPluginsLoaded((function(){var sysInfo={cadesVersion:null,cspVersion:null};return eval(_generateCadesFn_1._generateCadesFn((function(){var e;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.About"),sysInfo.cadesVersion=_generateCadesFn_1.__cadesAsyncToken__+e.PluginVersion,sysInfo.cspVersion=_generateCadesFn_1.__cadesAsyncToken__+e.CSPVersion(),sysInfo.cadesVersion||(sysInfo.cadesVersion=_generateCadesFn_1.__cadesAsyncToken__+e.Version),sysInfo.cadesVersion=_generateCadesFn_1.__cadesAsyncToken__+sysInfo.cadesVersion.toString(),sysInfo.cspVersion=_generateCadesFn_1.__cadesAsyncToken__+sysInfo.cspVersion.toString()}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при получении информации о системе")}return sysInfo})))}))},function(e,r,t){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,r,t,n){void 0===n&&(n=t),Object.defineProperty(e,n,{enumerable:!0,get:function(){return r[t]}})}:function(e,r,t,n){void 0===n&&(n=t),e[n]=r[t]}),_=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||r.hasOwnProperty(t)||n(r,e,t)};Object.defineProperty(r,"__esModule",{value:!0}),_(t(19),r),_(t(52),r)},function(e,r,t){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,r,t,n){void 0===n&&(n=t),Object.defineProperty(e,n,{enumerable:!0,get:function(){return r[t]}})}:function(e,r,t,n){void 0===n&&(n=t),e[n]=r[t]}),_=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||r.hasOwnProperty(t)||n(r,e,t)};Object.defineProperty(r,"__esModule",{value:!0}),_(t(20),r),_(t(11),r),_(t(15),r),_(t(13),r),_(t(16),r),_(t(10),r),_(t(14),r),_(t(17),r),_(t(35),r),_(t(38),r),_(t(41),r),_(t(42),r),_(t(43),r),_(t(48),r),_(t(49),r),_(t(4),r),_(t(50),r),_(t(51),r)},function(e,r,t){"use strict";var n=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},_=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(r,"__esModule",{value:!0}),r.getCertificate=void 0;var a=t(0),s=t(10),o=t(14);r.getCertificate=a._afterPluginsLoaded((function(e,r){return void 0===r&&(r=!0),n(void 0,void 0,void 0,(function(){var t,n;return _(this,(function(_){switch(_.label){case 0:if(!e)throw new Error("Отпечаток не указан");return r?[4,s.getCertificates()]:[3,2];case 1:return t=_.sent(),[3,4];case 2:return[4,o.getAllCertificates()];case 3:t=_.sent(),_.label=4;case 4:if(!(n=t.find((function(r){return r.thumbprint===e}))))throw new Error('Сертификат с отпечатком: "'+e+'" не найден');return[2,n]}}))}))}))},function(module,exports){!function(){if(!window.cadesplugin){var pluginObject,plugin_resolved=0,plugin_reject,plugin_resolve,isOpera=0,isFireFox=0,isSafari=0,isYandex=0,canPromise=!!window.Promise,cadesplugin_loaded_event_recieved=!1,isFireFoxExtensionLoaded=!1,cadesplugin;cadesplugin=canPromise?new Promise((function(e,r){plugin_resolve=e,plugin_reject=r})):{};var browserSpecs=check_browser(),ru_cryptopro_npcades_10_native_bridge={callbacksCount:1,callbacks:{},resultForCallback:function(e,r){var t=ru_cryptopro_npcades_10_native_bridge.callbacks[e];t&&t.apply(null,r)},call:function(e,r,t){var n=t&&"function"==typeof t,_=n?ru_cryptopro_npcades_10_native_bridge.callbacksCount++:0;n&&(ru_cryptopro_npcades_10_native_bridge.callbacks[_]=t);var a=document.createElement("IFRAME"),s=new Array("_CPNP_handle");try{a.setAttribute("src","cpnp-js-call:"+e+":"+_+":"+encodeURIComponent(JSON.stringify(r,s)))}catch(e){alert(e)}document.documentElement.appendChild(a),a.parentNode.removeChild(a),a=null}};cadesplugin.JSModuleVersion="2.3.2",cadesplugin.async_spawn=async_spawn,cadesplugin.set=set_pluginObject,cadesplugin.set_log_level=set_log_level,cadesplugin.getLastError=getLastError,cadesplugin.is_capilite_enabled=is_capilite_enabled,isNativeMessageSupported()&&(cadesplugin.CreateObjectAsync=CreateObjectAsync,cadesplugin.ReleasePluginObjects=ReleasePluginObjects),isNativeMessageSupported()||(cadesplugin.CreateObject=CreateObject),window.cadesplugin_load_timeout?setTimeout(check_load_timeout,window.cadesplugin_load_timeout):setTimeout(check_load_timeout,2e4),set_constantValues(),cadesplugin.current_log_level=cadesplugin.LOG_LEVEL_ERROR,window.cadesplugin=cadesplugin,check_plugin_working()}function check_browser(){var e,r=navigator.userAgent,t=r.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];return/trident/i.test(t[1])?{name:"IE",version:(e=/\brv[ :]+(\d+)/g.exec(r)||[])[1]||""}:"Chrome"===t[1]&&null!=(e=r.match(/\b(OPR|Edg|YaBrowser)\/(\d+)/))?{name:e[1].replace("OPR","Opera"),version:e[2]}:(t=t[2]?[t[1],t[2]]:[navigator.appName,navigator.appVersion,"-?"],null!=(e=r.match(/version\/(\d+)/i))&&t.splice(1,1,e[1]),{name:t[0],version:t[1]})}function cpcsp_console_log(e,r){if("undefined"!=typeof console)return e<=cadesplugin.current_log_level?(e===cadesplugin.LOG_LEVEL_DEBUG&&console.log("DEBUG: %s",r),e===cadesplugin.LOG_LEVEL_INFO&&console.info("INFO: %s",r),void(e===cadesplugin.LOG_LEVEL_ERROR&&console.error("ERROR: %s",r))):void 0}function set_log_level(e){e===cadesplugin.LOG_LEVEL_DEBUG||e===cadesplugin.LOG_LEVEL_INFO||e===cadesplugin.LOG_LEVEL_ERROR?(cadesplugin.current_log_level=e,cadesplugin.current_log_level===cadesplugin.LOG_LEVEL_DEBUG&&cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO,"cadesplugin_api.js: log_level = DEBUG"),cadesplugin.current_log_level===cadesplugin.LOG_LEVEL_INFO&&cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO,"cadesplugin_api.js: log_level = INFO"),cadesplugin.current_log_level===cadesplugin.LOG_LEVEL_ERROR&&cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO,"cadesplugin_api.js: log_level = ERROR"),isNativeMessageSupported()&&(cadesplugin.current_log_level===cadesplugin.LOG_LEVEL_DEBUG&&window.postMessage("set_log_level=debug","*"),cadesplugin.current_log_level===cadesplugin.LOG_LEVEL_INFO&&window.postMessage("set_log_level=info","*"),cadesplugin.current_log_level===cadesplugin.LOG_LEVEL_ERROR&&window.postMessage("set_log_level=error","*"))):cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR,"cadesplugin_api.js: Incorrect log_level: "+e)}function set_constantValues(){cadesplugin.CAPICOM_MEMORY_STORE=0,cadesplugin.CAPICOM_LOCAL_MACHINE_STORE=1,cadesplugin.CAPICOM_CURRENT_USER_STORE=2,cadesplugin.CAPICOM_SMART_CARD_USER_STORE=4,cadesplugin.CADESCOM_MEMORY_STORE=0,cadesplugin.CADESCOM_LOCAL_MACHINE_STORE=1,cadesplugin.CADESCOM_CURRENT_USER_STORE=2,cadesplugin.CADESCOM_SMART_CARD_USER_STORE=4,cadesplugin.CADESCOM_CONTAINER_STORE=100,cadesplugin.CAPICOM_MY_STORE="My",cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED=2,cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME=1,cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED=0,cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING=1,cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE=2,cadesplugin.CADESCOM_XADES_DEFAULT=16,cadesplugin.CADESCOM_XADES_BES=32,cadesplugin.CADESCOM_XADES_T=80,cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1=1488,cadesplugin.CADESCOM_XMLDSIG_TYPE=0,cadesplugin.XmlDsigGost3410UrlObsolete="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411",cadesplugin.XmlDsigGost3411UrlObsolete="http://www.w3.org/2001/04/xmldsig-more#gostr3411",cadesplugin.XmlDsigGost3410Url="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411",cadesplugin.XmlDsigGost3411Url="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411",cadesplugin.XmlDsigGost3411Url2012256="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256",cadesplugin.XmlDsigGost3410Url2012256="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256",cadesplugin.XmlDsigGost3411Url2012512="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512",cadesplugin.XmlDsigGost3410Url2012512="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512",cadesplugin.CADESCOM_CADES_DEFAULT=0,cadesplugin.CADESCOM_CADES_BES=1,cadesplugin.CADESCOM_CADES_T=5,cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1=93,cadesplugin.CADESCOM_PKCS7_TYPE=65535,cadesplugin.CADESCOM_ENCODE_BASE64=0,cadesplugin.CADESCOM_ENCODE_BINARY=1,cadesplugin.CADESCOM_ENCODE_ANY=-1,cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT=0,cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN=1,cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY=2,cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME=0,cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME=1,cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH=0,cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME=1,cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME=2,cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME=3,cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME=4,cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION=5,cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY=6,cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY=7,cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY=8,cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID=9,cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID=10,cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED=11,cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE=12,cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE=128,cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE=9,cadesplugin.CAPICOM_OID_OTHER=0,cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION=10,cadesplugin.CAPICOM_EKU_CLIENT_AUTH=2,cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON=5,cadesplugin.CAPICOM_EKU_OTHER=0,cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME=0,cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME=1,cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION=2,cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME=0,cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME=1,cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION=2,cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO=256,cadesplugin.CADESCOM_ATTRIBUTE_OTHER=-1,cadesplugin.CADESCOM_STRING_TO_UCS2LE=0,cadesplugin.CADESCOM_BASE64_TO_BINARY=1,cadesplugin.CADESCOM_DISPLAY_DATA_NONE=0,cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT=1,cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE=2,cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2=0,cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4=1,cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES=2,cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES=3,cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES=4,cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89=25,cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1=0,cadesplugin.CADESCOM_HASH_ALGORITHM_MD2=1,cadesplugin.CADESCOM_HASH_ALGORITHM_MD4=2,cadesplugin.CADESCOM_HASH_ALGORITHM_MD5=3,cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256=4,cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384=5,cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512=6,cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411=100,cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256=101,cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512=102,cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC=110,cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC=111,cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC=112,cadesplugin.LOG_LEVEL_DEBUG=4,cadesplugin.LOG_LEVEL_INFO=2,cadesplugin.LOG_LEVEL_ERROR=1,cadesplugin.CADESCOM_AllowNone=0,cadesplugin.CADESCOM_AllowNoOutstandingRequest=1,cadesplugin.CADESCOM_AllowUntrustedCertificate=2,cadesplugin.CADESCOM_AllowUntrustedRoot=4,cadesplugin.CADESCOM_SkipInstallToStore=268435456,cadesplugin.CADESCOM_InstallCertChainToContainer=536870912,cadesplugin.CADESCOM_UseContainerStore=1073741824,cadesplugin.ENABLE_CARRIER_TYPE_CSP=1,cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM=2,cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM=4,cadesplugin.ENABLE_ANY_CARRIER_TYPE=7,cadesplugin.DISABLE_EVERY_CARRIER_OPERATION=0,cadesplugin.ENABLE_CARRIER_OPEN_ENUM=1,cadesplugin.ENABLE_CARRIER_CREATE=2,cadesplugin.ENABLE_ANY_OPERATION=3,cadesplugin.CADESCOM_PRODUCT_CSP=0,cadesplugin.CADESCOM_PRODUCT_OCSP=1,cadesplugin.CADESCOM_PRODUCT_TSP=2,cadesplugin.MEDIA_TYPE_REGISTRY=1,cadesplugin.MEDIA_TYPE_HDIMAGE=2,cadesplugin.MEDIA_TYPE_CLOUD=4,cadesplugin.MEDIA_TYPE_SCARD=8,cadesplugin.XCN_CRYPT_STRING_BASE64HEADER=0,cadesplugin.AT_KEYEXCHANGE=1,cadesplugin.AT_SIGNATURE=2,cadesplugin.CARRIER_FLAG_REMOVABLE=1,cadesplugin.CARRIER_FLAG_UNIQUE=2,cadesplugin.CARRIER_FLAG_PROTECTED=4,cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER=8,cadesplugin.CARRIER_FLAG_SECURE_MESSAGING=16,cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE=64,cadesplugin.CARRIER_FLAG_VIRTUAL=128}function async_spawn(e){function r(e,r){var a;try{a=t[e](r)}catch(e){return Promise.reject(e)}return a.done?a.value:Promise.resolve(a.value).then(n,_)}var t=e(Array.prototype.slice.call(arguments,1)),n=r.bind(r,"next"),_=r.bind(r,"throw");return n()}function isIE(){return"IE"===browserSpecs.name||"MSIE"===browserSpecs.name}function isIOS(){return navigator.userAgent.match(/ipod/i)||navigator.userAgent.match(/ipad/i)||navigator.userAgent.match(/iphone/i)}function isNativeMessageSupported(){return!isIE()&&("Edg"===browserSpecs.name||("YaBrowser"===browserSpecs.name?(isYandex=!0,!0):"Opera"===browserSpecs.name?(isOpera=!0,browserSpecs.version>=33):"Firefox"===browserSpecs.name?(isFireFox=!0,browserSpecs.version>=52):"Chrome"===browserSpecs.name?browserSpecs.version>=42:"Safari"===browserSpecs.name?(isSafari=!0,browserSpecs.version>=12):void 0))}function CreateObject(e){if(isIOS())return call_ru_cryptopro_npcades_10_native_bridge("CreateObject",[e]);if(isIE()){if(e.match(/X509Enrollment/i))try{return document.getElementById("webClassFactory").CreateObject(e)}catch(r){try{return document.getElementById("certEnrollClassFactory").CreateObject(e)}catch(e){throw"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS"}}try{return document.getElementById("webClassFactory").CreateObject(e)}catch(r){return new ActiveXObject(e)}}return pluginObject.CreateObject(e)}function decimalToHexString(e){return e<0&&(e=4294967295+e+1),e.toString(16).toUpperCase()}function GetMessageFromException(e){var r=e.message;return r?e.number&&(r+=" (0x"+decimalToHexString(e.number)+")"):r=e,r}function getLastError(e){if(isNativeMessageSupported()||isIE()||isIOS())return GetMessageFromException(e);try{return pluginObject.getLastError()}catch(r){return GetMessageFromException(e)}}function ReleasePluginObjects(){return cpcsp_chrome_nmcades.ReleasePluginObjects()}function CreateObjectAsync(e){return pluginObject.CreateObjectAsync(e)}function call_ru_cryptopro_npcades_10_native_bridge(functionName,array){var tmpobj,ex;if(ru_cryptopro_npcades_10_native_bridge.call(functionName,array,(function(e,response){ex=e;var str="tmpobj="+response;eval(str),"string"==typeof tmpobj&&(tmpobj=tmpobj.replace(/\\\n/gm,"\n"),tmpobj=tmpobj.replace(/\\\r/gm,"\r"))})),ex)throw ex;return tmpobj}function show_firefox_missing_extension_dialog(){if(!window.cadesplugin_skip_extension_install){var e=document.createElement("div");e.id="cadesplugin_ovr",e.style="visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)",e.innerHTML="

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.

Скачать расширение

",document.getElementsByTagName("Body")[0].appendChild(e),document.getElementById("cadesplugin_close_install").addEventListener("click",(function(){plugin_loaded_error("Плагин недоступен"),document.getElementById("cadesplugin_ovr").style.visibility="hidden"})),e.addEventListener("click",(function(){plugin_loaded_error("Плагин недоступен"),document.getElementById("cadesplugin_ovr").style.visibility="hidden"})),e.style.visibility="visible"}}function firefox_or_safari_nmcades_onload(){window.cadesplugin_extension_loaded_callback&&window.cadesplugin_extension_loaded_callback(),isFireFoxExtensionLoaded=!0,cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded,plugin_loaded_error)}function nmcades_api_onload(){isIE()||isFireFox||isSafari||window.cadesplugin_extension_loaded_callback&&window.cadesplugin_extension_loaded_callback(),window.postMessage("cadesplugin_echo_request","*"),window.addEventListener("message",(function(e){if("string"==typeof e.data&&e.data.match("cadesplugin_loaded")&&!cadesplugin_loaded_event_recieved){if(isFireFox||isSafari){var r=e.data.substring(e.data.indexOf("url:")+4);if(!r.match("^moz-extension://[a-zA-Z0-9-]+/nmcades_plugin_api.js$")&&!r.match("^safari-extension://[a-zA-Z0-9-]+/[a-zA-Z0-9]+/nmcades_plugin_api.js$"))return cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR,'Bad url "'+r+'" for load CryptoPro Extension for CAdES Browser plug-in'),void plugin_loaded_error();var t=document.createElement("script");t.setAttribute("type","text/javascript"),t.setAttribute("src",r),t.onerror=plugin_loaded_error,t.onload=firefox_or_safari_nmcades_onload,document.getElementsByTagName("head")[0].appendChild(t)}else cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded,plugin_loaded_error);cadesplugin_loaded_event_recieved=!0}}),!1)}function load_extension(){var e;isFireFox||isSafari?nmcades_api_onload():isOpera||isYandex?((e=document.createElement("script")).setAttribute("type","text/javascript"),e.setAttribute("src","chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js"),e.onerror=plugin_loaded_error,e.onload=nmcades_api_onload,document.getElementsByTagName("head")[0].appendChild(e)):((e=document.createElement("script")).setAttribute("type","text/javascript"),e.setAttribute("src","chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js"),e.onerror=plugin_loaded_error,e.onload=nmcades_api_onload,document.getElementsByTagName("head")[0].appendChild(e))}function load_npapi_plugin(){var e=document.createElement("object");if(e.setAttribute("id","cadesplugin_object"),e.setAttribute("type","application/x-cades"),e.setAttribute("style","visibility: hidden"),document.getElementsByTagName("body")[0].appendChild(e),pluginObject=document.getElementById("cadesplugin_object"),isIE()){var r=document.createElement("object");r.setAttribute("id","certEnrollClassFactory"),r.setAttribute("classid","clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"),r.setAttribute("style","visibility: hidden"),document.getElementsByTagName("body")[0].appendChild(r);var t=document.createElement("object");t.setAttribute("id","webClassFactory"),t.setAttribute("classid","clsid:B04C8637-10BD-484E-B0DA-B8A039F60024"),t.setAttribute("style","visibility: hidden"),document.getElementsByTagName("body")[0].appendChild(t)}}function plugin_loaded(){plugin_resolved=1,canPromise?plugin_resolve():window.postMessage("cadesplugin_loaded","*")}function plugin_loaded_error(e){void 0!==e&&"object"!=typeof e||(e="Плагин недоступен"),plugin_resolved=1,canPromise?plugin_reject(e):window.postMessage("cadesplugin_load_error","*")}function check_load_timeout(){1!==plugin_resolved&&(isFireFox&&(isFireFoxExtensionLoaded||show_firefox_missing_extension_dialog()),plugin_resolved=1,canPromise?plugin_reject("Истекло время ожидания загрузки плагина"):window.postMessage("cadesplugin_load_error","*"))}function createPromise(e){return new Promise(e)}function check_npapi_plugin(){try{CreateObject("CAdESCOM.About");plugin_loaded()}catch(r){document.getElementById("cadesplugin_object").style.display="none";var e=navigator.mimeTypes["application/x-cades"];if(e)plugin_loaded_error(e.enabledPlugin?"Плагин загружен, но не создаются обьекты":"Ошибка при загрузке плагина");else plugin_loaded_error("Плагин недоступен")}}function check_plugin_working(){var e=document.createElement("div");e.innerHTML="\x3c!--[if lt IE 9]>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(r,"__esModule",{value:!0}),r.getDecodedExtendedKeyUsage=void 0;var s=t(3),o=t(0);r.getDecodedExtendedKeyUsage=o._afterPluginsLoaded((function(){return _(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:return[4,this.getExtendedKeyUsage()];case 1:return[2,e.sent().reduce((function(e,r){var t;return n(n({},e),((t={})[r]=s.OIDS_DICTIONARY[r]||null,t))}),{})]}}))}))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getExtendedKeyUsage=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports.getExtendedKeyUsage=_afterPluginsLoaded_1._afterPluginsLoaded((function(){var cadesCertificate=this._cadesCertificate;return eval(_generateCadesFn_1._generateCadesFn((function(){var e,r=[];try{if(e=_generateCadesFn_1.__cadesAsyncToken__+cadesCertificate.ExtendedKeyUsage(),e=_generateCadesFn_1.__cadesAsyncToken__+e.EKUs,(e=_generateCadesFn_1.__cadesAsyncToken__+e.Count)>0)for(;e>0;){var t=void 0;t=_generateCadesFn_1.__cadesAsyncToken__+cadesCertificate.ExtendedKeyUsage(),t=_generateCadesFn_1.__cadesAsyncToken__+t.EKUs,t=_generateCadesFn_1.__cadesAsyncToken__+t.Item(e),t=_generateCadesFn_1.__cadesAsyncToken__+t.OID,r.push(t),e--}}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при получении ОИД'ов")}return r})))}))},function(e,r,t){"use strict";var n=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},_=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(r,"__esModule",{value:!0}),r.getInfo=void 0;var a=t(0),s=t(1),o=t(32),i=t(12);r.getInfo=a._afterPluginsLoaded((function(e,r){return n(this,void 0,void 0,(function(){var t,n;return _(this,(function(_){switch(_.label){case 0:return _.trys.push([0,2,,3]),[4,i.getCadesProp.call(this,r)];case 1:return t=_.sent(),[3,3];case 2:throw n=_.sent(),console.error(n),new Error(s._extractMeaningfulErrorMessage(n)||"Ошибка при извлечении информации из сертификата");case 3:return[2,o._parseCertInfo(e,t)]}}))}))}))},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r._parseCertInfo=void 0;var n=t(3);r._parseCertInfo=function(e,r){var t=r.match(/([а-яА-Яa-zA-Z0-9\s.]+)=(?:("[^"]+?")|(.+?))(?:,|$)/g);if(t)return t.map((function(r){var t,_,a,s=r.trim().match(/^([а-яА-Яa-zA-Z0-9\s.]+)=(.+?),?$/),o=null==s?void 0:s[1],i=null===(_=null===(t=null==s?void 0:s[2])||void 0===t?void 0:t.replace(/^"(.*)"/,"$1"))||void 0===_?void 0:_.replace(/"{2}/g,'"'),c=null==o?void 0:o.match(/^OID\.(.*)/),u=null==c?void 0:c[1],l=!1;if(u){var d=n.OIDS_DICTIONARY[u];d&&(o=d,l=!0)}var C=null===(a=e.find((function(e){return e.possibleNames.find((function(e){return e===o}))})))||void 0===a?void 0:a.translation;return C&&(o=C,l=!0),{description:i,title:o,isTranslated:l}}))}},function(e,r,t){"use strict";var n=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},_=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(r,"__esModule",{value:!0}),r.hasExtendedKeyUsage=void 0;var a=t(0);r.hasExtendedKeyUsage=a._afterPluginsLoaded((function(e){return n(this,void 0,void 0,(function(){var r;return _(this,(function(t){switch(t.label){case 0:return[4,this.getExtendedKeyUsage()];case 1:return r=t.sent(),[2,Array.isArray(e)?e.every((function(e){return r.some((function(r){return r===e}))})):r.some((function(r){return r===e}))]}}))}))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isValid=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports.isValid=_afterPluginsLoaded_1._afterPluginsLoaded((function(){var cadesCertificate=this._cadesCertificate;return eval(_generateCadesFn_1._generateCadesFn((function(){var e;try{e=_generateCadesFn_1.__cadesAsyncToken__+cadesCertificate.IsValid(),e=_generateCadesFn_1.__cadesAsyncToken__+e.Result}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при проверке сертификата")}return Boolean(e)})))}))},function(e,r,t){"use strict";var n=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},_=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(r,"__esModule",{value:!0}),r.isValidSystemSetup=void 0;var a=t(0),s=t(1),o=t(36),i=t(37),c=t(17);r.isValidSystemSetup=a._afterPluginsLoaded((function(){return n(void 0,void 0,void 0,(function(){var e,r;return _(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,c.getSystemInfo()];case 1:return e=t.sent(),[3,3];case 2:throw r=t.sent(),console.error(r),new Error(s._extractMeaningfulErrorMessage(r)||"Настройки ЭП на данной машине не верны");case 3:if(!o._isSupportedCadesVersion(e.cadesVersion))throw new Error("Не поддерживаемая версия плагина");if(!i._isSupportedCSPVersion(e.cspVersion))throw new Error("Не поддерживаемая версия CSP");return[2,!0]}}))}))}))},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r._isSupportedCadesVersion=void 0,r._isSupportedCadesVersion=function(e){var r=e.match(/(\d+)\.(\d+)\.(\d+)/);if(!r)return!1;var t=r[1],n=(r[2],r[3]);return!(Number(t)<2)&&!(2===Number(t)&&Number(n)<12438)}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r._isSupportedCSPVersion=void 0;r._isSupportedCSPVersion=function(e){var r;return e=null===(r=e.match(/\d+?\b(?:\.\d+)?/))||void 0===r?void 0:r[0],Number(e)>=4}},function(module,exports,__webpack_require__){"use strict";var __awaiter=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},__generator=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createXMLSignature=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),_getCadesCert_1=__webpack_require__(5);exports.createXMLSignature=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint,unencryptedMessage){return __awaiter(void 0,void 0,void 0,(function(){var cadesplugin,cadesCertificate;return __generator(this,(function(_a){switch(_a.label){case 0:return cadesplugin=window.cadesplugin,[4,_getCadesCert_1._getCadesCert(thumbprint)];case 1:return cadesCertificate=_a.sent(),[2,eval(_generateCadesFn_1._generateCadesFn((function(){var e,r,t;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CPSigner"),r=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.SignedXML")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при инициализации подписи")}try{_generateCadesFn_1.__cadesAsyncToken__,e.propset_Certificate(cadesCertificate),_generateCadesFn_1.__cadesAsyncToken__,e.propset_CheckCertificate(!0),_generateCadesFn_1.__cadesAsyncToken__,r.propset_Content(unencryptedMessage),_generateCadesFn_1.__cadesAsyncToken__,r.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED),_generateCadesFn_1.__cadesAsyncToken__,r.propset_SignatureMethod("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"),_generateCadesFn_1.__cadesAsyncToken__,r.propset_DigestMethod("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при указании данных для подписи")}try{t=_generateCadesFn_1.__cadesAsyncToken__+r.Sign(e)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при подписании данных")}return t})))]}}))}))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports._getCadesUserCert=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports._getCadesUserCert=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint){var cadesplugin=window.cadesplugin;return eval(_generateCadesFn_1._generateCadesFn((function(){var e,r,t,n;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.Store")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при попытке доступа к хранилищу")}if(!e)throw new Error("Не удалось получить доступ к хранилищу сертификатов");try{_generateCadesFn_1.__cadesAsyncToken__,e.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE,cadesplugin.CAPICOM_MY_STORE,cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при открытии хранилища пользователя")}try{r=_generateCadesFn_1.__cadesAsyncToken__+e.Certificates,t=_generateCadesFn_1.__cadesAsyncToken__+r.Count}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка получения списка сертификатов из хранилища пользователя")}if(!t)throw new Error("Нет доступных сертификатов в хранилище пользователя");try{if(r=_generateCadesFn_1.__cadesAsyncToken__+r.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH,thumbprint),!(_generateCadesFn_1.__cadesAsyncToken__+r.Count))throw new Error('Сертификат с отпечатком: "'+thumbprint+'" не найден в хранилище пользователя');n=_generateCadesFn_1.__cadesAsyncToken__+r.Item(1)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при получении сертификата из хранилища пользователя")}return e.Close(),n})))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports._getCadesContainerCert=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports._getCadesContainerCert=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint){var cadesplugin=window.cadesplugin;return eval(_generateCadesFn_1._generateCadesFn((function(){var e,r,t,n;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.Store")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при попытке доступа к хранилищу")}if(!e)throw new Error("Не удалось получить доступ к хранилищу сертификатов");try{_generateCadesFn_1.__cadesAsyncToken__,e.Open(cadesplugin.CADESCOM_CONTAINER_STORE,cadesplugin.CAPICOM_MY_STORE,cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при открытии хранилища закрытого ключа")}try{r=_generateCadesFn_1.__cadesAsyncToken__+e.Certificates,t=_generateCadesFn_1.__cadesAsyncToken__+r.Count}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка получения списка сертификатов из хранилища закрытого ключа")}if(!t)throw new Error("Нет доступных сертификатов в хранилище закрытого ключа");try{if(r=_generateCadesFn_1.__cadesAsyncToken__+r.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH,thumbprint),!(_generateCadesFn_1.__cadesAsyncToken__+r.Count))throw new Error('Сертификат с отпечатком: "'+thumbprint+'" не найден в хранилище закрытого ключа');n=_generateCadesFn_1.__cadesAsyncToken__+r.Item(1)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при получении сертификата из хранилища закрытого ключа")}return e.Close(),n})))}))},function(module,exports,__webpack_require__){"use strict";var __awaiter=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},__generator=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createDetachedSignature=void 0;var constants_1=__webpack_require__(3),_afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),_getCadesCert_1=__webpack_require__(5),_getDateObj_1=__webpack_require__(7),getSignType_1=__webpack_require__(8);exports.createDetachedSignature=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint,messageHash,signType){return void 0===signType&&(signType="PKCS7"),__awaiter(void 0,void 0,void 0,(function(){var cadesplugin,cadesCertificate;return __generator(this,(function(_a){switch(_a.label){case 0:return cadesplugin=window.cadesplugin,[4,_getCadesCert_1._getCadesCert(thumbprint)];case 1:return cadesCertificate=_a.sent(),[2,eval(_generateCadesFn_1._generateCadesFn((function(){var e,r,t,n;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CADESCOM.CPAttribute"),r=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.HashedData"),t=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CadesSignedData"),n=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CPSigner")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при инициализации подписи")}var _,a,s=_getDateObj_1._getDateObj(new Date);try{_generateCadesFn_1.__cadesAsyncToken__,e.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME),_generateCadesFn_1.__cadesAsyncToken__,e.propset_Value(s)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке времени подписи")}try{_generateCadesFn_1.__cadesAsyncToken__,n.propset_Certificate(cadesCertificate),_=_generateCadesFn_1.__cadesAsyncToken__+n.AuthenticatedAttributes2,_generateCadesFn_1.__cadesAsyncToken__,_.Add(e),_generateCadesFn_1.__cadesAsyncToken__,n.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке сертификата")}try{_generateCadesFn_1.__cadesAsyncToken__,r.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256),_generateCadesFn_1.__cadesAsyncToken__,r.SetHashValue(messageHash)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке хеша")}var o=getSignType_1.getSignType(cadesplugin,signType);try{a=_generateCadesFn_1.__cadesAsyncToken__+t.SignHash(r,n,o)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при подписании данных")}return a})))]}}))}))}))},function(module,exports,__webpack_require__){"use strict";var __awaiter=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},__generator=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.addDetachedSignature=void 0;var constants_1=__webpack_require__(3),_afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),_getCadesCert_1=__webpack_require__(5),_getDateObj_1=__webpack_require__(7),getSignType_1=__webpack_require__(8);exports.addDetachedSignature=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint,signedMessage,messageHash,signType){return void 0===signType&&(signType="PKCS7"),__awaiter(void 0,void 0,void 0,(function(){var cadesplugin,cadesCertificate;return __generator(this,(function(_a){switch(_a.label){case 0:return cadesplugin=window.cadesplugin,[4,_getCadesCert_1._getCadesCert(thumbprint)];case 1:return cadesCertificate=_a.sent(),[2,eval(_generateCadesFn_1._generateCadesFn((function(){var e,r,t,n;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CADESCOM.CPAttribute"),r=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.HashedData"),t=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CadesSignedData"),n=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CPSigner")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при инициализации подписи")}var _,a,s=_getDateObj_1._getDateObj(new Date);try{_generateCadesFn_1.__cadesAsyncToken__,e.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME),_generateCadesFn_1.__cadesAsyncToken__,e.propset_Value(s)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке времени подписи")}try{_generateCadesFn_1.__cadesAsyncToken__,n.propset_Certificate(cadesCertificate),_=_generateCadesFn_1.__cadesAsyncToken__+n.AuthenticatedAttributes2,_generateCadesFn_1.__cadesAsyncToken__,_.Add(e),_generateCadesFn_1.__cadesAsyncToken__,n.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке сертификата")}try{_generateCadesFn_1.__cadesAsyncToken__,r.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256),_generateCadesFn_1.__cadesAsyncToken__,r.SetHashValue(messageHash)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке хеша")}var o=getSignType_1.getSignType(cadesplugin,signType);try{_generateCadesFn_1.__cadesAsyncToken__,t.VerifyHash(r,signedMessage,o),a=_generateCadesFn_1.__cadesAsyncToken__+t.CoSignHash(r,n,o)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при подписании данных")}return a})))]}}))}))}))},function(module,exports,__webpack_require__){"use strict";(function(Buffer){var __awaiter=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},__generator=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createAttachedSignature=void 0;var constants_1=__webpack_require__(3),_afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),_getCadesCert_1=__webpack_require__(5),_getDateObj_1=__webpack_require__(7),getSignType_1=__webpack_require__(8);exports.createAttachedSignature=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint,unencryptedMessage,signType){return void 0===signType&&(signType="PKCS7"),__awaiter(void 0,void 0,void 0,(function(){var cadesplugin,cadesCertificate;return __generator(this,(function(_a){switch(_a.label){case 0:return cadesplugin=window.cadesplugin,[4,_getCadesCert_1._getCadesCert(thumbprint)];case 1:return cadesCertificate=_a.sent(),[2,eval(_generateCadesFn_1._generateCadesFn((function(){var e,r,t;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CADESCOM.CPAttribute"),r=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CadesSignedData"),t=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CPSigner")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при инициализации подписи")}var n,_,a,s=_getDateObj_1._getDateObj(new Date);try{_generateCadesFn_1.__cadesAsyncToken__,e.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME),_generateCadesFn_1.__cadesAsyncToken__,e.propset_Value(s)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке времени подписи")}try{n=Buffer.from(unencryptedMessage).toString("base64")}catch(e){throw console.error(e),new Error("Ошибка при преобразовании сообщения в Base64")}try{_generateCadesFn_1.__cadesAsyncToken__,t.propset_Certificate(cadesCertificate),_=_generateCadesFn_1.__cadesAsyncToken__+t.AuthenticatedAttributes2,_generateCadesFn_1.__cadesAsyncToken__,_.Add(e),_generateCadesFn_1.__cadesAsyncToken__,r.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY),_generateCadesFn_1.__cadesAsyncToken__,r.propset_Content(n),_generateCadesFn_1.__cadesAsyncToken__,t.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при указании данных для подписи")}var o=getSignType_1.getSignType(cadesplugin,signType);try{a=_generateCadesFn_1.__cadesAsyncToken__+r.SignCades(t,o)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при подписании данных")}return a})))]}}))}))}))}).call(this,__webpack_require__(9).Buffer)},function(e,r){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,r,t){"use strict";r.byteLength=function(e){var r=c(e),t=r[0],n=r[1];return 3*(t+n)/4-n},r.toByteArray=function(e){var r,t,n=c(e),s=n[0],o=n[1],i=new a(function(e,r,t){return 3*(r+t)/4-t}(0,s,o)),u=0,l=o>0?s-4:s;for(t=0;t>16&255,i[u++]=r>>8&255,i[u++]=255&r;2===o&&(r=_[e.charCodeAt(t)]<<2|_[e.charCodeAt(t+1)]>>4,i[u++]=255&r);1===o&&(r=_[e.charCodeAt(t)]<<10|_[e.charCodeAt(t+1)]<<4|_[e.charCodeAt(t+2)]>>2,i[u++]=r>>8&255,i[u++]=255&r);return i},r.fromByteArray=function(e){for(var r,t=e.length,_=t%3,a=[],s=0,o=t-_;so?o:s+16383));1===_?(r=e[t-1],a.push(n[r>>2]+n[r<<4&63]+"==")):2===_&&(r=(e[t-2]<<8)+e[t-1],a.push(n[r>>10]+n[r>>4&63]+n[r<<2&63]+"="));return a.join("")};for(var n=[],_=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,i=s.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var t=e.indexOf("=");return-1===t&&(t=r),[t,t===r?0:4-t%4]}function u(e,r,t){for(var _,a,s=[],o=r;o>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return s.join("")}_["-".charCodeAt(0)]=62,_["_".charCodeAt(0)]=63},function(e,r){ +var n=r(45),_=r(46),a=r(47);function o(){return i.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|e}function d(e,t){if(i.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return G(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Y(e).length;default:if(n)return G(e).length;t=(""+t).toLowerCase(),n=!0}}function f(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return w(this,t,r);case"utf8":case"utf-8":return P(this,t,r);case"ascii":return y(this,t,r);case"latin1":case"binary":return N(this,t,r);case"base64":return R(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function A(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function T(e,t,r,n,_){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=_?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(_)return-1;r=e.length-1}else if(r<0){if(!_)return-1;r=0}if("string"==typeof t&&(t=i.from(t,n)),i.isBuffer(t))return 0===t.length?-1:g(e,t,r,n,_);if("number"==typeof t)return t&=255,i.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?_?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):g(e,[t],r,n,_);throw new TypeError("val must be string, number or Buffer")}function g(e,t,r,n,_){var a,o=1,s=e.length,i=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;o=2,s/=2,i/=2,r/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(_){var u=-1;for(a=r;as&&(r=s-i),a=r;a>=0;a--){for(var C=!0,l=0;l_&&(n=_):n=_;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var o=0;o>8,_=r%256,a.push(_),a.push(n);return a}(t,e.length-r),e,r,n)}function R(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function P(e,t,r){r=Math.min(e.length,r);for(var n=[],_=t;_239?4:c>223?3:c>191?2:1;if(_+C<=r)switch(C){case 1:c<128&&(u=c);break;case 2:128==(192&(a=e[_+1]))&&(i=(31&c)<<6|63&a)>127&&(u=i);break;case 3:a=e[_+1],o=e[_+2],128==(192&a)&&128==(192&o)&&(i=(15&c)<<12|(63&a)<<6|63&o)>2047&&(i<55296||i>57343)&&(u=i);break;case 4:a=e[_+1],o=e[_+2],s=e[_+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(i=(15&c)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&i<1114112&&(u=i)}null===u?(u=65533,C=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),_+=C}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var r="",n=0;for(;n0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},i.prototype.compare=function(e,t,r,n,_){if(!i.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===_&&(_=this.length),t<0||r>e.length||n<0||_>this.length)throw new RangeError("out of range index");if(n>=_&&t>=r)return 0;if(n>=_)return-1;if(t>=r)return 1;if(this===e)return 0;for(var a=(_>>>=0)-(n>>>=0),o=(r>>>=0)-(t>>>=0),s=Math.min(a,o),c=this.slice(n,_),u=e.slice(t,r),C=0;C_)&&(r=_),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return O(this,e,t,r);case"utf8":case"utf-8":return p(this,e,t,r);case"ascii":return I(this,e,t,r);case"latin1":case"binary":return h(this,e,t,r);case"base64":return M(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function y(e,t,r){var n="";r=Math.min(e.length,r);for(var _=t;_n)&&(r=n);for(var _="",a=t;ar)throw new RangeError("Trying to access beyond buffer length")}function v(e,t,r,n,_,a){if(!i.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>_||te.length)throw new RangeError("Index out of range")}function m(e,t,r,n){t<0&&(t=65535+t+1);for(var _=0,a=Math.min(e.length-r,2);_>>8*(n?_:1-_)}function L(e,t,r,n){t<0&&(t=4294967295+t+1);for(var _=0,a=Math.min(e.length-r,4);_>>8*(n?_:3-_)&255}function U(e,t,r,n,_,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function F(e,t,r,n,a){return a||U(e,0,r,4),_.write(e,t,r,n,23,4),r+4}function x(e,t,r,n,a){return a||U(e,0,r,8),_.write(e,t,r,n,52,8),r+8}i.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(_*=256);)n+=this[e+--t]*_;return n},i.prototype.readUInt8=function(e,t){return t||b(e,1,this.length),this[e]},i.prototype.readUInt16LE=function(e,t){return t||b(e,2,this.length),this[e]|this[e+1]<<8},i.prototype.readUInt16BE=function(e,t){return t||b(e,2,this.length),this[e]<<8|this[e+1]},i.prototype.readUInt32LE=function(e,t){return t||b(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},i.prototype.readUInt32BE=function(e,t){return t||b(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},i.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||b(e,t,this.length);for(var n=this[e],_=1,a=0;++a=(_*=128)&&(n-=Math.pow(2,8*t)),n},i.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||b(e,t,this.length);for(var n=t,_=1,a=this[e+--n];n>0&&(_*=256);)a+=this[e+--n]*_;return a>=(_*=128)&&(a-=Math.pow(2,8*t)),a},i.prototype.readInt8=function(e,t){return t||b(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},i.prototype.readInt16LE=function(e,t){t||b(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},i.prototype.readInt16BE=function(e,t){t||b(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},i.prototype.readInt32LE=function(e,t){return t||b(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},i.prototype.readInt32BE=function(e,t){return t||b(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},i.prototype.readFloatLE=function(e,t){return t||b(e,4,this.length),_.read(this,e,!0,23,4)},i.prototype.readFloatBE=function(e,t){return t||b(e,4,this.length),_.read(this,e,!1,23,4)},i.prototype.readDoubleLE=function(e,t){return t||b(e,8,this.length),_.read(this,e,!0,52,8)},i.prototype.readDoubleBE=function(e,t){return t||b(e,8,this.length),_.read(this,e,!1,52,8)},i.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||v(this,e,t,r,Math.pow(2,8*r)-1,0);var _=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+_]=e/a&255;return t+r},i.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||v(this,e,t,1,255,0),i.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},i.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||v(this,e,t,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):m(this,e,t,!0),t+2},i.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||v(this,e,t,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):m(this,e,t,!1),t+2},i.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||v(this,e,t,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):L(this,e,t,!0),t+4},i.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||v(this,e,t,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},i.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var _=Math.pow(2,8*r-1);v(this,e,t,r,_-1,-_)}var a=0,o=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+r},i.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var _=Math.pow(2,8*r-1);v(this,e,t,r,_-1,-_)}var a=r-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+r},i.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||v(this,e,t,1,127,-128),i.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},i.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||v(this,e,t,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):m(this,e,t,!0),t+2},i.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||v(this,e,t,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):m(this,e,t,!1),t+2},i.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||v(this,e,t,4,2147483647,-2147483648),i.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):L(this,e,t,!0),t+4},i.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||v(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},i.prototype.writeFloatLE=function(e,t,r){return F(this,e,t,!0,r)},i.prototype.writeFloatBE=function(e,t,r){return F(this,e,t,!1,r)},i.prototype.writeDoubleLE=function(e,t,r){return x(this,e,t,!0,r)},i.prototype.writeDoubleBE=function(e,t,r){return x(this,e,t,!1,r)},i.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--_)e[_+t]=this[_+r];else if(a<1e3||!i.TYPED_ARRAY_SUPPORT)for(_=0;_>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(a=t;a55295&&r<57344){if(!_){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}_=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),_=r;continue}r=65536+(_-55296<<10|r-56320)}else _&&(t-=3)>-1&&a.push(239,191,189);if(_=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function Y(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(k,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function B(e,t,r,n){for(var _=0;_=t.length||_>=e.length);++_)t[_+r]=e[_];return _}}).call(this,r(44))},function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},_=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.getCertificates=void 0;var a,o=r(0),s=r(11),i=r(13);t.getCertificates=o._afterPluginsLoaded((function(e){return void 0===e&&(e=!1),n(void 0,void 0,void 0,(function(){var t,r,n,o,c;return _(this,(function(_){switch(_.label){case 0:if(!e&&a)return[2,a];_.label=1;case 1:return _.trys.push([1,3,,4]),[4,s.getUserCertificates(e)];case 2:return t=_.sent(),[3,4];case 3:return r=_.sent(),console.error(r),t=[],[3,4];case 4:return _.trys.push([4,6,,7]),[4,i.getContainerCertificates(e)];case 5:if(n=_.sent(),t)for(o=n.length-1,void 0;o;)t.find((function(e){return e.thumbprint===n[o].thumbprint}))||t.push(n[o]),o--;else t=n;return[3,7];case 6:return c=_.sent(),console.error(c),[3,7];case 7:if(!t)throw new Error("Нет доступных сертификатов");return[2,a=t]}}))}))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getUserCertificates=void 0;var certificate_1=__webpack_require__(4),constants_1=__webpack_require__(3),_afterPluginsLoaded_1=__webpack_require__(0),_extractCommonName_1=__webpack_require__(6),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),certificatesCache;exports.getUserCertificates=_afterPluginsLoaded_1._afterPluginsLoaded((function(resetCache){void 0===resetCache&&(resetCache=!1);var cadesplugin=window.cadesplugin;return!resetCache&&certificatesCache?certificatesCache:eval(_generateCadesFn_1._generateCadesFn((function(){var e,t,r;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.Store")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при попытке доступа к хранилищу")}try{_generateCadesFn_1.__cadesAsyncToken__,e.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE,cadesplugin.CAPICOM_MY_STORE,cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при открытии хранилища")}try{(t=_generateCadesFn_1.__cadesAsyncToken__+e.Certificates)&&(t=_generateCadesFn_1.__cadesAsyncToken__+t.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID),t=_generateCadesFn_1.__cadesAsyncToken__+t.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,constants_1.CAPICOM_PROPID_KEY_PROV_INFO),r=_generateCadesFn_1.__cadesAsyncToken__+t.Count)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка получения списка сертификатов")}if(!r)throw new Error("Нет доступных сертификатов");var n=[];try{for(;r;){var _=_generateCadesFn_1.__cadesAsyncToken__+t.Item(r);n.push(new certificate_1.Certificate(_,_extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName),_generateCadesFn_1.__cadesAsyncToken__+_.IssuerName,_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName,_generateCadesFn_1.__cadesAsyncToken__+_.Thumbprint,_generateCadesFn_1.__cadesAsyncToken__+_.ValidFromDate,_generateCadesFn_1.__cadesAsyncToken__+_.ValidToDate)),r--}}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка обработки сертификатов")}return e.Close(),certificatesCache=n})))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCadesProp=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports.getCadesProp=_afterPluginsLoaded_1._afterPluginsLoaded((function(propName){var cadesCertificate=this._cadesCertificate;return eval(_generateCadesFn_1._generateCadesFn((function(){var e;try{e=_generateCadesFn_1.__cadesAsyncToken__+cadesCertificate[propName]}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при обращении к свойству сертификата")}return e})))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getContainerCertificates=void 0;var certificate_1=__webpack_require__(4),constants_1=__webpack_require__(3),_afterPluginsLoaded_1=__webpack_require__(0),_extractCommonName_1=__webpack_require__(6),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),certificatesCache;exports.getContainerCertificates=_afterPluginsLoaded_1._afterPluginsLoaded((function(resetCache){void 0===resetCache&&(resetCache=!1);var cadesplugin=window.cadesplugin;return!resetCache&&certificatesCache?certificatesCache:eval(_generateCadesFn_1._generateCadesFn((function(){var e,t,r;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.Store")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при попытке доступа к хранилищу")}try{_generateCadesFn_1.__cadesAsyncToken__,e.Open(cadesplugin.CADESCOM_CONTAINER_STORE,cadesplugin.CAPICOM_MY_STORE,cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при открытии хранилища")}try{(t=_generateCadesFn_1.__cadesAsyncToken__+e.Certificates)&&(t=_generateCadesFn_1.__cadesAsyncToken__+t.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID),t=_generateCadesFn_1.__cadesAsyncToken__+t.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,constants_1.CAPICOM_PROPID_KEY_PROV_INFO),r=_generateCadesFn_1.__cadesAsyncToken__+t.Count)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка получения списка сертификатов")}if(!r)throw new Error("Нет доступных сертификатов");var n=[];try{for(;r;){var _=_generateCadesFn_1.__cadesAsyncToken__+t.Item(r);n.push(new certificate_1.Certificate(_,_extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName),_generateCadesFn_1.__cadesAsyncToken__+_.IssuerName,_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName,_generateCadesFn_1.__cadesAsyncToken__+_.Thumbprint,_generateCadesFn_1.__cadesAsyncToken__+_.ValidFromDate,_generateCadesFn_1.__cadesAsyncToken__+_.ValidToDate)),r--}}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка обработки сертификатов")}return e.Close(),certificatesCache=n})))}))},function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},_=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.getAllCertificates=void 0;var a,o=r(0),s=r(15),i=r(16);t.getAllCertificates=o._afterPluginsLoaded((function(e){return void 0===e&&(e=!1),n(void 0,void 0,void 0,(function(){var t,r,n,o,c;return _(this,(function(_){switch(_.label){case 0:if(!e&&a)return[2,a];_.label=1;case 1:return _.trys.push([1,3,,4]),[4,s.getAllUserCertificates(e)];case 2:return t=_.sent(),[3,4];case 3:return r=_.sent(),console.error(r),t=[],[3,4];case 4:return _.trys.push([4,6,,7]),[4,i.getAllContainerCertificates(e)];case 5:if(n=_.sent(),t)for(o=n.length-1,void 0;o;)t.find((function(e){return e.thumbprint===n[o].thumbprint}))||t.push(n[o]),o--;else t=n;return[3,7];case 6:return c=_.sent(),console.error(c),[3,7];case 7:if(!t)throw new Error("Нет доступных сертификатов");return[2,a=t]}}))}))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAllUserCertificates=void 0;var certificate_1=__webpack_require__(4),_afterPluginsLoaded_1=__webpack_require__(0),_extractCommonName_1=__webpack_require__(6),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),certificatesCache;exports.getAllUserCertificates=_afterPluginsLoaded_1._afterPluginsLoaded((function(resetCache){void 0===resetCache&&(resetCache=!1);var cadesplugin=window.cadesplugin;return!resetCache&&certificatesCache?certificatesCache:eval(_generateCadesFn_1._generateCadesFn((function(){var e,t,r;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.Store")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при попытке доступа к хранилищу")}try{_generateCadesFn_1.__cadesAsyncToken__,e.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE,cadesplugin.CAPICOM_MY_STORE,cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при открытии хранилища")}try{t=_generateCadesFn_1.__cadesAsyncToken__+e.Certificates,r=_generateCadesFn_1.__cadesAsyncToken__+t.Count}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка получения списка сертификатов")}if(!r)throw new Error("Нет доступных сертификатов");var n=[];try{for(;r;){var _=_generateCadesFn_1.__cadesAsyncToken__+t.Item(r);n.push(new certificate_1.Certificate(_,_extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName),_generateCadesFn_1.__cadesAsyncToken__+_.IssuerName,_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName,_generateCadesFn_1.__cadesAsyncToken__+_.Thumbprint,_generateCadesFn_1.__cadesAsyncToken__+_.ValidFromDate,_generateCadesFn_1.__cadesAsyncToken__+_.ValidToDate)),r--}}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка обработки сертификатов")}return e.Close(),certificatesCache=n})))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAllContainerCertificates=void 0;var certificate_1=__webpack_require__(4),_afterPluginsLoaded_1=__webpack_require__(0),_extractCommonName_1=__webpack_require__(6),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),certificatesCache;exports.getAllContainerCertificates=_afterPluginsLoaded_1._afterPluginsLoaded((function(resetCache){void 0===resetCache&&(resetCache=!1);var cadesplugin=window.cadesplugin;return!resetCache&&certificatesCache?certificatesCache:eval(_generateCadesFn_1._generateCadesFn((function(){var e,t,r;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.Store")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при попытке доступа к хранилищу")}try{_generateCadesFn_1.__cadesAsyncToken__,e.Open(cadesplugin.CADESCOM_CONTAINER_STORE,cadesplugin.CAPICOM_MY_STORE,cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при открытии хранилища")}try{t=_generateCadesFn_1.__cadesAsyncToken__+e.Certificates,r=_generateCadesFn_1.__cadesAsyncToken__+t.Count}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка получения списка сертификатов")}if(!r)throw new Error("Нет доступных сертификатов");var n=[];try{for(;r;){var _=_generateCadesFn_1.__cadesAsyncToken__+t.Item(r);n.push(new certificate_1.Certificate(_,_extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName),_generateCadesFn_1.__cadesAsyncToken__+_.IssuerName,_generateCadesFn_1.__cadesAsyncToken__+_.SubjectName,_generateCadesFn_1.__cadesAsyncToken__+_.Thumbprint,_generateCadesFn_1.__cadesAsyncToken__+_.ValidFromDate,_generateCadesFn_1.__cadesAsyncToken__+_.ValidToDate)),r--}}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка обработки сертификатов")}return e.Close(),certificatesCache=n})))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSystemInfo=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports.getSystemInfo=_afterPluginsLoaded_1._afterPluginsLoaded((function(){var sysInfo={cadesVersion:null,cspVersion:null};return eval(_generateCadesFn_1._generateCadesFn((function(){var e;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.About"),sysInfo.cadesVersion=_generateCadesFn_1.__cadesAsyncToken__+e.PluginVersion,sysInfo.cspVersion=_generateCadesFn_1.__cadesAsyncToken__+e.CSPVersion(),sysInfo.cadesVersion||(sysInfo.cadesVersion=_generateCadesFn_1.__cadesAsyncToken__+e.Version),sysInfo.cadesVersion=_generateCadesFn_1.__cadesAsyncToken__+sysInfo.cadesVersion.toString(),sysInfo.cspVersion=_generateCadesFn_1.__cadesAsyncToken__+sysInfo.cspVersion.toString()}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при получении информации о системе")}return sysInfo})))}))},function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),_=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||t.hasOwnProperty(r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),_(r(19),t),_(r(52),t)},function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),_=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||t.hasOwnProperty(r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),_(r(20),t),_(r(11),t),_(r(15),t),_(r(13),t),_(r(16),t),_(r(10),t),_(r(14),t),_(r(17),t),_(r(35),t),_(r(38),t),_(r(41),t),_(r(42),t),_(r(43),t),_(r(48),t),_(r(49),t),_(r(4),t),_(r(50),t),_(r(51),t)},function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},_=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.getCertificate=void 0;var a=r(0),o=r(10),s=r(14);t.getCertificate=a._afterPluginsLoaded((function(e,t){return void 0===t&&(t=!0),n(void 0,void 0,void 0,(function(){var r,n;return _(this,(function(_){switch(_.label){case 0:if(!e)throw new Error("Отпечаток не указан");return t?[4,o.getCertificates()]:[3,2];case 1:return r=_.sent(),[3,4];case 2:return[4,s.getAllCertificates()];case 3:r=_.sent(),_.label=4;case 4:if(!(n=r.find((function(t){return t.thumbprint===e}))))throw new Error('Сертификат с отпечатком: "'+e+'" не найден');return[2,n]}}))}))}))},function(e,t){!function(){if(!window.cadesplugin||!window.cadesplugin.LOG_LEVEL_DEBUG){var e,t,r,n=0,_=0,a=0,o=0,s=0,i=!!window.Promise,c=!1,u=!1,C={};i&&(C=new window.Promise((function(e,n){r=e,t=n})));var l,E,d,f=(E=window.navigator.userAgent,d=E.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[],/trident/i.test(d[1])?{name:"IE",version:(l=/\brv[ :]+(\d+)/g.exec(E)||[])[1]||""}:"Chrome"===d[1]&&null!=(l=E.match(/\b(OPR|Edg|YaBrowser)\/(\d+)/))&&l.length>2?{name:l[1].replace("OPR","Opera"),version:l[2]}:(d=d[2]?[d[1],d[2]]:[window.navigator.appName,window.navigator.appVersion,"-?"],null!=(l=E.match(/version\/(\d+)/i))&&d.splice(1,1,l[1]),{name:d[0],version:d[1]})),A={callbacksCount:1,callbacks:{},resultForCallback:function(e,t){var r=A.callbacks[e];r&&r.apply(null,t)},call:function(e,t,r){var n=r&&"function"==typeof r,_=n?A.callbacksCount++:0;n&&(A.callbacks[_]=r);var a=document.createElement("IFRAME"),o=new Array("_CPNP_handle");try{a.setAttribute("src","cpnp-js-call:"+e+":"+_+":"+encodeURIComponent(window.JSON.stringify(t,o)))}catch(e){window.alert(e)}document.documentElement.appendChild(a),a.parentNode.removeChild(a),a=null}},T=function(e){!1===document.hidden&&(document.removeEventListener("visibilitychange",T),m(),v())};C.JSModuleVersion="2.4.2",C.async_spawn=function(e){function t(e,t){var a;try{a=r[e](t)}catch(e){return window.Promise.reject(e)}return a.done?a.value:window.Promise.resolve(a.value).then(n,_)}var r=e(Array.prototype.slice.call(arguments,1)),n=t.bind(t,"next"),_=t.bind(t,"throw");return n()},C.set=function(t){e=t},C.set_log_level=function(e){e===C.LOG_LEVEL_DEBUG||e===C.LOG_LEVEL_INFO||e===C.LOG_LEVEL_ERROR?(C.current_log_level=e,C.current_log_level===C.LOG_LEVEL_DEBUG&&g(C.LOG_LEVEL_INFO,"cadesplugin_api.js: log_level = DEBUG"),C.current_log_level===C.LOG_LEVEL_INFO&&g(C.LOG_LEVEL_INFO,"cadesplugin_api.js: log_level = INFO"),C.current_log_level===C.LOG_LEVEL_ERROR&&g(C.LOG_LEVEL_INFO,"cadesplugin_api.js: log_level = ERROR"),I()&&(C.current_log_level===C.LOG_LEVEL_DEBUG&&window.postMessage("set_log_level=debug","*"),C.current_log_level===C.LOG_LEVEL_INFO&&window.postMessage("set_log_level=info","*"),C.current_log_level===C.LOG_LEVEL_ERROR&&window.postMessage("set_log_level=error","*"))):g(C.LOG_LEVEL_ERROR,"cadesplugin_api.js: Incorrect log_level: "+e)},C.get_extension_version=function(e){window.postMessage("cadesplugin_extension_version_request","*"),window.addEventListener("message",(function(t){var r="cadesplugin_extension_version_response:";if("string"==typeof t.data&&0===t.data.indexOf(r)){var n=t.data.substring(r.length);e(n)}}),!1)},C.get_extension_id=function(e){window.postMessage("cadesplugin_extension_id_request","*"),window.addEventListener("message",(function(t){var r="cadesplugin_extension_id_response:";if("string"==typeof t.data&&0===t.data.indexOf(r)){var n=t.data.substring(r.length);e(n)}}),!1)},C.getLastError=function(t){if(I()||O()||p())return M(t);try{return e.getLastError()}catch(e){return M(t)}},C.is_capilite_enabled=function(){return void 0!==C.EnableInternalCSP&&C.EnableInternalCSP},I()&&(C.CreateObjectAsync=function(t){return e.CreateObjectAsync(t)},C.ReleasePluginObjects=function(){return cpcsp_chrome_nmcades.ReleasePluginObjects()}),I()||(C.CreateObject=h),C.CAPICOM_MEMORY_STORE=0,C.CAPICOM_LOCAL_MACHINE_STORE=1,C.CAPICOM_CURRENT_USER_STORE=2,C.CAPICOM_SMART_CARD_USER_STORE=4,C.CADESCOM_MEMORY_STORE=0,C.CADESCOM_LOCAL_MACHINE_STORE=1,C.CADESCOM_CURRENT_USER_STORE=2,C.CADESCOM_SMART_CARD_USER_STORE=4,C.CADESCOM_CONTAINER_STORE=100,C.CAPICOM_ROOT_STORE="Root",C.CAPICOM_CA_STORE="CA",C.CAPICOM_MY_STORE="My",C.CAPICOM_ADDRESSBOOK_STORE="AddressBook",C.CAPICOM_STORE_OPEN_READ_WRITE=1,C.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED=2,C.CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED=256,C.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME=1,C.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED=0,C.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING=1,C.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE=2,C.CADESCOM_XADES_DEFAULT=16,C.CADESCOM_XADES_BES=32,C.CADESCOM_XADES_T=80,C.CADESCOM_XADES_X_LONG_TYPE_1=1488,C.CADESCOM_XMLDSIG_TYPE=0,C.XmlDsigGost3410UrlObsolete="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411",C.XmlDsigGost3411UrlObsolete="http://www.w3.org/2001/04/xmldsig-more#gostr3411",C.XmlDsigGost3410Url="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411",C.XmlDsigGost3411Url="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411",C.XmlDsigGost3411Url2012256="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256",C.XmlDsigGost3410Url2012256="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256",C.XmlDsigGost3411Url2012512="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512",C.XmlDsigGost3410Url2012512="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512",C.CADESCOM_CADES_DEFAULT=0,C.CADESCOM_CADES_BES=1,C.CADESCOM_CADES_T=5,C.CADESCOM_CADES_X_LONG_TYPE_1=93,C.CADESCOM_CADES_A=221,C.CADESCOM_PKCS7_TYPE=65535,C.CADESCOM_ENCODE_BASE64=0,C.CADESCOM_ENCODE_BINARY=1,C.CADESCOM_ENCODE_ANY=-1,C.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT=0,C.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN=1,C.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY=2,C.CAPICOM_CERTIFICATE_INCLUDE_NONE=256,C.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME=0,C.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME=1,C.CAPICOM_CERTIFICATE_FIND_SHA1_HASH=0,C.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME=1,C.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME=2,C.CAPICOM_CERTIFICATE_FIND_ROOT_NAME=3,C.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME=4,C.CAPICOM_CERTIFICATE_FIND_EXTENSION=5,C.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY=6,C.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY=7,C.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY=8,C.CAPICOM_CERTIFICATE_FIND_TIME_VALID=9,C.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID=10,C.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED=11,C.CAPICOM_CERTIFICATE_FIND_KEY_USAGE=12,C.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE=128,C.CAPICOM_PROPID_ENHKEY_USAGE=9,C.CAPICOM_OID_OTHER=0,C.CAPICOM_OID_KEY_USAGE_EXTENSION=10,C.CAPICOM_EKU_CLIENT_AUTH=2,C.CAPICOM_EKU_SMARTCARD_LOGON=5,C.CAPICOM_EKU_OTHER=0,C.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME=0,C.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME=1,C.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION=2,C.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME=0,C.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME=1,C.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION=2,C.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO=256,C.CADESCOM_ATTRIBUTE_OTHER=-1,C.CADESCOM_STRING_TO_UCS2LE=0,C.CADESCOM_BASE64_TO_BINARY=1,C.CADESCOM_DISPLAY_DATA_NONE=0,C.CADESCOM_DISPLAY_DATA_CONTENT=1,C.CADESCOM_DISPLAY_DATA_ATTRIBUTE=2,C.CADESCOM_ENCRYPTION_ALGORITHM_RC2=0,C.CADESCOM_ENCRYPTION_ALGORITHM_RC4=1,C.CADESCOM_ENCRYPTION_ALGORITHM_DES=2,C.CADESCOM_ENCRYPTION_ALGORITHM_3DES=3,C.CADESCOM_ENCRYPTION_ALGORITHM_AES=4,C.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89=25,C.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA=35,C.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA_OMAC=36,C.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK=45,C.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK_OMAC=46,C.CADESCOM_HASH_ALGORITHM_SHA1=0,C.CADESCOM_HASH_ALGORITHM_MD2=1,C.CADESCOM_HASH_ALGORITHM_MD4=2,C.CADESCOM_HASH_ALGORITHM_MD5=3,C.CADESCOM_HASH_ALGORITHM_SHA_256=4,C.CADESCOM_HASH_ALGORITHM_SHA_384=5,C.CADESCOM_HASH_ALGORITHM_SHA_512=6,C.CADESCOM_HASH_ALGORITHM_CP_GOST_3411=100,C.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256=101,C.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512=102,C.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC=110,C.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC=111,C.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC=112,C.CADESCOM_CERT_INFO_ROLE=100,C.CADESCOM_ROLE_ROOT="ROOT",C.CADESCOM_ROLE_CA="CA",C.CADESCOM_ROLE_LEAF="LEAF",C.LOG_LEVEL_DEBUG=4,C.LOG_LEVEL_INFO=2,C.LOG_LEVEL_ERROR=1,C.CADESCOM_AllowNone=0,C.CADESCOM_AllowNoOutstandingRequest=1,C.CADESCOM_AllowUntrustedCertificate=2,C.CADESCOM_AllowUntrustedRoot=4,C.CADESCOM_SkipInstallToStore=268435456,C.CADESCOM_InstallCertChainToContainer=536870912,C.CADESCOM_UseContainerStore=1073741824,C.ContextNone=0,C.ContextUser=1,C.ContextMachine=2,C.ContextAdministratorForceMachine=3,C.ENABLE_CARRIER_TYPE_CSP=1,C.ENABLE_CARRIER_TYPE_FKC_NO_SM=2,C.ENABLE_CARRIER_TYPE_FKC_SM=4,C.ENABLE_ANY_CARRIER_TYPE=7,C.DISABLE_EVERY_CARRIER_OPERATION=0,C.ENABLE_CARRIER_OPEN_ENUM=1,C.ENABLE_CARRIER_CREATE=2,C.ENABLE_ANY_OPERATION=3,C.CADESCOM_PRODUCT_CSP=0,C.CADESCOM_PRODUCT_OCSP=1,C.CADESCOM_PRODUCT_TSP=2,C.MEDIA_TYPE_DEFAULT=0,C.MEDIA_TYPE_REGISTRY=1,C.MEDIA_TYPE_HDIMAGE=2,C.MEDIA_TYPE_CLOUD=4,C.MEDIA_TYPE_SCARD=8,C.XCN_CRYPT_STRING_BASE64HEADER=0,C.XCN_CRYPT_STRING_BASE64=1,C.XCN_CRYPT_STRING_BINARY=2,C.XCN_CRYPT_STRING_BASE64REQUESTHEADER=3,C.XCN_CRYPT_STRING_HEX=4,C.XCN_CRYPT_STRING_HEXASCII=5,C.XCN_CRYPT_STRING_BASE64_ANY=6,C.XCN_CRYPT_STRING_ANY=7,C.XCN_CRYPT_STRING_HEX_ANY=8,C.XCN_CRYPT_STRING_BASE64X509CRLHEADER=9,C.XCN_CRYPT_STRING_HEXADDR=10,C.XCN_CRYPT_STRING_HEXASCIIADDR=11,C.XCN_CRYPT_STRING_HEXRAW=12,C.XCN_CRYPT_STRING_BASE64URI=13,C.XCN_CRYPT_STRING_ENCODEMASK=255,C.XCN_CRYPT_STRING_CHAIN=256,C.XCN_CRYPT_STRING_TEXT=512,C.XCN_CRYPT_STRING_PERCENTESCAPE=134217728,C.XCN_CRYPT_STRING_HASHDATA=268435456,C.XCN_CRYPT_STRING_STRICT=536870912,C.XCN_CRYPT_STRING_NOCRLF=1073741824,C.XCN_CRYPT_STRING_NOCR=2147483648,C.XCN_CERT_NAME_STR_NONE=0,C.XCN_AT_NONE=0,C.XCN_AT_KEYEXCHANGE=1,C.XCN_AT_SIGNATURE=2,C.AT_KEYEXCHANGE=1,C.AT_SIGNATURE=2,C.CARRIER_FLAG_REMOVABLE=1,C.CARRIER_FLAG_UNIQUE=2,C.CARRIER_FLAG_PROTECTED=4,C.CARRIER_FLAG_FUNCTIONAL_CARRIER=8,C.CARRIER_FLAG_SECURE_MESSAGING=16,C.CARRIER_FLAG_ABLE_SET_KEY=32,C.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE=64,C.CARRIER_FLAG_VIRTUAL=128,C.CRYPT_MODE_CBCSTRICT=1,C.CRYPT_MODE_CNT=3,C.CRYPT_MODE_CBCRFC4357=31,C.CRYPT_MODE_CTR=32,C.CRYPT_MODE_MGM=33,C.CRYPT_MODE_GCM=34,C.CRYPT_MODE_OMAC_CTR=35,C.CRYPT_MODE_WRAP=36,C.CRYPT_MODE_WRAP_PAD=37,C.PKCS5_PADDING=1,C.RANDOM_PADDING=2,C.ZERO_PADDING=3,C.ISO10126_PADDING=4,C.ANSI_X923_PADDING=5,C.TLS_1_0_PADDING=6,C.ISO_IEC_7816_4_PADDING=7,C.CAPICOM_STORE_SAVE_AS_SERIALIZED=0,C.CAPICOM_STORE_SAVE_AS_PKCS7=1,C.CERT_TRUST_NO_ERROR=0,C.CERT_TRUST_IS_NOT_TIME_VALID=1,C.CERT_TRUST_IS_REVOKED=4,C.CERT_TRUST_IS_NOT_SIGNATURE_VALID=8,C.CERT_TRUST_IS_NOT_VALID_FOR_USAGE=16,C.CERT_TRUST_IS_UNTRUSTED_ROOT=32,C.CERT_TRUST_REVOCATION_STATUS_UNKNOWN=64,C.CERT_TRUST_IS_CYCLIC=128,C.CERT_TRUST_INVALID_EXTENSION=256,C.CERT_TRUST_INVALID_POLICY_CONSTRAINTS=512,C.CERT_TRUST_INVALID_BASIC_CONSTRAINTS=1024,C.CERT_TRUST_INVALID_NAME_CONSTRAINTS=2048,C.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT=4096,C.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT=8192,C.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT=16384,C.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT=32768,C.CERT_TRUST_IS_OFFLINE_REVOCATION=16777216,C.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY=33554432,C.CERT_TRUST_IS_EXPLICIT_DISTRUST=67108864,C.CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT=134217728,C.CERT_TRUST_HAS_WEAK_SIGNATURE=1048576,C.XCN_CERT_NO_KEY_USAGE=0,C.XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE=128,C.XCN_CERT_NON_REPUDIATION_KEY_USAGE=64,C.XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE=32,C.XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE=16,C.XCN_CERT_KEY_AGREEMENT_KEY_USAGE=8,C.XCN_CERT_KEY_CERT_SIGN_KEY_USAGE=4,C.XCN_CERT_OFFLINE_CRL_SIGN_KEY_USAGE=2,C.XCN_CERT_CRL_SIGN_KEY_USAGE=2,C.XCN_CERT_ENCIPHER_ONLY_KEY_USAGE=1,C.XCN_CERT_DECIPHER_ONLY_KEY_USAGE=32768,C.CADESCOM_XADES_ACCEPT_ANY_ID_ATTR_NAMESPACE=1,C.CADES_USE_OCSP_AUTHORIZED_POLICY=131072,C.XCN_NCRYPT_NO_OPERATION=0,C.XCN_NCRYPT_CIPHER_OPERATION=1,C.XCN_NCRYPT_HASH_OPERATION=2,C.XCN_NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION=4,C.XCN_NCRYPT_SECRET_AGREEMENT_OPERATION=8,C.XCN_NCRYPT_SIGNATURE_OPERATION=16,C.XCN_NCRYPT_RNG_OPERATION=32,C.XCN_CRYPT_ANY_GROUP_ID=0,C.XCN_CRYPT_HASH_ALG_OID_GROUP_ID=1,C.XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID=2,C.XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID=3,C.XCN_CRYPT_SIGN_ALG_OID_GROUP_ID=4,C.XCN_CRYPT_RDN_ATTR_OID_GROUP_ID=5,C.XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID=6,C.XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID=7,C.XCN_CRYPT_POLICY_OID_GROUP_ID=8,C.XCN_CRYPT_TEMPLATE_OID_GROUP_ID=9,C.XCN_CRYPT_OID_INFO_PUBKEY_ANY=0,C.XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG=2147483648,C.XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG=1073741824,C.CONTROL_KEY_TIME_VALIDITY_DISABLED=0,C.CONTROL_KEY_TIME_VALIDITY_ENABLED=1,C.CONTROL_KEY_TIME_VALIDITY_STRICT=2,C.AlgorithmFlagsNone=0,C.AlgorithmFlagsWrap=1,C.current_log_level=C.LOG_LEVEL_ERROR,window.cadesplugin=C,o&&document.hidden?document.addEventListener("visibilitychange",T):(m(),v())}function g(e,t){"undefined"!=typeof console&&e<=C.current_log_level&&(e===C.LOG_LEVEL_DEBUG&&console.log("DEBUG: %s",t),e===C.LOG_LEVEL_INFO&&console.info("INFO: %s",t),e===C.LOG_LEVEL_ERROR&&console.error("ERROR: %s",t))}function O(){return"IE"===f.name||"MSIE"===f.name}function p(){return window.navigator.userAgent.match(/ipod/i)||window.navigator.userAgent.match(/ipad/i)||window.navigator.userAgent.match(/iphone/i)}function I(){return!O()&&("Edg"===f.name||("YaBrowser"===f.name?(s=!0,!0):"Opera"===f.name?(_=!0,f.version>=33):"Firefox"===f.name?(a=!0,f.version>=52):"Chrome"===f.name?f.version>=42:"Safari"===f.name?(o=!0,f.version>=12):void 0))}function h(t){if(p())return function(e,t){var r;if(A.call(e,t,(function(e,t){r=e;var n="";try{n=window.JSON.parse(t)}catch(e){n=t}"string"==typeof n&&(n=(n=n.replace(/\\\n/gm,"\n")).replace(/\\\r/gm,"\r"))})),r)throw r;return}("CreateObject",[t]);if(O()){if(t.match(/X509Enrollment/i))try{return document.getElementById("webClassFactory").CreateObject(t)}catch(e){try{return document.getElementById("certEnrollClassFactory").CreateObject(t)}catch(e){throw"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS"}}try{return document.getElementById("webClassFactory").CreateObject(t)}catch(e){return new window.ActiveXObject(t)}}return e.CreateObject(t)}function M(e){var t,r=e.message;return r?e.number&&(r+=" (0x"+((t=e.number)<0&&(t=4294967295+t+1),t.toString(16).toUpperCase()+")")):r=e,r}function S(){window.cadesplugin_extension_loaded_callback&&window.cadesplugin_extension_loaded_callback(),u=!0,cpcsp_chrome_nmcades.check_chrome_plugin(N,w)}function R(e,t,r){var n=document.createElement("script");n.setAttribute("type","text/javascript"),n.setAttribute("src",e),n.onerror=r,n.onload=t,document.getElementsByTagName("head")[0].appendChild(n)}function P(){O()||a||o||window.cadesplugin_extension_loaded_callback&&window.cadesplugin_extension_loaded_callback(),window.postMessage("cadesplugin_echo_request","*"),window.addEventListener("message",(function(e){if("string"==typeof e.data&&e.data.match("cadesplugin_loaded")&&!c){if(a||o){var t=e.data.substring(e.data.indexOf("url:")+4);if(!t.match("^(moz|safari)-extension://[a-zA-Z0-9/_-]+/nmcades_plugin_api.js$"))return g(C.LOG_LEVEL_ERROR,'Bad url "'+t+'" for load CryptoPro Extension for CAdES Browser plug-in'),void w();R(t,S,w)}else cpcsp_chrome_nmcades.check_chrome_plugin(N,w);c=!0}}),!1)}function y(){var t=document.createElement("object");if(t.setAttribute("id","cadesplugin_object"),t.setAttribute("type","application/x-cades"),t.setAttribute("style","visibility: hidden"),document.getElementsByTagName("body")[0].appendChild(t),e=document.getElementById("cadesplugin_object"),O()){var r=document.createElement("object");r.setAttribute("id","certEnrollClassFactory"),r.setAttribute("classid","clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"),r.setAttribute("style","visibility: hidden"),document.getElementsByTagName("body")[0].appendChild(r);var n=document.createElement("object");n.setAttribute("id","webClassFactory"),n.setAttribute("classid","clsid:B04C8637-10BD-484E-B0DA-B8A039F60024"),n.setAttribute("style","visibility: hidden"),document.getElementsByTagName("body")[0].appendChild(n)}}function N(){n=1,i?r():window.postMessage("cadesplugin_loaded","*")}function w(e){void 0!==e&&"object"!=typeof e||(e="Плагин недоступен"),n=1,i?t(e):window.postMessage("cadesplugin_load_error","*")}function D(){1!==n&&(a&&!u&&function(){if(!window.cadesplugin_skip_extension_install){var e=document.createElement("div");e.id="cadesplugin_ovr",e.style="visibility: hidden; position: fixed; left: 0; top: 0; width:100%; height:100%; background-color: rgba(0,0,0,0.7)",e.innerHTML="

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.

Скачать расширение

",document.getElementsByTagName("Body")[0].appendChild(e),document.getElementById("cadesplugin_close_install").addEventListener("click",(function(){w("Плагин недоступен"),document.getElementById("cadesplugin_ovr").style.visibility="hidden"})),e.addEventListener("click",(function(){w("Плагин недоступен"),document.getElementById("cadesplugin_ovr").style.visibility="hidden"})),e.style.visibility="visible"}}(),n=1,i?t("Истекло время ожидания загрузки плагина"):window.postMessage("cadesplugin_load_error","*"))}function b(){try{h("CAdESCOM.About"),N()}catch(t){document.getElementById("cadesplugin_object").style.display="none";var e=window.navigator.mimeTypes["application/x-cades"];if(e)w(e.enabledPlugin?"Плагин загружен, но не создаются обьекты":"Ошибка при загрузке плагина");else w("Плагин недоступен")}}function v(){var e=document.createElement("div");e.innerHTML="\x3c!--[if lt IE 9]>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.getDecodedExtendedKeyUsage=void 0;var o=r(3),s=r(0);t.getDecodedExtendedKeyUsage=s._afterPluginsLoaded((function(){return _(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:return[4,this.getExtendedKeyUsage()];case 1:return[2,e.sent().reduce((function(e,t){var r;return n(n({},e),((r={})[t]=o.OIDS_DICTIONARY[t]||null,r))}),{})]}}))}))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getExtendedKeyUsage=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports.getExtendedKeyUsage=_afterPluginsLoaded_1._afterPluginsLoaded((function(){var cadesCertificate=this._cadesCertificate;return eval(_generateCadesFn_1._generateCadesFn((function(){var e,t=[];try{if(e=_generateCadesFn_1.__cadesAsyncToken__+cadesCertificate.ExtendedKeyUsage(),e=_generateCadesFn_1.__cadesAsyncToken__+e.EKUs,(e=_generateCadesFn_1.__cadesAsyncToken__+e.Count)>0)for(;e>0;){var r=void 0;r=_generateCadesFn_1.__cadesAsyncToken__+cadesCertificate.ExtendedKeyUsage(),r=_generateCadesFn_1.__cadesAsyncToken__+r.EKUs,r=_generateCadesFn_1.__cadesAsyncToken__+r.Item(e),r=_generateCadesFn_1.__cadesAsyncToken__+r.OID,t.push(r),e--}}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при получении ОИД'ов")}return t})))}))},function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},_=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.getInfo=void 0;var a=r(0),o=r(1),s=r(32),i=r(12);t.getInfo=a._afterPluginsLoaded((function(e,t){return n(this,void 0,void 0,(function(){var r,n;return _(this,(function(_){switch(_.label){case 0:return _.trys.push([0,2,,3]),[4,i.getCadesProp.call(this,t)];case 1:return r=_.sent(),[3,3];case 2:throw n=_.sent(),console.error(n),new Error(o._extractMeaningfulErrorMessage(n)||"Ошибка при извлечении информации из сертификата");case 3:return[2,s._parseCertInfo(e,r)]}}))}))}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t._parseCertInfo=void 0;var n=r(3);t._parseCertInfo=function(e,t){var r=t.match(/([а-яА-Яa-zA-Z0-9\s.]+)=(?:("[^"]+?")|(.+?))(?:,|$)/g);if(r)return r.map((function(t){var r,_,a,o=t.trim().match(/^([а-яА-Яa-zA-Z0-9\s.]+)=(.+?),?$/),s=null==o?void 0:o[1],i=null===(_=null===(r=null==o?void 0:o[2])||void 0===r?void 0:r.replace(/^"(.*)"/,"$1"))||void 0===_?void 0:_.replace(/"{2}/g,'"'),c=null==s?void 0:s.match(/^OID\.(.*)/),u=null==c?void 0:c[1],C=!1;if(u){var l=n.OIDS_DICTIONARY[u];l&&(s=l,C=!0)}var E=null===(a=e.find((function(e){return e.possibleNames.find((function(e){return e===s}))})))||void 0===a?void 0:a.translation;return E&&(s=E,C=!0),{description:i,title:s,isTranslated:C}}))}},function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},_=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.hasExtendedKeyUsage=void 0;var a=r(0);t.hasExtendedKeyUsage=a._afterPluginsLoaded((function(e){return n(this,void 0,void 0,(function(){var t;return _(this,(function(r){switch(r.label){case 0:return[4,this.getExtendedKeyUsage()];case 1:return t=r.sent(),[2,Array.isArray(e)?e.every((function(e){return t.some((function(t){return t===e}))})):t.some((function(t){return t===e}))]}}))}))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isValid=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports.isValid=_afterPluginsLoaded_1._afterPluginsLoaded((function(){var cadesCertificate=this._cadesCertificate;return eval(_generateCadesFn_1._generateCadesFn((function(){var e;try{e=_generateCadesFn_1.__cadesAsyncToken__+cadesCertificate.IsValid(),e=_generateCadesFn_1.__cadesAsyncToken__+e.Result}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при проверке сертификата")}return Boolean(e)})))}))},function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},_=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.isValidSystemSetup=void 0;var a=r(0),o=r(1),s=r(36),i=r(37),c=r(17);t.isValidSystemSetup=a._afterPluginsLoaded((function(){return n(void 0,void 0,void 0,(function(){var e,t;return _(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,c.getSystemInfo()];case 1:return e=r.sent(),[3,3];case 2:throw t=r.sent(),console.error(t),new Error(o._extractMeaningfulErrorMessage(t)||"Настройки ЭП на данной машине не верны");case 3:if(!s._isSupportedCadesVersion(e.cadesVersion))throw new Error("Не поддерживаемая версия плагина");if(!i._isSupportedCSPVersion(e.cspVersion))throw new Error("Не поддерживаемая версия CSP");return[2,!0]}}))}))}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t._isSupportedCadesVersion=void 0,t._isSupportedCadesVersion=function(e){var t=e.match(/(\d+)\.(\d+)\.(\d+)/);if(!t)return!1;var r=t[1],n=(t[2],t[3]);return!(Number(r)<2)&&!(2===Number(r)&&Number(n)<12438)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t._isSupportedCSPVersion=void 0;t._isSupportedCSPVersion=function(e){var t;return e=null===(t=e.match(/\d+?\b(?:\.\d+)?/))||void 0===t?void 0:t[0],Number(e)>=4}},function(module,exports,__webpack_require__){"use strict";var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},__generator=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createXMLSignature=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),_getCadesCert_1=__webpack_require__(5);exports.createXMLSignature=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint,unencryptedMessage){return __awaiter(void 0,void 0,void 0,(function(){var cadesplugin,cadesCertificate;return __generator(this,(function(_a){switch(_a.label){case 0:return cadesplugin=window.cadesplugin,[4,_getCadesCert_1._getCadesCert(thumbprint)];case 1:return cadesCertificate=_a.sent(),[2,eval(_generateCadesFn_1._generateCadesFn((function(){var e,t,r;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CPSigner"),t=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.SignedXML")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при инициализации подписи")}try{_generateCadesFn_1.__cadesAsyncToken__,e.propset_Certificate(cadesCertificate),_generateCadesFn_1.__cadesAsyncToken__,e.propset_CheckCertificate(!0),_generateCadesFn_1.__cadesAsyncToken__,t.propset_Content(unencryptedMessage),_generateCadesFn_1.__cadesAsyncToken__,t.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED),_generateCadesFn_1.__cadesAsyncToken__,t.propset_SignatureMethod("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"),_generateCadesFn_1.__cadesAsyncToken__,t.propset_DigestMethod("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при указании данных для подписи")}try{r=_generateCadesFn_1.__cadesAsyncToken__+t.Sign(e)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при подписании данных")}return r})))]}}))}))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports._getCadesUserCert=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports._getCadesUserCert=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint){var cadesplugin=window.cadesplugin;return eval(_generateCadesFn_1._generateCadesFn((function(){var e,t,r,n;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.Store")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при попытке доступа к хранилищу")}if(!e)throw new Error("Не удалось получить доступ к хранилищу сертификатов");try{_generateCadesFn_1.__cadesAsyncToken__,e.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE,cadesplugin.CAPICOM_MY_STORE,cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при открытии хранилища пользователя")}try{t=_generateCadesFn_1.__cadesAsyncToken__+e.Certificates,r=_generateCadesFn_1.__cadesAsyncToken__+t.Count}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка получения списка сертификатов из хранилища пользователя")}if(!r)throw new Error("Нет доступных сертификатов в хранилище пользователя");try{if(t=_generateCadesFn_1.__cadesAsyncToken__+t.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH,thumbprint),!(_generateCadesFn_1.__cadesAsyncToken__+t.Count))throw new Error('Сертификат с отпечатком: "'+thumbprint+'" не найден в хранилище пользователя');n=_generateCadesFn_1.__cadesAsyncToken__+t.Item(1)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при получении сертификата из хранилища пользователя")}return e.Close(),n})))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports._getCadesContainerCert=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports._getCadesContainerCert=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint){var cadesplugin=window.cadesplugin;return eval(_generateCadesFn_1._generateCadesFn((function(){var e,t,r,n;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.Store")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при попытке доступа к хранилищу")}if(!e)throw new Error("Не удалось получить доступ к хранилищу сертификатов");try{_generateCadesFn_1.__cadesAsyncToken__,e.Open(cadesplugin.CADESCOM_CONTAINER_STORE,cadesplugin.CAPICOM_MY_STORE,cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при открытии хранилища закрытого ключа")}try{t=_generateCadesFn_1.__cadesAsyncToken__+e.Certificates,r=_generateCadesFn_1.__cadesAsyncToken__+t.Count}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка получения списка сертификатов из хранилища закрытого ключа")}if(!r)throw new Error("Нет доступных сертификатов в хранилище закрытого ключа");try{if(t=_generateCadesFn_1.__cadesAsyncToken__+t.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH,thumbprint),!(_generateCadesFn_1.__cadesAsyncToken__+t.Count))throw new Error('Сертификат с отпечатком: "'+thumbprint+'" не найден в хранилище закрытого ключа');n=_generateCadesFn_1.__cadesAsyncToken__+t.Item(1)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при получении сертификата из хранилища закрытого ключа")}return e.Close(),n})))}))},function(module,exports,__webpack_require__){"use strict";var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},__generator=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createDetachedSignature=void 0;var constants_1=__webpack_require__(3),_afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),_getCadesCert_1=__webpack_require__(5),_getDateObj_1=__webpack_require__(7),getSignType_1=__webpack_require__(8);exports.createDetachedSignature=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint,messageHash,signType){return void 0===signType&&(signType="PKCS7"),__awaiter(void 0,void 0,void 0,(function(){var cadesplugin,cadesCertificate;return __generator(this,(function(_a){switch(_a.label){case 0:return cadesplugin=window.cadesplugin,[4,_getCadesCert_1._getCadesCert(thumbprint)];case 1:return cadesCertificate=_a.sent(),[2,eval(_generateCadesFn_1._generateCadesFn((function(){var e,t,r,n;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CADESCOM.CPAttribute"),t=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.HashedData"),r=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CadesSignedData"),n=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CPSigner")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при инициализации подписи")}var _,a,o=_getDateObj_1._getDateObj(new Date);try{_generateCadesFn_1.__cadesAsyncToken__,e.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME),_generateCadesFn_1.__cadesAsyncToken__,e.propset_Value(o)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке времени подписи")}try{_generateCadesFn_1.__cadesAsyncToken__,n.propset_Certificate(cadesCertificate),_=_generateCadesFn_1.__cadesAsyncToken__+n.AuthenticatedAttributes2,_generateCadesFn_1.__cadesAsyncToken__,_.Add(e),_generateCadesFn_1.__cadesAsyncToken__,n.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке сертификата")}try{_generateCadesFn_1.__cadesAsyncToken__,t.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256),_generateCadesFn_1.__cadesAsyncToken__,t.SetHashValue(messageHash)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке хеша")}var s=getSignType_1.getSignType(cadesplugin,signType);try{a=_generateCadesFn_1.__cadesAsyncToken__+r.SignHash(t,n,s)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при подписании данных")}return a})))]}}))}))}))},function(module,exports,__webpack_require__){"use strict";var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},__generator=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.addDetachedSignature=void 0;var constants_1=__webpack_require__(3),_afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),_getCadesCert_1=__webpack_require__(5),_getDateObj_1=__webpack_require__(7),getSignType_1=__webpack_require__(8);exports.addDetachedSignature=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint,signedMessage,messageHash,signType){return void 0===signType&&(signType="PKCS7"),__awaiter(void 0,void 0,void 0,(function(){var cadesplugin,cadesCertificate;return __generator(this,(function(_a){switch(_a.label){case 0:return cadesplugin=window.cadesplugin,[4,_getCadesCert_1._getCadesCert(thumbprint)];case 1:return cadesCertificate=_a.sent(),[2,eval(_generateCadesFn_1._generateCadesFn((function(){var e,t,r,n;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CADESCOM.CPAttribute"),t=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.HashedData"),r=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CadesSignedData"),n=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CPSigner")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при инициализации подписи")}var _,a,o=_getDateObj_1._getDateObj(new Date);try{_generateCadesFn_1.__cadesAsyncToken__,e.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME),_generateCadesFn_1.__cadesAsyncToken__,e.propset_Value(o)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке времени подписи")}try{_generateCadesFn_1.__cadesAsyncToken__,n.propset_Certificate(cadesCertificate),_=_generateCadesFn_1.__cadesAsyncToken__+n.AuthenticatedAttributes2,_generateCadesFn_1.__cadesAsyncToken__,_.Add(e),_generateCadesFn_1.__cadesAsyncToken__,n.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке сертификата")}try{_generateCadesFn_1.__cadesAsyncToken__,t.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256),_generateCadesFn_1.__cadesAsyncToken__,t.SetHashValue(messageHash)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке хеша")}var s=getSignType_1.getSignType(cadesplugin,signType);try{_generateCadesFn_1.__cadesAsyncToken__,r.VerifyHash(t,signedMessage,s),a=_generateCadesFn_1.__cadesAsyncToken__+r.CoSignHash(t,n,s)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при подписании данных")}return a})))]}}))}))}))},function(module,exports,__webpack_require__){"use strict";(function(Buffer){var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},__generator=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createAttachedSignature=void 0;var constants_1=__webpack_require__(3),_afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),_getCadesCert_1=__webpack_require__(5),_getDateObj_1=__webpack_require__(7),getSignType_1=__webpack_require__(8);exports.createAttachedSignature=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint,unencryptedMessage,signType){return void 0===signType&&(signType="PKCS7"),__awaiter(void 0,void 0,void 0,(function(){var cadesplugin,cadesCertificate;return __generator(this,(function(_a){switch(_a.label){case 0:return cadesplugin=window.cadesplugin,[4,_getCadesCert_1._getCadesCert(thumbprint)];case 1:return cadesCertificate=_a.sent(),[2,eval(_generateCadesFn_1._generateCadesFn((function(){var e,t,r;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CADESCOM.CPAttribute"),t=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CadesSignedData"),r=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CPSigner")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при инициализации подписи")}var n,_,a,o=_getDateObj_1._getDateObj(new Date);try{_generateCadesFn_1.__cadesAsyncToken__,e.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME),_generateCadesFn_1.__cadesAsyncToken__,e.propset_Value(o)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке времени подписи")}try{n=Buffer.from(unencryptedMessage).toString("base64")}catch(e){throw console.error(e),new Error("Ошибка при преобразовании сообщения в Base64")}try{_generateCadesFn_1.__cadesAsyncToken__,r.propset_Certificate(cadesCertificate),_=_generateCadesFn_1.__cadesAsyncToken__+r.AuthenticatedAttributes2,_generateCadesFn_1.__cadesAsyncToken__,_.Add(e),_generateCadesFn_1.__cadesAsyncToken__,t.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY),_generateCadesFn_1.__cadesAsyncToken__,t.propset_Content(n),_generateCadesFn_1.__cadesAsyncToken__,r.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при указании данных для подписи")}var s=getSignType_1.getSignType(cadesplugin,signType);try{a=_generateCadesFn_1.__cadesAsyncToken__+t.SignCades(r,s)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при подписании данных")}return a})))]}}))}))}))}).call(this,__webpack_require__(9).Buffer)},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";t.byteLength=function(e){var t=c(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){var t,r,n=c(e),o=n[0],s=n[1],i=new a(function(e,t,r){return 3*(t+r)/4-r}(0,o,s)),u=0,C=s>0?o-4:o;for(r=0;r>16&255,i[u++]=t>>8&255,i[u++]=255&t;2===s&&(t=_[e.charCodeAt(r)]<<2|_[e.charCodeAt(r+1)]>>4,i[u++]=255&t);1===s&&(t=_[e.charCodeAt(r)]<<10|_[e.charCodeAt(r+1)]<<4|_[e.charCodeAt(r+2)]>>2,i[u++]=t>>8&255,i[u++]=255&t);return i},t.fromByteArray=function(e){for(var t,r=e.length,_=r%3,a=[],o=0,s=r-_;os?s:o+16383));1===_?(t=e[r-1],a.push(n[t>>2]+n[t<<4&63]+"==")):2===_&&(t=(e[r-2]<<8)+e[r-1],a.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return a.join("")};for(var n=[],_=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,i=o.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function u(e,t,r){for(var _,a,o=[],s=t;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join("")}_["-".charCodeAt(0)]=62,_["_".charCodeAt(0)]=63},function(e,t){ /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ -r.read=function(e,r,t,n,_){var a,s,o=8*_-n-1,i=(1<>1,u=-7,l=t?_-1:0,d=t?-1:1,C=e[r+l];for(l+=d,a=C&(1<<-u)-1,C>>=-u,u+=o;u>0;a=256*a+e[r+l],l+=d,u-=8);for(s=a&(1<<-u)-1,a>>=-u,u+=n;u>0;s=256*s+e[r+l],l+=d,u-=8);if(0===a)a=1-c;else{if(a===i)return s?NaN:1/0*(C?-1:1);s+=Math.pow(2,n),a-=c}return(C?-1:1)*s*Math.pow(2,a-n)},r.write=function(e,r,t,n,_,a){var s,o,i,c=8*a-_-1,u=(1<>1,d=23===_?Math.pow(2,-24)-Math.pow(2,-77):0,C=n?0:a-1,g=n?1:-1,E=r<0||0===r&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(o=isNaN(r)?1:0,s=u):(s=Math.floor(Math.log(r)/Math.LN2),r*(i=Math.pow(2,-s))<1&&(s--,i*=2),(r+=s+l>=1?d/i:d*Math.pow(2,1-l))*i>=2&&(s++,i/=2),s+l>=u?(o=0,s=u):s+l>=1?(o=(r*i-1)*Math.pow(2,_),s+=l):(o=r*Math.pow(2,l-1)*Math.pow(2,_),s=0));_>=8;e[t+C]=255&o,C+=g,o/=256,_-=8);for(s=s<<_|o,c+=_;c>0;e[t+C]=255&s,C+=g,s/=256,c-=8);e[t+C-g]|=128*E}},function(e,r){var t={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==t.call(e)}},function(module,exports,__webpack_require__){"use strict";(function(Buffer){var __awaiter=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},__generator=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.addAttachedSignature=void 0;var constants_1=__webpack_require__(3),_afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),_getCadesCert_1=__webpack_require__(5),_getDateObj_1=__webpack_require__(7),getSignType_1=__webpack_require__(8);exports.addAttachedSignature=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint,signedMessage,signType){return void 0===signType&&(signType="PKCS7"),__awaiter(void 0,void 0,void 0,(function(){var cadesplugin,cadesCertificate;return __generator(this,(function(_a){switch(_a.label){case 0:return cadesplugin=window.cadesplugin,[4,_getCadesCert_1._getCadesCert(thumbprint)];case 1:return cadesCertificate=_a.sent(),[2,eval(_generateCadesFn_1._generateCadesFn((function(){var e,r,t;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CADESCOM.CPAttribute"),r=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CadesSignedData"),t=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CPSigner")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при инициализации подписи")}var n,_,a,s=_getDateObj_1._getDateObj(new Date);try{_generateCadesFn_1.__cadesAsyncToken__,e.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME),_generateCadesFn_1.__cadesAsyncToken__,e.propset_Value(s)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке времени подписи")}try{n=Buffer.from(signedMessage).toString("base64")}catch(e){throw console.error(e),new Error("Ошибка при преобразовании сообщения в Base64")}try{_generateCadesFn_1.__cadesAsyncToken__,t.propset_Certificate(cadesCertificate),_=_generateCadesFn_1.__cadesAsyncToken__+t.AuthenticatedAttributes2,_generateCadesFn_1.__cadesAsyncToken__,_.Add(e),_generateCadesFn_1.__cadesAsyncToken__,r.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY),_generateCadesFn_1.__cadesAsyncToken__,r.propset_Content(n),_generateCadesFn_1.__cadesAsyncToken__,t.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при указании данных для подписи")}var o=getSignType_1.getSignType(cadesplugin,signType);try{_generateCadesFn_1.__cadesAsyncToken__,r.VerifyCades(signedMessage,o),a=_generateCadesFn_1.__cadesAsyncToken__+r.CoSignCades(t,o)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при подписании данных")}return a})))]}}))}))}))}).call(this,__webpack_require__(9).Buffer)},function(module,exports,__webpack_require__){"use strict";(function(Buffer){var __awaiter=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(_,a){function s(e){try{i(n.next(e))}catch(e){a(e)}}function o(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var r;e.done?_(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,o)}i((n=n.apply(e,r||[])).next())}))},__generator=this&&this.__generator||function(e,r){var t,n,_,a,s={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;s;)try{if(t=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(_=s.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){s.label=a[1];break}if(6===a[0]&&s.label<_[1]){s.label=_[1],_=a;break}if(_&&s.label<_[2]){s.label=_[2],s.ops.push(a);break}_[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,o])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createHash=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports.createHash=_afterPluginsLoaded_1._afterPluginsLoaded((function(unencryptedMessage){return __awaiter(void 0,void 0,void 0,(function(){var cadesplugin;return __generator(this,(function(_a){return cadesplugin=window.cadesplugin,[2,eval(_generateCadesFn_1._generateCadesFn((function(){var e,r,t=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.HashedData");try{e=Buffer.from(unencryptedMessage).toString("base64")}catch(e){throw console.error(e),new Error("Ошибка при преобразовании сообщения в Base64")}try{_generateCadesFn_1.__cadesAsyncToken__,t.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256),_generateCadesFn_1.__cadesAsyncToken__,t.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY),_generateCadesFn_1.__cadesAsyncToken__,t.Hash(e)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при инициализации хэширования")}try{r=_generateCadesFn_1.__cadesAsyncToken__+t.Value}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при создании хэша")}return r})))]}))}))}))}).call(this,__webpack_require__(9).Buffer)},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCspVersion=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports.getCspVersion=_afterPluginsLoaded_1._afterPluginsLoaded((function(){var cspVersion=null;return eval(_generateCadesFn_1._generateCadesFn((function(){var e;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.About"),cspVersion=_generateCadesFn_1.__cadesAsyncToken__+e.CSPVersion(),cspVersion=_generateCadesFn_1.__cadesAsyncToken__+cspVersion.toString()}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при получении версии системы")}return cspVersion})))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPluginVersion=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_generateCadesFn_1=__webpack_require__(2),_extractMeaningfulErrorMessage_1=__webpack_require__(1);exports.getPluginVersion=_afterPluginsLoaded_1._afterPluginsLoaded((function(){var cadesVersion=null;return eval(_generateCadesFn_1._generateCadesFn((function(){var e;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.About"),(cadesVersion=_generateCadesFn_1.__cadesAsyncToken__+e.PluginVersion)||(cadesVersion=_generateCadesFn_1.__cadesAsyncToken__+e.Version),cadesVersion=_generateCadesFn_1.__cadesAsyncToken__+cadesVersion.toString()}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при получении информации о плагине")}return cadesVersion})))}))},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0})}])})); +t.read=function(e,t,r,n,_){var a,o,s=8*_-n-1,i=(1<>1,u=-7,C=r?_-1:0,l=r?-1:1,E=e[t+C];for(C+=l,a=E&(1<<-u)-1,E>>=-u,u+=s;u>0;a=256*a+e[t+C],C+=l,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+e[t+C],C+=l,u-=8);if(0===a)a=1-c;else{if(a===i)return o?NaN:1/0*(E?-1:1);o+=Math.pow(2,n),a-=c}return(E?-1:1)*o*Math.pow(2,a-n)},t.write=function(e,t,r,n,_,a){var o,s,i,c=8*a-_-1,u=(1<>1,l=23===_?Math.pow(2,-24)-Math.pow(2,-77):0,E=n?0:a-1,d=n?1:-1,f=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=u):(o=Math.floor(Math.log(t)/Math.LN2),t*(i=Math.pow(2,-o))<1&&(o--,i*=2),(t+=o+C>=1?l/i:l*Math.pow(2,1-C))*i>=2&&(o++,i/=2),o+C>=u?(s=0,o=u):o+C>=1?(s=(t*i-1)*Math.pow(2,_),o+=C):(s=t*Math.pow(2,C-1)*Math.pow(2,_),o=0));_>=8;e[r+E]=255&s,E+=d,s/=256,_-=8);for(o=o<<_|s,c+=_;c>0;e[r+E]=255&o,E+=d,o/=256,c-=8);e[r+E-d]|=128*f}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(module,exports,__webpack_require__){"use strict";(function(Buffer){var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},__generator=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.addAttachedSignature=void 0;var constants_1=__webpack_require__(3),_afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2),_getCadesCert_1=__webpack_require__(5),_getDateObj_1=__webpack_require__(7),getSignType_1=__webpack_require__(8);exports.addAttachedSignature=_afterPluginsLoaded_1._afterPluginsLoaded((function(thumbprint,signedMessage,signType){return void 0===signType&&(signType="PKCS7"),__awaiter(void 0,void 0,void 0,(function(){var cadesplugin,cadesCertificate;return __generator(this,(function(_a){switch(_a.label){case 0:return cadesplugin=window.cadesplugin,[4,_getCadesCert_1._getCadesCert(thumbprint)];case 1:return cadesCertificate=_a.sent(),[2,eval(_generateCadesFn_1._generateCadesFn((function(){var e,t,r;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CADESCOM.CPAttribute"),t=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CadesSignedData"),r=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.CPSigner")}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при инициализации подписи")}var n,_,a,o=_getDateObj_1._getDateObj(new Date);try{_generateCadesFn_1.__cadesAsyncToken__,e.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME),_generateCadesFn_1.__cadesAsyncToken__,e.propset_Value(o)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при установке времени подписи")}try{n=Buffer.from(signedMessage).toString("base64")}catch(e){throw console.error(e),new Error("Ошибка при преобразовании сообщения в Base64")}try{_generateCadesFn_1.__cadesAsyncToken__,r.propset_Certificate(cadesCertificate),_=_generateCadesFn_1.__cadesAsyncToken__+r.AuthenticatedAttributes2,_generateCadesFn_1.__cadesAsyncToken__,_.Add(e),_generateCadesFn_1.__cadesAsyncToken__,t.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY),_generateCadesFn_1.__cadesAsyncToken__,t.propset_Content(n),_generateCadesFn_1.__cadesAsyncToken__,r.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при указании данных для подписи")}var s=getSignType_1.getSignType(cadesplugin,signType);try{_generateCadesFn_1.__cadesAsyncToken__,t.VerifyCades(signedMessage,s),a=_generateCadesFn_1.__cadesAsyncToken__+t.CoSignCades(r,s)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при подписании данных")}return a})))]}}))}))}))}).call(this,__webpack_require__(9).Buffer)},function(module,exports,__webpack_require__){"use strict";(function(Buffer){var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(_,a){function o(e){try{i(n.next(e))}catch(e){a(e)}}function s(e){try{i(n.throw(e))}catch(e){a(e)}}function i(e){var t;e.done?_(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}i((n=n.apply(e,t||[])).next())}))},__generator=this&&this.__generator||function(e,t){var r,n,_,a,o={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(_=2&a[0]?n.return:a[0]?n.throw||((_=n.return)&&_.call(n),0):n.next)&&!(_=_.call(n,a[1])).done)return _;switch(n=0,_&&(a=[2&a[0],_.value]),a[0]){case 0:case 1:_=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(_=o.trys,(_=_.length>0&&_[_.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!_||a[1]>_[0]&&a[1]<_[3])){o.label=a[1];break}if(6===a[0]&&o.label<_[1]){o.label=_[1],_=a;break}if(_&&o.label<_[2]){o.label=_[2],o.ops.push(a);break}_[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=_=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createHash=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports.createHash=_afterPluginsLoaded_1._afterPluginsLoaded((function(unencryptedMessage){return __awaiter(void 0,void 0,void 0,(function(){var cadesplugin;return __generator(this,(function(_a){return cadesplugin=window.cadesplugin,[2,eval(_generateCadesFn_1._generateCadesFn((function(){var e,t,r=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.HashedData");try{e=Buffer.from(unencryptedMessage).toString("base64")}catch(e){throw console.error(e),new Error("Ошибка при преобразовании сообщения в Base64")}try{_generateCadesFn_1.__cadesAsyncToken__,r.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256),_generateCadesFn_1.__cadesAsyncToken__,r.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY),_generateCadesFn_1.__cadesAsyncToken__,r.Hash(e)}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при инициализации хэширования")}try{t=_generateCadesFn_1.__cadesAsyncToken__+r.Value}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при создании хэша")}return t})))]}))}))}))}).call(this,__webpack_require__(9).Buffer)},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCspVersion=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_extractMeaningfulErrorMessage_1=__webpack_require__(1),_generateCadesFn_1=__webpack_require__(2);exports.getCspVersion=_afterPluginsLoaded_1._afterPluginsLoaded((function(){var cspVersion=null;return eval(_generateCadesFn_1._generateCadesFn((function(){var e;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.About"),cspVersion=_generateCadesFn_1.__cadesAsyncToken__+e.CSPVersion(),cspVersion=_generateCadesFn_1.__cadesAsyncToken__+cspVersion.toString()}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при получении версии системы")}return cspVersion})))}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPluginVersion=void 0;var _afterPluginsLoaded_1=__webpack_require__(0),_generateCadesFn_1=__webpack_require__(2),_extractMeaningfulErrorMessage_1=__webpack_require__(1);exports.getPluginVersion=_afterPluginsLoaded_1._afterPluginsLoaded((function(){var cadesVersion=null;return eval(_generateCadesFn_1._generateCadesFn((function(){var e;try{e=_generateCadesFn_1.__cadesAsyncToken__+_generateCadesFn_1.__createCadesPluginObject__("CAdESCOM.About"),(cadesVersion=_generateCadesFn_1.__cadesAsyncToken__+e.PluginVersion)||(cadesVersion=_generateCadesFn_1.__cadesAsyncToken__+e.Version),cadesVersion=_generateCadesFn_1.__cadesAsyncToken__+cadesVersion.toString()}catch(e){throw console.error(e),new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(e)||"Ошибка при получении информации о плагине")}return cadesVersion})))}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0})}])})); //# sourceMappingURL=crypto-pro-js-m.min.js.map \ No newline at end of file diff --git a/dist/crypto-pro-js-m.min.js.map b/dist/crypto-pro-js-m.min.js.map index 23a3c66..7e6e3a0 100644 --- a/dist/crypto-pro-js-m.min.js.map +++ b/dist/crypto-pro-js-m.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://cryptoPro/webpack/universalModuleDefinition","webpack://cryptoPro/webpack/bootstrap","webpack://cryptoPro/./helpers/_afterPluginsLoaded.ts","webpack://cryptoPro/./helpers/_extractMeaningfulErrorMessage.ts","webpack://cryptoPro/./helpers/_generateCadesFn.ts","webpack://cryptoPro/./constants/index.ts","webpack://cryptoPro/./api/certificate/index.ts","webpack://cryptoPro/./helpers/_getCadesCert.ts","webpack://cryptoPro/./helpers/_extractCommonName.ts","webpack://cryptoPro/./helpers/_getDateObj.ts","webpack://cryptoPro/./helpers/getSignType.ts","webpack://cryptoPro/../node_modules/buffer/index.js","webpack://cryptoPro/./api/getCertificates.ts","webpack://cryptoPro/./api/getUserCertificates.ts","webpack://cryptoPro/./api/certificate/getCadesProp.ts","webpack://cryptoPro/./api/getContainerCertificates.ts","webpack://cryptoPro/./api/getAllCertificates.ts","webpack://cryptoPro/./api/getAllUserCertificates.ts","webpack://cryptoPro/./api/getAllContainerCertificates.ts","webpack://cryptoPro/./api/getSystemInfo.ts","webpack://cryptoPro/./crypto-pro-js-m.ts","webpack://cryptoPro/./api/index.ts","webpack://cryptoPro/./api/getCertificate.ts","webpack://cryptoPro/./vendor/cadesplugin_api.js","webpack://cryptoPro/./api/certificate/certificate.ts","webpack://cryptoPro/./constants/cades-constants.ts","webpack://cryptoPro/./constants/issuer-tags-translations.ts","webpack://cryptoPro/./constants/oids-dictionary.ts","webpack://cryptoPro/./constants/subject-tags-translations.ts","webpack://cryptoPro/./api/certificate/exportBase64.ts","webpack://cryptoPro/./api/certificate/getAlgorithm.ts","webpack://cryptoPro/./api/certificate/getDecodedExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getInfo.ts","webpack://cryptoPro/./helpers/_parseCertInfo.ts","webpack://cryptoPro/./api/certificate/hasExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/isValid.ts","webpack://cryptoPro/./api/isValidSystemSetup.ts","webpack://cryptoPro/./helpers/_isSupportedCadesVersion.ts","webpack://cryptoPro/./helpers/_isSupportedCSPVersion.ts","webpack://cryptoPro/./api/createXMLSignature.ts","webpack://cryptoPro/./helpers/_getCadesUserCert.ts","webpack://cryptoPro/./helpers/_getCadesContainerCert.ts","webpack://cryptoPro/./api/createDetachedSignature.ts","webpack://cryptoPro/./api/addDetachedSignature.ts","webpack://cryptoPro/./api/createAttachedSignature.ts","webpack://cryptoPro/../node_modules/webpack/buildin/global.js","webpack://cryptoPro/../node_modules/base64-js/index.js","webpack://cryptoPro/../node_modules/ieee754/index.js","webpack://cryptoPro/../node_modules/buffer/node_modules/isarray/index.js","webpack://cryptoPro/./api/addAttachedSignature.ts","webpack://cryptoPro/./api/createHash.ts","webpack://cryptoPro/./api/getCspVersion.ts","webpack://cryptoPro/./api/getPluginVersion.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isSetLogLevel","isPluginLoaded","_afterPluginsLoaded","fn","canPromise","Boolean","Promise","error","console","Error","_extractMeaningfulErrorMessage","cadesplugin","set_log_level","LOG_LEVEL_ERROR","apply","this","args","errorContainer","getLastError","message","test","searchResult","match","__cadesAsyncToken__","__createCadesPluginObject__","_generateCadesFn","callback","cadesGeneratorsAPI","CreateObjectAsync","callbackName","callbackLiteral","String","callbackArguments","callbackBody","replace","crossEnvCallbackLiteral","Function","join","_getCadesCert","thumbprint","_getCadesUserCert","cadesCertificate","log","_getCadesContainerCert","_extractCommonName","subjectName","_getDateObj","dateObj","getVarDate","getSignType","signType","CADESCOM_CADES_BES","CADESCOM_CADES_X_LONG_TYPE_1","CADESCOM_CADES_T","CADESCOM_PKCS7_TYPE","base64","ieee754","isArray","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","length","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","allocUnsafe","from","TypeError","ArrayBuffer","array","byteOffset","byteLength","undefined","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","slice","fromString","obj","isBuffer","len","checked","copy","buffer","val","type","data","fromObject","assertSize","size","toString","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","indexOf","lastIndexOf","arr","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","push","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","e","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","equals","inspect","max","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","Array","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","stringtrim","base64clean","src","dst","certificatesCache","getCertificates","resetCache","getUserCertificates","availableCertificates","getContainerCertificates","find","cert","eval","cadesStore","cadesCertificates","cadesCertificatesCount","Open","CAPICOM_CURRENT_USER_STORE","CAPICOM_MY_STORE","CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED","Certificates","Find","CAPICOM_CERTIFICATE_FIND_TIME_VALID","CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY","CAPICOM_PROPID_KEY_PROV_INFO","Count","certificateList","Item","Certificate","SubjectName","IssuerName","Thumbprint","ValidFromDate","ValidToDate","Close","getCadesProp","propName","_cadesCertificate","propertyValue","CADESCOM_CONTAINER_STORE","getAllCertificates","getAllUserCertificates","getAllContainerCertificates","getSystemInfo","sysInfo","cadesVersion","cspVersion","cadesAbout","PluginVersion","CSPVersion","Version","getCertificate","validOnly","foundCertificate","pluginObject","plugin_resolved","plugin_reject","plugin_resolve","isOpera","isFireFox","isSafari","isYandex","cadesplugin_loaded_event_recieved","isFireFoxExtensionLoaded","resolve","reject","browserSpecs","check_browser","ru_cryptopro_npcades_10_native_bridge","callbacksCount","callbacks","resultForCallback","callbackId","resultArray","functionName","hasCallback","iframe","document","createElement","arrObjs","setAttribute","encodeURIComponent","JSON","stringify","alert","documentElement","appendChild","parentNode","removeChild","JSModuleVersion","async_spawn","set_pluginObject","is_capilite_enabled","isNativeMessageSupported","ReleasePluginObjects","CreateObject","cadesplugin_load_timeout","setTimeout","check_load_timeout","set_constantValues","current_log_level","check_plugin_working","tem","ua","navigator","userAgent","M","version","exec","appName","appVersion","splice","cpcsp_console_log","level","msg","LOG_LEVEL_DEBUG","LOG_LEVEL_INFO","info","postMessage","CAPICOM_MEMORY_STORE","CAPICOM_LOCAL_MACHINE_STORE","CAPICOM_SMART_CARD_USER_STORE","CADESCOM_MEMORY_STORE","CADESCOM_LOCAL_MACHINE_STORE","CADESCOM_CURRENT_USER_STORE","CADESCOM_SMART_CARD_USER_STORE","CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME","CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED","CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING","CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE","CADESCOM_XADES_DEFAULT","CADESCOM_XADES_BES","CADESCOM_XADES_T","CADESCOM_XADES_X_LONG_TYPE_1","CADESCOM_XMLDSIG_TYPE","XmlDsigGost3410UrlObsolete","XmlDsigGost3411UrlObsolete","XmlDsigGost3410Url","XmlDsigGost3411Url","XmlDsigGost3411Url2012256","XmlDsigGost3410Url2012256","XmlDsigGost3411Url2012512","XmlDsigGost3410Url2012512","CADESCOM_CADES_DEFAULT","CADESCOM_ENCODE_BASE64","CADESCOM_ENCODE_BINARY","CADESCOM_ENCODE_ANY","CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT","CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN","CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY","CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME","CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME","CAPICOM_CERTIFICATE_FIND_SHA1_HASH","CAPICOM_CERTIFICATE_FIND_ISSUER_NAME","CAPICOM_CERTIFICATE_FIND_ROOT_NAME","CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME","CAPICOM_CERTIFICATE_FIND_EXTENSION","CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY","CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY","CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID","CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED","CAPICOM_CERTIFICATE_FIND_KEY_USAGE","CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE","CAPICOM_PROPID_ENHKEY_USAGE","CAPICOM_OID_OTHER","CAPICOM_OID_KEY_USAGE_EXTENSION","CAPICOM_EKU_CLIENT_AUTH","CAPICOM_EKU_SMARTCARD_LOGON","CAPICOM_EKU_OTHER","CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME","CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME","CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION","CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME","CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME","CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION","CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO","CADESCOM_ATTRIBUTE_OTHER","CADESCOM_STRING_TO_UCS2LE","CADESCOM_BASE64_TO_BINARY","CADESCOM_DISPLAY_DATA_NONE","CADESCOM_DISPLAY_DATA_CONTENT","CADESCOM_DISPLAY_DATA_ATTRIBUTE","CADESCOM_ENCRYPTION_ALGORITHM_RC2","CADESCOM_ENCRYPTION_ALGORITHM_RC4","CADESCOM_ENCRYPTION_ALGORITHM_DES","CADESCOM_ENCRYPTION_ALGORITHM_3DES","CADESCOM_ENCRYPTION_ALGORITHM_AES","CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89","CADESCOM_HASH_ALGORITHM_SHA1","CADESCOM_HASH_ALGORITHM_MD2","CADESCOM_HASH_ALGORITHM_MD4","CADESCOM_HASH_ALGORITHM_MD5","CADESCOM_HASH_ALGORITHM_SHA_256","CADESCOM_HASH_ALGORITHM_SHA_384","CADESCOM_HASH_ALGORITHM_SHA_512","CADESCOM_HASH_ALGORITHM_CP_GOST_3411","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC","CADESCOM_AllowNone","CADESCOM_AllowNoOutstandingRequest","CADESCOM_AllowUntrustedCertificate","CADESCOM_AllowUntrustedRoot","CADESCOM_SkipInstallToStore","CADESCOM_InstallCertChainToContainer","CADESCOM_UseContainerStore","ENABLE_CARRIER_TYPE_CSP","ENABLE_CARRIER_TYPE_FKC_NO_SM","ENABLE_CARRIER_TYPE_FKC_SM","ENABLE_ANY_CARRIER_TYPE","DISABLE_EVERY_CARRIER_OPERATION","ENABLE_CARRIER_OPEN_ENUM","ENABLE_CARRIER_CREATE","ENABLE_ANY_OPERATION","CADESCOM_PRODUCT_CSP","CADESCOM_PRODUCT_OCSP","CADESCOM_PRODUCT_TSP","MEDIA_TYPE_REGISTRY","MEDIA_TYPE_HDIMAGE","MEDIA_TYPE_CLOUD","MEDIA_TYPE_SCARD","XCN_CRYPT_STRING_BASE64HEADER","AT_KEYEXCHANGE","AT_SIGNATURE","CARRIER_FLAG_REMOVABLE","CARRIER_FLAG_UNIQUE","CARRIER_FLAG_PROTECTED","CARRIER_FLAG_FUNCTIONAL_CARRIER","CARRIER_FLAG_SECURE_MESSAGING","CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE","CARRIER_FLAG_VIRTUAL","generatorFunc","continuer","verb","result","generator","err","done","then","onFulfilled","onRejected","isIE","isIOS","call_ru_cryptopro_npcades_10_native_bridge","getElementById","ActiveXObject","decimalToHexString","number","toUpperCase","GetMessageFromException","exception","cpcsp_chrome_nmcades","tmpobj","ex","response","show_firefox_missing_extension_dialog","cadesplugin_skip_extension_install","ovr","id","style","innerHTML","getElementsByTagName","addEventListener","plugin_loaded_error","visibility","firefox_or_safari_nmcades_onload","cadesplugin_extension_loaded_callback","check_chrome_plugin","plugin_loaded","nmcades_api_onload","event","url","substring","fileref","onerror","onload","load_extension","load_npapi_plugin","elem","elem1","elem2","createPromise","check_npapi_plugin","display","mimetype","mimeTypes","enabledPlugin","div","readyState","EnableInternalCSP","issuerName","validFrom","validTo","getOwnerInfo","getInfo","SUBJECT_TAGS_TRANSLATIONS","getIssuerInfo","ISSUER_TAGS_TRANSLATIONS","getExtendedKeyUsage","getDecodedExtendedKeyUsage","getAlgorithm","isValid","exportBase64","hasExtendedKeyUsage","oids","CAPICOM_ACTIVE_DIRECTORY_USER_STORE","CAPICOM_PROPID_ACCESS_STATE","CAPICOM_PROPID_ARCHIVED","CAPICOM_PROPID_ARCHIVED_KEY_HASH","CAPICOM_PROPID_AUTO_ENROLL","CAPICOM_PROPID_CROSS_CERT_DIST_POINTS","CAPICOM_PROPID_CTL_USAGE","CAPICOM_PROPID_DATE_STAMP","CAPICOM_PROPID_DESCRIPTION","CAPICOM_PROPID_EFS","CAPICOM_PROPID_ENROLLMENT","CAPICOM_PROPID_EXTENDED_ERROR_INFO","CAPICOM_PROPID_FIRST_RESERVED","CAPICOM_PROPID_FIRST_USER","CAPICOM_PROPID_FORTEZZA_DATA","CAPICOM_PROPID_FRIENDLY_NAME","CAPICOM_PROPID_HASH_PROP","CAPICOM_PROPID_IE30_RESERVED","CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH","CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH","CAPICOM_PROPID_KEY_CONTEXT","CAPICOM_PROPID_KEY_IDENTIFIER","CAPICOM_PROPID_KEY_PROV_HANDLE","CAPICOM_PROPID_KEY_SPEC","CAPICOM_PROPID_LAST_RESERVED","CAPICOM_PROPID_LAST_USER","CAPICOM_PROPID_MD5_HASH","CAPICOM_PROPID_NEXT_UPDATE_LOCATION","CAPICOM_PROPID_PUBKEY_ALG_PARA","CAPICOM_PROPID_PUBKEY_HASH_RESERVED","CAPICOM_PROPID_PVK_FILE","CAPICOM_PROPID_RENEWAL","CAPICOM_PROPID_SHA1_HASH","CAPICOM_PROPID_SIGNATURE_HASH","CAPICOM_PROPID_SMART_CARD_DATA","CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH","CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH","CAPICOM_PROPID_UNKNOWN","CAPICOM_STORE_OPEN_EXISTING_ONLY","CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED","CAPICOM_STORE_OPEN_READ_ONLY","CAPICOM_STORE_OPEN_READ_WRITE","CHECK_NONE","CHECK_OFFLINE_REVOCATION_STATUS","CHECK_ONLINE_REVOCATION_STATUS","CHECK_SIGNATURE_VALIDITY","CHECK_TIME_VALIDITY","CHECK_TRUSTED_ROOT","TRUST_CTL_IS_NOT_SIGNATURE_VALID","TRUST_CTL_IS_NOT_TIME_VALID","TRUST_CTL_IS_NOT_VALID_FOR_USAGE","TRUST_IS_CYCLIC","TRUST_IS_NOT_SIGNATURE_VALID","TRUST_IS_NOT_TIME_NESTED","TRUST_IS_NOT_TIME_VALID","TRUST_IS_NOT_VALID_FOR_USAGE","TRUST_IS_PARTIAL_CHAIN","TRUST_IS_REVOKED","TRUST_IS_UNTRUSTED_ROOT","TRUST_REVOCATION_STATUS_UNKNOWN","possibleNames","translation","OIDS_DICTIONARY","Export","cadesPublicKey","algorithmInfo","algorithm","oid","PublicKey","Algorithm","FriendlyName","Value","reduce","decodedOids","oidCode","count","OIDS","ExtendedKeyUsage","EKUs","cadesExtendedKeyUsage","OID","tags","entitiesPath","entities","_parseCertInfo","tagsTranslations","rawInfo","extractedEntities","map","group","segmentsMatch","title","description","oidIdentifierMatch","oidIdentifier","isTranslated","oidTranslation","tagTranslation","tag","certOids","every","oidToCheck","some","certOid","IsValid","Result","isValidSystemSetup","systemInfo","_isSupportedCadesVersion","_isSupportedCSPVersion","major","patch","createXMLSignature","unencryptedMessage","cadesSigner","cadesSignedXML","signature","propset_Certificate","propset_CheckCertificate","propset_Content","propset_SignatureType","propset_SignatureMethod","propset_DigestMethod","Sign","cadesCertificateList","certificatesCount","createDetachedSignature","messageHash","cadesAttrs","cadesHashedData","cadesSignedData","cadesAuthAttrs","currentTime","Date","propset_Name","propset_Value","AuthenticatedAttributes2","Add","propset_Options","propset_Algorithm","SetHashValue","signTypeConst","SignHash","addDetachedSignature","signedMessage","VerifyHash","CoSignHash","createAttachedSignature","messageBase64","propset_ContentEncoding","SignCades","g","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","num","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","LN2","addAttachedSignature","VerifyCades","CoSignCades","createHash","hash","propset_DataEncoding","Hash","getCspVersion","getPluginVersion"],"mappings":"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","file":"crypto-pro-js-m.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cryptoPro\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cryptoPro\"] = factory();\n\telse\n\t\troot[\"cryptoPro\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 18);\n","import { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\n\ntype Unpromisify = T extends Promise ? R : T;\n\nlet isSetLogLevel = false;\nlet isPluginLoaded = false;\n\nexport const _afterPluginsLoaded = any>(\n fn: T,\n): ((...args: Parameters) => Promise>>) => {\n const canPromise = Boolean(window.Promise);\n\n return async function (...args: Parameters): Promise>> {\n if (!isPluginLoaded) {\n try {\n require('../vendor/cadesplugin_api');\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при подключении модуля для работы с Cades plugin',\n );\n }\n\n isPluginLoaded = true;\n }\n\n const { cadesplugin } = window;\n\n if (!canPromise) {\n throw new Error('Необходим полифилл для Promise');\n }\n\n if (!cadesplugin) {\n throw new Error('Не подключен модуль для работы с Cades plugin');\n }\n\n if (!isSetLogLevel) {\n cadesplugin.set_log_level(cadesplugin.LOG_LEVEL_ERROR);\n\n isSetLogLevel = true;\n }\n\n try {\n await cadesplugin;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации модуля для работы с Cades plugin',\n );\n }\n\n return await fn.apply(this, args);\n };\n};\n","export const _extractMeaningfulErrorMessage = (error: Error): string | null => {\n let errorContainer = window.cadesplugin?.getLastError && window.cadesplugin.getLastError(error);\n\n if (!errorContainer?.message) {\n if (!error.message) {\n return null;\n }\n\n errorContainer = error;\n }\n\n const containsRussianLetters = /[а-яА-Я]/.test(errorContainer.message);\n\n if (!containsRussianLetters) {\n return null;\n }\n\n const searchResult = errorContainer.message.match(/^(.*?)(?:(?:\\.?\\s?\\(?(0x[0-9a-zA-Z]{1,8})\\)?)|(?:\\.?$))/);\n\n return searchResult ? searchResult[1] + (searchResult[2] ? ' (Код ошибки: ' + searchResult[2] + ')' : '') : null;\n};\n","// синтетические переменные, которые подменяются в рантайме\nexport const __cadesAsyncToken__ = {};\nexport const __createCadesPluginObject__ = (...args): any => ({});\n\nfunction getGeneratorConstructor(): GeneratorFunction {\n return new Function('', 'return Object.getPrototypeOf(function*(){}).constructor')();\n}\n\nexport const _generateCadesFn = (callback: Function): string => {\n const { cadesplugin } = window;\n const cadesGeneratorsAPI = Boolean(cadesplugin.CreateObjectAsync);\n const callbackName = callback.name || 'dynamicFn';\n const callbackLiteral = String(callback);\n const callbackArguments = callbackLiteral.match(/^function[\\s\\w]*?\\((.*?)\\)/)?.[1] || '';\n const callbackBody = callbackLiteral.replace(/^.*?{([\\s\\S]*?)}$/, '$1');\n let crossEnvCallbackLiteral = String(\n new (cadesGeneratorsAPI ? getGeneratorConstructor() : Function)(callbackArguments, callbackBody),\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__createCadesPluginObject__(\\([\\s\\S]*?\\))/gm,\n `cadesplugin.CreateObject${cadesGeneratorsAPI ? 'Async' : ''}$1`,\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__cadesAsyncToken__\\s*?\\+\\s*?\\b/gm,\n cadesGeneratorsAPI ? 'yield ' : '',\n );\n\n if (!cadesGeneratorsAPI) {\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/propset_(.*?)\\((.*?)\\)/gm, '$1 = $2');\n }\n\n return [\n cadesGeneratorsAPI ? `cadesplugin.async_spawn(${crossEnvCallbackLiteral});` : `(${crossEnvCallbackLiteral})();`,\n `//# sourceURL=crypto-pro_${callbackName}.js`,\n ].join('');\n};\n","export * from './cades-constants';\nexport * from './issuer-tags-translations';\nexport * from './oids-dictionary';\nexport * from './subject-tags-translations';\n","export * from './certificate';\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _getCadesUserCert } from './_getCadesUserCert';\nimport { _getCadesContainerCert } from './_getCadesContainerCert';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesCert = _afterPluginsLoaded(\n async (thumbprint: string): Promise => {\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificate = await _getCadesUserCert(thumbprint);\n } catch (error) {\n console.log(error);\n\n cadesCertificate = await _getCadesContainerCert(thumbprint);\n }\n\n return cadesCertificate;\n },\n);\n","export const _extractCommonName = (subjectName: string): string | undefined =>\n subjectName.match(/CN=\"?(.+?)\"?(?:,|$)/)?.[1]?.replace(/\"{2}/g, '\"');\n","/**\n * Возвращает объект даты, совместимый с Cades plugin'ом, зависящий от браузера.\n *\n * В IE необходимо использовать специфичный формат \"VT_DATE\"\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Microsoft_Extensions/Date.getVarDate\n */\nexport const _getDateObj = (dateObj): Date => (dateObj.getVarDate ? dateObj.getVarDate() : dateObj);\n","export declare type SignType = 'CAdES BES' | 'CAdES-X Long Type 1' | 'CAdES T' | 'PKCS7';\n\nexport const getSignType = (cadesplugin: any, signType: SignType): any => {\n switch (signType) {\n case 'CAdES BES': {\n return cadesplugin.CADESCOM_CADES_BES;\n }\n case 'CAdES-X Long Type 1': {\n return cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1;\n }\n case 'CAdES T': {\n return cadesplugin.CADESCOM_CADES_T;\n }\n case 'PKCS7': {\n return cadesplugin.CADESCOM_PKCS7_TYPE;\n }\n }\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getUserCertificates } from './getUserCertificates';\nimport { getContainerCertificates } from './getContainerCertificates';\nimport { getAllUserCertificates } from './getAllUserCertificates';\nimport { getAllContainerCertificates } from './getAllContainerCertificates';\n\nlet certificatesCache: Certificate[];\n/**\n * Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getCertificates = _afterPluginsLoaded(\n async (resetCache: boolean = false): Promise => {\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n let availableCertificates: Certificate[];\n\n try {\n availableCertificates = await getUserCertificates(resetCache);\n } catch (error) {\n console.error(error);\n\n availableCertificates = [];\n }\n\n try {\n const containerCertificates: Certificate[] = await getContainerCertificates(resetCache);\n\n if (!availableCertificates) {\n availableCertificates = containerCertificates;\n } else {\n let containerCertificatesCount = containerCertificates.length - 1;\n let foundAvailableCertificate;\n\n while (containerCertificatesCount) {\n foundAvailableCertificate = availableCertificates.find(\n (cert) => cert.thumbprint === containerCertificates[containerCertificatesCount].thumbprint,\n );\n\n if (!foundAvailableCertificate) {\n availableCertificates.push(containerCertificates[containerCertificatesCount]);\n }\n\n containerCertificatesCount--;\n }\n }\n } catch (error) {\n console.error(error);\n }\n\n if (!availableCertificates) {\n throw new Error('Нет доступных сертификатов');\n }\n\n certificatesCache = availableCertificates;\n\n return certificatesCache;\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает указанное внутренее свойство у сертификата в формате Cades\n *\n * @param propName = наименование свойства\n * @returns значение запрошенного свойства\n */\nexport const getCadesProp = _afterPluginsLoaded(function (propName: string): any {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getCadesProp() {\n let propertyValue;\n\n try {\n propertyValue = __cadesAsyncToken__ + cadesCertificate[propName];\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при обращении к свойству сертификата');\n }\n\n return propertyValue;\n }),\n );\n});\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getContainerCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getContainerCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getAllUserCertificates } from './getAllUserCertificates';\nimport { getAllContainerCertificates } from './getAllContainerCertificates';\n\nlet certificatesCache: Certificate[];\n/**\n * Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе, без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllCertificates = _afterPluginsLoaded(\n async (resetCache: boolean = false): Promise => {\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n let availableCertificates: Certificate[];\n\n try {\n availableCertificates = await getAllUserCertificates(resetCache);\n } catch (error) {\n console.error(error);\n\n availableCertificates = [];\n }\n\n try {\n const containerAllCertificates: Certificate[] = await getAllContainerCertificates(resetCache);\n\n if (!availableCertificates) {\n availableCertificates = containerAllCertificates;\n } else {\n let containerAllCertificatesCount = containerAllCertificates.length - 1;\n let foundAvailableCertificate;\n\n while (containerAllCertificatesCount) {\n foundAvailableCertificate = availableCertificates.find(\n (cert) => cert.thumbprint === containerAllCertificates[containerAllCertificatesCount].thumbprint,\n );\n\n if (!foundAvailableCertificate) {\n availableCertificates.push(containerAllCertificates[containerAllCertificatesCount]);\n }\n\n containerAllCertificatesCount--;\n }\n }\n } catch (error) {\n console.error(error);\n }\n\n if (!availableCertificates) {\n throw new Error('Нет доступных сертификатов');\n }\n\n certificatesCache = availableCertificates;\n\n return certificatesCache;\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getAllUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { CadesCertificate, Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllContainerCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getAllContainerCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nexport interface SystemInfo {\n cadesVersion: string;\n cspVersion: string;\n}\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP и плагине\n */\nexport const getSystemInfo = _afterPluginsLoaded(\n (): SystemInfo => {\n const sysInfo = {\n cadesVersion: null,\n cspVersion: null,\n };\n\n return eval(\n _generateCadesFn(function getSystemInfo(): SystemInfo {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n sysInfo.cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n if (!sysInfo.cadesVersion) {\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + sysInfo.cadesVersion.toString();\n sysInfo.cspVersion = __cadesAsyncToken__ + sysInfo.cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о системе');\n }\n\n return sysInfo;\n }),\n );\n },\n);\n","export * from './api';\nexport * from './helpers';\n","export * from './getCertificate';\nexport * from './getUserCertificates';\nexport * from './getAllUserCertificates';\nexport * from './getContainerCertificates';\nexport * from './getAllContainerCertificates';\nexport * from './getCertificates';\nexport * from './getAllCertificates';\nexport * from './getSystemInfo';\nexport * from './isValidSystemSetup';\nexport * from './createXMLSignature';\nexport * from './createDetachedSignature';\nexport * from './addDetachedSignature';\nexport * from './createAttachedSignature';\nexport * from './addAttachedSignature';\nexport * from './createHash';\nexport * from './certificate';\nexport * from './getCspVersion';\nexport * from './getPluginVersion';\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getCertificates } from './getCertificates';\nimport { getAllCertificates } from './getAllCertificates';\n\n/**\n * Возвращает сертификат по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @param validOnly - проверять сертификаты по дате и наличию приватного ключа\n * @returns сертификат\n */\nexport const getCertificate = _afterPluginsLoaded(\n async (thumbprint: string, validOnly: boolean = true): Promise => {\n if (!thumbprint) {\n throw new Error('Отпечаток не указан');\n }\n\n let availableCertificates: Certificate[];\n\n if (validOnly) {\n availableCertificates = await getCertificates();\n } else {\n availableCertificates = await getAllCertificates();\n }\n\n const foundCertificate: Certificate = availableCertificates.find((cert) => cert.thumbprint === thumbprint);\n\n if (!foundCertificate) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\n }\n\n return foundCertificate;\n },\n);\n",";(function () {\r\n //already loaded\r\n if(window.cadesplugin)\r\n return;\r\n\r\n var pluginObject;\r\n var plugin_resolved = 0;\r\n var plugin_reject;\r\n var plugin_resolve;\r\n var isOpera = 0;\r\n var isFireFox = 0;\r\n var isSafari = 0;\r\n var isYandex = 0;\r\n var canPromise = !!window.Promise;\r\n var cadesplugin_loaded_event_recieved = false;\r\n var isFireFoxExtensionLoaded = false;\r\n var cadesplugin;\r\n\r\n if(canPromise)\r\n {\r\n cadesplugin = new Promise(function(resolve, reject)\r\n {\r\n plugin_resolve = resolve;\r\n plugin_reject = reject;\r\n });\r\n } else\r\n {\r\n cadesplugin = {};\r\n }\r\n\r\n function check_browser() {\r\n var ua= navigator.userAgent, tem, M= ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n if(/trident/i.test(M[1])){\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name:'IE', version:(tem[1] || '')};\r\n }\r\n if(M[1] === 'Chrome'){\r\n tem = ua.match(/\\b(OPR|Edg|YaBrowser)\\/(\\d+)/);\r\n if (tem != null)\r\n return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\r\n }\r\n M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null)\r\n M.splice(1, 1, tem[1]);\r\n return {name:M[0],version:M[1]};\r\n }\r\n var browserSpecs = check_browser();\r\n\r\n function cpcsp_console_log(level, msg){\r\n //IE9 не может писать в консоль если не открыта вкладка developer tools\r\n if(typeof(console) === 'undefined')\r\n return;\r\n if (level <= cadesplugin.current_log_level ){\r\n if (level === cadesplugin.LOG_LEVEL_DEBUG)\r\n console.log(\"DEBUG: %s\", msg);\r\n if (level === cadesplugin.LOG_LEVEL_INFO)\r\n console.info(\"INFO: %s\", msg);\r\n if (level === cadesplugin.LOG_LEVEL_ERROR)\r\n console.error(\"ERROR: %s\", msg);\r\n return;\r\n }\r\n }\r\n\r\n function set_log_level(level){\r\n if (!((level === cadesplugin.LOG_LEVEL_DEBUG) ||\r\n (level === cadesplugin.LOG_LEVEL_INFO) ||\r\n (level === cadesplugin.LOG_LEVEL_ERROR))){\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"cadesplugin_api.js: Incorrect log_level: \" + level);\r\n return;\r\n }\r\n cadesplugin.current_log_level = level;\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = DEBUG\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = INFO\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = ERROR\");\r\n if(isNativeMessageSupported())\r\n {\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\r\n window.postMessage(\"set_log_level=debug\", \"*\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\r\n window.postMessage(\"set_log_level=info\", \"*\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\r\n window.postMessage(\"set_log_level=error\", \"*\");\r\n }\r\n }\r\n\r\n function set_constantValues()\r\n {\r\n cadesplugin.CAPICOM_MEMORY_STORE = 0;\r\n cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_MEMORY_STORE = 0;\r\n cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_CONTAINER_STORE = 100;\r\n\r\n cadesplugin.CAPICOM_MY_STORE = \"My\";\r\n\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\r\n\r\n cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010;\r\n cadesplugin.CADESCOM_XADES_BES = 0x00000020;\r\n cadesplugin.CADESCOM_XADES_T = 0x00000050;\r\n cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0;\r\n cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000;\r\n\r\n cadesplugin.XmlDsigGost3410UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr3411\";\r\n cadesplugin.XmlDsigGost3410Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411\";\r\n\r\n cadesplugin.XmlDsigGost3411Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3410Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3411Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512\";\r\n cadesplugin.XmlDsigGost3410Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512\";\r\n\r\n cadesplugin.CADESCOM_CADES_DEFAULT = 0;\r\n cadesplugin.CADESCOM_CADES_BES = 1;\r\n cadesplugin.CADESCOM_CADES_T = 0x5;\r\n cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\r\n cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff;\r\n\r\n cadesplugin.CADESCOM_ENCODE_BASE64 = 0;\r\n cadesplugin.CADESCOM_ENCODE_BINARY = 1;\r\n cadesplugin.CADESCOM_ENCODE_ANY = -1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\r\n\r\n cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\r\n cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\r\n\r\n cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\r\n\r\n cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9;\r\n\r\n cadesplugin.CAPICOM_OID_OTHER = 0;\r\n cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\r\n\r\n cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2;\r\n cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5;\r\n cadesplugin.CAPICOM_EKU_OTHER = 0;\r\n\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100;\r\n cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1;\r\n\r\n cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0;\r\n cadesplugin.CADESCOM_BASE64_TO_BINARY = 1;\r\n\r\n cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\r\n\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\r\n\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\r\n\r\n cadesplugin.LOG_LEVEL_DEBUG = 4;\r\n cadesplugin.LOG_LEVEL_INFO = 2;\r\n cadesplugin.LOG_LEVEL_ERROR = 1;\r\n\r\n cadesplugin.CADESCOM_AllowNone = 0;\r\n cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1;\r\n cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2;\r\n cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4;\r\n cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000;\r\n cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000;\r\n cadesplugin.CADESCOM_UseContainerStore = 0x40000000;\r\n\r\n cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04;\r\n cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07;\r\n\r\n cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00;\r\n cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01;\r\n cadesplugin.ENABLE_CARRIER_CREATE = 0x02;\r\n cadesplugin.ENABLE_ANY_OPERATION = 0x03;\r\n\r\n cadesplugin.CADESCOM_PRODUCT_CSP = 0;\r\n cadesplugin.CADESCOM_PRODUCT_OCSP = 1;\r\n cadesplugin.CADESCOM_PRODUCT_TSP = 2;\r\n\r\n cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001;\r\n cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002;\r\n cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004;\r\n cadesplugin.MEDIA_TYPE_SCARD = 0x00000008;\r\n\r\n cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0;\r\n cadesplugin.AT_KEYEXCHANGE = 1;\r\n cadesplugin.AT_SIGNATURE = 2;\r\n\r\n cadesplugin.CARRIER_FLAG_REMOVABLE = 1;\r\n cadesplugin.CARRIER_FLAG_UNIQUE = 2;\r\n cadesplugin.CARRIER_FLAG_PROTECTED = 4;\r\n cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER = 8;\r\n cadesplugin.CARRIER_FLAG_SECURE_MESSAGING = 16;\r\n cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE = 64;\r\n cadesplugin.CARRIER_FLAG_VIRTUAL = 128;\r\n }\r\n\r\n function async_spawn(generatorFunc) {\r\n function continuer(verb, arg) {\r\n var result;\r\n try {\r\n result = generator[verb](arg);\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n if (result.done) {\r\n return result.value;\r\n } else {\r\n return Promise.resolve(result.value).then(onFulfilled, onRejected);\r\n }\r\n }\r\n var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));\r\n var onFulfilled = continuer.bind(continuer, \"next\");\r\n var onRejected = continuer.bind(continuer, \"throw\");\r\n return onFulfilled();\r\n }\r\n\r\n function isIE() {\r\n // var retVal = ((\"Microsoft Internet Explorer\" == navigator.appName) || // IE < 11\r\n // navigator.userAgent.match(/Trident\\/./i)); // IE 11\r\n return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE');\r\n }\r\n\r\n function isIOS() {\r\n return (navigator.userAgent.match(/ipod/i) ||\r\n navigator.userAgent.match(/ipad/i) ||\r\n navigator.userAgent.match(/iphone/i));\r\n }\r\n\r\n function isNativeMessageSupported()\r\n {\r\n // В IE работаем через NPAPI\r\n if(isIE())\r\n return false;\r\n // В Edge работаем через NativeMessage\r\n if (browserSpecs.name === 'Edg') {\r\n return true;\r\n }\r\n if (browserSpecs.name === 'YaBrowser') {\r\n isYandex = true;\r\n return true;\r\n }\r\n // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии\r\n if(browserSpecs.name === 'Opera') {\r\n isOpera = true;\r\n if(browserSpecs.version >= 33){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n if(browserSpecs.name === 'Firefox') {\r\n isFireFox = true;\r\n if(browserSpecs.version >= 52){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n if(browserSpecs.name === 'Chrome') {\r\n if(browserSpecs.version >= 42){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n //В Сафари начиная с 12 версии нет NPAPI\r\n if(browserSpecs.name === 'Safari') {\r\n isSafari = true;\r\n if(browserSpecs.version >= 12) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // Функция активации объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObject(name) {\r\n if (isIOS()) {\r\n // На iOS для создания объектов используется функция\r\n // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js\r\n return call_ru_cryptopro_npcades_10_native_bridge(\"CreateObject\", [name]);\r\n }\r\n if (isIE()) {\r\n // В Internet Explorer создаются COM-объекты\r\n if (name.match(/X509Enrollment/i)) {\r\n try {\r\n // Объекты CertEnroll пробуем создавать через нашу фабрику,\r\n // если не получилось то через CX509EnrollmentWebClassFactory\r\n var objCertEnrollClassFactory = document.getElementById(\"webClassFactory\");\r\n return objCertEnrollClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n try {\r\n var objWebClassFactory = document.getElementById(\"certEnrollClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (err) {\r\n throw (\"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS\");\r\n }\r\n }\r\n }\r\n // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory\r\n try {\r\n var objWebClassFactory = document.getElementById(\"webClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n // Для версий плагина ниже 2.0.12538\r\n return new ActiveXObject(name);\r\n }\r\n }\r\n // создаются объекты NPAPI\r\n return pluginObject.CreateObject(name);\r\n }\r\n\r\n function decimalToHexString(number) {\r\n if (number < 0) {\r\n number = 0xFFFFFFFF + number + 1;\r\n }\r\n\r\n return number.toString(16).toUpperCase();\r\n }\r\n\r\n function GetMessageFromException(e) {\r\n var err = e.message;\r\n if (!err) {\r\n err = e;\r\n } else if (e.number) {\r\n err += \" (0x\" + decimalToHexString(e.number) + \")\";\r\n }\r\n return err;\r\n }\r\n\r\n function getLastError(exception) {\r\n if(isNativeMessageSupported() || isIE() || isIOS() ) {\r\n return GetMessageFromException(exception);\r\n }\r\n\r\n try {\r\n return pluginObject.getLastError();\r\n } catch(e) {\r\n return GetMessageFromException(exception);\r\n }\r\n }\r\n\r\n // Функция для удаления созданных объектов\r\n function ReleasePluginObjects() {\r\n return cpcsp_chrome_nmcades.ReleasePluginObjects();\r\n }\r\n\r\n // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObjectAsync(name) {\r\n return pluginObject.CreateObjectAsync(name);\r\n }\r\n\r\n //Функции для IOS\r\n var ru_cryptopro_npcades_10_native_bridge = {\r\n callbacksCount : 1,\r\n callbacks : {},\r\n\r\n // Automatically called by native layer when a result is available\r\n resultForCallback : function resultForCallback(callbackId, resultArray) {\r\n var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId];\r\n if (!callback) return;\r\n callback.apply(null,resultArray);\r\n },\r\n\r\n // Use this in javascript to request native objective-c code\r\n // functionName : string (I think the name is explicit :p)\r\n // args : array of arguments\r\n // callback : function with n-arguments that is going to be called when the native code returned\r\n call : function call(functionName, args, callback) {\r\n var hasCallback = callback && typeof callback === \"function\";\r\n var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0;\r\n\r\n if (hasCallback)\r\n ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback;\r\n\r\n var iframe = document.createElement(\"IFRAME\");\r\n var arrObjs = new Array(\"_CPNP_handle\");\r\n try{\r\n iframe.setAttribute(\"src\", \"cpnp-js-call:\" + functionName + \":\" + callbackId+ \":\" + encodeURIComponent(JSON.stringify(args, arrObjs)));\r\n } catch(e){\r\n alert(e);\r\n }\r\n document.documentElement.appendChild(iframe);\r\n iframe.parentNode.removeChild(iframe);\r\n iframe = null;\r\n }\r\n };\r\n\r\n function call_ru_cryptopro_npcades_10_native_bridge(functionName, array){\r\n var tmpobj;\r\n var ex;\r\n ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function(e, response){\r\n ex = e;\r\n var str='tmpobj='+response;\r\n eval(str);\r\n if (typeof (tmpobj) === \"string\"){\r\n tmpobj = tmpobj.replace(/\\\\\\n/gm, \"\\n\");\r\n tmpobj = tmpobj.replace(/\\\\\\r/gm, \"\\r\");\r\n }\r\n });\r\n if(ex)\r\n throw ex;\r\n return tmpobj;\r\n }\r\n\r\n function show_firefox_missing_extension_dialog()\r\n {\r\n if (!window.cadesplugin_skip_extension_install)\r\n {\r\n var ovr = document.createElement('div');\r\n ovr.id = \"cadesplugin_ovr\";\r\n ovr.style = \"visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)\";\r\n ovr.innerHTML = \"
\" +\r\n \"\" +\r\n \"

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.\" +\r\n \"

Скачать расширение

\" +\r\n \"
\";\r\n document.getElementsByTagName(\"Body\")[0].appendChild(ovr);\r\n document.getElementById(\"cadesplugin_close_install\").addEventListener('click',function()\r\n {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n\r\n ovr.addEventListener('click',function()\r\n {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n ovr.style.visibility=\"visible\";\r\n }\r\n }\r\n function firefox_or_safari_nmcades_onload() {\r\n if (window.cadesplugin_extension_loaded_callback)\r\n window.cadesplugin_extension_loaded_callback();\r\n isFireFoxExtensionLoaded = true;\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n\r\n function nmcades_api_onload() {\r\n if (!isIE() && !isFireFox && !isSafari) {\r\n if (window.cadesplugin_extension_loaded_callback)\r\n window.cadesplugin_extension_loaded_callback();\r\n }\r\n window.postMessage(\"cadesplugin_echo_request\", \"*\");\r\n window.addEventListener(\"message\", function (event){\r\n if (typeof(event.data) !== \"string\" || !event.data.match(\"cadesplugin_loaded\"))\r\n return;\r\n if (cadesplugin_loaded_event_recieved)\r\n return;\r\n if(isFireFox || isSafari)\r\n {\r\n // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js\r\n var url = event.data.substring(event.data.indexOf(\"url:\") + 4);\r\n if (!url.match(\"^moz-extension://[a-zA-Z0-9-]+/nmcades_plugin_api.js$\")\r\n && !url.match(\"^safari-extension://[a-zA-Z0-9-]+/[a-zA-Z0-9]+/nmcades_plugin_api.js$\"))\r\n {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"Bad url \\\"\" + url + \"\\\" for load CryptoPro Extension for CAdES Browser plug-in\");\r\n plugin_loaded_error();\r\n return;\r\n }\r\n var fileref = document.createElement('script');\r\n fileref.setAttribute(\"type\", \"text/javascript\");\r\n fileref.setAttribute(\"src\", url);\r\n fileref.onerror = plugin_loaded_error;\r\n fileref.onload = firefox_or_safari_nmcades_onload;\r\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\r\n }else {\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n cadesplugin_loaded_event_recieved = true;\r\n }, false);\r\n }\r\n\r\n //Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari\r\n function load_extension()\r\n {\r\n if(isFireFox || isSafari){\r\n // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера.\r\n nmcades_api_onload();\r\n } else {\r\n // в асинхронном варианте для Yandex и Opera подключаем расширение из Opera store.\r\n if (isOpera || isYandex) {\r\n var fileref = document.createElement('script');\r\n fileref.setAttribute(\"type\", \"text/javascript\");\r\n fileref.setAttribute(\"src\", \"chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js\");\r\n fileref.onerror = plugin_loaded_error;\r\n fileref.onload = nmcades_api_onload;\r\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\r\n } else {\r\n // для Chrome, Chromium, Chromium Edge расширение из Chrome store\r\n var fileref = document.createElement('script');\r\n fileref.setAttribute(\"type\", \"text/javascript\");\r\n fileref.setAttribute(\"src\", \"chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js\");\r\n fileref.onerror = plugin_loaded_error;\r\n fileref.onload = nmcades_api_onload;\r\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\r\n }\r\n }\r\n }\r\n\r\n //Загружаем плагин для NPAPI\r\n function load_npapi_plugin()\r\n {\r\n var elem = document.createElement('object');\r\n elem.setAttribute(\"id\", \"cadesplugin_object\");\r\n elem.setAttribute(\"type\", \"application/x-cades\");\r\n elem.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem);\r\n pluginObject = document.getElementById(\"cadesplugin_object\");\r\n if(isIE())\r\n {\r\n var elem1 = document.createElement('object');\r\n elem1.setAttribute(\"id\", \"certEnrollClassFactory\");\r\n elem1.setAttribute(\"classid\", \"clsid:884e2049-217d-11da-b2a4-000e7bbb2b09\");\r\n elem1.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem1);\r\n var elem2 = document.createElement('object');\r\n elem2.setAttribute(\"id\", \"webClassFactory\");\r\n elem2.setAttribute(\"classid\", \"clsid:B04C8637-10BD-484E-B0DA-B8A039F60024\");\r\n elem2.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem2);\r\n }\r\n }\r\n\r\n //Отправляем событие что все ок.\r\n function plugin_loaded()\r\n {\r\n plugin_resolved = 1;\r\n if(canPromise)\r\n {\r\n plugin_resolve();\r\n }else {\r\n window.postMessage(\"cadesplugin_loaded\", \"*\");\r\n }\r\n }\r\n\r\n //Отправляем событие что сломались.\r\n function plugin_loaded_error(msg)\r\n {\r\n if(typeof(msg) === 'undefined' || typeof(msg) === 'object')\r\n msg = \"Плагин недоступен\";\r\n plugin_resolved = 1;\r\n if(canPromise)\r\n {\r\n plugin_reject(msg);\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n }\r\n\r\n //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку\r\n function check_load_timeout()\r\n {\r\n if(plugin_resolved === 1)\r\n return;\r\n if(isFireFox)\r\n {\r\n if (!isFireFoxExtensionLoaded)\r\n show_firefox_missing_extension_dialog();\r\n }\r\n plugin_resolved = 1;\r\n if(canPromise)\r\n {\r\n plugin_reject(\"Истекло время ожидания загрузки плагина\");\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n\r\n }\r\n\r\n //Вспомогательная функция для NPAPI\r\n function createPromise(arg)\r\n {\r\n return new Promise(arg);\r\n }\r\n\r\n function check_npapi_plugin (){\r\n try {\r\n var oAbout = CreateObject(\"CAdESCOM.About\");\r\n plugin_loaded();\r\n }\r\n catch (err) {\r\n document.getElementById(\"cadesplugin_object\").style.display = 'none';\r\n // Объект создать не удалось, проверим, установлен ли\r\n // вообще плагин. Такая возможность есть не во всех браузерах\r\n var mimetype = navigator.mimeTypes[\"application/x-cades\"];\r\n if (mimetype) {\r\n var plugin = mimetype.enabledPlugin;\r\n if (plugin) {\r\n plugin_loaded_error(\"Плагин загружен, но не создаются обьекты\");\r\n }else\r\n {\r\n plugin_loaded_error(\"Ошибка при загрузке плагина\");\r\n }\r\n }else\r\n {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n }\r\n }\r\n }\r\n\r\n //Проверяем работает ли плагин\r\n function check_plugin_working()\r\n {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = \"\";\r\n var isIeLessThan9 = (div.getElementsByTagName(\"i\").length === 1);\r\n if (isIeLessThan9) {\r\n plugin_loaded_error(\"Internet Explorer версии 8 и ниже не поддерживается\");\r\n return;\r\n }\r\n\r\n if(isNativeMessageSupported())\r\n {\r\n load_extension();\r\n }else if(!canPromise) {\r\n window.addEventListener(\"message\", function (event){\r\n if (event.data !== \"cadesplugin_echo_request\")\r\n return;\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n },\r\n false);\r\n }else\r\n {\r\n if(document.readyState === \"complete\"){\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n } else {\r\n window.addEventListener(\"load\", function (event) {\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n }, false);\r\n }\r\n }\r\n }\r\n\r\n function set_pluginObject(obj)\r\n {\r\n pluginObject = obj;\r\n }\r\n\r\n function is_capilite_enabled()\r\n {\r\n if ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP)\r\n return true;\r\n return false;\r\n };\r\n\r\n //Export\r\n cadesplugin.JSModuleVersion = \"2.3.2\";\r\n cadesplugin.async_spawn = async_spawn;\r\n cadesplugin.set = set_pluginObject;\r\n cadesplugin.set_log_level = set_log_level;\r\n cadesplugin.getLastError = getLastError;\r\n cadesplugin.is_capilite_enabled = is_capilite_enabled;\r\n\r\n if(isNativeMessageSupported())\r\n {\r\n cadesplugin.CreateObjectAsync = CreateObjectAsync;\r\n cadesplugin.ReleasePluginObjects = ReleasePluginObjects;\r\n }\r\n\r\n if(!isNativeMessageSupported())\r\n {\r\n cadesplugin.CreateObject = CreateObject;\r\n }\r\n\r\n if(window.cadesplugin_load_timeout)\r\n {\r\n setTimeout(check_load_timeout, window.cadesplugin_load_timeout);\r\n }\r\n else\r\n {\r\n setTimeout(check_load_timeout, 20000);\r\n }\r\n\r\n set_constantValues();\r\n\r\n cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR;\r\n window.cadesplugin = cadesplugin;\r\n check_plugin_working();\r\n}());\r\n","import { ISSUER_TAGS_TRANSLATIONS, SUBJECT_TAGS_TRANSLATIONS } from '../../constants';\nimport { TagTranslation } from '../../helpers/_parseCertInfo';\nimport { exportBase64 } from './exportBase64';\nimport { getAlgorithm } from './getAlgorithm';\nimport { getCadesProp } from './getCadesProp';\nimport { getDecodedExtendedKeyUsage, ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';\nimport { getExtendedKeyUsage } from './getExtendedKeyUsage';\nimport { getInfo } from './getInfo';\nimport { hasExtendedKeyUsage } from './hasExtendedKeyUsage';\nimport { isValid } from './isValid';\n\nexport type CadesCertificate = any;\n\nexport class Certificate {\n constructor(\n public _cadesCertificate: CadesCertificate,\n public name: string,\n public issuerName: string,\n public subjectName: string,\n public thumbprint: string,\n public validFrom: string,\n public validTo: string,\n ) {}\n\n public getOwnerInfo(): Promise {\n return getInfo.call(this, SUBJECT_TAGS_TRANSLATIONS, 'SubjectName');\n }\n\n public getIssuerInfo(): Promise {\n return getInfo.call(this, ISSUER_TAGS_TRANSLATIONS, 'IssuerName');\n }\n\n public getExtendedKeyUsage(): Promise {\n return getExtendedKeyUsage.call(this);\n }\n\n public getDecodedExtendedKeyUsage(): Promise {\n return getDecodedExtendedKeyUsage.call(this);\n }\n\n public getAlgorithm(): Promise {\n return getAlgorithm.call(this);\n }\n\n public getCadesProp(propName): Promise {\n return getCadesProp.call(this, propName);\n }\n\n public isValid(): Promise {\n return isValid.call(this);\n }\n\n public exportBase64(): Promise {\n return exportBase64.call(this);\n }\n\n public hasExtendedKeyUsage(oids): Promise {\n return hasExtendedKeyUsage.call(this, oids);\n }\n}\n","export const CADESCOM_ATTRIBUTE_OTHER = -1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CADESCOM_AllowNoOutstandingRequest = 1;\nexport const CADESCOM_AllowNone = 0;\nexport const CADESCOM_AllowUntrustedCertificate = 2;\nexport const CADESCOM_AllowUntrustedRoot = 4;\nexport const CADESCOM_BASE64_TO_BINARY = 0x01;\nexport const CADESCOM_CADES_BES = 1;\nexport const CADESCOM_CADES_DEFAULT = 0;\nexport const CADESCOM_CADES_T = 5;\nexport const CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\nexport const CADESCOM_CONTAINER_STORE = 100;\nexport const CADESCOM_CURRENT_USER_STORE = 2;\nexport const CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\nexport const CADESCOM_DISPLAY_DATA_CONTENT = 1;\nexport const CADESCOM_DISPLAY_DATA_NONE = 0;\nexport const CADESCOM_ENCODE_ANY = -1;\nexport const CADESCOM_ENCODE_BASE64 = 0;\nexport const CADESCOM_ENCODE_BINARY = 1;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\nexport const CADESCOM_HASH_ALGORITHM_MD2 = 1;\nexport const CADESCOM_HASH_ALGORITHM_MD4 = 2;\nexport const CADESCOM_HASH_ALGORITHM_MD5 = 3;\nexport const CADESCOM_HASH_ALGORITHM_SHA1 = 0;\nexport const CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\nexport const CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\nexport const CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\nexport const CADESCOM_LOCAL_MACHINE_STORE = 1;\nexport const CADESCOM_PKCS7_TYPE = 65535;\nexport const CADESCOM_STRING_TO_UCS2LE = 0x00;\nexport const CADESCOM_SkipInstallToStore = 268435456;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\nexport const CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\nexport const CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\nexport const CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\nexport const CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\nexport const CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\nexport const CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\nexport const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\nexport const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\nexport const CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\nexport const CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\nexport const CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\nexport const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\nexport const CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\nexport const CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\nexport const CAPICOM_CURRENT_USER_STORE = 2;\nexport const CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\nexport const CAPICOM_EKU_CLIENT_AUTH = 2;\nexport const CAPICOM_EKU_OTHER = 0;\nexport const CAPICOM_EKU_SMARTCARD_LOGON = 5;\nexport const CAPICOM_LOCAL_MACHINE_STORE = 1;\nexport const CAPICOM_MEMORY_STORE = 0;\nexport const CAPICOM_MY_STORE = 'My';\nexport const CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\nexport const CAPICOM_OID_OTHER = 0;\nexport const CAPICOM_PROPID_ACCESS_STATE = 14;\nexport const CAPICOM_PROPID_ARCHIVED = 19;\nexport const CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;\nexport const CAPICOM_PROPID_AUTO_ENROLL = 21;\nexport const CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;\nexport const CAPICOM_PROPID_CTL_USAGE = 9;\nexport const CAPICOM_PROPID_DATE_STAMP = 27;\nexport const CAPICOM_PROPID_DESCRIPTION = 13;\nexport const CAPICOM_PROPID_EFS = 17;\nexport const CAPICOM_PROPID_ENHKEY_USAGE = 9;\nexport const CAPICOM_PROPID_ENROLLMENT = 26;\nexport const CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;\nexport const CAPICOM_PROPID_FIRST_RESERVED = 66;\nexport const CAPICOM_PROPID_FIRST_USER = 0x00008000;\nexport const CAPICOM_PROPID_FORTEZZA_DATA = 18;\nexport const CAPICOM_PROPID_FRIENDLY_NAME = 11;\nexport const CAPICOM_PROPID_HASH_PROP = 3;\nexport const CAPICOM_PROPID_IE30_RESERVED = 7;\nexport const CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;\nexport const CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;\nexport const CAPICOM_PROPID_KEY_CONTEXT = 5;\nexport const CAPICOM_PROPID_KEY_IDENTIFIER = 20;\nexport const CAPICOM_PROPID_KEY_PROV_HANDLE = 1;\nexport const CAPICOM_PROPID_KEY_PROV_INFO = 2;\nexport const CAPICOM_PROPID_KEY_SPEC = 6;\nexport const CAPICOM_PROPID_LAST_RESERVED = 0x00007fff;\nexport const CAPICOM_PROPID_LAST_USER = 0x0000ffff;\nexport const CAPICOM_PROPID_MD5_HASH = 4;\nexport const CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;\nexport const CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;\nexport const CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;\nexport const CAPICOM_PROPID_PVK_FILE = 12;\nexport const CAPICOM_PROPID_RENEWAL = 64;\nexport const CAPICOM_PROPID_SHA1_HASH = 3;\nexport const CAPICOM_PROPID_SIGNATURE_HASH = 15;\nexport const CAPICOM_PROPID_SMART_CARD_DATA = 16;\nexport const CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;\nexport const CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;\nexport const CAPICOM_PROPID_UNKNOWN = 0;\nexport const CAPICOM_SMART_CARD_USER_STORE = 4;\nexport const CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;\nexport const CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\nexport const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\nexport const CAPICOM_STORE_OPEN_READ_ONLY = 0;\nexport const CAPICOM_STORE_OPEN_READ_WRITE = 1;\nexport const CHECK_NONE = 0;\nexport const CHECK_OFFLINE_REVOCATION_STATUS = 16;\nexport const CHECK_ONLINE_REVOCATION_STATUS = 8;\nexport const CHECK_SIGNATURE_VALIDITY = 4;\nexport const CHECK_TIME_VALIDITY = 2;\nexport const CHECK_TRUSTED_ROOT = 1;\nexport const LOG_LEVEL_DEBUG = 4;\nexport const LOG_LEVEL_ERROR = 1;\nexport const LOG_LEVEL_INFO = 2;\nexport const TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;\nexport const TRUST_CTL_IS_NOT_TIME_VALID = 131072;\nexport const TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;\nexport const TRUST_IS_CYCLIC = 128;\nexport const TRUST_IS_NOT_SIGNATURE_VALID = 8;\nexport const TRUST_IS_NOT_TIME_NESTED = 2;\nexport const TRUST_IS_NOT_TIME_VALID = 1;\nexport const TRUST_IS_NOT_VALID_FOR_USAGE = 16;\nexport const TRUST_IS_PARTIAL_CHAIN = 65536;\nexport const TRUST_IS_REVOKED = 4;\nexport const TRUST_IS_UNTRUSTED_ROOT = 32;\nexport const TRUST_REVOCATION_STATUS_UNKNOWN = 64;\nexport const XmlDsigGost3410Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\nexport const XmlDsigGost3410UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411';\nexport const XmlDsigGost3411Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\nexport const XmlDsigGost3411UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr3411';\n","import { TagsTranslations } from './tags-translations';\n\nexport const ISSUER_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UN', 'UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN', 'commonName'], translation: 'Удостоверяющий центр' },\n { possibleNames: ['C', 'countryName'], translation: 'Страна' },\n { possibleNames: ['S', 'ST', 'stateOrProvinceName'], translation: 'Регион' },\n { possibleNames: ['STREET', 'streetAddress'], translation: 'Адрес' },\n { possibleNames: ['O', 'organizationName'], translation: 'Компания' },\n { possibleNames: ['OU', 'organizationalUnitName'], translation: 'Тип' },\n { possibleNames: ['T', 'TITLE'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'ИННФЛ', 'ИНН ФЛ', 'INN', 'ИНН физического лица'], translation: 'ИНН' },\n { possibleNames: ['ИННЮЛ', 'ИНН ЮЛ', 'INN LE', 'INNLE', 'ИНН организации'], translation: 'ИНН организации' },\n { possibleNames: ['E', 'email', 'emailAddress', 'pkcs9email'], translation: 'Email' },\n { possibleNames: ['L', 'localityName'], translation: 'Город' },\n];\n","export const OIDS_DICTIONARY = {\n '1.2.643.2.2.34.6': 'Пользователь Центра Регистрации',\n '1.2.643.2.39.1.1': 'Использование в программных продуктах системы \"1С:Предприятие 8\"',\n '1.2.643.3.131.1.1': 'ИНН',\n '1.2.643.100.4': 'ИНН организации',\n '1.2.643.100.1': 'ОГРН',\n '1.2.643.100.5': 'ОГРНИП',\n '1.2.643.100.3': 'СНИЛС',\n '1.2.643.3.141.1.1': 'РНС ФСС',\n '1.2.643.3.141.1.2': 'КП ФСС',\n '1.2.643.3.2.100.65.13.11': 'Использование в системе АИС \"Госзакупки\" Сахалинской области.',\n '1.2.643.3.8.100.1': 'Сертификат типа \"ekey-ГОСТ\"',\n '1.2.643.3.8.100.1.1': 'Общее использование в системах ИОК без права заверения финансовых документов',\n '1.2.643.3.8.100.1.10':\n 'Для участия в электронных торгах и подписания государственного контракта в информационных системах Тендерного комитета города Москвы уполномоченными лицами участников размещения государственного заказа города Москвы',\n '1.2.643.3.8.100.1.11':\n 'Подписание электронных документов в автоматизированной информационной системе размещения государственного и муниципального заказа Саратовской области',\n '1.2.643.3.8.100.1.12': 'Использование в системе государственного заказа Иркутской области',\n '1.2.643.3.8.100.1.13':\n 'Использование в электронной торговой площадке агентства государственного заказа Красноярского края',\n '1.2.643.3.8.100.1.14': 'Использование в электронной торговой площадке \"Тендер\"',\n '1.2.643.3.8.100.1.2': 'Передача отчетности по ТКС',\n '1.2.643.3.8.100.1.3': 'Оформление взаимных обязательств, соглашений, договоров, актов и т.п.',\n '1.2.643.3.8.100.1.4': 'Внутрикорпоративный документооборот',\n '1.2.643.3.8.100.1.5': 'Использование в системах электронной торговли',\n '1.2.643.3.8.100.1.6': 'Использование в торгово-закупочной системе \"ЭЛЕКТРА\"',\n '1.2.643.3.8.100.1.7': 'Использование в системе Портал государственных закупок Ставропольского края.',\n '1.2.643.3.8.100.1.8': 'Использование в Единой системе электронной торговли B2B-Center и B2G.',\n '1.2.643.3.8.100.1.9':\n 'Для участия в электронных торгах и подписания государственного контракта в электронной площадке ОАО «ЕЭТП» уполномоченными лицами участников размещения государственного или муниципального заказа',\n '1.2.643.5.1.24.2.1.3':\n 'Формирование документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.1.3.1':\n 'Формирование кадастровым инженером документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.2.2': 'Формирование документов как результата оказания услуги со стороны органов регистрации прав',\n '1.2.643.5.1.24.2.2.3':\n 'Формирование документов для получения государственных услуг в сфере государственной регистрации прав на недвижимое имущество и сделок с ним со стороны заявителя',\n '1.2.643.6.2.1.7.1':\n 'Использование единоличным исполнительным органом юридического лица или уполномоченными представителями юридического лица в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских и иных прав и обязанностей в сфере негосударственного пенсионного обеспечения, негосударственного пенсионного страхования, в сфере деятельности паевых инвестиционных фондов, акционерных инвестиционных фондов, профессиональных участников рынка ценных бумаг, а также связанной с обслуживанием указанной деятельности услуг кредитных и иных организаций',\n '1.2.643.6.2.1.7.2':\n 'Использование физическим лицом в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских прав и обязанностей в отношении инвестиционных паев паевых инвестиционных фондов, в том числе отношения, связанные с учетом и/или фиксацией прав на инвестиционные паи паевых инвестиционных фондов',\n '1.2.643.6.3':\n 'Использование в электронных торговых системах и в программном обеспечении, связанным с обменом электронных сообщений',\n '1.2.643.6.3.1.1': 'Использование на электронных площадок отобранных для проведения аукционах в электронной форме',\n '1.2.643.6.3.1.2.1': 'Тип участника - Юридическое лицо',\n '1.2.643.6.3.1.2.2': 'Тип участника - Физическое лицо',\n '1.2.643.6.3.1.2.3': 'Тип участника - Индивидуальный предприниматель',\n '1.2.643.6.3.1.3.1': 'Участник размещения заказа',\n '1.2.643.6.3.1.4.1': 'Администратор организации',\n '1.2.643.6.3.1.4.2': 'Уполномоченный специалист',\n '1.2.643.6.3.1.4.3': 'Специалист с правом подписи контракта',\n '1.2.840.113549.1.9.2': 'Неструктурированное имя',\n '1.3.6.1.4.1.24138.1.1.8.1': 'Обеспечение юридической значимости в Системе \"Электронная Торговая Площадка\"',\n '1.3.6.1.4.1.29919.21': 'Использование в системе Портал государственных закупок Ростовской области \"Рефери\".',\n '1.3.6.1.5.5.7.3.2': 'Проверка подлинности клиента',\n '1.3.6.1.5.5.7.3.4': 'Защищенная электронная почта',\n '1.3.643.3.8.100.15': 'Использование в ЭТП \"uTender\"',\n};\n","import { TagsTranslations } from './tags-translations';\n\nexport const SUBJECT_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UN', 'UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN', 'commonName'], translation: 'Владелец' },\n { possibleNames: ['SN', 'surname'], translation: 'Фамилия' },\n { possibleNames: ['G', 'givenName', 'gn'], translation: 'Имя Отчество' },\n { possibleNames: ['C', 'countryName'], translation: 'Страна' },\n { possibleNames: ['S', 'ST', 'stateOrProvinceName'], translation: 'Регион' },\n { possibleNames: ['STREET', 'streetAddress'], translation: 'Адрес' },\n { possibleNames: ['O', 'organizationName'], translation: 'Компания' },\n { possibleNames: ['OU', 'organizationalUnitName'], translation: 'Отдел/подразделение' },\n { possibleNames: ['T', 'TITLE'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'ИННФЛ', 'ИНН ФЛ', 'INN', 'ИНН физического лица'], translation: 'ИНН' },\n { possibleNames: ['ИННЮЛ', 'ИНН ЮЛ', 'INN LE', 'INNLE', 'ИНН организации'], translation: 'ИНН организации' },\n { possibleNames: ['E', 'email', 'emailAddress', 'pkcs9email'], translation: 'Email' },\n { possibleNames: ['L', 'localityName'], translation: 'Город' },\n];\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Экспортирует сертификат в формате base64\n *\n * @returns сертификат в формате base64\n */\nexport const exportBase64 = _afterPluginsLoaded(function (): string {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function exportBase64(): string {\n let base64: string;\n\n try {\n base64 = __cadesAsyncToken__ + cadesCertificate.Export(0);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при экспорте сертификата');\n }\n\n return base64;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\ninterface AlgorithmInfo {\n algorithm: string;\n oid: string;\n}\n\n/**\n * Возвращает информацию об алгоритме сертификата\n *\n * @returns информацию об алгоритме и его OID'е\n */\nexport const getAlgorithm = _afterPluginsLoaded(function (): AlgorithmInfo {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getAlgorithm(): AlgorithmInfo {\n const algorithmInfo: AlgorithmInfo = {\n algorithm: null,\n oid: null,\n };\n let cadesPublicKey;\n\n try {\n cadesPublicKey = __cadesAsyncToken__ + cadesCertificate.PublicKey();\n cadesPublicKey = __cadesAsyncToken__ + cadesPublicKey.Algorithm;\n algorithmInfo.algorithm = __cadesAsyncToken__ + cadesPublicKey.FriendlyName;\n algorithmInfo.oid = __cadesAsyncToken__ + cadesPublicKey.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении алгоритма');\n }\n\n return algorithmInfo;\n }),\n );\n});\n","import { OIDS_DICTIONARY } from '../../constants';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\nexport interface ExtendedKeysTranslations {\n [key: string]: string | null;\n}\n\n/**\n * Возвращает расшифрованные ОИД'ы сертификата\n *\n * @returns словарь расшифрованных ОИД'ов\n */\nexport const getDecodedExtendedKeyUsage = _afterPluginsLoaded(async function (): Promise {\n const certificateOids = await (this as Certificate).getExtendedKeyUsage();\n\n return certificateOids.reduce(\n (decodedOids, oidCode) => ({\n ...decodedOids,\n [oidCode]: OIDS_DICTIONARY[oidCode] || null,\n }),\n {},\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает ОИД'ы сертификата\n *\n * @returns список ОИД'ов\n */\nexport const getExtendedKeyUsage = _afterPluginsLoaded(function (): string[] {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getExtendedKeyUsage(): string[] {\n const OIDS: string[] = [];\n let count: any;\n\n try {\n count = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n count = __cadesAsyncToken__ + count.EKUs;\n count = __cadesAsyncToken__ + count.Count;\n\n if (count > 0) {\n while (count > 0) {\n let cadesExtendedKeyUsage;\n\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.EKUs;\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.Item(count);\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.OID;\n\n OIDS.push(cadesExtendedKeyUsage);\n\n count--;\n }\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || \"Ошибка при получении ОИД'ов\");\n }\n\n return OIDS;\n }),\n );\n});\n","import { TagsTranslations } from '../../constants/tags-translations';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { _parseCertInfo, TagTranslation } from '../../helpers/_parseCertInfo';\nimport { getCadesProp } from './getCadesProp';\n\n/**\n * Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам\n *\n * @param tags = словарь\n * @param entitiesPath = путь к разбираемой сущности\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const getInfo = _afterPluginsLoaded(async function (\n tags: TagsTranslations[],\n entitiesPath: string,\n): Promise {\n let entities: string;\n\n try {\n entities = await getCadesProp.call(this, entitiesPath);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при извлечении информации из сертификата');\n }\n\n return _parseCertInfo(tags, entities);\n});\n","import { OIDS_DICTIONARY } from '../constants';\nimport { TagsTranslations } from '../constants/tags-translations';\n\nexport interface TagTranslation {\n description: string;\n title: string;\n isTranslated: boolean;\n}\n\n/**\n * Парсит информацию из строки с информацией о сертификате\n *\n * @param tagsTranslations - словарь с расшифровками тэгов\n * @param rawInfo - данные для парсинга\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const _parseCertInfo = (tagsTranslations: TagsTranslations[], rawInfo: string): TagTranslation[] => {\n const extractedEntities: string[] = rawInfo.match(/([а-яА-Яa-zA-Z0-9\\s.]+)=(?:(\"[^\"]+?\")|(.+?))(?:,|$)/g);\n\n if (extractedEntities) {\n return extractedEntities.map((group) => {\n const segmentsMatch = group.trim().match(/^([а-яА-Яa-zA-Z0-9\\s.]+)=(.+?),?$/);\n let title = segmentsMatch?.[1];\n // Вырезаем лишние кавычки\n const description = segmentsMatch?.[2]?.replace(/^\"(.*)\"/, '$1')?.replace(/\"{2}/g, '\"');\n const oidIdentifierMatch = title?.match(/^OID\\.(.*)/);\n const oidIdentifier = oidIdentifierMatch?.[1];\n let isTranslated = false;\n\n // Если нашли в тайтле ОИД, пытаемся его расшифровать\n if (oidIdentifier) {\n const oidTranslation = OIDS_DICTIONARY[oidIdentifier];\n\n if (oidTranslation) {\n title = oidTranslation;\n isTranslated = true;\n }\n }\n\n const tagTranslation = tagsTranslations.find((tag) => tag.possibleNames.find((name) => name === title))\n ?.translation;\n\n if (tagTranslation) {\n title = tagTranslation;\n isTranslated = true;\n }\n\n return { description, title, isTranslated };\n });\n }\n};\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет наличие ОИД'а (ОИД'ов) у сертификата\n *\n * @param oids - ОИД'ы для проверки\n * @returns флаг наличия ОИД'ов у сертификата\n */\nexport const hasExtendedKeyUsage = _afterPluginsLoaded(async function (oids: string | string[]): Promise {\n const certOids = await (this as Certificate).getExtendedKeyUsage();\n\n let result: boolean;\n\n if (Array.isArray(oids)) {\n result = oids.every((oidToCheck) => certOids.some((certOid) => certOid === oidToCheck));\n } else {\n result = certOids.some((certOid) => certOid === oids);\n }\n\n return result;\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет действительность сертификата\n *\n * @returns флаг валидности\n */\nexport const isValid = _afterPluginsLoaded(function (): boolean {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function isValid() {\n let isValid;\n\n try {\n isValid = __cadesAsyncToken__ + cadesCertificate.IsValid();\n isValid = __cadesAsyncToken__ + isValid.Result;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при проверке сертификата');\n }\n\n return Boolean(isValid);\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { _isSupportedCadesVersion } from '../helpers/_isSupportedCadesVersion';\nimport { _isSupportedCSPVersion } from '../helpers/_isSupportedCSPVersion';\nimport { getSystemInfo, SystemInfo } from './getSystemInfo';\n\n/**\n * Проверяет корректность настроек ЭП на машине\n *\n * @returns флаг корректности настроек\n */\nexport const isValidSystemSetup = _afterPluginsLoaded(\n async (): Promise => {\n let systemInfo: SystemInfo;\n\n try {\n systemInfo = await getSystemInfo();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Настройки ЭП на данной машине не верны');\n }\n\n if (!_isSupportedCadesVersion(systemInfo.cadesVersion)) {\n throw new Error('Не поддерживаемая версия плагина');\n }\n\n if (!_isSupportedCSPVersion(systemInfo.cspVersion)) {\n throw new Error('Не поддерживаемая версия CSP');\n }\n\n return true;\n },\n);\n","export const _isSupportedCadesVersion = (version: string): boolean => {\n const match = version.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n\n if (!match) {\n return false;\n }\n\n const [, major, minor, patch] = match;\n\n if (Number(major) < 2) {\n return false;\n }\n\n if (Number(major) === 2 && Number(patch) < 12438) {\n return false;\n }\n\n return true;\n};\n","const oldestSupportedCSPVersion = 4.0;\n\nexport const _isSupportedCSPVersion = (version: string): boolean => {\n version = version.match(/\\d+?\\b(?:\\.\\d+)?/)?.[0];\n\n return Number(version) >= oldestSupportedCSPVersion;\n};\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\n\n/**\n * Создает XML подпись для документа в формате XML\n *\n * @param thumbprint - отпечаток сертификата\n * @param unencryptedMessage - подписываемое сообщение в формате XML\n * @returns подпись\n */\nexport const createXMLSignature = _afterPluginsLoaded(\n async (thumbprint: string, unencryptedMessage: string): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createXMLSignature(): string {\n let cadesSigner;\n let cadesSignedXML;\n\n try {\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n cadesSignedXML = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.SignedXML');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n try {\n const signatureMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n const digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n void (__cadesAsyncToken__ + cadesSigner.propset_CheckCertificate(true));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_Content(unencryptedMessage));\n void (\n __cadesAsyncToken__ +\n cadesSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED)\n );\n void (__cadesAsyncToken__ + cadesSignedXML.propset_SignatureMethod(signatureMethod));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_DigestMethod(digestMethod));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedXML.Sign(cadesSigner);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку из хранилища пользователя\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesUserCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища пользователя');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов из хранилища пользователя',\n );\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов в хранилище пользователя');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден в хранилище пользователя`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата из хранилища пользователя',\n );\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку из хранилища закрытого ключа\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesContainerCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища закрытого ключа');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) ||\n 'Ошибка получения списка сертификатов из хранилища закрытого ключа',\n );\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов в хранилище закрытого ключа');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден в хранилище закрытого ключа`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата из хранилища закрытого ключа',\n );\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Создает отсоединенную подпись хеша по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\n\nexport const createDetachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, messageHash: string, signType: SignType = 'PKCS7'): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedData.SignHash(cadesHashedData, cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const addDetachedSignature = _afterPluginsLoaded(\n async (\n thumbprint: string,\n signedMessage: string | ArrayBuffer,\n messageHash: string,\n signType: SignType = 'PKCS7',\n ): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyHash(cadesHashedData, signedMessage, signTypeConst));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Создает присоединенную подпись сообщения по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param message - подписываемое сообщение\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const createAttachedSignature = _afterPluginsLoaded(\n async (\n thumbprint: string,\n unencryptedMessage: string | ArrayBuffer,\n signType: SignType = 'PKCS7',\n ): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createAttachedSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let messageBase64;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const addAttachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, signedMessage: string | ArrayBuffer, signType: SignType = 'PKCS7'): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addAttachedSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let messageBase64;\n\n try {\n messageBase64 = Buffer.from(signedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, signTypeConst));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит\n * https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B8%D0%B1%D0%BE%D0%B3_(%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F)\n *\n * @param unencryptedMessage - сообщение для хеширования\n *\n * @returns хеш\n */\nexport const createHash = _afterPluginsLoaded(\n async (unencryptedMessage: string | ArrayBuffer): Promise => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function createHash(): string {\n const cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n let messageBase64;\n let hash;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesHashedData.Hash(messageBase64));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации хэширования');\n }\n\n try {\n hash = __cadesAsyncToken__ + cadesHashedData.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при создании хэша');\n }\n\n return hash;\n }),\n );\n },\n);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP\n */\nexport const getCspVersion = _afterPluginsLoaded((): string => {\n let cspVersion = null;\n\n return eval(\n _generateCadesFn(function getCspVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n cspVersion = __cadesAsyncToken__ + cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении версии системы');\n }\n\n return cspVersion;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о плагине\n */\nexport const getPluginVersion = _afterPluginsLoaded((): string => {\n let cadesVersion = null;\n\n return eval(\n _generateCadesFn(function getPluginVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n\n if (!cadesVersion) {\n cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n cadesVersion = __cadesAsyncToken__ + cadesVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о плагине');\n }\n\n return cadesVersion;\n }),\n );\n});\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://cryptoPro/webpack/universalModuleDefinition","webpack://cryptoPro/webpack/bootstrap","webpack://cryptoPro/./helpers/_afterPluginsLoaded.ts","webpack://cryptoPro/./helpers/_extractMeaningfulErrorMessage.ts","webpack://cryptoPro/./helpers/_generateCadesFn.ts","webpack://cryptoPro/./constants/index.ts","webpack://cryptoPro/./api/certificate/index.ts","webpack://cryptoPro/./helpers/_getCadesCert.ts","webpack://cryptoPro/./helpers/_extractCommonName.ts","webpack://cryptoPro/./helpers/_getDateObj.ts","webpack://cryptoPro/./helpers/getSignType.ts","webpack://cryptoPro/../node_modules/buffer/index.js","webpack://cryptoPro/./api/getCertificates.ts","webpack://cryptoPro/./api/getUserCertificates.ts","webpack://cryptoPro/./api/certificate/getCadesProp.ts","webpack://cryptoPro/./api/getContainerCertificates.ts","webpack://cryptoPro/./api/getAllCertificates.ts","webpack://cryptoPro/./api/getAllUserCertificates.ts","webpack://cryptoPro/./api/getAllContainerCertificates.ts","webpack://cryptoPro/./api/getSystemInfo.ts","webpack://cryptoPro/./crypto-pro-js-m.ts","webpack://cryptoPro/./api/index.ts","webpack://cryptoPro/./api/getCertificate.ts","webpack://cryptoPro/./vendor/cadesplugin_api.js","webpack://cryptoPro/./api/certificate/certificate.ts","webpack://cryptoPro/./constants/cades-constants.ts","webpack://cryptoPro/./constants/issuer-tags-translations.ts","webpack://cryptoPro/./constants/oids-dictionary.ts","webpack://cryptoPro/./constants/subject-tags-translations.ts","webpack://cryptoPro/./api/certificate/exportBase64.ts","webpack://cryptoPro/./api/certificate/getAlgorithm.ts","webpack://cryptoPro/./api/certificate/getDecodedExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getInfo.ts","webpack://cryptoPro/./helpers/_parseCertInfo.ts","webpack://cryptoPro/./api/certificate/hasExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/isValid.ts","webpack://cryptoPro/./api/isValidSystemSetup.ts","webpack://cryptoPro/./helpers/_isSupportedCadesVersion.ts","webpack://cryptoPro/./helpers/_isSupportedCSPVersion.ts","webpack://cryptoPro/./api/createXMLSignature.ts","webpack://cryptoPro/./helpers/_getCadesUserCert.ts","webpack://cryptoPro/./helpers/_getCadesContainerCert.ts","webpack://cryptoPro/./api/createDetachedSignature.ts","webpack://cryptoPro/./api/addDetachedSignature.ts","webpack://cryptoPro/./api/createAttachedSignature.ts","webpack://cryptoPro/../node_modules/webpack/buildin/global.js","webpack://cryptoPro/../node_modules/base64-js/index.js","webpack://cryptoPro/../node_modules/ieee754/index.js","webpack://cryptoPro/../node_modules/buffer/node_modules/isarray/index.js","webpack://cryptoPro/./api/addAttachedSignature.ts","webpack://cryptoPro/./api/createHash.ts","webpack://cryptoPro/./api/getCspVersion.ts","webpack://cryptoPro/./api/getPluginVersion.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isSetLogLevel","isPluginLoaded","_afterPluginsLoaded","fn","canPromise","Boolean","Promise","error","console","Error","_extractMeaningfulErrorMessage","cadesplugin","set_log_level","LOG_LEVEL_ERROR","apply","this","args","errorContainer","getLastError","message","test","searchResult","match","__cadesAsyncToken__","__createCadesPluginObject__","_generateCadesFn","callback","cadesGeneratorsAPI","CreateObjectAsync","callbackName","callbackLiteral","String","callbackArguments","callbackBody","replace","crossEnvCallbackLiteral","Function","join","_getCadesCert","thumbprint","_getCadesUserCert","cadesCertificate","log","_getCadesContainerCert","_extractCommonName","subjectName","_getDateObj","dateObj","getVarDate","getSignType","signType","CADESCOM_CADES_BES","CADESCOM_CADES_X_LONG_TYPE_1","CADESCOM_CADES_T","CADESCOM_PKCS7_TYPE","base64","ieee754","isArray","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","length","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","allocUnsafe","from","TypeError","ArrayBuffer","array","byteOffset","byteLength","undefined","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","slice","fromString","obj","isBuffer","len","checked","copy","buffer","val","type","data","fromObject","assertSize","size","toString","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","indexOf","lastIndexOf","arr","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","push","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","e","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","equals","inspect","max","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","Array","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","stringtrim","base64clean","src","dst","certificatesCache","getCertificates","resetCache","getUserCertificates","availableCertificates","getContainerCertificates","find","cert","eval","cadesStore","cadesCertificates","cadesCertificatesCount","Open","CAPICOM_CURRENT_USER_STORE","CAPICOM_MY_STORE","CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED","Certificates","Find","CAPICOM_CERTIFICATE_FIND_TIME_VALID","CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY","CAPICOM_PROPID_KEY_PROV_INFO","Count","certificateList","Item","Certificate","SubjectName","IssuerName","Thumbprint","ValidFromDate","ValidToDate","Close","getCadesProp","propName","_cadesCertificate","propertyValue","CADESCOM_CONTAINER_STORE","getAllCertificates","getAllUserCertificates","getAllContainerCertificates","getSystemInfo","sysInfo","cadesVersion","cspVersion","cadesAbout","PluginVersion","CSPVersion","Version","getCertificate","validOnly","foundCertificate","LOG_LEVEL_DEBUG","pluginObject","plugin_reject","plugin_resolve","plugin_resolved","isOpera","isFireFox","isSafari","isYandex","cadesplugin_loaded_event_recieved","isFireFoxExtensionLoaded","resolve","reject","tem","ua","M","browserSpecs","navigator","userAgent","version","exec","appName","appVersion","splice","ru_cryptopro_npcades_10_native_bridge","callbacksCount","callbacks","resultForCallback","callbackId","resultArray","functionName","hasCallback","iframe","document","createElement","arrObjs","setAttribute","encodeURIComponent","JSON","stringify","alert","documentElement","appendChild","parentNode","removeChild","onVisibilityChange","event","hidden","removeEventListener","set_load_timeout","check_plugin_working","JSModuleVersion","async_spawn","generatorFunc","continuer","verb","result","generator","err","done","then","onFulfilled","onRejected","level","LOG_LEVEL_INFO","current_log_level","cpcsp_console_log","isNativeMessageSupported","postMessage","get_extension_version","addEventListener","resp_prefix","ext_version","substring","get_extension_id","ext_id","exception","isIE","isIOS","GetMessageFromException","is_capilite_enabled","EnableInternalCSP","ReleasePluginObjects","cpcsp_chrome_nmcades","CreateObject","CAPICOM_MEMORY_STORE","CAPICOM_LOCAL_MACHINE_STORE","CAPICOM_SMART_CARD_USER_STORE","CADESCOM_MEMORY_STORE","CADESCOM_LOCAL_MACHINE_STORE","CADESCOM_CURRENT_USER_STORE","CADESCOM_SMART_CARD_USER_STORE","CAPICOM_ROOT_STORE","CAPICOM_CA_STORE","CAPICOM_ADDRESSBOOK_STORE","CAPICOM_STORE_OPEN_READ_WRITE","CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED","CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME","CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED","CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING","CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE","CADESCOM_XADES_DEFAULT","CADESCOM_XADES_BES","CADESCOM_XADES_T","CADESCOM_XADES_X_LONG_TYPE_1","CADESCOM_XMLDSIG_TYPE","XmlDsigGost3410UrlObsolete","XmlDsigGost3411UrlObsolete","XmlDsigGost3410Url","XmlDsigGost3411Url","XmlDsigGost3411Url2012256","XmlDsigGost3410Url2012256","XmlDsigGost3411Url2012512","XmlDsigGost3410Url2012512","CADESCOM_CADES_DEFAULT","CADESCOM_CADES_A","CADESCOM_ENCODE_BASE64","CADESCOM_ENCODE_BINARY","CADESCOM_ENCODE_ANY","CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT","CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN","CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY","CAPICOM_CERTIFICATE_INCLUDE_NONE","CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME","CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME","CAPICOM_CERTIFICATE_FIND_SHA1_HASH","CAPICOM_CERTIFICATE_FIND_ISSUER_NAME","CAPICOM_CERTIFICATE_FIND_ROOT_NAME","CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME","CAPICOM_CERTIFICATE_FIND_EXTENSION","CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY","CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY","CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID","CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED","CAPICOM_CERTIFICATE_FIND_KEY_USAGE","CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE","CAPICOM_PROPID_ENHKEY_USAGE","CAPICOM_OID_OTHER","CAPICOM_OID_KEY_USAGE_EXTENSION","CAPICOM_EKU_CLIENT_AUTH","CAPICOM_EKU_SMARTCARD_LOGON","CAPICOM_EKU_OTHER","CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME","CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME","CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION","CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME","CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME","CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION","CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO","CADESCOM_ATTRIBUTE_OTHER","CADESCOM_STRING_TO_UCS2LE","CADESCOM_BASE64_TO_BINARY","CADESCOM_DISPLAY_DATA_NONE","CADESCOM_DISPLAY_DATA_CONTENT","CADESCOM_DISPLAY_DATA_ATTRIBUTE","CADESCOM_ENCRYPTION_ALGORITHM_RC2","CADESCOM_ENCRYPTION_ALGORITHM_RC4","CADESCOM_ENCRYPTION_ALGORITHM_DES","CADESCOM_ENCRYPTION_ALGORITHM_3DES","CADESCOM_ENCRYPTION_ALGORITHM_AES","CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89","CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA","CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA_OMAC","CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK","CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK_OMAC","CADESCOM_HASH_ALGORITHM_SHA1","CADESCOM_HASH_ALGORITHM_MD2","CADESCOM_HASH_ALGORITHM_MD4","CADESCOM_HASH_ALGORITHM_MD5","CADESCOM_HASH_ALGORITHM_SHA_256","CADESCOM_HASH_ALGORITHM_SHA_384","CADESCOM_HASH_ALGORITHM_SHA_512","CADESCOM_HASH_ALGORITHM_CP_GOST_3411","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC","CADESCOM_CERT_INFO_ROLE","CADESCOM_ROLE_ROOT","CADESCOM_ROLE_CA","CADESCOM_ROLE_LEAF","CADESCOM_AllowNone","CADESCOM_AllowNoOutstandingRequest","CADESCOM_AllowUntrustedCertificate","CADESCOM_AllowUntrustedRoot","CADESCOM_SkipInstallToStore","CADESCOM_InstallCertChainToContainer","CADESCOM_UseContainerStore","ContextNone","ContextUser","ContextMachine","ContextAdministratorForceMachine","ENABLE_CARRIER_TYPE_CSP","ENABLE_CARRIER_TYPE_FKC_NO_SM","ENABLE_CARRIER_TYPE_FKC_SM","ENABLE_ANY_CARRIER_TYPE","DISABLE_EVERY_CARRIER_OPERATION","ENABLE_CARRIER_OPEN_ENUM","ENABLE_CARRIER_CREATE","ENABLE_ANY_OPERATION","CADESCOM_PRODUCT_CSP","CADESCOM_PRODUCT_OCSP","CADESCOM_PRODUCT_TSP","MEDIA_TYPE_DEFAULT","MEDIA_TYPE_REGISTRY","MEDIA_TYPE_HDIMAGE","MEDIA_TYPE_CLOUD","MEDIA_TYPE_SCARD","XCN_CRYPT_STRING_BASE64HEADER","XCN_CRYPT_STRING_BASE64","XCN_CRYPT_STRING_BINARY","XCN_CRYPT_STRING_BASE64REQUESTHEADER","XCN_CRYPT_STRING_HEX","XCN_CRYPT_STRING_HEXASCII","XCN_CRYPT_STRING_BASE64_ANY","XCN_CRYPT_STRING_ANY","XCN_CRYPT_STRING_HEX_ANY","XCN_CRYPT_STRING_BASE64X509CRLHEADER","XCN_CRYPT_STRING_HEXADDR","XCN_CRYPT_STRING_HEXASCIIADDR","XCN_CRYPT_STRING_HEXRAW","XCN_CRYPT_STRING_BASE64URI","XCN_CRYPT_STRING_ENCODEMASK","XCN_CRYPT_STRING_CHAIN","XCN_CRYPT_STRING_TEXT","XCN_CRYPT_STRING_PERCENTESCAPE","XCN_CRYPT_STRING_HASHDATA","XCN_CRYPT_STRING_STRICT","XCN_CRYPT_STRING_NOCRLF","XCN_CRYPT_STRING_NOCR","XCN_CERT_NAME_STR_NONE","XCN_AT_NONE","XCN_AT_KEYEXCHANGE","XCN_AT_SIGNATURE","AT_KEYEXCHANGE","AT_SIGNATURE","CARRIER_FLAG_REMOVABLE","CARRIER_FLAG_UNIQUE","CARRIER_FLAG_PROTECTED","CARRIER_FLAG_FUNCTIONAL_CARRIER","CARRIER_FLAG_SECURE_MESSAGING","CARRIER_FLAG_ABLE_SET_KEY","CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE","CARRIER_FLAG_VIRTUAL","CRYPT_MODE_CBCSTRICT","CRYPT_MODE_CNT","CRYPT_MODE_CBCRFC4357","CRYPT_MODE_CTR","CRYPT_MODE_MGM","CRYPT_MODE_GCM","CRYPT_MODE_OMAC_CTR","CRYPT_MODE_WRAP","CRYPT_MODE_WRAP_PAD","PKCS5_PADDING","RANDOM_PADDING","ZERO_PADDING","ISO10126_PADDING","ANSI_X923_PADDING","TLS_1_0_PADDING","ISO_IEC_7816_4_PADDING","CAPICOM_STORE_SAVE_AS_SERIALIZED","CAPICOM_STORE_SAVE_AS_PKCS7","CERT_TRUST_NO_ERROR","CERT_TRUST_IS_NOT_TIME_VALID","CERT_TRUST_IS_REVOKED","CERT_TRUST_IS_NOT_SIGNATURE_VALID","CERT_TRUST_IS_NOT_VALID_FOR_USAGE","CERT_TRUST_IS_UNTRUSTED_ROOT","CERT_TRUST_REVOCATION_STATUS_UNKNOWN","CERT_TRUST_IS_CYCLIC","CERT_TRUST_INVALID_EXTENSION","CERT_TRUST_INVALID_POLICY_CONSTRAINTS","CERT_TRUST_INVALID_BASIC_CONSTRAINTS","CERT_TRUST_INVALID_NAME_CONSTRAINTS","CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT","CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT","CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT","CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT","CERT_TRUST_IS_OFFLINE_REVOCATION","CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY","CERT_TRUST_IS_EXPLICIT_DISTRUST","CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT","CERT_TRUST_HAS_WEAK_SIGNATURE","XCN_CERT_NO_KEY_USAGE","XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE","XCN_CERT_NON_REPUDIATION_KEY_USAGE","XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE","XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE","XCN_CERT_KEY_AGREEMENT_KEY_USAGE","XCN_CERT_KEY_CERT_SIGN_KEY_USAGE","XCN_CERT_OFFLINE_CRL_SIGN_KEY_USAGE","XCN_CERT_CRL_SIGN_KEY_USAGE","XCN_CERT_ENCIPHER_ONLY_KEY_USAGE","XCN_CERT_DECIPHER_ONLY_KEY_USAGE","CADESCOM_XADES_ACCEPT_ANY_ID_ATTR_NAMESPACE","CADES_USE_OCSP_AUTHORIZED_POLICY","XCN_NCRYPT_NO_OPERATION","XCN_NCRYPT_CIPHER_OPERATION","XCN_NCRYPT_HASH_OPERATION","XCN_NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION","XCN_NCRYPT_SECRET_AGREEMENT_OPERATION","XCN_NCRYPT_SIGNATURE_OPERATION","XCN_NCRYPT_RNG_OPERATION","XCN_CRYPT_ANY_GROUP_ID","XCN_CRYPT_HASH_ALG_OID_GROUP_ID","XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID","XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID","XCN_CRYPT_SIGN_ALG_OID_GROUP_ID","XCN_CRYPT_RDN_ATTR_OID_GROUP_ID","XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID","XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID","XCN_CRYPT_POLICY_OID_GROUP_ID","XCN_CRYPT_TEMPLATE_OID_GROUP_ID","XCN_CRYPT_OID_INFO_PUBKEY_ANY","XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG","XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG","CONTROL_KEY_TIME_VALIDITY_DISABLED","CONTROL_KEY_TIME_VALIDITY_ENABLED","CONTROL_KEY_TIME_VALIDITY_STRICT","AlgorithmFlagsNone","AlgorithmFlagsWrap","msg","info","ex","response","tmpobj","parse","call_ru_cryptopro_npcades_10_native_bridge","getElementById","ActiveXObject","number","toUpperCase","firefox_or_safari_nmcades_onload","cadesplugin_extension_loaded_callback","check_chrome_plugin","plugin_loaded","plugin_loaded_error","load_js_script","url","successFunc","errorFunc","script","onerror","onload","getElementsByTagName","nmcades_api_onload","load_npapi_plugin","elem","elem1","elem2","check_load_timeout","cadesplugin_skip_extension_install","ovr","id","style","innerHTML","visibility","show_firefox_missing_extension_dialog","check_npapi_plugin","display","mimetype","mimeTypes","enabledPlugin","div","manifestv2Url","manifestv3Url","load_extension","readyState","cadesplugin_load_timeout","setTimeout","issuerName","validFrom","validTo","getOwnerInfo","getInfo","SUBJECT_TAGS_TRANSLATIONS","getIssuerInfo","ISSUER_TAGS_TRANSLATIONS","getExtendedKeyUsage","getDecodedExtendedKeyUsage","getAlgorithm","isValid","exportBase64","hasExtendedKeyUsage","oids","CAPICOM_ACTIVE_DIRECTORY_USER_STORE","CAPICOM_PROPID_ACCESS_STATE","CAPICOM_PROPID_ARCHIVED","CAPICOM_PROPID_ARCHIVED_KEY_HASH","CAPICOM_PROPID_AUTO_ENROLL","CAPICOM_PROPID_CROSS_CERT_DIST_POINTS","CAPICOM_PROPID_CTL_USAGE","CAPICOM_PROPID_DATE_STAMP","CAPICOM_PROPID_DESCRIPTION","CAPICOM_PROPID_EFS","CAPICOM_PROPID_ENROLLMENT","CAPICOM_PROPID_EXTENDED_ERROR_INFO","CAPICOM_PROPID_FIRST_RESERVED","CAPICOM_PROPID_FIRST_USER","CAPICOM_PROPID_FORTEZZA_DATA","CAPICOM_PROPID_FRIENDLY_NAME","CAPICOM_PROPID_HASH_PROP","CAPICOM_PROPID_IE30_RESERVED","CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH","CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH","CAPICOM_PROPID_KEY_CONTEXT","CAPICOM_PROPID_KEY_IDENTIFIER","CAPICOM_PROPID_KEY_PROV_HANDLE","CAPICOM_PROPID_KEY_SPEC","CAPICOM_PROPID_LAST_RESERVED","CAPICOM_PROPID_LAST_USER","CAPICOM_PROPID_MD5_HASH","CAPICOM_PROPID_NEXT_UPDATE_LOCATION","CAPICOM_PROPID_PUBKEY_ALG_PARA","CAPICOM_PROPID_PUBKEY_HASH_RESERVED","CAPICOM_PROPID_PVK_FILE","CAPICOM_PROPID_RENEWAL","CAPICOM_PROPID_SHA1_HASH","CAPICOM_PROPID_SIGNATURE_HASH","CAPICOM_PROPID_SMART_CARD_DATA","CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH","CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH","CAPICOM_PROPID_UNKNOWN","CAPICOM_STORE_OPEN_EXISTING_ONLY","CAPICOM_STORE_OPEN_READ_ONLY","CHECK_NONE","CHECK_OFFLINE_REVOCATION_STATUS","CHECK_ONLINE_REVOCATION_STATUS","CHECK_SIGNATURE_VALIDITY","CHECK_TIME_VALIDITY","CHECK_TRUSTED_ROOT","TRUST_CTL_IS_NOT_SIGNATURE_VALID","TRUST_CTL_IS_NOT_TIME_VALID","TRUST_CTL_IS_NOT_VALID_FOR_USAGE","TRUST_IS_CYCLIC","TRUST_IS_NOT_SIGNATURE_VALID","TRUST_IS_NOT_TIME_NESTED","TRUST_IS_NOT_TIME_VALID","TRUST_IS_NOT_VALID_FOR_USAGE","TRUST_IS_PARTIAL_CHAIN","TRUST_IS_REVOKED","TRUST_IS_UNTRUSTED_ROOT","TRUST_REVOCATION_STATUS_UNKNOWN","possibleNames","translation","OIDS_DICTIONARY","Export","cadesPublicKey","algorithmInfo","algorithm","oid","PublicKey","Algorithm","FriendlyName","Value","reduce","decodedOids","oidCode","count","OIDS","ExtendedKeyUsage","EKUs","cadesExtendedKeyUsage","OID","tags","entitiesPath","entities","_parseCertInfo","tagsTranslations","rawInfo","extractedEntities","map","group","segmentsMatch","title","description","oidIdentifierMatch","oidIdentifier","isTranslated","oidTranslation","tagTranslation","tag","certOids","every","oidToCheck","some","certOid","IsValid","Result","isValidSystemSetup","systemInfo","_isSupportedCadesVersion","_isSupportedCSPVersion","major","patch","createXMLSignature","unencryptedMessage","cadesSigner","cadesSignedXML","signature","propset_Certificate","propset_CheckCertificate","propset_Content","propset_SignatureType","propset_SignatureMethod","propset_DigestMethod","Sign","cadesCertificateList","certificatesCount","createDetachedSignature","messageHash","cadesAttrs","cadesHashedData","cadesSignedData","cadesAuthAttrs","currentTime","Date","propset_Name","propset_Value","AuthenticatedAttributes2","Add","propset_Options","propset_Algorithm","SetHashValue","signTypeConst","SignHash","addDetachedSignature","signedMessage","VerifyHash","CoSignHash","createAttachedSignature","messageBase64","propset_ContentEncoding","SignCades","g","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","num","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","LN2","addAttachedSignature","VerifyCades","CoSignCades","createHash","hash","propset_DataEncoding","Hash","getCspVersion","getPluginVersion"],"mappings":"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","file":"crypto-pro-js-m.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cryptoPro\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cryptoPro\"] = factory();\n\telse\n\t\troot[\"cryptoPro\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 18);\n","import { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\n\ntype Unpromisify = T extends Promise ? R : T;\n\nlet isSetLogLevel = false;\nlet isPluginLoaded = false;\n\nexport const _afterPluginsLoaded = any>(\n fn: T,\n): ((...args: Parameters) => Promise>>) => {\n const canPromise = Boolean(window.Promise);\n\n return async function (...args: Parameters): Promise>> {\n if (!isPluginLoaded) {\n try {\n require('../vendor/cadesplugin_api');\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при подключении модуля для работы с Cades plugin',\n );\n }\n\n isPluginLoaded = true;\n }\n\n const { cadesplugin } = window;\n\n if (!canPromise) {\n throw new Error('Необходим полифилл для Promise');\n }\n\n if (!cadesplugin) {\n throw new Error('Не подключен модуль для работы с Cades plugin');\n }\n\n if (!isSetLogLevel) {\n cadesplugin.set_log_level(cadesplugin.LOG_LEVEL_ERROR);\n\n isSetLogLevel = true;\n }\n\n try {\n await cadesplugin;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации модуля для работы с Cades plugin',\n );\n }\n\n return await fn.apply(this, args);\n };\n};\n","export const _extractMeaningfulErrorMessage = (error: Error): string | null => {\n let errorContainer = window.cadesplugin?.getLastError && window.cadesplugin.getLastError(error);\n\n if (!errorContainer?.message) {\n if (!error.message) {\n return null;\n }\n\n errorContainer = error;\n }\n\n const containsRussianLetters = /[а-яА-Я]/.test(errorContainer.message);\n\n if (!containsRussianLetters) {\n return null;\n }\n\n const searchResult = errorContainer.message.match(/^(.*?)(?:(?:\\.?\\s?\\(?(0x[0-9a-zA-Z]{1,8})\\)?)|(?:\\.?$))/);\n\n return searchResult ? searchResult[1] + (searchResult[2] ? ' (Код ошибки: ' + searchResult[2] + ')' : '') : null;\n};\n","// синтетические переменные, которые подменяются в рантайме\nexport const __cadesAsyncToken__ = {};\nexport const __createCadesPluginObject__ = (...args): any => ({});\n\nfunction getGeneratorConstructor(): GeneratorFunction {\n return new Function('', 'return Object.getPrototypeOf(function*(){}).constructor')();\n}\n\nexport const _generateCadesFn = (callback: Function): string => {\n const { cadesplugin } = window;\n const cadesGeneratorsAPI = Boolean(cadesplugin.CreateObjectAsync);\n const callbackName = callback.name || 'dynamicFn';\n const callbackLiteral = String(callback);\n const callbackArguments = callbackLiteral.match(/^function[\\s\\w]*?\\((.*?)\\)/)?.[1] || '';\n const callbackBody = callbackLiteral.replace(/^.*?{([\\s\\S]*?)}$/, '$1');\n let crossEnvCallbackLiteral = String(\n new (cadesGeneratorsAPI ? getGeneratorConstructor() : Function)(callbackArguments, callbackBody),\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__createCadesPluginObject__(\\([\\s\\S]*?\\))/gm,\n `cadesplugin.CreateObject${cadesGeneratorsAPI ? 'Async' : ''}$1`,\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__cadesAsyncToken__\\s*?\\+\\s*?\\b/gm,\n cadesGeneratorsAPI ? 'yield ' : '',\n );\n\n if (!cadesGeneratorsAPI) {\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/propset_(.*?)\\((.*?)\\)/gm, '$1 = $2');\n }\n\n return [\n cadesGeneratorsAPI ? `cadesplugin.async_spawn(${crossEnvCallbackLiteral});` : `(${crossEnvCallbackLiteral})();`,\n `//# sourceURL=crypto-pro_${callbackName}.js`,\n ].join('');\n};\n","export * from './cades-constants';\nexport * from './issuer-tags-translations';\nexport * from './oids-dictionary';\nexport * from './subject-tags-translations';\n","export * from './certificate';\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _getCadesUserCert } from './_getCadesUserCert';\nimport { _getCadesContainerCert } from './_getCadesContainerCert';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesCert = _afterPluginsLoaded(\n async (thumbprint: string): Promise => {\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificate = await _getCadesUserCert(thumbprint);\n } catch (error) {\n console.log(error);\n\n cadesCertificate = await _getCadesContainerCert(thumbprint);\n }\n\n return cadesCertificate;\n },\n);\n","export const _extractCommonName = (subjectName: string): string | undefined =>\n subjectName.match(/CN=\"?(.+?)\"?(?:,|$)/)?.[1]?.replace(/\"{2}/g, '\"');\n","/**\n * Возвращает объект даты, совместимый с Cades plugin'ом, зависящий от браузера.\n *\n * В IE необходимо использовать специфичный формат \"VT_DATE\"\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Microsoft_Extensions/Date.getVarDate\n */\nexport const _getDateObj = (dateObj): Date => (dateObj.getVarDate ? dateObj.getVarDate() : dateObj);\n","export declare type SignType = 'CAdES BES' | 'CAdES-X Long Type 1' | 'CAdES T' | 'PKCS7';\n\nexport const getSignType = (cadesplugin: any, signType: SignType): any => {\n switch (signType) {\n case 'CAdES BES': {\n return cadesplugin.CADESCOM_CADES_BES;\n }\n case 'CAdES-X Long Type 1': {\n return cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1;\n }\n case 'CAdES T': {\n return cadesplugin.CADESCOM_CADES_T;\n }\n case 'PKCS7': {\n return cadesplugin.CADESCOM_PKCS7_TYPE;\n }\n }\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getUserCertificates } from './getUserCertificates';\nimport { getContainerCertificates } from './getContainerCertificates';\nimport { getAllUserCertificates } from './getAllUserCertificates';\nimport { getAllContainerCertificates } from './getAllContainerCertificates';\n\nlet certificatesCache: Certificate[];\n/**\n * Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getCertificates = _afterPluginsLoaded(\n async (resetCache: boolean = false): Promise => {\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n let availableCertificates: Certificate[];\n\n try {\n availableCertificates = await getUserCertificates(resetCache);\n } catch (error) {\n console.error(error);\n\n availableCertificates = [];\n }\n\n try {\n const containerCertificates: Certificate[] = await getContainerCertificates(resetCache);\n\n if (!availableCertificates) {\n availableCertificates = containerCertificates;\n } else {\n let containerCertificatesCount = containerCertificates.length - 1;\n let foundAvailableCertificate;\n\n while (containerCertificatesCount) {\n foundAvailableCertificate = availableCertificates.find(\n (cert) => cert.thumbprint === containerCertificates[containerCertificatesCount].thumbprint,\n );\n\n if (!foundAvailableCertificate) {\n availableCertificates.push(containerCertificates[containerCertificatesCount]);\n }\n\n containerCertificatesCount--;\n }\n }\n } catch (error) {\n console.error(error);\n }\n\n if (!availableCertificates) {\n throw new Error('Нет доступных сертификатов');\n }\n\n certificatesCache = availableCertificates;\n\n return certificatesCache;\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает указанное внутренее свойство у сертификата в формате Cades\n *\n * @param propName = наименование свойства\n * @returns значение запрошенного свойства\n */\nexport const getCadesProp = _afterPluginsLoaded(function (propName: string): any {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getCadesProp() {\n let propertyValue;\n\n try {\n propertyValue = __cadesAsyncToken__ + cadesCertificate[propName];\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при обращении к свойству сертификата');\n }\n\n return propertyValue;\n }),\n );\n});\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getContainerCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getContainerCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getAllUserCertificates } from './getAllUserCertificates';\nimport { getAllContainerCertificates } from './getAllContainerCertificates';\n\nlet certificatesCache: Certificate[];\n/**\n * Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе, без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllCertificates = _afterPluginsLoaded(\n async (resetCache: boolean = false): Promise => {\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n let availableCertificates: Certificate[];\n\n try {\n availableCertificates = await getAllUserCertificates(resetCache);\n } catch (error) {\n console.error(error);\n\n availableCertificates = [];\n }\n\n try {\n const containerAllCertificates: Certificate[] = await getAllContainerCertificates(resetCache);\n\n if (!availableCertificates) {\n availableCertificates = containerAllCertificates;\n } else {\n let containerAllCertificatesCount = containerAllCertificates.length - 1;\n let foundAvailableCertificate;\n\n while (containerAllCertificatesCount) {\n foundAvailableCertificate = availableCertificates.find(\n (cert) => cert.thumbprint === containerAllCertificates[containerAllCertificatesCount].thumbprint,\n );\n\n if (!foundAvailableCertificate) {\n availableCertificates.push(containerAllCertificates[containerAllCertificatesCount]);\n }\n\n containerAllCertificatesCount--;\n }\n }\n } catch (error) {\n console.error(error);\n }\n\n if (!availableCertificates) {\n throw new Error('Нет доступных сертификатов');\n }\n\n certificatesCache = availableCertificates;\n\n return certificatesCache;\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getAllUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { CadesCertificate, Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllContainerCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getAllContainerCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nexport interface SystemInfo {\n cadesVersion: string;\n cspVersion: string;\n}\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP и плагине\n */\nexport const getSystemInfo = _afterPluginsLoaded(\n (): SystemInfo => {\n const sysInfo = {\n cadesVersion: null,\n cspVersion: null,\n };\n\n return eval(\n _generateCadesFn(function getSystemInfo(): SystemInfo {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n sysInfo.cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n if (!sysInfo.cadesVersion) {\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + sysInfo.cadesVersion.toString();\n sysInfo.cspVersion = __cadesAsyncToken__ + sysInfo.cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о системе');\n }\n\n return sysInfo;\n }),\n );\n },\n);\n","export * from './api';\nexport * from './helpers';\n","export * from './getCertificate';\nexport * from './getUserCertificates';\nexport * from './getAllUserCertificates';\nexport * from './getContainerCertificates';\nexport * from './getAllContainerCertificates';\nexport * from './getCertificates';\nexport * from './getAllCertificates';\nexport * from './getSystemInfo';\nexport * from './isValidSystemSetup';\nexport * from './createXMLSignature';\nexport * from './createDetachedSignature';\nexport * from './addDetachedSignature';\nexport * from './createAttachedSignature';\nexport * from './addAttachedSignature';\nexport * from './createHash';\nexport * from './certificate';\nexport * from './getCspVersion';\nexport * from './getPluginVersion';\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getCertificates } from './getCertificates';\nimport { getAllCertificates } from './getAllCertificates';\n\n/**\n * Возвращает сертификат по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @param validOnly - проверять сертификаты по дате и наличию приватного ключа\n * @returns сертификат\n */\nexport const getCertificate = _afterPluginsLoaded(\n async (thumbprint: string, validOnly: boolean = true): Promise => {\n if (!thumbprint) {\n throw new Error('Отпечаток не указан');\n }\n\n let availableCertificates: Certificate[];\n\n if (validOnly) {\n availableCertificates = await getCertificates();\n } else {\n availableCertificates = await getAllCertificates();\n }\n\n const foundCertificate: Certificate = availableCertificates.find((cert) => cert.thumbprint === thumbprint);\n\n if (!foundCertificate) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\n }\n\n return foundCertificate;\n },\n);\n","; (function () {\r\n //already loaded\r\n if (window.cadesplugin && window.cadesplugin.LOG_LEVEL_DEBUG) {\r\n return;\r\n }\r\n var pluginObject;\r\n var plugin_resolved = 0;\r\n var plugin_reject;\r\n var plugin_resolve;\r\n var isOpera = 0;\r\n var isFireFox = 0;\r\n var isSafari = 0;\r\n var isYandex = 0;\r\n var canPromise = !!window.Promise;\r\n var cadesplugin_loaded_event_recieved = false;\r\n var isFireFoxExtensionLoaded = false;\r\n var cadesplugin = {};\r\n\r\n if (canPromise) {\r\n cadesplugin = new window.Promise(function (resolve, reject) {\r\n plugin_resolve = resolve;\r\n plugin_reject = reject;\r\n });\r\n }\r\n\r\n function check_browser() {\r\n var ua = window.navigator.userAgent,\r\n tem,\r\n M = ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE', version: (tem[1] || '') };\r\n }\r\n if (M[1] === \"Chrome\") {\r\n tem = ua.match(/\\b(OPR|Edg|YaBrowser)\\/(\\d+)/);\r\n if (tem != null && (tem.length > 2)) {\r\n return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\r\n }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [window.navigator.appName, window.navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\r\n M.splice(1, 1, tem[1]);\r\n }\r\n return { name: M[0], version: M[1] };\r\n }\r\n\r\n var browserSpecs = check_browser();\r\n\r\n function cpcsp_console_log(level, msg) {\r\n //IE9 не может писать в консоль если не открыта вкладка developer tools\r\n if (typeof console === 'undefined') {\r\n return;\r\n }\r\n if (level <= cadesplugin.current_log_level) {\r\n if (level === cadesplugin.LOG_LEVEL_DEBUG) {\r\n console.log(\"DEBUG: %s\", msg);\r\n }\r\n if (level === cadesplugin.LOG_LEVEL_INFO) {\r\n console.info(\"INFO: %s\", msg);\r\n }\r\n if (level === cadesplugin.LOG_LEVEL_ERROR) {\r\n console.error(\"ERROR: %s\", msg);\r\n }\r\n }\r\n }\r\n\r\n function get_extension_version(callback) {\r\n window.postMessage(\"cadesplugin_extension_version_request\", \"*\");\r\n window.addEventListener(\"message\", function (event) {\r\n var resp_prefix = \"cadesplugin_extension_version_response:\";\r\n if (typeof (event.data) !== \"string\" || event.data.indexOf(resp_prefix) !== 0) {\r\n return;\r\n }\r\n var ext_version = event.data.substring(resp_prefix.length);\r\n callback(ext_version);\r\n }, false);\r\n }\r\n\r\n function get_extension_id(callback) {\r\n window.postMessage(\"cadesplugin_extension_id_request\", \"*\");\r\n window.addEventListener(\"message\", function (event) {\r\n var resp_prefix = \"cadesplugin_extension_id_response:\";\r\n if (typeof (event.data) !== \"string\" || event.data.indexOf(resp_prefix) !== 0) {\r\n return;\r\n }\r\n var ext_id = event.data.substring(resp_prefix.length);\r\n callback(ext_id);\r\n }, false);\r\n }\r\n\r\n function set_log_level(level) {\r\n if (!((level === cadesplugin.LOG_LEVEL_DEBUG) ||\r\n (level === cadesplugin.LOG_LEVEL_INFO) ||\r\n (level === cadesplugin.LOG_LEVEL_ERROR))) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"cadesplugin_api.js: Incorrect log_level: \" + level);\r\n return;\r\n }\r\n cadesplugin.current_log_level = level;\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = DEBUG\");\r\n }\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = INFO\");\r\n }\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = ERROR\");\r\n }\r\n if (isNativeMessageSupported()) {\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) {\r\n window.postMessage(\"set_log_level=debug\", \"*\");\r\n }\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) {\r\n window.postMessage(\"set_log_level=info\", \"*\");\r\n }\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) {\r\n window.postMessage(\"set_log_level=error\", \"*\");\r\n }\r\n }\r\n }\r\n\r\n function set_constantValues() {\r\n cadesplugin.CAPICOM_MEMORY_STORE = 0;\r\n cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_MEMORY_STORE = 0;\r\n cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_CONTAINER_STORE = 100;\r\n\r\n cadesplugin.CAPICOM_ROOT_STORE = \"Root\";\r\n cadesplugin.CAPICOM_CA_STORE = \"CA\";\r\n cadesplugin.CAPICOM_MY_STORE = \"My\";\r\n cadesplugin.CAPICOM_ADDRESSBOOK_STORE = \"AddressBook\";\r\n\r\n cadesplugin.CAPICOM_STORE_OPEN_READ_WRITE = 1;\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\r\n cadesplugin.CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\r\n\r\n cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010;\r\n cadesplugin.CADESCOM_XADES_BES = 0x00000020;\r\n cadesplugin.CADESCOM_XADES_T = 0x00000050;\r\n cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0;\r\n cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000;\r\n\r\n cadesplugin.XmlDsigGost3410UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr3411\";\r\n cadesplugin.XmlDsigGost3410Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411\";\r\n\r\n cadesplugin.XmlDsigGost3411Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3410Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3411Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512\";\r\n cadesplugin.XmlDsigGost3410Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512\";\r\n\r\n cadesplugin.CADESCOM_CADES_DEFAULT = 0;\r\n cadesplugin.CADESCOM_CADES_BES = 1;\r\n cadesplugin.CADESCOM_CADES_T = 0x5;\r\n cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\r\n cadesplugin.CADESCOM_CADES_A = 0xdd;\r\n cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff;\r\n\r\n cadesplugin.CADESCOM_ENCODE_BASE64 = 0;\r\n cadesplugin.CADESCOM_ENCODE_BINARY = 1;\r\n cadesplugin.CADESCOM_ENCODE_ANY = -1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_NONE = 0x100;\r\n\r\n cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\r\n cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\r\n\r\n cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\r\n\r\n cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9;\r\n\r\n cadesplugin.CAPICOM_OID_OTHER = 0;\r\n cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\r\n\r\n cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2;\r\n cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5;\r\n cadesplugin.CAPICOM_EKU_OTHER = 0;\r\n\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100;\r\n cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1;\r\n\r\n cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0;\r\n cadesplugin.CADESCOM_BASE64_TO_BINARY = 1;\r\n\r\n cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\r\n\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA = 35;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA_OMAC = 36;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK = 45;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK_OMAC = 46;\r\n\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\r\n\r\n cadesplugin.CADESCOM_CERT_INFO_ROLE = 100;\r\n cadesplugin.CADESCOM_ROLE_ROOT = \"ROOT\";\r\n cadesplugin.CADESCOM_ROLE_CA = \"CA\";\r\n cadesplugin.CADESCOM_ROLE_LEAF = \"LEAF\";\r\n\r\n cadesplugin.LOG_LEVEL_DEBUG = 4;\r\n cadesplugin.LOG_LEVEL_INFO = 2;\r\n cadesplugin.LOG_LEVEL_ERROR = 1;\r\n\r\n cadesplugin.CADESCOM_AllowNone = 0;\r\n cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1;\r\n cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2;\r\n cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4;\r\n cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000;\r\n cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000;\r\n cadesplugin.CADESCOM_UseContainerStore = 0x40000000;\r\n\r\n cadesplugin.ContextNone = 0;\r\n cadesplugin.ContextUser = 0x1;\r\n cadesplugin.ContextMachine = 0x2;\r\n cadesplugin.ContextAdministratorForceMachine = 0x3;\r\n\r\n cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04;\r\n cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07;\r\n\r\n cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00;\r\n cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01;\r\n cadesplugin.ENABLE_CARRIER_CREATE = 0x02;\r\n cadesplugin.ENABLE_ANY_OPERATION = 0x03;\r\n\r\n cadesplugin.CADESCOM_PRODUCT_CSP = 0;\r\n cadesplugin.CADESCOM_PRODUCT_OCSP = 1;\r\n cadesplugin.CADESCOM_PRODUCT_TSP = 2;\r\n\r\n cadesplugin.MEDIA_TYPE_DEFAULT = 0x00000000;\r\n cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001;\r\n cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002;\r\n cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004;\r\n cadesplugin.MEDIA_TYPE_SCARD = 0x00000008;\r\n\r\n cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64 = 0x1;\r\n cadesplugin.XCN_CRYPT_STRING_BINARY = 0x2;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64REQUESTHEADER = 0x3;\r\n cadesplugin.XCN_CRYPT_STRING_HEX = 0x4;\r\n cadesplugin.XCN_CRYPT_STRING_HEXASCII = 0x5;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64_ANY = 0x6;\r\n cadesplugin.XCN_CRYPT_STRING_ANY = 0x7;\r\n cadesplugin.XCN_CRYPT_STRING_HEX_ANY = 0x8;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64X509CRLHEADER = 0x9;\r\n cadesplugin.XCN_CRYPT_STRING_HEXADDR = 0xa;\r\n cadesplugin.XCN_CRYPT_STRING_HEXASCIIADDR = 0xb;\r\n cadesplugin.XCN_CRYPT_STRING_HEXRAW = 0xc;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64URI = 0xd;\r\n cadesplugin.XCN_CRYPT_STRING_ENCODEMASK = 0xff;\r\n cadesplugin.XCN_CRYPT_STRING_CHAIN = 0x100;\r\n cadesplugin.XCN_CRYPT_STRING_TEXT = 0x200;\r\n cadesplugin.XCN_CRYPT_STRING_PERCENTESCAPE = 0x8000000;\r\n cadesplugin.XCN_CRYPT_STRING_HASHDATA = 0x10000000;\r\n cadesplugin.XCN_CRYPT_STRING_STRICT = 0x20000000;\r\n cadesplugin.XCN_CRYPT_STRING_NOCRLF = 0x40000000;\r\n cadesplugin.XCN_CRYPT_STRING_NOCR = 0x80000000;\r\n\r\n cadesplugin.XCN_CERT_NAME_STR_NONE = 0;\r\n cadesplugin.XCN_AT_NONE = 0;\r\n cadesplugin.XCN_AT_KEYEXCHANGE = 1;\r\n cadesplugin.XCN_AT_SIGNATURE = 2;\r\n\r\n cadesplugin.AT_KEYEXCHANGE = 1;\r\n cadesplugin.AT_SIGNATURE = 2;\r\n\r\n cadesplugin.CARRIER_FLAG_REMOVABLE = 1;\r\n cadesplugin.CARRIER_FLAG_UNIQUE = 2;\r\n cadesplugin.CARRIER_FLAG_PROTECTED = 4;\r\n cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER = 8;\r\n cadesplugin.CARRIER_FLAG_SECURE_MESSAGING = 16;\r\n cadesplugin.CARRIER_FLAG_ABLE_SET_KEY = 32;\r\n cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE = 64;\r\n cadesplugin.CARRIER_FLAG_VIRTUAL = 128;\r\n\r\n cadesplugin.CRYPT_MODE_CBCSTRICT = 1;\r\n cadesplugin.CRYPT_MODE_CNT = 3;\r\n cadesplugin.CRYPT_MODE_CBCRFC4357 = 31;\r\n cadesplugin.CRYPT_MODE_CTR = 32;\r\n cadesplugin.CRYPT_MODE_MGM = 33;\r\n cadesplugin.CRYPT_MODE_GCM = 34;\r\n cadesplugin.CRYPT_MODE_OMAC_CTR = 35;\r\n cadesplugin.CRYPT_MODE_WRAP = 36;\r\n cadesplugin.CRYPT_MODE_WRAP_PAD = 37;\r\n\r\n cadesplugin.PKCS5_PADDING = 1;\r\n cadesplugin.RANDOM_PADDING = 2;\r\n cadesplugin.ZERO_PADDING = 3;\r\n cadesplugin.ISO10126_PADDING = 4;\r\n cadesplugin.ANSI_X923_PADDING = 5;\r\n cadesplugin.TLS_1_0_PADDING = 6;\r\n cadesplugin.ISO_IEC_7816_4_PADDING = 7;\r\n\r\n cadesplugin.CAPICOM_STORE_SAVE_AS_SERIALIZED = 0;\r\n cadesplugin.CAPICOM_STORE_SAVE_AS_PKCS7 = 1;\r\n\r\n cadesplugin.CERT_TRUST_NO_ERROR = 0x00000000;\r\n cadesplugin.CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001;\r\n cadesplugin.CERT_TRUST_IS_REVOKED = 0x00000004;\r\n cadesplugin.CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008;\r\n cadesplugin.CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010;\r\n cadesplugin.CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020;\r\n cadesplugin.CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040;\r\n cadesplugin.CERT_TRUST_IS_CYCLIC = 0x00000080;\r\n cadesplugin.CERT_TRUST_INVALID_EXTENSION = 0x00000100;\r\n cadesplugin.CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200;\r\n cadesplugin.CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400;\r\n cadesplugin.CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800;\r\n cadesplugin.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000;\r\n cadesplugin.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000;\r\n cadesplugin.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000;\r\n cadesplugin.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000;\r\n cadesplugin.CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000;\r\n cadesplugin.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000;\r\n cadesplugin.CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000;\r\n cadesplugin.CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000;\r\n cadesplugin.CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000;\r\n\r\n cadesplugin.XCN_CERT_NO_KEY_USAGE = 0;\r\n cadesplugin.XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE = 0x80;\r\n cadesplugin.XCN_CERT_NON_REPUDIATION_KEY_USAGE = 0x40;\r\n cadesplugin.XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE = 0x20;\r\n cadesplugin.XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE = 0x10;\r\n cadesplugin.XCN_CERT_KEY_AGREEMENT_KEY_USAGE = 0x8;\r\n cadesplugin.XCN_CERT_KEY_CERT_SIGN_KEY_USAGE = 0x4;\r\n cadesplugin.XCN_CERT_OFFLINE_CRL_SIGN_KEY_USAGE = 0x2;\r\n cadesplugin.XCN_CERT_CRL_SIGN_KEY_USAGE = 0x2;\r\n cadesplugin.XCN_CERT_ENCIPHER_ONLY_KEY_USAGE = 0x1;\r\n cadesplugin.XCN_CERT_DECIPHER_ONLY_KEY_USAGE = 0x8000;\r\n\r\n cadesplugin.CADESCOM_XADES_ACCEPT_ANY_ID_ATTR_NAMESPACE = 1;\r\n cadesplugin.CADES_USE_OCSP_AUTHORIZED_POLICY = 0x00020000;\r\n\r\n cadesplugin.XCN_NCRYPT_NO_OPERATION = 0;\r\n cadesplugin.XCN_NCRYPT_CIPHER_OPERATION = 0x1;\r\n cadesplugin.XCN_NCRYPT_HASH_OPERATION = 0x2;\r\n cadesplugin.XCN_NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION = 0x4;\r\n cadesplugin.XCN_NCRYPT_SECRET_AGREEMENT_OPERATION = 0x8;\r\n cadesplugin.XCN_NCRYPT_SIGNATURE_OPERATION = 0x10;\r\n cadesplugin.XCN_NCRYPT_RNG_OPERATION = 0x20;\r\n\r\n cadesplugin.XCN_CRYPT_ANY_GROUP_ID = 0;\r\n cadesplugin.XCN_CRYPT_HASH_ALG_OID_GROUP_ID = 1;\r\n cadesplugin.XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID = 2;\r\n cadesplugin.XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID = 3;\r\n cadesplugin.XCN_CRYPT_SIGN_ALG_OID_GROUP_ID = 4;\r\n cadesplugin.XCN_CRYPT_RDN_ATTR_OID_GROUP_ID = 5;\r\n cadesplugin.XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID = 6;\r\n cadesplugin.XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID = 7;\r\n cadesplugin.XCN_CRYPT_POLICY_OID_GROUP_ID = 8;\r\n cadesplugin.XCN_CRYPT_TEMPLATE_OID_GROUP_ID = 9;\r\n\r\n cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_ANY = 0;\r\n cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG = 0x80000000;\r\n cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG = 0x40000000;\r\n\r\n cadesplugin.CONTROL_KEY_TIME_VALIDITY_DISABLED = 0;\r\n cadesplugin.CONTROL_KEY_TIME_VALIDITY_ENABLED = 1;\r\n cadesplugin.CONTROL_KEY_TIME_VALIDITY_STRICT = 2;\r\n\r\n cadesplugin.AlgorithmFlagsNone = 0;\r\n cadesplugin.AlgorithmFlagsWrap = 0x1;\r\n }\r\n\r\n function async_spawn(generatorFunc) {\r\n function continuer(verb, arg) {\r\n var result;\r\n try {\r\n result = generator[verb](arg);\r\n } catch (err) {\r\n return window.Promise.reject(err);\r\n }\r\n if (result.done) {\r\n return result.value;\r\n } else {\r\n return window.Promise.resolve(result.value).then(onFulfilled, onRejected);\r\n }\r\n }\r\n var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));\r\n var onFulfilled = continuer.bind(continuer, \"next\");\r\n var onRejected = continuer.bind(continuer, \"throw\");\r\n return onFulfilled();\r\n }\r\n\r\n function isIE() {\r\n // var retVal = ((\"Microsoft Internet Explorer\" == navigator.appName) || // IE < 11\r\n // navigator.userAgent.match(/Trident\\/./i)); // IE 11\r\n return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE');\r\n }\r\n\r\n function isIOS() {\r\n return (window.navigator.userAgent.match(/ipod/i) ||\r\n window.navigator.userAgent.match(/ipad/i) ||\r\n window.navigator.userAgent.match(/iphone/i));\r\n }\r\n\r\n function isNativeMessageSupported() {\r\n // В IE работаем через NPAPI\r\n if (isIE()) {\r\n return false;\r\n }\r\n // В Edge работаем через NativeMessage\r\n if (browserSpecs.name === 'Edg') {\r\n return true;\r\n }\r\n if (browserSpecs.name === 'YaBrowser') {\r\n isYandex = true;\r\n return true;\r\n }\r\n // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии\r\n if (browserSpecs.name === 'Opera') {\r\n isOpera = true;\r\n return (browserSpecs.version >= 33);\r\n }\r\n if (browserSpecs.name === 'Firefox') {\r\n isFireFox = true;\r\n return (browserSpecs.version >= 52);\r\n }\r\n if (browserSpecs.name === 'Chrome') {\r\n return (browserSpecs.version >= 42);\r\n }\r\n //В Сафари начиная с 12 версии нет NPAPI\r\n if (browserSpecs.name === 'Safari') {\r\n isSafari = true;\r\n return (browserSpecs.version >= 12);\r\n }\r\n }\r\n\r\n // Функция активации объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObject(name) {\r\n if (isIOS()) {\r\n // На iOS для создания объектов используется функция\r\n // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js\r\n return call_ru_cryptopro_npcades_10_native_bridge(\"CreateObject\", [name]);\r\n }\r\n var objWebClassFactory;\r\n if (isIE()) {\r\n // В Internet Explorer создаются COM-объекты\r\n if (name.match(/X509Enrollment/i)) {\r\n try {\r\n // Объекты CertEnroll пробуем создавать через нашу фабрику,\r\n // если не получилось то через CX509EnrollmentWebClassFactory\r\n objWebClassFactory = document.getElementById(\"webClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n try {\r\n var objCertEnrollClassFactory = document.getElementById(\"certEnrollClassFactory\");\r\n return objCertEnrollClassFactory.CreateObject(name);\r\n }\r\n catch (err) {\r\n throw (\"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS\");\r\n }\r\n }\r\n }\r\n // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory\r\n try {\r\n objWebClassFactory = document.getElementById(\"webClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n } catch (e) {\r\n // Для версий плагина ниже 2.0.12538\r\n return new window.ActiveXObject(name);\r\n }\r\n }\r\n // создаются объекты NPAPI\r\n return pluginObject.CreateObject(name);\r\n }\r\n\r\n function decimalToHexString(number) {\r\n if (number < 0) {\r\n number = 0xFFFFFFFF + number + 1;\r\n }\r\n\r\n return number.toString(16).toUpperCase();\r\n }\r\n\r\n function GetMessageFromException(e) {\r\n var err = e.message;\r\n if (!err) {\r\n err = e;\r\n } else if (e.number) {\r\n err += \" (0x\" + decimalToHexString(e.number) + \")\";\r\n }\r\n return err;\r\n }\r\n\r\n function getLastError(exception) {\r\n if (isNativeMessageSupported() || isIE() || isIOS()) {\r\n return GetMessageFromException(exception);\r\n }\r\n\r\n try {\r\n return pluginObject.getLastError();\r\n } catch (e) {\r\n return GetMessageFromException(exception);\r\n }\r\n }\r\n\r\n // Функция для удаления созданных объектов\r\n function ReleasePluginObjects() {\r\n // noinspection JSUnresolvedVariable\r\n return cpcsp_chrome_nmcades.ReleasePluginObjects();\r\n }\r\n\r\n // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObjectAsync(name) {\r\n return pluginObject.CreateObjectAsync(name);\r\n }\r\n\r\n // Функции для IOS\r\n // noinspection JSUnusedGlobalSymbols\r\n var ru_cryptopro_npcades_10_native_bridge = {\r\n callbacksCount: 1,\r\n callbacks: {},\r\n\r\n // Automatically called by native layer when a result is available\r\n resultForCallback: function resultForCallback(callbackId, resultArray) {\r\n var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId];\r\n if (!callback) {\r\n return;\r\n }\r\n callback.apply(null, resultArray);\r\n },\r\n\r\n // Use this in javascript to request native objective-c code\r\n // functionName : string (I think the name is explicit :p)\r\n // args : array of arguments\r\n // callback : function with n-arguments that is going to be called when the native code returned\r\n call: function call(functionName, args, callback) {\r\n var hasCallback = callback && typeof callback === \"function\";\r\n var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0;\r\n\r\n if (hasCallback) {\r\n ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback;\r\n }\r\n\r\n var iframe = document.createElement(\"IFRAME\");\r\n var arrObjs = new Array(\"_CPNP_handle\");\r\n try {\r\n iframe.setAttribute(\"src\", \"cpnp-js-call:\" + functionName + \":\" + callbackId + \":\" + encodeURIComponent(window.JSON.stringify(args, arrObjs)));\r\n } catch (e) {\r\n window.alert(e);\r\n }\r\n document.documentElement.appendChild(iframe);\r\n iframe.parentNode.removeChild(iframe);\r\n iframe = null;\r\n }\r\n };\r\n\r\n function call_ru_cryptopro_npcades_10_native_bridge(functionName, array) {\r\n var tmpobj;\r\n var ex;\r\n ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function (e, response) {\r\n ex = e;\r\n var tmpobj = \"\";\r\n try {\r\n tmpobj = window.JSON.parse(response);\r\n }\r\n catch (err) {\r\n tmpobj = response;\r\n }\r\n if (typeof tmpobj === \"string\") {\r\n tmpobj = tmpobj.replace(/\\\\\\n/gm, \"\\n\");\r\n tmpobj = tmpobj.replace(/\\\\\\r/gm, \"\\r\");\r\n }\r\n });\r\n if (ex) {\r\n throw ex;\r\n }\r\n return tmpobj;\r\n }\r\n\r\n function show_firefox_missing_extension_dialog() {\r\n if (!window.cadesplugin_skip_extension_install) {\r\n var ovr = document.createElement('div');\r\n ovr.id = \"cadesplugin_ovr\";\r\n ovr.style = \"visibility: hidden; position: fixed; left: 0; top: 0; width:100%; height:100%; background-color: rgba(0,0,0,0.7)\";\r\n ovr.innerHTML = \"
\" +\r\n \"\" +\r\n \"

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.\" +\r\n \"

Скачать расширение

\" +\r\n \"
\";\r\n document.getElementsByTagName(\"Body\")[0].appendChild(ovr);\r\n document.getElementById(\"cadesplugin_close_install\").addEventListener('click', function () {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n\r\n ovr.addEventListener('click', function () {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n ovr.style.visibility = \"visible\";\r\n }\r\n }\r\n\r\n function firefox_or_safari_nmcades_onload() {\r\n // noinspection JSUnresolvedVariable\r\n if (window.cadesplugin_extension_loaded_callback) {\r\n window.cadesplugin_extension_loaded_callback();\r\n }\r\n isFireFoxExtensionLoaded = true;\r\n // noinspection JSUnresolvedVariable,JSUnresolvedFunction\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n\r\n function load_js_script(url, successFunc, errorFunc) {\r\n var script = document.createElement(\"script\");\r\n script.setAttribute(\"type\", \"text/javascript\");\r\n script.setAttribute(\"src\", url);\r\n script.onerror = errorFunc;\r\n script.onload = successFunc;\r\n document.getElementsByTagName(\"head\")[0].appendChild(script);\r\n }\r\n\r\n function nmcades_api_onload() {\r\n if (!isIE() && !isFireFox && !isSafari) {\r\n // noinspection JSUnresolvedVariable\r\n if (window.cadesplugin_extension_loaded_callback) {\r\n window.cadesplugin_extension_loaded_callback();\r\n }\r\n }\r\n window.postMessage(\"cadesplugin_echo_request\", \"*\");\r\n window.addEventListener(\"message\", function (event) {\r\n if (typeof (event.data) !== \"string\" || !event.data.match(\"cadesplugin_loaded\")) {\r\n return;\r\n }\r\n if (cadesplugin_loaded_event_recieved) {\r\n return;\r\n }\r\n if (isFireFox || isSafari) {\r\n // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js\r\n var url = event.data.substring(event.data.indexOf(\"url:\") + 4);\r\n if (!url.match(\"^(moz|safari)-extension://[a-zA-Z0-9/_-]+/nmcades_plugin_api.js$\")) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"Bad url \\\"\" + url + \"\\\" for load CryptoPro Extension for CAdES Browser plug-in\");\r\n plugin_loaded_error();\r\n return;\r\n }\r\n load_js_script(url, firefox_or_safari_nmcades_onload, plugin_loaded_error);\r\n } else {\r\n // noinspection JSUnresolvedVariable,JSUnresolvedFunction\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n cadesplugin_loaded_event_recieved = true;\r\n }, false);\r\n }\r\n\r\n // Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari\r\n function load_extension() {\r\n if (isFireFox || isSafari) {\r\n // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера.\r\n nmcades_api_onload();\r\n return;\r\n }\r\n var operaUrl = \"chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js\";\r\n var manifestv2Url = \"chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js\";\r\n var manifestv3Url = \"chrome-extension://pfhgbfnnjiafkhfdkmpiflachepdcjod/nmcades_plugin_api.js\";\r\n if (isYandex || isOpera) {\r\n // в асинхронном варианте для Yandex пробуем подключить расширения по очереди\r\n load_js_script(operaUrl, nmcades_api_onload, function () {\r\n load_js_script(manifestv2Url, nmcades_api_onload, function () {\r\n load_js_script(manifestv3Url, nmcades_api_onload, plugin_loaded_error);\r\n });\r\n });\r\n return;\r\n }\r\n // для Chrome, Chromium, Chromium Edge расширение из Chrome store\r\n load_js_script(manifestv2Url, nmcades_api_onload, function () {\r\n load_js_script(manifestv3Url, nmcades_api_onload, plugin_loaded_error);\r\n });\r\n }\r\n\r\n //Загружаем плагин для NPAPI\r\n function load_npapi_plugin() {\r\n var elem = document.createElement('object');\r\n elem.setAttribute(\"id\", \"cadesplugin_object\");\r\n elem.setAttribute(\"type\", \"application/x-cades\");\r\n elem.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem);\r\n pluginObject = document.getElementById(\"cadesplugin_object\");\r\n if (isIE()) {\r\n var elem1 = document.createElement('object');\r\n elem1.setAttribute(\"id\", \"certEnrollClassFactory\");\r\n elem1.setAttribute(\"classid\", \"clsid:884e2049-217d-11da-b2a4-000e7bbb2b09\");\r\n elem1.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem1);\r\n var elem2 = document.createElement('object');\r\n elem2.setAttribute(\"id\", \"webClassFactory\");\r\n elem2.setAttribute(\"classid\", \"clsid:B04C8637-10BD-484E-B0DA-B8A039F60024\");\r\n elem2.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem2);\r\n }\r\n }\r\n\r\n //Отправляем событие что все ок.\r\n function plugin_loaded() {\r\n plugin_resolved = 1;\r\n if (canPromise) {\r\n plugin_resolve();\r\n } else {\r\n window.postMessage(\"cadesplugin_loaded\", \"*\");\r\n }\r\n }\r\n\r\n //Отправляем событие что сломались.\r\n function plugin_loaded_error(msg) {\r\n if (typeof (msg) === 'undefined' || typeof (msg) === 'object') {\r\n msg = \"Плагин недоступен\";\r\n }\r\n plugin_resolved = 1;\r\n if (canPromise) {\r\n plugin_reject(msg);\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n }\r\n\r\n //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку\r\n function check_load_timeout() {\r\n if (plugin_resolved === 1) {\r\n return;\r\n }\r\n if (isFireFox && !isFireFoxExtensionLoaded) {\r\n show_firefox_missing_extension_dialog();\r\n }\r\n plugin_resolved = 1;\r\n if (canPromise) {\r\n plugin_reject(\"Истекло время ожидания загрузки плагина\");\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n }\r\n\r\n function check_npapi_plugin() {\r\n try {\r\n CreateObject(\"CAdESCOM.About\");\r\n plugin_loaded();\r\n } catch (err) {\r\n document.getElementById(\"cadesplugin_object\").style.display = 'none';\r\n // Объект создать не удалось, проверим, установлен ли\r\n // вообще плагин. Такая возможность есть не во всех браузерах\r\n // noinspection JSDeprecatedSymbols\r\n var mimetype = window.navigator.mimeTypes[\"application/x-cades\"];\r\n if (mimetype) {\r\n // noinspection JSDeprecatedSymbols\r\n var plugin = mimetype.enabledPlugin;\r\n if (plugin) {\r\n plugin_loaded_error(\"Плагин загружен, но не создаются обьекты\");\r\n } else {\r\n plugin_loaded_error(\"Ошибка при загрузке плагина\");\r\n }\r\n } else {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n }\r\n }\r\n }\r\n\r\n // Проверяем работает ли плагин\r\n function check_plugin_working() {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = \"\";\r\n var isIeLessThan9 = (div.getElementsByTagName(\"i\").length === 1);\r\n if (isIeLessThan9) {\r\n plugin_loaded_error(\"Internet Explorer версии 8 и ниже не поддерживается\");\r\n return;\r\n }\r\n\r\n if (isNativeMessageSupported()) {\r\n load_extension();\r\n } else if (!canPromise) {\r\n window.addEventListener(\"message\", function (event) {\r\n if (event.data !== \"cadesplugin_echo_request\") {\r\n return;\r\n }\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n }, false);\r\n } else {\r\n if (document.readyState === \"complete\") {\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n } else {\r\n window.addEventListener(\"load\", function (event) {\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n }, false);\r\n }\r\n }\r\n }\r\n\r\n function set_pluginObject(obj) {\r\n pluginObject = obj;\r\n }\r\n\r\n function is_capilite_enabled() {\r\n // noinspection JSUnresolvedVariable\r\n return ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP);\r\n }\r\n\r\n function set_load_timeout() {\r\n // noinspection JSUnresolvedVariable\r\n if (window.cadesplugin_load_timeout) {\r\n window.setTimeout(check_load_timeout, window.cadesplugin_load_timeout);\r\n } else {\r\n window.setTimeout(check_load_timeout, 20000);\r\n }\r\n }\r\n\r\n // noinspection JSUnusedLocalSymbols\r\n var onVisibilityChange = function (event) {\r\n if (document.hidden === false) {\r\n document.removeEventListener(\"visibilitychange\", onVisibilityChange);\r\n set_load_timeout();\r\n check_plugin_working();\r\n }\r\n };\r\n\r\n //Export\r\n cadesplugin.JSModuleVersion = \"2.4.2\";\r\n cadesplugin.async_spawn = async_spawn;\r\n cadesplugin.set = set_pluginObject;\r\n cadesplugin.set_log_level = set_log_level;\r\n cadesplugin.get_extension_version = get_extension_version;\r\n cadesplugin.get_extension_id = get_extension_id;\r\n cadesplugin.getLastError = getLastError;\r\n cadesplugin.is_capilite_enabled = is_capilite_enabled;\r\n\r\n if (isNativeMessageSupported()) {\r\n cadesplugin.CreateObjectAsync = CreateObjectAsync;\r\n cadesplugin.ReleasePluginObjects = ReleasePluginObjects;\r\n }\r\n\r\n if (!isNativeMessageSupported()) {\r\n cadesplugin.CreateObject = CreateObject;\r\n }\r\n\r\n set_constantValues();\r\n\r\n cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR;\r\n window.cadesplugin = cadesplugin;\r\n if (isSafari && document.hidden) {\r\n document.addEventListener(\"visibilitychange\", onVisibilityChange);\r\n return;\r\n }\r\n set_load_timeout();\r\n check_plugin_working();\r\n}());\r\n","import { ISSUER_TAGS_TRANSLATIONS, SUBJECT_TAGS_TRANSLATIONS } from '../../constants';\nimport { TagTranslation } from '../../helpers/_parseCertInfo';\nimport { exportBase64 } from './exportBase64';\nimport { getAlgorithm } from './getAlgorithm';\nimport { getCadesProp } from './getCadesProp';\nimport { getDecodedExtendedKeyUsage, ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';\nimport { getExtendedKeyUsage } from './getExtendedKeyUsage';\nimport { getInfo } from './getInfo';\nimport { hasExtendedKeyUsage } from './hasExtendedKeyUsage';\nimport { isValid } from './isValid';\n\nexport type CadesCertificate = any;\n\nexport class Certificate {\n constructor(\n public _cadesCertificate: CadesCertificate,\n public name: string,\n public issuerName: string,\n public subjectName: string,\n public thumbprint: string,\n public validFrom: string,\n public validTo: string,\n ) {}\n\n public getOwnerInfo(): Promise {\n return getInfo.call(this, SUBJECT_TAGS_TRANSLATIONS, 'SubjectName');\n }\n\n public getIssuerInfo(): Promise {\n return getInfo.call(this, ISSUER_TAGS_TRANSLATIONS, 'IssuerName');\n }\n\n public getExtendedKeyUsage(): Promise {\n return getExtendedKeyUsage.call(this);\n }\n\n public getDecodedExtendedKeyUsage(): Promise {\n return getDecodedExtendedKeyUsage.call(this);\n }\n\n public getAlgorithm(): Promise {\n return getAlgorithm.call(this);\n }\n\n public getCadesProp(propName): Promise {\n return getCadesProp.call(this, propName);\n }\n\n public isValid(): Promise {\n return isValid.call(this);\n }\n\n public exportBase64(): Promise {\n return exportBase64.call(this);\n }\n\n public hasExtendedKeyUsage(oids): Promise {\n return hasExtendedKeyUsage.call(this, oids);\n }\n}\n","export const CADESCOM_ATTRIBUTE_OTHER = -1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CADESCOM_AllowNoOutstandingRequest = 1;\nexport const CADESCOM_AllowNone = 0;\nexport const CADESCOM_AllowUntrustedCertificate = 2;\nexport const CADESCOM_AllowUntrustedRoot = 4;\nexport const CADESCOM_BASE64_TO_BINARY = 0x01;\nexport const CADESCOM_CADES_BES = 1;\nexport const CADESCOM_CADES_DEFAULT = 0;\nexport const CADESCOM_CADES_T = 5;\nexport const CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\nexport const CADESCOM_CONTAINER_STORE = 100;\nexport const CADESCOM_CURRENT_USER_STORE = 2;\nexport const CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\nexport const CADESCOM_DISPLAY_DATA_CONTENT = 1;\nexport const CADESCOM_DISPLAY_DATA_NONE = 0;\nexport const CADESCOM_ENCODE_ANY = -1;\nexport const CADESCOM_ENCODE_BASE64 = 0;\nexport const CADESCOM_ENCODE_BINARY = 1;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\nexport const CADESCOM_HASH_ALGORITHM_MD2 = 1;\nexport const CADESCOM_HASH_ALGORITHM_MD4 = 2;\nexport const CADESCOM_HASH_ALGORITHM_MD5 = 3;\nexport const CADESCOM_HASH_ALGORITHM_SHA1 = 0;\nexport const CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\nexport const CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\nexport const CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\nexport const CADESCOM_LOCAL_MACHINE_STORE = 1;\nexport const CADESCOM_PKCS7_TYPE = 65535;\nexport const CADESCOM_STRING_TO_UCS2LE = 0x00;\nexport const CADESCOM_SkipInstallToStore = 268435456;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\nexport const CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\nexport const CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\nexport const CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\nexport const CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\nexport const CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\nexport const CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\nexport const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\nexport const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\nexport const CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\nexport const CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\nexport const CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\nexport const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\nexport const CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\nexport const CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\nexport const CAPICOM_CURRENT_USER_STORE = 2;\nexport const CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\nexport const CAPICOM_EKU_CLIENT_AUTH = 2;\nexport const CAPICOM_EKU_OTHER = 0;\nexport const CAPICOM_EKU_SMARTCARD_LOGON = 5;\nexport const CAPICOM_LOCAL_MACHINE_STORE = 1;\nexport const CAPICOM_MEMORY_STORE = 0;\nexport const CAPICOM_MY_STORE = 'My';\nexport const CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\nexport const CAPICOM_OID_OTHER = 0;\nexport const CAPICOM_PROPID_ACCESS_STATE = 14;\nexport const CAPICOM_PROPID_ARCHIVED = 19;\nexport const CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;\nexport const CAPICOM_PROPID_AUTO_ENROLL = 21;\nexport const CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;\nexport const CAPICOM_PROPID_CTL_USAGE = 9;\nexport const CAPICOM_PROPID_DATE_STAMP = 27;\nexport const CAPICOM_PROPID_DESCRIPTION = 13;\nexport const CAPICOM_PROPID_EFS = 17;\nexport const CAPICOM_PROPID_ENHKEY_USAGE = 9;\nexport const CAPICOM_PROPID_ENROLLMENT = 26;\nexport const CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;\nexport const CAPICOM_PROPID_FIRST_RESERVED = 66;\nexport const CAPICOM_PROPID_FIRST_USER = 0x00008000;\nexport const CAPICOM_PROPID_FORTEZZA_DATA = 18;\nexport const CAPICOM_PROPID_FRIENDLY_NAME = 11;\nexport const CAPICOM_PROPID_HASH_PROP = 3;\nexport const CAPICOM_PROPID_IE30_RESERVED = 7;\nexport const CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;\nexport const CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;\nexport const CAPICOM_PROPID_KEY_CONTEXT = 5;\nexport const CAPICOM_PROPID_KEY_IDENTIFIER = 20;\nexport const CAPICOM_PROPID_KEY_PROV_HANDLE = 1;\nexport const CAPICOM_PROPID_KEY_PROV_INFO = 2;\nexport const CAPICOM_PROPID_KEY_SPEC = 6;\nexport const CAPICOM_PROPID_LAST_RESERVED = 0x00007fff;\nexport const CAPICOM_PROPID_LAST_USER = 0x0000ffff;\nexport const CAPICOM_PROPID_MD5_HASH = 4;\nexport const CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;\nexport const CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;\nexport const CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;\nexport const CAPICOM_PROPID_PVK_FILE = 12;\nexport const CAPICOM_PROPID_RENEWAL = 64;\nexport const CAPICOM_PROPID_SHA1_HASH = 3;\nexport const CAPICOM_PROPID_SIGNATURE_HASH = 15;\nexport const CAPICOM_PROPID_SMART_CARD_DATA = 16;\nexport const CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;\nexport const CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;\nexport const CAPICOM_PROPID_UNKNOWN = 0;\nexport const CAPICOM_SMART_CARD_USER_STORE = 4;\nexport const CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;\nexport const CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\nexport const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\nexport const CAPICOM_STORE_OPEN_READ_ONLY = 0;\nexport const CAPICOM_STORE_OPEN_READ_WRITE = 1;\nexport const CHECK_NONE = 0;\nexport const CHECK_OFFLINE_REVOCATION_STATUS = 16;\nexport const CHECK_ONLINE_REVOCATION_STATUS = 8;\nexport const CHECK_SIGNATURE_VALIDITY = 4;\nexport const CHECK_TIME_VALIDITY = 2;\nexport const CHECK_TRUSTED_ROOT = 1;\nexport const LOG_LEVEL_DEBUG = 4;\nexport const LOG_LEVEL_ERROR = 1;\nexport const LOG_LEVEL_INFO = 2;\nexport const TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;\nexport const TRUST_CTL_IS_NOT_TIME_VALID = 131072;\nexport const TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;\nexport const TRUST_IS_CYCLIC = 128;\nexport const TRUST_IS_NOT_SIGNATURE_VALID = 8;\nexport const TRUST_IS_NOT_TIME_NESTED = 2;\nexport const TRUST_IS_NOT_TIME_VALID = 1;\nexport const TRUST_IS_NOT_VALID_FOR_USAGE = 16;\nexport const TRUST_IS_PARTIAL_CHAIN = 65536;\nexport const TRUST_IS_REVOKED = 4;\nexport const TRUST_IS_UNTRUSTED_ROOT = 32;\nexport const TRUST_REVOCATION_STATUS_UNKNOWN = 64;\nexport const XmlDsigGost3410Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\nexport const XmlDsigGost3410UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411';\nexport const XmlDsigGost3411Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\nexport const XmlDsigGost3411UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr3411';\n","import { TagsTranslations } from './tags-translations';\n\nexport const ISSUER_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UN', 'UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN', 'commonName'], translation: 'Удостоверяющий центр' },\n { possibleNames: ['C', 'countryName'], translation: 'Страна' },\n { possibleNames: ['S', 'ST', 'stateOrProvinceName'], translation: 'Регион' },\n { possibleNames: ['STREET', 'streetAddress'], translation: 'Адрес' },\n { possibleNames: ['O', 'organizationName'], translation: 'Компания' },\n { possibleNames: ['OU', 'organizationalUnitName'], translation: 'Тип' },\n { possibleNames: ['T', 'TITLE'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'ИННФЛ', 'ИНН ФЛ', 'INN', 'ИНН физического лица'], translation: 'ИНН' },\n { possibleNames: ['ИННЮЛ', 'ИНН ЮЛ', 'INN LE', 'INNLE', 'ИНН организации'], translation: 'ИНН организации' },\n { possibleNames: ['E', 'email', 'emailAddress', 'pkcs9email'], translation: 'Email' },\n { possibleNames: ['L', 'localityName'], translation: 'Город' },\n];\n","export const OIDS_DICTIONARY = {\n '1.2.643.2.2.34.6': 'Пользователь Центра Регистрации',\n '1.2.643.2.39.1.1': 'Использование в программных продуктах системы \"1С:Предприятие 8\"',\n '1.2.643.3.131.1.1': 'ИНН',\n '1.2.643.100.4': 'ИНН организации',\n '1.2.643.100.1': 'ОГРН',\n '1.2.643.100.5': 'ОГРНИП',\n '1.2.643.100.3': 'СНИЛС',\n '1.2.643.3.141.1.1': 'РНС ФСС',\n '1.2.643.3.141.1.2': 'КП ФСС',\n '1.2.643.3.2.100.65.13.11': 'Использование в системе АИС \"Госзакупки\" Сахалинской области.',\n '1.2.643.3.8.100.1': 'Сертификат типа \"ekey-ГОСТ\"',\n '1.2.643.3.8.100.1.1': 'Общее использование в системах ИОК без права заверения финансовых документов',\n '1.2.643.3.8.100.1.10':\n 'Для участия в электронных торгах и подписания государственного контракта в информационных системах Тендерного комитета города Москвы уполномоченными лицами участников размещения государственного заказа города Москвы',\n '1.2.643.3.8.100.1.11':\n 'Подписание электронных документов в автоматизированной информационной системе размещения государственного и муниципального заказа Саратовской области',\n '1.2.643.3.8.100.1.12': 'Использование в системе государственного заказа Иркутской области',\n '1.2.643.3.8.100.1.13':\n 'Использование в электронной торговой площадке агентства государственного заказа Красноярского края',\n '1.2.643.3.8.100.1.14': 'Использование в электронной торговой площадке \"Тендер\"',\n '1.2.643.3.8.100.1.2': 'Передача отчетности по ТКС',\n '1.2.643.3.8.100.1.3': 'Оформление взаимных обязательств, соглашений, договоров, актов и т.п.',\n '1.2.643.3.8.100.1.4': 'Внутрикорпоративный документооборот',\n '1.2.643.3.8.100.1.5': 'Использование в системах электронной торговли',\n '1.2.643.3.8.100.1.6': 'Использование в торгово-закупочной системе \"ЭЛЕКТРА\"',\n '1.2.643.3.8.100.1.7': 'Использование в системе Портал государственных закупок Ставропольского края.',\n '1.2.643.3.8.100.1.8': 'Использование в Единой системе электронной торговли B2B-Center и B2G.',\n '1.2.643.3.8.100.1.9':\n 'Для участия в электронных торгах и подписания государственного контракта в электронной площадке ОАО «ЕЭТП» уполномоченными лицами участников размещения государственного или муниципального заказа',\n '1.2.643.5.1.24.2.1.3':\n 'Формирование документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.1.3.1':\n 'Формирование кадастровым инженером документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.2.2': 'Формирование документов как результата оказания услуги со стороны органов регистрации прав',\n '1.2.643.5.1.24.2.2.3':\n 'Формирование документов для получения государственных услуг в сфере государственной регистрации прав на недвижимое имущество и сделок с ним со стороны заявителя',\n '1.2.643.6.2.1.7.1':\n 'Использование единоличным исполнительным органом юридического лица или уполномоченными представителями юридического лица в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских и иных прав и обязанностей в сфере негосударственного пенсионного обеспечения, негосударственного пенсионного страхования, в сфере деятельности паевых инвестиционных фондов, акционерных инвестиционных фондов, профессиональных участников рынка ценных бумаг, а также связанной с обслуживанием указанной деятельности услуг кредитных и иных организаций',\n '1.2.643.6.2.1.7.2':\n 'Использование физическим лицом в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских прав и обязанностей в отношении инвестиционных паев паевых инвестиционных фондов, в том числе отношения, связанные с учетом и/или фиксацией прав на инвестиционные паи паевых инвестиционных фондов',\n '1.2.643.6.3':\n 'Использование в электронных торговых системах и в программном обеспечении, связанным с обменом электронных сообщений',\n '1.2.643.6.3.1.1': 'Использование на электронных площадок отобранных для проведения аукционах в электронной форме',\n '1.2.643.6.3.1.2.1': 'Тип участника - Юридическое лицо',\n '1.2.643.6.3.1.2.2': 'Тип участника - Физическое лицо',\n '1.2.643.6.3.1.2.3': 'Тип участника - Индивидуальный предприниматель',\n '1.2.643.6.3.1.3.1': 'Участник размещения заказа',\n '1.2.643.6.3.1.4.1': 'Администратор организации',\n '1.2.643.6.3.1.4.2': 'Уполномоченный специалист',\n '1.2.643.6.3.1.4.3': 'Специалист с правом подписи контракта',\n '1.2.840.113549.1.9.2': 'Неструктурированное имя',\n '1.3.6.1.4.1.24138.1.1.8.1': 'Обеспечение юридической значимости в Системе \"Электронная Торговая Площадка\"',\n '1.3.6.1.4.1.29919.21': 'Использование в системе Портал государственных закупок Ростовской области \"Рефери\".',\n '1.3.6.1.5.5.7.3.2': 'Проверка подлинности клиента',\n '1.3.6.1.5.5.7.3.4': 'Защищенная электронная почта',\n '1.3.643.3.8.100.15': 'Использование в ЭТП \"uTender\"',\n};\n","import { TagsTranslations } from './tags-translations';\n\nexport const SUBJECT_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UN', 'UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN', 'commonName'], translation: 'Владелец' },\n { possibleNames: ['SN', 'surname'], translation: 'Фамилия' },\n { possibleNames: ['G', 'givenName', 'gn'], translation: 'Имя Отчество' },\n { possibleNames: ['C', 'countryName'], translation: 'Страна' },\n { possibleNames: ['S', 'ST', 'stateOrProvinceName'], translation: 'Регион' },\n { possibleNames: ['STREET', 'streetAddress'], translation: 'Адрес' },\n { possibleNames: ['O', 'organizationName'], translation: 'Компания' },\n { possibleNames: ['OU', 'organizationalUnitName'], translation: 'Отдел/подразделение' },\n { possibleNames: ['T', 'TITLE'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'ИННФЛ', 'ИНН ФЛ', 'INN', 'ИНН физического лица'], translation: 'ИНН' },\n { possibleNames: ['ИННЮЛ', 'ИНН ЮЛ', 'INN LE', 'INNLE', 'ИНН организации'], translation: 'ИНН организации' },\n { possibleNames: ['E', 'email', 'emailAddress', 'pkcs9email'], translation: 'Email' },\n { possibleNames: ['L', 'localityName'], translation: 'Город' },\n];\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Экспортирует сертификат в формате base64\n *\n * @returns сертификат в формате base64\n */\nexport const exportBase64 = _afterPluginsLoaded(function (): string {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function exportBase64(): string {\n let base64: string;\n\n try {\n base64 = __cadesAsyncToken__ + cadesCertificate.Export(0);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при экспорте сертификата');\n }\n\n return base64;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\ninterface AlgorithmInfo {\n algorithm: string;\n oid: string;\n}\n\n/**\n * Возвращает информацию об алгоритме сертификата\n *\n * @returns информацию об алгоритме и его OID'е\n */\nexport const getAlgorithm = _afterPluginsLoaded(function (): AlgorithmInfo {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getAlgorithm(): AlgorithmInfo {\n const algorithmInfo: AlgorithmInfo = {\n algorithm: null,\n oid: null,\n };\n let cadesPublicKey;\n\n try {\n cadesPublicKey = __cadesAsyncToken__ + cadesCertificate.PublicKey();\n cadesPublicKey = __cadesAsyncToken__ + cadesPublicKey.Algorithm;\n algorithmInfo.algorithm = __cadesAsyncToken__ + cadesPublicKey.FriendlyName;\n algorithmInfo.oid = __cadesAsyncToken__ + cadesPublicKey.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении алгоритма');\n }\n\n return algorithmInfo;\n }),\n );\n});\n","import { OIDS_DICTIONARY } from '../../constants';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\nexport interface ExtendedKeysTranslations {\n [key: string]: string | null;\n}\n\n/**\n * Возвращает расшифрованные ОИД'ы сертификата\n *\n * @returns словарь расшифрованных ОИД'ов\n */\nexport const getDecodedExtendedKeyUsage = _afterPluginsLoaded(async function (): Promise {\n const certificateOids = await (this as Certificate).getExtendedKeyUsage();\n\n return certificateOids.reduce(\n (decodedOids, oidCode) => ({\n ...decodedOids,\n [oidCode]: OIDS_DICTIONARY[oidCode] || null,\n }),\n {},\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает ОИД'ы сертификата\n *\n * @returns список ОИД'ов\n */\nexport const getExtendedKeyUsage = _afterPluginsLoaded(function (): string[] {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getExtendedKeyUsage(): string[] {\n const OIDS: string[] = [];\n let count: any;\n\n try {\n count = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n count = __cadesAsyncToken__ + count.EKUs;\n count = __cadesAsyncToken__ + count.Count;\n\n if (count > 0) {\n while (count > 0) {\n let cadesExtendedKeyUsage;\n\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.EKUs;\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.Item(count);\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.OID;\n\n OIDS.push(cadesExtendedKeyUsage);\n\n count--;\n }\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || \"Ошибка при получении ОИД'ов\");\n }\n\n return OIDS;\n }),\n );\n});\n","import { TagsTranslations } from '../../constants/tags-translations';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { _parseCertInfo, TagTranslation } from '../../helpers/_parseCertInfo';\nimport { getCadesProp } from './getCadesProp';\n\n/**\n * Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам\n *\n * @param tags = словарь\n * @param entitiesPath = путь к разбираемой сущности\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const getInfo = _afterPluginsLoaded(async function (\n tags: TagsTranslations[],\n entitiesPath: string,\n): Promise {\n let entities: string;\n\n try {\n entities = await getCadesProp.call(this, entitiesPath);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при извлечении информации из сертификата');\n }\n\n return _parseCertInfo(tags, entities);\n});\n","import { OIDS_DICTIONARY } from '../constants';\nimport { TagsTranslations } from '../constants/tags-translations';\n\nexport interface TagTranslation {\n description: string;\n title: string;\n isTranslated: boolean;\n}\n\n/**\n * Парсит информацию из строки с информацией о сертификате\n *\n * @param tagsTranslations - словарь с расшифровками тэгов\n * @param rawInfo - данные для парсинга\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const _parseCertInfo = (tagsTranslations: TagsTranslations[], rawInfo: string): TagTranslation[] => {\n const extractedEntities: string[] = rawInfo.match(/([а-яА-Яa-zA-Z0-9\\s.]+)=(?:(\"[^\"]+?\")|(.+?))(?:,|$)/g);\n\n if (extractedEntities) {\n return extractedEntities.map((group) => {\n const segmentsMatch = group.trim().match(/^([а-яА-Яa-zA-Z0-9\\s.]+)=(.+?),?$/);\n let title = segmentsMatch?.[1];\n // Вырезаем лишние кавычки\n const description = segmentsMatch?.[2]?.replace(/^\"(.*)\"/, '$1')?.replace(/\"{2}/g, '\"');\n const oidIdentifierMatch = title?.match(/^OID\\.(.*)/);\n const oidIdentifier = oidIdentifierMatch?.[1];\n let isTranslated = false;\n\n // Если нашли в тайтле ОИД, пытаемся его расшифровать\n if (oidIdentifier) {\n const oidTranslation = OIDS_DICTIONARY[oidIdentifier];\n\n if (oidTranslation) {\n title = oidTranslation;\n isTranslated = true;\n }\n }\n\n const tagTranslation = tagsTranslations.find((tag) => tag.possibleNames.find((name) => name === title))\n ?.translation;\n\n if (tagTranslation) {\n title = tagTranslation;\n isTranslated = true;\n }\n\n return { description, title, isTranslated };\n });\n }\n};\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет наличие ОИД'а (ОИД'ов) у сертификата\n *\n * @param oids - ОИД'ы для проверки\n * @returns флаг наличия ОИД'ов у сертификата\n */\nexport const hasExtendedKeyUsage = _afterPluginsLoaded(async function (oids: string | string[]): Promise {\n const certOids = await (this as Certificate).getExtendedKeyUsage();\n\n let result: boolean;\n\n if (Array.isArray(oids)) {\n result = oids.every((oidToCheck) => certOids.some((certOid) => certOid === oidToCheck));\n } else {\n result = certOids.some((certOid) => certOid === oids);\n }\n\n return result;\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет действительность сертификата\n *\n * @returns флаг валидности\n */\nexport const isValid = _afterPluginsLoaded(function (): boolean {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function isValid() {\n let isValid;\n\n try {\n isValid = __cadesAsyncToken__ + cadesCertificate.IsValid();\n isValid = __cadesAsyncToken__ + isValid.Result;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при проверке сертификата');\n }\n\n return Boolean(isValid);\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { _isSupportedCadesVersion } from '../helpers/_isSupportedCadesVersion';\nimport { _isSupportedCSPVersion } from '../helpers/_isSupportedCSPVersion';\nimport { getSystemInfo, SystemInfo } from './getSystemInfo';\n\n/**\n * Проверяет корректность настроек ЭП на машине\n *\n * @returns флаг корректности настроек\n */\nexport const isValidSystemSetup = _afterPluginsLoaded(\n async (): Promise => {\n let systemInfo: SystemInfo;\n\n try {\n systemInfo = await getSystemInfo();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Настройки ЭП на данной машине не верны');\n }\n\n if (!_isSupportedCadesVersion(systemInfo.cadesVersion)) {\n throw new Error('Не поддерживаемая версия плагина');\n }\n\n if (!_isSupportedCSPVersion(systemInfo.cspVersion)) {\n throw new Error('Не поддерживаемая версия CSP');\n }\n\n return true;\n },\n);\n","export const _isSupportedCadesVersion = (version: string): boolean => {\n const match = version.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n\n if (!match) {\n return false;\n }\n\n const [, major, minor, patch] = match;\n\n if (Number(major) < 2) {\n return false;\n }\n\n if (Number(major) === 2 && Number(patch) < 12438) {\n return false;\n }\n\n return true;\n};\n","const oldestSupportedCSPVersion = 4.0;\n\nexport const _isSupportedCSPVersion = (version: string): boolean => {\n version = version.match(/\\d+?\\b(?:\\.\\d+)?/)?.[0];\n\n return Number(version) >= oldestSupportedCSPVersion;\n};\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\n\n/**\n * Создает XML подпись для документа в формате XML\n *\n * @param thumbprint - отпечаток сертификата\n * @param unencryptedMessage - подписываемое сообщение в формате XML\n * @returns подпись\n */\nexport const createXMLSignature = _afterPluginsLoaded(\n async (thumbprint: string, unencryptedMessage: string): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createXMLSignature(): string {\n let cadesSigner;\n let cadesSignedXML;\n\n try {\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n cadesSignedXML = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.SignedXML');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n try {\n const signatureMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n const digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n void (__cadesAsyncToken__ + cadesSigner.propset_CheckCertificate(true));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_Content(unencryptedMessage));\n void (\n __cadesAsyncToken__ +\n cadesSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED)\n );\n void (__cadesAsyncToken__ + cadesSignedXML.propset_SignatureMethod(signatureMethod));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_DigestMethod(digestMethod));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedXML.Sign(cadesSigner);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку из хранилища пользователя\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesUserCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища пользователя');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов из хранилища пользователя',\n );\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов в хранилище пользователя');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден в хранилище пользователя`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата из хранилища пользователя',\n );\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку из хранилища закрытого ключа\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesContainerCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища закрытого ключа');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) ||\n 'Ошибка получения списка сертификатов из хранилища закрытого ключа',\n );\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов в хранилище закрытого ключа');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден в хранилище закрытого ключа`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата из хранилища закрытого ключа',\n );\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Создает отсоединенную подпись хеша по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\n\nexport const createDetachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, messageHash: string, signType: SignType = 'PKCS7'): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedData.SignHash(cadesHashedData, cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const addDetachedSignature = _afterPluginsLoaded(\n async (\n thumbprint: string,\n signedMessage: string | ArrayBuffer,\n messageHash: string,\n signType: SignType = 'PKCS7',\n ): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyHash(cadesHashedData, signedMessage, signTypeConst));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Создает присоединенную подпись сообщения по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param message - подписываемое сообщение\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const createAttachedSignature = _afterPluginsLoaded(\n async (\n thumbprint: string,\n unencryptedMessage: string | ArrayBuffer,\n signType: SignType = 'PKCS7',\n ): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createAttachedSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let messageBase64;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const addAttachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, signedMessage: string | ArrayBuffer, signType: SignType = 'PKCS7'): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addAttachedSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let messageBase64;\n\n try {\n messageBase64 = Buffer.from(signedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, signTypeConst));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит\n * https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B8%D0%B1%D0%BE%D0%B3_(%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F)\n *\n * @param unencryptedMessage - сообщение для хеширования\n *\n * @returns хеш\n */\nexport const createHash = _afterPluginsLoaded(\n async (unencryptedMessage: string | ArrayBuffer): Promise => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function createHash(): string {\n const cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n let messageBase64;\n let hash;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesHashedData.Hash(messageBase64));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации хэширования');\n }\n\n try {\n hash = __cadesAsyncToken__ + cadesHashedData.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при создании хэша');\n }\n\n return hash;\n }),\n );\n },\n);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP\n */\nexport const getCspVersion = _afterPluginsLoaded((): string => {\n let cspVersion = null;\n\n return eval(\n _generateCadesFn(function getCspVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n cspVersion = __cadesAsyncToken__ + cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении версии системы');\n }\n\n return cspVersion;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о плагине\n */\nexport const getPluginVersion = _afterPluginsLoaded((): string => {\n let cadesVersion = null;\n\n return eval(\n _generateCadesFn(function getPluginVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n\n if (!cadesVersion) {\n cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n cadesVersion = __cadesAsyncToken__ + cadesVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о плагине');\n }\n\n return cadesVersion;\n }),\n );\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/crypto-pro-js-m.d.ts b/lib/crypto-pro-js-m.d.ts index 33bc1f8..555af8a 100644 --- a/lib/crypto-pro-js-m.d.ts +++ b/lib/crypto-pro-js-m.d.ts @@ -1,4 +1,4 @@ -// Type definitions for crypto-pro-js-m 1.0.1 +// Type definitions for crypto-pro-js-m 1.1.0 // Project: crypto-pro-js-m // Definitions by: Serge Schekhovtsov https://github.com/schekhovtsov diff --git a/lib/crypto-pro-js-m.js b/lib/crypto-pro-js-m.js index ae86fe3..95bceae 100644 --- a/lib/crypto-pro-js-m.js +++ b/lib/crypto-pro-js-m.js @@ -4797,11 +4797,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); /*! no static exports found */ /***/ (function(module, exports) { -;(function () { +; (function () { //already loaded - if(window.cadesplugin) - return; - + if (window.cadesplugin && window.cadesplugin.LOG_LEVEL_DEBUG) { + return; + } var pluginObject; var plugin_resolved = 0; var plugin_reject; @@ -4813,732 +4813,889 @@ Object.defineProperty(exports, "__esModule", { value: true }); var canPromise = !!window.Promise; var cadesplugin_loaded_event_recieved = false; var isFireFoxExtensionLoaded = false; - var cadesplugin; + var cadesplugin = {}; - if(canPromise) - { - cadesplugin = new Promise(function(resolve, reject) - { - plugin_resolve = resolve; - plugin_reject = reject; - }); - } else - { - cadesplugin = {}; + if (canPromise) { + cadesplugin = new window.Promise(function (resolve, reject) { + plugin_resolve = resolve; + plugin_reject = reject; + }); } function check_browser() { - var ua= navigator.userAgent, tem, M= ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; - if(/trident/i.test(M[1])){ - tem = /\brv[ :]+(\d+)/g.exec(ua) || []; - return { name:'IE', version:(tem[1] || '')}; - } - if(M[1] === 'Chrome'){ - tem = ua.match(/\b(OPR|Edg|YaBrowser)\/(\d+)/); - if (tem != null) - return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] }; - } - M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?']; - if ((tem = ua.match(/version\/(\d+)/i)) != null) - M.splice(1, 1, tem[1]); - return {name:M[0],version:M[1]}; + var ua = window.navigator.userAgent, + tem, + M = ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; + if (/trident/i.test(M[1])) { + tem = /\brv[ :]+(\d+)/g.exec(ua) || []; + return { name: 'IE', version: (tem[1] || '') }; + } + if (M[1] === "Chrome") { + tem = ua.match(/\b(OPR|Edg|YaBrowser)\/(\d+)/); + if (tem != null && (tem.length > 2)) { + return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] }; + } + } + M = M[2] ? [M[1], M[2]] : [window.navigator.appName, window.navigator.appVersion, '-?']; + if ((tem = ua.match(/version\/(\d+)/i)) != null) { + M.splice(1, 1, tem[1]); + } + return { name: M[0], version: M[1] }; } + var browserSpecs = check_browser(); - function cpcsp_console_log(level, msg){ - //IE9 не может писать в консоль если не открыта вкладка developer tools - if(typeof(console) === 'undefined') - return; - if (level <= cadesplugin.current_log_level ){ - if (level === cadesplugin.LOG_LEVEL_DEBUG) - console.log("DEBUG: %s", msg); - if (level === cadesplugin.LOG_LEVEL_INFO) - console.info("INFO: %s", msg); - if (level === cadesplugin.LOG_LEVEL_ERROR) - console.error("ERROR: %s", msg); - return; - } + function cpcsp_console_log(level, msg) { + //IE9 не может писать в консоль если не открыта вкладка developer tools + if (typeof console === 'undefined') { + return; + } + if (level <= cadesplugin.current_log_level) { + if (level === cadesplugin.LOG_LEVEL_DEBUG) { + console.log("DEBUG: %s", msg); + } + if (level === cadesplugin.LOG_LEVEL_INFO) { + console.info("INFO: %s", msg); + } + if (level === cadesplugin.LOG_LEVEL_ERROR) { + console.error("ERROR: %s", msg); + } + } } - function set_log_level(level){ - if (!((level === cadesplugin.LOG_LEVEL_DEBUG) || - (level === cadesplugin.LOG_LEVEL_INFO) || - (level === cadesplugin.LOG_LEVEL_ERROR))){ - cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "cadesplugin_api.js: Incorrect log_level: " + level); - return; - } - cadesplugin.current_log_level = level; - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) - cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = DEBUG"); - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) - cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = INFO"); - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) - cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = ERROR"); - if(isNativeMessageSupported()) - { - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) - window.postMessage("set_log_level=debug", "*"); - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) - window.postMessage("set_log_level=info", "*"); - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) - window.postMessage("set_log_level=error", "*"); - } + function get_extension_version(callback) { + window.postMessage("cadesplugin_extension_version_request", "*"); + window.addEventListener("message", function (event) { + var resp_prefix = "cadesplugin_extension_version_response:"; + if (typeof (event.data) !== "string" || event.data.indexOf(resp_prefix) !== 0) { + return; + } + var ext_version = event.data.substring(resp_prefix.length); + callback(ext_version); + }, false); } - function set_constantValues() - { - cadesplugin.CAPICOM_MEMORY_STORE = 0; - cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1; - cadesplugin.CAPICOM_CURRENT_USER_STORE = 2; - cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4; - cadesplugin.CADESCOM_MEMORY_STORE = 0; - cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1; - cadesplugin.CADESCOM_CURRENT_USER_STORE = 2; - cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4; - cadesplugin.CADESCOM_CONTAINER_STORE = 100; + function get_extension_id(callback) { + window.postMessage("cadesplugin_extension_id_request", "*"); + window.addEventListener("message", function (event) { + var resp_prefix = "cadesplugin_extension_id_response:"; + if (typeof (event.data) !== "string" || event.data.indexOf(resp_prefix) !== 0) { + return; + } + var ext_id = event.data.substring(resp_prefix.length); + callback(ext_id); + }, false); + } - cadesplugin.CAPICOM_MY_STORE = "My"; + function set_log_level(level) { + if (!((level === cadesplugin.LOG_LEVEL_DEBUG) || + (level === cadesplugin.LOG_LEVEL_INFO) || + (level === cadesplugin.LOG_LEVEL_ERROR))) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "cadesplugin_api.js: Incorrect log_level: " + level); + return; + } + cadesplugin.current_log_level = level; + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = DEBUG"); + } + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = INFO"); + } + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = ERROR"); + } + if (isNativeMessageSupported()) { + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) { + window.postMessage("set_log_level=debug", "*"); + } + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) { + window.postMessage("set_log_level=info", "*"); + } + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) { + window.postMessage("set_log_level=error", "*"); + } + } + } - cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2; + function set_constantValues() { + cadesplugin.CAPICOM_MEMORY_STORE = 0; + cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1; + cadesplugin.CAPICOM_CURRENT_USER_STORE = 2; + cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4; + cadesplugin.CADESCOM_MEMORY_STORE = 0; + cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1; + cadesplugin.CADESCOM_CURRENT_USER_STORE = 2; + cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4; + cadesplugin.CADESCOM_CONTAINER_STORE = 100; - cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; + cadesplugin.CAPICOM_ROOT_STORE = "Root"; + cadesplugin.CAPICOM_CA_STORE = "CA"; + cadesplugin.CAPICOM_MY_STORE = "My"; + cadesplugin.CAPICOM_ADDRESSBOOK_STORE = "AddressBook"; - cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0; - cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1; - cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2; + cadesplugin.CAPICOM_STORE_OPEN_READ_WRITE = 1; + cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2; + cadesplugin.CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256; - cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010; - cadesplugin.CADESCOM_XADES_BES = 0x00000020; - cadesplugin.CADESCOM_XADES_T = 0x00000050; - cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0; - cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000; + cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; - cadesplugin.XmlDsigGost3410UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"; - cadesplugin.XmlDsigGost3411UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr3411"; - cadesplugin.XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"; - cadesplugin.XmlDsigGost3411Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"; + cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0; + cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1; + cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2; - cadesplugin.XmlDsigGost3411Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"; - cadesplugin.XmlDsigGost3410Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"; - cadesplugin.XmlDsigGost3411Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512"; - cadesplugin.XmlDsigGost3410Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512"; + cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010; + cadesplugin.CADESCOM_XADES_BES = 0x00000020; + cadesplugin.CADESCOM_XADES_T = 0x00000050; + cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0; + cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000; - cadesplugin.CADESCOM_CADES_DEFAULT = 0; - cadesplugin.CADESCOM_CADES_BES = 1; - cadesplugin.CADESCOM_CADES_T = 0x5; - cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d; - cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff; + cadesplugin.XmlDsigGost3410UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"; + cadesplugin.XmlDsigGost3411UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr3411"; + cadesplugin.XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"; + cadesplugin.XmlDsigGost3411Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"; - cadesplugin.CADESCOM_ENCODE_BASE64 = 0; - cadesplugin.CADESCOM_ENCODE_BINARY = 1; - cadesplugin.CADESCOM_ENCODE_ANY = -1; + cadesplugin.XmlDsigGost3411Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"; + cadesplugin.XmlDsigGost3410Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"; + cadesplugin.XmlDsigGost3411Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512"; + cadesplugin.XmlDsigGost3410Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512"; - cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0; - cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1; - cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2; + cadesplugin.CADESCOM_CADES_DEFAULT = 0; + cadesplugin.CADESCOM_CADES_BES = 1; + cadesplugin.CADESCOM_CADES_T = 0x5; + cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d; + cadesplugin.CADESCOM_CADES_A = 0xdd; + cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff; - cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0; - cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1; + cadesplugin.CADESCOM_ENCODE_BASE64 = 0; + cadesplugin.CADESCOM_ENCODE_BINARY = 1; + cadesplugin.CADESCOM_ENCODE_ANY = -1; - cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0; - cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; - cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2; - cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3; - cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4; - cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5; - cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6; - cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7; - cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8; - cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9; - cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10; - cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11; - cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12; + cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0; + cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1; + cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2; + cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_NONE = 0x100; - cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128; + cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0; + cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1; - cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9; + cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0; + cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; + cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2; + cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3; + cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4; + cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5; + cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6; + cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7; + cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8; + cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9; + cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10; + cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11; + cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12; - cadesplugin.CAPICOM_OID_OTHER = 0; - cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10; + cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128; - cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2; - cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5; - cadesplugin.CAPICOM_EKU_OTHER = 0; + cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9; - cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; - cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1; - cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2; - cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; - cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1; - cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2; - cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100; - cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1; + cadesplugin.CAPICOM_OID_OTHER = 0; + cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10; - cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0; - cadesplugin.CADESCOM_BASE64_TO_BINARY = 1; + cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2; + cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5; + cadesplugin.CAPICOM_EKU_OTHER = 0; - cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0; - cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1; - cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2; + cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; + cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1; + cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2; + cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; + cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1; + cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2; + cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100; + cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25; + cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0; + cadesplugin.CADESCOM_BASE64_TO_BINARY = 1; - cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0; - cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1; - cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2; - cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3; - cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4; - cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5; - cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112; + cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0; + cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1; + cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2; - cadesplugin.LOG_LEVEL_DEBUG = 4; - cadesplugin.LOG_LEVEL_INFO = 2; - cadesplugin.LOG_LEVEL_ERROR = 1; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA = 35; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA_OMAC = 36; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK = 45; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK_OMAC = 46; - cadesplugin.CADESCOM_AllowNone = 0; - cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1; - cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2; - cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4; - cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000; - cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000; - cadesplugin.CADESCOM_UseContainerStore = 0x40000000; + cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0; + cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1; + cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2; + cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3; + cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4; + cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5; + cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112; - cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01; - cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02; - cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04; - cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07; + cadesplugin.CADESCOM_CERT_INFO_ROLE = 100; + cadesplugin.CADESCOM_ROLE_ROOT = "ROOT"; + cadesplugin.CADESCOM_ROLE_CA = "CA"; + cadesplugin.CADESCOM_ROLE_LEAF = "LEAF"; - cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00; - cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01; - cadesplugin.ENABLE_CARRIER_CREATE = 0x02; - cadesplugin.ENABLE_ANY_OPERATION = 0x03; + cadesplugin.LOG_LEVEL_DEBUG = 4; + cadesplugin.LOG_LEVEL_INFO = 2; + cadesplugin.LOG_LEVEL_ERROR = 1; - cadesplugin.CADESCOM_PRODUCT_CSP = 0; - cadesplugin.CADESCOM_PRODUCT_OCSP = 1; - cadesplugin.CADESCOM_PRODUCT_TSP = 2; + cadesplugin.CADESCOM_AllowNone = 0; + cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1; + cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2; + cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4; + cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000; + cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000; + cadesplugin.CADESCOM_UseContainerStore = 0x40000000; - cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001; - cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002; - cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004; - cadesplugin.MEDIA_TYPE_SCARD = 0x00000008; + cadesplugin.ContextNone = 0; + cadesplugin.ContextUser = 0x1; + cadesplugin.ContextMachine = 0x2; + cadesplugin.ContextAdministratorForceMachine = 0x3; - cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0; - cadesplugin.AT_KEYEXCHANGE = 1; - cadesplugin.AT_SIGNATURE = 2; + cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01; + cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02; + cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04; + cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07; - cadesplugin.CARRIER_FLAG_REMOVABLE = 1; - cadesplugin.CARRIER_FLAG_UNIQUE = 2; - cadesplugin.CARRIER_FLAG_PROTECTED = 4; - cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER = 8; - cadesplugin.CARRIER_FLAG_SECURE_MESSAGING = 16; - cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE = 64; - cadesplugin.CARRIER_FLAG_VIRTUAL = 128; + cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00; + cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01; + cadesplugin.ENABLE_CARRIER_CREATE = 0x02; + cadesplugin.ENABLE_ANY_OPERATION = 0x03; + + cadesplugin.CADESCOM_PRODUCT_CSP = 0; + cadesplugin.CADESCOM_PRODUCT_OCSP = 1; + cadesplugin.CADESCOM_PRODUCT_TSP = 2; + + cadesplugin.MEDIA_TYPE_DEFAULT = 0x00000000; + cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001; + cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002; + cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004; + cadesplugin.MEDIA_TYPE_SCARD = 0x00000008; + + cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0; + cadesplugin.XCN_CRYPT_STRING_BASE64 = 0x1; + cadesplugin.XCN_CRYPT_STRING_BINARY = 0x2; + cadesplugin.XCN_CRYPT_STRING_BASE64REQUESTHEADER = 0x3; + cadesplugin.XCN_CRYPT_STRING_HEX = 0x4; + cadesplugin.XCN_CRYPT_STRING_HEXASCII = 0x5; + cadesplugin.XCN_CRYPT_STRING_BASE64_ANY = 0x6; + cadesplugin.XCN_CRYPT_STRING_ANY = 0x7; + cadesplugin.XCN_CRYPT_STRING_HEX_ANY = 0x8; + cadesplugin.XCN_CRYPT_STRING_BASE64X509CRLHEADER = 0x9; + cadesplugin.XCN_CRYPT_STRING_HEXADDR = 0xa; + cadesplugin.XCN_CRYPT_STRING_HEXASCIIADDR = 0xb; + cadesplugin.XCN_CRYPT_STRING_HEXRAW = 0xc; + cadesplugin.XCN_CRYPT_STRING_BASE64URI = 0xd; + cadesplugin.XCN_CRYPT_STRING_ENCODEMASK = 0xff; + cadesplugin.XCN_CRYPT_STRING_CHAIN = 0x100; + cadesplugin.XCN_CRYPT_STRING_TEXT = 0x200; + cadesplugin.XCN_CRYPT_STRING_PERCENTESCAPE = 0x8000000; + cadesplugin.XCN_CRYPT_STRING_HASHDATA = 0x10000000; + cadesplugin.XCN_CRYPT_STRING_STRICT = 0x20000000; + cadesplugin.XCN_CRYPT_STRING_NOCRLF = 0x40000000; + cadesplugin.XCN_CRYPT_STRING_NOCR = 0x80000000; + + cadesplugin.XCN_CERT_NAME_STR_NONE = 0; + cadesplugin.XCN_AT_NONE = 0; + cadesplugin.XCN_AT_KEYEXCHANGE = 1; + cadesplugin.XCN_AT_SIGNATURE = 2; + + cadesplugin.AT_KEYEXCHANGE = 1; + cadesplugin.AT_SIGNATURE = 2; + + cadesplugin.CARRIER_FLAG_REMOVABLE = 1; + cadesplugin.CARRIER_FLAG_UNIQUE = 2; + cadesplugin.CARRIER_FLAG_PROTECTED = 4; + cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER = 8; + cadesplugin.CARRIER_FLAG_SECURE_MESSAGING = 16; + cadesplugin.CARRIER_FLAG_ABLE_SET_KEY = 32; + cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE = 64; + cadesplugin.CARRIER_FLAG_VIRTUAL = 128; + + cadesplugin.CRYPT_MODE_CBCSTRICT = 1; + cadesplugin.CRYPT_MODE_CNT = 3; + cadesplugin.CRYPT_MODE_CBCRFC4357 = 31; + cadesplugin.CRYPT_MODE_CTR = 32; + cadesplugin.CRYPT_MODE_MGM = 33; + cadesplugin.CRYPT_MODE_GCM = 34; + cadesplugin.CRYPT_MODE_OMAC_CTR = 35; + cadesplugin.CRYPT_MODE_WRAP = 36; + cadesplugin.CRYPT_MODE_WRAP_PAD = 37; + + cadesplugin.PKCS5_PADDING = 1; + cadesplugin.RANDOM_PADDING = 2; + cadesplugin.ZERO_PADDING = 3; + cadesplugin.ISO10126_PADDING = 4; + cadesplugin.ANSI_X923_PADDING = 5; + cadesplugin.TLS_1_0_PADDING = 6; + cadesplugin.ISO_IEC_7816_4_PADDING = 7; + + cadesplugin.CAPICOM_STORE_SAVE_AS_SERIALIZED = 0; + cadesplugin.CAPICOM_STORE_SAVE_AS_PKCS7 = 1; + + cadesplugin.CERT_TRUST_NO_ERROR = 0x00000000; + cadesplugin.CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001; + cadesplugin.CERT_TRUST_IS_REVOKED = 0x00000004; + cadesplugin.CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008; + cadesplugin.CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010; + cadesplugin.CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020; + cadesplugin.CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040; + cadesplugin.CERT_TRUST_IS_CYCLIC = 0x00000080; + cadesplugin.CERT_TRUST_INVALID_EXTENSION = 0x00000100; + cadesplugin.CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200; + cadesplugin.CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400; + cadesplugin.CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800; + cadesplugin.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000; + cadesplugin.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000; + cadesplugin.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000; + cadesplugin.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000; + cadesplugin.CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000; + cadesplugin.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000; + cadesplugin.CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000; + cadesplugin.CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000; + cadesplugin.CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000; + + cadesplugin.XCN_CERT_NO_KEY_USAGE = 0; + cadesplugin.XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE = 0x80; + cadesplugin.XCN_CERT_NON_REPUDIATION_KEY_USAGE = 0x40; + cadesplugin.XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE = 0x20; + cadesplugin.XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE = 0x10; + cadesplugin.XCN_CERT_KEY_AGREEMENT_KEY_USAGE = 0x8; + cadesplugin.XCN_CERT_KEY_CERT_SIGN_KEY_USAGE = 0x4; + cadesplugin.XCN_CERT_OFFLINE_CRL_SIGN_KEY_USAGE = 0x2; + cadesplugin.XCN_CERT_CRL_SIGN_KEY_USAGE = 0x2; + cadesplugin.XCN_CERT_ENCIPHER_ONLY_KEY_USAGE = 0x1; + cadesplugin.XCN_CERT_DECIPHER_ONLY_KEY_USAGE = 0x8000; + + cadesplugin.CADESCOM_XADES_ACCEPT_ANY_ID_ATTR_NAMESPACE = 1; + cadesplugin.CADES_USE_OCSP_AUTHORIZED_POLICY = 0x00020000; + + cadesplugin.XCN_NCRYPT_NO_OPERATION = 0; + cadesplugin.XCN_NCRYPT_CIPHER_OPERATION = 0x1; + cadesplugin.XCN_NCRYPT_HASH_OPERATION = 0x2; + cadesplugin.XCN_NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION = 0x4; + cadesplugin.XCN_NCRYPT_SECRET_AGREEMENT_OPERATION = 0x8; + cadesplugin.XCN_NCRYPT_SIGNATURE_OPERATION = 0x10; + cadesplugin.XCN_NCRYPT_RNG_OPERATION = 0x20; + + cadesplugin.XCN_CRYPT_ANY_GROUP_ID = 0; + cadesplugin.XCN_CRYPT_HASH_ALG_OID_GROUP_ID = 1; + cadesplugin.XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID = 2; + cadesplugin.XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID = 3; + cadesplugin.XCN_CRYPT_SIGN_ALG_OID_GROUP_ID = 4; + cadesplugin.XCN_CRYPT_RDN_ATTR_OID_GROUP_ID = 5; + cadesplugin.XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID = 6; + cadesplugin.XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID = 7; + cadesplugin.XCN_CRYPT_POLICY_OID_GROUP_ID = 8; + cadesplugin.XCN_CRYPT_TEMPLATE_OID_GROUP_ID = 9; + + cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_ANY = 0; + cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG = 0x80000000; + cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG = 0x40000000; + + cadesplugin.CONTROL_KEY_TIME_VALIDITY_DISABLED = 0; + cadesplugin.CONTROL_KEY_TIME_VALIDITY_ENABLED = 1; + cadesplugin.CONTROL_KEY_TIME_VALIDITY_STRICT = 2; + + cadesplugin.AlgorithmFlagsNone = 0; + cadesplugin.AlgorithmFlagsWrap = 0x1; } function async_spawn(generatorFunc) { - function continuer(verb, arg) { - var result; - try { - result = generator[verb](arg); - } catch (err) { - return Promise.reject(err); + function continuer(verb, arg) { + var result; + try { + result = generator[verb](arg); + } catch (err) { + return window.Promise.reject(err); + } + if (result.done) { + return result.value; + } else { + return window.Promise.resolve(result.value).then(onFulfilled, onRejected); + } } - if (result.done) { - return result.value; - } else { - return Promise.resolve(result.value).then(onFulfilled, onRejected); - } - } - var generator = generatorFunc(Array.prototype.slice.call(arguments, 1)); - var onFulfilled = continuer.bind(continuer, "next"); - var onRejected = continuer.bind(continuer, "throw"); - return onFulfilled(); + var generator = generatorFunc(Array.prototype.slice.call(arguments, 1)); + var onFulfilled = continuer.bind(continuer, "next"); + var onRejected = continuer.bind(continuer, "throw"); + return onFulfilled(); } function isIE() { - // var retVal = (("Microsoft Internet Explorer" == navigator.appName) || // IE < 11 - // navigator.userAgent.match(/Trident\/./i)); // IE 11 - return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE'); + // var retVal = (("Microsoft Internet Explorer" == navigator.appName) || // IE < 11 + // navigator.userAgent.match(/Trident\/./i)); // IE 11 + return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE'); } function isIOS() { - return (navigator.userAgent.match(/ipod/i) || - navigator.userAgent.match(/ipad/i) || - navigator.userAgent.match(/iphone/i)); + return (window.navigator.userAgent.match(/ipod/i) || + window.navigator.userAgent.match(/ipad/i) || + window.navigator.userAgent.match(/iphone/i)); } - function isNativeMessageSupported() - { - // В IE работаем через NPAPI - if(isIE()) - return false; - // В Edge работаем через NativeMessage - if (browserSpecs.name === 'Edg') { - return true; - } - if (browserSpecs.name === 'YaBrowser') { - isYandex = true; - return true; - } - // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии - if(browserSpecs.name === 'Opera') { - isOpera = true; - if(browserSpecs.version >= 33){ - return true; + function isNativeMessageSupported() { + // В IE работаем через NPAPI + if (isIE()) { + return false; } - else{ - return false; + // В Edge работаем через NativeMessage + if (browserSpecs.name === 'Edg') { + return true; } - } - if(browserSpecs.name === 'Firefox') { - isFireFox = true; - if(browserSpecs.version >= 52){ - return true; + if (browserSpecs.name === 'YaBrowser') { + isYandex = true; + return true; } - else{ - return false; + // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии + if (browserSpecs.name === 'Opera') { + isOpera = true; + return (browserSpecs.version >= 33); } - } - if(browserSpecs.name === 'Chrome') { - if(browserSpecs.version >= 42){ - return true; + if (browserSpecs.name === 'Firefox') { + isFireFox = true; + return (browserSpecs.version >= 52); } - else{ - return false; + if (browserSpecs.name === 'Chrome') { + return (browserSpecs.version >= 42); } - } - //В Сафари начиная с 12 версии нет NPAPI - if(browserSpecs.name === 'Safari') { - isSafari = true; - if(browserSpecs.version >= 12) { - return true; - } else { - return false; + //В Сафари начиная с 12 версии нет NPAPI + if (browserSpecs.name === 'Safari') { + isSafari = true; + return (browserSpecs.version >= 12); } - } } // Функция активации объектов КриптоПро ЭЦП Browser plug-in function CreateObject(name) { - if (isIOS()) { - // На iOS для создания объектов используется функция - // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js - return call_ru_cryptopro_npcades_10_native_bridge("CreateObject", [name]); - } - if (isIE()) { - // В Internet Explorer создаются COM-объекты - if (name.match(/X509Enrollment/i)) { - try { - // Объекты CertEnroll пробуем создавать через нашу фабрику, - // если не получилось то через CX509EnrollmentWebClassFactory - var objCertEnrollClassFactory = document.getElementById("webClassFactory"); - return objCertEnrollClassFactory.CreateObject(name); - } - catch (e) { + if (isIOS()) { + // На iOS для создания объектов используется функция + // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js + return call_ru_cryptopro_npcades_10_native_bridge("CreateObject", [name]); + } + var objWebClassFactory; + if (isIE()) { + // В Internet Explorer создаются COM-объекты + if (name.match(/X509Enrollment/i)) { + try { + // Объекты CertEnroll пробуем создавать через нашу фабрику, + // если не получилось то через CX509EnrollmentWebClassFactory + objWebClassFactory = document.getElementById("webClassFactory"); + return objWebClassFactory.CreateObject(name); + } + catch (e) { + try { + var objCertEnrollClassFactory = document.getElementById("certEnrollClassFactory"); + return objCertEnrollClassFactory.CreateObject(name); + } + catch (err) { + throw ("Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS"); + } + } + } + // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory try { - var objWebClassFactory = document.getElementById("certEnrollClassFactory"); - return objWebClassFactory.CreateObject(name); + objWebClassFactory = document.getElementById("webClassFactory"); + return objWebClassFactory.CreateObject(name); + } catch (e) { + // Для версий плагина ниже 2.0.12538 + return new window.ActiveXObject(name); } - catch (err) { - throw ("Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS"); - } - } } - // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory - try { - var objWebClassFactory = document.getElementById("webClassFactory"); - return objWebClassFactory.CreateObject(name); - } - catch (e) { - // Для версий плагина ниже 2.0.12538 - return new ActiveXObject(name); - } - } - // создаются объекты NPAPI - return pluginObject.CreateObject(name); + // создаются объекты NPAPI + return pluginObject.CreateObject(name); } function decimalToHexString(number) { - if (number < 0) { - number = 0xFFFFFFFF + number + 1; - } + if (number < 0) { + number = 0xFFFFFFFF + number + 1; + } - return number.toString(16).toUpperCase(); + return number.toString(16).toUpperCase(); } function GetMessageFromException(e) { - var err = e.message; - if (!err) { - err = e; - } else if (e.number) { - err += " (0x" + decimalToHexString(e.number) + ")"; - } - return err; + var err = e.message; + if (!err) { + err = e; + } else if (e.number) { + err += " (0x" + decimalToHexString(e.number) + ")"; + } + return err; } function getLastError(exception) { - if(isNativeMessageSupported() || isIE() || isIOS() ) { - return GetMessageFromException(exception); - } + if (isNativeMessageSupported() || isIE() || isIOS()) { + return GetMessageFromException(exception); + } - try { - return pluginObject.getLastError(); - } catch(e) { - return GetMessageFromException(exception); - } + try { + return pluginObject.getLastError(); + } catch (e) { + return GetMessageFromException(exception); + } } // Функция для удаления созданных объектов function ReleasePluginObjects() { - return cpcsp_chrome_nmcades.ReleasePluginObjects(); + // noinspection JSUnresolvedVariable + return cpcsp_chrome_nmcades.ReleasePluginObjects(); } // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in function CreateObjectAsync(name) { - return pluginObject.CreateObjectAsync(name); + return pluginObject.CreateObjectAsync(name); } - //Функции для IOS + // Функции для IOS + // noinspection JSUnusedGlobalSymbols var ru_cryptopro_npcades_10_native_bridge = { - callbacksCount : 1, - callbacks : {}, + callbacksCount: 1, + callbacks: {}, - // Automatically called by native layer when a result is available - resultForCallback : function resultForCallback(callbackId, resultArray) { - var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId]; - if (!callback) return; - callback.apply(null,resultArray); - }, + // Automatically called by native layer when a result is available + resultForCallback: function resultForCallback(callbackId, resultArray) { + var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId]; + if (!callback) { + return; + } + callback.apply(null, resultArray); + }, - // Use this in javascript to request native objective-c code - // functionName : string (I think the name is explicit :p) - // args : array of arguments - // callback : function with n-arguments that is going to be called when the native code returned - call : function call(functionName, args, callback) { - var hasCallback = callback && typeof callback === "function"; - var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0; + // Use this in javascript to request native objective-c code + // functionName : string (I think the name is explicit :p) + // args : array of arguments + // callback : function with n-arguments that is going to be called when the native code returned + call: function call(functionName, args, callback) { + var hasCallback = callback && typeof callback === "function"; + var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0; - if (hasCallback) - ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback; + if (hasCallback) { + ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback; + } - var iframe = document.createElement("IFRAME"); - var arrObjs = new Array("_CPNP_handle"); - try{ - iframe.setAttribute("src", "cpnp-js-call:" + functionName + ":" + callbackId+ ":" + encodeURIComponent(JSON.stringify(args, arrObjs))); - } catch(e){ - alert(e); + var iframe = document.createElement("IFRAME"); + var arrObjs = new Array("_CPNP_handle"); + try { + iframe.setAttribute("src", "cpnp-js-call:" + functionName + ":" + callbackId + ":" + encodeURIComponent(window.JSON.stringify(args, arrObjs))); + } catch (e) { + window.alert(e); + } + document.documentElement.appendChild(iframe); + iframe.parentNode.removeChild(iframe); + iframe = null; } - document.documentElement.appendChild(iframe); - iframe.parentNode.removeChild(iframe); - iframe = null; - } }; - function call_ru_cryptopro_npcades_10_native_bridge(functionName, array){ - var tmpobj; - var ex; - ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function(e, response){ - ex = e; - var str='tmpobj='+response; - eval(str); - if (typeof (tmpobj) === "string"){ - tmpobj = tmpobj.replace(/\\\n/gm, "\n"); - tmpobj = tmpobj.replace(/\\\r/gm, "\r"); + function call_ru_cryptopro_npcades_10_native_bridge(functionName, array) { + var tmpobj; + var ex; + ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function (e, response) { + ex = e; + var tmpobj = ""; + try { + tmpobj = window.JSON.parse(response); + } + catch (err) { + tmpobj = response; + } + if (typeof tmpobj === "string") { + tmpobj = tmpobj.replace(/\\\n/gm, "\n"); + tmpobj = tmpobj.replace(/\\\r/gm, "\r"); + } + }); + if (ex) { + throw ex; } - }); - if(ex) - throw ex; - return tmpobj; + return tmpobj; } - function show_firefox_missing_extension_dialog() - { - if (!window.cadesplugin_skip_extension_install) - { - var ovr = document.createElement('div'); - ovr.id = "cadesplugin_ovr"; - ovr.style = "visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)"; - ovr.innerHTML = "
" + - "" + - "

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его." + - "

Скачать расширение

" + - "
"; - document.getElementsByTagName("Body")[0].appendChild(ovr); - document.getElementById("cadesplugin_close_install").addEventListener('click',function() - { - plugin_loaded_error("Плагин недоступен"); - document.getElementById("cadesplugin_ovr").style.visibility = 'hidden'; - }); + function show_firefox_missing_extension_dialog() { + if (!window.cadesplugin_skip_extension_install) { + var ovr = document.createElement('div'); + ovr.id = "cadesplugin_ovr"; + ovr.style = "visibility: hidden; position: fixed; left: 0; top: 0; width:100%; height:100%; background-color: rgba(0,0,0,0.7)"; + ovr.innerHTML = "
" + + "" + + "

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его." + + "

Скачать расширение

" + + "
"; + document.getElementsByTagName("Body")[0].appendChild(ovr); + document.getElementById("cadesplugin_close_install").addEventListener('click', function () { + plugin_loaded_error("Плагин недоступен"); + document.getElementById("cadesplugin_ovr").style.visibility = 'hidden'; + }); - ovr.addEventListener('click',function() - { - plugin_loaded_error("Плагин недоступен"); - document.getElementById("cadesplugin_ovr").style.visibility = 'hidden'; - }); - ovr.style.visibility="visible"; - } + ovr.addEventListener('click', function () { + plugin_loaded_error("Плагин недоступен"); + document.getElementById("cadesplugin_ovr").style.visibility = 'hidden'; + }); + ovr.style.visibility = "visible"; + } } + function firefox_or_safari_nmcades_onload() { - if (window.cadesplugin_extension_loaded_callback) - window.cadesplugin_extension_loaded_callback(); - isFireFoxExtensionLoaded = true; - cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error); + // noinspection JSUnresolvedVariable + if (window.cadesplugin_extension_loaded_callback) { + window.cadesplugin_extension_loaded_callback(); + } + isFireFoxExtensionLoaded = true; + // noinspection JSUnresolvedVariable,JSUnresolvedFunction + cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error); + } + + function load_js_script(url, successFunc, errorFunc) { + var script = document.createElement("script"); + script.setAttribute("type", "text/javascript"); + script.setAttribute("src", url); + script.onerror = errorFunc; + script.onload = successFunc; + document.getElementsByTagName("head")[0].appendChild(script); } function nmcades_api_onload() { - if (!isIE() && !isFireFox && !isSafari) { - if (window.cadesplugin_extension_loaded_callback) - window.cadesplugin_extension_loaded_callback(); - } - window.postMessage("cadesplugin_echo_request", "*"); - window.addEventListener("message", function (event){ - if (typeof(event.data) !== "string" || !event.data.match("cadesplugin_loaded")) - return; - if (cadesplugin_loaded_event_recieved) - return; - if(isFireFox || isSafari) - { - // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js - var url = event.data.substring(event.data.indexOf("url:") + 4); - if (!url.match("^moz-extension://[a-zA-Z0-9-]+/nmcades_plugin_api.js$") - && !url.match("^safari-extension://[a-zA-Z0-9-]+/[a-zA-Z0-9]+/nmcades_plugin_api.js$")) - { - cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "Bad url \"" + url + "\" for load CryptoPro Extension for CAdES Browser plug-in"); - plugin_loaded_error(); - return; - } - var fileref = document.createElement('script'); - fileref.setAttribute("type", "text/javascript"); - fileref.setAttribute("src", url); - fileref.onerror = plugin_loaded_error; - fileref.onload = firefox_or_safari_nmcades_onload; - document.getElementsByTagName("head")[0].appendChild(fileref); - }else { - cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error); + if (!isIE() && !isFireFox && !isSafari) { + // noinspection JSUnresolvedVariable + if (window.cadesplugin_extension_loaded_callback) { + window.cadesplugin_extension_loaded_callback(); + } } - cadesplugin_loaded_event_recieved = true; - }, false); + window.postMessage("cadesplugin_echo_request", "*"); + window.addEventListener("message", function (event) { + if (typeof (event.data) !== "string" || !event.data.match("cadesplugin_loaded")) { + return; + } + if (cadesplugin_loaded_event_recieved) { + return; + } + if (isFireFox || isSafari) { + // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js + var url = event.data.substring(event.data.indexOf("url:") + 4); + if (!url.match("^(moz|safari)-extension://[a-zA-Z0-9/_-]+/nmcades_plugin_api.js$")) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "Bad url \"" + url + "\" for load CryptoPro Extension for CAdES Browser plug-in"); + plugin_loaded_error(); + return; + } + load_js_script(url, firefox_or_safari_nmcades_onload, plugin_loaded_error); + } else { + // noinspection JSUnresolvedVariable,JSUnresolvedFunction + cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error); + } + cadesplugin_loaded_event_recieved = true; + }, false); } - //Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari - function load_extension() - { - if(isFireFox || isSafari){ - // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера. - nmcades_api_onload(); - } else { - // в асинхронном варианте для Yandex и Opera подключаем расширение из Opera store. - if (isOpera || isYandex) { - var fileref = document.createElement('script'); - fileref.setAttribute("type", "text/javascript"); - fileref.setAttribute("src", "chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js"); - fileref.onerror = plugin_loaded_error; - fileref.onload = nmcades_api_onload; - document.getElementsByTagName("head")[0].appendChild(fileref); - } else { - // для Chrome, Chromium, Chromium Edge расширение из Chrome store - var fileref = document.createElement('script'); - fileref.setAttribute("type", "text/javascript"); - fileref.setAttribute("src", "chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js"); - fileref.onerror = plugin_loaded_error; - fileref.onload = nmcades_api_onload; - document.getElementsByTagName("head")[0].appendChild(fileref); + // Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari + function load_extension() { + if (isFireFox || isSafari) { + // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера. + nmcades_api_onload(); + return; } - } + var operaUrl = "chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js"; + var manifestv2Url = "chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js"; + var manifestv3Url = "chrome-extension://pfhgbfnnjiafkhfdkmpiflachepdcjod/nmcades_plugin_api.js"; + if (isYandex || isOpera) { + // в асинхронном варианте для Yandex пробуем подключить расширения по очереди + load_js_script(operaUrl, nmcades_api_onload, function () { + load_js_script(manifestv2Url, nmcades_api_onload, function () { + load_js_script(manifestv3Url, nmcades_api_onload, plugin_loaded_error); + }); + }); + return; + } + // для Chrome, Chromium, Chromium Edge расширение из Chrome store + load_js_script(manifestv2Url, nmcades_api_onload, function () { + load_js_script(manifestv3Url, nmcades_api_onload, plugin_loaded_error); + }); } //Загружаем плагин для NPAPI - function load_npapi_plugin() - { - var elem = document.createElement('object'); - elem.setAttribute("id", "cadesplugin_object"); - elem.setAttribute("type", "application/x-cades"); - elem.setAttribute("style", "visibility: hidden"); - document.getElementsByTagName("body")[0].appendChild(elem); - pluginObject = document.getElementById("cadesplugin_object"); - if(isIE()) - { - var elem1 = document.createElement('object'); - elem1.setAttribute("id", "certEnrollClassFactory"); - elem1.setAttribute("classid", "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"); - elem1.setAttribute("style", "visibility: hidden"); - document.getElementsByTagName("body")[0].appendChild(elem1); - var elem2 = document.createElement('object'); - elem2.setAttribute("id", "webClassFactory"); - elem2.setAttribute("classid", "clsid:B04C8637-10BD-484E-B0DA-B8A039F60024"); - elem2.setAttribute("style", "visibility: hidden"); - document.getElementsByTagName("body")[0].appendChild(elem2); - } + function load_npapi_plugin() { + var elem = document.createElement('object'); + elem.setAttribute("id", "cadesplugin_object"); + elem.setAttribute("type", "application/x-cades"); + elem.setAttribute("style", "visibility: hidden"); + document.getElementsByTagName("body")[0].appendChild(elem); + pluginObject = document.getElementById("cadesplugin_object"); + if (isIE()) { + var elem1 = document.createElement('object'); + elem1.setAttribute("id", "certEnrollClassFactory"); + elem1.setAttribute("classid", "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"); + elem1.setAttribute("style", "visibility: hidden"); + document.getElementsByTagName("body")[0].appendChild(elem1); + var elem2 = document.createElement('object'); + elem2.setAttribute("id", "webClassFactory"); + elem2.setAttribute("classid", "clsid:B04C8637-10BD-484E-B0DA-B8A039F60024"); + elem2.setAttribute("style", "visibility: hidden"); + document.getElementsByTagName("body")[0].appendChild(elem2); + } } //Отправляем событие что все ок. - function plugin_loaded() - { - plugin_resolved = 1; - if(canPromise) - { - plugin_resolve(); - }else { - window.postMessage("cadesplugin_loaded", "*"); - } + function plugin_loaded() { + plugin_resolved = 1; + if (canPromise) { + plugin_resolve(); + } else { + window.postMessage("cadesplugin_loaded", "*"); + } } //Отправляем событие что сломались. - function plugin_loaded_error(msg) - { - if(typeof(msg) === 'undefined' || typeof(msg) === 'object') - msg = "Плагин недоступен"; - plugin_resolved = 1; - if(canPromise) - { - plugin_reject(msg); - } else { - window.postMessage("cadesplugin_load_error", "*"); - } + function plugin_loaded_error(msg) { + if (typeof (msg) === 'undefined' || typeof (msg) === 'object') { + msg = "Плагин недоступен"; + } + plugin_resolved = 1; + if (canPromise) { + plugin_reject(msg); + } else { + window.postMessage("cadesplugin_load_error", "*"); + } } //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку - function check_load_timeout() - { - if(plugin_resolved === 1) - return; - if(isFireFox) - { - if (!isFireFoxExtensionLoaded) - show_firefox_missing_extension_dialog(); - } - plugin_resolved = 1; - if(canPromise) - { - plugin_reject("Истекло время ожидания загрузки плагина"); - } else { - window.postMessage("cadesplugin_load_error", "*"); - } - - } - - //Вспомогательная функция для NPAPI - function createPromise(arg) - { - return new Promise(arg); - } - - function check_npapi_plugin (){ - try { - var oAbout = CreateObject("CAdESCOM.About"); - plugin_loaded(); - } - catch (err) { - document.getElementById("cadesplugin_object").style.display = 'none'; - // Объект создать не удалось, проверим, установлен ли - // вообще плагин. Такая возможность есть не во всех браузерах - var mimetype = navigator.mimeTypes["application/x-cades"]; - if (mimetype) { - var plugin = mimetype.enabledPlugin; - if (plugin) { - plugin_loaded_error("Плагин загружен, но не создаются обьекты"); - }else - { - plugin_loaded_error("Ошибка при загрузке плагина"); - } - }else - { - plugin_loaded_error("Плагин недоступен"); + function check_load_timeout() { + if (plugin_resolved === 1) { + return; } - } - } - - //Проверяем работает ли плагин - function check_plugin_working() - { - var div = document.createElement("div"); - div.innerHTML = ""; - var isIeLessThan9 = (div.getElementsByTagName("i").length === 1); - if (isIeLessThan9) { - plugin_loaded_error("Internet Explorer версии 8 и ниже не поддерживается"); - return; - } - - if(isNativeMessageSupported()) - { - load_extension(); - }else if(!canPromise) { - window.addEventListener("message", function (event){ - if (event.data !== "cadesplugin_echo_request") - return; - load_npapi_plugin(); - check_npapi_plugin(); - }, - false); - }else - { - if(document.readyState === "complete"){ - load_npapi_plugin(); - check_npapi_plugin(); + if (isFireFox && !isFireFoxExtensionLoaded) { + show_firefox_missing_extension_dialog(); + } + plugin_resolved = 1; + if (canPromise) { + plugin_reject("Истекло время ожидания загрузки плагина"); } else { - window.addEventListener("load", function (event) { - load_npapi_plugin(); - check_npapi_plugin(); - }, false); + window.postMessage("cadesplugin_load_error", "*"); } - } } - function set_pluginObject(obj) - { - pluginObject = obj; + function check_npapi_plugin() { + try { + CreateObject("CAdESCOM.About"); + plugin_loaded(); + } catch (err) { + document.getElementById("cadesplugin_object").style.display = 'none'; + // Объект создать не удалось, проверим, установлен ли + // вообще плагин. Такая возможность есть не во всех браузерах + // noinspection JSDeprecatedSymbols + var mimetype = window.navigator.mimeTypes["application/x-cades"]; + if (mimetype) { + // noinspection JSDeprecatedSymbols + var plugin = mimetype.enabledPlugin; + if (plugin) { + plugin_loaded_error("Плагин загружен, но не создаются обьекты"); + } else { + plugin_loaded_error("Ошибка при загрузке плагина"); + } + } else { + plugin_loaded_error("Плагин недоступен"); + } + } } - function is_capilite_enabled() - { - if ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP) - return true; - return false; + // Проверяем работает ли плагин + function check_plugin_working() { + var div = document.createElement("div"); + div.innerHTML = ""; + var isIeLessThan9 = (div.getElementsByTagName("i").length === 1); + if (isIeLessThan9) { + plugin_loaded_error("Internet Explorer версии 8 и ниже не поддерживается"); + return; + } + + if (isNativeMessageSupported()) { + load_extension(); + } else if (!canPromise) { + window.addEventListener("message", function (event) { + if (event.data !== "cadesplugin_echo_request") { + return; + } + load_npapi_plugin(); + check_npapi_plugin(); + }, false); + } else { + if (document.readyState === "complete") { + load_npapi_plugin(); + check_npapi_plugin(); + } else { + window.addEventListener("load", function (event) { + load_npapi_plugin(); + check_npapi_plugin(); + }, false); + } + } + } + + function set_pluginObject(obj) { + pluginObject = obj; + } + + function is_capilite_enabled() { + // noinspection JSUnresolvedVariable + return ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP); + } + + function set_load_timeout() { + // noinspection JSUnresolvedVariable + if (window.cadesplugin_load_timeout) { + window.setTimeout(check_load_timeout, window.cadesplugin_load_timeout); + } else { + window.setTimeout(check_load_timeout, 20000); + } + } + + // noinspection JSUnusedLocalSymbols + var onVisibilityChange = function (event) { + if (document.hidden === false) { + document.removeEventListener("visibilitychange", onVisibilityChange); + set_load_timeout(); + check_plugin_working(); + } }; //Export - cadesplugin.JSModuleVersion = "2.3.2"; + cadesplugin.JSModuleVersion = "2.4.2"; cadesplugin.async_spawn = async_spawn; cadesplugin.set = set_pluginObject; cadesplugin.set_log_level = set_log_level; + cadesplugin.get_extension_version = get_extension_version; + cadesplugin.get_extension_id = get_extension_id; cadesplugin.getLastError = getLastError; cadesplugin.is_capilite_enabled = is_capilite_enabled; - if(isNativeMessageSupported()) - { - cadesplugin.CreateObjectAsync = CreateObjectAsync; - cadesplugin.ReleasePluginObjects = ReleasePluginObjects; + if (isNativeMessageSupported()) { + cadesplugin.CreateObjectAsync = CreateObjectAsync; + cadesplugin.ReleasePluginObjects = ReleasePluginObjects; } - if(!isNativeMessageSupported()) - { - cadesplugin.CreateObject = CreateObject; - } - - if(window.cadesplugin_load_timeout) - { - setTimeout(check_load_timeout, window.cadesplugin_load_timeout); - } - else - { - setTimeout(check_load_timeout, 20000); + if (!isNativeMessageSupported()) { + cadesplugin.CreateObject = CreateObject; } set_constantValues(); cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR; window.cadesplugin = cadesplugin; + if (isSafari && document.hidden) { + document.addEventListener("visibilitychange", onVisibilityChange); + return; + } + set_load_timeout(); check_plugin_working(); }()); diff --git a/lib/crypto-pro-js-m.js.map b/lib/crypto-pro-js-m.js.map index d399200..c9e1878 100644 --- a/lib/crypto-pro-js-m.js.map +++ b/lib/crypto-pro-js-m.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://cryptoPro/webpack/universalModuleDefinition","webpack://cryptoPro/webpack/bootstrap","webpack://cryptoPro/../node_modules/base64-js/index.js","webpack://cryptoPro/../node_modules/buffer/index.js","webpack://cryptoPro/../node_modules/buffer/node_modules/isarray/index.js","webpack://cryptoPro/../node_modules/ieee754/index.js","webpack://cryptoPro/../node_modules/webpack/buildin/global.js","webpack://cryptoPro/./api/addAttachedSignature.ts","webpack://cryptoPro/./api/addDetachedSignature.ts","webpack://cryptoPro/./api/certificate/certificate.ts","webpack://cryptoPro/./api/certificate/exportBase64.ts","webpack://cryptoPro/./api/certificate/getAlgorithm.ts","webpack://cryptoPro/./api/certificate/getCadesProp.ts","webpack://cryptoPro/./api/certificate/getDecodedExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getInfo.ts","webpack://cryptoPro/./api/certificate/hasExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/index.ts","webpack://cryptoPro/./api/certificate/isValid.ts","webpack://cryptoPro/./api/createAttachedSignature.ts","webpack://cryptoPro/./api/createDetachedSignature.ts","webpack://cryptoPro/./api/createHash.ts","webpack://cryptoPro/./api/createXMLSignature.ts","webpack://cryptoPro/./api/getAllCertificates.ts","webpack://cryptoPro/./api/getAllContainerCertificates.ts","webpack://cryptoPro/./api/getAllUserCertificates.ts","webpack://cryptoPro/./api/getCertificate.ts","webpack://cryptoPro/./api/getCertificates.ts","webpack://cryptoPro/./api/getContainerCertificates.ts","webpack://cryptoPro/./api/getCspVersion.ts","webpack://cryptoPro/./api/getPluginVersion.ts","webpack://cryptoPro/./api/getSystemInfo.ts","webpack://cryptoPro/./api/getUserCertificates.ts","webpack://cryptoPro/./api/index.ts","webpack://cryptoPro/./api/isValidSystemSetup.ts","webpack://cryptoPro/./constants/cades-constants.ts","webpack://cryptoPro/./constants/index.ts","webpack://cryptoPro/./constants/issuer-tags-translations.ts","webpack://cryptoPro/./constants/oids-dictionary.ts","webpack://cryptoPro/./constants/subject-tags-translations.ts","webpack://cryptoPro/./crypto-pro-js-m.ts","webpack://cryptoPro/./helpers/_afterPluginsLoaded.ts","webpack://cryptoPro/./helpers/_extractCommonName.ts","webpack://cryptoPro/./helpers/_extractMeaningfulErrorMessage.ts","webpack://cryptoPro/./helpers/_generateCadesFn.ts","webpack://cryptoPro/./helpers/_getCadesCert.ts","webpack://cryptoPro/./helpers/_getCadesContainerCert.ts","webpack://cryptoPro/./helpers/_getCadesUserCert.ts","webpack://cryptoPro/./helpers/_getDateObj.ts","webpack://cryptoPro/./helpers/_isSupportedCSPVersion.ts","webpack://cryptoPro/./helpers/_isSupportedCadesVersion.ts","webpack://cryptoPro/./helpers/_parseCertInfo.ts","webpack://cryptoPro/./helpers/getSignType.ts","webpack://cryptoPro/./vendor/cadesplugin_api.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,qDAAW;AAChC,cAAc,mBAAO,CAAC,iDAAS;AAC/B,cAAc,mBAAO,CAAC,qEAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5vDA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;;;;;ACpFA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA,oFAA6E;AAC7E,4HAAqE;AACrE,6JAA2F;AAC3F,mHAAiH;AACjH,0GAAyD;AACzD,oGAAqD;AACrD,oGAA+D;AAE/D;;;;;;;GAOG;AACU,4BAAoB,GAAG,yCAAmB,CACrD,CAAO,UAAkB,EAAE,aAAmC,EAAE,WAAqB,OAAO,EAAmB,EAAE;IAC/G,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAC/B,MAAM,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AAgB;AAChB;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB,WAAW,UAAU,YAAY,aAAa;AACrG,+EAA+E,aAAa,mBAAmB,uBAAuB,uBAAuB,cAAc,mBAAmB,YAAY;AAC1M,oEAAoE,iBAAiB,yBAAyB,WAAW;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC","file":"crypto-pro-js-m.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cryptoPro\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cryptoPro\"] = factory();\n\telse\n\t\troot[\"cryptoPro\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./crypto-pro-js-m.ts\");\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const addAttachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, signedMessage: string | ArrayBuffer, signType: SignType = 'PKCS7'): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addAttachedSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let messageBase64;\n\n try {\n messageBase64 = Buffer.from(signedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, signTypeConst));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const addDetachedSignature = _afterPluginsLoaded(\n async (\n thumbprint: string,\n signedMessage: string | ArrayBuffer,\n messageHash: string,\n signType: SignType = 'PKCS7',\n ): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyHash(cadesHashedData, signedMessage, signTypeConst));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { ISSUER_TAGS_TRANSLATIONS, SUBJECT_TAGS_TRANSLATIONS } from '../../constants';\nimport { TagTranslation } from '../../helpers/_parseCertInfo';\nimport { exportBase64 } from './exportBase64';\nimport { getAlgorithm } from './getAlgorithm';\nimport { getCadesProp } from './getCadesProp';\nimport { getDecodedExtendedKeyUsage, ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';\nimport { getExtendedKeyUsage } from './getExtendedKeyUsage';\nimport { getInfo } from './getInfo';\nimport { hasExtendedKeyUsage } from './hasExtendedKeyUsage';\nimport { isValid } from './isValid';\n\nexport type CadesCertificate = any;\n\nexport class Certificate {\n constructor(\n public _cadesCertificate: CadesCertificate,\n public name: string,\n public issuerName: string,\n public subjectName: string,\n public thumbprint: string,\n public validFrom: string,\n public validTo: string,\n ) {}\n\n public getOwnerInfo(): Promise {\n return getInfo.call(this, SUBJECT_TAGS_TRANSLATIONS, 'SubjectName');\n }\n\n public getIssuerInfo(): Promise {\n return getInfo.call(this, ISSUER_TAGS_TRANSLATIONS, 'IssuerName');\n }\n\n public getExtendedKeyUsage(): Promise {\n return getExtendedKeyUsage.call(this);\n }\n\n public getDecodedExtendedKeyUsage(): Promise {\n return getDecodedExtendedKeyUsage.call(this);\n }\n\n public getAlgorithm(): Promise {\n return getAlgorithm.call(this);\n }\n\n public getCadesProp(propName): Promise {\n return getCadesProp.call(this, propName);\n }\n\n public isValid(): Promise {\n return isValid.call(this);\n }\n\n public exportBase64(): Promise {\n return exportBase64.call(this);\n }\n\n public hasExtendedKeyUsage(oids): Promise {\n return hasExtendedKeyUsage.call(this, oids);\n }\n}\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Экспортирует сертификат в формате base64\n *\n * @returns сертификат в формате base64\n */\nexport const exportBase64 = _afterPluginsLoaded(function (): string {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function exportBase64(): string {\n let base64: string;\n\n try {\n base64 = __cadesAsyncToken__ + cadesCertificate.Export(0);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при экспорте сертификата');\n }\n\n return base64;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\ninterface AlgorithmInfo {\n algorithm: string;\n oid: string;\n}\n\n/**\n * Возвращает информацию об алгоритме сертификата\n *\n * @returns информацию об алгоритме и его OID'е\n */\nexport const getAlgorithm = _afterPluginsLoaded(function (): AlgorithmInfo {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getAlgorithm(): AlgorithmInfo {\n const algorithmInfo: AlgorithmInfo = {\n algorithm: null,\n oid: null,\n };\n let cadesPublicKey;\n\n try {\n cadesPublicKey = __cadesAsyncToken__ + cadesCertificate.PublicKey();\n cadesPublicKey = __cadesAsyncToken__ + cadesPublicKey.Algorithm;\n algorithmInfo.algorithm = __cadesAsyncToken__ + cadesPublicKey.FriendlyName;\n algorithmInfo.oid = __cadesAsyncToken__ + cadesPublicKey.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении алгоритма');\n }\n\n return algorithmInfo;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает указанное внутренее свойство у сертификата в формате Cades\n *\n * @param propName = наименование свойства\n * @returns значение запрошенного свойства\n */\nexport const getCadesProp = _afterPluginsLoaded(function (propName: string): any {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getCadesProp() {\n let propertyValue;\n\n try {\n propertyValue = __cadesAsyncToken__ + cadesCertificate[propName];\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при обращении к свойству сертификата');\n }\n\n return propertyValue;\n }),\n );\n});\n","import { OIDS_DICTIONARY } from '../../constants';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\nexport interface ExtendedKeysTranslations {\n [key: string]: string | null;\n}\n\n/**\n * Возвращает расшифрованные ОИД'ы сертификата\n *\n * @returns словарь расшифрованных ОИД'ов\n */\nexport const getDecodedExtendedKeyUsage = _afterPluginsLoaded(async function (): Promise {\n const certificateOids = await (this as Certificate).getExtendedKeyUsage();\n\n return certificateOids.reduce(\n (decodedOids, oidCode) => ({\n ...decodedOids,\n [oidCode]: OIDS_DICTIONARY[oidCode] || null,\n }),\n {},\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает ОИД'ы сертификата\n *\n * @returns список ОИД'ов\n */\nexport const getExtendedKeyUsage = _afterPluginsLoaded(function (): string[] {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getExtendedKeyUsage(): string[] {\n const OIDS: string[] = [];\n let count: any;\n\n try {\n count = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n count = __cadesAsyncToken__ + count.EKUs;\n count = __cadesAsyncToken__ + count.Count;\n\n if (count > 0) {\n while (count > 0) {\n let cadesExtendedKeyUsage;\n\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.EKUs;\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.Item(count);\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.OID;\n\n OIDS.push(cadesExtendedKeyUsage);\n\n count--;\n }\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || \"Ошибка при получении ОИД'ов\");\n }\n\n return OIDS;\n }),\n );\n});\n","import { TagsTranslations } from '../../constants/tags-translations';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { _parseCertInfo, TagTranslation } from '../../helpers/_parseCertInfo';\nimport { getCadesProp } from './getCadesProp';\n\n/**\n * Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам\n *\n * @param tags = словарь\n * @param entitiesPath = путь к разбираемой сущности\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const getInfo = _afterPluginsLoaded(async function (\n tags: TagsTranslations[],\n entitiesPath: string,\n): Promise {\n let entities: string;\n\n try {\n entities = await getCadesProp.call(this, entitiesPath);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при извлечении информации из сертификата');\n }\n\n return _parseCertInfo(tags, entities);\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет наличие ОИД'а (ОИД'ов) у сертификата\n *\n * @param oids - ОИД'ы для проверки\n * @returns флаг наличия ОИД'ов у сертификата\n */\nexport const hasExtendedKeyUsage = _afterPluginsLoaded(async function (oids: string | string[]): Promise {\n const certOids = await (this as Certificate).getExtendedKeyUsage();\n\n let result: boolean;\n\n if (Array.isArray(oids)) {\n result = oids.every((oidToCheck) => certOids.some((certOid) => certOid === oidToCheck));\n } else {\n result = certOids.some((certOid) => certOid === oids);\n }\n\n return result;\n});\n","export * from './certificate';\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет действительность сертификата\n *\n * @returns флаг валидности\n */\nexport const isValid = _afterPluginsLoaded(function (): boolean {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function isValid() {\n let isValid;\n\n try {\n isValid = __cadesAsyncToken__ + cadesCertificate.IsValid();\n isValid = __cadesAsyncToken__ + isValid.Result;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при проверке сертификата');\n }\n\n return Boolean(isValid);\n }),\n );\n});\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Создает присоединенную подпись сообщения по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param message - подписываемое сообщение\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const createAttachedSignature = _afterPluginsLoaded(\n async (\n thumbprint: string,\n unencryptedMessage: string | ArrayBuffer,\n signType: SignType = 'PKCS7',\n ): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createAttachedSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let messageBase64;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Создает отсоединенную подпись хеша по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\n\nexport const createDetachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, messageHash: string, signType: SignType = 'PKCS7'): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedData.SignHash(cadesHashedData, cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит\n * https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B8%D0%B1%D0%BE%D0%B3_(%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F)\n *\n * @param unencryptedMessage - сообщение для хеширования\n *\n * @returns хеш\n */\nexport const createHash = _afterPluginsLoaded(\n async (unencryptedMessage: string | ArrayBuffer): Promise => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function createHash(): string {\n const cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n let messageBase64;\n let hash;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesHashedData.Hash(messageBase64));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации хэширования');\n }\n\n try {\n hash = __cadesAsyncToken__ + cadesHashedData.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при создании хэша');\n }\n\n return hash;\n }),\n );\n },\n);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\n\n/**\n * Создает XML подпись для документа в формате XML\n *\n * @param thumbprint - отпечаток сертификата\n * @param unencryptedMessage - подписываемое сообщение в формате XML\n * @returns подпись\n */\nexport const createXMLSignature = _afterPluginsLoaded(\n async (thumbprint: string, unencryptedMessage: string): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createXMLSignature(): string {\n let cadesSigner;\n let cadesSignedXML;\n\n try {\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n cadesSignedXML = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.SignedXML');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n try {\n const signatureMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n const digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n void (__cadesAsyncToken__ + cadesSigner.propset_CheckCertificate(true));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_Content(unencryptedMessage));\n void (\n __cadesAsyncToken__ +\n cadesSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED)\n );\n void (__cadesAsyncToken__ + cadesSignedXML.propset_SignatureMethod(signatureMethod));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_DigestMethod(digestMethod));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedXML.Sign(cadesSigner);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getAllUserCertificates } from './getAllUserCertificates';\nimport { getAllContainerCertificates } from './getAllContainerCertificates';\n\nlet certificatesCache: Certificate[];\n/**\n * Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе, без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllCertificates = _afterPluginsLoaded(\n async (resetCache: boolean = false): Promise => {\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n let availableCertificates: Certificate[];\n\n try {\n availableCertificates = await getAllUserCertificates(resetCache);\n } catch (error) {\n console.error(error);\n\n availableCertificates = [];\n }\n\n try {\n const containerAllCertificates: Certificate[] = await getAllContainerCertificates(resetCache);\n\n if (!availableCertificates) {\n availableCertificates = containerAllCertificates;\n } else {\n let containerAllCertificatesCount = containerAllCertificates.length - 1;\n let foundAvailableCertificate;\n\n while (containerAllCertificatesCount) {\n foundAvailableCertificate = availableCertificates.find(\n (cert) => cert.thumbprint === containerAllCertificates[containerAllCertificatesCount].thumbprint,\n );\n\n if (!foundAvailableCertificate) {\n availableCertificates.push(containerAllCertificates[containerAllCertificatesCount]);\n }\n\n containerAllCertificatesCount--;\n }\n }\n } catch (error) {\n console.error(error);\n }\n\n if (!availableCertificates) {\n throw new Error('Нет доступных сертификатов');\n }\n\n certificatesCache = availableCertificates;\n\n return certificatesCache;\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllContainerCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getAllContainerCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { CadesCertificate, Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getAllUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getCertificates } from './getCertificates';\nimport { getAllCertificates } from './getAllCertificates';\n\n/**\n * Возвращает сертификат по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @param validOnly - проверять сертификаты по дате и наличию приватного ключа\n * @returns сертификат\n */\nexport const getCertificate = _afterPluginsLoaded(\n async (thumbprint: string, validOnly: boolean = true): Promise => {\n if (!thumbprint) {\n throw new Error('Отпечаток не указан');\n }\n\n let availableCertificates: Certificate[];\n\n if (validOnly) {\n availableCertificates = await getCertificates();\n } else {\n availableCertificates = await getAllCertificates();\n }\n\n const foundCertificate: Certificate = availableCertificates.find((cert) => cert.thumbprint === thumbprint);\n\n if (!foundCertificate) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\n }\n\n return foundCertificate;\n },\n);\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getUserCertificates } from './getUserCertificates';\nimport { getContainerCertificates } from './getContainerCertificates';\nimport { getAllUserCertificates } from './getAllUserCertificates';\nimport { getAllContainerCertificates } from './getAllContainerCertificates';\n\nlet certificatesCache: Certificate[];\n/**\n * Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getCertificates = _afterPluginsLoaded(\n async (resetCache: boolean = false): Promise => {\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n let availableCertificates: Certificate[];\n\n try {\n availableCertificates = await getUserCertificates(resetCache);\n } catch (error) {\n console.error(error);\n\n availableCertificates = [];\n }\n\n try {\n const containerCertificates: Certificate[] = await getContainerCertificates(resetCache);\n\n if (!availableCertificates) {\n availableCertificates = containerCertificates;\n } else {\n let containerCertificatesCount = containerCertificates.length - 1;\n let foundAvailableCertificate;\n\n while (containerCertificatesCount) {\n foundAvailableCertificate = availableCertificates.find(\n (cert) => cert.thumbprint === containerCertificates[containerCertificatesCount].thumbprint,\n );\n\n if (!foundAvailableCertificate) {\n availableCertificates.push(containerCertificates[containerCertificatesCount]);\n }\n\n containerCertificatesCount--;\n }\n }\n } catch (error) {\n console.error(error);\n }\n\n if (!availableCertificates) {\n throw new Error('Нет доступных сертификатов');\n }\n\n certificatesCache = availableCertificates;\n\n return certificatesCache;\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getContainerCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getContainerCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP\n */\nexport const getCspVersion = _afterPluginsLoaded((): string => {\n let cspVersion = null;\n\n return eval(\n _generateCadesFn(function getCspVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n cspVersion = __cadesAsyncToken__ + cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении версии системы');\n }\n\n return cspVersion;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о плагине\n */\nexport const getPluginVersion = _afterPluginsLoaded((): string => {\n let cadesVersion = null;\n\n return eval(\n _generateCadesFn(function getPluginVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n\n if (!cadesVersion) {\n cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n cadesVersion = __cadesAsyncToken__ + cadesVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о плагине');\n }\n\n return cadesVersion;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nexport interface SystemInfo {\n cadesVersion: string;\n cspVersion: string;\n}\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP и плагине\n */\nexport const getSystemInfo = _afterPluginsLoaded(\n (): SystemInfo => {\n const sysInfo = {\n cadesVersion: null,\n cspVersion: null,\n };\n\n return eval(\n _generateCadesFn(function getSystemInfo(): SystemInfo {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n sysInfo.cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n if (!sysInfo.cadesVersion) {\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + sysInfo.cadesVersion.toString();\n sysInfo.cspVersion = __cadesAsyncToken__ + sysInfo.cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о системе');\n }\n\n return sysInfo;\n }),\n );\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","export * from './getCertificate';\nexport * from './getUserCertificates';\nexport * from './getAllUserCertificates';\nexport * from './getContainerCertificates';\nexport * from './getAllContainerCertificates';\nexport * from './getCertificates';\nexport * from './getAllCertificates';\nexport * from './getSystemInfo';\nexport * from './isValidSystemSetup';\nexport * from './createXMLSignature';\nexport * from './createDetachedSignature';\nexport * from './addDetachedSignature';\nexport * from './createAttachedSignature';\nexport * from './addAttachedSignature';\nexport * from './createHash';\nexport * from './certificate';\nexport * from './getCspVersion';\nexport * from './getPluginVersion';\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { _isSupportedCadesVersion } from '../helpers/_isSupportedCadesVersion';\nimport { _isSupportedCSPVersion } from '../helpers/_isSupportedCSPVersion';\nimport { getSystemInfo, SystemInfo } from './getSystemInfo';\n\n/**\n * Проверяет корректность настроек ЭП на машине\n *\n * @returns флаг корректности настроек\n */\nexport const isValidSystemSetup = _afterPluginsLoaded(\n async (): Promise => {\n let systemInfo: SystemInfo;\n\n try {\n systemInfo = await getSystemInfo();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Настройки ЭП на данной машине не верны');\n }\n\n if (!_isSupportedCadesVersion(systemInfo.cadesVersion)) {\n throw new Error('Не поддерживаемая версия плагина');\n }\n\n if (!_isSupportedCSPVersion(systemInfo.cspVersion)) {\n throw new Error('Не поддерживаемая версия CSP');\n }\n\n return true;\n },\n);\n","export const CADESCOM_ATTRIBUTE_OTHER = -1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CADESCOM_AllowNoOutstandingRequest = 1;\nexport const CADESCOM_AllowNone = 0;\nexport const CADESCOM_AllowUntrustedCertificate = 2;\nexport const CADESCOM_AllowUntrustedRoot = 4;\nexport const CADESCOM_BASE64_TO_BINARY = 0x01;\nexport const CADESCOM_CADES_BES = 1;\nexport const CADESCOM_CADES_DEFAULT = 0;\nexport const CADESCOM_CADES_T = 5;\nexport const CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\nexport const CADESCOM_CONTAINER_STORE = 100;\nexport const CADESCOM_CURRENT_USER_STORE = 2;\nexport const CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\nexport const CADESCOM_DISPLAY_DATA_CONTENT = 1;\nexport const CADESCOM_DISPLAY_DATA_NONE = 0;\nexport const CADESCOM_ENCODE_ANY = -1;\nexport const CADESCOM_ENCODE_BASE64 = 0;\nexport const CADESCOM_ENCODE_BINARY = 1;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\nexport const CADESCOM_HASH_ALGORITHM_MD2 = 1;\nexport const CADESCOM_HASH_ALGORITHM_MD4 = 2;\nexport const CADESCOM_HASH_ALGORITHM_MD5 = 3;\nexport const CADESCOM_HASH_ALGORITHM_SHA1 = 0;\nexport const CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\nexport const CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\nexport const CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\nexport const CADESCOM_LOCAL_MACHINE_STORE = 1;\nexport const CADESCOM_PKCS7_TYPE = 65535;\nexport const CADESCOM_STRING_TO_UCS2LE = 0x00;\nexport const CADESCOM_SkipInstallToStore = 268435456;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\nexport const CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\nexport const CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\nexport const CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\nexport const CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\nexport const CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\nexport const CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\nexport const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\nexport const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\nexport const CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\nexport const CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\nexport const CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\nexport const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\nexport const CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\nexport const CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\nexport const CAPICOM_CURRENT_USER_STORE = 2;\nexport const CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\nexport const CAPICOM_EKU_CLIENT_AUTH = 2;\nexport const CAPICOM_EKU_OTHER = 0;\nexport const CAPICOM_EKU_SMARTCARD_LOGON = 5;\nexport const CAPICOM_LOCAL_MACHINE_STORE = 1;\nexport const CAPICOM_MEMORY_STORE = 0;\nexport const CAPICOM_MY_STORE = 'My';\nexport const CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\nexport const CAPICOM_OID_OTHER = 0;\nexport const CAPICOM_PROPID_ACCESS_STATE = 14;\nexport const CAPICOM_PROPID_ARCHIVED = 19;\nexport const CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;\nexport const CAPICOM_PROPID_AUTO_ENROLL = 21;\nexport const CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;\nexport const CAPICOM_PROPID_CTL_USAGE = 9;\nexport const CAPICOM_PROPID_DATE_STAMP = 27;\nexport const CAPICOM_PROPID_DESCRIPTION = 13;\nexport const CAPICOM_PROPID_EFS = 17;\nexport const CAPICOM_PROPID_ENHKEY_USAGE = 9;\nexport const CAPICOM_PROPID_ENROLLMENT = 26;\nexport const CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;\nexport const CAPICOM_PROPID_FIRST_RESERVED = 66;\nexport const CAPICOM_PROPID_FIRST_USER = 0x00008000;\nexport const CAPICOM_PROPID_FORTEZZA_DATA = 18;\nexport const CAPICOM_PROPID_FRIENDLY_NAME = 11;\nexport const CAPICOM_PROPID_HASH_PROP = 3;\nexport const CAPICOM_PROPID_IE30_RESERVED = 7;\nexport const CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;\nexport const CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;\nexport const CAPICOM_PROPID_KEY_CONTEXT = 5;\nexport const CAPICOM_PROPID_KEY_IDENTIFIER = 20;\nexport const CAPICOM_PROPID_KEY_PROV_HANDLE = 1;\nexport const CAPICOM_PROPID_KEY_PROV_INFO = 2;\nexport const CAPICOM_PROPID_KEY_SPEC = 6;\nexport const CAPICOM_PROPID_LAST_RESERVED = 0x00007fff;\nexport const CAPICOM_PROPID_LAST_USER = 0x0000ffff;\nexport const CAPICOM_PROPID_MD5_HASH = 4;\nexport const CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;\nexport const CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;\nexport const CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;\nexport const CAPICOM_PROPID_PVK_FILE = 12;\nexport const CAPICOM_PROPID_RENEWAL = 64;\nexport const CAPICOM_PROPID_SHA1_HASH = 3;\nexport const CAPICOM_PROPID_SIGNATURE_HASH = 15;\nexport const CAPICOM_PROPID_SMART_CARD_DATA = 16;\nexport const CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;\nexport const CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;\nexport const CAPICOM_PROPID_UNKNOWN = 0;\nexport const CAPICOM_SMART_CARD_USER_STORE = 4;\nexport const CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;\nexport const CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\nexport const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\nexport const CAPICOM_STORE_OPEN_READ_ONLY = 0;\nexport const CAPICOM_STORE_OPEN_READ_WRITE = 1;\nexport const CHECK_NONE = 0;\nexport const CHECK_OFFLINE_REVOCATION_STATUS = 16;\nexport const CHECK_ONLINE_REVOCATION_STATUS = 8;\nexport const CHECK_SIGNATURE_VALIDITY = 4;\nexport const CHECK_TIME_VALIDITY = 2;\nexport const CHECK_TRUSTED_ROOT = 1;\nexport const LOG_LEVEL_DEBUG = 4;\nexport const LOG_LEVEL_ERROR = 1;\nexport const LOG_LEVEL_INFO = 2;\nexport const TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;\nexport const TRUST_CTL_IS_NOT_TIME_VALID = 131072;\nexport const TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;\nexport const TRUST_IS_CYCLIC = 128;\nexport const TRUST_IS_NOT_SIGNATURE_VALID = 8;\nexport const TRUST_IS_NOT_TIME_NESTED = 2;\nexport const TRUST_IS_NOT_TIME_VALID = 1;\nexport const TRUST_IS_NOT_VALID_FOR_USAGE = 16;\nexport const TRUST_IS_PARTIAL_CHAIN = 65536;\nexport const TRUST_IS_REVOKED = 4;\nexport const TRUST_IS_UNTRUSTED_ROOT = 32;\nexport const TRUST_REVOCATION_STATUS_UNKNOWN = 64;\nexport const XmlDsigGost3410Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\nexport const XmlDsigGost3410UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411';\nexport const XmlDsigGost3411Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\nexport const XmlDsigGost3411UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr3411';\n","export * from './cades-constants';\nexport * from './issuer-tags-translations';\nexport * from './oids-dictionary';\nexport * from './subject-tags-translations';\n","import { TagsTranslations } from './tags-translations';\n\nexport const ISSUER_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UN', 'UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN', 'commonName'], translation: 'Удостоверяющий центр' },\n { possibleNames: ['C', 'countryName'], translation: 'Страна' },\n { possibleNames: ['S', 'ST', 'stateOrProvinceName'], translation: 'Регион' },\n { possibleNames: ['STREET', 'streetAddress'], translation: 'Адрес' },\n { possibleNames: ['O', 'organizationName'], translation: 'Компания' },\n { possibleNames: ['OU', 'organizationalUnitName'], translation: 'Тип' },\n { possibleNames: ['T', 'TITLE'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'ИННФЛ', 'ИНН ФЛ', 'INN', 'ИНН физического лица'], translation: 'ИНН' },\n { possibleNames: ['ИННЮЛ', 'ИНН ЮЛ', 'INN LE', 'INNLE', 'ИНН организации'], translation: 'ИНН организации' },\n { possibleNames: ['E', 'email', 'emailAddress', 'pkcs9email'], translation: 'Email' },\n { possibleNames: ['L', 'localityName'], translation: 'Город' },\n];\n","export const OIDS_DICTIONARY = {\n '1.2.643.2.2.34.6': 'Пользователь Центра Регистрации',\n '1.2.643.2.39.1.1': 'Использование в программных продуктах системы \"1С:Предприятие 8\"',\n '1.2.643.3.131.1.1': 'ИНН',\n '1.2.643.100.4': 'ИНН организации',\n '1.2.643.100.1': 'ОГРН',\n '1.2.643.100.5': 'ОГРНИП',\n '1.2.643.100.3': 'СНИЛС',\n '1.2.643.3.141.1.1': 'РНС ФСС',\n '1.2.643.3.141.1.2': 'КП ФСС',\n '1.2.643.3.2.100.65.13.11': 'Использование в системе АИС \"Госзакупки\" Сахалинской области.',\n '1.2.643.3.8.100.1': 'Сертификат типа \"ekey-ГОСТ\"',\n '1.2.643.3.8.100.1.1': 'Общее использование в системах ИОК без права заверения финансовых документов',\n '1.2.643.3.8.100.1.10':\n 'Для участия в электронных торгах и подписания государственного контракта в информационных системах Тендерного комитета города Москвы уполномоченными лицами участников размещения государственного заказа города Москвы',\n '1.2.643.3.8.100.1.11':\n 'Подписание электронных документов в автоматизированной информационной системе размещения государственного и муниципального заказа Саратовской области',\n '1.2.643.3.8.100.1.12': 'Использование в системе государственного заказа Иркутской области',\n '1.2.643.3.8.100.1.13':\n 'Использование в электронной торговой площадке агентства государственного заказа Красноярского края',\n '1.2.643.3.8.100.1.14': 'Использование в электронной торговой площадке \"Тендер\"',\n '1.2.643.3.8.100.1.2': 'Передача отчетности по ТКС',\n '1.2.643.3.8.100.1.3': 'Оформление взаимных обязательств, соглашений, договоров, актов и т.п.',\n '1.2.643.3.8.100.1.4': 'Внутрикорпоративный документооборот',\n '1.2.643.3.8.100.1.5': 'Использование в системах электронной торговли',\n '1.2.643.3.8.100.1.6': 'Использование в торгово-закупочной системе \"ЭЛЕКТРА\"',\n '1.2.643.3.8.100.1.7': 'Использование в системе Портал государственных закупок Ставропольского края.',\n '1.2.643.3.8.100.1.8': 'Использование в Единой системе электронной торговли B2B-Center и B2G.',\n '1.2.643.3.8.100.1.9':\n 'Для участия в электронных торгах и подписания государственного контракта в электронной площадке ОАО «ЕЭТП» уполномоченными лицами участников размещения государственного или муниципального заказа',\n '1.2.643.5.1.24.2.1.3':\n 'Формирование документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.1.3.1':\n 'Формирование кадастровым инженером документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.2.2': 'Формирование документов как результата оказания услуги со стороны органов регистрации прав',\n '1.2.643.5.1.24.2.2.3':\n 'Формирование документов для получения государственных услуг в сфере государственной регистрации прав на недвижимое имущество и сделок с ним со стороны заявителя',\n '1.2.643.6.2.1.7.1':\n 'Использование единоличным исполнительным органом юридического лица или уполномоченными представителями юридического лица в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских и иных прав и обязанностей в сфере негосударственного пенсионного обеспечения, негосударственного пенсионного страхования, в сфере деятельности паевых инвестиционных фондов, акционерных инвестиционных фондов, профессиональных участников рынка ценных бумаг, а также связанной с обслуживанием указанной деятельности услуг кредитных и иных организаций',\n '1.2.643.6.2.1.7.2':\n 'Использование физическим лицом в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских прав и обязанностей в отношении инвестиционных паев паевых инвестиционных фондов, в том числе отношения, связанные с учетом и/или фиксацией прав на инвестиционные паи паевых инвестиционных фондов',\n '1.2.643.6.3':\n 'Использование в электронных торговых системах и в программном обеспечении, связанным с обменом электронных сообщений',\n '1.2.643.6.3.1.1': 'Использование на электронных площадок отобранных для проведения аукционах в электронной форме',\n '1.2.643.6.3.1.2.1': 'Тип участника - Юридическое лицо',\n '1.2.643.6.3.1.2.2': 'Тип участника - Физическое лицо',\n '1.2.643.6.3.1.2.3': 'Тип участника - Индивидуальный предприниматель',\n '1.2.643.6.3.1.3.1': 'Участник размещения заказа',\n '1.2.643.6.3.1.4.1': 'Администратор организации',\n '1.2.643.6.3.1.4.2': 'Уполномоченный специалист',\n '1.2.643.6.3.1.4.3': 'Специалист с правом подписи контракта',\n '1.2.840.113549.1.9.2': 'Неструктурированное имя',\n '1.3.6.1.4.1.24138.1.1.8.1': 'Обеспечение юридической значимости в Системе \"Электронная Торговая Площадка\"',\n '1.3.6.1.4.1.29919.21': 'Использование в системе Портал государственных закупок Ростовской области \"Рефери\".',\n '1.3.6.1.5.5.7.3.2': 'Проверка подлинности клиента',\n '1.3.6.1.5.5.7.3.4': 'Защищенная электронная почта',\n '1.3.643.3.8.100.15': 'Использование в ЭТП \"uTender\"',\n};\n","import { TagsTranslations } from './tags-translations';\n\nexport const SUBJECT_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UN', 'UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN', 'commonName'], translation: 'Владелец' },\n { possibleNames: ['SN', 'surname'], translation: 'Фамилия' },\n { possibleNames: ['G', 'givenName', 'gn'], translation: 'Имя Отчество' },\n { possibleNames: ['C', 'countryName'], translation: 'Страна' },\n { possibleNames: ['S', 'ST', 'stateOrProvinceName'], translation: 'Регион' },\n { possibleNames: ['STREET', 'streetAddress'], translation: 'Адрес' },\n { possibleNames: ['O', 'organizationName'], translation: 'Компания' },\n { possibleNames: ['OU', 'organizationalUnitName'], translation: 'Отдел/подразделение' },\n { possibleNames: ['T', 'TITLE'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'ИННФЛ', 'ИНН ФЛ', 'INN', 'ИНН физического лица'], translation: 'ИНН' },\n { possibleNames: ['ИННЮЛ', 'ИНН ЮЛ', 'INN LE', 'INNLE', 'ИНН организации'], translation: 'ИНН организации' },\n { possibleNames: ['E', 'email', 'emailAddress', 'pkcs9email'], translation: 'Email' },\n { possibleNames: ['L', 'localityName'], translation: 'Город' },\n];\n","export * from './api';\nexport * from './helpers';\n","import { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\n\ntype Unpromisify = T extends Promise ? R : T;\n\nlet isSetLogLevel = false;\nlet isPluginLoaded = false;\n\nexport const _afterPluginsLoaded = any>(\n fn: T,\n): ((...args: Parameters) => Promise>>) => {\n const canPromise = Boolean(window.Promise);\n\n return async function (...args: Parameters): Promise>> {\n if (!isPluginLoaded) {\n try {\n require('../vendor/cadesplugin_api');\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при подключении модуля для работы с Cades plugin',\n );\n }\n\n isPluginLoaded = true;\n }\n\n const { cadesplugin } = window;\n\n if (!canPromise) {\n throw new Error('Необходим полифилл для Promise');\n }\n\n if (!cadesplugin) {\n throw new Error('Не подключен модуль для работы с Cades plugin');\n }\n\n if (!isSetLogLevel) {\n cadesplugin.set_log_level(cadesplugin.LOG_LEVEL_ERROR);\n\n isSetLogLevel = true;\n }\n\n try {\n await cadesplugin;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации модуля для работы с Cades plugin',\n );\n }\n\n return await fn.apply(this, args);\n };\n};\n","export const _extractCommonName = (subjectName: string): string | undefined =>\n subjectName.match(/CN=\"?(.+?)\"?(?:,|$)/)?.[1]?.replace(/\"{2}/g, '\"');\n","export const _extractMeaningfulErrorMessage = (error: Error): string | null => {\n let errorContainer = window.cadesplugin?.getLastError && window.cadesplugin.getLastError(error);\n\n if (!errorContainer?.message) {\n if (!error.message) {\n return null;\n }\n\n errorContainer = error;\n }\n\n const containsRussianLetters = /[а-яА-Я]/.test(errorContainer.message);\n\n if (!containsRussianLetters) {\n return null;\n }\n\n const searchResult = errorContainer.message.match(/^(.*?)(?:(?:\\.?\\s?\\(?(0x[0-9a-zA-Z]{1,8})\\)?)|(?:\\.?$))/);\n\n return searchResult ? searchResult[1] + (searchResult[2] ? ' (Код ошибки: ' + searchResult[2] + ')' : '') : null;\n};\n","// синтетические переменные, которые подменяются в рантайме\nexport const __cadesAsyncToken__ = {};\nexport const __createCadesPluginObject__ = (...args): any => ({});\n\nfunction getGeneratorConstructor(): GeneratorFunction {\n return new Function('', 'return Object.getPrototypeOf(function*(){}).constructor')();\n}\n\nexport const _generateCadesFn = (callback: Function): string => {\n const { cadesplugin } = window;\n const cadesGeneratorsAPI = Boolean(cadesplugin.CreateObjectAsync);\n const callbackName = callback.name || 'dynamicFn';\n const callbackLiteral = String(callback);\n const callbackArguments = callbackLiteral.match(/^function[\\s\\w]*?\\((.*?)\\)/)?.[1] || '';\n const callbackBody = callbackLiteral.replace(/^.*?{([\\s\\S]*?)}$/, '$1');\n let crossEnvCallbackLiteral = String(\n new (cadesGeneratorsAPI ? getGeneratorConstructor() : Function)(callbackArguments, callbackBody),\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__createCadesPluginObject__(\\([\\s\\S]*?\\))/gm,\n `cadesplugin.CreateObject${cadesGeneratorsAPI ? 'Async' : ''}$1`,\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__cadesAsyncToken__\\s*?\\+\\s*?\\b/gm,\n cadesGeneratorsAPI ? 'yield ' : '',\n );\n\n if (!cadesGeneratorsAPI) {\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/propset_(.*?)\\((.*?)\\)/gm, '$1 = $2');\n }\n\n return [\n cadesGeneratorsAPI ? `cadesplugin.async_spawn(${crossEnvCallbackLiteral});` : `(${crossEnvCallbackLiteral})();`,\n `//# sourceURL=crypto-pro_${callbackName}.js`,\n ].join('');\n};\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _getCadesUserCert } from './_getCadesUserCert';\nimport { _getCadesContainerCert } from './_getCadesContainerCert';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesCert = _afterPluginsLoaded(\n async (thumbprint: string): Promise => {\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificate = await _getCadesUserCert(thumbprint);\n } catch (error) {\n console.log(error);\n\n cadesCertificate = await _getCadesContainerCert(thumbprint);\n }\n\n return cadesCertificate;\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку из хранилища закрытого ключа\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesContainerCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища закрытого ключа');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) ||\n 'Ошибка получения списка сертификатов из хранилища закрытого ключа',\n );\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов в хранилище закрытого ключа');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден в хранилище закрытого ключа`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата из хранилища закрытого ключа',\n );\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку из хранилища пользователя\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesUserCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища пользователя');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов из хранилища пользователя',\n );\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов в хранилище пользователя');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден в хранилище пользователя`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата из хранилища пользователя',\n );\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","/**\n * Возвращает объект даты, совместимый с Cades plugin'ом, зависящий от браузера.\n *\n * В IE необходимо использовать специфичный формат \"VT_DATE\"\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Microsoft_Extensions/Date.getVarDate\n */\nexport const _getDateObj = (dateObj): Date => (dateObj.getVarDate ? dateObj.getVarDate() : dateObj);\n","const oldestSupportedCSPVersion = 4.0;\n\nexport const _isSupportedCSPVersion = (version: string): boolean => {\n version = version.match(/\\d+?\\b(?:\\.\\d+)?/)?.[0];\n\n return Number(version) >= oldestSupportedCSPVersion;\n};\n","export const _isSupportedCadesVersion = (version: string): boolean => {\n const match = version.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n\n if (!match) {\n return false;\n }\n\n const [, major, minor, patch] = match;\n\n if (Number(major) < 2) {\n return false;\n }\n\n if (Number(major) === 2 && Number(patch) < 12438) {\n return false;\n }\n\n return true;\n};\n","import { OIDS_DICTIONARY } from '../constants';\nimport { TagsTranslations } from '../constants/tags-translations';\n\nexport interface TagTranslation {\n description: string;\n title: string;\n isTranslated: boolean;\n}\n\n/**\n * Парсит информацию из строки с информацией о сертификате\n *\n * @param tagsTranslations - словарь с расшифровками тэгов\n * @param rawInfo - данные для парсинга\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const _parseCertInfo = (tagsTranslations: TagsTranslations[], rawInfo: string): TagTranslation[] => {\n const extractedEntities: string[] = rawInfo.match(/([а-яА-Яa-zA-Z0-9\\s.]+)=(?:(\"[^\"]+?\")|(.+?))(?:,|$)/g);\n\n if (extractedEntities) {\n return extractedEntities.map((group) => {\n const segmentsMatch = group.trim().match(/^([а-яА-Яa-zA-Z0-9\\s.]+)=(.+?),?$/);\n let title = segmentsMatch?.[1];\n // Вырезаем лишние кавычки\n const description = segmentsMatch?.[2]?.replace(/^\"(.*)\"/, '$1')?.replace(/\"{2}/g, '\"');\n const oidIdentifierMatch = title?.match(/^OID\\.(.*)/);\n const oidIdentifier = oidIdentifierMatch?.[1];\n let isTranslated = false;\n\n // Если нашли в тайтле ОИД, пытаемся его расшифровать\n if (oidIdentifier) {\n const oidTranslation = OIDS_DICTIONARY[oidIdentifier];\n\n if (oidTranslation) {\n title = oidTranslation;\n isTranslated = true;\n }\n }\n\n const tagTranslation = tagsTranslations.find((tag) => tag.possibleNames.find((name) => name === title))\n ?.translation;\n\n if (tagTranslation) {\n title = tagTranslation;\n isTranslated = true;\n }\n\n return { description, title, isTranslated };\n });\n }\n};\n","export declare type SignType = 'CAdES BES' | 'CAdES-X Long Type 1' | 'CAdES T' | 'PKCS7';\n\nexport const getSignType = (cadesplugin: any, signType: SignType): any => {\n switch (signType) {\n case 'CAdES BES': {\n return cadesplugin.CADESCOM_CADES_BES;\n }\n case 'CAdES-X Long Type 1': {\n return cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1;\n }\n case 'CAdES T': {\n return cadesplugin.CADESCOM_CADES_T;\n }\n case 'PKCS7': {\n return cadesplugin.CADESCOM_PKCS7_TYPE;\n }\n }\n};\n",";(function () {\r\n //already loaded\r\n if(window.cadesplugin)\r\n return;\r\n\r\n var pluginObject;\r\n var plugin_resolved = 0;\r\n var plugin_reject;\r\n var plugin_resolve;\r\n var isOpera = 0;\r\n var isFireFox = 0;\r\n var isSafari = 0;\r\n var isYandex = 0;\r\n var canPromise = !!window.Promise;\r\n var cadesplugin_loaded_event_recieved = false;\r\n var isFireFoxExtensionLoaded = false;\r\n var cadesplugin;\r\n\r\n if(canPromise)\r\n {\r\n cadesplugin = new Promise(function(resolve, reject)\r\n {\r\n plugin_resolve = resolve;\r\n plugin_reject = reject;\r\n });\r\n } else\r\n {\r\n cadesplugin = {};\r\n }\r\n\r\n function check_browser() {\r\n var ua= navigator.userAgent, tem, M= ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n if(/trident/i.test(M[1])){\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name:'IE', version:(tem[1] || '')};\r\n }\r\n if(M[1] === 'Chrome'){\r\n tem = ua.match(/\\b(OPR|Edg|YaBrowser)\\/(\\d+)/);\r\n if (tem != null)\r\n return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\r\n }\r\n M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null)\r\n M.splice(1, 1, tem[1]);\r\n return {name:M[0],version:M[1]};\r\n }\r\n var browserSpecs = check_browser();\r\n\r\n function cpcsp_console_log(level, msg){\r\n //IE9 не может писать в консоль если не открыта вкладка developer tools\r\n if(typeof(console) === 'undefined')\r\n return;\r\n if (level <= cadesplugin.current_log_level ){\r\n if (level === cadesplugin.LOG_LEVEL_DEBUG)\r\n console.log(\"DEBUG: %s\", msg);\r\n if (level === cadesplugin.LOG_LEVEL_INFO)\r\n console.info(\"INFO: %s\", msg);\r\n if (level === cadesplugin.LOG_LEVEL_ERROR)\r\n console.error(\"ERROR: %s\", msg);\r\n return;\r\n }\r\n }\r\n\r\n function set_log_level(level){\r\n if (!((level === cadesplugin.LOG_LEVEL_DEBUG) ||\r\n (level === cadesplugin.LOG_LEVEL_INFO) ||\r\n (level === cadesplugin.LOG_LEVEL_ERROR))){\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"cadesplugin_api.js: Incorrect log_level: \" + level);\r\n return;\r\n }\r\n cadesplugin.current_log_level = level;\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = DEBUG\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = INFO\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = ERROR\");\r\n if(isNativeMessageSupported())\r\n {\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\r\n window.postMessage(\"set_log_level=debug\", \"*\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\r\n window.postMessage(\"set_log_level=info\", \"*\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\r\n window.postMessage(\"set_log_level=error\", \"*\");\r\n }\r\n }\r\n\r\n function set_constantValues()\r\n {\r\n cadesplugin.CAPICOM_MEMORY_STORE = 0;\r\n cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_MEMORY_STORE = 0;\r\n cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_CONTAINER_STORE = 100;\r\n\r\n cadesplugin.CAPICOM_MY_STORE = \"My\";\r\n\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\r\n\r\n cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010;\r\n cadesplugin.CADESCOM_XADES_BES = 0x00000020;\r\n cadesplugin.CADESCOM_XADES_T = 0x00000050;\r\n cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0;\r\n cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000;\r\n\r\n cadesplugin.XmlDsigGost3410UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr3411\";\r\n cadesplugin.XmlDsigGost3410Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411\";\r\n\r\n cadesplugin.XmlDsigGost3411Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3410Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3411Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512\";\r\n cadesplugin.XmlDsigGost3410Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512\";\r\n\r\n cadesplugin.CADESCOM_CADES_DEFAULT = 0;\r\n cadesplugin.CADESCOM_CADES_BES = 1;\r\n cadesplugin.CADESCOM_CADES_T = 0x5;\r\n cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\r\n cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff;\r\n\r\n cadesplugin.CADESCOM_ENCODE_BASE64 = 0;\r\n cadesplugin.CADESCOM_ENCODE_BINARY = 1;\r\n cadesplugin.CADESCOM_ENCODE_ANY = -1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\r\n\r\n cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\r\n cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\r\n\r\n cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\r\n\r\n cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9;\r\n\r\n cadesplugin.CAPICOM_OID_OTHER = 0;\r\n cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\r\n\r\n cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2;\r\n cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5;\r\n cadesplugin.CAPICOM_EKU_OTHER = 0;\r\n\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100;\r\n cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1;\r\n\r\n cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0;\r\n cadesplugin.CADESCOM_BASE64_TO_BINARY = 1;\r\n\r\n cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\r\n\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\r\n\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\r\n\r\n cadesplugin.LOG_LEVEL_DEBUG = 4;\r\n cadesplugin.LOG_LEVEL_INFO = 2;\r\n cadesplugin.LOG_LEVEL_ERROR = 1;\r\n\r\n cadesplugin.CADESCOM_AllowNone = 0;\r\n cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1;\r\n cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2;\r\n cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4;\r\n cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000;\r\n cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000;\r\n cadesplugin.CADESCOM_UseContainerStore = 0x40000000;\r\n\r\n cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04;\r\n cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07;\r\n\r\n cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00;\r\n cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01;\r\n cadesplugin.ENABLE_CARRIER_CREATE = 0x02;\r\n cadesplugin.ENABLE_ANY_OPERATION = 0x03;\r\n\r\n cadesplugin.CADESCOM_PRODUCT_CSP = 0;\r\n cadesplugin.CADESCOM_PRODUCT_OCSP = 1;\r\n cadesplugin.CADESCOM_PRODUCT_TSP = 2;\r\n\r\n cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001;\r\n cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002;\r\n cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004;\r\n cadesplugin.MEDIA_TYPE_SCARD = 0x00000008;\r\n\r\n cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0;\r\n cadesplugin.AT_KEYEXCHANGE = 1;\r\n cadesplugin.AT_SIGNATURE = 2;\r\n\r\n cadesplugin.CARRIER_FLAG_REMOVABLE = 1;\r\n cadesplugin.CARRIER_FLAG_UNIQUE = 2;\r\n cadesplugin.CARRIER_FLAG_PROTECTED = 4;\r\n cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER = 8;\r\n cadesplugin.CARRIER_FLAG_SECURE_MESSAGING = 16;\r\n cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE = 64;\r\n cadesplugin.CARRIER_FLAG_VIRTUAL = 128;\r\n }\r\n\r\n function async_spawn(generatorFunc) {\r\n function continuer(verb, arg) {\r\n var result;\r\n try {\r\n result = generator[verb](arg);\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n if (result.done) {\r\n return result.value;\r\n } else {\r\n return Promise.resolve(result.value).then(onFulfilled, onRejected);\r\n }\r\n }\r\n var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));\r\n var onFulfilled = continuer.bind(continuer, \"next\");\r\n var onRejected = continuer.bind(continuer, \"throw\");\r\n return onFulfilled();\r\n }\r\n\r\n function isIE() {\r\n // var retVal = ((\"Microsoft Internet Explorer\" == navigator.appName) || // IE < 11\r\n // navigator.userAgent.match(/Trident\\/./i)); // IE 11\r\n return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE');\r\n }\r\n\r\n function isIOS() {\r\n return (navigator.userAgent.match(/ipod/i) ||\r\n navigator.userAgent.match(/ipad/i) ||\r\n navigator.userAgent.match(/iphone/i));\r\n }\r\n\r\n function isNativeMessageSupported()\r\n {\r\n // В IE работаем через NPAPI\r\n if(isIE())\r\n return false;\r\n // В Edge работаем через NativeMessage\r\n if (browserSpecs.name === 'Edg') {\r\n return true;\r\n }\r\n if (browserSpecs.name === 'YaBrowser') {\r\n isYandex = true;\r\n return true;\r\n }\r\n // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии\r\n if(browserSpecs.name === 'Opera') {\r\n isOpera = true;\r\n if(browserSpecs.version >= 33){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n if(browserSpecs.name === 'Firefox') {\r\n isFireFox = true;\r\n if(browserSpecs.version >= 52){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n if(browserSpecs.name === 'Chrome') {\r\n if(browserSpecs.version >= 42){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n //В Сафари начиная с 12 версии нет NPAPI\r\n if(browserSpecs.name === 'Safari') {\r\n isSafari = true;\r\n if(browserSpecs.version >= 12) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // Функция активации объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObject(name) {\r\n if (isIOS()) {\r\n // На iOS для создания объектов используется функция\r\n // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js\r\n return call_ru_cryptopro_npcades_10_native_bridge(\"CreateObject\", [name]);\r\n }\r\n if (isIE()) {\r\n // В Internet Explorer создаются COM-объекты\r\n if (name.match(/X509Enrollment/i)) {\r\n try {\r\n // Объекты CertEnroll пробуем создавать через нашу фабрику,\r\n // если не получилось то через CX509EnrollmentWebClassFactory\r\n var objCertEnrollClassFactory = document.getElementById(\"webClassFactory\");\r\n return objCertEnrollClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n try {\r\n var objWebClassFactory = document.getElementById(\"certEnrollClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (err) {\r\n throw (\"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS\");\r\n }\r\n }\r\n }\r\n // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory\r\n try {\r\n var objWebClassFactory = document.getElementById(\"webClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n // Для версий плагина ниже 2.0.12538\r\n return new ActiveXObject(name);\r\n }\r\n }\r\n // создаются объекты NPAPI\r\n return pluginObject.CreateObject(name);\r\n }\r\n\r\n function decimalToHexString(number) {\r\n if (number < 0) {\r\n number = 0xFFFFFFFF + number + 1;\r\n }\r\n\r\n return number.toString(16).toUpperCase();\r\n }\r\n\r\n function GetMessageFromException(e) {\r\n var err = e.message;\r\n if (!err) {\r\n err = e;\r\n } else if (e.number) {\r\n err += \" (0x\" + decimalToHexString(e.number) + \")\";\r\n }\r\n return err;\r\n }\r\n\r\n function getLastError(exception) {\r\n if(isNativeMessageSupported() || isIE() || isIOS() ) {\r\n return GetMessageFromException(exception);\r\n }\r\n\r\n try {\r\n return pluginObject.getLastError();\r\n } catch(e) {\r\n return GetMessageFromException(exception);\r\n }\r\n }\r\n\r\n // Функция для удаления созданных объектов\r\n function ReleasePluginObjects() {\r\n return cpcsp_chrome_nmcades.ReleasePluginObjects();\r\n }\r\n\r\n // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObjectAsync(name) {\r\n return pluginObject.CreateObjectAsync(name);\r\n }\r\n\r\n //Функции для IOS\r\n var ru_cryptopro_npcades_10_native_bridge = {\r\n callbacksCount : 1,\r\n callbacks : {},\r\n\r\n // Automatically called by native layer when a result is available\r\n resultForCallback : function resultForCallback(callbackId, resultArray) {\r\n var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId];\r\n if (!callback) return;\r\n callback.apply(null,resultArray);\r\n },\r\n\r\n // Use this in javascript to request native objective-c code\r\n // functionName : string (I think the name is explicit :p)\r\n // args : array of arguments\r\n // callback : function with n-arguments that is going to be called when the native code returned\r\n call : function call(functionName, args, callback) {\r\n var hasCallback = callback && typeof callback === \"function\";\r\n var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0;\r\n\r\n if (hasCallback)\r\n ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback;\r\n\r\n var iframe = document.createElement(\"IFRAME\");\r\n var arrObjs = new Array(\"_CPNP_handle\");\r\n try{\r\n iframe.setAttribute(\"src\", \"cpnp-js-call:\" + functionName + \":\" + callbackId+ \":\" + encodeURIComponent(JSON.stringify(args, arrObjs)));\r\n } catch(e){\r\n alert(e);\r\n }\r\n document.documentElement.appendChild(iframe);\r\n iframe.parentNode.removeChild(iframe);\r\n iframe = null;\r\n }\r\n };\r\n\r\n function call_ru_cryptopro_npcades_10_native_bridge(functionName, array){\r\n var tmpobj;\r\n var ex;\r\n ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function(e, response){\r\n ex = e;\r\n var str='tmpobj='+response;\r\n eval(str);\r\n if (typeof (tmpobj) === \"string\"){\r\n tmpobj = tmpobj.replace(/\\\\\\n/gm, \"\\n\");\r\n tmpobj = tmpobj.replace(/\\\\\\r/gm, \"\\r\");\r\n }\r\n });\r\n if(ex)\r\n throw ex;\r\n return tmpobj;\r\n }\r\n\r\n function show_firefox_missing_extension_dialog()\r\n {\r\n if (!window.cadesplugin_skip_extension_install)\r\n {\r\n var ovr = document.createElement('div');\r\n ovr.id = \"cadesplugin_ovr\";\r\n ovr.style = \"visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)\";\r\n ovr.innerHTML = \"
\" +\r\n \"\" +\r\n \"

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.\" +\r\n \"

Скачать расширение

\" +\r\n \"
\";\r\n document.getElementsByTagName(\"Body\")[0].appendChild(ovr);\r\n document.getElementById(\"cadesplugin_close_install\").addEventListener('click',function()\r\n {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n\r\n ovr.addEventListener('click',function()\r\n {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n ovr.style.visibility=\"visible\";\r\n }\r\n }\r\n function firefox_or_safari_nmcades_onload() {\r\n if (window.cadesplugin_extension_loaded_callback)\r\n window.cadesplugin_extension_loaded_callback();\r\n isFireFoxExtensionLoaded = true;\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n\r\n function nmcades_api_onload() {\r\n if (!isIE() && !isFireFox && !isSafari) {\r\n if (window.cadesplugin_extension_loaded_callback)\r\n window.cadesplugin_extension_loaded_callback();\r\n }\r\n window.postMessage(\"cadesplugin_echo_request\", \"*\");\r\n window.addEventListener(\"message\", function (event){\r\n if (typeof(event.data) !== \"string\" || !event.data.match(\"cadesplugin_loaded\"))\r\n return;\r\n if (cadesplugin_loaded_event_recieved)\r\n return;\r\n if(isFireFox || isSafari)\r\n {\r\n // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js\r\n var url = event.data.substring(event.data.indexOf(\"url:\") + 4);\r\n if (!url.match(\"^moz-extension://[a-zA-Z0-9-]+/nmcades_plugin_api.js$\")\r\n && !url.match(\"^safari-extension://[a-zA-Z0-9-]+/[a-zA-Z0-9]+/nmcades_plugin_api.js$\"))\r\n {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"Bad url \\\"\" + url + \"\\\" for load CryptoPro Extension for CAdES Browser plug-in\");\r\n plugin_loaded_error();\r\n return;\r\n }\r\n var fileref = document.createElement('script');\r\n fileref.setAttribute(\"type\", \"text/javascript\");\r\n fileref.setAttribute(\"src\", url);\r\n fileref.onerror = plugin_loaded_error;\r\n fileref.onload = firefox_or_safari_nmcades_onload;\r\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\r\n }else {\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n cadesplugin_loaded_event_recieved = true;\r\n }, false);\r\n }\r\n\r\n //Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari\r\n function load_extension()\r\n {\r\n if(isFireFox || isSafari){\r\n // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера.\r\n nmcades_api_onload();\r\n } else {\r\n // в асинхронном варианте для Yandex и Opera подключаем расширение из Opera store.\r\n if (isOpera || isYandex) {\r\n var fileref = document.createElement('script');\r\n fileref.setAttribute(\"type\", \"text/javascript\");\r\n fileref.setAttribute(\"src\", \"chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js\");\r\n fileref.onerror = plugin_loaded_error;\r\n fileref.onload = nmcades_api_onload;\r\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\r\n } else {\r\n // для Chrome, Chromium, Chromium Edge расширение из Chrome store\r\n var fileref = document.createElement('script');\r\n fileref.setAttribute(\"type\", \"text/javascript\");\r\n fileref.setAttribute(\"src\", \"chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js\");\r\n fileref.onerror = plugin_loaded_error;\r\n fileref.onload = nmcades_api_onload;\r\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\r\n }\r\n }\r\n }\r\n\r\n //Загружаем плагин для NPAPI\r\n function load_npapi_plugin()\r\n {\r\n var elem = document.createElement('object');\r\n elem.setAttribute(\"id\", \"cadesplugin_object\");\r\n elem.setAttribute(\"type\", \"application/x-cades\");\r\n elem.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem);\r\n pluginObject = document.getElementById(\"cadesplugin_object\");\r\n if(isIE())\r\n {\r\n var elem1 = document.createElement('object');\r\n elem1.setAttribute(\"id\", \"certEnrollClassFactory\");\r\n elem1.setAttribute(\"classid\", \"clsid:884e2049-217d-11da-b2a4-000e7bbb2b09\");\r\n elem1.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem1);\r\n var elem2 = document.createElement('object');\r\n elem2.setAttribute(\"id\", \"webClassFactory\");\r\n elem2.setAttribute(\"classid\", \"clsid:B04C8637-10BD-484E-B0DA-B8A039F60024\");\r\n elem2.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem2);\r\n }\r\n }\r\n\r\n //Отправляем событие что все ок.\r\n function plugin_loaded()\r\n {\r\n plugin_resolved = 1;\r\n if(canPromise)\r\n {\r\n plugin_resolve();\r\n }else {\r\n window.postMessage(\"cadesplugin_loaded\", \"*\");\r\n }\r\n }\r\n\r\n //Отправляем событие что сломались.\r\n function plugin_loaded_error(msg)\r\n {\r\n if(typeof(msg) === 'undefined' || typeof(msg) === 'object')\r\n msg = \"Плагин недоступен\";\r\n plugin_resolved = 1;\r\n if(canPromise)\r\n {\r\n plugin_reject(msg);\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n }\r\n\r\n //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку\r\n function check_load_timeout()\r\n {\r\n if(plugin_resolved === 1)\r\n return;\r\n if(isFireFox)\r\n {\r\n if (!isFireFoxExtensionLoaded)\r\n show_firefox_missing_extension_dialog();\r\n }\r\n plugin_resolved = 1;\r\n if(canPromise)\r\n {\r\n plugin_reject(\"Истекло время ожидания загрузки плагина\");\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n\r\n }\r\n\r\n //Вспомогательная функция для NPAPI\r\n function createPromise(arg)\r\n {\r\n return new Promise(arg);\r\n }\r\n\r\n function check_npapi_plugin (){\r\n try {\r\n var oAbout = CreateObject(\"CAdESCOM.About\");\r\n plugin_loaded();\r\n }\r\n catch (err) {\r\n document.getElementById(\"cadesplugin_object\").style.display = 'none';\r\n // Объект создать не удалось, проверим, установлен ли\r\n // вообще плагин. Такая возможность есть не во всех браузерах\r\n var mimetype = navigator.mimeTypes[\"application/x-cades\"];\r\n if (mimetype) {\r\n var plugin = mimetype.enabledPlugin;\r\n if (plugin) {\r\n plugin_loaded_error(\"Плагин загружен, но не создаются обьекты\");\r\n }else\r\n {\r\n plugin_loaded_error(\"Ошибка при загрузке плагина\");\r\n }\r\n }else\r\n {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n }\r\n }\r\n }\r\n\r\n //Проверяем работает ли плагин\r\n function check_plugin_working()\r\n {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = \"\";\r\n var isIeLessThan9 = (div.getElementsByTagName(\"i\").length === 1);\r\n if (isIeLessThan9) {\r\n plugin_loaded_error(\"Internet Explorer версии 8 и ниже не поддерживается\");\r\n return;\r\n }\r\n\r\n if(isNativeMessageSupported())\r\n {\r\n load_extension();\r\n }else if(!canPromise) {\r\n window.addEventListener(\"message\", function (event){\r\n if (event.data !== \"cadesplugin_echo_request\")\r\n return;\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n },\r\n false);\r\n }else\r\n {\r\n if(document.readyState === \"complete\"){\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n } else {\r\n window.addEventListener(\"load\", function (event) {\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n }, false);\r\n }\r\n }\r\n }\r\n\r\n function set_pluginObject(obj)\r\n {\r\n pluginObject = obj;\r\n }\r\n\r\n function is_capilite_enabled()\r\n {\r\n if ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP)\r\n return true;\r\n return false;\r\n };\r\n\r\n //Export\r\n cadesplugin.JSModuleVersion = \"2.3.2\";\r\n cadesplugin.async_spawn = async_spawn;\r\n cadesplugin.set = set_pluginObject;\r\n cadesplugin.set_log_level = set_log_level;\r\n cadesplugin.getLastError = getLastError;\r\n cadesplugin.is_capilite_enabled = is_capilite_enabled;\r\n\r\n if(isNativeMessageSupported())\r\n {\r\n cadesplugin.CreateObjectAsync = CreateObjectAsync;\r\n cadesplugin.ReleasePluginObjects = ReleasePluginObjects;\r\n }\r\n\r\n if(!isNativeMessageSupported())\r\n {\r\n cadesplugin.CreateObject = CreateObject;\r\n }\r\n\r\n if(window.cadesplugin_load_timeout)\r\n {\r\n setTimeout(check_load_timeout, window.cadesplugin_load_timeout);\r\n }\r\n else\r\n {\r\n setTimeout(check_load_timeout, 20000);\r\n }\r\n\r\n set_constantValues();\r\n\r\n cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR;\r\n window.cadesplugin = cadesplugin;\r\n check_plugin_working();\r\n}());\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://cryptoPro/webpack/universalModuleDefinition","webpack://cryptoPro/webpack/bootstrap","webpack://cryptoPro/../node_modules/base64-js/index.js","webpack://cryptoPro/../node_modules/buffer/index.js","webpack://cryptoPro/../node_modules/buffer/node_modules/isarray/index.js","webpack://cryptoPro/../node_modules/ieee754/index.js","webpack://cryptoPro/../node_modules/webpack/buildin/global.js","webpack://cryptoPro/./api/addAttachedSignature.ts","webpack://cryptoPro/./api/addDetachedSignature.ts","webpack://cryptoPro/./api/certificate/certificate.ts","webpack://cryptoPro/./api/certificate/exportBase64.ts","webpack://cryptoPro/./api/certificate/getAlgorithm.ts","webpack://cryptoPro/./api/certificate/getCadesProp.ts","webpack://cryptoPro/./api/certificate/getDecodedExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getInfo.ts","webpack://cryptoPro/./api/certificate/hasExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/index.ts","webpack://cryptoPro/./api/certificate/isValid.ts","webpack://cryptoPro/./api/createAttachedSignature.ts","webpack://cryptoPro/./api/createDetachedSignature.ts","webpack://cryptoPro/./api/createHash.ts","webpack://cryptoPro/./api/createXMLSignature.ts","webpack://cryptoPro/./api/getAllCertificates.ts","webpack://cryptoPro/./api/getAllContainerCertificates.ts","webpack://cryptoPro/./api/getAllUserCertificates.ts","webpack://cryptoPro/./api/getCertificate.ts","webpack://cryptoPro/./api/getCertificates.ts","webpack://cryptoPro/./api/getContainerCertificates.ts","webpack://cryptoPro/./api/getCspVersion.ts","webpack://cryptoPro/./api/getPluginVersion.ts","webpack://cryptoPro/./api/getSystemInfo.ts","webpack://cryptoPro/./api/getUserCertificates.ts","webpack://cryptoPro/./api/index.ts","webpack://cryptoPro/./api/isValidSystemSetup.ts","webpack://cryptoPro/./constants/cades-constants.ts","webpack://cryptoPro/./constants/index.ts","webpack://cryptoPro/./constants/issuer-tags-translations.ts","webpack://cryptoPro/./constants/oids-dictionary.ts","webpack://cryptoPro/./constants/subject-tags-translations.ts","webpack://cryptoPro/./crypto-pro-js-m.ts","webpack://cryptoPro/./helpers/_afterPluginsLoaded.ts","webpack://cryptoPro/./helpers/_extractCommonName.ts","webpack://cryptoPro/./helpers/_extractMeaningfulErrorMessage.ts","webpack://cryptoPro/./helpers/_generateCadesFn.ts","webpack://cryptoPro/./helpers/_getCadesCert.ts","webpack://cryptoPro/./helpers/_getCadesContainerCert.ts","webpack://cryptoPro/./helpers/_getCadesUserCert.ts","webpack://cryptoPro/./helpers/_getDateObj.ts","webpack://cryptoPro/./helpers/_isSupportedCSPVersion.ts","webpack://cryptoPro/./helpers/_isSupportedCadesVersion.ts","webpack://cryptoPro/./helpers/_parseCertInfo.ts","webpack://cryptoPro/./helpers/getSignType.ts","webpack://cryptoPro/./vendor/cadesplugin_api.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,qDAAW;AAChC,cAAc,mBAAO,CAAC,iDAAS;AAC/B,cAAc,mBAAO,CAAC,qEAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5vDA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;;;;;ACpFA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA,oFAA6E;AAC7E,4HAAqE;AACrE,6JAA2F;AAC3F,mHAAiH;AACjH,0GAAyD;AACzD,oGAAqD;AACrD,oGAA+D;AAE/D;;;;;;;GAOG;AACU,4BAAoB,GAAG,yCAAmB,CACrD,CAAO,UAAkB,EAAE,aAAmC,EAAE,WAAqB,OAAO,EAAmB,EAAE;IAC/G,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAC/B,MAAM,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CA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C,iBAAiB,SAAS,QAAQ,YAAY,aAAa;AACrG,mFAAmF,iBAAiB,mBAAmB,uBAAuB,uBAAuB,cAAc,mBAAmB,YAAY;AAClN,0EAA0E,iBAAiB,yBAAyB,WAAW;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","file":"crypto-pro-js-m.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cryptoPro\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cryptoPro\"] = factory();\n\telse\n\t\troot[\"cryptoPro\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./crypto-pro-js-m.ts\");\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const addAttachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, signedMessage: string | ArrayBuffer, signType: SignType = 'PKCS7'): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addAttachedSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let messageBase64;\n\n try {\n messageBase64 = Buffer.from(signedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, signTypeConst));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const addDetachedSignature = _afterPluginsLoaded(\n async (\n thumbprint: string,\n signedMessage: string | ArrayBuffer,\n messageHash: string,\n signType: SignType = 'PKCS7',\n ): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyHash(cadesHashedData, signedMessage, signTypeConst));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { ISSUER_TAGS_TRANSLATIONS, SUBJECT_TAGS_TRANSLATIONS } from '../../constants';\nimport { TagTranslation } from '../../helpers/_parseCertInfo';\nimport { exportBase64 } from './exportBase64';\nimport { getAlgorithm } from './getAlgorithm';\nimport { getCadesProp } from './getCadesProp';\nimport { getDecodedExtendedKeyUsage, ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';\nimport { getExtendedKeyUsage } from './getExtendedKeyUsage';\nimport { getInfo } from './getInfo';\nimport { hasExtendedKeyUsage } from './hasExtendedKeyUsage';\nimport { isValid } from './isValid';\n\nexport type CadesCertificate = any;\n\nexport class Certificate {\n constructor(\n public _cadesCertificate: CadesCertificate,\n public name: string,\n public issuerName: string,\n public subjectName: string,\n public thumbprint: string,\n public validFrom: string,\n public validTo: string,\n ) {}\n\n public getOwnerInfo(): Promise {\n return getInfo.call(this, SUBJECT_TAGS_TRANSLATIONS, 'SubjectName');\n }\n\n public getIssuerInfo(): Promise {\n return getInfo.call(this, ISSUER_TAGS_TRANSLATIONS, 'IssuerName');\n }\n\n public getExtendedKeyUsage(): Promise {\n return getExtendedKeyUsage.call(this);\n }\n\n public getDecodedExtendedKeyUsage(): Promise {\n return getDecodedExtendedKeyUsage.call(this);\n }\n\n public getAlgorithm(): Promise {\n return getAlgorithm.call(this);\n }\n\n public getCadesProp(propName): Promise {\n return getCadesProp.call(this, propName);\n }\n\n public isValid(): Promise {\n return isValid.call(this);\n }\n\n public exportBase64(): Promise {\n return exportBase64.call(this);\n }\n\n public hasExtendedKeyUsage(oids): Promise {\n return hasExtendedKeyUsage.call(this, oids);\n }\n}\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Экспортирует сертификат в формате base64\n *\n * @returns сертификат в формате base64\n */\nexport const exportBase64 = _afterPluginsLoaded(function (): string {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function exportBase64(): string {\n let base64: string;\n\n try {\n base64 = __cadesAsyncToken__ + cadesCertificate.Export(0);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при экспорте сертификата');\n }\n\n return base64;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\ninterface AlgorithmInfo {\n algorithm: string;\n oid: string;\n}\n\n/**\n * Возвращает информацию об алгоритме сертификата\n *\n * @returns информацию об алгоритме и его OID'е\n */\nexport const getAlgorithm = _afterPluginsLoaded(function (): AlgorithmInfo {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getAlgorithm(): AlgorithmInfo {\n const algorithmInfo: AlgorithmInfo = {\n algorithm: null,\n oid: null,\n };\n let cadesPublicKey;\n\n try {\n cadesPublicKey = __cadesAsyncToken__ + cadesCertificate.PublicKey();\n cadesPublicKey = __cadesAsyncToken__ + cadesPublicKey.Algorithm;\n algorithmInfo.algorithm = __cadesAsyncToken__ + cadesPublicKey.FriendlyName;\n algorithmInfo.oid = __cadesAsyncToken__ + cadesPublicKey.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении алгоритма');\n }\n\n return algorithmInfo;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает указанное внутренее свойство у сертификата в формате Cades\n *\n * @param propName = наименование свойства\n * @returns значение запрошенного свойства\n */\nexport const getCadesProp = _afterPluginsLoaded(function (propName: string): any {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getCadesProp() {\n let propertyValue;\n\n try {\n propertyValue = __cadesAsyncToken__ + cadesCertificate[propName];\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при обращении к свойству сертификата');\n }\n\n return propertyValue;\n }),\n );\n});\n","import { OIDS_DICTIONARY } from '../../constants';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\nexport interface ExtendedKeysTranslations {\n [key: string]: string | null;\n}\n\n/**\n * Возвращает расшифрованные ОИД'ы сертификата\n *\n * @returns словарь расшифрованных ОИД'ов\n */\nexport const getDecodedExtendedKeyUsage = _afterPluginsLoaded(async function (): Promise {\n const certificateOids = await (this as Certificate).getExtendedKeyUsage();\n\n return certificateOids.reduce(\n (decodedOids, oidCode) => ({\n ...decodedOids,\n [oidCode]: OIDS_DICTIONARY[oidCode] || null,\n }),\n {},\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает ОИД'ы сертификата\n *\n * @returns список ОИД'ов\n */\nexport const getExtendedKeyUsage = _afterPluginsLoaded(function (): string[] {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getExtendedKeyUsage(): string[] {\n const OIDS: string[] = [];\n let count: any;\n\n try {\n count = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n count = __cadesAsyncToken__ + count.EKUs;\n count = __cadesAsyncToken__ + count.Count;\n\n if (count > 0) {\n while (count > 0) {\n let cadesExtendedKeyUsage;\n\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.EKUs;\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.Item(count);\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.OID;\n\n OIDS.push(cadesExtendedKeyUsage);\n\n count--;\n }\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || \"Ошибка при получении ОИД'ов\");\n }\n\n return OIDS;\n }),\n );\n});\n","import { TagsTranslations } from '../../constants/tags-translations';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { _parseCertInfo, TagTranslation } from '../../helpers/_parseCertInfo';\nimport { getCadesProp } from './getCadesProp';\n\n/**\n * Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам\n *\n * @param tags = словарь\n * @param entitiesPath = путь к разбираемой сущности\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const getInfo = _afterPluginsLoaded(async function (\n tags: TagsTranslations[],\n entitiesPath: string,\n): Promise {\n let entities: string;\n\n try {\n entities = await getCadesProp.call(this, entitiesPath);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при извлечении информации из сертификата');\n }\n\n return _parseCertInfo(tags, entities);\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет наличие ОИД'а (ОИД'ов) у сертификата\n *\n * @param oids - ОИД'ы для проверки\n * @returns флаг наличия ОИД'ов у сертификата\n */\nexport const hasExtendedKeyUsage = _afterPluginsLoaded(async function (oids: string | string[]): Promise {\n const certOids = await (this as Certificate).getExtendedKeyUsage();\n\n let result: boolean;\n\n if (Array.isArray(oids)) {\n result = oids.every((oidToCheck) => certOids.some((certOid) => certOid === oidToCheck));\n } else {\n result = certOids.some((certOid) => certOid === oids);\n }\n\n return result;\n});\n","export * from './certificate';\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет действительность сертификата\n *\n * @returns флаг валидности\n */\nexport const isValid = _afterPluginsLoaded(function (): boolean {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function isValid() {\n let isValid;\n\n try {\n isValid = __cadesAsyncToken__ + cadesCertificate.IsValid();\n isValid = __cadesAsyncToken__ + isValid.Result;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при проверке сертификата');\n }\n\n return Boolean(isValid);\n }),\n );\n});\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Создает присоединенную подпись сообщения по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param message - подписываемое сообщение\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\nexport const createAttachedSignature = _afterPluginsLoaded(\n async (\n thumbprint: string,\n unencryptedMessage: string | ArrayBuffer,\n signType: SignType = 'PKCS7',\n ): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createAttachedSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let messageBase64;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\nimport { SignType, getSignType } from '../helpers/getSignType';\n\n/**\n * Создает отсоединенную подпись хеша по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'\n * @returns подпись в формате signType\n */\n\nexport const createDetachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, messageHash: string, signType: SignType = 'PKCS7'): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n\n const signTypeConst = getSignType(cadesplugin, signType);\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedData.SignHash(cadesHashedData, cadesSigner, signTypeConst);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит\n * https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B8%D0%B1%D0%BE%D0%B3_(%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F)\n *\n * @param unencryptedMessage - сообщение для хеширования\n *\n * @returns хеш\n */\nexport const createHash = _afterPluginsLoaded(\n async (unencryptedMessage: string | ArrayBuffer): Promise => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function createHash(): string {\n const cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n let messageBase64;\n let hash;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesHashedData.Hash(messageBase64));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации хэширования');\n }\n\n try {\n hash = __cadesAsyncToken__ + cadesHashedData.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при создании хэша');\n }\n\n return hash;\n }),\n );\n },\n);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\n\n/**\n * Создает XML подпись для документа в формате XML\n *\n * @param thumbprint - отпечаток сертификата\n * @param unencryptedMessage - подписываемое сообщение в формате XML\n * @returns подпись\n */\nexport const createXMLSignature = _afterPluginsLoaded(\n async (thumbprint: string, unencryptedMessage: string): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createXMLSignature(): string {\n let cadesSigner;\n let cadesSignedXML;\n\n try {\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n cadesSignedXML = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.SignedXML');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n try {\n const signatureMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n const digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n void (__cadesAsyncToken__ + cadesSigner.propset_CheckCertificate(true));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_Content(unencryptedMessage));\n void (\n __cadesAsyncToken__ +\n cadesSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED)\n );\n void (__cadesAsyncToken__ + cadesSignedXML.propset_SignatureMethod(signatureMethod));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_DigestMethod(digestMethod));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n\n try {\n signature = __cadesAsyncToken__ + cadesSignedXML.Sign(cadesSigner);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getAllUserCertificates } from './getAllUserCertificates';\nimport { getAllContainerCertificates } from './getAllContainerCertificates';\n\nlet certificatesCache: Certificate[];\n/**\n * Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе, без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllCertificates = _afterPluginsLoaded(\n async (resetCache: boolean = false): Promise => {\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n let availableCertificates: Certificate[];\n\n try {\n availableCertificates = await getAllUserCertificates(resetCache);\n } catch (error) {\n console.error(error);\n\n availableCertificates = [];\n }\n\n try {\n const containerAllCertificates: Certificate[] = await getAllContainerCertificates(resetCache);\n\n if (!availableCertificates) {\n availableCertificates = containerAllCertificates;\n } else {\n let containerAllCertificatesCount = containerAllCertificates.length - 1;\n let foundAvailableCertificate;\n\n while (containerAllCertificatesCount) {\n foundAvailableCertificate = availableCertificates.find(\n (cert) => cert.thumbprint === containerAllCertificates[containerAllCertificatesCount].thumbprint,\n );\n\n if (!foundAvailableCertificate) {\n availableCertificates.push(containerAllCertificates[containerAllCertificatesCount]);\n }\n\n containerAllCertificatesCount--;\n }\n }\n } catch (error) {\n console.error(error);\n }\n\n if (!availableCertificates) {\n throw new Error('Нет доступных сертификатов');\n }\n\n certificatesCache = availableCertificates;\n\n return certificatesCache;\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllContainerCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getAllContainerCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { CadesCertificate, Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getAllUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getCertificates } from './getCertificates';\nimport { getAllCertificates } from './getAllCertificates';\n\n/**\n * Возвращает сертификат по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @param validOnly - проверять сертификаты по дате и наличию приватного ключа\n * @returns сертификат\n */\nexport const getCertificate = _afterPluginsLoaded(\n async (thumbprint: string, validOnly: boolean = true): Promise => {\n if (!thumbprint) {\n throw new Error('Отпечаток не указан');\n }\n\n let availableCertificates: Certificate[];\n\n if (validOnly) {\n availableCertificates = await getCertificates();\n } else {\n availableCertificates = await getAllCertificates();\n }\n\n const foundCertificate: Certificate = availableCertificates.find((cert) => cert.thumbprint === thumbprint);\n\n if (!foundCertificate) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\n }\n\n return foundCertificate;\n },\n);\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getUserCertificates } from './getUserCertificates';\nimport { getContainerCertificates } from './getContainerCertificates';\nimport { getAllUserCertificates } from './getAllUserCertificates';\nimport { getAllContainerCertificates } from './getAllContainerCertificates';\n\nlet certificatesCache: Certificate[];\n/**\n * Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getCertificates = _afterPluginsLoaded(\n async (resetCache: boolean = false): Promise => {\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n let availableCertificates: Certificate[];\n\n try {\n availableCertificates = await getUserCertificates(resetCache);\n } catch (error) {\n console.error(error);\n\n availableCertificates = [];\n }\n\n try {\n const containerCertificates: Certificate[] = await getContainerCertificates(resetCache);\n\n if (!availableCertificates) {\n availableCertificates = containerCertificates;\n } else {\n let containerCertificatesCount = containerCertificates.length - 1;\n let foundAvailableCertificate;\n\n while (containerCertificatesCount) {\n foundAvailableCertificate = availableCertificates.find(\n (cert) => cert.thumbprint === containerCertificates[containerCertificatesCount].thumbprint,\n );\n\n if (!foundAvailableCertificate) {\n availableCertificates.push(containerCertificates[containerCertificatesCount]);\n }\n\n containerCertificatesCount--;\n }\n }\n } catch (error) {\n console.error(error);\n }\n\n if (!availableCertificates) {\n throw new Error('Нет доступных сертификатов');\n }\n\n certificatesCache = availableCertificates;\n\n return certificatesCache;\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getContainerCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getContainerCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP\n */\nexport const getCspVersion = _afterPluginsLoaded((): string => {\n let cspVersion = null;\n\n return eval(\n _generateCadesFn(function getCspVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n cspVersion = __cadesAsyncToken__ + cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении версии системы');\n }\n\n return cspVersion;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о плагине\n */\nexport const getPluginVersion = _afterPluginsLoaded((): string => {\n let cadesVersion = null;\n\n return eval(\n _generateCadesFn(function getPluginVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n\n if (!cadesVersion) {\n cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n cadesVersion = __cadesAsyncToken__ + cadesVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о плагине');\n }\n\n return cadesVersion;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nexport interface SystemInfo {\n cadesVersion: string;\n cspVersion: string;\n}\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP и плагине\n */\nexport const getSystemInfo = _afterPluginsLoaded(\n (): SystemInfo => {\n const sysInfo = {\n cadesVersion: null,\n cspVersion: null,\n };\n\n return eval(\n _generateCadesFn(function getSystemInfo(): SystemInfo {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n sysInfo.cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n if (!sysInfo.cadesVersion) {\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + sysInfo.cadesVersion.toString();\n sysInfo.cspVersion = __cadesAsyncToken__ + sysInfo.cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о системе');\n }\n\n return sysInfo;\n }),\n );\n },\n);\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","export * from './getCertificate';\nexport * from './getUserCertificates';\nexport * from './getAllUserCertificates';\nexport * from './getContainerCertificates';\nexport * from './getAllContainerCertificates';\nexport * from './getCertificates';\nexport * from './getAllCertificates';\nexport * from './getSystemInfo';\nexport * from './isValidSystemSetup';\nexport * from './createXMLSignature';\nexport * from './createDetachedSignature';\nexport * from './addDetachedSignature';\nexport * from './createAttachedSignature';\nexport * from './addAttachedSignature';\nexport * from './createHash';\nexport * from './certificate';\nexport * from './getCspVersion';\nexport * from './getPluginVersion';\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { _isSupportedCadesVersion } from '../helpers/_isSupportedCadesVersion';\nimport { _isSupportedCSPVersion } from '../helpers/_isSupportedCSPVersion';\nimport { getSystemInfo, SystemInfo } from './getSystemInfo';\n\n/**\n * Проверяет корректность настроек ЭП на машине\n *\n * @returns флаг корректности настроек\n */\nexport const isValidSystemSetup = _afterPluginsLoaded(\n async (): Promise => {\n let systemInfo: SystemInfo;\n\n try {\n systemInfo = await getSystemInfo();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Настройки ЭП на данной машине не верны');\n }\n\n if (!_isSupportedCadesVersion(systemInfo.cadesVersion)) {\n throw new Error('Не поддерживаемая версия плагина');\n }\n\n if (!_isSupportedCSPVersion(systemInfo.cspVersion)) {\n throw new Error('Не поддерживаемая версия CSP');\n }\n\n return true;\n },\n);\n","export const CADESCOM_ATTRIBUTE_OTHER = -1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CADESCOM_AllowNoOutstandingRequest = 1;\nexport const CADESCOM_AllowNone = 0;\nexport const CADESCOM_AllowUntrustedCertificate = 2;\nexport const CADESCOM_AllowUntrustedRoot = 4;\nexport const CADESCOM_BASE64_TO_BINARY = 0x01;\nexport const CADESCOM_CADES_BES = 1;\nexport const CADESCOM_CADES_DEFAULT = 0;\nexport const CADESCOM_CADES_T = 5;\nexport const CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\nexport const CADESCOM_CONTAINER_STORE = 100;\nexport const CADESCOM_CURRENT_USER_STORE = 2;\nexport const CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\nexport const CADESCOM_DISPLAY_DATA_CONTENT = 1;\nexport const CADESCOM_DISPLAY_DATA_NONE = 0;\nexport const CADESCOM_ENCODE_ANY = -1;\nexport const CADESCOM_ENCODE_BASE64 = 0;\nexport const CADESCOM_ENCODE_BINARY = 1;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\nexport const CADESCOM_HASH_ALGORITHM_MD2 = 1;\nexport const CADESCOM_HASH_ALGORITHM_MD4 = 2;\nexport const CADESCOM_HASH_ALGORITHM_MD5 = 3;\nexport const CADESCOM_HASH_ALGORITHM_SHA1 = 0;\nexport const CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\nexport const CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\nexport const CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\nexport const CADESCOM_LOCAL_MACHINE_STORE = 1;\nexport const CADESCOM_PKCS7_TYPE = 65535;\nexport const CADESCOM_STRING_TO_UCS2LE = 0x00;\nexport const CADESCOM_SkipInstallToStore = 268435456;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\nexport const CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\nexport const CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\nexport const CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\nexport const CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\nexport const CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\nexport const CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\nexport const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\nexport const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\nexport const CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\nexport const CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\nexport const CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\nexport const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\nexport const CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\nexport const CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\nexport const CAPICOM_CURRENT_USER_STORE = 2;\nexport const CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\nexport const CAPICOM_EKU_CLIENT_AUTH = 2;\nexport const CAPICOM_EKU_OTHER = 0;\nexport const CAPICOM_EKU_SMARTCARD_LOGON = 5;\nexport const CAPICOM_LOCAL_MACHINE_STORE = 1;\nexport const CAPICOM_MEMORY_STORE = 0;\nexport const CAPICOM_MY_STORE = 'My';\nexport const CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\nexport const CAPICOM_OID_OTHER = 0;\nexport const CAPICOM_PROPID_ACCESS_STATE = 14;\nexport const CAPICOM_PROPID_ARCHIVED = 19;\nexport const CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;\nexport const CAPICOM_PROPID_AUTO_ENROLL = 21;\nexport const CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;\nexport const CAPICOM_PROPID_CTL_USAGE = 9;\nexport const CAPICOM_PROPID_DATE_STAMP = 27;\nexport const CAPICOM_PROPID_DESCRIPTION = 13;\nexport const CAPICOM_PROPID_EFS = 17;\nexport const CAPICOM_PROPID_ENHKEY_USAGE = 9;\nexport const CAPICOM_PROPID_ENROLLMENT = 26;\nexport const CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;\nexport const CAPICOM_PROPID_FIRST_RESERVED = 66;\nexport const CAPICOM_PROPID_FIRST_USER = 0x00008000;\nexport const CAPICOM_PROPID_FORTEZZA_DATA = 18;\nexport const CAPICOM_PROPID_FRIENDLY_NAME = 11;\nexport const CAPICOM_PROPID_HASH_PROP = 3;\nexport const CAPICOM_PROPID_IE30_RESERVED = 7;\nexport const CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;\nexport const CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;\nexport const CAPICOM_PROPID_KEY_CONTEXT = 5;\nexport const CAPICOM_PROPID_KEY_IDENTIFIER = 20;\nexport const CAPICOM_PROPID_KEY_PROV_HANDLE = 1;\nexport const CAPICOM_PROPID_KEY_PROV_INFO = 2;\nexport const CAPICOM_PROPID_KEY_SPEC = 6;\nexport const CAPICOM_PROPID_LAST_RESERVED = 0x00007fff;\nexport const CAPICOM_PROPID_LAST_USER = 0x0000ffff;\nexport const CAPICOM_PROPID_MD5_HASH = 4;\nexport const CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;\nexport const CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;\nexport const CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;\nexport const CAPICOM_PROPID_PVK_FILE = 12;\nexport const CAPICOM_PROPID_RENEWAL = 64;\nexport const CAPICOM_PROPID_SHA1_HASH = 3;\nexport const CAPICOM_PROPID_SIGNATURE_HASH = 15;\nexport const CAPICOM_PROPID_SMART_CARD_DATA = 16;\nexport const CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;\nexport const CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;\nexport const CAPICOM_PROPID_UNKNOWN = 0;\nexport const CAPICOM_SMART_CARD_USER_STORE = 4;\nexport const CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;\nexport const CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\nexport const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\nexport const CAPICOM_STORE_OPEN_READ_ONLY = 0;\nexport const CAPICOM_STORE_OPEN_READ_WRITE = 1;\nexport const CHECK_NONE = 0;\nexport const CHECK_OFFLINE_REVOCATION_STATUS = 16;\nexport const CHECK_ONLINE_REVOCATION_STATUS = 8;\nexport const CHECK_SIGNATURE_VALIDITY = 4;\nexport const CHECK_TIME_VALIDITY = 2;\nexport const CHECK_TRUSTED_ROOT = 1;\nexport const LOG_LEVEL_DEBUG = 4;\nexport const LOG_LEVEL_ERROR = 1;\nexport const LOG_LEVEL_INFO = 2;\nexport const TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;\nexport const TRUST_CTL_IS_NOT_TIME_VALID = 131072;\nexport const TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;\nexport const TRUST_IS_CYCLIC = 128;\nexport const TRUST_IS_NOT_SIGNATURE_VALID = 8;\nexport const TRUST_IS_NOT_TIME_NESTED = 2;\nexport const TRUST_IS_NOT_TIME_VALID = 1;\nexport const TRUST_IS_NOT_VALID_FOR_USAGE = 16;\nexport const TRUST_IS_PARTIAL_CHAIN = 65536;\nexport const TRUST_IS_REVOKED = 4;\nexport const TRUST_IS_UNTRUSTED_ROOT = 32;\nexport const TRUST_REVOCATION_STATUS_UNKNOWN = 64;\nexport const XmlDsigGost3410Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\nexport const XmlDsigGost3410UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411';\nexport const XmlDsigGost3411Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\nexport const XmlDsigGost3411UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr3411';\n","export * from './cades-constants';\nexport * from './issuer-tags-translations';\nexport * from './oids-dictionary';\nexport * from './subject-tags-translations';\n","import { TagsTranslations } from './tags-translations';\n\nexport const ISSUER_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UN', 'UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN', 'commonName'], translation: 'Удостоверяющий центр' },\n { possibleNames: ['C', 'countryName'], translation: 'Страна' },\n { possibleNames: ['S', 'ST', 'stateOrProvinceName'], translation: 'Регион' },\n { possibleNames: ['STREET', 'streetAddress'], translation: 'Адрес' },\n { possibleNames: ['O', 'organizationName'], translation: 'Компания' },\n { possibleNames: ['OU', 'organizationalUnitName'], translation: 'Тип' },\n { possibleNames: ['T', 'TITLE'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'ИННФЛ', 'ИНН ФЛ', 'INN', 'ИНН физического лица'], translation: 'ИНН' },\n { possibleNames: ['ИННЮЛ', 'ИНН ЮЛ', 'INN LE', 'INNLE', 'ИНН организации'], translation: 'ИНН организации' },\n { possibleNames: ['E', 'email', 'emailAddress', 'pkcs9email'], translation: 'Email' },\n { possibleNames: ['L', 'localityName'], translation: 'Город' },\n];\n","export const OIDS_DICTIONARY = {\n '1.2.643.2.2.34.6': 'Пользователь Центра Регистрации',\n '1.2.643.2.39.1.1': 'Использование в программных продуктах системы \"1С:Предприятие 8\"',\n '1.2.643.3.131.1.1': 'ИНН',\n '1.2.643.100.4': 'ИНН организации',\n '1.2.643.100.1': 'ОГРН',\n '1.2.643.100.5': 'ОГРНИП',\n '1.2.643.100.3': 'СНИЛС',\n '1.2.643.3.141.1.1': 'РНС ФСС',\n '1.2.643.3.141.1.2': 'КП ФСС',\n '1.2.643.3.2.100.65.13.11': 'Использование в системе АИС \"Госзакупки\" Сахалинской области.',\n '1.2.643.3.8.100.1': 'Сертификат типа \"ekey-ГОСТ\"',\n '1.2.643.3.8.100.1.1': 'Общее использование в системах ИОК без права заверения финансовых документов',\n '1.2.643.3.8.100.1.10':\n 'Для участия в электронных торгах и подписания государственного контракта в информационных системах Тендерного комитета города Москвы уполномоченными лицами участников размещения государственного заказа города Москвы',\n '1.2.643.3.8.100.1.11':\n 'Подписание электронных документов в автоматизированной информационной системе размещения государственного и муниципального заказа Саратовской области',\n '1.2.643.3.8.100.1.12': 'Использование в системе государственного заказа Иркутской области',\n '1.2.643.3.8.100.1.13':\n 'Использование в электронной торговой площадке агентства государственного заказа Красноярского края',\n '1.2.643.3.8.100.1.14': 'Использование в электронной торговой площадке \"Тендер\"',\n '1.2.643.3.8.100.1.2': 'Передача отчетности по ТКС',\n '1.2.643.3.8.100.1.3': 'Оформление взаимных обязательств, соглашений, договоров, актов и т.п.',\n '1.2.643.3.8.100.1.4': 'Внутрикорпоративный документооборот',\n '1.2.643.3.8.100.1.5': 'Использование в системах электронной торговли',\n '1.2.643.3.8.100.1.6': 'Использование в торгово-закупочной системе \"ЭЛЕКТРА\"',\n '1.2.643.3.8.100.1.7': 'Использование в системе Портал государственных закупок Ставропольского края.',\n '1.2.643.3.8.100.1.8': 'Использование в Единой системе электронной торговли B2B-Center и B2G.',\n '1.2.643.3.8.100.1.9':\n 'Для участия в электронных торгах и подписания государственного контракта в электронной площадке ОАО «ЕЭТП» уполномоченными лицами участников размещения государственного или муниципального заказа',\n '1.2.643.5.1.24.2.1.3':\n 'Формирование документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.1.3.1':\n 'Формирование кадастровым инженером документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.2.2': 'Формирование документов как результата оказания услуги со стороны органов регистрации прав',\n '1.2.643.5.1.24.2.2.3':\n 'Формирование документов для получения государственных услуг в сфере государственной регистрации прав на недвижимое имущество и сделок с ним со стороны заявителя',\n '1.2.643.6.2.1.7.1':\n 'Использование единоличным исполнительным органом юридического лица или уполномоченными представителями юридического лица в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских и иных прав и обязанностей в сфере негосударственного пенсионного обеспечения, негосударственного пенсионного страхования, в сфере деятельности паевых инвестиционных фондов, акционерных инвестиционных фондов, профессиональных участников рынка ценных бумаг, а также связанной с обслуживанием указанной деятельности услуг кредитных и иных организаций',\n '1.2.643.6.2.1.7.2':\n 'Использование физическим лицом в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских прав и обязанностей в отношении инвестиционных паев паевых инвестиционных фондов, в том числе отношения, связанные с учетом и/или фиксацией прав на инвестиционные паи паевых инвестиционных фондов',\n '1.2.643.6.3':\n 'Использование в электронных торговых системах и в программном обеспечении, связанным с обменом электронных сообщений',\n '1.2.643.6.3.1.1': 'Использование на электронных площадок отобранных для проведения аукционах в электронной форме',\n '1.2.643.6.3.1.2.1': 'Тип участника - Юридическое лицо',\n '1.2.643.6.3.1.2.2': 'Тип участника - Физическое лицо',\n '1.2.643.6.3.1.2.3': 'Тип участника - Индивидуальный предприниматель',\n '1.2.643.6.3.1.3.1': 'Участник размещения заказа',\n '1.2.643.6.3.1.4.1': 'Администратор организации',\n '1.2.643.6.3.1.4.2': 'Уполномоченный специалист',\n '1.2.643.6.3.1.4.3': 'Специалист с правом подписи контракта',\n '1.2.840.113549.1.9.2': 'Неструктурированное имя',\n '1.3.6.1.4.1.24138.1.1.8.1': 'Обеспечение юридической значимости в Системе \"Электронная Торговая Площадка\"',\n '1.3.6.1.4.1.29919.21': 'Использование в системе Портал государственных закупок Ростовской области \"Рефери\".',\n '1.3.6.1.5.5.7.3.2': 'Проверка подлинности клиента',\n '1.3.6.1.5.5.7.3.4': 'Защищенная электронная почта',\n '1.3.643.3.8.100.15': 'Использование в ЭТП \"uTender\"',\n};\n","import { TagsTranslations } from './tags-translations';\n\nexport const SUBJECT_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UN', 'UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN', 'commonName'], translation: 'Владелец' },\n { possibleNames: ['SN', 'surname'], translation: 'Фамилия' },\n { possibleNames: ['G', 'givenName', 'gn'], translation: 'Имя Отчество' },\n { possibleNames: ['C', 'countryName'], translation: 'Страна' },\n { possibleNames: ['S', 'ST', 'stateOrProvinceName'], translation: 'Регион' },\n { possibleNames: ['STREET', 'streetAddress'], translation: 'Адрес' },\n { possibleNames: ['O', 'organizationName'], translation: 'Компания' },\n { possibleNames: ['OU', 'organizationalUnitName'], translation: 'Отдел/подразделение' },\n { possibleNames: ['T', 'TITLE'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'ИННФЛ', 'ИНН ФЛ', 'INN', 'ИНН физического лица'], translation: 'ИНН' },\n { possibleNames: ['ИННЮЛ', 'ИНН ЮЛ', 'INN LE', 'INNLE', 'ИНН организации'], translation: 'ИНН организации' },\n { possibleNames: ['E', 'email', 'emailAddress', 'pkcs9email'], translation: 'Email' },\n { possibleNames: ['L', 'localityName'], translation: 'Город' },\n];\n","export * from './api';\nexport * from './helpers';\n","import { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\n\ntype Unpromisify = T extends Promise ? R : T;\n\nlet isSetLogLevel = false;\nlet isPluginLoaded = false;\n\nexport const _afterPluginsLoaded = any>(\n fn: T,\n): ((...args: Parameters) => Promise>>) => {\n const canPromise = Boolean(window.Promise);\n\n return async function (...args: Parameters): Promise>> {\n if (!isPluginLoaded) {\n try {\n require('../vendor/cadesplugin_api');\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при подключении модуля для работы с Cades plugin',\n );\n }\n\n isPluginLoaded = true;\n }\n\n const { cadesplugin } = window;\n\n if (!canPromise) {\n throw new Error('Необходим полифилл для Promise');\n }\n\n if (!cadesplugin) {\n throw new Error('Не подключен модуль для работы с Cades plugin');\n }\n\n if (!isSetLogLevel) {\n cadesplugin.set_log_level(cadesplugin.LOG_LEVEL_ERROR);\n\n isSetLogLevel = true;\n }\n\n try {\n await cadesplugin;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации модуля для работы с Cades plugin',\n );\n }\n\n return await fn.apply(this, args);\n };\n};\n","export const _extractCommonName = (subjectName: string): string | undefined =>\n subjectName.match(/CN=\"?(.+?)\"?(?:,|$)/)?.[1]?.replace(/\"{2}/g, '\"');\n","export const _extractMeaningfulErrorMessage = (error: Error): string | null => {\n let errorContainer = window.cadesplugin?.getLastError && window.cadesplugin.getLastError(error);\n\n if (!errorContainer?.message) {\n if (!error.message) {\n return null;\n }\n\n errorContainer = error;\n }\n\n const containsRussianLetters = /[а-яА-Я]/.test(errorContainer.message);\n\n if (!containsRussianLetters) {\n return null;\n }\n\n const searchResult = errorContainer.message.match(/^(.*?)(?:(?:\\.?\\s?\\(?(0x[0-9a-zA-Z]{1,8})\\)?)|(?:\\.?$))/);\n\n return searchResult ? searchResult[1] + (searchResult[2] ? ' (Код ошибки: ' + searchResult[2] + ')' : '') : null;\n};\n","// синтетические переменные, которые подменяются в рантайме\nexport const __cadesAsyncToken__ = {};\nexport const __createCadesPluginObject__ = (...args): any => ({});\n\nfunction getGeneratorConstructor(): GeneratorFunction {\n return new Function('', 'return Object.getPrototypeOf(function*(){}).constructor')();\n}\n\nexport const _generateCadesFn = (callback: Function): string => {\n const { cadesplugin } = window;\n const cadesGeneratorsAPI = Boolean(cadesplugin.CreateObjectAsync);\n const callbackName = callback.name || 'dynamicFn';\n const callbackLiteral = String(callback);\n const callbackArguments = callbackLiteral.match(/^function[\\s\\w]*?\\((.*?)\\)/)?.[1] || '';\n const callbackBody = callbackLiteral.replace(/^.*?{([\\s\\S]*?)}$/, '$1');\n let crossEnvCallbackLiteral = String(\n new (cadesGeneratorsAPI ? getGeneratorConstructor() : Function)(callbackArguments, callbackBody),\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__createCadesPluginObject__(\\([\\s\\S]*?\\))/gm,\n `cadesplugin.CreateObject${cadesGeneratorsAPI ? 'Async' : ''}$1`,\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__cadesAsyncToken__\\s*?\\+\\s*?\\b/gm,\n cadesGeneratorsAPI ? 'yield ' : '',\n );\n\n if (!cadesGeneratorsAPI) {\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/propset_(.*?)\\((.*?)\\)/gm, '$1 = $2');\n }\n\n return [\n cadesGeneratorsAPI ? `cadesplugin.async_spawn(${crossEnvCallbackLiteral});` : `(${crossEnvCallbackLiteral})();`,\n `//# sourceURL=crypto-pro_${callbackName}.js`,\n ].join('');\n};\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _getCadesUserCert } from './_getCadesUserCert';\nimport { _getCadesContainerCert } from './_getCadesContainerCert';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesCert = _afterPluginsLoaded(\n async (thumbprint: string): Promise => {\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificate = await _getCadesUserCert(thumbprint);\n } catch (error) {\n console.log(error);\n\n cadesCertificate = await _getCadesContainerCert(thumbprint);\n }\n\n return cadesCertificate;\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку из хранилища закрытого ключа\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesContainerCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CADESCOM_CONTAINER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища закрытого ключа');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) ||\n 'Ошибка получения списка сертификатов из хранилища закрытого ключа',\n );\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов в хранилище закрытого ключа');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден в хранилище закрытого ключа`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата из хранилища закрытого ключа',\n );\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку из хранилища пользователя\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesUserCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища пользователя');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов из хранилища пользователя',\n );\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов в хранилище пользователя');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден в хранилище пользователя`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата из хранилища пользователя',\n );\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","/**\n * Возвращает объект даты, совместимый с Cades plugin'ом, зависящий от браузера.\n *\n * В IE необходимо использовать специфичный формат \"VT_DATE\"\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Microsoft_Extensions/Date.getVarDate\n */\nexport const _getDateObj = (dateObj): Date => (dateObj.getVarDate ? dateObj.getVarDate() : dateObj);\n","const oldestSupportedCSPVersion = 4.0;\n\nexport const _isSupportedCSPVersion = (version: string): boolean => {\n version = version.match(/\\d+?\\b(?:\\.\\d+)?/)?.[0];\n\n return Number(version) >= oldestSupportedCSPVersion;\n};\n","export const _isSupportedCadesVersion = (version: string): boolean => {\n const match = version.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n\n if (!match) {\n return false;\n }\n\n const [, major, minor, patch] = match;\n\n if (Number(major) < 2) {\n return false;\n }\n\n if (Number(major) === 2 && Number(patch) < 12438) {\n return false;\n }\n\n return true;\n};\n","import { OIDS_DICTIONARY } from '../constants';\nimport { TagsTranslations } from '../constants/tags-translations';\n\nexport interface TagTranslation {\n description: string;\n title: string;\n isTranslated: boolean;\n}\n\n/**\n * Парсит информацию из строки с информацией о сертификате\n *\n * @param tagsTranslations - словарь с расшифровками тэгов\n * @param rawInfo - данные для парсинга\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const _parseCertInfo = (tagsTranslations: TagsTranslations[], rawInfo: string): TagTranslation[] => {\n const extractedEntities: string[] = rawInfo.match(/([а-яА-Яa-zA-Z0-9\\s.]+)=(?:(\"[^\"]+?\")|(.+?))(?:,|$)/g);\n\n if (extractedEntities) {\n return extractedEntities.map((group) => {\n const segmentsMatch = group.trim().match(/^([а-яА-Яa-zA-Z0-9\\s.]+)=(.+?),?$/);\n let title = segmentsMatch?.[1];\n // Вырезаем лишние кавычки\n const description = segmentsMatch?.[2]?.replace(/^\"(.*)\"/, '$1')?.replace(/\"{2}/g, '\"');\n const oidIdentifierMatch = title?.match(/^OID\\.(.*)/);\n const oidIdentifier = oidIdentifierMatch?.[1];\n let isTranslated = false;\n\n // Если нашли в тайтле ОИД, пытаемся его расшифровать\n if (oidIdentifier) {\n const oidTranslation = OIDS_DICTIONARY[oidIdentifier];\n\n if (oidTranslation) {\n title = oidTranslation;\n isTranslated = true;\n }\n }\n\n const tagTranslation = tagsTranslations.find((tag) => tag.possibleNames.find((name) => name === title))\n ?.translation;\n\n if (tagTranslation) {\n title = tagTranslation;\n isTranslated = true;\n }\n\n return { description, title, isTranslated };\n });\n }\n};\n","export declare type SignType = 'CAdES BES' | 'CAdES-X Long Type 1' | 'CAdES T' | 'PKCS7';\n\nexport const getSignType = (cadesplugin: any, signType: SignType): any => {\n switch (signType) {\n case 'CAdES BES': {\n return cadesplugin.CADESCOM_CADES_BES;\n }\n case 'CAdES-X Long Type 1': {\n return cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1;\n }\n case 'CAdES T': {\n return cadesplugin.CADESCOM_CADES_T;\n }\n case 'PKCS7': {\n return cadesplugin.CADESCOM_PKCS7_TYPE;\n }\n }\n};\n","; (function () {\r\n //already loaded\r\n if (window.cadesplugin && window.cadesplugin.LOG_LEVEL_DEBUG) {\r\n return;\r\n }\r\n var pluginObject;\r\n var plugin_resolved = 0;\r\n var plugin_reject;\r\n var plugin_resolve;\r\n var isOpera = 0;\r\n var isFireFox = 0;\r\n var isSafari = 0;\r\n var isYandex = 0;\r\n var canPromise = !!window.Promise;\r\n var cadesplugin_loaded_event_recieved = false;\r\n var isFireFoxExtensionLoaded = false;\r\n var cadesplugin = {};\r\n\r\n if (canPromise) {\r\n cadesplugin = new window.Promise(function (resolve, reject) {\r\n plugin_resolve = resolve;\r\n plugin_reject = reject;\r\n });\r\n }\r\n\r\n function check_browser() {\r\n var ua = window.navigator.userAgent,\r\n tem,\r\n M = ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE', version: (tem[1] || '') };\r\n }\r\n if (M[1] === \"Chrome\") {\r\n tem = ua.match(/\\b(OPR|Edg|YaBrowser)\\/(\\d+)/);\r\n if (tem != null && (tem.length > 2)) {\r\n return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\r\n }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [window.navigator.appName, window.navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\r\n M.splice(1, 1, tem[1]);\r\n }\r\n return { name: M[0], version: M[1] };\r\n }\r\n\r\n var browserSpecs = check_browser();\r\n\r\n function cpcsp_console_log(level, msg) {\r\n //IE9 не может писать в консоль если не открыта вкладка developer tools\r\n if (typeof console === 'undefined') {\r\n return;\r\n }\r\n if (level <= cadesplugin.current_log_level) {\r\n if (level === cadesplugin.LOG_LEVEL_DEBUG) {\r\n console.log(\"DEBUG: %s\", msg);\r\n }\r\n if (level === cadesplugin.LOG_LEVEL_INFO) {\r\n console.info(\"INFO: %s\", msg);\r\n }\r\n if (level === cadesplugin.LOG_LEVEL_ERROR) {\r\n console.error(\"ERROR: %s\", msg);\r\n }\r\n }\r\n }\r\n\r\n function get_extension_version(callback) {\r\n window.postMessage(\"cadesplugin_extension_version_request\", \"*\");\r\n window.addEventListener(\"message\", function (event) {\r\n var resp_prefix = \"cadesplugin_extension_version_response:\";\r\n if (typeof (event.data) !== \"string\" || event.data.indexOf(resp_prefix) !== 0) {\r\n return;\r\n }\r\n var ext_version = event.data.substring(resp_prefix.length);\r\n callback(ext_version);\r\n }, false);\r\n }\r\n\r\n function get_extension_id(callback) {\r\n window.postMessage(\"cadesplugin_extension_id_request\", \"*\");\r\n window.addEventListener(\"message\", function (event) {\r\n var resp_prefix = \"cadesplugin_extension_id_response:\";\r\n if (typeof (event.data) !== \"string\" || event.data.indexOf(resp_prefix) !== 0) {\r\n return;\r\n }\r\n var ext_id = event.data.substring(resp_prefix.length);\r\n callback(ext_id);\r\n }, false);\r\n }\r\n\r\n function set_log_level(level) {\r\n if (!((level === cadesplugin.LOG_LEVEL_DEBUG) ||\r\n (level === cadesplugin.LOG_LEVEL_INFO) ||\r\n (level === cadesplugin.LOG_LEVEL_ERROR))) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"cadesplugin_api.js: Incorrect log_level: \" + level);\r\n return;\r\n }\r\n cadesplugin.current_log_level = level;\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = DEBUG\");\r\n }\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = INFO\");\r\n }\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = ERROR\");\r\n }\r\n if (isNativeMessageSupported()) {\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) {\r\n window.postMessage(\"set_log_level=debug\", \"*\");\r\n }\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) {\r\n window.postMessage(\"set_log_level=info\", \"*\");\r\n }\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) {\r\n window.postMessage(\"set_log_level=error\", \"*\");\r\n }\r\n }\r\n }\r\n\r\n function set_constantValues() {\r\n cadesplugin.CAPICOM_MEMORY_STORE = 0;\r\n cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_MEMORY_STORE = 0;\r\n cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_CONTAINER_STORE = 100;\r\n\r\n cadesplugin.CAPICOM_ROOT_STORE = \"Root\";\r\n cadesplugin.CAPICOM_CA_STORE = \"CA\";\r\n cadesplugin.CAPICOM_MY_STORE = \"My\";\r\n cadesplugin.CAPICOM_ADDRESSBOOK_STORE = \"AddressBook\";\r\n\r\n cadesplugin.CAPICOM_STORE_OPEN_READ_WRITE = 1;\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\r\n cadesplugin.CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\r\n\r\n cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010;\r\n cadesplugin.CADESCOM_XADES_BES = 0x00000020;\r\n cadesplugin.CADESCOM_XADES_T = 0x00000050;\r\n cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0;\r\n cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000;\r\n\r\n cadesplugin.XmlDsigGost3410UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr3411\";\r\n cadesplugin.XmlDsigGost3410Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411\";\r\n\r\n cadesplugin.XmlDsigGost3411Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3410Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3411Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512\";\r\n cadesplugin.XmlDsigGost3410Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512\";\r\n\r\n cadesplugin.CADESCOM_CADES_DEFAULT = 0;\r\n cadesplugin.CADESCOM_CADES_BES = 1;\r\n cadesplugin.CADESCOM_CADES_T = 0x5;\r\n cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\r\n cadesplugin.CADESCOM_CADES_A = 0xdd;\r\n cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff;\r\n\r\n cadesplugin.CADESCOM_ENCODE_BASE64 = 0;\r\n cadesplugin.CADESCOM_ENCODE_BINARY = 1;\r\n cadesplugin.CADESCOM_ENCODE_ANY = -1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_NONE = 0x100;\r\n\r\n cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\r\n cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\r\n\r\n cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\r\n\r\n cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9;\r\n\r\n cadesplugin.CAPICOM_OID_OTHER = 0;\r\n cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\r\n\r\n cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2;\r\n cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5;\r\n cadesplugin.CAPICOM_EKU_OTHER = 0;\r\n\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100;\r\n cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1;\r\n\r\n cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0;\r\n cadesplugin.CADESCOM_BASE64_TO_BINARY = 1;\r\n\r\n cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\r\n\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA = 35;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA_OMAC = 36;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK = 45;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK_OMAC = 46;\r\n\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\r\n\r\n cadesplugin.CADESCOM_CERT_INFO_ROLE = 100;\r\n cadesplugin.CADESCOM_ROLE_ROOT = \"ROOT\";\r\n cadesplugin.CADESCOM_ROLE_CA = \"CA\";\r\n cadesplugin.CADESCOM_ROLE_LEAF = \"LEAF\";\r\n\r\n cadesplugin.LOG_LEVEL_DEBUG = 4;\r\n cadesplugin.LOG_LEVEL_INFO = 2;\r\n cadesplugin.LOG_LEVEL_ERROR = 1;\r\n\r\n cadesplugin.CADESCOM_AllowNone = 0;\r\n cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1;\r\n cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2;\r\n cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4;\r\n cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000;\r\n cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000;\r\n cadesplugin.CADESCOM_UseContainerStore = 0x40000000;\r\n\r\n cadesplugin.ContextNone = 0;\r\n cadesplugin.ContextUser = 0x1;\r\n cadesplugin.ContextMachine = 0x2;\r\n cadesplugin.ContextAdministratorForceMachine = 0x3;\r\n\r\n cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04;\r\n cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07;\r\n\r\n cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00;\r\n cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01;\r\n cadesplugin.ENABLE_CARRIER_CREATE = 0x02;\r\n cadesplugin.ENABLE_ANY_OPERATION = 0x03;\r\n\r\n cadesplugin.CADESCOM_PRODUCT_CSP = 0;\r\n cadesplugin.CADESCOM_PRODUCT_OCSP = 1;\r\n cadesplugin.CADESCOM_PRODUCT_TSP = 2;\r\n\r\n cadesplugin.MEDIA_TYPE_DEFAULT = 0x00000000;\r\n cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001;\r\n cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002;\r\n cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004;\r\n cadesplugin.MEDIA_TYPE_SCARD = 0x00000008;\r\n\r\n cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64 = 0x1;\r\n cadesplugin.XCN_CRYPT_STRING_BINARY = 0x2;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64REQUESTHEADER = 0x3;\r\n cadesplugin.XCN_CRYPT_STRING_HEX = 0x4;\r\n cadesplugin.XCN_CRYPT_STRING_HEXASCII = 0x5;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64_ANY = 0x6;\r\n cadesplugin.XCN_CRYPT_STRING_ANY = 0x7;\r\n cadesplugin.XCN_CRYPT_STRING_HEX_ANY = 0x8;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64X509CRLHEADER = 0x9;\r\n cadesplugin.XCN_CRYPT_STRING_HEXADDR = 0xa;\r\n cadesplugin.XCN_CRYPT_STRING_HEXASCIIADDR = 0xb;\r\n cadesplugin.XCN_CRYPT_STRING_HEXRAW = 0xc;\r\n cadesplugin.XCN_CRYPT_STRING_BASE64URI = 0xd;\r\n cadesplugin.XCN_CRYPT_STRING_ENCODEMASK = 0xff;\r\n cadesplugin.XCN_CRYPT_STRING_CHAIN = 0x100;\r\n cadesplugin.XCN_CRYPT_STRING_TEXT = 0x200;\r\n cadesplugin.XCN_CRYPT_STRING_PERCENTESCAPE = 0x8000000;\r\n cadesplugin.XCN_CRYPT_STRING_HASHDATA = 0x10000000;\r\n cadesplugin.XCN_CRYPT_STRING_STRICT = 0x20000000;\r\n cadesplugin.XCN_CRYPT_STRING_NOCRLF = 0x40000000;\r\n cadesplugin.XCN_CRYPT_STRING_NOCR = 0x80000000;\r\n\r\n cadesplugin.XCN_CERT_NAME_STR_NONE = 0;\r\n cadesplugin.XCN_AT_NONE = 0;\r\n cadesplugin.XCN_AT_KEYEXCHANGE = 1;\r\n cadesplugin.XCN_AT_SIGNATURE = 2;\r\n\r\n cadesplugin.AT_KEYEXCHANGE = 1;\r\n cadesplugin.AT_SIGNATURE = 2;\r\n\r\n cadesplugin.CARRIER_FLAG_REMOVABLE = 1;\r\n cadesplugin.CARRIER_FLAG_UNIQUE = 2;\r\n cadesplugin.CARRIER_FLAG_PROTECTED = 4;\r\n cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER = 8;\r\n cadesplugin.CARRIER_FLAG_SECURE_MESSAGING = 16;\r\n cadesplugin.CARRIER_FLAG_ABLE_SET_KEY = 32;\r\n cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE = 64;\r\n cadesplugin.CARRIER_FLAG_VIRTUAL = 128;\r\n\r\n cadesplugin.CRYPT_MODE_CBCSTRICT = 1;\r\n cadesplugin.CRYPT_MODE_CNT = 3;\r\n cadesplugin.CRYPT_MODE_CBCRFC4357 = 31;\r\n cadesplugin.CRYPT_MODE_CTR = 32;\r\n cadesplugin.CRYPT_MODE_MGM = 33;\r\n cadesplugin.CRYPT_MODE_GCM = 34;\r\n cadesplugin.CRYPT_MODE_OMAC_CTR = 35;\r\n cadesplugin.CRYPT_MODE_WRAP = 36;\r\n cadesplugin.CRYPT_MODE_WRAP_PAD = 37;\r\n\r\n cadesplugin.PKCS5_PADDING = 1;\r\n cadesplugin.RANDOM_PADDING = 2;\r\n cadesplugin.ZERO_PADDING = 3;\r\n cadesplugin.ISO10126_PADDING = 4;\r\n cadesplugin.ANSI_X923_PADDING = 5;\r\n cadesplugin.TLS_1_0_PADDING = 6;\r\n cadesplugin.ISO_IEC_7816_4_PADDING = 7;\r\n\r\n cadesplugin.CAPICOM_STORE_SAVE_AS_SERIALIZED = 0;\r\n cadesplugin.CAPICOM_STORE_SAVE_AS_PKCS7 = 1;\r\n\r\n cadesplugin.CERT_TRUST_NO_ERROR = 0x00000000;\r\n cadesplugin.CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001;\r\n cadesplugin.CERT_TRUST_IS_REVOKED = 0x00000004;\r\n cadesplugin.CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008;\r\n cadesplugin.CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010;\r\n cadesplugin.CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020;\r\n cadesplugin.CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040;\r\n cadesplugin.CERT_TRUST_IS_CYCLIC = 0x00000080;\r\n cadesplugin.CERT_TRUST_INVALID_EXTENSION = 0x00000100;\r\n cadesplugin.CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200;\r\n cadesplugin.CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400;\r\n cadesplugin.CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800;\r\n cadesplugin.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000;\r\n cadesplugin.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000;\r\n cadesplugin.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000;\r\n cadesplugin.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000;\r\n cadesplugin.CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000;\r\n cadesplugin.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000;\r\n cadesplugin.CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000;\r\n cadesplugin.CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000;\r\n cadesplugin.CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000;\r\n\r\n cadesplugin.XCN_CERT_NO_KEY_USAGE = 0;\r\n cadesplugin.XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE = 0x80;\r\n cadesplugin.XCN_CERT_NON_REPUDIATION_KEY_USAGE = 0x40;\r\n cadesplugin.XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE = 0x20;\r\n cadesplugin.XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE = 0x10;\r\n cadesplugin.XCN_CERT_KEY_AGREEMENT_KEY_USAGE = 0x8;\r\n cadesplugin.XCN_CERT_KEY_CERT_SIGN_KEY_USAGE = 0x4;\r\n cadesplugin.XCN_CERT_OFFLINE_CRL_SIGN_KEY_USAGE = 0x2;\r\n cadesplugin.XCN_CERT_CRL_SIGN_KEY_USAGE = 0x2;\r\n cadesplugin.XCN_CERT_ENCIPHER_ONLY_KEY_USAGE = 0x1;\r\n cadesplugin.XCN_CERT_DECIPHER_ONLY_KEY_USAGE = 0x8000;\r\n\r\n cadesplugin.CADESCOM_XADES_ACCEPT_ANY_ID_ATTR_NAMESPACE = 1;\r\n cadesplugin.CADES_USE_OCSP_AUTHORIZED_POLICY = 0x00020000;\r\n\r\n cadesplugin.XCN_NCRYPT_NO_OPERATION = 0;\r\n cadesplugin.XCN_NCRYPT_CIPHER_OPERATION = 0x1;\r\n cadesplugin.XCN_NCRYPT_HASH_OPERATION = 0x2;\r\n cadesplugin.XCN_NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION = 0x4;\r\n cadesplugin.XCN_NCRYPT_SECRET_AGREEMENT_OPERATION = 0x8;\r\n cadesplugin.XCN_NCRYPT_SIGNATURE_OPERATION = 0x10;\r\n cadesplugin.XCN_NCRYPT_RNG_OPERATION = 0x20;\r\n\r\n cadesplugin.XCN_CRYPT_ANY_GROUP_ID = 0;\r\n cadesplugin.XCN_CRYPT_HASH_ALG_OID_GROUP_ID = 1;\r\n cadesplugin.XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID = 2;\r\n cadesplugin.XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID = 3;\r\n cadesplugin.XCN_CRYPT_SIGN_ALG_OID_GROUP_ID = 4;\r\n cadesplugin.XCN_CRYPT_RDN_ATTR_OID_GROUP_ID = 5;\r\n cadesplugin.XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID = 6;\r\n cadesplugin.XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID = 7;\r\n cadesplugin.XCN_CRYPT_POLICY_OID_GROUP_ID = 8;\r\n cadesplugin.XCN_CRYPT_TEMPLATE_OID_GROUP_ID = 9;\r\n\r\n cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_ANY = 0;\r\n cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG = 0x80000000;\r\n cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG = 0x40000000;\r\n\r\n cadesplugin.CONTROL_KEY_TIME_VALIDITY_DISABLED = 0;\r\n cadesplugin.CONTROL_KEY_TIME_VALIDITY_ENABLED = 1;\r\n cadesplugin.CONTROL_KEY_TIME_VALIDITY_STRICT = 2;\r\n\r\n cadesplugin.AlgorithmFlagsNone = 0;\r\n cadesplugin.AlgorithmFlagsWrap = 0x1;\r\n }\r\n\r\n function async_spawn(generatorFunc) {\r\n function continuer(verb, arg) {\r\n var result;\r\n try {\r\n result = generator[verb](arg);\r\n } catch (err) {\r\n return window.Promise.reject(err);\r\n }\r\n if (result.done) {\r\n return result.value;\r\n } else {\r\n return window.Promise.resolve(result.value).then(onFulfilled, onRejected);\r\n }\r\n }\r\n var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));\r\n var onFulfilled = continuer.bind(continuer, \"next\");\r\n var onRejected = continuer.bind(continuer, \"throw\");\r\n return onFulfilled();\r\n }\r\n\r\n function isIE() {\r\n // var retVal = ((\"Microsoft Internet Explorer\" == navigator.appName) || // IE < 11\r\n // navigator.userAgent.match(/Trident\\/./i)); // IE 11\r\n return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE');\r\n }\r\n\r\n function isIOS() {\r\n return (window.navigator.userAgent.match(/ipod/i) ||\r\n window.navigator.userAgent.match(/ipad/i) ||\r\n window.navigator.userAgent.match(/iphone/i));\r\n }\r\n\r\n function isNativeMessageSupported() {\r\n // В IE работаем через NPAPI\r\n if (isIE()) {\r\n return false;\r\n }\r\n // В Edge работаем через NativeMessage\r\n if (browserSpecs.name === 'Edg') {\r\n return true;\r\n }\r\n if (browserSpecs.name === 'YaBrowser') {\r\n isYandex = true;\r\n return true;\r\n }\r\n // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии\r\n if (browserSpecs.name === 'Opera') {\r\n isOpera = true;\r\n return (browserSpecs.version >= 33);\r\n }\r\n if (browserSpecs.name === 'Firefox') {\r\n isFireFox = true;\r\n return (browserSpecs.version >= 52);\r\n }\r\n if (browserSpecs.name === 'Chrome') {\r\n return (browserSpecs.version >= 42);\r\n }\r\n //В Сафари начиная с 12 версии нет NPAPI\r\n if (browserSpecs.name === 'Safari') {\r\n isSafari = true;\r\n return (browserSpecs.version >= 12);\r\n }\r\n }\r\n\r\n // Функция активации объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObject(name) {\r\n if (isIOS()) {\r\n // На iOS для создания объектов используется функция\r\n // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js\r\n return call_ru_cryptopro_npcades_10_native_bridge(\"CreateObject\", [name]);\r\n }\r\n var objWebClassFactory;\r\n if (isIE()) {\r\n // В Internet Explorer создаются COM-объекты\r\n if (name.match(/X509Enrollment/i)) {\r\n try {\r\n // Объекты CertEnroll пробуем создавать через нашу фабрику,\r\n // если не получилось то через CX509EnrollmentWebClassFactory\r\n objWebClassFactory = document.getElementById(\"webClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n try {\r\n var objCertEnrollClassFactory = document.getElementById(\"certEnrollClassFactory\");\r\n return objCertEnrollClassFactory.CreateObject(name);\r\n }\r\n catch (err) {\r\n throw (\"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS\");\r\n }\r\n }\r\n }\r\n // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory\r\n try {\r\n objWebClassFactory = document.getElementById(\"webClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n } catch (e) {\r\n // Для версий плагина ниже 2.0.12538\r\n return new window.ActiveXObject(name);\r\n }\r\n }\r\n // создаются объекты NPAPI\r\n return pluginObject.CreateObject(name);\r\n }\r\n\r\n function decimalToHexString(number) {\r\n if (number < 0) {\r\n number = 0xFFFFFFFF + number + 1;\r\n }\r\n\r\n return number.toString(16).toUpperCase();\r\n }\r\n\r\n function GetMessageFromException(e) {\r\n var err = e.message;\r\n if (!err) {\r\n err = e;\r\n } else if (e.number) {\r\n err += \" (0x\" + decimalToHexString(e.number) + \")\";\r\n }\r\n return err;\r\n }\r\n\r\n function getLastError(exception) {\r\n if (isNativeMessageSupported() || isIE() || isIOS()) {\r\n return GetMessageFromException(exception);\r\n }\r\n\r\n try {\r\n return pluginObject.getLastError();\r\n } catch (e) {\r\n return GetMessageFromException(exception);\r\n }\r\n }\r\n\r\n // Функция для удаления созданных объектов\r\n function ReleasePluginObjects() {\r\n // noinspection JSUnresolvedVariable\r\n return cpcsp_chrome_nmcades.ReleasePluginObjects();\r\n }\r\n\r\n // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObjectAsync(name) {\r\n return pluginObject.CreateObjectAsync(name);\r\n }\r\n\r\n // Функции для IOS\r\n // noinspection JSUnusedGlobalSymbols\r\n var ru_cryptopro_npcades_10_native_bridge = {\r\n callbacksCount: 1,\r\n callbacks: {},\r\n\r\n // Automatically called by native layer when a result is available\r\n resultForCallback: function resultForCallback(callbackId, resultArray) {\r\n var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId];\r\n if (!callback) {\r\n return;\r\n }\r\n callback.apply(null, resultArray);\r\n },\r\n\r\n // Use this in javascript to request native objective-c code\r\n // functionName : string (I think the name is explicit :p)\r\n // args : array of arguments\r\n // callback : function with n-arguments that is going to be called when the native code returned\r\n call: function call(functionName, args, callback) {\r\n var hasCallback = callback && typeof callback === \"function\";\r\n var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0;\r\n\r\n if (hasCallback) {\r\n ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback;\r\n }\r\n\r\n var iframe = document.createElement(\"IFRAME\");\r\n var arrObjs = new Array(\"_CPNP_handle\");\r\n try {\r\n iframe.setAttribute(\"src\", \"cpnp-js-call:\" + functionName + \":\" + callbackId + \":\" + encodeURIComponent(window.JSON.stringify(args, arrObjs)));\r\n } catch (e) {\r\n window.alert(e);\r\n }\r\n document.documentElement.appendChild(iframe);\r\n iframe.parentNode.removeChild(iframe);\r\n iframe = null;\r\n }\r\n };\r\n\r\n function call_ru_cryptopro_npcades_10_native_bridge(functionName, array) {\r\n var tmpobj;\r\n var ex;\r\n ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function (e, response) {\r\n ex = e;\r\n var tmpobj = \"\";\r\n try {\r\n tmpobj = window.JSON.parse(response);\r\n }\r\n catch (err) {\r\n tmpobj = response;\r\n }\r\n if (typeof tmpobj === \"string\") {\r\n tmpobj = tmpobj.replace(/\\\\\\n/gm, \"\\n\");\r\n tmpobj = tmpobj.replace(/\\\\\\r/gm, \"\\r\");\r\n }\r\n });\r\n if (ex) {\r\n throw ex;\r\n }\r\n return tmpobj;\r\n }\r\n\r\n function show_firefox_missing_extension_dialog() {\r\n if (!window.cadesplugin_skip_extension_install) {\r\n var ovr = document.createElement('div');\r\n ovr.id = \"cadesplugin_ovr\";\r\n ovr.style = \"visibility: hidden; position: fixed; left: 0; top: 0; width:100%; height:100%; background-color: rgba(0,0,0,0.7)\";\r\n ovr.innerHTML = \"
\" +\r\n \"\" +\r\n \"

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.\" +\r\n \"

Скачать расширение

\" +\r\n \"
\";\r\n document.getElementsByTagName(\"Body\")[0].appendChild(ovr);\r\n document.getElementById(\"cadesplugin_close_install\").addEventListener('click', function () {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n\r\n ovr.addEventListener('click', function () {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n ovr.style.visibility = \"visible\";\r\n }\r\n }\r\n\r\n function firefox_or_safari_nmcades_onload() {\r\n // noinspection JSUnresolvedVariable\r\n if (window.cadesplugin_extension_loaded_callback) {\r\n window.cadesplugin_extension_loaded_callback();\r\n }\r\n isFireFoxExtensionLoaded = true;\r\n // noinspection JSUnresolvedVariable,JSUnresolvedFunction\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n\r\n function load_js_script(url, successFunc, errorFunc) {\r\n var script = document.createElement(\"script\");\r\n script.setAttribute(\"type\", \"text/javascript\");\r\n script.setAttribute(\"src\", url);\r\n script.onerror = errorFunc;\r\n script.onload = successFunc;\r\n document.getElementsByTagName(\"head\")[0].appendChild(script);\r\n }\r\n\r\n function nmcades_api_onload() {\r\n if (!isIE() && !isFireFox && !isSafari) {\r\n // noinspection JSUnresolvedVariable\r\n if (window.cadesplugin_extension_loaded_callback) {\r\n window.cadesplugin_extension_loaded_callback();\r\n }\r\n }\r\n window.postMessage(\"cadesplugin_echo_request\", \"*\");\r\n window.addEventListener(\"message\", function (event) {\r\n if (typeof (event.data) !== \"string\" || !event.data.match(\"cadesplugin_loaded\")) {\r\n return;\r\n }\r\n if (cadesplugin_loaded_event_recieved) {\r\n return;\r\n }\r\n if (isFireFox || isSafari) {\r\n // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js\r\n var url = event.data.substring(event.data.indexOf(\"url:\") + 4);\r\n if (!url.match(\"^(moz|safari)-extension://[a-zA-Z0-9/_-]+/nmcades_plugin_api.js$\")) {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"Bad url \\\"\" + url + \"\\\" for load CryptoPro Extension for CAdES Browser plug-in\");\r\n plugin_loaded_error();\r\n return;\r\n }\r\n load_js_script(url, firefox_or_safari_nmcades_onload, plugin_loaded_error);\r\n } else {\r\n // noinspection JSUnresolvedVariable,JSUnresolvedFunction\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n cadesplugin_loaded_event_recieved = true;\r\n }, false);\r\n }\r\n\r\n // Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari\r\n function load_extension() {\r\n if (isFireFox || isSafari) {\r\n // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера.\r\n nmcades_api_onload();\r\n return;\r\n }\r\n var operaUrl = \"chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js\";\r\n var manifestv2Url = \"chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js\";\r\n var manifestv3Url = \"chrome-extension://pfhgbfnnjiafkhfdkmpiflachepdcjod/nmcades_plugin_api.js\";\r\n if (isYandex || isOpera) {\r\n // в асинхронном варианте для Yandex пробуем подключить расширения по очереди\r\n load_js_script(operaUrl, nmcades_api_onload, function () {\r\n load_js_script(manifestv2Url, nmcades_api_onload, function () {\r\n load_js_script(manifestv3Url, nmcades_api_onload, plugin_loaded_error);\r\n });\r\n });\r\n return;\r\n }\r\n // для Chrome, Chromium, Chromium Edge расширение из Chrome store\r\n load_js_script(manifestv2Url, nmcades_api_onload, function () {\r\n load_js_script(manifestv3Url, nmcades_api_onload, plugin_loaded_error);\r\n });\r\n }\r\n\r\n //Загружаем плагин для NPAPI\r\n function load_npapi_plugin() {\r\n var elem = document.createElement('object');\r\n elem.setAttribute(\"id\", \"cadesplugin_object\");\r\n elem.setAttribute(\"type\", \"application/x-cades\");\r\n elem.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem);\r\n pluginObject = document.getElementById(\"cadesplugin_object\");\r\n if (isIE()) {\r\n var elem1 = document.createElement('object');\r\n elem1.setAttribute(\"id\", \"certEnrollClassFactory\");\r\n elem1.setAttribute(\"classid\", \"clsid:884e2049-217d-11da-b2a4-000e7bbb2b09\");\r\n elem1.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem1);\r\n var elem2 = document.createElement('object');\r\n elem2.setAttribute(\"id\", \"webClassFactory\");\r\n elem2.setAttribute(\"classid\", \"clsid:B04C8637-10BD-484E-B0DA-B8A039F60024\");\r\n elem2.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem2);\r\n }\r\n }\r\n\r\n //Отправляем событие что все ок.\r\n function plugin_loaded() {\r\n plugin_resolved = 1;\r\n if (canPromise) {\r\n plugin_resolve();\r\n } else {\r\n window.postMessage(\"cadesplugin_loaded\", \"*\");\r\n }\r\n }\r\n\r\n //Отправляем событие что сломались.\r\n function plugin_loaded_error(msg) {\r\n if (typeof (msg) === 'undefined' || typeof (msg) === 'object') {\r\n msg = \"Плагин недоступен\";\r\n }\r\n plugin_resolved = 1;\r\n if (canPromise) {\r\n plugin_reject(msg);\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n }\r\n\r\n //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку\r\n function check_load_timeout() {\r\n if (plugin_resolved === 1) {\r\n return;\r\n }\r\n if (isFireFox && !isFireFoxExtensionLoaded) {\r\n show_firefox_missing_extension_dialog();\r\n }\r\n plugin_resolved = 1;\r\n if (canPromise) {\r\n plugin_reject(\"Истекло время ожидания загрузки плагина\");\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n }\r\n\r\n function check_npapi_plugin() {\r\n try {\r\n CreateObject(\"CAdESCOM.About\");\r\n plugin_loaded();\r\n } catch (err) {\r\n document.getElementById(\"cadesplugin_object\").style.display = 'none';\r\n // Объект создать не удалось, проверим, установлен ли\r\n // вообще плагин. Такая возможность есть не во всех браузерах\r\n // noinspection JSDeprecatedSymbols\r\n var mimetype = window.navigator.mimeTypes[\"application/x-cades\"];\r\n if (mimetype) {\r\n // noinspection JSDeprecatedSymbols\r\n var plugin = mimetype.enabledPlugin;\r\n if (plugin) {\r\n plugin_loaded_error(\"Плагин загружен, но не создаются обьекты\");\r\n } else {\r\n plugin_loaded_error(\"Ошибка при загрузке плагина\");\r\n }\r\n } else {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n }\r\n }\r\n }\r\n\r\n // Проверяем работает ли плагин\r\n function check_plugin_working() {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = \"\";\r\n var isIeLessThan9 = (div.getElementsByTagName(\"i\").length === 1);\r\n if (isIeLessThan9) {\r\n plugin_loaded_error(\"Internet Explorer версии 8 и ниже не поддерживается\");\r\n return;\r\n }\r\n\r\n if (isNativeMessageSupported()) {\r\n load_extension();\r\n } else if (!canPromise) {\r\n window.addEventListener(\"message\", function (event) {\r\n if (event.data !== \"cadesplugin_echo_request\") {\r\n return;\r\n }\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n }, false);\r\n } else {\r\n if (document.readyState === \"complete\") {\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n } else {\r\n window.addEventListener(\"load\", function (event) {\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n }, false);\r\n }\r\n }\r\n }\r\n\r\n function set_pluginObject(obj) {\r\n pluginObject = obj;\r\n }\r\n\r\n function is_capilite_enabled() {\r\n // noinspection JSUnresolvedVariable\r\n return ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP);\r\n }\r\n\r\n function set_load_timeout() {\r\n // noinspection JSUnresolvedVariable\r\n if (window.cadesplugin_load_timeout) {\r\n window.setTimeout(check_load_timeout, window.cadesplugin_load_timeout);\r\n } else {\r\n window.setTimeout(check_load_timeout, 20000);\r\n }\r\n }\r\n\r\n // noinspection JSUnusedLocalSymbols\r\n var onVisibilityChange = function (event) {\r\n if (document.hidden === false) {\r\n document.removeEventListener(\"visibilitychange\", onVisibilityChange);\r\n set_load_timeout();\r\n check_plugin_working();\r\n }\r\n };\r\n\r\n //Export\r\n cadesplugin.JSModuleVersion = \"2.4.2\";\r\n cadesplugin.async_spawn = async_spawn;\r\n cadesplugin.set = set_pluginObject;\r\n cadesplugin.set_log_level = set_log_level;\r\n cadesplugin.get_extension_version = get_extension_version;\r\n cadesplugin.get_extension_id = get_extension_id;\r\n cadesplugin.getLastError = getLastError;\r\n cadesplugin.is_capilite_enabled = is_capilite_enabled;\r\n\r\n if (isNativeMessageSupported()) {\r\n cadesplugin.CreateObjectAsync = CreateObjectAsync;\r\n cadesplugin.ReleasePluginObjects = ReleasePluginObjects;\r\n }\r\n\r\n if (!isNativeMessageSupported()) {\r\n cadesplugin.CreateObject = CreateObject;\r\n }\r\n\r\n set_constantValues();\r\n\r\n cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR;\r\n window.cadesplugin = cadesplugin;\r\n if (isSafari && document.hidden) {\r\n document.addEventListener(\"visibilitychange\", onVisibilityChange);\r\n return;\r\n }\r\n set_load_timeout();\r\n check_plugin_working();\r\n}());\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e162bf9..0990956 100755 --- a/package-lock.json +++ b/package-lock.json @@ -1,40 +1,79 @@ { - "name": "crypto-pro-js", - "version": "2.3.3", - "lockfileVersion": 1, + "name": "crypto-pro-js-m", + "version": "1.0.2", + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@ampproject/remapping": { + "packages": { + "": { + "name": "crypto-pro-js-m", + "version": "1.0.2", + "license": "MIT", + "devDependencies": { + "@types/jest": "25.1.4", + "@types/lodash": "4.14.149", + "@types/node": "13.9.5", + "@typescript-eslint/eslint-plugin": "2.25.0", + "@typescript-eslint/parser": "2.25.0", + "coveralls": "3.0.11", + "cross-env": "^7.0.2", + "eslint": "6.8.0", + "eslint-config-prettier": "6.10.1", + "eslint-plugin-prettier": "3.1.2", + "jest": "^25.5.4", + "prettier": "2.0.2", + "rimraf": "3.0.2", + "sinon": "9.0.1", + "tar": "6.1.9", + "ts-jest": "^25.5.1", + "ts-loader": "^6.2.2", + "typescript": "^3.9.10", + "webpack": "^4.46.0", + "webpack-cli": "^3.3.12" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, - "requires": { + "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" } }, - "@babel/code-frame": { + "node_modules/@babel/code-frame": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, - "requires": { + "dependencies": { "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/compat-data": { + "node_modules/@babel/compat-data": { "version": "7.20.1", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/core": { + "node_modules/@babel/core": { "version": "7.20.2", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", "dev": true, - "requires": { + "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.20.2", @@ -50,84 +89,113 @@ "gensync": "^1.0.0-beta.2", "json5": "^2.2.1", "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "@babel/generator": { + "node_modules/@babel/generator": { "version": "7.20.4", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.20.2", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-compilation-targets": { + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { "version": "7.20.0", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", "dev": true, - "requires": { + "dependencies": { "@babel/compat-data": "^7.20.0", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-environment-visitor": { + "node_modules/@babel/helper-environment-visitor": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-function-name": { + "node_modules/@babel/helper-function-name": { "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, - "requires": { + "dependencies": { "@babel/template": "^7.18.10", "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-hoist-variables": { + "node_modules/@babel/helper-hoist-variables": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-imports": { + "node_modules/@babel/helper-module-imports": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-transforms": { + "node_modules/@babel/helper-module-transforms": { "version": "7.20.2", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", "@babel/helper-simple-access": "^7.20.2", @@ -136,194 +204,263 @@ "@babel/template": "^7.18.10", "@babel/traverse": "^7.20.1", "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-plugin-utils": { + "node_modules/@babel/helper-plugin-utils": { "version": "7.20.2", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-simple-access": { + "node_modules/@babel/helper-simple-access": { "version": "7.20.2", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-split-export-declaration": { + "node_modules/@babel/helper-split-export-declaration": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-string-parser": { + "node_modules/@babel/helper-string-parser": { "version": "7.19.4", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-validator-identifier": { + "node_modules/@babel/helper-validator-identifier": { "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-validator-option": { + "node_modules/@babel/helper-validator-option": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helpers": { + "node_modules/@babel/helpers": { "version": "7.20.1", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", "dev": true, - "requires": { + "dependencies": { "@babel/template": "^7.18.10", "@babel/traverse": "^7.20.1", "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/highlight": { + "node_modules/@babel/highlight": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/parser": { + "node_modules/@babel/parser": { "version": "7.20.3", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", - "dev": true + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } }, - "@babel/plugin-syntax-async-generators": { + "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-bigint": { + "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-class-properties": { + "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-import-meta": { + "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-json-strings": { + "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-logical-assignment-operators": { + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-nullish-coalescing-operator": { + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-numeric-separator": { + "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-object-rest-spread": { + "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-catch-binding": { + "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-chaining": { + "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/template": { + "node_modules/@babel/template": { "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.10", "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/traverse": { + "node_modules/@babel/traverse": { "version": "7.20.1", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.20.1", "@babel/helper-environment-visitor": "^7.18.9", @@ -335,139 +472,178 @@ "debug": "^4.1.0", "globals": "^11.1.0" }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } + "engines": { + "node": ">=6.9.0" } }, - "@babel/types": { + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { "version": "7.20.2", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@bcoe/v8-coverage": { + "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@cnakazawa/watch": { + "node_modules/@cnakazawa/watch": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, - "requires": { + "dependencies": { "exec-sh": "^0.3.2", "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" } }, - "@istanbuljs/load-nyc-config": { + "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "requires": { + "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "@istanbuljs/schema": { + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "@jest/console": { + "node_modules/@jest/console": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^25.5.0", "chalk": "^3.0.0", "jest-message-util": "^25.5.0", "jest-util": "^25.5.0", "slash": "^3.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "@jest/core": { + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.5.4.tgz", "integrity": "sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA==", "dev": true, - "requires": { + "dependencies": { "@jest/console": "^25.5.0", "@jest/reporters": "^25.5.1", "@jest/test-result": "^25.5.0", @@ -497,108 +673,139 @@ "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "@jest/environment": { + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.5.0.tgz", "integrity": "sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA==", "dev": true, - "requires": { + "dependencies": { "@jest/fake-timers": "^25.5.0", "@jest/types": "^25.5.0", "jest-mock": "^25.5.0" + }, + "engines": { + "node": ">= 8.3" } }, - "@jest/fake-timers": { + "node_modules/@jest/fake-timers": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.5.0.tgz", "integrity": "sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^25.5.0", "jest-message-util": "^25.5.0", "jest-mock": "^25.5.0", "jest-util": "^25.5.0", "lolex": "^5.0.0" + }, + "engines": { + "node": ">= 8.3" } }, - "@jest/globals": { + "node_modules/@jest/globals": { "version": "25.5.2", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-25.5.2.tgz", "integrity": "sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA==", "dev": true, - "requires": { + "dependencies": { "@jest/environment": "^25.5.0", "@jest/types": "^25.5.0", "expect": "^25.5.0" + }, + "engines": { + "node": ">= 8.3" } }, - "@jest/reporters": { + "node_modules/@jest/reporters": { "version": "25.5.1", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.5.1.tgz", "integrity": "sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw==", "dev": true, - "requires": { + "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^25.5.0", "@jest/test-result": "^25.5.0", @@ -618,107 +825,137 @@ "jest-resolve": "^25.5.1", "jest-util": "^25.5.0", "jest-worker": "^25.5.0", - "node-notifier": "^6.0.0", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^3.1.0", "terminal-link": "^2.0.0", "v8-to-istanbul": "^4.1.3" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" + }, + "optionalDependencies": { + "node-notifier": "^6.0.0" } }, - "@jest/source-map": { + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/source-map": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.5.0.tgz", "integrity": "sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==", "dev": true, - "requires": { + "dependencies": { "callsites": "^3.0.0", "graceful-fs": "^4.2.4", "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 8.3" } }, - "@jest/test-result": { + "node_modules/@jest/test-result": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", "dev": true, - "requires": { + "dependencies": { "@jest/console": "^25.5.0", "@jest/types": "^25.5.0", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": ">= 8.3" } }, - "@jest/test-sequencer": { + "node_modules/@jest/test-sequencer": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz", "integrity": "sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==", "dev": true, - "requires": { + "dependencies": { "@jest/test-result": "^25.5.0", "graceful-fs": "^4.2.4", "jest-haste-map": "^25.5.1", "jest-runner": "^25.5.4", "jest-runtime": "^25.5.4" + }, + "engines": { + "node": ">= 8.3" } }, - "@jest/transform": { + "node_modules/@jest/transform": { "version": "25.5.1", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.5.1.tgz", "integrity": "sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==", "dev": true, - "requires": { + "dependencies": { "@babel/core": "^7.1.0", "@jest/types": "^25.5.0", "babel-plugin-istanbul": "^6.0.0", @@ -736,210 +973,257 @@ "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "@jest/types": { + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", "dev": true, - "requires": { + "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^1.1.1", "@types/yargs": "^15.0.0", "chalk": "^3.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "@jridgewell/gen-mapping": { + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", "dev": true, - "requires": { + "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" } }, - "@jridgewell/resolve-uri": { + "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.0.0" + } }, - "@jridgewell/set-array": { + "node_modules/@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.0.0" + } }, - "@jridgewell/sourcemap-codec": { + "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, - "@jridgewell/trace-mapping": { + "node_modules/@jridgewell/trace-mapping": { "version": "0.3.17", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, - "requires": { + "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" } }, - "@sinonjs/commons": { + "node_modules/@sinonjs/commons": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz", "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==", "dev": true, - "requires": { + "dependencies": { "type-detect": "4.0.8" } }, - "@sinonjs/fake-timers": { + "node_modules/@sinonjs/fake-timers": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", "dev": true, - "requires": { + "dependencies": { "@sinonjs/commons": "^1.7.0" } }, - "@sinonjs/formatio": { + "node_modules/@sinonjs/formatio": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-5.0.1.tgz", "integrity": "sha512-KaiQ5pBf1MpS09MuA0kp6KBQt2JUOQycqVG1NZXvzeaXe5LGFqAKueIS0bw4w0P9r7KuBSVdUk5QjXsUdu2CxQ==", "dev": true, - "requires": { + "dependencies": { "@sinonjs/commons": "^1", "@sinonjs/samsam": "^5.0.2" } }, - "@sinonjs/samsam": { + "node_modules/@sinonjs/samsam": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz", "integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==", "dev": true, - "requires": { + "dependencies": { "@sinonjs/commons": "^1.6.0", "lodash.get": "^4.4.2", "type-detect": "^4.0.8" } }, - "@sinonjs/text-encoding": { + "node_modules/@sinonjs/text-encoding": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, - "@types/babel__core": { + "node_modules/@types/babel__core": { "version": "7.1.20", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", "dev": true, - "requires": { + "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", "@types/babel__generator": "*", @@ -947,177 +1231,218 @@ "@types/babel__traverse": "*" } }, - "@types/babel__generator": { + "node_modules/@types/babel__generator": { "version": "7.6.4", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.0.0" } }, - "@types/babel__template": { + "node_modules/@types/babel__template": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, - "requires": { + "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, - "@types/babel__traverse": { + "node_modules/@types/babel__traverse": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.3.0" } }, - "@types/eslint-visitor-keys": { + "node_modules/@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", "dev": true }, - "@types/graceful-fs": { + "node_modules/@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*" } }, - "@types/istanbul-lib-coverage": { + "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true }, - "@types/istanbul-lib-report": { + "node_modules/@types/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, - "requires": { + "dependencies": { "@types/istanbul-lib-coverage": "*" } }, - "@types/istanbul-reports": { + "node_modules/@types/istanbul-reports": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", "dev": true, - "requires": { + "dependencies": { "@types/istanbul-lib-coverage": "*", "@types/istanbul-lib-report": "*" } }, - "@types/jest": { + "node_modules/@types/jest": { "version": "25.1.4", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.1.4.tgz", "integrity": "sha512-QDDY2uNAhCV7TMCITrxz+MRk1EizcsevzfeS6LykIlq2V1E5oO4wXG8V2ZEd9w7Snxeeagk46YbMgZ8ESHx3sw==", "dev": true, - "requires": { + "dependencies": { "jest-diff": "^25.1.0", "pretty-format": "^25.1.0" } }, - "@types/json-schema": { + "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, - "@types/lodash": { + "node_modules/@types/lodash": { "version": "4.14.149", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==", "dev": true }, - "@types/node": { + "node_modules/@types/node": { "version": "13.9.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.5.tgz", "integrity": "sha512-hkzMMD3xu6BrJpGVLeQ3htQQNAcOrJjX7WFmtK8zWQpz2UJf13LCFF2ALA7c9OVdvc2vQJeDdjfR35M0sBCxvw==", "dev": true }, - "@types/normalize-package-data": { + "node_modules/@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, - "@types/prettier": { + "node_modules/@types/prettier": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==", "dev": true }, - "@types/stack-utils": { + "node_modules/@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", "dev": true }, - "@types/yargs": { + "node_modules/@types/yargs": { "version": "15.0.14", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", "dev": true, - "requires": { + "dependencies": { "@types/yargs-parser": "*" } }, - "@types/yargs-parser": { + "node_modules/@types/yargs-parser": { "version": "21.0.0", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, - "@typescript-eslint/eslint-plugin": { + "node_modules/@typescript-eslint/eslint-plugin": { "version": "2.25.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.25.0.tgz", "integrity": "sha512-W2YyMtjmlrOjtXc+FtTelVs9OhuR6OlYc4XKIslJ8PUJOqgYYAPRJhAqkYRQo3G4sjvG8jSodsNycEn4W2gHUw==", "dev": true, - "requires": { + "dependencies": { "@typescript-eslint/experimental-utils": "2.25.0", "functional-red-black-tree": "^1.0.1", "regexpp": "^3.0.0", "tsutils": "^3.17.1" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^2.0.0", + "eslint": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "@typescript-eslint/experimental-utils": { + "node_modules/@typescript-eslint/experimental-utils": { "version": "2.25.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.25.0.tgz", "integrity": "sha512-0IZ4ZR5QkFYbaJk+8eJ2kYeA+1tzOE1sBjbwwtSV85oNWYUBep+EyhlZ7DLUCyhMUGuJpcCCFL0fDtYAP1zMZw==", "dev": true, - "requires": { + "dependencies": { "@types/json-schema": "^7.0.3", "@typescript-eslint/typescript-estree": "2.25.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" } }, - "@typescript-eslint/parser": { + "node_modules/@typescript-eslint/parser": { "version": "2.25.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.25.0.tgz", "integrity": "sha512-mccBLaBSpNVgp191CP5W+8U1crTyXsRziWliCqzj02kpxdjKMvFHGJbK33NroquH3zB/gZ8H511HEsJBa2fNEg==", "dev": true, - "requires": { + "dependencies": { "@types/eslint-visitor-keys": "^1.0.0", "@typescript-eslint/experimental-utils": "2.25.0", "@typescript-eslint/typescript-estree": "2.25.0", "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/typescript-estree": { "version": "2.25.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.25.0.tgz", "integrity": "sha512-VUksmx5lDxSi6GfmwSK7SSoIKSw9anukWWNitQPqt58LuYrKalzsgeuignbqnB+rK/xxGlSsCy8lYnwFfB6YJg==", "dev": true, - "requires": { + "dependencies": { "debug": "^4.1.1", "eslint-visitor-keys": "^1.1.0", "glob": "^7.1.6", @@ -1125,109 +1450,121 @@ "lodash": "^4.17.15", "semver": "^6.3.0", "tsutils": "^3.17.1" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "@webassemblyjs/ast": { + "node_modules/@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, - "requires": { + "dependencies": { "@webassemblyjs/helper-module-context": "1.9.0", "@webassemblyjs/helper-wasm-bytecode": "1.9.0", "@webassemblyjs/wast-parser": "1.9.0" } }, - "@webassemblyjs/floating-point-hex-parser": { + "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, - "@webassemblyjs/helper-api-error": { + "node_modules/@webassemblyjs/helper-api-error": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, - "@webassemblyjs/helper-buffer": { + "node_modules/@webassemblyjs/helper-buffer": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, - "@webassemblyjs/helper-code-frame": { + "node_modules/@webassemblyjs/helper-code-frame": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, - "requires": { + "dependencies": { "@webassemblyjs/wast-printer": "1.9.0" } }, - "@webassemblyjs/helper-fsm": { + "node_modules/@webassemblyjs/helper-fsm": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, - "@webassemblyjs/helper-module-context": { + "node_modules/@webassemblyjs/helper-module-context": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, - "requires": { + "dependencies": { "@webassemblyjs/ast": "1.9.0" } }, - "@webassemblyjs/helper-wasm-bytecode": { + "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, - "@webassemblyjs/helper-wasm-section": { + "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, - "requires": { + "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-buffer": "1.9.0", "@webassemblyjs/helper-wasm-bytecode": "1.9.0", "@webassemblyjs/wasm-gen": "1.9.0" } }, - "@webassemblyjs/ieee754": { + "node_modules/@webassemblyjs/ieee754": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, - "requires": { + "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, - "@webassemblyjs/leb128": { + "node_modules/@webassemblyjs/leb128": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, - "requires": { + "dependencies": { "@xtuc/long": "4.2.2" } }, - "@webassemblyjs/utf8": { + "node_modules/@webassemblyjs/utf8": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, - "@webassemblyjs/wasm-edit": { + "node_modules/@webassemblyjs/wasm-edit": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, - "requires": { + "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-buffer": "1.9.0", "@webassemblyjs/helper-wasm-bytecode": "1.9.0", @@ -1238,12 +1575,12 @@ "@webassemblyjs/wast-printer": "1.9.0" } }, - "@webassemblyjs/wasm-gen": { + "node_modules/@webassemblyjs/wasm-gen": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, - "requires": { + "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-wasm-bytecode": "1.9.0", "@webassemblyjs/ieee754": "1.9.0", @@ -1251,24 +1588,24 @@ "@webassemblyjs/utf8": "1.9.0" } }, - "@webassemblyjs/wasm-opt": { + "node_modules/@webassemblyjs/wasm-opt": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, - "requires": { + "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-buffer": "1.9.0", "@webassemblyjs/wasm-gen": "1.9.0", "@webassemblyjs/wasm-parser": "1.9.0" } }, - "@webassemblyjs/wasm-parser": { + "node_modules/@webassemblyjs/wasm-parser": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, - "requires": { + "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-api-error": "1.9.0", "@webassemblyjs/helper-wasm-bytecode": "1.9.0", @@ -1277,12 +1614,12 @@ "@webassemblyjs/utf8": "1.9.0" } }, - "@webassemblyjs/wast-parser": { + "node_modules/@webassemblyjs/wast-parser": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, - "requires": { + "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/floating-point-hex-parser": "1.9.0", "@webassemblyjs/helper-api-error": "1.9.0", @@ -1291,293 +1628,365 @@ "@xtuc/long": "4.2.2" } }, - "@webassemblyjs/wast-printer": { + "node_modules/@webassemblyjs/wast-printer": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, - "requires": { + "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, - "@xtuc/ieee754": { + "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true }, - "@xtuc/long": { + "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, - "abab": { + "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", "dev": true }, - "acorn": { + "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "acorn-globals": { + "node_modules/acorn-globals": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "dev": true, - "requires": { + "dependencies": { "acorn": "^6.0.1", "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - } } }, - "acorn-jsx": { + "node_modules/acorn-globals/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "acorn-walk": { + "node_modules/acorn-walk": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "ajv": { + "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "requires": { + "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "ajv-errors": { + "node_modules/ajv-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" + } }, - "ajv-keywords": { + "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } }, - "ansi-escapes": { + "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "requires": { + "dependencies": { "type-fest": "^0.21.3" }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "ansi-regex": { + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "requires": { + "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "anymatch": { + "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, - "requires": { + "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "aproba": { + "node_modules/aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, - "argparse": { + "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "requires": { + "dependencies": { "sprintf-js": "~1.0.2" } }, - "arr-diff": { + "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "arr-flatten": { + "node_modules/arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "arr-union": { + "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "array-equal": { + "node_modules/array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==", "dev": true }, - "array-unique": { + "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "asn1": { + "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, - "requires": { + "dependencies": { "safer-buffer": "~2.1.0" } }, - "asn1.js": { + "node_modules/asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, - "requires": { + "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } } }, - "assert": { + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, - "requires": { + "dependencies": { "object-assign": "^4.1.1", "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } } }, - "assert-plus": { + "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", "dev": true }, - "assign-symbols": { + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "astral-regex": { + "node_modules/astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "async-each": { + "node_modules/async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true, "optional": true }, - "asynckit": { + "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, - "atob": { + "node_modules/atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } }, - "aws-sign2": { + "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "aws4": { + "node_modules/aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, - "babel-jest": { + "node_modules/babel-jest": { "version": "25.5.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.5.1.tgz", "integrity": "sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==", "dev": true, - "requires": { + "dependencies": { "@jest/transform": "^25.5.1", "@jest/types": "^25.5.0", "@types/babel__core": "^7.1.7", @@ -1587,103 +1996,132 @@ "graceful-fs": "^4.2.4", "slash": "^3.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "babel-plugin-istanbul": { + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - } + "engines": { + "node": ">=8" } }, - "babel-plugin-jest-hoist": { + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz", "integrity": "sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==", "dev": true, - "requires": { + "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": ">= 8.3" } }, - "babel-preset-current-node-syntax": { + "node_modules/babel-preset-current-node-syntax": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz", "integrity": "sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==", "dev": true, - "requires": { + "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", "@babel/plugin-syntax-class-properties": "^7.8.3", @@ -1695,30 +2133,39 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "babel-preset-jest": { + "node_modules/babel-preset-jest": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz", "integrity": "sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==", "dev": true, - "requires": { + "dependencies": { "babel-plugin-jest-hoist": "^25.5.0", "babel-preset-current-node-syntax": "^0.1.2" + }, + "engines": { + "node": ">= 8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "balanced-match": { + "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "base": { + "node_modules/base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, - "requires": { + "dependencies": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", "component-emitter": "^1.2.1", @@ -1727,122 +2174,147 @@ "mixin-deep": "^1.2.0", "pascalcase": "^0.1.1" }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } + "engines": { + "node": ">=0.10.0" } }, - "base64-js": { + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "bcrypt-pbkdf": { + "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, - "requires": { + "dependencies": { "tweetnacl": "^0.14.3" } }, - "big.js": { + "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "binary-extensions": { + "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=8" + } }, - "bindings": { + "node_modules/bindings": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, "optional": true, - "requires": { + "dependencies": { "file-uri-to-path": "1.0.0" } }, - "bluebird": { + "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "bn.js": { + "node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", "dev": true }, - "brace-expansion": { + "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { + "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "requires": { + "dependencies": { "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "brorand": { + "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", "dev": true }, - "browser-process-hrtime": { + "node_modules/browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, - "browser-resolve": { + "node_modules/browser-resolve": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", "dev": true, - "requires": { - "resolve": "1.1.7" - }, "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", - "dev": true - } + "resolve": "1.1.7" } }, - "browserify-aes": { + "node_modules/browser-resolve/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true + }, + "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, - "requires": { + "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", "create-hash": "^1.1.0", @@ -1851,45 +2323,45 @@ "safe-buffer": "^5.0.1" } }, - "browserify-cipher": { + "node_modules/browserify-cipher": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, - "requires": { + "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", "evp_bytestokey": "^1.0.0" } }, - "browserify-des": { + "node_modules/browserify-des": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dev": true, - "requires": { + "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", "inherits": "^2.0.1", "safe-buffer": "^5.1.2" } }, - "browserify-rsa": { + "node_modules/browserify-rsa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, - "requires": { + "dependencies": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" } }, - "browserify-sign": { + "node_modules/browserify-sign": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, - "requires": { + "dependencies": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", "create-hash": "^1.2.0", @@ -1899,103 +2371,121 @@ "parse-asn1": "^5.1.5", "readable-stream": "^3.6.0", "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } } }, - "browserify-zlib": { + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, - "requires": { + "dependencies": { "pako": "~1.0.5" } }, - "browserslist": { + "node_modules/browserslist": { "version": "4.21.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, - "requires": { + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { "caniuse-lite": "^1.0.30001400", "electron-to-chromium": "^1.4.251", "node-releases": "^2.0.6", "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "bs-logger": { + "node_modules/bs-logger": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, - "requires": { + "dependencies": { "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" } }, - "bser": { + "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "requires": { + "dependencies": { "node-int64": "^0.4.0" } }, - "buffer": { + "node_modules/buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, - "requires": { + "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", "isarray": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - } } }, - "buffer-from": { + "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "buffer-xor": { + "node_modules/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", "dev": true }, - "builtin-status-codes": { + "node_modules/buffer/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", "dev": true }, - "cacache": { + "node_modules/cacache": { "version": "12.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, - "requires": { + "dependencies": { "bluebird": "^3.5.5", "chownr": "^1.1.1", "figgy-pudding": "^3.5.1", @@ -2011,31 +2501,33 @@ "ssri": "^6.0.1", "unique-filename": "^1.1.1", "y18n": "^4.0.0" - }, - "dependencies": { - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, - "cache-base": { + "node_modules/cacache/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/cacache/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, - "requires": { + "dependencies": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", "get-value": "^2.0.6", @@ -2045,394 +2537,486 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "callsites": { + "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "camelcase": { + "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "caniuse-lite": { + "node_modules/caniuse-lite": { "version": "1.0.30001431", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, - "capture-exit": { + "node_modules/capture-exit": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, - "requires": { + "dependencies": { "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "caseless": { + "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, - "chalk": { + "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "chardet": { + "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "chokidar": { + "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "optional": true, - "requires": { + "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.3.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "chownr": { + "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "chrome-trace-event": { + "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.0" + } }, - "ci-info": { + "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "cipher-base": { + "node_modules/cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, - "requires": { + "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" } }, - "class-utils": { + "node_modules/class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, - "requires": { + "dependencies": { "arr-union": "^3.1.0", "define-property": "^0.2.5", "isobject": "^3.0.0", "static-extend": "^0.1.1" }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "cli-cursor": { + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "deprecated": "Please upgrade to v0.1.7", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "deprecated": "Please upgrade to v0.1.5", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "requires": { + "dependencies": { "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" } }, - "cli-width": { + "node_modules/cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true + "dev": true, + "engines": { + "node": ">= 10" + } }, - "cliui": { + "node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, - "requires": { + "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } } }, - "co": { + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } }, - "collect-v8-coverage": { + "node_modules/collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", "dev": true }, - "collection-visit": { + "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "dev": true, - "requires": { + "dependencies": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "color-convert": { + "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "requires": { + "dependencies": { "color-name": "1.1.3" } }, - "color-name": { + "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "combined-stream": { + "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "requires": { + "dependencies": { "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "commander": { + "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "commondir": { + "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, - "component-emitter": { + "node_modules/component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "concat-stream": { + "node_modules/concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, - "requires": { + "engines": [ + "node >= 0.8" + ], + "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^2.2.2", "typedarray": "^0.0.6" } }, - "console-browserify": { + "node_modules/console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", "dev": true }, - "constants-browserify": { + "node_modules/constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", "dev": true }, - "convert-source-map": { + "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, - "copy-concurrently": { + "node_modules/copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "deprecated": "This package is no longer supported.", "dev": true, - "requires": { + "dependencies": { "aproba": "^1.1.1", "fs-write-stream-atomic": "^1.0.8", "iferr": "^0.1.5", "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.0" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, - "copy-descriptor": { + "node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "core-util-is": { + "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, - "coveralls": { + "node_modules/coveralls": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.11.tgz", "integrity": "sha512-LZPWPR2NyGKyaABnc49dR0fpeP6UqhvGq4B5nUrTQ1UBy55z96+ga7r+/ChMdMJUwBgyJDXBi88UBgz2rs9IiQ==", "dev": true, - "requires": { + "dependencies": { "js-yaml": "^3.13.1", "lcov-parse": "^1.0.0", "log-driver": "^1.2.7", "minimist": "^1.2.5", "request": "^2.88.0" + }, + "bin": { + "coveralls": "bin/coveralls.js" + }, + "engines": { + "node": ">=6" } }, - "create-ecdh": { + "node_modules/create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, - "requires": { + "dependencies": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } } }, - "create-hash": { + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, - "requires": { + "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", "md5.js": "^1.3.4", @@ -2440,12 +3024,12 @@ "sha.js": "^2.4.0" } }, - "create-hmac": { + "node_modules/create-hmac": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, - "requires": { + "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", "inherits": "^2.0.1", @@ -2454,32 +3038,44 @@ "sha.js": "^2.4.8" } }, - "cross-env": { + "node_modules/cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, - "requires": { + "dependencies": { "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "cross-spawn": { + "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "requires": { + "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "crypto-browserify": { + "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, - "requires": { + "dependencies": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", "create-ecdh": "^4.0.0", @@ -2491,217 +3087,265 @@ "public-encrypt": "^4.0.0", "randombytes": "^2.0.0", "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" } }, - "cssom": { + "node_modules/cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", "dev": true }, - "cssstyle": { + "node_modules/cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, - "requires": { + "dependencies": { "cssom": "~0.3.6" }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "cyclist": { + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", "dev": true }, - "dashdash": { + "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, - "requires": { + "dependencies": { "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" } }, - "data-urls": { + "node_modules/data-urls": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "dev": true, - "requires": { + "dependencies": { "abab": "^2.0.0", "whatwg-mimetype": "^2.2.0", "whatwg-url": "^7.0.0" } }, - "debug": { + "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "requires": { + "dependencies": { "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "decamelize": { + "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "decode-uri-component": { + "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10" + } }, - "deep-is": { + "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "deepmerge": { + "node_modules/deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "define-property": { + "node_modules/define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, - "requires": { + "dependencies": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "delayed-stream": { + "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "des.js": { + "node_modules/des.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, - "requires": { + "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" } }, - "detect-file": { + "node_modules/detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "detect-newline": { + "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "diff": { + "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.3.1" + } }, - "diff-sequences": { + "node_modules/diff-sequences": { "version": "25.2.6", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 8.3" + } }, - "diffie-hellman": { + "node_modules/diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, - "requires": { + "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } } }, - "doctrine": { + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "requires": { + "dependencies": { "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "domain-browser": { + "node_modules/domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } }, - "domexception": { + "node_modules/domexception": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "deprecated": "Use your platform's native DOMException instead", "dev": true, - "requires": { + "dependencies": { "webidl-conversions": "^4.0.2" } }, - "duplexify": { + "node_modules/duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, - "requires": { + "dependencies": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", "readable-stream": "^2.0.0", "stream-shift": "^1.0.0" } }, - "ecc-jsbn": { + "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, - "requires": { + "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, - "electron-to-chromium": { + "node_modules/electron-to-chromium": { "version": "1.4.284", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, - "elliptic": { + "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, - "requires": { + "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", "hash.js": "^1.0.0", @@ -2709,97 +3353,120 @@ "inherits": "^2.0.4", "minimalistic-assert": "^1.0.1", "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } } }, - "emoji-regex": { + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "emojis-list": { + "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">= 4" + } }, - "end-of-stream": { + "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "requires": { + "dependencies": { "once": "^1.4.0" } }, - "enhanced-resolve": { + "node_modules/enhanced-resolve": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.1.2", "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "errno": { + "node_modules/errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, - "requires": { + "dependencies": { "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" } }, - "error-ex": { + "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "requires": { + "dependencies": { "is-arrayish": "^0.2.1" } }, - "escalade": { + "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "escape-string-regexp": { + "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "escodegen": { + "node_modules/escodegen": { "version": "1.14.3", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dev": true, - "requires": { + "dependencies": { "esprima": "^4.0.1", "estraverse": "^4.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { "source-map": "~0.6.1" } }, - "eslint": { + "node_modules/eslint": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.0.0", "ajv": "^6.10.0", "chalk": "^2.1.0", @@ -2838,209 +3505,290 @@ "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "eslint-config-prettier": { + "node_modules/eslint-config-prettier": { "version": "6.10.1", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz", "integrity": "sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ==", "dev": true, - "requires": { + "dependencies": { "get-stdin": "^6.0.0" + }, + "bin": { + "eslint-config-prettier-check": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=3.14.1" } }, - "eslint-plugin-prettier": { + "node_modules/eslint-plugin-prettier": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", "dev": true, - "requires": { + "dependencies": { "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">= 5.0.0", + "prettier": ">= 1.13.0" } }, - "eslint-scope": { + "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "requires": { + "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" } }, - "eslint-utils": { + "node_modules/eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "requires": { + "dependencies": { "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "eslint-visitor-keys": { + "node_modules/eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "espree": { + "node_modules/eslint/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/eslint/node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/eslint/node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true, + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/eslint/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/espree": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", "dev": true, - "requires": { + "dependencies": { "acorn": "^7.1.1", "acorn-jsx": "^5.2.0", "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" } }, - "esprima": { + "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, - "esquery": { + "node_modules/esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "requires": { + "dependencies": { "estraverse": "^5.1.0" }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } + "engines": { + "node": ">=0.10" } }, - "esrecurse": { + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "requires": { + "dependencies": { "estraverse": "^5.2.0" }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } + "engines": { + "node": ">=4.0" } }, - "estraverse": { + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0" + } }, - "esutils": { + "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "events": { + "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.x" + } }, - "evp_bytestokey": { + "node_modules/evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, - "requires": { + "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" } }, - "exec-sh": { + "node_modules/exec-sh": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", "dev": true }, - "execa": { + "node_modules/execa": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", "dev": true, - "requires": { + "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", "human-signals": "^1.1.1", @@ -3051,20 +3799,26 @@ "p-finally": "^2.0.0", "signal-exit": "^3.0.2", "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": "^8.12.0 || >=9.7.0" } }, - "exit": { + "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, - "expand-brackets": { + "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dev": true, - "requires": { + "dependencies": { "debug": "^2.3.3", "define-property": "^0.2.5", "extend-shallow": "^2.0.1", @@ -3073,120 +3827,149 @@ "snapdragon": "^0.8.1", "to-regex": "^3.0.1" }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "expand-tilde": { + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "deprecated": "Please upgrade to v0.1.7", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "deprecated": "Please upgrade to v0.1.5", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, - "requires": { + "dependencies": { "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "expect": { + "node_modules/expect": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/expect/-/expect-25.5.0.tgz", "integrity": "sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^25.5.0", "ansi-styles": "^4.0.0", "jest-get-type": "^25.2.6", @@ -3194,66 +3977,82 @@ "jest-message-util": "^25.5.0", "jest-regex-util": "^25.2.6" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } + "engines": { + "node": ">= 8.3" } }, - "extend": { + "node_modules/expect/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expect/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expect/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "extend-shallow": { + "node_modules/extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dev": true, - "requires": { + "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "external-editor": { + "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, - "requires": { + "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" } }, - "extglob": { + "node_modules/extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, - "requires": { + "dependencies": { "array-unique": "^0.3.2", "define-property": "^1.0.0", "expand-brackets": "^2.1.4", @@ -3263,835 +4062,1057 @@ "snapdragon": "^0.8.1", "to-regex": "^3.0.1" }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "extsprintf": { + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true + "dev": true, + "engines": [ + "node >=0.6.0" + ] }, - "fast-deep-equal": { + "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "fast-diff": { + "node_modules/fast-diff": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, - "fast-json-stable-stringify": { + "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "fast-levenshtein": { + "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "fb-watchman": { + "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, - "requires": { + "dependencies": { "bser": "2.1.1" } }, - "figgy-pudding": { + "node_modules/figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "deprecated": "This module is no longer supported.", "dev": true }, - "figures": { + "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, - "requires": { + "dependencies": { "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "file-entry-cache": { + "node_modules/file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, - "requires": { + "dependencies": { "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" } }, - "file-uri-to-path": { + "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", "dev": true, "optional": true }, - "fill-range": { + "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "requires": { + "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "find-cache-dir": { + "node_modules/find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, - "requires": { + "dependencies": { "commondir": "^1.0.1", "make-dir": "^2.0.0", "pkg-dir": "^3.0.0" }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "engines": { + "node": ">=6" } }, - "find-up": { + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "requires": { + "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "findup-sync": { + "node_modules/findup-sync": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", "dev": true, - "requires": { + "dependencies": { "detect-file": "^1.0.0", "is-glob": "^4.0.0", "micromatch": "^3.0.4", "resolve-dir": "^1.0.1" }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } + "engines": { + "node": ">= 0.10" } }, - "flat-cache": { + "node_modules/findup-sync/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, - "requires": { + "dependencies": { "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "engines": { + "node": ">=4" } }, - "flatted": { + "node_modules/flat-cache/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/flatted": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "flush-write-stream": { + "node_modules/flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dev": true, - "requires": { + "dependencies": { "inherits": "^2.0.3", "readable-stream": "^2.3.6" } }, - "for-in": { + "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "forever-agent": { + "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "form-data": { + "node_modules/form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, - "requires": { + "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" } }, - "fragment-cache": { + "node_modules/fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dev": true, - "requires": { + "dependencies": { "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "from2": { + "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, - "requires": { + "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" } }, - "fs-minipass": { + "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "requires": { + "dependencies": { "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "fs-write-stream-atomic": { + "node_modules/fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "deprecated": "This package is no longer supported.", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.1.2", "iferr": "^0.1.5", "imurmurhash": "^0.1.4", "readable-stream": "1 || 2" } }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "fsevents": { + "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "function-bind": { + "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "functional-red-black-tree": { + "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, - "gensync": { + "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "get-caller-file": { + "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "get-package-type": { + "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=8.0.0" + } }, - "get-stdin": { + "node_modules/get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "get-stream": { + "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, - "requires": { + "dependencies": { "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "get-value": { + "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "getpass": { + "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, - "requires": { + "dependencies": { "assert-plus": "^1.0.0" } }, - "glob": { + "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "requires": { + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "glob-parent": { + "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "requires": { + "dependencies": { "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "global-modules": { + "node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, - "requires": { + "dependencies": { "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "global-prefix": { + "node_modules/global-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, - "requires": { + "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", "which": "^1.3.1" }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "engines": { + "node": ">=6" } }, - "globals": { + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "dev": true, - "requires": { + "dependencies": { "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "graceful-fs": { + "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, - "growly": { + "node_modules/growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", "dev": true, "optional": true }, - "har-schema": { + "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "har-validator": { + "node_modules/har-validator": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dev": true, - "requires": { + "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "has": { + "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "requires": { + "dependencies": { "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" } }, - "has-flag": { + "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "has-value": { + "node_modules/has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "dev": true, - "requires": { + "dependencies": { "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "has-values": { + "node_modules/has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "dev": true, - "requires": { + "dependencies": { "is-number": "^3.0.0", "kind-of": "^4.0.0" }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "engines": { + "node": ">=0.10.0" } }, - "hash-base": { + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, - "requires": { + "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", "safe-buffer": "^5.2.0" }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "engines": { + "node": ">=4" } }, - "hash.js": { + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, - "requires": { + "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" } }, - "hmac-drbg": { + "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dev": true, - "requires": { + "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.1" } }, - "homedir-polyfill": { + "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, - "requires": { + "dependencies": { "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "hosted-git-info": { + "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "html-encoding-sniffer": { + "node_modules/html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, - "requires": { + "dependencies": { "whatwg-encoding": "^1.0.1" } }, - "html-escaper": { + "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-signature": { + "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, - "requires": { + "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" } }, - "https-browserify": { + "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", "dev": true }, - "human-signals": { + "node_modules/human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true + "dev": true, + "engines": { + "node": ">=8.12.0" + } }, - "iconv-lite": { + "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "requires": { + "dependencies": { "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "ieee754": { + "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "iferr": { + "node_modules/iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", "dev": true }, - "ignore": { + "node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 4" + } }, - "import-fresh": { + "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "requires": { + "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "import-local": { + "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, - "requires": { + "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "imurmurhash": { + "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, - "infer-owner": { + "node_modules/infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, - "requires": { + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "ini": { + "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "inquirer": { + "node_modules/inquirer": { "version": "7.3.3", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", "dev": true, - "requires": { + "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", @@ -4106,353 +5127,477 @@ "strip-ansi": "^6.0.0", "through": "^2.3.6" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">=8.0.0" } }, - "interpret": { + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.10" + } }, - "ip-regex": { + "node_modules/ip-regex": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "is-accessor-descriptor": { + "node_modules/is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "deprecated": "Please upgrade to v1.0.1", "dev": true, - "requires": { + "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-arrayish": { + "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "is-binary-path": { + "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "optional": true, - "requires": { + "dependencies": { "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "is-buffer": { + "node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-ci": { + "node_modules/is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, - "requires": { + "dependencies": { "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" } }, - "is-core-module": { + "node_modules/is-core-module": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, - "requires": { + "dependencies": { "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-data-descriptor": { + "node_modules/is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "deprecated": "Please upgrade to v1.0.1", "dev": true, - "requires": { + "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-descriptor": { + "node_modules/is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, - "requires": { + "dependencies": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-docker": { + "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "optional": true + "optional": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-extendable": { + "node_modules/is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, - "requires": { + "dependencies": { "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-extglob": { + "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-fullwidth-code-point": { + "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "is-generator-fn": { + "node_modules/is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "is-glob": { + "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "requires": { + "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-number": { + "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, - "is-plain-object": { + "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "requires": { + "dependencies": { "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-stream": { + "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-typedarray": { + "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, - "is-windows": { + "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-wsl": { + "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "optional": true, - "requires": { + "dependencies": { "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "isarray": { + "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true }, - "isexe": { + "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "isobject": { + "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "isstream": { + "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, - "istanbul-lib-coverage": { + "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "istanbul-lib-instrument": { + "node_modules/istanbul-lib-instrument": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, - "requires": { + "dependencies": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.0.0", "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "istanbul-lib-report": { + "node_modules/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, - "requires": { + "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", "supports-color": "^7.1.0" }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">=8" } }, - "istanbul-lib-source-maps": { + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "requires": { + "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" } }, - "istanbul-reports": { + "node_modules/istanbul-reports": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, - "requires": { + "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "jest": { + "node_modules/jest": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/jest/-/jest-25.5.4.tgz", "integrity": "sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ==", "dev": true, - "requires": { + "dependencies": { "@jest/core": "^25.5.4", "import-local": "^3.0.2", "jest-cli": "^25.5.4" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 8.3" } }, - "jest-changed-files": { + "node_modules/jest-changed-files": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.5.0.tgz", "integrity": "sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^25.5.0", "execa": "^3.2.0", "throat": "^5.0.0" + }, + "engines": { + "node": ">= 8.3" } }, - "jest-cli": { + "node_modules/jest-cli": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.5.4.tgz", "integrity": "sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw==", "dev": true, - "requires": { + "dependencies": { "@jest/core": "^25.5.4", "@jest/test-result": "^25.5.0", "@jest/types": "^25.5.0", @@ -4468,64 +5613,86 @@ "realpath-native": "^2.0.0", "yargs": "^15.3.1" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 8.3" } }, - "jest-config": { + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.5.4.tgz", "integrity": "sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg==", "dev": true, - "requires": { + "dependencies": { "@babel/core": "^7.1.0", "@jest/test-sequencer": "^25.5.4", "@jest/types": "^25.5.0", @@ -4546,239 +5713,307 @@ "pretty-format": "^25.5.0", "realpath-native": "^2.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "jest-diff": { + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz", "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==", "dev": true, - "requires": { + "dependencies": { "chalk": "^3.0.0", "diff-sequences": "^25.2.6", "jest-get-type": "^25.2.6", "pretty-format": "^25.5.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "jest-docblock": { + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { "version": "25.3.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.3.0.tgz", "integrity": "sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==", "dev": true, - "requires": { + "dependencies": { "detect-newline": "^3.0.0" + }, + "engines": { + "node": ">= 8.3" } }, - "jest-each": { + "node_modules/jest-each": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.5.0.tgz", "integrity": "sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^25.5.0", "chalk": "^3.0.0", "jest-get-type": "^25.2.6", "jest-util": "^25.5.0", "pretty-format": "^25.5.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "jest-environment-jsdom": { + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz", "integrity": "sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A==", "dev": true, - "requires": { + "dependencies": { "@jest/environment": "^25.5.0", "@jest/fake-timers": "^25.5.0", "@jest/types": "^25.5.0", "jest-mock": "^25.5.0", "jest-util": "^25.5.0", "jsdom": "^15.2.1" + }, + "engines": { + "node": ">= 8.3" } }, - "jest-environment-node": { + "node_modules/jest-environment-node": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.5.0.tgz", "integrity": "sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA==", "dev": true, - "requires": { + "dependencies": { "@jest/environment": "^25.5.0", "@jest/fake-timers": "^25.5.0", "@jest/types": "^25.5.0", "jest-mock": "^25.5.0", "jest-util": "^25.5.0", "semver": "^6.3.0" + }, + "engines": { + "node": ">= 8.3" } }, - "jest-get-type": { + "node_modules/jest-get-type": { "version": "25.2.6", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", - "dev": true + "dev": true, + "engines": { + "node": ">= 8.3" + } }, - "jest-haste-map": { + "node_modules/jest-haste-map": { "version": "25.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^25.5.0", "@types/graceful-fs": "^4.1.2", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", - "fsevents": "^2.1.2", "graceful-fs": "^4.2.4", "jest-serializer": "^25.5.0", "jest-util": "^25.5.0", @@ -4787,14 +6022,20 @@ "sane": "^4.0.3", "walker": "^1.0.7", "which": "^2.0.2" + }, + "engines": { + "node": ">= 8.3" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" } }, - "jest-jasmine2": { + "node_modules/jest-jasmine2": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz", "integrity": "sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ==", "dev": true, - "requires": { + "dependencies": { "@babel/traverse": "^7.1.0", "@jest/environment": "^25.5.0", "@jest/source-map": "^25.5.0", @@ -4813,137 +6054,178 @@ "pretty-format": "^25.5.0", "throat": "^5.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "jest-leak-detector": { + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz", "integrity": "sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA==", "dev": true, - "requires": { + "dependencies": { "jest-get-type": "^25.2.6", "pretty-format": "^25.5.0" + }, + "engines": { + "node": ">= 8.3" } }, - "jest-matcher-utils": { + "node_modules/jest-matcher-utils": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz", "integrity": "sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==", "dev": true, - "requires": { + "dependencies": { "chalk": "^3.0.0", "jest-diff": "^25.5.0", "jest-get-type": "^25.2.6", "pretty-format": "^25.5.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "jest-message-util": { + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.0.0", "@jest/types": "^25.5.0", "@types/stack-utils": "^1.0.1", @@ -4953,85 +6235,121 @@ "slash": "^3.0.0", "stack-utils": "^1.0.1" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "jest-mock": { + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^25.5.0" + }, + "engines": { + "node": ">= 8.3" } }, - "jest-pnp-resolver": { + "node_modules/jest-pnp-resolver": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } }, - "jest-regex-util": { + "node_modules/jest-regex-util": { "version": "25.2.6", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.6.tgz", "integrity": "sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==", - "dev": true + "dev": true, + "engines": { + "node": ">= 8.3" + } }, - "jest-resolve": { + "node_modules/jest-resolve": { "version": "25.5.1", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.5.1.tgz", "integrity": "sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^25.5.0", "browser-resolve": "^1.11.3", "chalk": "^3.0.0", @@ -5042,75 +6360,97 @@ "resolve": "^1.17.0", "slash": "^3.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "jest-resolve-dependencies": { + "node_modules/jest-resolve-dependencies": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz", "integrity": "sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^25.5.0", "jest-regex-util": "^25.2.6", "jest-snapshot": "^25.5.1" + }, + "engines": { + "node": ">= 8.3" } }, - "jest-runner": { + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.5.4.tgz", "integrity": "sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg==", "dev": true, - "requires": { + "dependencies": { "@jest/console": "^25.5.0", "@jest/environment": "^25.5.0", "@jest/test-result": "^25.5.0", @@ -5131,64 +6471,83 @@ "source-map-support": "^0.5.6", "throat": "^5.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "jest-runtime": { + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.5.4.tgz", "integrity": "sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ==", "dev": true, - "requires": { + "dependencies": { "@jest/console": "^25.5.0", "@jest/environment": "^25.5.0", "@jest/globals": "^25.5.2", @@ -5216,73 +6575,98 @@ "strip-bom": "^4.0.0", "yargs": "^15.3.1" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "bin": { + "jest-runtime": "bin/jest-runtime.js" + }, + "engines": { + "node": ">= 8.3" } }, - "jest-serializer": { + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-serializer": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.2.4" + }, + "engines": { + "node": ">= 8.3" } }, - "jest-snapshot": { + "node_modules/jest-snapshot": { "version": "25.5.1", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.5.1.tgz", "integrity": "sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.0.0", "@jest/types": "^25.5.0", "@types/prettier": "^1.19.0", @@ -5299,128 +6683,166 @@ "pretty-format": "^25.5.0", "semver": "^6.3.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "jest-util": { + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^25.5.0", "chalk": "^3.0.0", "graceful-fs": "^4.2.4", "is-ci": "^2.0.0", "make-dir": "^3.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "jest-validate": { + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.5.0.tgz", "integrity": "sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^25.5.0", "camelcase": "^5.3.1", "chalk": "^3.0.0", @@ -5428,64 +6850,83 @@ "leven": "^3.1.0", "pretty-format": "^25.5.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "jest-watcher": { + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.5.0.tgz", "integrity": "sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q==", "dev": true, - "requires": { + "dependencies": { "@jest/test-result": "^25.5.0", "@jest/types": "^25.5.0", "ansi-escapes": "^4.2.1", @@ -5493,113 +6934,142 @@ "jest-util": "^25.5.0", "string-length": "^3.1.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "jest-worker": { + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", "dev": true, - "requires": { + "dependencies": { "merge-stream": "^2.0.0", "supports-color": "^7.0.0" }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 8.3" } }, - "js-tokens": { + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "js-yaml": { + "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "requires": { + "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "jsbn": { + "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, - "jsdom": { + "node_modules/jsdom": { "version": "15.2.1", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", "dev": true, - "requires": { + "dependencies": { "abab": "^2.0.0", "acorn": "^7.1.0", "acorn-globals": "^4.3.2", @@ -5626,374 +7096,467 @@ "whatwg-url": "^7.0.0", "ws": "^7.0.0", "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "jsesc": { + "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } }, - "json-parse-better-errors": { + "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "json-parse-even-better-errors": { + "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "json-schema": { + "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, - "json-schema-traverse": { + "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "json-stable-stringify-without-jsonify": { + "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "json-stringify-safe": { + "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, - "json5": { + "node_modules/json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } }, - "jsprim": { + "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, - "requires": { + "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", "json-schema": "0.4.0", "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" } }, - "just-extend": { + "node_modules/just-extend": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", "dev": true }, - "kind-of": { + "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "kleur": { + "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "lcov-parse": { + "node_modules/lcov-parse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", "integrity": "sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==", - "dev": true + "dev": true, + "bin": { + "lcov-parse": "bin/cli.js" + } }, - "leven": { + "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "levn": { + "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, - "requires": { + "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "lines-and-columns": { + "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "loader-runner": { + "node_modules/loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } }, - "loader-utils": { + "node_modules/loader-utils": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, - "requires": { + "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", "json5": "^1.0.1" }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } + "engines": { + "node": ">=4.0.0" } }, - "locate-path": { + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "requires": { + "dependencies": { "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "lodash": { + "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash.get": { + "node_modules/lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", "dev": true }, - "lodash.memoize": { + "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, - "lodash.sortby": { + "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, - "log-driver": { + "node_modules/log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.6" + } }, - "lolex": { + "node_modules/lolex": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", "dev": true, - "requires": { + "dependencies": { "@sinonjs/commons": "^1.7.0" } }, - "lru-cache": { + "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "requires": { - "yallist": "^3.0.2" - }, "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } + "yallist": "^3.0.2" } }, - "make-dir": { + "node_modules/lru-cache/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "requires": { + "dependencies": { "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "make-error": { + "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "makeerror": { + "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, - "requires": { + "dependencies": { "tmpl": "1.0.5" } }, - "map-cache": { + "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "map-visit": { + "node_modules/map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, - "requires": { + "dependencies": { "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "md5.js": { + "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, - "requires": { + "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", "safe-buffer": "^5.1.2" } }, - "memory-fs": { + "node_modules/memory-fs": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", "dev": true, - "requires": { + "dependencies": { "errno": "^0.1.3", "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "merge-stream": { + "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "micromatch": { + "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "requires": { + "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "miller-rabin": { + "node_modules/miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, - "requires": { + "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } + "bin": { + "miller-rabin": "bin/miller-rabin" } }, - "mime-db": { + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { + "node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "requires": { + "dependencies": { "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "mimic-fn": { + "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "minimalistic-assert": { + "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, - "minimalistic-crypto-utils": { + "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", "dev": true }, - "minimatch": { + "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "minipass": { + "node_modules/minipass": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", "dev": true, - "requires": { + "dependencies": { "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "minizlib": { + "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, - "requires": { + "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" } }, - "mississippi": { + "node_modules/mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", "dev": true, - "requires": { + "dependencies": { "concat-stream": "^1.5.0", "duplexify": "^3.4.2", "end-of-stream": "^1.1.0", @@ -6004,77 +7567,89 @@ "pumpify": "^1.3.3", "stream-each": "^1.1.0", "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, - "mixin-deep": { + "node_modules/mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, - "requires": { + "dependencies": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "mkdirp": { + "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, - "requires": { + "dependencies": { "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "move-concurrently": { + "node_modules/move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "deprecated": "This package is no longer supported.", "dev": true, - "requires": { + "dependencies": { "aproba": "^1.1.1", "copy-concurrently": "^1.0.0", "fs-write-stream-atomic": "^1.0.8", "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, - "ms": { + "node_modules/move-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "mute-stream": { + "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "nan": { + "node_modules/nan": { "version": "2.17.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "dev": true, "optional": true }, - "nanomatch": { + "node_modules/nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, - "requires": { + "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", "define-property": "^2.0.2", @@ -6086,32 +7661,35 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "natural-compare": { + "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "neo-async": { + "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "nice-try": { + "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "nise": { + "node_modules/nise": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz", "integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==", "dev": true, - "requires": { + "dependencies": { "@sinonjs/commons": "^1.7.0", "@sinonjs/fake-timers": "^6.0.0", "@sinonjs/text-encoding": "^0.7.1", @@ -6119,18 +7697,18 @@ "path-to-regexp": "^1.7.0" } }, - "node-int64": { + "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, - "node-libs-browser": { + "node_modules/node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, - "requires": { + "dependencies": { "assert": "^1.1.1", "browserify-zlib": "^0.2.0", "buffer": "^4.3.0", @@ -6154,299 +7732,372 @@ "url": "^0.11.0", "util": "^0.11.0", "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - } } }, - "node-notifier": { + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/node-notifier": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-6.0.0.tgz", "integrity": "sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw==", "dev": true, "optional": true, - "requires": { + "dependencies": { "growly": "^1.3.0", "is-wsl": "^2.1.1", "semver": "^6.3.0", "shellwords": "^0.1.1", "which": "^1.3.1" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "optional": true, - "requires": { - "isexe": "^2.0.0" - } - } } }, - "node-releases": { + "node_modules/node-notifier/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, - "normalize-package-data": { + "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "requires": { + "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, - "normalize-path": { + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "npm-run-path": { + "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "requires": { + "dependencies": { "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "nwsapi": { + "node_modules/nwsapi": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", "dev": true }, - "oauth-sign": { + "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "object-assign": { + "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "object-copy": { + "node_modules/object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, - "requires": { + "dependencies": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", "kind-of": "^3.0.3" }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "engines": { + "node": ">=0.10.0" } }, - "object-visit": { + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "deprecated": "Please upgrade to v0.1.7", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "deprecated": "Please upgrade to v0.1.5", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, - "requires": { + "dependencies": { "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "object.pick": { + "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, - "requires": { + "dependencies": { "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "requires": { + "dependencies": { "wrappy": "1" } }, - "onetime": { + "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "requires": { + "dependencies": { "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "optionator": { + "node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, - "requires": { + "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" } }, - "os-browserify": { + "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, - "os-tmpdir": { + "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "p-each-series": { + "node_modules/p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "p-finally": { + "node_modules/p-finally": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "p-limit": { + "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "requires": { + "dependencies": { "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { + "node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "requires": { + "dependencies": { "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "p-try": { + "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "pako": { + "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, - "parallel-transform": { + "node_modules/parallel-transform": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, - "requires": { + "dependencies": { "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" } }, - "parent-module": { + "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "requires": { + "dependencies": { "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "parse-asn1": { + "node_modules/parse-asn1": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, - "requires": { + "dependencies": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", "evp_bytestokey": "^1.0.0", @@ -6454,392 +8105,484 @@ "safe-buffer": "^5.1.1" } }, - "parse-json": { + "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "parse-passwd": { + "node_modules/parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "parse5": { + "node_modules/parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", "dev": true }, - "pascalcase": { + "node_modules/pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "path-browserify": { + "node_modules/path-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, - "path-dirname": { + "node_modules/path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", "dev": true, "optional": true }, - "path-exists": { + "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "path-key": { + "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-parse": { + "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-to-regexp": { + "node_modules/path-to-regexp": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "dev": true, - "requires": { + "dependencies": { "isarray": "0.0.1" } }, - "pbkdf2": { + "node_modules/pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, - "requires": { + "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", "ripemd160": "^2.0.1", "safe-buffer": "^5.0.1", "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" } }, - "performance-now": { + "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, - "picocolors": { + "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, - "picomatch": { + "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "pify": { + "node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "pirates": { + "node_modules/pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 6" + } }, - "pkg-dir": { + "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "requires": { + "dependencies": { "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "pn": { + "node_modules/pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", "dev": true }, - "posix-character-classes": { + "node_modules/posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "prelude-ls": { + "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, - "prettier": { + "node_modules/prettier": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.2.tgz", "integrity": "sha512-5xJQIPT8BraI7ZnaDwSbu5zLrB6vvi8hVV58yHQ+QK64qrY40dULy0HSRlQ2/2IdzeBpjhDkqdcFBnFeDEMVdg==", - "dev": true + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } }, - "prettier-linter-helpers": { + "node_modules/prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, - "requires": { + "dependencies": { "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "pretty-format": { + "node_modules/pretty-format": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^25.5.0", "ansi-regex": "^5.0.0", "ansi-styles": "^4.0.0", "react-is": "^16.12.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } + "engines": { + "node": ">= 8.3" } }, - "process": { + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/pretty-format/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6.0" + } }, - "process-nextick-args": { + "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "progress": { + "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "promise-inflight": { + "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, - "prompts": { + "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, - "requires": { + "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" } }, - "prr": { + "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true }, - "psl": { + "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, - "public-encrypt": { + "node_modules/public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, - "requires": { + "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } } }, - "pump": { + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, - "requires": { + "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, - "pumpify": { + "node_modules/pumpify": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, - "requires": { + "dependencies": { "duplexify": "^3.6.0", "inherits": "^2.0.3", "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } } }, - "punycode": { + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "qs": { + "node_modules/qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6" + } }, - "querystring": { + "node_modules/querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "dev": true + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } }, - "querystring-es3": { + "node_modules/querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.x" + } }, - "randombytes": { + "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "requires": { + "dependencies": { "safe-buffer": "^5.1.0" } }, - "randomfill": { + "node_modules/randomfill": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, - "requires": { + "dependencies": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" } }, - "react-is": { + "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true }, - "read-pkg": { + "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "requires": { + "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", "parse-json": "^5.0.0", "type-fest": "^0.6.0" }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "read-pkg-up": { + "node_modules/read-pkg-up": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "requires": { + "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "readable-stream": { + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "requires": { + "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", @@ -6847,78 +8590,98 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } } }, - "readdirp": { + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "optional": true, - "requires": { + "dependencies": { "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "realpath-native": { + "node_modules/realpath-native": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-2.0.0.tgz", "integrity": "sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "regex-not": { + "node_modules/regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, - "requires": { + "dependencies": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "regexpp": { + "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } }, - "remove-trailing-separator": { + "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true }, - "repeat-element": { + "node_modules/repeat-element": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "repeat-string": { + "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10" + } }, - "request": { + "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, - "requires": { + "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", "caseless": "~0.12.0", @@ -6940,240 +8703,322 @@ "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } + "engines": { + "node": ">= 6" } }, - "request-promise-core": { + "node_modules/request-promise-core": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", "dev": true, - "requires": { + "dependencies": { "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" } }, - "request-promise-native": { + "node_modules/request-promise-native": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", "dev": true, - "requires": { + "dependencies": { "request-promise-core": "1.1.4", "stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" } }, - "require-directory": { + "node_modules/request-promise-native/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "require-main-filename": { + "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "resolve": { + "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, - "requires": { + "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve-cwd": { + "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "requires": { + "dependencies": { "resolve-from": "^5.0.0" }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "resolve-dir": { + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, - "requires": { + "dependencies": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" }, - "dependencies": { - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "engines": { + "node": ">=0.10.0" } }, - "resolve-from": { + "node_modules/resolve-dir/node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "resolve-url": { + "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", "dev": true }, - "restore-cursor": { + "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "requires": { + "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" } }, - "ret": { + "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12" + } }, - "rimraf": { + "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "requires": { + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "ripemd160": { + "node_modules/ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, - "requires": { + "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" } }, - "rsvp": { + "node_modules/rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "dev": true + "dev": true, + "engines": { + "node": "6.* || >= 7.*" + } }, - "run-async": { + "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, - "run-queue": { + "node_modules/run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", "dev": true, - "requires": { + "dependencies": { "aproba": "^1.1.1" } }, - "rxjs": { + "node_modules/rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "requires": { + "dependencies": { "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" } }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "safe-regex": { + "node_modules/safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, - "requires": { + "dependencies": { "ret": "~0.1.10" } }, - "safer-buffer": { + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "sane": { + "node_modules/sane": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", "dev": true, - "requires": { + "dependencies": { "@cnakazawa/watch": "^1.0.3", "anymatch": "^2.0.0", "capture-exit": "^2.0.0", @@ -7184,351 +9029,438 @@ "minimist": "^1.1.1", "walker": "~1.0.5" }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "saxes": { + "node_modules/sane/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/sane/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/sane/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sane/node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/sane/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/sane/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sane/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/saxes": { "version": "3.1.11", "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", "dev": true, - "requires": { + "dependencies": { "xmlchars": "^2.1.1" + }, + "engines": { + "node": ">=8" } }, - "schema-utils": { + "node_modules/schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, - "requires": { + "dependencies": { "ajv": "^6.1.0", "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" } }, - "semver": { + "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "serialize-javascript": { + "node_modules/serialize-javascript": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, - "requires": { + "dependencies": { "randombytes": "^2.1.0" } }, - "set-blocking": { + "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, - "set-value": { + "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, - "requires": { + "dependencies": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", "is-plain-object": "^2.0.3", "split-string": "^3.0.1" }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "setimmediate": { + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, - "sha.js": { + "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, - "requires": { + "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" } }, - "shebang-command": { + "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "requires": { + "dependencies": { "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "shellwords": { + "node_modules/shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "dev": true, "optional": true }, - "signal-exit": { + "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "sinon": { + "node_modules/sinon": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.0.1.tgz", "integrity": "sha512-iTTyiQo5T94jrOx7X7QLBZyucUJ2WvL9J13+96HMfm2CGoJYbIPqRfl6wgNcqmzk0DI28jeGx5bUTXizkrqBmg==", + "deprecated": "16.1.1", "dev": true, - "requires": { + "dependencies": { "@sinonjs/commons": "^1.7.0", "@sinonjs/fake-timers": "^6.0.0", "@sinonjs/formatio": "^5.0.1", @@ -7537,61 +9469,76 @@ "nise": "^4.0.1", "supports-color": "^7.1.0" }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" } }, - "sisteransi": { + "node_modules/sinon/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, - "slash": { + "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "slice-ansi": { + "node_modules/slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - } + "engines": { + "node": ">=6" } }, - "snapdragon": { + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, - "requires": { + "dependencies": { "base": "^0.11.1", "debug": "^2.2.0", "define-property": "^0.2.5", @@ -7601,171 +9548,212 @@ "source-map-resolve": "^0.5.0", "use": "^3.1.0" }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "snapdragon-node": { + "node_modules/snapdragon-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, - "requires": { + "dependencies": { "define-property": "^1.0.0", "isobject": "^3.0.0", "snapdragon-util": "^3.0.1" }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } + "engines": { + "node": ">=0.10.0" } }, - "snapdragon-util": { + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, - "requires": { + "dependencies": { "kind-of": "^3.2.0" }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "engines": { + "node": ">=0.10.0" } }, - "source-list-map": { + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "deprecated": "Please upgrade to v0.1.7", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "deprecated": "Please upgrade to v0.1.5", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", "dev": true }, - "source-map": { + "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "source-map-resolve": { + "node_modules/source-map-resolve": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "dev": true, - "requires": { + "dependencies": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", @@ -7773,75 +9761,79 @@ "urix": "^0.1.0" } }, - "source-map-support": { + "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "requires": { + "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "source-map-url": { + "node_modules/source-map-url": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", "dev": true }, - "spdx-correct": { + "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, - "requires": { + "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-exceptions": { + "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, - "spdx-expression-parse": { + "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "requires": { + "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-license-ids": { + "node_modules/spdx-license-ids": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, - "split-string": { + "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, - "requires": { + "dependencies": { "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "sprintf-js": { + "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "sshpk": { + "node_modules/sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, - "requires": { + "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", "bcrypt-pbkdf": "^1.0.0", @@ -7851,144 +9843,179 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" } }, - "ssri": { + "node_modules/ssri": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, - "requires": { + "dependencies": { "figgy-pudding": "^3.5.1" } }, - "stack-utils": { + "node_modules/stack-utils": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", "dev": true, - "requires": { + "dependencies": { "escape-string-regexp": "^2.0.0" }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "static-extend": { + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, - "requires": { + "dependencies": { "define-property": "^0.2.5", "object-copy": "^0.1.0" }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "stealthy-require": { + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "deprecated": "Please upgrade to v0.1.7", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "deprecated": "Please upgrade to v0.1.5", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "stream-browserify": { + "node_modules/stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, - "requires": { + "dependencies": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" } }, - "stream-each": { + "node_modules/stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", "dev": true, - "requires": { + "dependencies": { "end-of-stream": "^1.1.0", "stream-shift": "^1.0.0" } }, - "stream-http": { + "node_modules/stream-http": { "version": "2.8.3", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "dev": true, - "requires": { + "dependencies": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.1", "readable-stream": "^2.3.6", @@ -7996,199 +10023,249 @@ "xtend": "^4.0.0" } }, - "stream-shift": { + "node_modules/stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, - "string-length": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", - "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", - "dev": true, - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^5.2.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "string_decoder": { + "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - }, "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } + "safe-buffer": "~5.1.0" } }, - "strip-ansi": { + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/string-length": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "dev": true, + "dependencies": { + "astral-regex": "^1.0.0", + "strip-ansi": "^5.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, - "requires": { + "dependencies": { "ansi-regex": "^4.1.0" }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - } + "engines": { + "node": ">=6" } }, - "strip-bom": { + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "strip-eof": { + "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "strip-final-newline": { + "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "strip-json-comments": { + "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "supports-color": { + "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "requires": { + "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "supports-hyperlinks": { + "node_modules/supports-hyperlinks": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, - "requires": { + "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">=8" } }, - "supports-preserve-symlinks-flag": { + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "symbol-tree": { + "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "table": { + "node_modules/table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, - "requires": { + "dependencies": { "ajv": "^6.10.2", "lodash": "^4.17.14", "slice-ansi": "^2.1.0", "string-width": "^3.0.0" }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } + "engines": { + "node": ">=6.0.0" } }, - "tapable": { + "node_modules/table/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "tar": { + "node_modules/tar": { "version": "6.1.9", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.9.tgz", "integrity": "sha512-XjLaMNl76o07zqZC/aW4lwegdY07baOH1T8w3AEfrHAdyg/oYO4ctjzEBq9Gy9fEP9oHqLIgvx6zuGDGe+bc8Q==", "dev": true, - "requires": { + "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^3.0.0", @@ -8196,42 +10273,61 @@ "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } + "engines": { + "node": ">= 10" } }, - "terminal-link": { + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "dev": true, - "requires": { + "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "terser": { + "node_modules/terser": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, - "requires": { + "dependencies": { "commander": "^2.20.0", "source-map": "~0.6.1", "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" } }, - "terser-webpack-plugin": { + "node_modules/terser-webpack-plugin": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "dev": true, - "requires": { + "dependencies": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", @@ -8242,157 +10338,189 @@ "webpack-sources": "^1.4.0", "worker-farm": "^1.7.0" }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true - } + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, - "test-exclude": { + "node_modules/terser-webpack-plugin/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, - "requires": { + "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "text-table": { + "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "throat": { + "node_modules/throat": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "dev": true }, - "through": { + "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "through2": { + "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, - "requires": { + "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" } }, - "timers-browserify": { + "node_modules/timers-browserify": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, - "requires": { + "dependencies": { "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" } }, - "tmp": { + "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "requires": { + "dependencies": { "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" } }, - "tmpl": { + "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, - "to-arraybuffer": { + "node_modules/to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", "dev": true }, - "to-fast-properties": { + "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "to-object-path": { + "node_modules/to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, - "requires": { + "dependencies": { "kind-of": "^3.0.2" }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "engines": { + "node": ">=0.10.0" } }, - "to-regex": { + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, - "requires": { + "dependencies": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", "regex-not": "^1.0.2", "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "to-regex-range": { + "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "tough-cookie": { + "node_modules/tough-cookie": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", "dev": true, - "requires": { + "dependencies": { "ip-regex": "^2.1.0", "psl": "^1.1.28", "punycode": "^2.1.1" + }, + "engines": { + "node": ">=6" } }, - "tr46": { + "node_modules/tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, - "requires": { + "dependencies": { "punycode": "^2.1.0" } }, - "ts-jest": { + "node_modules/ts-jest": { "version": "25.5.1", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-25.5.1.tgz", "integrity": "sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw==", "dev": true, - "requires": { + "dependencies": { "bs-logger": "0.x", "buffer-from": "1.x", "fast-json-stable-stringify": "2.x", @@ -8403,618 +10531,743 @@ "mkdirp": "0.x", "semver": "6.x", "yargs-parser": "18.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": ">= 8" + }, + "peerDependencies": { + "jest": ">=25 <26", + "typescript": ">=3.4 <4.0" } }, - "ts-loader": { + "node_modules/ts-loader": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.2.tgz", "integrity": "sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ==", "dev": true, - "requires": { + "dependencies": { "chalk": "^2.3.0", "enhanced-resolve": "^4.0.0", "loader-utils": "^1.0.2", "micromatch": "^4.0.0", "semver": "^6.0.0" + }, + "engines": { + "node": ">=8.6" + }, + "peerDependencies": { + "typescript": "*" } }, - "tslib": { + "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "tsutils": { + "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "requires": { + "dependencies": { "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "tty-browserify": { + "node_modules/tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", "dev": true }, - "tunnel-agent": { + "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, - "requires": { + "dependencies": { "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" } }, - "tweetnacl": { + "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, - "type-check": { + "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, - "requires": { + "dependencies": { "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "type-detect": { + "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "type-fest": { + "node_modules/type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "typedarray": { + "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, - "typedarray-to-buffer": { + "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, - "requires": { + "dependencies": { "is-typedarray": "^1.0.0" } }, - "typescript": { + "node_modules/typescript": { "version": "3.9.10", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } }, - "union-value": { + "node_modules/union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, - "requires": { + "dependencies": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", "set-value": "^2.0.1" }, - "dependencies": { - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "unique-filename": { + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, - "requires": { + "dependencies": { "unique-slug": "^2.0.0" } }, - "unique-slug": { + "node_modules/unique-slug": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, - "requires": { + "dependencies": { "imurmurhash": "^0.1.4" } }, - "unset-value": { + "node_modules/unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, - "requires": { + "dependencies": { "has-value": "^0.3.1", "isobject": "^3.0.0" }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "upath": { + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=4", + "yarn": "*" + } }, - "update-browserslist-db": { + "node_modules/update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, - "requires": { + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "uri-js": { + "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "requires": { + "dependencies": { "punycode": "^2.1.0" } }, - "urix": { + "node_modules/urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", "dev": true }, - "url": { + "node_modules/url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "dev": true, - "requires": { + "dependencies": { "punycode": "1.3.2", "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - } } }, - "use": { + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + }, + "node_modules/use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "util": { + "node_modules/util": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "dev": true, - "requires": { - "inherits": "2.0.3" - }, "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - } + "inherits": "2.0.3" } }, - "util-deprecate": { + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "uuid": { + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } }, - "v8-compile-cache": { + "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "v8-to-istanbul": { + "node_modules/v8-to-istanbul": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz", "integrity": "sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==", "dev": true, - "requires": { + "dependencies": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", "source-map": "^0.7.3" }, - "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } + "engines": { + "node": "8.x.x || >=10.10.0" } }, - "validate-npm-package-license": { + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "requires": { + "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, - "verror": { + "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, - "requires": { + "engines": [ + "node >=0.6.0" + ], + "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - } } }, - "vm-browserify": { + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, - "w3c-hr-time": { + "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dev": true, - "requires": { + "dependencies": { "browser-process-hrtime": "^1.0.0" } }, - "w3c-xmlserializer": { + "node_modules/w3c-xmlserializer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", "dev": true, - "requires": { + "dependencies": { "domexception": "^1.0.1", "webidl-conversions": "^4.0.2", "xml-name-validator": "^3.0.0" } }, - "walker": { + "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "requires": { + "dependencies": { "makeerror": "1.0.12" } }, - "watchpack": { + "node_modules/watchpack": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, - "requires": { - "chokidar": "^3.4.1", + "dependencies": { "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", "watchpack-chokidar2": "^2.0.1" } }, - "watchpack-chokidar2": { + "node_modules/watchpack-chokidar2": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "dev": true, "optional": true, - "requires": { - "chokidar": "^2.1.8" - }, "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "optional": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "optional": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } + "chokidar": "^2.1.8" } }, - "webidl-conversions": { + "node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "optional": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, - "webpack": { + "node_modules/webpack": { "version": "4.46.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", "dev": true, - "requires": { + "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-module-context": "1.9.0", "@webassemblyjs/wasm-edit": "1.9.0", @@ -9039,150 +11292,31 @@ "watchpack": "^1.7.4", "webpack-sources": "^1.4.1" }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } + "webpack-command": { + "optional": true } } }, - "webpack-cli": { + "node_modules/webpack-cli": { "version": "3.3.12", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", "dev": true, - "requires": { + "dependencies": { "chalk": "^2.4.2", "cross-spawn": "^6.0.5", "enhanced-resolve": "^4.1.1", @@ -9195,389 +11329,661 @@ "v8-compile-cache": "^2.1.1", "yargs": "^13.3.2" }, - "dependencies": { - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "peerDependencies": { + "webpack": "4.x.x" } }, - "webpack-sources": { + "node_modules/webpack-cli/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/webpack-cli/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/webpack-cli/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/webpack-cli/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-cli/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-cli/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-cli/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "dev": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-cli/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-cli/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/webpack-cli/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-cli/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-cli/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/webpack-cli/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/webpack-cli/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/webpack-sources": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, - "requires": { + "dependencies": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" } }, - "whatwg-encoding": { + "node_modules/webpack/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/webpack/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-encoding": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, - "requires": { + "dependencies": { "iconv-lite": "0.4.24" } }, - "whatwg-mimetype": { + "node_modules/whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", "dev": true }, - "whatwg-url": { + "node_modules/whatwg-url": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, - "requires": { + "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", "webidl-conversions": "^4.0.2" } }, - "which": { + "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "requires": { + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "which-module": { + "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, - "word-wrap": { + "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "worker-farm": { + "node_modules/worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, - "requires": { + "dependencies": { "errno": "~0.1.7" } }, - "wrap-ansi": { + "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } + "engines": { + "node": ">=8" } }, - "wrappy": { + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "write": { + "node_modules/write": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, - "requires": { + "dependencies": { "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" } }, - "write-file-atomic": { + "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, - "requires": { + "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, - "ws": { + "node_modules/ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "xml-name-validator": { + "node_modules/xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, - "xmlchars": { + "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "xtend": { + "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4" + } }, - "y18n": { + "node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, - "yallist": { + "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "yargs": { + "node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, - "requires": { + "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", "find-up": "^4.1.0", @@ -9589,16 +11995,22 @@ "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" } }, - "yargs-parser": { + "node_modules/yargs-parser": { "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, - "requires": { + "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" } } } diff --git a/package.json b/package.json index 160fc0b..458e7de 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "crypto-pro-js-m", - "version": "1.0.2", + "version": "1.1.0", "description": "Асинхронный JavaScript API для работы с КриптоПРО ЭЦП Browser Plug-In. Forked from https://github.com/crypto-pro-web/crypto-pro-js", "main": "./lib/crypto-pro-js-m.js", "types": "./lib/crypto-pro-js-m.d.ts", diff --git a/src/api/addAttachedSignature.test.ts b/src/api/addAttachedSignature.test.ts deleted file mode 100644 index ddb04f0..0000000 --- a/src/api/addAttachedSignature.test.ts +++ /dev/null @@ -1,89 +0,0 @@ -import 'cadesplugin'; -import { rawCertificates, parsedCertificates } from '../__mocks__/certificates'; -import { createAttachedSignature } from './createAttachedSignature'; -import { _getCadesCert } from '../helpers/_getCadesCert'; -import { addAttachedSignature } from './addAttachedSignature'; - -const [rawCertificateMock] = rawCertificates; -const [parsedCertificateMock] = parsedCertificates; - -jest.mock('../helpers/_getCadesCert', () => ({ _getCadesCert: jest.fn(() => rawCertificateMock) })); - -beforeEach(() => { - (_getCadesCert as jest.Mock).mockClear(); -}); - -const executionSteps = [ - Symbol('step 0'), - Symbol('step 1'), - Symbol('step 2'), - Symbol('step 3'), - Symbol('step 4'), - Symbol('step 5'), -]; - -const executionFlow = { - [executionSteps[0]]: { - propset_Name: jest.fn(), - propset_Value: jest.fn(), - }, - [executionSteps[1]]: { - propset_ContentEncoding: jest.fn(), - propset_Content: jest.fn(), - SignCades: jest.fn(() => executionSteps[4]), - VerifyCades: jest.fn(), - CoSignCades: jest.fn(() => executionSteps[5]), - }, - [executionSteps[2]]: { - propset_Certificate: jest.fn(), - AuthenticatedAttributes2: executionSteps[3], - propset_Options: jest.fn(), - }, - [executionSteps[3]]: { - Add: jest.fn(), - }, - [executionSteps[4]]: 'signature', - [executionSteps[5]]: 'newSignature', -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation((object) => { - switch (object) { - case 'CADESCOM.CPAttribute': - return executionSteps[0]; - case 'CAdESCOM.CadesSignedData': - return executionSteps[1]; - case 'CAdESCOM.CPSigner': - return executionSteps[2]; - } -}); - -describe('addAttachedSignature', () => { - test('uses Buffer to encrypt the message', async () => { - const originalBufferFrom = global.Buffer.from; - - (global.Buffer.from as jest.Mock) = jest.fn(() => ({ - toString: jest.fn(), - })); - - await createAttachedSignature(parsedCertificateMock.thumbprint, 'message'); - await addAttachedSignature(parsedCertificateMock.thumbprint, 'message'); - - expect(global.Buffer.from).toHaveBeenCalledTimes(2); - - global.Buffer.from = originalBufferFrom; - }); - - test('uses specified certificate', async () => { - await addAttachedSignature(parsedCertificateMock.thumbprint, 'message'); - - expect(_getCadesCert).toHaveBeenCalledWith(parsedCertificateMock.thumbprint); - }); - - test('returns new signature', async () => { - await createAttachedSignature(parsedCertificateMock.thumbprint, 'message'); - const signature = await addAttachedSignature(parsedCertificateMock.thumbprint, 'message'); - - expect(signature).toEqual('newSignature'); - }); -}); diff --git a/src/api/addDetachedSignature.test.ts b/src/api/addDetachedSignature.test.ts deleted file mode 100644 index 447ea23..0000000 --- a/src/api/addDetachedSignature.test.ts +++ /dev/null @@ -1,112 +0,0 @@ -import 'cadesplugin'; -import { rawCertificates, parsedCertificates } from '../__mocks__/certificates'; -import { createDetachedSignature } from './createDetachedSignature'; -import { _getCadesCert } from '../helpers/_getCadesCert'; -import { addDetachedSignature } from './addDetachedSignature'; -import { createHash } from './createHash'; - -const [rawCertificateMock] = rawCertificates; -const [parsedCertificateMock] = parsedCertificates; - -jest.mock('../helpers/_getCadesCert', () => ({ _getCadesCert: jest.fn(() => rawCertificateMock) })); - -beforeEach(() => { - (_getCadesCert as jest.Mock).mockClear(); -}); - -const executionSteps = [ - Symbol('step 0'), - Symbol('step 1'), - Symbol('step 2'), - Symbol('step 3'), - Symbol('step 4'), - Symbol('step 5'), - Symbol('step 6'), - Symbol('step 7'), -]; - -const executionFlow = { - [executionSteps[0]]: { - propset_Name: jest.fn(), - propset_Value: jest.fn(), - }, - [executionSteps[1]]: { - propset_ContentEncoding: jest.fn(), - propset_Content: jest.fn(), - SignHash: jest.fn(() => executionSteps[4]), - VerifyHash: jest.fn(), - CoSignHash: jest.fn(() => executionSteps[6]), - }, - [executionSteps[2]]: { - propset_Certificate: jest.fn(), - AuthenticatedAttributes2: executionSteps[3], - propset_Options: jest.fn(), - }, - [executionSteps[3]]: { - Add: jest.fn(), - }, - [executionSteps[4]]: 'signature', - [executionSteps[5]]: { - propset_Algorithm: jest.fn(), - propset_DataEncoding: jest.fn(), - Hash: jest.fn(), - Value: executionSteps[7], - SetHashValue: jest.fn(), - }, - [executionSteps[6]]: 'newSignature', - [executionSteps[7]]: 'hash', -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation((object) => { - switch (object) { - case 'CADESCOM.CPAttribute': - return executionSteps[0]; - case 'CAdESCOM.CadesSignedData': - return executionSteps[1]; - case 'CAdESCOM.CPSigner': - return executionSteps[2]; - case 'CAdESCOM.HashedData': - return executionSteps[5]; - } -}); - -describe('addDetachedSignature', () => { - test('uses specified certificate', async () => { - const originalBufferFrom = global.Buffer.from; - - (global.Buffer.from as jest.Mock) = jest.fn(() => ({ - toString: jest.fn(), - })); - - const signature = await createDetachedSignature(parsedCertificateMock.thumbprint, 'message'); - const signatureHash = await createHash(signature); - await addDetachedSignature(parsedCertificateMock.thumbprint, signature, signatureHash); - - expect(_getCadesCert).toHaveBeenCalledWith(parsedCertificateMock.thumbprint); - - expect(global.Buffer.from).toHaveBeenCalledTimes(1); - - global.Buffer.from = originalBufferFrom; - }); - - test('returns new signature', async () => { - const originalBufferFrom = global.Buffer.from; - - (global.Buffer.from as jest.Mock) = jest.fn(() => ({ - toString: jest.fn(), - })); - - let signature = await createDetachedSignature(parsedCertificateMock.thumbprint, 'message'); - const signatureHash = await createHash(signature); - signature = await addDetachedSignature(parsedCertificateMock.thumbprint, signature, signatureHash); - - expect(_getCadesCert).toHaveBeenCalledWith(parsedCertificateMock.thumbprint); - - expect(global.Buffer.from).toHaveBeenCalledTimes(1); - - expect(signature).toEqual('newSignature'); - - global.Buffer.from = originalBufferFrom; - }); -}); diff --git a/src/api/certificate/certificate.test.ts b/src/api/certificate/certificate.test.ts deleted file mode 100644 index 7888598..0000000 --- a/src/api/certificate/certificate.test.ts +++ /dev/null @@ -1,70 +0,0 @@ -import 'cadesplugin'; -import { parsedCertificates } from '../../__mocks__/certificates'; -import { ISSUER_TAGS_TRANSLATIONS, SUBJECT_TAGS_TRANSLATIONS } from '../../constants'; -import { exportBase64 } from './exportBase64'; -import { getAlgorithm } from './getAlgorithm'; -import { getCadesProp } from './getCadesProp'; -import { getDecodedExtendedKeyUsage } from './getDecodedExtendedKeyUsage'; -import { getExtendedKeyUsage } from './getExtendedKeyUsage'; -import { getInfo } from './getInfo'; -import { hasExtendedKeyUsage } from './hasExtendedKeyUsage'; -import { isValid } from './isValid'; -import { Certificate } from './certificate'; - -const [parsedCertificateMock] = parsedCertificates; -const oidsMock = ['oid 1', 'oid 2']; - -jest.mock('./isValid', () => ({ isValid: jest.fn(() => 'isValid') })); -jest.mock('./getCadesProp', () => ({ getCadesProp: jest.fn(() => 'getCadesProp') })); -jest.mock('./exportBase64', () => ({ exportBase64: jest.fn(() => 'exportBase64') })); -jest.mock('./getAlgorithm', () => ({ getAlgorithm: jest.fn(() => 'getAlgorithm') })); -jest.mock('./getInfo', () => ({ getInfo: jest.fn(() => 'getInfo') })); -jest.mock('./getExtendedKeyUsage', () => ({ getExtendedKeyUsage: jest.fn(() => 'getExtendedKeyUsage') })); -jest.mock('./getDecodedExtendedKeyUsage', () => ({ - getDecodedExtendedKeyUsage: jest.fn(() => 'getDecodedExtendedKeyUsage'), -})); -jest.mock('./hasExtendedKeyUsage', () => ({ hasExtendedKeyUsage: jest.fn(() => 'hasExtendedKeyUsage') })); - -beforeEach(() => { - (isValid as jest.Mock).mockClear(); - (getCadesProp as jest.Mock).mockClear(); - (exportBase64 as jest.Mock).mockClear(); - (getAlgorithm as jest.Mock).mockClear(); - (getInfo as jest.Mock).mockClear(); - (getExtendedKeyUsage as jest.Mock).mockClear(); - (getDecodedExtendedKeyUsage as jest.Mock).mockClear(); - (hasExtendedKeyUsage as jest.Mock).mockClear(); -}); - -const certificate = new Certificate( - null, - parsedCertificateMock.name, - parsedCertificateMock.issuerName, - parsedCertificateMock.subjectName, - parsedCertificateMock.thumbprint, - parsedCertificateMock.validFrom, - parsedCertificateMock.validTo, -); - -describe('getInfo', () => { - test("calls external APIs for each method and passes it's results outside", async () => { - expect(certificate.isValid()).toEqual('isValid'); - expect(isValid).toHaveBeenCalledTimes(1); - expect(certificate.getCadesProp('property name')).toEqual('getCadesProp'); - expect(getCadesProp).toHaveBeenCalledWith('property name'); - expect(certificate.exportBase64()).toEqual('exportBase64'); - expect(exportBase64).toHaveBeenCalledTimes(1); - expect(certificate.getAlgorithm()).toEqual('getAlgorithm'); - expect(getAlgorithm).toHaveBeenCalledTimes(1); - expect(certificate.getOwnerInfo()).toEqual('getInfo'); - expect(getInfo).toHaveBeenCalledWith(SUBJECT_TAGS_TRANSLATIONS, 'SubjectName'); - expect(certificate.getIssuerInfo()).toEqual('getInfo'); - expect(getInfo).toHaveBeenCalledWith(ISSUER_TAGS_TRANSLATIONS, 'IssuerName'); - expect(certificate.getExtendedKeyUsage()).toEqual('getExtendedKeyUsage'); - expect(getExtendedKeyUsage).toHaveBeenCalledTimes(1); - expect(certificate.getDecodedExtendedKeyUsage()).toEqual('getDecodedExtendedKeyUsage'); - expect(getDecodedExtendedKeyUsage).toHaveBeenCalledTimes(1); - expect(certificate.hasExtendedKeyUsage(oidsMock)).toEqual('hasExtendedKeyUsage'); - expect(hasExtendedKeyUsage).toHaveBeenCalledWith(oidsMock); - }); -}); diff --git a/src/api/certificate/exportBase64.test.ts b/src/api/certificate/exportBase64.test.ts deleted file mode 100644 index 6e32ced..0000000 --- a/src/api/certificate/exportBase64.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -import 'cadesplugin'; -import { exportBase64 } from './exportBase64'; - -const exportedCertificateMock = 'certificate as base64'; - -const executionSteps = [Symbol('step 0')]; - -const executionFlow = { - [executionSteps[0]]: exportedCertificateMock, -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); - -describe('exportBase64', () => { - test('returns exported certificate', async () => { - const certificateAsBase64 = await exportBase64.call({ - _cadesCertificate: { - Export: jest.fn(() => executionSteps[0]), - }, - }); - - expect(certificateAsBase64).toEqual(exportedCertificateMock); - }); -}); diff --git a/src/api/certificate/getAlgorithm.test.ts b/src/api/certificate/getAlgorithm.test.ts deleted file mode 100644 index be22d39..0000000 --- a/src/api/certificate/getAlgorithm.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import 'cadesplugin'; -import { getAlgorithm } from './getAlgorithm'; - -const executionSteps = [Symbol('step 0'), Symbol('step 1'), Symbol('step 2'), Symbol('step 3')]; - -const executionFlow = { - [executionSteps[0]]: { - Algorithm: executionSteps[1], - }, - [executionSteps[1]]: { - FriendlyName: executionSteps[2], - Value: executionSteps[3], - }, - [executionSteps[2]]: 'algorithm', - [executionSteps[3]]: 'oid', -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); - -describe('getAlgorithm', () => { - test('returns information about algorithm', async () => { - const algorithmInfo = await getAlgorithm.call({ - _cadesCertificate: { - PublicKey: jest.fn(() => executionSteps[0]), - }, - }); - - expect(algorithmInfo).toStrictEqual({ - algorithm: 'algorithm', - oid: 'oid', - }); - }); -}); diff --git a/src/api/certificate/getCadesProp.test.ts b/src/api/certificate/getCadesProp.test.ts deleted file mode 100644 index 830c669..0000000 --- a/src/api/certificate/getCadesProp.test.ts +++ /dev/null @@ -1,27 +0,0 @@ -import 'cadesplugin'; -import { getCadesProp } from './getCadesProp'; - -const cadesPropertyContentMock = 'content of a cades property'; - -const executionSteps = [Symbol('step 0')]; - -const executionFlow = { - [executionSteps[0]]: cadesPropertyContentMock, -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); - -describe('getCadesProp', () => { - test('returns contents of a cades prop', async () => { - const cadesPropertyContent = await getCadesProp.call( - { - _cadesCertificate: { - cadesProperty: executionSteps[0], - }, - }, - 'cadesProperty', - ); - - expect(cadesPropertyContent).toEqual(cadesPropertyContentMock); - }); -}); diff --git a/src/api/certificate/getDecodedExtendedKeyUsage.test.ts b/src/api/certificate/getDecodedExtendedKeyUsage.test.ts deleted file mode 100644 index 617c08a..0000000 --- a/src/api/certificate/getDecodedExtendedKeyUsage.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import 'cadesplugin'; -import { getDecodedExtendedKeyUsage } from './getDecodedExtendedKeyUsage'; - -const oidsMock = ['1.2.643.3.131.1.1', '1.2.643.6.3.1.3.1', '1.2.643.3.141.1.1']; - -describe('getDecodedExtendedKeyUsage', () => { - test('returns translated info about existing oids of a certificate', async () => { - const getExtendedKeyUsageStub = jest.fn(() => oidsMock); - const certificateStub = { getExtendedKeyUsage: getExtendedKeyUsageStub }; - - expect(await getDecodedExtendedKeyUsage.call(certificateStub)).toEqual({ - '1.2.643.3.131.1.1': 'ИНН', - '1.2.643.3.141.1.1': 'РНС ФСС', - '1.2.643.6.3.1.3.1': 'Участник размещения заказа', - }); - expect(getExtendedKeyUsageStub).toBeCalledTimes(1); - }); -}); diff --git a/src/api/certificate/getExtendedKeyUsage.test.ts b/src/api/certificate/getExtendedKeyUsage.test.ts deleted file mode 100644 index cf3ab81..0000000 --- a/src/api/certificate/getExtendedKeyUsage.test.ts +++ /dev/null @@ -1,35 +0,0 @@ -import 'cadesplugin'; -import { getExtendedKeyUsage } from './getExtendedKeyUsage'; - -const oidsMock = ['1.3.6.1.4.1.311.80.1']; - -const executionSteps = [Symbol('step 0'), Symbol('step 1'), Symbol('step 2'), Symbol('step 3'), Symbol('step 4')]; - -const executionFlow = { - [executionSteps[0]]: { - EKUs: executionSteps[1], - }, - [executionSteps[1]]: { - Count: executionSteps[2], - Item: jest.fn(() => executionSteps[3]), - }, - [executionSteps[2]]: 1, - [executionSteps[3]]: { - OID: executionSteps[4], - }, - [executionSteps[4]]: oidsMock[0], -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); - -describe('getExtendedKeyUsage', () => { - test('returns info about oids', async () => { - const oids = await getExtendedKeyUsage.call({ - _cadesCertificate: { - ExtendedKeyUsage: jest.fn(() => executionSteps[0]), - }, - }); - - expect(oids).toStrictEqual(oidsMock); - }); -}); diff --git a/src/api/certificate/getInfo.test.ts b/src/api/certificate/getInfo.test.ts deleted file mode 100644 index 7ccd32f..0000000 --- a/src/api/certificate/getInfo.test.ts +++ /dev/null @@ -1,35 +0,0 @@ -import 'cadesplugin'; -import { ISSUER_TAGS_TRANSLATIONS } from '../../constants'; -import { getInfo } from './getInfo'; -import { getCadesProp } from './getCadesProp'; -import { _parseCertInfo } from '../../helpers/_parseCertInfo'; - -const entitiesPathMock = 'path to entities'; -const entitiesMock = 'info about the entities'; -const certificateInfoMock = [ - { - description: 'description', - title: 'title', - isTranslated: true, - }, -]; - -jest.mock('./getCadesProp', () => ({ getCadesProp: jest.fn(() => entitiesMock) })); -jest.mock('../../helpers/_parseCertInfo', () => ({ _parseCertInfo: jest.fn(() => certificateInfoMock) })); - -beforeEach(() => { - (getCadesProp as jest.Mock).mockClear(); - (_parseCertInfo as jest.Mock).mockClear(); -}); - -describe('getInfo', () => { - test('calls external APIs to get information about the certificate', async () => { - const certificateInfo = await getInfo(ISSUER_TAGS_TRANSLATIONS, entitiesPathMock); - - expect(getCadesProp).toHaveBeenCalledTimes(1); - expect(getCadesProp).toHaveBeenCalledWith(entitiesPathMock); - expect(_parseCertInfo).toHaveBeenCalledTimes(1); - expect(_parseCertInfo).toHaveBeenCalledWith(ISSUER_TAGS_TRANSLATIONS, entitiesMock); - expect(certificateInfo).toStrictEqual(certificateInfoMock); - }); -}); diff --git a/src/api/certificate/hasExtendedKeyUsage.test.ts b/src/api/certificate/hasExtendedKeyUsage.test.ts deleted file mode 100644 index 5e5eef0..0000000 --- a/src/api/certificate/hasExtendedKeyUsage.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import 'cadesplugin'; -import { hasExtendedKeyUsage } from './hasExtendedKeyUsage'; - -const oidsMock = ['1.3.6.1.4.1.311.80.1', '1.3.6.1.5.5.7.3.2', '1.3.6.1.4.1.311.10.3.12']; - -describe('hasExtendedKeyUsage', () => { - test('returns info about existing oids of a certificate', async () => { - const getExtendedKeyUsageStub = jest.fn(() => oidsMock); - const certificateStub = { getExtendedKeyUsage: getExtendedKeyUsageStub }; - - expect(await hasExtendedKeyUsage.call(certificateStub, '1.3.6.1.4.1.311.80.1')).toEqual(true); - expect(await hasExtendedKeyUsage.call(certificateStub, ['1.3.6.1.5.5.7.3.2', '1.3.6.1.4.1.311.10.3.12'])).toEqual( - true, - ); - expect(await hasExtendedKeyUsage.call(certificateStub, 'non-existing oid')).toEqual(false); - expect(getExtendedKeyUsageStub).toBeCalledTimes(3); - }); -}); diff --git a/src/api/certificate/isValid.test.ts b/src/api/certificate/isValid.test.ts deleted file mode 100644 index dbc7663..0000000 --- a/src/api/certificate/isValid.test.ts +++ /dev/null @@ -1,25 +0,0 @@ -import 'cadesplugin'; -import { isValid } from './isValid'; - -const executionSteps = [Symbol('step 0'), Symbol('step 1')]; - -const executionFlow = { - [executionSteps[0]]: { - Result: executionSteps[1], - }, - [executionSteps[1]]: true, -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); - -describe('isValid', () => { - test('returns validity state of certificate', async () => { - const valid = await isValid.call({ - _cadesCertificate: { - IsValid: jest.fn(() => executionSteps[0]), - }, - }); - - expect(valid).toEqual(true); - }); -}); diff --git a/src/api/createAttachedSignature.test.ts b/src/api/createAttachedSignature.test.ts deleted file mode 100644 index 582e192..0000000 --- a/src/api/createAttachedSignature.test.ts +++ /dev/null @@ -1,76 +0,0 @@ -import 'cadesplugin'; -import { rawCertificates, parsedCertificates } from '../__mocks__/certificates'; -import { createAttachedSignature } from './createAttachedSignature'; -import { _getCadesCert } from '../helpers/_getCadesCert'; - -const [rawCertificateMock] = rawCertificates; -const [parsedCertificateMock] = parsedCertificates; - -jest.mock('../helpers/_getCadesCert', () => ({ _getCadesCert: jest.fn(() => rawCertificateMock) })); - -beforeEach(() => { - (_getCadesCert as jest.Mock).mockClear(); -}); - -const executionSteps = [Symbol('step 0'), Symbol('step 1'), Symbol('step 2'), Symbol('step 3'), Symbol('step 4')]; - -const executionFlow = { - [executionSteps[0]]: { - propset_Name: jest.fn(), - propset_Value: jest.fn(), - }, - [executionSteps[1]]: { - propset_ContentEncoding: jest.fn(), - propset_Content: jest.fn(), - SignCades: jest.fn(() => executionSteps[4]), - }, - [executionSteps[2]]: { - propset_Certificate: jest.fn(), - AuthenticatedAttributes2: executionSteps[3], - propset_Options: jest.fn(), - }, - [executionSteps[3]]: { - Add: jest.fn(), - }, - [executionSteps[4]]: 'signature', -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation((object) => { - switch (object) { - case 'CADESCOM.CPAttribute': - return executionSteps[0]; - case 'CAdESCOM.CadesSignedData': - return executionSteps[1]; - case 'CAdESCOM.CPSigner': - return executionSteps[2]; - } -}); - -describe('createAttachedSignature', () => { - test('uses Buffer to encrypt the message', async () => { - const originalBufferFrom = global.Buffer.from; - - (global.Buffer.from as jest.Mock) = jest.fn(() => ({ - toString: jest.fn(), - })); - - await createAttachedSignature(parsedCertificateMock.thumbprint, 'message'); - - expect(global.Buffer.from).toHaveBeenCalledTimes(1); - - global.Buffer.from = originalBufferFrom; - }); - - test('uses specified certificate', async () => { - await createAttachedSignature(parsedCertificateMock.thumbprint, 'message'); - - expect(_getCadesCert).toHaveBeenCalledWith(parsedCertificateMock.thumbprint); - }); - - test('returns signature', async () => { - const signature = await createAttachedSignature(parsedCertificateMock.thumbprint, 'message'); - - expect(signature).toEqual('signature'); - }); -}); diff --git a/src/api/createDetachedSignature.test.ts b/src/api/createDetachedSignature.test.ts deleted file mode 100644 index 4d704e5..0000000 --- a/src/api/createDetachedSignature.test.ts +++ /dev/null @@ -1,75 +0,0 @@ -import 'cadesplugin'; -import { rawCertificates, parsedCertificates } from '../__mocks__/certificates'; -import { createDetachedSignature } from './createDetachedSignature'; -import { _getCadesCert } from '../helpers/_getCadesCert'; - -const [rawCertificateMock] = rawCertificates; -const [parsedCertificateMock] = parsedCertificates; - -jest.mock('../helpers/_getCadesCert', () => ({ _getCadesCert: jest.fn(() => rawCertificateMock) })); - -beforeEach(() => { - (_getCadesCert as jest.Mock).mockClear(); -}); - -const executionSteps = [ - Symbol('step 0'), - Symbol('step 1'), - Symbol('step 2'), - Symbol('step 3'), - Symbol('step 4'), - Symbol('step 5'), -]; - -const executionFlow = { - [executionSteps[0]]: { - propset_Name: jest.fn(), - propset_Value: jest.fn(), - }, - [executionSteps[1]]: { - propset_ContentEncoding: jest.fn(), - propset_Content: jest.fn(), - SignHash: jest.fn(() => executionSteps[4]), - }, - [executionSteps[2]]: { - propset_Certificate: jest.fn(), - AuthenticatedAttributes2: executionSteps[3], - propset_Options: jest.fn(), - }, - [executionSteps[3]]: { - Add: jest.fn(), - }, - [executionSteps[4]]: 'signature', - [executionSteps[5]]: { - propset_Algorithm: jest.fn(), - SetHashValue: jest.fn(), - }, -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation((object) => { - switch (object) { - case 'CADESCOM.CPAttribute': - return executionSteps[0]; - case 'CAdESCOM.CadesSignedData': - return executionSteps[1]; - case 'CAdESCOM.CPSigner': - return executionSteps[2]; - case 'CAdESCOM.HashedData': - return executionSteps[5]; - } -}); - -describe('createDetachedSignature', () => { - test('uses specified certificate', async () => { - await createDetachedSignature(parsedCertificateMock.thumbprint, 'message'); - - expect(_getCadesCert).toHaveBeenCalledWith(parsedCertificateMock.thumbprint); - }); - - test('returns signature', async () => { - const signature = await createDetachedSignature(parsedCertificateMock.thumbprint, 'message'); - - expect(signature).toEqual('signature'); - }); -}); diff --git a/src/api/createHash.test.ts b/src/api/createHash.test.ts deleted file mode 100644 index baf00af..0000000 --- a/src/api/createHash.test.ts +++ /dev/null @@ -1,44 +0,0 @@ -import 'cadesplugin'; -import { createHash } from './createHash'; - -const executionSteps = [Symbol('step 0'), Symbol('step 1')]; - -const executionFlow = { - [executionSteps[0]]: { - propset_Algorithm: jest.fn(), - propset_DataEncoding: jest.fn(), - Hash: jest.fn(), - Value: executionSteps[1], - }, - [executionSteps[1]]: 'hash', -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation((object) => { - switch (object) { - case 'CAdESCOM.HashedData': - return executionSteps[0]; - } -}); - -describe('createHash', () => { - test('uses Buffer to encrypt the message', async () => { - const originalBufferFrom = global.Buffer.from; - - (global.Buffer.from as jest.Mock) = jest.fn(() => ({ - toString: jest.fn(), - })); - - await createHash('message'); - - expect(global.Buffer.from).toHaveBeenCalledTimes(1); - - global.Buffer.from = originalBufferFrom; - }); - - test('returns created hash', async () => { - const hash = await createHash('message'); - - expect(hash).toEqual('hash'); - }); -}); diff --git a/src/api/createXMLSignature.test.ts b/src/api/createXMLSignature.test.ts deleted file mode 100644 index 686343a..0000000 --- a/src/api/createXMLSignature.test.ts +++ /dev/null @@ -1,71 +0,0 @@ -import 'cadesplugin'; -import { rawCertificates, parsedCertificates } from '../__mocks__/certificates'; -import { createXMLSignature } from './createXMLSignature'; -import { _getCadesCert } from '../helpers/_getCadesCert'; - -const [rawCertificateMock] = rawCertificates; -const [parsedCertificateMock] = parsedCertificates; - -jest.mock('../helpers/_getCadesCert', () => ({ _getCadesCert: jest.fn(() => rawCertificateMock) })); - -beforeEach(() => { - (_getCadesCert as jest.Mock).mockClear(); -}); - -const executionSteps = [Symbol('step 0'), Symbol('step 1'), Symbol('step 2')]; - -const executionFlow = { - [executionSteps[0]]: { - propset_Certificate: jest.fn(), - propset_CheckCertificate: jest.fn(), - }, - [executionSteps[1]]: { - propset_Content: jest.fn(), - propset_SignatureType: jest.fn(), - propset_SignatureMethod: jest.fn(), - propset_DigestMethod: jest.fn(), - Sign: jest.fn(() => executionSteps[2]), - }, - [executionSteps[2]]: 'signature', -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation((object) => { - switch (object) { - case 'CAdESCOM.CPSigner': - return executionSteps[0]; - case 'CAdESCOM.SignedXML': - return executionSteps[1]; - } -}); - -describe('createXMLSignature', () => { - test('uses specified certificate', async () => { - await createXMLSignature(parsedCertificateMock.thumbprint, 'message'); - - expect(_getCadesCert).toHaveBeenCalledWith(parsedCertificateMock.thumbprint); - }); - - test('returns signature', async () => { - const signature = await createXMLSignature( - parsedCertificateMock.thumbprint, - ` - - - - - Hello, World! - - - Hello, Node! - - - - `, - ); - - expect(signature).toEqual('signature'); - }); -}); diff --git a/src/api/getAllContainerCertificates.test.ts b/src/api/getAllContainerCertificates.test.ts deleted file mode 100755 index 24eb529..0000000 --- a/src/api/getAllContainerCertificates.test.ts +++ /dev/null @@ -1,60 +0,0 @@ -import 'cadesplugin'; -import { rawCertificates, parsedCertificates } from '../__mocks__/certificates'; -import { getAllContainerCertificates } from './getAllContainerCertificates'; - -const [rawCertificateMock] = rawCertificates; -const [parsedCertificateMock] = parsedCertificates; - -const executionSteps = [ - Symbol('step 0'), - Symbol('step 1'), - Symbol('step 2'), - Symbol('step 3'), - Symbol('step 4'), - Symbol('step 5'), - Symbol('step 6'), - Symbol('step 7'), - Symbol('step 8'), -]; - -const executionFlow = { - [executionSteps[0]]: { - Certificates: executionSteps[1], - Close: jest.fn(), - Open: jest.fn(), - }, - [executionSteps[1]]: { - Count: executionSteps[2], - Item: jest.fn(() => executionSteps[3]), - }, - [executionSteps[2]]: 1, - [executionSteps[3]]: { - IssuerName: executionSteps[6], - SubjectName: executionSteps[5], - Thumbprint: executionSteps[4], - ValidFromDate: executionSteps[7], - ValidToDate: executionSteps[8], - }, - [executionSteps[6]]: rawCertificateMock.IssuerName, - [executionSteps[5]]: rawCertificateMock.SubjectName, - [executionSteps[4]]: rawCertificateMock.Thumbprint, - [executionSteps[7]]: rawCertificateMock.ValidFromDate, - [executionSteps[8]]: rawCertificateMock.ValidToDate, -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation(() => executionSteps[0]); - -describe('getUserCertificates', () => { - test('returns certificates list', async () => { - const certificates = await getAllContainerCertificates(); - - expect(certificates.length).toBeGreaterThan(0); - }); - - test('returns certificates with correct fields', async () => { - const [certificate] = await getAllContainerCertificates(); - - expect(certificate).toMatchObject(parsedCertificateMock); - }); -}); diff --git a/src/api/getAllUserCertificates.test.ts b/src/api/getAllUserCertificates.test.ts deleted file mode 100644 index 8afe418..0000000 --- a/src/api/getAllUserCertificates.test.ts +++ /dev/null @@ -1,60 +0,0 @@ -import 'cadesplugin'; -import { rawCertificates, parsedCertificates } from '../__mocks__/certificates'; -import { getAllUserCertificates } from './getAllUserCertificates'; - -const [rawCertificateMock] = rawCertificates; -const [parsedCertificateMock] = parsedCertificates; - -const executionSteps = [ - Symbol('step 0'), - Symbol('step 1'), - Symbol('step 2'), - Symbol('step 3'), - Symbol('step 4'), - Symbol('step 5'), - Symbol('step 6'), - Symbol('step 7'), - Symbol('step 8'), -]; - -const executionFlow = { - [executionSteps[0]]: { - Certificates: executionSteps[1], - Close: jest.fn(), - Open: jest.fn(), - }, - [executionSteps[1]]: { - Count: executionSteps[2], - Item: jest.fn(() => executionSteps[3]), - }, - [executionSteps[2]]: 1, - [executionSteps[3]]: { - IssuerName: executionSteps[6], - SubjectName: executionSteps[5], - Thumbprint: executionSteps[4], - ValidFromDate: executionSteps[7], - ValidToDate: executionSteps[8], - }, - [executionSteps[6]]: rawCertificateMock.IssuerName, - [executionSteps[5]]: rawCertificateMock.SubjectName, - [executionSteps[4]]: rawCertificateMock.Thumbprint, - [executionSteps[7]]: rawCertificateMock.ValidFromDate, - [executionSteps[8]]: rawCertificateMock.ValidToDate, -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation(() => executionSteps[0]); - -describe('getUserCertificates', () => { - test('returns certificates list', async () => { - const certificates = await getAllUserCertificates(); - - expect(certificates.length).toBeGreaterThan(0); - }); - - test('returns certificates with correct fields', async () => { - const [certificate] = await getAllUserCertificates(); - - expect(certificate).toMatchObject(parsedCertificateMock); - }); -}); diff --git a/src/api/getCertificate.test.ts b/src/api/getCertificate.test.ts deleted file mode 100644 index 4347380..0000000 --- a/src/api/getCertificate.test.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'cadesplugin'; -import { parsedCertificates } from '../__mocks__/certificates'; -import { getCertificate } from './getCertificate'; -import { getUserCertificates } from './getUserCertificates'; - -jest.mock('./getUserCertificates', () => ({ getUserCertificates: jest.fn(() => parsedCertificates) })); - -beforeEach(() => { - (getUserCertificates as jest.Mock).mockClear(); -}); - -describe('getCertificate', () => { - const [sampleCertificate] = parsedCertificates; - - test('calls getUserCertificates internally', async () => { - await getCertificate(sampleCertificate.thumbprint); - - expect(getUserCertificates).toHaveBeenCalledTimes(1); - }); - - test('returns requested certificate', async () => { - expect(await getCertificate(sampleCertificate.thumbprint)).toStrictEqual(sampleCertificate); - }); - - test("throws error if certificate wasn't found", async () => { - await expect(getCertificate('some non-existing thumbprint')).rejects.toThrowError('не найден'); - }); -}); diff --git a/src/api/getContainerCertificates.test.ts b/src/api/getContainerCertificates.test.ts deleted file mode 100755 index a289c46..0000000 --- a/src/api/getContainerCertificates.test.ts +++ /dev/null @@ -1,68 +0,0 @@ -import 'cadesplugin'; -import { rawCertificates, parsedCertificates } from '../__mocks__/certificates'; -import { getContainerCertificates } from './getContainerCertificates'; - -const [rawCertificateMock] = rawCertificates; -const [parsedCertificateMock] = parsedCertificates; - -const executionSteps = [ - Symbol('step 0'), - Symbol('step 1'), - Symbol('step 2'), - Symbol('step 3'), - Symbol('step 4'), - Symbol('step 5'), - Symbol('step 6'), - Symbol('step 7'), - Symbol('step 8'), - Symbol('step 9'), - Symbol('step 10'), -]; - -const executionFlow = { - [executionSteps[0]]: { - Certificates: executionSteps[1], - Close: jest.fn(), - Open: jest.fn(), - }, - [executionSteps[1]]: { - Find: jest.fn(() => executionSteps[2]), - }, - [executionSteps[2]]: { - Find: jest.fn(() => executionSteps[3]), - }, - [executionSteps[3]]: { - Count: executionSteps[4], - Item: jest.fn(() => executionSteps[5]), - }, - [executionSteps[4]]: 1, - [executionSteps[5]]: { - IssuerName: executionSteps[8], - SubjectName: executionSteps[7], - Thumbprint: executionSteps[6], - ValidFromDate: executionSteps[9], - ValidToDate: executionSteps[10], - }, - [executionSteps[8]]: rawCertificateMock.IssuerName, - [executionSteps[7]]: rawCertificateMock.SubjectName, - [executionSteps[6]]: rawCertificateMock.Thumbprint, - [executionSteps[9]]: rawCertificateMock.ValidFromDate, - [executionSteps[10]]: rawCertificateMock.ValidToDate, -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation(() => executionSteps[0]); - -describe('getContainerCertificates', () => { - test('returns certificates list', async () => { - const certificates = await getContainerCertificates(); - - expect(certificates.length).toBeGreaterThan(0); - }); - - test('returns certificates with correct fields', async () => { - const [certificate] = await getContainerCertificates(); - - expect(certificate).toMatchObject(parsedCertificateMock); - }); -}); diff --git a/src/api/getCspVersion.test.ts b/src/api/getCspVersion.test.ts deleted file mode 100644 index a40174f..0000000 --- a/src/api/getCspVersion.test.ts +++ /dev/null @@ -1,26 +0,0 @@ -import 'cadesplugin'; -import { getCspVersion } from './getCspVersion'; - -const executionSteps = [Symbol('step 0'), Symbol('step 1'), Symbol('step 2')]; - -// "any" because of using toString on the literal -const executionFlow: any = { - [executionSteps[0]]: { - CSPVersion: jest.fn(() => executionSteps[1]), - }, - [executionSteps[1]]: { - toString: jest.fn(() => executionSteps[2]), - }, - [executionSteps[2]]: '4.0.9971', -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation(() => executionSteps[0]); - -describe('getCspVersion', () => { - test('returns information about CSP', async () => { - const cspVersion = await getCspVersion(); - - expect(cspVersion).toStrictEqual('4.0.9971'); - }); -}); diff --git a/src/api/getPluginVersion.test.ts b/src/api/getPluginVersion.test.ts deleted file mode 100644 index 64fb101..0000000 --- a/src/api/getPluginVersion.test.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'cadesplugin'; -import { getPluginVersion } from './getPluginVersion'; - -const executionSteps = [Symbol('step 0'), Symbol('step 1'), Symbol('step 2'), Symbol('step 3')]; - -// "any" because of using toString on the literal -const executionFlow: any = { - [executionSteps[0]]: { - PluginVersion: executionSteps[1], - Version: executionSteps[2], - }, - [executionSteps[1]]: undefined, - [executionSteps[2]]: { - toString: jest.fn(() => executionSteps[3]), - }, - [executionSteps[3]]: '2.0.13771', -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation(() => executionSteps[0]); - -describe('getPluginVersion', () => { - test('returns information about plugin', async () => { - const pluginVersion = await getPluginVersion(); - - expect(pluginVersion).toStrictEqual('2.0.13771'); - }); -}); diff --git a/src/api/getSystemInfo.test.ts b/src/api/getSystemInfo.test.ts deleted file mode 100644 index 436ce78..0000000 --- a/src/api/getSystemInfo.test.ts +++ /dev/null @@ -1,43 +0,0 @@ -import 'cadesplugin'; -import { getSystemInfo } from './getSystemInfo'; - -const executionSteps = [ - Symbol('step 0'), - Symbol('step 1'), - Symbol('step 2'), - Symbol('step 3'), - Symbol('step 4'), - Symbol('step 5'), -]; - -// "any" because of using toString on the literal -const executionFlow: any = { - [executionSteps[0]]: { - PluginVersion: executionSteps[1], - Version: executionSteps[2], - CSPVersion: jest.fn(() => executionSteps[3]), - }, - [executionSteps[1]]: undefined, - [executionSteps[2]]: { - toString: jest.fn(() => executionSteps[4]), - }, - [executionSteps[3]]: { - toString: jest.fn(() => executionSteps[5]), - }, - [executionSteps[4]]: '2.0.13771', - [executionSteps[5]]: '4.0.9971', -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation(() => executionSteps[0]); - -describe('getSystemInfo', () => { - test('returns information about environment', async () => { - const systemInfo = await getSystemInfo(); - - expect(systemInfo).toStrictEqual({ - cadesVersion: '2.0.13771', - cspVersion: '4.0.9971', - }); - }); -}); diff --git a/src/api/getUserCertificates.test.ts b/src/api/getUserCertificates.test.ts deleted file mode 100644 index 07d5466..0000000 --- a/src/api/getUserCertificates.test.ts +++ /dev/null @@ -1,68 +0,0 @@ -import 'cadesplugin'; -import { rawCertificates, parsedCertificates } from '../__mocks__/certificates'; -import { getUserCertificates } from './getUserCertificates'; - -const [rawCertificateMock] = rawCertificates; -const [parsedCertificateMock] = parsedCertificates; - -const executionSteps = [ - Symbol('step 0'), - Symbol('step 1'), - Symbol('step 2'), - Symbol('step 3'), - Symbol('step 4'), - Symbol('step 5'), - Symbol('step 6'), - Symbol('step 7'), - Symbol('step 8'), - Symbol('step 9'), - Symbol('step 10'), -]; - -const executionFlow = { - [executionSteps[0]]: { - Certificates: executionSteps[1], - Close: jest.fn(), - Open: jest.fn(), - }, - [executionSteps[1]]: { - Find: jest.fn(() => executionSteps[2]), - }, - [executionSteps[2]]: { - Find: jest.fn(() => executionSteps[3]), - }, - [executionSteps[3]]: { - Count: executionSteps[4], - Item: jest.fn(() => executionSteps[5]), - }, - [executionSteps[4]]: 1, - [executionSteps[5]]: { - IssuerName: executionSteps[8], - SubjectName: executionSteps[7], - Thumbprint: executionSteps[6], - ValidFromDate: executionSteps[9], - ValidToDate: executionSteps[10], - }, - [executionSteps[8]]: rawCertificateMock.IssuerName, - [executionSteps[7]]: rawCertificateMock.SubjectName, - [executionSteps[6]]: rawCertificateMock.Thumbprint, - [executionSteps[9]]: rawCertificateMock.ValidFromDate, - [executionSteps[10]]: rawCertificateMock.ValidToDate, -}; - -window.cadesplugin.__defineExecutionFlow(executionFlow); -window.cadesplugin.CreateObjectAsync.mockImplementation(() => executionSteps[0]); - -describe('getUserCertificates', () => { - test('returns certificates list', async () => { - const certificates = await getUserCertificates(); - - expect(certificates.length).toBeGreaterThan(0); - }); - - test('returns certificates with correct fields', async () => { - const [certificate] = await getUserCertificates(); - - expect(certificate).toMatchObject(parsedCertificateMock); - }); -}); diff --git a/src/api/isValidSystemSetup.test.ts b/src/api/isValidSystemSetup.test.ts deleted file mode 100644 index 1bac2c3..0000000 --- a/src/api/isValidSystemSetup.test.ts +++ /dev/null @@ -1,64 +0,0 @@ -import 'cadesplugin'; -import 'console-mock'; -import { isValidSystemSetup } from './isValidSystemSetup'; -import { getSystemInfo } from './getSystemInfo'; -import { _isSupportedCadesVersion } from '../helpers/_isSupportedCadesVersion'; -import { _isSupportedCSPVersion } from '../helpers/_isSupportedCSPVersion'; - -jest.mock('./getSystemInfo', () => ({ getSystemInfo: jest.fn() })); -jest.mock('../helpers/_isSupportedCadesVersion', () => ({ _isSupportedCadesVersion: jest.fn() })); -jest.mock('../helpers/_isSupportedCSPVersion', () => ({ _isSupportedCSPVersion: jest.fn() })); - -beforeEach(() => { - (getSystemInfo as jest.Mock).mockClear(); - (_isSupportedCadesVersion as jest.Mock).mockClear(); - (_isSupportedCSPVersion as jest.Mock).mockClear(); -}); - -describe('isValidSystemSetup', () => { - (getSystemInfo as jest.Mock).mockImplementation(() => ({ - cadesVersion: '2.0.13771', - cspVersion: '4.0.9971', - })); - (_isSupportedCadesVersion as jest.Mock).mockImplementation(() => true); - (_isSupportedCSPVersion as jest.Mock).mockImplementation(() => true); - - describe('positive scenario', () => { - test("calls getSystemInfo to verify that it's possible", async () => { - await isValidSystemSetup(); - - expect(getSystemInfo).toHaveBeenCalledTimes(1); - }); - - test('checks for validity using separate external helpers', async () => { - await isValidSystemSetup(); - - expect(_isSupportedCadesVersion).toHaveBeenCalledTimes(1); - expect(_isSupportedCSPVersion).toHaveBeenCalledTimes(1); - }); - }); - - describe('negative scenario', () => { - test('throws error from getSystemInfo', async () => { - const errorMessage = 'Какая-то синтаксическая ошибка'; - const vendorErrorMessage = 'Произошла ошибка из-за какой-то проблемы'; - - (getSystemInfo as jest.Mock).mockImplementationOnce(() => Promise.reject(new Error(errorMessage))); - (window.cadesplugin.getLastError as jest.Mock).mockImplementationOnce(() => new Error(vendorErrorMessage)); - - await expect(isValidSystemSetup()).rejects.toThrowError(vendorErrorMessage); - }); - - test('throws error if cades version is unsupported', async () => { - (_isSupportedCadesVersion as jest.Mock).mockImplementationOnce(() => false); - - await expect(isValidSystemSetup()).rejects.toThrowError('Не поддерживаемая версия плагина'); - }); - - test('throws error if CSP version is unsupported', async () => { - (_isSupportedCSPVersion as jest.Mock).mockImplementationOnce(() => false); - - await expect(isValidSystemSetup()).rejects.toThrowError('Не поддерживаемая версия CSP'); - }); - }); -}); diff --git a/src/helpers/_afterPluginsLoaded.test.ts b/src/helpers/_afterPluginsLoaded.test.ts deleted file mode 100644 index 22ce20c..0000000 --- a/src/helpers/_afterPluginsLoaded.test.ts +++ /dev/null @@ -1,45 +0,0 @@ -import 'cadesplugin'; -import 'console-mock'; -import { _afterPluginsLoaded } from './_afterPluginsLoaded'; - -const cadesPluginMock = window.cadesplugin; - -describe('_afterPluginsLoaded', () => { - beforeEach(() => { - window.cadesplugin = cadesPluginMock; - }); - - test('sets log level on a vendor library', async () => { - const wrappedMethod = _afterPluginsLoaded(jest.fn()); - - await wrappedMethod(); - - expect(window.cadesplugin.set_log_level).toBeCalled(); - }); - - test("throws Error when Cades plugin isn't available", async () => { - const wrappedMethod = _afterPluginsLoaded(jest.fn()); - - window.cadesplugin = Promise.reject(); - - await expect(wrappedMethod()).rejects.toThrow(); - }); - - test('throws Error from Cades plugin if it occurs', async () => { - const wrappedMethod = _afterPluginsLoaded(jest.fn()); - const vendorErrorMessage = 'Что-то пошло не так, и об этом стоит знать пользователю'; - - window.cadesplugin = Promise.reject(new Error(vendorErrorMessage)); - - await expect(wrappedMethod()).rejects.toThrowError(vendorErrorMessage); - }); - - test('calls method body when invoked', async () => { - const methodBody = jest.fn(); - const wrappedMethod = _afterPluginsLoaded(methodBody); - - await wrappedMethod(); - - expect(methodBody).toBeCalled(); - }); -}); diff --git a/src/vendor/cadesplugin_api.js b/src/vendor/cadesplugin_api.js index 0dd2a11..f022894 100644 --- a/src/vendor/cadesplugin_api.js +++ b/src/vendor/cadesplugin_api.js @@ -1,8 +1,8 @@ -;(function () { +; (function () { //already loaded - if(window.cadesplugin) - return; - + if (window.cadesplugin && window.cadesplugin.LOG_LEVEL_DEBUG) { + return; + } var pluginObject; var plugin_resolved = 0; var plugin_reject; @@ -14,731 +14,888 @@ var canPromise = !!window.Promise; var cadesplugin_loaded_event_recieved = false; var isFireFoxExtensionLoaded = false; - var cadesplugin; + var cadesplugin = {}; - if(canPromise) - { - cadesplugin = new Promise(function(resolve, reject) - { - plugin_resolve = resolve; - plugin_reject = reject; - }); - } else - { - cadesplugin = {}; + if (canPromise) { + cadesplugin = new window.Promise(function (resolve, reject) { + plugin_resolve = resolve; + plugin_reject = reject; + }); } function check_browser() { - var ua= navigator.userAgent, tem, M= ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; - if(/trident/i.test(M[1])){ - tem = /\brv[ :]+(\d+)/g.exec(ua) || []; - return { name:'IE', version:(tem[1] || '')}; - } - if(M[1] === 'Chrome'){ - tem = ua.match(/\b(OPR|Edg|YaBrowser)\/(\d+)/); - if (tem != null) - return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] }; - } - M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?']; - if ((tem = ua.match(/version\/(\d+)/i)) != null) - M.splice(1, 1, tem[1]); - return {name:M[0],version:M[1]}; + var ua = window.navigator.userAgent, + tem, + M = ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; + if (/trident/i.test(M[1])) { + tem = /\brv[ :]+(\d+)/g.exec(ua) || []; + return { name: 'IE', version: (tem[1] || '') }; + } + if (M[1] === "Chrome") { + tem = ua.match(/\b(OPR|Edg|YaBrowser)\/(\d+)/); + if (tem != null && (tem.length > 2)) { + return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] }; + } + } + M = M[2] ? [M[1], M[2]] : [window.navigator.appName, window.navigator.appVersion, '-?']; + if ((tem = ua.match(/version\/(\d+)/i)) != null) { + M.splice(1, 1, tem[1]); + } + return { name: M[0], version: M[1] }; } + var browserSpecs = check_browser(); - function cpcsp_console_log(level, msg){ - //IE9 не может писать в консоль если не открыта вкладка developer tools - if(typeof(console) === 'undefined') - return; - if (level <= cadesplugin.current_log_level ){ - if (level === cadesplugin.LOG_LEVEL_DEBUG) - console.log("DEBUG: %s", msg); - if (level === cadesplugin.LOG_LEVEL_INFO) - console.info("INFO: %s", msg); - if (level === cadesplugin.LOG_LEVEL_ERROR) - console.error("ERROR: %s", msg); - return; - } + function cpcsp_console_log(level, msg) { + //IE9 не может писать в консоль если не открыта вкладка developer tools + if (typeof console === 'undefined') { + return; + } + if (level <= cadesplugin.current_log_level) { + if (level === cadesplugin.LOG_LEVEL_DEBUG) { + console.log("DEBUG: %s", msg); + } + if (level === cadesplugin.LOG_LEVEL_INFO) { + console.info("INFO: %s", msg); + } + if (level === cadesplugin.LOG_LEVEL_ERROR) { + console.error("ERROR: %s", msg); + } + } } - function set_log_level(level){ - if (!((level === cadesplugin.LOG_LEVEL_DEBUG) || - (level === cadesplugin.LOG_LEVEL_INFO) || - (level === cadesplugin.LOG_LEVEL_ERROR))){ - cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "cadesplugin_api.js: Incorrect log_level: " + level); - return; - } - cadesplugin.current_log_level = level; - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) - cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = DEBUG"); - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) - cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = INFO"); - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) - cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = ERROR"); - if(isNativeMessageSupported()) - { - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) - window.postMessage("set_log_level=debug", "*"); - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) - window.postMessage("set_log_level=info", "*"); - if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) - window.postMessage("set_log_level=error", "*"); - } + function get_extension_version(callback) { + window.postMessage("cadesplugin_extension_version_request", "*"); + window.addEventListener("message", function (event) { + var resp_prefix = "cadesplugin_extension_version_response:"; + if (typeof (event.data) !== "string" || event.data.indexOf(resp_prefix) !== 0) { + return; + } + var ext_version = event.data.substring(resp_prefix.length); + callback(ext_version); + }, false); } - function set_constantValues() - { - cadesplugin.CAPICOM_MEMORY_STORE = 0; - cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1; - cadesplugin.CAPICOM_CURRENT_USER_STORE = 2; - cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4; - cadesplugin.CADESCOM_MEMORY_STORE = 0; - cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1; - cadesplugin.CADESCOM_CURRENT_USER_STORE = 2; - cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4; - cadesplugin.CADESCOM_CONTAINER_STORE = 100; + function get_extension_id(callback) { + window.postMessage("cadesplugin_extension_id_request", "*"); + window.addEventListener("message", function (event) { + var resp_prefix = "cadesplugin_extension_id_response:"; + if (typeof (event.data) !== "string" || event.data.indexOf(resp_prefix) !== 0) { + return; + } + var ext_id = event.data.substring(resp_prefix.length); + callback(ext_id); + }, false); + } - cadesplugin.CAPICOM_MY_STORE = "My"; + function set_log_level(level) { + if (!((level === cadesplugin.LOG_LEVEL_DEBUG) || + (level === cadesplugin.LOG_LEVEL_INFO) || + (level === cadesplugin.LOG_LEVEL_ERROR))) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "cadesplugin_api.js: Incorrect log_level: " + level); + return; + } + cadesplugin.current_log_level = level; + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = DEBUG"); + } + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = INFO"); + } + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = ERROR"); + } + if (isNativeMessageSupported()) { + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG) { + window.postMessage("set_log_level=debug", "*"); + } + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO) { + window.postMessage("set_log_level=info", "*"); + } + if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR) { + window.postMessage("set_log_level=error", "*"); + } + } + } - cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2; + function set_constantValues() { + cadesplugin.CAPICOM_MEMORY_STORE = 0; + cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1; + cadesplugin.CAPICOM_CURRENT_USER_STORE = 2; + cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4; + cadesplugin.CADESCOM_MEMORY_STORE = 0; + cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1; + cadesplugin.CADESCOM_CURRENT_USER_STORE = 2; + cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4; + cadesplugin.CADESCOM_CONTAINER_STORE = 100; - cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; + cadesplugin.CAPICOM_ROOT_STORE = "Root"; + cadesplugin.CAPICOM_CA_STORE = "CA"; + cadesplugin.CAPICOM_MY_STORE = "My"; + cadesplugin.CAPICOM_ADDRESSBOOK_STORE = "AddressBook"; - cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0; - cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1; - cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2; + cadesplugin.CAPICOM_STORE_OPEN_READ_WRITE = 1; + cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2; + cadesplugin.CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256; - cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010; - cadesplugin.CADESCOM_XADES_BES = 0x00000020; - cadesplugin.CADESCOM_XADES_T = 0x00000050; - cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0; - cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000; + cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; - cadesplugin.XmlDsigGost3410UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"; - cadesplugin.XmlDsigGost3411UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr3411"; - cadesplugin.XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"; - cadesplugin.XmlDsigGost3411Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"; + cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0; + cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1; + cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2; - cadesplugin.XmlDsigGost3411Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"; - cadesplugin.XmlDsigGost3410Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"; - cadesplugin.XmlDsigGost3411Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512"; - cadesplugin.XmlDsigGost3410Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512"; + cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010; + cadesplugin.CADESCOM_XADES_BES = 0x00000020; + cadesplugin.CADESCOM_XADES_T = 0x00000050; + cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0; + cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000; - cadesplugin.CADESCOM_CADES_DEFAULT = 0; - cadesplugin.CADESCOM_CADES_BES = 1; - cadesplugin.CADESCOM_CADES_T = 0x5; - cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d; - cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff; + cadesplugin.XmlDsigGost3410UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"; + cadesplugin.XmlDsigGost3411UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr3411"; + cadesplugin.XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"; + cadesplugin.XmlDsigGost3411Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"; - cadesplugin.CADESCOM_ENCODE_BASE64 = 0; - cadesplugin.CADESCOM_ENCODE_BINARY = 1; - cadesplugin.CADESCOM_ENCODE_ANY = -1; + cadesplugin.XmlDsigGost3411Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"; + cadesplugin.XmlDsigGost3410Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"; + cadesplugin.XmlDsigGost3411Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512"; + cadesplugin.XmlDsigGost3410Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512"; - cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0; - cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1; - cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2; + cadesplugin.CADESCOM_CADES_DEFAULT = 0; + cadesplugin.CADESCOM_CADES_BES = 1; + cadesplugin.CADESCOM_CADES_T = 0x5; + cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d; + cadesplugin.CADESCOM_CADES_A = 0xdd; + cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff; - cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0; - cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1; + cadesplugin.CADESCOM_ENCODE_BASE64 = 0; + cadesplugin.CADESCOM_ENCODE_BINARY = 1; + cadesplugin.CADESCOM_ENCODE_ANY = -1; - cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0; - cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; - cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2; - cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3; - cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4; - cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5; - cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6; - cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7; - cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8; - cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9; - cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10; - cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11; - cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12; + cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0; + cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1; + cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2; + cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_NONE = 0x100; - cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128; + cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0; + cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1; - cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9; + cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0; + cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; + cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2; + cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3; + cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4; + cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5; + cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6; + cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7; + cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8; + cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9; + cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10; + cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11; + cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12; - cadesplugin.CAPICOM_OID_OTHER = 0; - cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10; + cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128; - cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2; - cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5; - cadesplugin.CAPICOM_EKU_OTHER = 0; + cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9; - cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; - cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1; - cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2; - cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; - cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1; - cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2; - cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100; - cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1; + cadesplugin.CAPICOM_OID_OTHER = 0; + cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10; - cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0; - cadesplugin.CADESCOM_BASE64_TO_BINARY = 1; + cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2; + cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5; + cadesplugin.CAPICOM_EKU_OTHER = 0; - cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0; - cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1; - cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2; + cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; + cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1; + cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2; + cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; + cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1; + cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2; + cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100; + cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4; - cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25; + cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0; + cadesplugin.CADESCOM_BASE64_TO_BINARY = 1; - cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0; - cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1; - cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2; - cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3; - cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4; - cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5; - cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111; - cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112; + cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0; + cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1; + cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2; - cadesplugin.LOG_LEVEL_DEBUG = 4; - cadesplugin.LOG_LEVEL_INFO = 2; - cadesplugin.LOG_LEVEL_ERROR = 1; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA = 35; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_MAGMA_OMAC = 36; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK = 45; + cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK_OMAC = 46; - cadesplugin.CADESCOM_AllowNone = 0; - cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1; - cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2; - cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4; - cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000; - cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000; - cadesplugin.CADESCOM_UseContainerStore = 0x40000000; + cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0; + cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1; + cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2; + cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3; + cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4; + cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5; + cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111; + cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112; - cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01; - cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02; - cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04; - cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07; + cadesplugin.CADESCOM_CERT_INFO_ROLE = 100; + cadesplugin.CADESCOM_ROLE_ROOT = "ROOT"; + cadesplugin.CADESCOM_ROLE_CA = "CA"; + cadesplugin.CADESCOM_ROLE_LEAF = "LEAF"; - cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00; - cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01; - cadesplugin.ENABLE_CARRIER_CREATE = 0x02; - cadesplugin.ENABLE_ANY_OPERATION = 0x03; + cadesplugin.LOG_LEVEL_DEBUG = 4; + cadesplugin.LOG_LEVEL_INFO = 2; + cadesplugin.LOG_LEVEL_ERROR = 1; - cadesplugin.CADESCOM_PRODUCT_CSP = 0; - cadesplugin.CADESCOM_PRODUCT_OCSP = 1; - cadesplugin.CADESCOM_PRODUCT_TSP = 2; + cadesplugin.CADESCOM_AllowNone = 0; + cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1; + cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2; + cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4; + cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000; + cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000; + cadesplugin.CADESCOM_UseContainerStore = 0x40000000; - cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001; - cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002; - cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004; - cadesplugin.MEDIA_TYPE_SCARD = 0x00000008; + cadesplugin.ContextNone = 0; + cadesplugin.ContextUser = 0x1; + cadesplugin.ContextMachine = 0x2; + cadesplugin.ContextAdministratorForceMachine = 0x3; - cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0; - cadesplugin.AT_KEYEXCHANGE = 1; - cadesplugin.AT_SIGNATURE = 2; + cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01; + cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02; + cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04; + cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07; - cadesplugin.CARRIER_FLAG_REMOVABLE = 1; - cadesplugin.CARRIER_FLAG_UNIQUE = 2; - cadesplugin.CARRIER_FLAG_PROTECTED = 4; - cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER = 8; - cadesplugin.CARRIER_FLAG_SECURE_MESSAGING = 16; - cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE = 64; - cadesplugin.CARRIER_FLAG_VIRTUAL = 128; + cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00; + cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01; + cadesplugin.ENABLE_CARRIER_CREATE = 0x02; + cadesplugin.ENABLE_ANY_OPERATION = 0x03; + + cadesplugin.CADESCOM_PRODUCT_CSP = 0; + cadesplugin.CADESCOM_PRODUCT_OCSP = 1; + cadesplugin.CADESCOM_PRODUCT_TSP = 2; + + cadesplugin.MEDIA_TYPE_DEFAULT = 0x00000000; + cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001; + cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002; + cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004; + cadesplugin.MEDIA_TYPE_SCARD = 0x00000008; + + cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0; + cadesplugin.XCN_CRYPT_STRING_BASE64 = 0x1; + cadesplugin.XCN_CRYPT_STRING_BINARY = 0x2; + cadesplugin.XCN_CRYPT_STRING_BASE64REQUESTHEADER = 0x3; + cadesplugin.XCN_CRYPT_STRING_HEX = 0x4; + cadesplugin.XCN_CRYPT_STRING_HEXASCII = 0x5; + cadesplugin.XCN_CRYPT_STRING_BASE64_ANY = 0x6; + cadesplugin.XCN_CRYPT_STRING_ANY = 0x7; + cadesplugin.XCN_CRYPT_STRING_HEX_ANY = 0x8; + cadesplugin.XCN_CRYPT_STRING_BASE64X509CRLHEADER = 0x9; + cadesplugin.XCN_CRYPT_STRING_HEXADDR = 0xa; + cadesplugin.XCN_CRYPT_STRING_HEXASCIIADDR = 0xb; + cadesplugin.XCN_CRYPT_STRING_HEXRAW = 0xc; + cadesplugin.XCN_CRYPT_STRING_BASE64URI = 0xd; + cadesplugin.XCN_CRYPT_STRING_ENCODEMASK = 0xff; + cadesplugin.XCN_CRYPT_STRING_CHAIN = 0x100; + cadesplugin.XCN_CRYPT_STRING_TEXT = 0x200; + cadesplugin.XCN_CRYPT_STRING_PERCENTESCAPE = 0x8000000; + cadesplugin.XCN_CRYPT_STRING_HASHDATA = 0x10000000; + cadesplugin.XCN_CRYPT_STRING_STRICT = 0x20000000; + cadesplugin.XCN_CRYPT_STRING_NOCRLF = 0x40000000; + cadesplugin.XCN_CRYPT_STRING_NOCR = 0x80000000; + + cadesplugin.XCN_CERT_NAME_STR_NONE = 0; + cadesplugin.XCN_AT_NONE = 0; + cadesplugin.XCN_AT_KEYEXCHANGE = 1; + cadesplugin.XCN_AT_SIGNATURE = 2; + + cadesplugin.AT_KEYEXCHANGE = 1; + cadesplugin.AT_SIGNATURE = 2; + + cadesplugin.CARRIER_FLAG_REMOVABLE = 1; + cadesplugin.CARRIER_FLAG_UNIQUE = 2; + cadesplugin.CARRIER_FLAG_PROTECTED = 4; + cadesplugin.CARRIER_FLAG_FUNCTIONAL_CARRIER = 8; + cadesplugin.CARRIER_FLAG_SECURE_MESSAGING = 16; + cadesplugin.CARRIER_FLAG_ABLE_SET_KEY = 32; + cadesplugin.CARRIER_FLAG_ABLE_VISUALISE_SIGNATURE = 64; + cadesplugin.CARRIER_FLAG_VIRTUAL = 128; + + cadesplugin.CRYPT_MODE_CBCSTRICT = 1; + cadesplugin.CRYPT_MODE_CNT = 3; + cadesplugin.CRYPT_MODE_CBCRFC4357 = 31; + cadesplugin.CRYPT_MODE_CTR = 32; + cadesplugin.CRYPT_MODE_MGM = 33; + cadesplugin.CRYPT_MODE_GCM = 34; + cadesplugin.CRYPT_MODE_OMAC_CTR = 35; + cadesplugin.CRYPT_MODE_WRAP = 36; + cadesplugin.CRYPT_MODE_WRAP_PAD = 37; + + cadesplugin.PKCS5_PADDING = 1; + cadesplugin.RANDOM_PADDING = 2; + cadesplugin.ZERO_PADDING = 3; + cadesplugin.ISO10126_PADDING = 4; + cadesplugin.ANSI_X923_PADDING = 5; + cadesplugin.TLS_1_0_PADDING = 6; + cadesplugin.ISO_IEC_7816_4_PADDING = 7; + + cadesplugin.CAPICOM_STORE_SAVE_AS_SERIALIZED = 0; + cadesplugin.CAPICOM_STORE_SAVE_AS_PKCS7 = 1; + + cadesplugin.CERT_TRUST_NO_ERROR = 0x00000000; + cadesplugin.CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001; + cadesplugin.CERT_TRUST_IS_REVOKED = 0x00000004; + cadesplugin.CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008; + cadesplugin.CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010; + cadesplugin.CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020; + cadesplugin.CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040; + cadesplugin.CERT_TRUST_IS_CYCLIC = 0x00000080; + cadesplugin.CERT_TRUST_INVALID_EXTENSION = 0x00000100; + cadesplugin.CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200; + cadesplugin.CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400; + cadesplugin.CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800; + cadesplugin.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000; + cadesplugin.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000; + cadesplugin.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000; + cadesplugin.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000; + cadesplugin.CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000; + cadesplugin.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000; + cadesplugin.CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000; + cadesplugin.CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000; + cadesplugin.CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000; + + cadesplugin.XCN_CERT_NO_KEY_USAGE = 0; + cadesplugin.XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE = 0x80; + cadesplugin.XCN_CERT_NON_REPUDIATION_KEY_USAGE = 0x40; + cadesplugin.XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE = 0x20; + cadesplugin.XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE = 0x10; + cadesplugin.XCN_CERT_KEY_AGREEMENT_KEY_USAGE = 0x8; + cadesplugin.XCN_CERT_KEY_CERT_SIGN_KEY_USAGE = 0x4; + cadesplugin.XCN_CERT_OFFLINE_CRL_SIGN_KEY_USAGE = 0x2; + cadesplugin.XCN_CERT_CRL_SIGN_KEY_USAGE = 0x2; + cadesplugin.XCN_CERT_ENCIPHER_ONLY_KEY_USAGE = 0x1; + cadesplugin.XCN_CERT_DECIPHER_ONLY_KEY_USAGE = 0x8000; + + cadesplugin.CADESCOM_XADES_ACCEPT_ANY_ID_ATTR_NAMESPACE = 1; + cadesplugin.CADES_USE_OCSP_AUTHORIZED_POLICY = 0x00020000; + + cadesplugin.XCN_NCRYPT_NO_OPERATION = 0; + cadesplugin.XCN_NCRYPT_CIPHER_OPERATION = 0x1; + cadesplugin.XCN_NCRYPT_HASH_OPERATION = 0x2; + cadesplugin.XCN_NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION = 0x4; + cadesplugin.XCN_NCRYPT_SECRET_AGREEMENT_OPERATION = 0x8; + cadesplugin.XCN_NCRYPT_SIGNATURE_OPERATION = 0x10; + cadesplugin.XCN_NCRYPT_RNG_OPERATION = 0x20; + + cadesplugin.XCN_CRYPT_ANY_GROUP_ID = 0; + cadesplugin.XCN_CRYPT_HASH_ALG_OID_GROUP_ID = 1; + cadesplugin.XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID = 2; + cadesplugin.XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID = 3; + cadesplugin.XCN_CRYPT_SIGN_ALG_OID_GROUP_ID = 4; + cadesplugin.XCN_CRYPT_RDN_ATTR_OID_GROUP_ID = 5; + cadesplugin.XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID = 6; + cadesplugin.XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID = 7; + cadesplugin.XCN_CRYPT_POLICY_OID_GROUP_ID = 8; + cadesplugin.XCN_CRYPT_TEMPLATE_OID_GROUP_ID = 9; + + cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_ANY = 0; + cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG = 0x80000000; + cadesplugin.XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG = 0x40000000; + + cadesplugin.CONTROL_KEY_TIME_VALIDITY_DISABLED = 0; + cadesplugin.CONTROL_KEY_TIME_VALIDITY_ENABLED = 1; + cadesplugin.CONTROL_KEY_TIME_VALIDITY_STRICT = 2; + + cadesplugin.AlgorithmFlagsNone = 0; + cadesplugin.AlgorithmFlagsWrap = 0x1; } function async_spawn(generatorFunc) { - function continuer(verb, arg) { - var result; - try { - result = generator[verb](arg); - } catch (err) { - return Promise.reject(err); + function continuer(verb, arg) { + var result; + try { + result = generator[verb](arg); + } catch (err) { + return window.Promise.reject(err); + } + if (result.done) { + return result.value; + } else { + return window.Promise.resolve(result.value).then(onFulfilled, onRejected); + } } - if (result.done) { - return result.value; - } else { - return Promise.resolve(result.value).then(onFulfilled, onRejected); - } - } - var generator = generatorFunc(Array.prototype.slice.call(arguments, 1)); - var onFulfilled = continuer.bind(continuer, "next"); - var onRejected = continuer.bind(continuer, "throw"); - return onFulfilled(); + var generator = generatorFunc(Array.prototype.slice.call(arguments, 1)); + var onFulfilled = continuer.bind(continuer, "next"); + var onRejected = continuer.bind(continuer, "throw"); + return onFulfilled(); } function isIE() { - // var retVal = (("Microsoft Internet Explorer" == navigator.appName) || // IE < 11 - // navigator.userAgent.match(/Trident\/./i)); // IE 11 - return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE'); + // var retVal = (("Microsoft Internet Explorer" == navigator.appName) || // IE < 11 + // navigator.userAgent.match(/Trident\/./i)); // IE 11 + return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE'); } function isIOS() { - return (navigator.userAgent.match(/ipod/i) || - navigator.userAgent.match(/ipad/i) || - navigator.userAgent.match(/iphone/i)); + return (window.navigator.userAgent.match(/ipod/i) || + window.navigator.userAgent.match(/ipad/i) || + window.navigator.userAgent.match(/iphone/i)); } - function isNativeMessageSupported() - { - // В IE работаем через NPAPI - if(isIE()) - return false; - // В Edge работаем через NativeMessage - if (browserSpecs.name === 'Edg') { - return true; - } - if (browserSpecs.name === 'YaBrowser') { - isYandex = true; - return true; - } - // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии - if(browserSpecs.name === 'Opera') { - isOpera = true; - if(browserSpecs.version >= 33){ - return true; + function isNativeMessageSupported() { + // В IE работаем через NPAPI + if (isIE()) { + return false; } - else{ - return false; + // В Edge работаем через NativeMessage + if (browserSpecs.name === 'Edg') { + return true; } - } - if(browserSpecs.name === 'Firefox') { - isFireFox = true; - if(browserSpecs.version >= 52){ - return true; + if (browserSpecs.name === 'YaBrowser') { + isYandex = true; + return true; } - else{ - return false; + // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии + if (browserSpecs.name === 'Opera') { + isOpera = true; + return (browserSpecs.version >= 33); } - } - if(browserSpecs.name === 'Chrome') { - if(browserSpecs.version >= 42){ - return true; + if (browserSpecs.name === 'Firefox') { + isFireFox = true; + return (browserSpecs.version >= 52); } - else{ - return false; + if (browserSpecs.name === 'Chrome') { + return (browserSpecs.version >= 42); } - } - //В Сафари начиная с 12 версии нет NPAPI - if(browserSpecs.name === 'Safari') { - isSafari = true; - if(browserSpecs.version >= 12) { - return true; - } else { - return false; + //В Сафари начиная с 12 версии нет NPAPI + if (browserSpecs.name === 'Safari') { + isSafari = true; + return (browserSpecs.version >= 12); } - } } // Функция активации объектов КриптоПро ЭЦП Browser plug-in function CreateObject(name) { - if (isIOS()) { - // На iOS для создания объектов используется функция - // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js - return call_ru_cryptopro_npcades_10_native_bridge("CreateObject", [name]); - } - if (isIE()) { - // В Internet Explorer создаются COM-объекты - if (name.match(/X509Enrollment/i)) { - try { - // Объекты CertEnroll пробуем создавать через нашу фабрику, - // если не получилось то через CX509EnrollmentWebClassFactory - var objCertEnrollClassFactory = document.getElementById("webClassFactory"); - return objCertEnrollClassFactory.CreateObject(name); - } - catch (e) { + if (isIOS()) { + // На iOS для создания объектов используется функция + // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js + return call_ru_cryptopro_npcades_10_native_bridge("CreateObject", [name]); + } + var objWebClassFactory; + if (isIE()) { + // В Internet Explorer создаются COM-объекты + if (name.match(/X509Enrollment/i)) { + try { + // Объекты CertEnroll пробуем создавать через нашу фабрику, + // если не получилось то через CX509EnrollmentWebClassFactory + objWebClassFactory = document.getElementById("webClassFactory"); + return objWebClassFactory.CreateObject(name); + } + catch (e) { + try { + var objCertEnrollClassFactory = document.getElementById("certEnrollClassFactory"); + return objCertEnrollClassFactory.CreateObject(name); + } + catch (err) { + throw ("Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS"); + } + } + } + // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory try { - var objWebClassFactory = document.getElementById("certEnrollClassFactory"); - return objWebClassFactory.CreateObject(name); + objWebClassFactory = document.getElementById("webClassFactory"); + return objWebClassFactory.CreateObject(name); + } catch (e) { + // Для версий плагина ниже 2.0.12538 + return new window.ActiveXObject(name); } - catch (err) { - throw ("Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS"); - } - } } - // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory - try { - var objWebClassFactory = document.getElementById("webClassFactory"); - return objWebClassFactory.CreateObject(name); - } - catch (e) { - // Для версий плагина ниже 2.0.12538 - return new ActiveXObject(name); - } - } - // создаются объекты NPAPI - return pluginObject.CreateObject(name); + // создаются объекты NPAPI + return pluginObject.CreateObject(name); } function decimalToHexString(number) { - if (number < 0) { - number = 0xFFFFFFFF + number + 1; - } + if (number < 0) { + number = 0xFFFFFFFF + number + 1; + } - return number.toString(16).toUpperCase(); + return number.toString(16).toUpperCase(); } function GetMessageFromException(e) { - var err = e.message; - if (!err) { - err = e; - } else if (e.number) { - err += " (0x" + decimalToHexString(e.number) + ")"; - } - return err; + var err = e.message; + if (!err) { + err = e; + } else if (e.number) { + err += " (0x" + decimalToHexString(e.number) + ")"; + } + return err; } function getLastError(exception) { - if(isNativeMessageSupported() || isIE() || isIOS() ) { - return GetMessageFromException(exception); - } + if (isNativeMessageSupported() || isIE() || isIOS()) { + return GetMessageFromException(exception); + } - try { - return pluginObject.getLastError(); - } catch(e) { - return GetMessageFromException(exception); - } + try { + return pluginObject.getLastError(); + } catch (e) { + return GetMessageFromException(exception); + } } // Функция для удаления созданных объектов function ReleasePluginObjects() { - return cpcsp_chrome_nmcades.ReleasePluginObjects(); + // noinspection JSUnresolvedVariable + return cpcsp_chrome_nmcades.ReleasePluginObjects(); } // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in function CreateObjectAsync(name) { - return pluginObject.CreateObjectAsync(name); + return pluginObject.CreateObjectAsync(name); } - //Функции для IOS + // Функции для IOS + // noinspection JSUnusedGlobalSymbols var ru_cryptopro_npcades_10_native_bridge = { - callbacksCount : 1, - callbacks : {}, + callbacksCount: 1, + callbacks: {}, - // Automatically called by native layer when a result is available - resultForCallback : function resultForCallback(callbackId, resultArray) { - var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId]; - if (!callback) return; - callback.apply(null,resultArray); - }, + // Automatically called by native layer when a result is available + resultForCallback: function resultForCallback(callbackId, resultArray) { + var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId]; + if (!callback) { + return; + } + callback.apply(null, resultArray); + }, - // Use this in javascript to request native objective-c code - // functionName : string (I think the name is explicit :p) - // args : array of arguments - // callback : function with n-arguments that is going to be called when the native code returned - call : function call(functionName, args, callback) { - var hasCallback = callback && typeof callback === "function"; - var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0; + // Use this in javascript to request native objective-c code + // functionName : string (I think the name is explicit :p) + // args : array of arguments + // callback : function with n-arguments that is going to be called when the native code returned + call: function call(functionName, args, callback) { + var hasCallback = callback && typeof callback === "function"; + var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0; - if (hasCallback) - ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback; + if (hasCallback) { + ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback; + } - var iframe = document.createElement("IFRAME"); - var arrObjs = new Array("_CPNP_handle"); - try{ - iframe.setAttribute("src", "cpnp-js-call:" + functionName + ":" + callbackId+ ":" + encodeURIComponent(JSON.stringify(args, arrObjs))); - } catch(e){ - alert(e); + var iframe = document.createElement("IFRAME"); + var arrObjs = new Array("_CPNP_handle"); + try { + iframe.setAttribute("src", "cpnp-js-call:" + functionName + ":" + callbackId + ":" + encodeURIComponent(window.JSON.stringify(args, arrObjs))); + } catch (e) { + window.alert(e); + } + document.documentElement.appendChild(iframe); + iframe.parentNode.removeChild(iframe); + iframe = null; } - document.documentElement.appendChild(iframe); - iframe.parentNode.removeChild(iframe); - iframe = null; - } }; - function call_ru_cryptopro_npcades_10_native_bridge(functionName, array){ - var tmpobj; - var ex; - ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function(e, response){ - ex = e; - var str='tmpobj='+response; - eval(str); - if (typeof (tmpobj) === "string"){ - tmpobj = tmpobj.replace(/\\\n/gm, "\n"); - tmpobj = tmpobj.replace(/\\\r/gm, "\r"); + function call_ru_cryptopro_npcades_10_native_bridge(functionName, array) { + var tmpobj; + var ex; + ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function (e, response) { + ex = e; + var tmpobj = ""; + try { + tmpobj = window.JSON.parse(response); + } + catch (err) { + tmpobj = response; + } + if (typeof tmpobj === "string") { + tmpobj = tmpobj.replace(/\\\n/gm, "\n"); + tmpobj = tmpobj.replace(/\\\r/gm, "\r"); + } + }); + if (ex) { + throw ex; } - }); - if(ex) - throw ex; - return tmpobj; + return tmpobj; } - function show_firefox_missing_extension_dialog() - { - if (!window.cadesplugin_skip_extension_install) - { - var ovr = document.createElement('div'); - ovr.id = "cadesplugin_ovr"; - ovr.style = "visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)"; - ovr.innerHTML = "
" + - "" + - "

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его." + - "

Скачать расширение

" + - "
"; - document.getElementsByTagName("Body")[0].appendChild(ovr); - document.getElementById("cadesplugin_close_install").addEventListener('click',function() - { - plugin_loaded_error("Плагин недоступен"); - document.getElementById("cadesplugin_ovr").style.visibility = 'hidden'; - }); + function show_firefox_missing_extension_dialog() { + if (!window.cadesplugin_skip_extension_install) { + var ovr = document.createElement('div'); + ovr.id = "cadesplugin_ovr"; + ovr.style = "visibility: hidden; position: fixed; left: 0; top: 0; width:100%; height:100%; background-color: rgba(0,0,0,0.7)"; + ovr.innerHTML = "
" + + "" + + "

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его." + + "

Скачать расширение

" + + "
"; + document.getElementsByTagName("Body")[0].appendChild(ovr); + document.getElementById("cadesplugin_close_install").addEventListener('click', function () { + plugin_loaded_error("Плагин недоступен"); + document.getElementById("cadesplugin_ovr").style.visibility = 'hidden'; + }); - ovr.addEventListener('click',function() - { - plugin_loaded_error("Плагин недоступен"); - document.getElementById("cadesplugin_ovr").style.visibility = 'hidden'; - }); - ovr.style.visibility="visible"; - } + ovr.addEventListener('click', function () { + plugin_loaded_error("Плагин недоступен"); + document.getElementById("cadesplugin_ovr").style.visibility = 'hidden'; + }); + ovr.style.visibility = "visible"; + } } + function firefox_or_safari_nmcades_onload() { - if (window.cadesplugin_extension_loaded_callback) - window.cadesplugin_extension_loaded_callback(); - isFireFoxExtensionLoaded = true; - cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error); + // noinspection JSUnresolvedVariable + if (window.cadesplugin_extension_loaded_callback) { + window.cadesplugin_extension_loaded_callback(); + } + isFireFoxExtensionLoaded = true; + // noinspection JSUnresolvedVariable,JSUnresolvedFunction + cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error); + } + + function load_js_script(url, successFunc, errorFunc) { + var script = document.createElement("script"); + script.setAttribute("type", "text/javascript"); + script.setAttribute("src", url); + script.onerror = errorFunc; + script.onload = successFunc; + document.getElementsByTagName("head")[0].appendChild(script); } function nmcades_api_onload() { - if (!isIE() && !isFireFox && !isSafari) { - if (window.cadesplugin_extension_loaded_callback) - window.cadesplugin_extension_loaded_callback(); - } - window.postMessage("cadesplugin_echo_request", "*"); - window.addEventListener("message", function (event){ - if (typeof(event.data) !== "string" || !event.data.match("cadesplugin_loaded")) - return; - if (cadesplugin_loaded_event_recieved) - return; - if(isFireFox || isSafari) - { - // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js - var url = event.data.substring(event.data.indexOf("url:") + 4); - if (!url.match("^moz-extension://[a-zA-Z0-9-]+/nmcades_plugin_api.js$") - && !url.match("^safari-extension://[a-zA-Z0-9-]+/[a-zA-Z0-9]+/nmcades_plugin_api.js$")) - { - cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "Bad url \"" + url + "\" for load CryptoPro Extension for CAdES Browser plug-in"); - plugin_loaded_error(); - return; - } - var fileref = document.createElement('script'); - fileref.setAttribute("type", "text/javascript"); - fileref.setAttribute("src", url); - fileref.onerror = plugin_loaded_error; - fileref.onload = firefox_or_safari_nmcades_onload; - document.getElementsByTagName("head")[0].appendChild(fileref); - }else { - cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error); + if (!isIE() && !isFireFox && !isSafari) { + // noinspection JSUnresolvedVariable + if (window.cadesplugin_extension_loaded_callback) { + window.cadesplugin_extension_loaded_callback(); + } } - cadesplugin_loaded_event_recieved = true; - }, false); + window.postMessage("cadesplugin_echo_request", "*"); + window.addEventListener("message", function (event) { + if (typeof (event.data) !== "string" || !event.data.match("cadesplugin_loaded")) { + return; + } + if (cadesplugin_loaded_event_recieved) { + return; + } + if (isFireFox || isSafari) { + // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js + var url = event.data.substring(event.data.indexOf("url:") + 4); + if (!url.match("^(moz|safari)-extension://[a-zA-Z0-9/_-]+/nmcades_plugin_api.js$")) { + cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "Bad url \"" + url + "\" for load CryptoPro Extension for CAdES Browser plug-in"); + plugin_loaded_error(); + return; + } + load_js_script(url, firefox_or_safari_nmcades_onload, plugin_loaded_error); + } else { + // noinspection JSUnresolvedVariable,JSUnresolvedFunction + cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error); + } + cadesplugin_loaded_event_recieved = true; + }, false); } - //Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari - function load_extension() - { - if(isFireFox || isSafari){ - // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера. - nmcades_api_onload(); - } else { - // в асинхронном варианте для Yandex и Opera подключаем расширение из Opera store. - if (isOpera || isYandex) { - var fileref = document.createElement('script'); - fileref.setAttribute("type", "text/javascript"); - fileref.setAttribute("src", "chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js"); - fileref.onerror = plugin_loaded_error; - fileref.onload = nmcades_api_onload; - document.getElementsByTagName("head")[0].appendChild(fileref); - } else { - // для Chrome, Chromium, Chromium Edge расширение из Chrome store - var fileref = document.createElement('script'); - fileref.setAttribute("type", "text/javascript"); - fileref.setAttribute("src", "chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js"); - fileref.onerror = plugin_loaded_error; - fileref.onload = nmcades_api_onload; - document.getElementsByTagName("head")[0].appendChild(fileref); + // Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari + function load_extension() { + if (isFireFox || isSafari) { + // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера. + nmcades_api_onload(); + return; } - } + var operaUrl = "chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js"; + var manifestv2Url = "chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js"; + var manifestv3Url = "chrome-extension://pfhgbfnnjiafkhfdkmpiflachepdcjod/nmcades_plugin_api.js"; + if (isYandex || isOpera) { + // в асинхронном варианте для Yandex пробуем подключить расширения по очереди + load_js_script(operaUrl, nmcades_api_onload, function () { + load_js_script(manifestv2Url, nmcades_api_onload, function () { + load_js_script(manifestv3Url, nmcades_api_onload, plugin_loaded_error); + }); + }); + return; + } + // для Chrome, Chromium, Chromium Edge расширение из Chrome store + load_js_script(manifestv2Url, nmcades_api_onload, function () { + load_js_script(manifestv3Url, nmcades_api_onload, plugin_loaded_error); + }); } //Загружаем плагин для NPAPI - function load_npapi_plugin() - { - var elem = document.createElement('object'); - elem.setAttribute("id", "cadesplugin_object"); - elem.setAttribute("type", "application/x-cades"); - elem.setAttribute("style", "visibility: hidden"); - document.getElementsByTagName("body")[0].appendChild(elem); - pluginObject = document.getElementById("cadesplugin_object"); - if(isIE()) - { - var elem1 = document.createElement('object'); - elem1.setAttribute("id", "certEnrollClassFactory"); - elem1.setAttribute("classid", "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"); - elem1.setAttribute("style", "visibility: hidden"); - document.getElementsByTagName("body")[0].appendChild(elem1); - var elem2 = document.createElement('object'); - elem2.setAttribute("id", "webClassFactory"); - elem2.setAttribute("classid", "clsid:B04C8637-10BD-484E-B0DA-B8A039F60024"); - elem2.setAttribute("style", "visibility: hidden"); - document.getElementsByTagName("body")[0].appendChild(elem2); - } + function load_npapi_plugin() { + var elem = document.createElement('object'); + elem.setAttribute("id", "cadesplugin_object"); + elem.setAttribute("type", "application/x-cades"); + elem.setAttribute("style", "visibility: hidden"); + document.getElementsByTagName("body")[0].appendChild(elem); + pluginObject = document.getElementById("cadesplugin_object"); + if (isIE()) { + var elem1 = document.createElement('object'); + elem1.setAttribute("id", "certEnrollClassFactory"); + elem1.setAttribute("classid", "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"); + elem1.setAttribute("style", "visibility: hidden"); + document.getElementsByTagName("body")[0].appendChild(elem1); + var elem2 = document.createElement('object'); + elem2.setAttribute("id", "webClassFactory"); + elem2.setAttribute("classid", "clsid:B04C8637-10BD-484E-B0DA-B8A039F60024"); + elem2.setAttribute("style", "visibility: hidden"); + document.getElementsByTagName("body")[0].appendChild(elem2); + } } //Отправляем событие что все ок. - function plugin_loaded() - { - plugin_resolved = 1; - if(canPromise) - { - plugin_resolve(); - }else { - window.postMessage("cadesplugin_loaded", "*"); - } + function plugin_loaded() { + plugin_resolved = 1; + if (canPromise) { + plugin_resolve(); + } else { + window.postMessage("cadesplugin_loaded", "*"); + } } //Отправляем событие что сломались. - function plugin_loaded_error(msg) - { - if(typeof(msg) === 'undefined' || typeof(msg) === 'object') - msg = "Плагин недоступен"; - plugin_resolved = 1; - if(canPromise) - { - plugin_reject(msg); - } else { - window.postMessage("cadesplugin_load_error", "*"); - } + function plugin_loaded_error(msg) { + if (typeof (msg) === 'undefined' || typeof (msg) === 'object') { + msg = "Плагин недоступен"; + } + plugin_resolved = 1; + if (canPromise) { + plugin_reject(msg); + } else { + window.postMessage("cadesplugin_load_error", "*"); + } } //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку - function check_load_timeout() - { - if(plugin_resolved === 1) - return; - if(isFireFox) - { - if (!isFireFoxExtensionLoaded) - show_firefox_missing_extension_dialog(); - } - plugin_resolved = 1; - if(canPromise) - { - plugin_reject("Истекло время ожидания загрузки плагина"); - } else { - window.postMessage("cadesplugin_load_error", "*"); - } - - } - - //Вспомогательная функция для NPAPI - function createPromise(arg) - { - return new Promise(arg); - } - - function check_npapi_plugin (){ - try { - var oAbout = CreateObject("CAdESCOM.About"); - plugin_loaded(); - } - catch (err) { - document.getElementById("cadesplugin_object").style.display = 'none'; - // Объект создать не удалось, проверим, установлен ли - // вообще плагин. Такая возможность есть не во всех браузерах - var mimetype = navigator.mimeTypes["application/x-cades"]; - if (mimetype) { - var plugin = mimetype.enabledPlugin; - if (plugin) { - plugin_loaded_error("Плагин загружен, но не создаются обьекты"); - }else - { - plugin_loaded_error("Ошибка при загрузке плагина"); - } - }else - { - plugin_loaded_error("Плагин недоступен"); + function check_load_timeout() { + if (plugin_resolved === 1) { + return; } - } - } - - //Проверяем работает ли плагин - function check_plugin_working() - { - var div = document.createElement("div"); - div.innerHTML = ""; - var isIeLessThan9 = (div.getElementsByTagName("i").length === 1); - if (isIeLessThan9) { - plugin_loaded_error("Internet Explorer версии 8 и ниже не поддерживается"); - return; - } - - if(isNativeMessageSupported()) - { - load_extension(); - }else if(!canPromise) { - window.addEventListener("message", function (event){ - if (event.data !== "cadesplugin_echo_request") - return; - load_npapi_plugin(); - check_npapi_plugin(); - }, - false); - }else - { - if(document.readyState === "complete"){ - load_npapi_plugin(); - check_npapi_plugin(); + if (isFireFox && !isFireFoxExtensionLoaded) { + show_firefox_missing_extension_dialog(); + } + plugin_resolved = 1; + if (canPromise) { + plugin_reject("Истекло время ожидания загрузки плагина"); } else { - window.addEventListener("load", function (event) { - load_npapi_plugin(); - check_npapi_plugin(); - }, false); + window.postMessage("cadesplugin_load_error", "*"); } - } } - function set_pluginObject(obj) - { - pluginObject = obj; + function check_npapi_plugin() { + try { + CreateObject("CAdESCOM.About"); + plugin_loaded(); + } catch (err) { + document.getElementById("cadesplugin_object").style.display = 'none'; + // Объект создать не удалось, проверим, установлен ли + // вообще плагин. Такая возможность есть не во всех браузерах + // noinspection JSDeprecatedSymbols + var mimetype = window.navigator.mimeTypes["application/x-cades"]; + if (mimetype) { + // noinspection JSDeprecatedSymbols + var plugin = mimetype.enabledPlugin; + if (plugin) { + plugin_loaded_error("Плагин загружен, но не создаются обьекты"); + } else { + plugin_loaded_error("Ошибка при загрузке плагина"); + } + } else { + plugin_loaded_error("Плагин недоступен"); + } + } } - function is_capilite_enabled() - { - if ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP) - return true; - return false; + // Проверяем работает ли плагин + function check_plugin_working() { + var div = document.createElement("div"); + div.innerHTML = ""; + var isIeLessThan9 = (div.getElementsByTagName("i").length === 1); + if (isIeLessThan9) { + plugin_loaded_error("Internet Explorer версии 8 и ниже не поддерживается"); + return; + } + + if (isNativeMessageSupported()) { + load_extension(); + } else if (!canPromise) { + window.addEventListener("message", function (event) { + if (event.data !== "cadesplugin_echo_request") { + return; + } + load_npapi_plugin(); + check_npapi_plugin(); + }, false); + } else { + if (document.readyState === "complete") { + load_npapi_plugin(); + check_npapi_plugin(); + } else { + window.addEventListener("load", function (event) { + load_npapi_plugin(); + check_npapi_plugin(); + }, false); + } + } + } + + function set_pluginObject(obj) { + pluginObject = obj; + } + + function is_capilite_enabled() { + // noinspection JSUnresolvedVariable + return ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP); + } + + function set_load_timeout() { + // noinspection JSUnresolvedVariable + if (window.cadesplugin_load_timeout) { + window.setTimeout(check_load_timeout, window.cadesplugin_load_timeout); + } else { + window.setTimeout(check_load_timeout, 20000); + } + } + + // noinspection JSUnusedLocalSymbols + var onVisibilityChange = function (event) { + if (document.hidden === false) { + document.removeEventListener("visibilitychange", onVisibilityChange); + set_load_timeout(); + check_plugin_working(); + } }; //Export - cadesplugin.JSModuleVersion = "2.3.2"; + cadesplugin.JSModuleVersion = "2.4.2"; cadesplugin.async_spawn = async_spawn; cadesplugin.set = set_pluginObject; cadesplugin.set_log_level = set_log_level; + cadesplugin.get_extension_version = get_extension_version; + cadesplugin.get_extension_id = get_extension_id; cadesplugin.getLastError = getLastError; cadesplugin.is_capilite_enabled = is_capilite_enabled; - if(isNativeMessageSupported()) - { - cadesplugin.CreateObjectAsync = CreateObjectAsync; - cadesplugin.ReleasePluginObjects = ReleasePluginObjects; + if (isNativeMessageSupported()) { + cadesplugin.CreateObjectAsync = CreateObjectAsync; + cadesplugin.ReleasePluginObjects = ReleasePluginObjects; } - if(!isNativeMessageSupported()) - { - cadesplugin.CreateObject = CreateObject; - } - - if(window.cadesplugin_load_timeout) - { - setTimeout(check_load_timeout, window.cadesplugin_load_timeout); - } - else - { - setTimeout(check_load_timeout, 20000); + if (!isNativeMessageSupported()) { + cadesplugin.CreateObject = CreateObject; } set_constantValues(); cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR; window.cadesplugin = cadesplugin; + if (isSafari && document.hidden) { + document.addEventListener("visibilitychange", onVisibilityChange); + return; + } + set_load_timeout(); check_plugin_working(); }());