ketcher-standalone 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../../node_modules/@babel/runtime/helpers/createClass.js","../../../node_modules/@babel/runtime/helpers/defineProperty.js","../src/infrastructure/services/struct/indigoWorker.types.ts","../../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/inherits.js","../../../node_modules/@babel/runtime/helpers/typeof.js","../../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../../../node_modules/@babel/runtime/helpers/construct.js","../../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../../node_modules/@babel/runtime/helpers/classPrivateFieldSet.js","../../../node_modules/@babel/runtime/helpers/classPrivateFieldGet.js","../../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../../node_modules/@babel/runtime/helpers/superPropBase.js","../../../node_modules/@babel/runtime/helpers/get.js","../../../node_modules/jsonschema/lib/helpers.js","../../../node_modules/jsonschema/lib/attribute.js","../../../node_modules/jsonschema/lib/scan.js","../../../node_modules/jsonschema/lib/validator.js","../../../node_modules/jsonschema/lib/index.js","../../../node_modules/regenerator-runtime/runtime.js","../../../node_modules/@babel/runtime/regenerator/index.js","../../../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../../ketcher-core/dist/index.modern.js","../src/infrastructure/services/struct/StandaloneStructService.ts","../src/infrastructure/services/struct/StandaloneStructServiceProvider.ts"],"sourcesContent":["function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\nexport enum Command {\n Info = 'info',\n Convert = 'convert',\n Layout = 'layout',\n Clean = 'clean',\n Aromatize = 'aromatize',\n Dearomatize = 'dearomatize',\n CalculateCip = 'calculateCip',\n Automap = 'automap',\n Check = 'check',\n Calculate = 'calculate',\n GenerateImageAsBase64 = 'generateImageAsBase64'\n}\n\nexport enum SupportedFormat {\n Rxn = 'rxnfile',\n Mol = 'molfile',\n Smiles = 'smiles',\n Smarts = 'smarts',\n CML = 'cml',\n InChI = 'inchi',\n InChIAuxInfo = 'inchi-aux',\n CDXML = 'cdxml'\n}\n\nexport interface WithStruct {\n struct: string\n}\n\nexport interface WithFormat {\n format: SupportedFormat\n}\n\nexport interface WithSelection {\n selectedAtoms: Array<number>\n}\n\nexport interface CheckCommandData extends CommandData, WithStruct {\n types: Array<string>\n}\n\nexport interface CommandData {\n options: CommandOptions\n}\n\nexport interface ConvertCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface GenerateImageCommandData extends CommandData, WithStruct {\n outputFormat: 'png' | 'svg'\n}\n\nexport interface LayoutCommandData extends CommandData, WithStruct {}\n\nexport interface CleanCommandData\n extends CommandData,\n WithStruct,\n WithSelection {}\n\nexport interface AromatizeCommandData extends CommandData, WithStruct {}\n\nexport interface DearomatizeCommandData extends CommandData, WithStruct {}\n\nexport interface CalculateCipCommandData extends CommandData, WithStruct {}\n\nexport interface CalculateCommandData\n extends CommandData,\n WithStruct,\n WithSelection {\n properties: Array<string>\n}\n\nexport interface AutomapCommandData extends CommandData, WithStruct {\n mode: string\n}\n\nexport interface CommandOptions {\n [key: string]: string | number | boolean\n}\n\nexport interface OutputMessage<T> {\n hasError?: boolean\n payload?: T\n error?: string\n}\nexport interface InputMessage<T> {\n type: Command\n data: T\n}\n","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = privateMap.get(receiver);\n\n if (!descriptor) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n\n descriptor.value = value;\n }\n\n return value;\n}\n\nmodule.exports = _classPrivateFieldSet;","function _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = privateMap.get(receiver);\n\n if (!descriptor) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n\n return descriptor.value;\n}\n\nmodule.exports = _classPrivateFieldGet;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","var superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","'use strict';\n\nvar uri = require('url');\n\nvar ValidationError = exports.ValidationError = function ValidationError (message, instance, schema, path, name, argument) {\n if(Array.isArray(path)){\n this.path = path;\n this.property = path.reduce(function(sum, item){\n return sum + makeSuffix(item);\n }, 'instance');\n }else if(path !== undefined){\n this.property = path;\n }\n if (message) {\n this.message = message;\n }\n if (schema) {\n var id = schema.$id || schema.id;\n this.schema = id || schema;\n }\n if (instance !== undefined) {\n this.instance = instance;\n }\n this.name = name;\n this.argument = argument;\n this.stack = this.toString();\n};\n\nValidationError.prototype.toString = function toString() {\n return this.property + ' ' + this.message;\n};\n\nvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n this.instance = instance;\n this.schema = schema;\n this.options = options;\n this.path = ctx.path;\n this.propertyPath = ctx.propertyPath;\n this.errors = [];\n this.throwError = options && options.throwError;\n this.throwFirst = options && options.throwFirst;\n this.throwAll = options && options.throwAll;\n this.disableFormat = options && options.disableFormat === true;\n};\n\nValidatorResult.prototype.addError = function addError(detail) {\n var err;\n if (typeof detail == 'string') {\n err = new ValidationError(detail, this.instance, this.schema, this.path);\n } else {\n if (!detail) throw new Error('Missing error detail');\n if (!detail.message) throw new Error('Missing error message');\n if (!detail.name) throw new Error('Missing validator type');\n err = new ValidationError(detail.message, this.instance, this.schema, this.path, detail.name, detail.argument);\n }\n\n this.errors.push(err);\n if (this.throwFirst) {\n throw new ValidatorResultError(this);\n }else if(this.throwError){\n throw err;\n }\n return err;\n};\n\nValidatorResult.prototype.importErrors = function importErrors(res) {\n if (typeof res == 'string' || (res && res.validatorType)) {\n this.addError(res);\n } else if (res && res.errors) {\n Array.prototype.push.apply(this.errors, res.errors);\n }\n};\n\nfunction stringizer (v,i){\n return i+': '+v.toString()+'\\n';\n}\nValidatorResult.prototype.toString = function toString(res) {\n return this.errors.map(stringizer).join('');\n};\n\nObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function() {\n return !this.errors.length;\n} });\n\nmodule.exports.ValidatorResultError = ValidatorResultError;\nfunction ValidatorResultError(result) {\n if(Error.captureStackTrace){\n Error.captureStackTrace(this, ValidatorResultError);\n }\n this.instance = result.instance;\n this.schema = result.schema;\n this.options = result.options;\n this.errors = result.errors;\n}\nValidatorResultError.prototype = new Error();\nValidatorResultError.prototype.constructor = ValidatorResultError;\nValidatorResultError.prototype.name = \"Validation Error\";\n\n/**\n * Describes a problem with a Schema which prevents validation of an instance\n * @name SchemaError\n * @constructor\n */\nvar SchemaError = exports.SchemaError = function SchemaError (msg, schema) {\n this.message = msg;\n this.schema = schema;\n Error.call(this, msg);\n Error.captureStackTrace(this, SchemaError);\n};\nSchemaError.prototype = Object.create(Error.prototype,\n {\n constructor: {value: SchemaError, enumerable: false},\n name: {value: 'SchemaError', enumerable: false},\n });\n\nvar SchemaContext = exports.SchemaContext = function SchemaContext (schema, options, path, base, schemas) {\n this.schema = schema;\n this.options = options;\n if(Array.isArray(path)){\n this.path = path;\n this.propertyPath = path.reduce(function(sum, item){\n return sum + makeSuffix(item);\n }, 'instance');\n }else{\n this.propertyPath = path;\n }\n this.base = base;\n this.schemas = schemas;\n};\n\nSchemaContext.prototype.resolve = function resolve (target) {\n return uri.resolve(this.base, target);\n};\n\nSchemaContext.prototype.makeChild = function makeChild(schema, propertyName){\n var path = (propertyName===undefined) ? this.path : this.path.concat([propertyName]);\n var id = schema.$id || schema.id;\n var base = uri.resolve(this.base, id||'');\n var ctx = new SchemaContext(schema, this.options, path, base, Object.create(this.schemas));\n if(id && !ctx.schemas[base]){\n ctx.schemas[base] = schema;\n }\n return ctx;\n};\n\nvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\\.\\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,\n 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,\n 'time': /^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,\n\n 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n\n // TODO: A more accurate regular expression for \"uri\" goes:\n // [A-Za-z][+\\-.0-9A-Za-z]*:((/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?)?#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])|/?%[0-9A-Fa-f]{2}|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*(#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)?)?\n 'uri': /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n 'uri-reference': /^(((([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\\-.0-9A-Za-z]*:?)?)|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?))#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(([A-Za-z][+\\-.0-9A-Za-z]*)?%[0-9A-Fa-f]{2}|[!$&-.0-9;=@_~]|[A-Za-z][+\\-.0-9A-Za-z]*[!$&-*,;=@_~])(%[0-9A-Fa-f]{2}|[!$&-.0-9;=@-Z_a-z~])*((([/?](%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?#|[/?])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)?|[A-Za-z][+\\-.0-9A-Za-z]*:?)?$/,\n\n 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\n 'alpha': /^[a-zA-Z]+$/,\n 'alphanumeric': /^[a-zA-Z0-9]+$/,\n 'utc-millisec': function (input) {\n return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n 'regex': function (input) {\n var result = true;\n try {\n new RegExp(input);\n } catch (e) {\n result = false;\n }\n return result;\n },\n 'style': /\\s*(.+?):\\s*([^;]+);?/,\n 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/,\n};\n\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nexports.isFormat = function isFormat (input, format, validator) {\n if (typeof input === 'string' && FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n } else if (validator && validator.customFormats &&\n typeof validator.customFormats[format] === 'function') {\n return validator.customFormats[format](input);\n }\n return true;\n};\n\nvar makeSuffix = exports.makeSuffix = function makeSuffix (key) {\n key = key.toString();\n // This function could be capable of outputting valid a ECMAScript string, but the\n // resulting code for testing which form to use would be tens of thousands of characters long\n // That means this will use the name form for some illegal forms\n if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n return '.' + key;\n }\n if (key.match(/^\\d+$/)) {\n return '[' + key + ']';\n }\n return '[' + JSON.stringify(key) + ']';\n};\n\nexports.deepCompareStrict = function deepCompareStrict (a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n return a.every(function (v, i) {\n return deepCompareStrict(a[i], b[i]);\n });\n }\n if (typeof a === 'object') {\n if (!a || !b) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (v) {\n return deepCompareStrict(a[v], b[v]);\n });\n }\n return a === b;\n};\n\nfunction deepMerger (target, dst, e, i) {\n if (typeof e === 'object') {\n dst[i] = deepMerge(target[i], e);\n } else {\n if (target.indexOf(e) === -1) {\n dst.push(e);\n }\n }\n}\n\nfunction copyist (src, dst, key) {\n dst[key] = src[key];\n}\n\nfunction copyistWithDeepMerge (target, src, dst, key) {\n if (typeof src[key] !== 'object' || !src[key]) {\n dst[key] = src[key];\n }\n else {\n if (!target[key]) {\n dst[key] = src[key];\n } else {\n dst[key] = deepMerge(target[key], src[key]);\n }\n }\n}\n\nfunction deepMerge (target, src) {\n var array = Array.isArray(src);\n var dst = array && [] || {};\n\n if (array) {\n target = target || [];\n dst = dst.concat(target);\n src.forEach(deepMerger.bind(null, target, dst));\n } else {\n if (target && typeof target === 'object') {\n Object.keys(target).forEach(copyist.bind(null, target, dst));\n }\n Object.keys(src).forEach(copyistWithDeepMerge.bind(null, target, src, dst));\n }\n\n return dst;\n}\n\nmodule.exports.deepMerge = deepMerge;\n\n/**\n * Validates instance against the provided schema\n * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n * @param o\n * @param s The path to walk o along\n * @return any\n */\nexports.objectGetPath = function objectGetPath(o, s) {\n var parts = s.split('/').slice(1);\n var k;\n while (typeof (k=parts.shift()) == 'string') {\n var n = decodeURIComponent(k.replace(/~0/,'~').replace(/~1/g,'/'));\n if (!(n in o)) return;\n o = o[n];\n }\n return o;\n};\n\nfunction pathEncoder (v) {\n return '/'+encodeURIComponent(v).replace(/~/g,'%7E');\n}\n/**\n * Accept an Array of property names and return a JSON Pointer URI fragment\n * @param Array a\n * @return {String}\n */\nexports.encodePath = function encodePointer(a){\n // ~ must be encoded explicitly because hacks\n // the slash is encoded by encodeURIComponent\n return a.map(pathEncoder).join('');\n};\n\n\n/**\n * Calculate the number of decimal places a number uses\n * We need this to get correct results out of multipleOf and divisibleBy\n * when either figure is has decimal places, due to IEEE-754 float issues.\n * @param number\n * @returns {number}\n */\nexports.getDecimalPlaces = function getDecimalPlaces(number) {\n\n var decimalPlaces = 0;\n if (isNaN(number)) return decimalPlaces;\n\n if (typeof number !== 'number') {\n number = Number(number);\n }\n\n var parts = number.toString().split('e');\n if (parts.length === 2) {\n if (parts[1][0] !== '-') {\n return decimalPlaces;\n } else {\n decimalPlaces = Number(parts[1].slice(1));\n }\n }\n\n var decimalParts = parts[0].split('.');\n if (decimalParts.length === 2) {\n decimalPlaces += decimalParts[1].length;\n }\n\n return decimalPlaces;\n};\n\nexports.isSchema = function isSchema(val){\n return (typeof val === 'object' && val) || (typeof val === 'boolean');\n};\n\n","'use strict';\n\nvar helpers = require('./helpers');\n\n/** @type ValidatorResult */\nvar ValidatorResult = helpers.ValidatorResult;\n/** @type SchemaError */\nvar SchemaError = helpers.SchemaError;\n\nvar attribute = {};\n\nattribute.ignoreProperties = {\n // informative properties\n 'id': true,\n 'default': true,\n 'description': true,\n 'title': true,\n // arguments to other properties\n 'additionalItems': true,\n 'then': true,\n 'else': true,\n // special-handled properties\n '$schema': true,\n '$ref': true,\n 'extends': true,\n};\n\n/**\n * @name validators\n */\nvar validators = attribute.validators = {};\n\n/**\n * Validates whether the instance if of a certain type\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.type = function validateType (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var types = Array.isArray(schema.type) ? schema.type : [schema.type];\n if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n var list = types.map(function (v) {\n if(!v) return;\n var id = v.$id || v.id;\n return id ? ('<' + id + '>') : (v+'');\n });\n result.addError({\n name: 'type',\n argument: list,\n message: \"is not of a type(s) \" + list,\n });\n }\n return result;\n};\n\nfunction testSchemaNoThrow(instance, options, ctx, callback, schema){\n var throwError = options.throwError;\n var throwAll = options.throwAll;\n options.throwError = false;\n options.throwAll = false;\n var res = this.validateSchema(instance, schema, options, ctx);\n options.throwError = throwError;\n options.throwAll = throwAll;\n\n if (!res.valid && callback instanceof Function) {\n callback(res);\n }\n return res.valid;\n}\n\n/**\n * Validates whether the instance matches some of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.anyOf = function validateAnyOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n if (!Array.isArray(schema.anyOf)){\n throw new SchemaError(\"anyOf must be an array\");\n }\n if (!schema.anyOf.some(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res){inner.importErrors(res);}\n ))) {\n var list = schema.anyOf.map(function (v, i) {\n var id = v.$id || v.id;\n if(id) return '<' + id + '>';\n return(v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'anyOf',\n argument: list,\n message: \"is not any of \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance matches every given schema\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.allOf = function validateAllOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.allOf)){\n throw new SchemaError(\"allOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var self = this;\n schema.allOf.forEach(function(v, i){\n var valid = self.validateSchema(instance, v, options, ctx);\n if(!valid.valid){\n var id = v.$id || v.id;\n var msg = id || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n result.addError({\n name: 'allOf',\n argument: { id: msg, length: valid.errors.length, valid: valid },\n message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:',\n });\n result.importErrors(valid);\n }\n });\n return result;\n};\n\n/**\n * Validates whether the instance matches exactly one of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.oneOf = function validateOneOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.oneOf)){\n throw new SchemaError(\"oneOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n var count = schema.oneOf.filter(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res) {inner.importErrors(res);}\n ) ).length;\n var list = schema.oneOf.map(function (v, i) {\n var id = v.$id || v.id;\n return id || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (count!==1) {\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'oneOf',\n argument: list,\n message: \"is not exactly one from \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates \"then\" or \"else\" depending on the result of validating \"if\"\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.if = function validateIf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) return null;\n if (!helpers.isSchema(schema.if)) throw new Error('Expected \"if\" keyword to be a schema');\n var ifValid = testSchemaNoThrow.call(this, instance, options, ctx, null, schema.if);\n var result = new ValidatorResult(instance, schema, options, ctx);\n var res;\n if(ifValid){\n if (schema.then === undefined) return;\n if (!helpers.isSchema(schema.then)) throw new Error('Expected \"then\" keyword to be a schema');\n res = this.validateSchema(instance, schema.then, options, ctx.makeChild(schema.then));\n result.importErrors(res);\n }else{\n if (schema.else === undefined) return;\n if (!helpers.isSchema(schema.else)) throw new Error('Expected \"else\" keyword to be a schema');\n res = this.validateSchema(instance, schema.else, options, ctx.makeChild(schema.else));\n result.importErrors(res);\n }\n return result;\n};\n\nfunction getEnumerableProperty(object, key){\n // Determine if `key` shows up in `for(var key in object)`\n // First test Object.hasOwnProperty.call as an optimization: that guarantees it does\n if(Object.hasOwnProperty.call(object, key)) return object[key];\n // Test `key in object` as an optimization; false means it won't\n if(!(key in object)) return;\n while( (object = Object.getPrototypeOf(object)) ){\n if(Object.propertyIsEnumerable.call(object, key)) return object[key];\n }\n}\n\n/**\n * Validates propertyNames\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.propertyNames = function validatePropertyNames (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var subschema = schema.propertyNames!==undefined ? schema.propertyNames : {};\n if(!helpers.isSchema(subschema)) throw new SchemaError('Expected \"propertyNames\" to be a schema (object or boolean)');\n\n for (var property in instance) {\n if(getEnumerableProperty(instance, property) !== undefined){\n var res = this.validateSchema(property, subschema, options, ctx.makeChild(subschema));\n result.importErrors(res);\n }\n }\n\n return result;\n};\n\n/**\n * Validates properties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.properties = function validateProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var properties = schema.properties || {};\n for (var property in properties) {\n var subschema = properties[property];\n if(subschema===undefined){\n continue;\n }else if(subschema===null){\n throw new SchemaError('Unexpected null, expected schema in \"properties\"');\n }\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, subschema, options, ctx);\n }\n var prop = getEnumerableProperty(instance, property);\n var res = this.validateSchema(prop, subschema, options, ctx.makeChild(subschema, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n return result;\n};\n\n/**\n * Test a specific property within in instance against the additionalProperties schema attribute\n * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n * If too many more types of property-existence tests pop up they may need their own class of tests (like `type` has)\n * @private\n * @return {boolean}\n */\nfunction testAdditionalProperty (instance, schema, options, ctx, property, result) {\n if(!this.types.object(instance)) return;\n if (schema.properties && schema.properties[property] !== undefined) {\n return;\n }\n if (schema.additionalProperties === false) {\n result.addError({\n name: 'additionalProperties',\n argument: property,\n message: \"is not allowed to have the additional property \" + JSON.stringify(property),\n });\n } else {\n var additionalProperties = schema.additionalProperties || {};\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, additionalProperties, options, ctx);\n }\n\n var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n}\n\n/**\n * Validates patternProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.patternProperties = function validatePatternProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var patternProperties = schema.patternProperties || {};\n\n for (var property in instance) {\n var test = true;\n for (var pattern in patternProperties) {\n var subschema = patternProperties[pattern];\n if(subschema===undefined){\n continue;\n }else if(subschema===null){\n throw new SchemaError('Unexpected null, expected schema in \"patternProperties\"');\n }\n try {\n var regexp = new RegExp(pattern, 'u');\n } catch(_e) {\n // In the event the stricter handling causes an error, fall back on the forgiving handling\n // DEPRECATED\n regexp = new RegExp(pattern);\n }\n if (!regexp.test(property)) {\n continue;\n }\n test = false;\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, subschema, options, ctx);\n }\n\n var res = this.validateSchema(instance[property], subschema, options, ctx.makeChild(subschema, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n if (test) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n }\n\n return result;\n};\n\n/**\n * Validates additionalProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.additionalProperties = function validateAdditionalProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n // if patternProperties is defined then we'll test when that one is called instead\n if (schema.patternProperties) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in instance) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minProperties = function validateMinProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length >= schema.minProperties)) {\n result.addError({\n name: 'minProperties',\n argument: schema.minProperties,\n message: \"does not meet minimum property length of \" + schema.minProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxProperties = function validateMaxProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length <= schema.maxProperties)) {\n result.addError({\n name: 'maxProperties',\n argument: schema.maxProperties,\n message: \"does not meet maximum property length of \" + schema.maxProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates items when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.items = function validateItems (instance, schema, options, ctx) {\n var self = this;\n if (!this.types.array(instance)) return;\n if (!schema.items) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n instance.every(function (value, i) {\n var items = Array.isArray(schema.items) ? (schema.items[i] || schema.additionalItems) : schema.items;\n if (items === undefined) {\n return true;\n }\n if (items === false) {\n result.addError({\n name: 'items',\n message: \"additionalItems not permitted\",\n });\n return false;\n }\n var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n if(res.instance !== result.instance[i]) result.instance[i] = res.instance;\n result.importErrors(res);\n return true;\n });\n return result;\n};\n\n/**\n * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minimum = function validateMinimum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n if(!(instance > schema.minimum)){\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must be greater than \" + schema.minimum,\n });\n }\n } else {\n if(!(instance >= schema.minimum)){\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must be greater than or equal to \" + schema.minimum,\n });\n }\n }\n return result;\n};\n\n/**\n * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maximum = function validateMaximum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n if(!(instance < schema.maximum)){\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must be less than \" + schema.maximum,\n });\n }\n } else {\n if(!(instance <= schema.maximum)){\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must be less than or equal to \" + schema.maximum,\n });\n }\n }\n return result;\n};\n\n/**\n * Validates the number form of exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.exclusiveMinimum = function validateExclusiveMinimum (instance, schema, options, ctx) {\n // Support the boolean form of exclusiveMinimum, which is handled by the \"minimum\" keyword.\n if(typeof schema.exclusiveMaximum === 'boolean') return;\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = instance > schema.exclusiveMinimum;\n if (!valid) {\n result.addError({\n name: 'exclusiveMinimum',\n argument: schema.exclusiveMinimum,\n message: \"must be strictly greater than \" + schema.exclusiveMinimum,\n });\n }\n return result;\n};\n\n/**\n * Validates the number form of exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.exclusiveMaximum = function validateExclusiveMaximum (instance, schema, options, ctx) {\n // Support the boolean form of exclusiveMaximum, which is handled by the \"maximum\" keyword.\n if(typeof schema.exclusiveMaximum === 'boolean') return;\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = instance < schema.exclusiveMaximum;\n if (!valid) {\n result.addError({\n name: 'exclusiveMaximum',\n argument: schema.exclusiveMaximum,\n message: \"must be strictly less than \" + schema.exclusiveMaximum,\n });\n }\n return result;\n};\n\n/**\n * Perform validation for multipleOf and divisibleBy, which are essentially the same.\n * @param instance\n * @param schema\n * @param validationType\n * @param errorMessage\n * @returns {String|null}\n */\nvar validateMultipleOfOrDivisbleBy = function validateMultipleOfOrDivisbleBy (instance, schema, options, ctx, validationType, errorMessage) {\n if (!this.types.number(instance)) return;\n\n var validationArgument = schema[validationType];\n if (validationArgument == 0) {\n throw new SchemaError(validationType + \" cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n\n var instanceDecimals = helpers.getDecimalPlaces(instance);\n var divisorDecimals = helpers.getDecimalPlaces(validationArgument);\n\n var maxDecimals = Math.max(instanceDecimals , divisorDecimals);\n var multiplier = Math.pow(10, maxDecimals);\n\n if (Math.round(instance * multiplier) % Math.round(validationArgument * multiplier) !== 0) {\n result.addError({\n name: validationType,\n argument: validationArgument,\n message: errorMessage + JSON.stringify(validationArgument),\n });\n }\n\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.multipleOf = function validateMultipleOf (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"multipleOf\", \"is not a multiple of (divisible by) \");\n};\n\n/**\n * Validates multipleOf when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.divisibleBy = function validateDivisibleBy (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"divisibleBy\", \"is not divisible by (multiple of) \");\n};\n\n/**\n * Validates whether the instance value is present.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.required = function validateRequired (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined && schema.required === true) {\n // A boolean form is implemented for reverse-compatibility with schemas written against older drafts\n result.addError({\n name: 'required',\n message: \"is required\",\n });\n } else if (this.types.object(instance) && Array.isArray(schema.required)) {\n schema.required.forEach(function(n){\n if(getEnumerableProperty(instance, n)===undefined){\n result.addError({\n name: 'required',\n argument: n,\n message: \"requires property \" + JSON.stringify(n),\n });\n }\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value matches the regular expression, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.pattern = function validatePattern (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var pattern = schema.pattern;\n try {\n var regexp = new RegExp(pattern, 'u');\n } catch(_e) {\n // In the event the stricter handling causes an error, fall back on the forgiving handling\n // DEPRECATED\n regexp = new RegExp(pattern);\n }\n if (!instance.match(regexp)) {\n result.addError({\n name: 'pattern',\n argument: schema.pattern,\n message: \"does not match pattern \" + JSON.stringify(schema.pattern.toString()),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is of a certain defined format or a custom\n * format.\n * The following formats are supported for string types:\n * - date-time\n * - date\n * - time\n * - ip-address\n * - ipv6\n * - uri\n * - color\n * - host-name\n * - alpha\n * - alpha-numeric\n * - utc-millisec\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {String|null}\n */\nvalidators.format = function validateFormat (instance, schema, options, ctx) {\n if (instance===undefined) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!result.disableFormat && !helpers.isFormat(instance, schema.format, this)) {\n result.addError({\n name: 'format',\n argument: schema.format,\n message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\",\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minLength = function validateMinLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length >= schema.minLength)) {\n result.addError({\n name: 'minLength',\n argument: schema.minLength,\n message: \"does not meet minimum length of \" + schema.minLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxLength = function validateMaxLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n // TODO if this was already computed in \"minLength\", use that value instead of re-computing\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length <= schema.maxLength)) {\n result.addError({\n name: 'maxLength',\n argument: schema.maxLength,\n message: \"does not meet maximum length of \" + schema.maxLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minItems = function validateMinItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minItems)) {\n result.addError({\n name: 'minItems',\n argument: schema.minItems,\n message: \"does not meet minimum length of \" + schema.minItems,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxItems = function validateMaxItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxItems)) {\n result.addError({\n name: 'maxItems',\n argument: schema.maxItems,\n message: \"does not meet maximum length of \" + schema.maxItems,\n });\n }\n return result;\n};\n\n/**\n * Deep compares arrays for duplicates\n * @param v\n * @param i\n * @param a\n * @private\n * @return {boolean}\n */\nfunction testArrays (v, i, a) {\n var j, len = a.length;\n for (j = i + 1, len; j < len; j++) {\n if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Validates whether there are no duplicates, when the instance is an Array.\n * @param instance\n * @return {String|null}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (schema.uniqueItems!==true) return;\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Validate for the presence of dependency properties, if the instance is an object.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.dependencies = function validateDependencies (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in schema.dependencies) {\n if (instance[property] === undefined) {\n continue;\n }\n var dep = schema.dependencies[property];\n var childContext = ctx.makeChild(dep, property);\n if (typeof dep == 'string') {\n dep = [dep];\n }\n if (Array.isArray(dep)) {\n dep.forEach(function (prop) {\n if (instance[prop] === undefined) {\n result.addError({\n // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n // Can we make these the same? Or should we create different error types?\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath,\n });\n }\n });\n } else {\n var res = this.validateSchema(instance, dep, options, childContext);\n if(result.instance !== res.instance) result.instance = res.instance;\n if (res && res.errors.length) {\n result.addError({\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"does not meet dependency required by \" + childContext.propertyPath,\n });\n result.importErrors(res);\n }\n }\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is one of the enumerated values.\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['enum'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema['enum'])) {\n throw new SchemaError(\"enum expects an array\", schema);\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n result.addError({\n name: 'enum',\n argument: schema['enum'],\n message: \"is not one of enum values: \" + schema['enum'].map(String).join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance exactly matches a given value\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['const'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!helpers.deepCompareStrict(schema['const'], instance)) {\n result.addError({\n name: 'const',\n argument: schema['const'],\n message: \"does not exactly match expected constant: \" + schema['const'],\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance if of a prohibited type.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.not = validators.disallow = function validateNot (instance, schema, options, ctx) {\n var self = this;\n if(instance===undefined) return null;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var notTypes = schema.not || schema.disallow;\n if(!notTypes) return null;\n if(!Array.isArray(notTypes)) notTypes=[notTypes];\n notTypes.forEach(function (type) {\n if (self.testType(instance, schema, options, ctx, type)) {\n var id = type && (type.$id || type.id);\n var schemaId = id || type;\n result.addError({\n name: 'not',\n argument: schemaId,\n message: \"is of prohibited type \" + schemaId,\n });\n }\n });\n return result;\n};\n\nmodule.exports = attribute;\n","\"use strict\";\n\nvar urilib = require('url');\nvar helpers = require('./helpers');\n\nmodule.exports.SchemaScanResult = SchemaScanResult;\nfunction SchemaScanResult(found, ref){\n this.id = found;\n this.ref = ref;\n}\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param string uri\n * @param object schema\n * @return {Object}\n */\nmodule.exports.scan = function scan(base, schema){\n function scanSchema(baseuri, schema){\n if(!schema || typeof schema!='object') return;\n // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n if(schema.$ref){\n var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n ref[resolvedUri] = ref[resolvedUri] ? ref[resolvedUri]+1 : 0;\n return;\n }\n var id = schema.$id || schema.id;\n var ourBase = id ? urilib.resolve(baseuri, id) : baseuri;\n if (ourBase) {\n // If there's no fragment, append an empty one\n if(ourBase.indexOf('#')<0) ourBase += '#';\n if(found[ourBase]){\n if(!helpers.deepCompareStrict(found[ourBase], schema)){\n throw new Error('Schema <'+ourBase+'> already exists with different definition');\n }\n return found[ourBase];\n }\n found[ourBase] = schema;\n // strip trailing fragment\n if(ourBase[ourBase.length-1]=='#'){\n found[ourBase.substring(0, ourBase.length-1)] = schema;\n }\n }\n scanArray(ourBase+'/items', (Array.isArray(schema.items)?schema.items:[schema.items]));\n scanArray(ourBase+'/extends', (Array.isArray(schema.extends)?schema.extends:[schema.extends]));\n scanSchema(ourBase+'/additionalItems', schema.additionalItems);\n scanObject(ourBase+'/properties', schema.properties);\n scanSchema(ourBase+'/additionalProperties', schema.additionalProperties);\n scanObject(ourBase+'/definitions', schema.definitions);\n scanObject(ourBase+'/patternProperties', schema.patternProperties);\n scanObject(ourBase+'/dependencies', schema.dependencies);\n scanArray(ourBase+'/disallow', schema.disallow);\n scanArray(ourBase+'/allOf', schema.allOf);\n scanArray(ourBase+'/anyOf', schema.anyOf);\n scanArray(ourBase+'/oneOf', schema.oneOf);\n scanSchema(ourBase+'/not', schema.not);\n }\n function scanArray(baseuri, schemas){\n if(!Array.isArray(schemas)) return;\n for(var i=0; i<schemas.length; i++){\n scanSchema(baseuri+'/'+i, schemas[i]);\n }\n }\n function scanObject(baseuri, schemas){\n if(!schemas || typeof schemas!='object') return;\n for(var p in schemas){\n scanSchema(baseuri+'/'+p, schemas[p]);\n }\n }\n\n var found = {};\n var ref = {};\n scanSchema(base, schema);\n return new SchemaScanResult(found, ref);\n};\n","'use strict';\n\nvar urilib = require('url');\n\nvar attribute = require('./attribute');\nvar helpers = require('./helpers');\nvar scanSchema = require('./scan').scan;\nvar ValidatorResult = helpers.ValidatorResult;\nvar ValidatorResultError = helpers.ValidatorResultError;\nvar SchemaError = helpers.SchemaError;\nvar SchemaContext = helpers.SchemaContext;\n//var anonymousBase = 'vnd.jsonschema:///';\nvar anonymousBase = '/';\n\n/**\n * Creates a new Validator object\n * @name Validator\n * @constructor\n */\nvar Validator = function Validator () {\n // Allow a validator instance to override global custom formats or to have their\n // own custom formats.\n this.customFormats = Object.create(Validator.prototype.customFormats);\n this.schemas = {};\n this.unresolvedRefs = [];\n\n // Use Object.create to make this extensible without Validator instances stepping on each other's toes.\n this.types = Object.create(types);\n this.attributes = Object.create(attribute.validators);\n};\n\n// Allow formats to be registered globally.\nValidator.prototype.customFormats = {};\n\n// Hint at the presence of a property\nValidator.prototype.schemas = null;\nValidator.prototype.types = null;\nValidator.prototype.attributes = null;\nValidator.prototype.unresolvedRefs = null;\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param schema\n * @param urn\n * @return {Object}\n */\nValidator.prototype.addSchema = function addSchema (schema, base) {\n var self = this;\n if (!schema) {\n return null;\n }\n var scan = scanSchema(base||anonymousBase, schema);\n var ourUri = base || schema.$id || schema.id;\n for(var uri in scan.id){\n this.schemas[uri] = scan.id[uri];\n }\n for(var uri in scan.ref){\n // If this schema is already defined, it will be filtered out by the next step\n this.unresolvedRefs.push(uri);\n }\n // Remove newly defined schemas from unresolvedRefs\n this.unresolvedRefs = this.unresolvedRefs.filter(function(uri){\n return typeof self.schemas[uri]==='undefined';\n });\n return this.schemas[ourUri];\n};\n\nValidator.prototype.addSubSchemaArray = function addSubSchemaArray(baseuri, schemas) {\n if(!Array.isArray(schemas)) return;\n for(var i=0; i<schemas.length; i++){\n this.addSubSchema(baseuri, schemas[i]);\n }\n};\n\nValidator.prototype.addSubSchemaObject = function addSubSchemaArray(baseuri, schemas) {\n if(!schemas || typeof schemas!='object') return;\n for(var p in schemas){\n this.addSubSchema(baseuri, schemas[p]);\n }\n};\n\n\n\n/**\n * Sets all the schemas of the Validator instance.\n * @param schemas\n */\nValidator.prototype.setSchemas = function setSchemas (schemas) {\n this.schemas = schemas;\n};\n\n/**\n * Returns the schema of a certain urn\n * @param urn\n */\nValidator.prototype.getSchema = function getSchema (urn) {\n return this.schemas[urn];\n};\n\n/**\n * Validates instance against the provided schema\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {Array}\n */\nValidator.prototype.validate = function validate (instance, schema, options, ctx) {\n if((typeof schema !== 'boolean' && typeof schema !== 'object') || schema === null){\n throw new SchemaError('Expected `schema` to be an object or boolean');\n }\n if (!options) {\n options = {};\n }\n // This section indexes subschemas in the provided schema, so they don't need to be added with Validator#addSchema\n // This will work so long as the function at uri.resolve() will resolve a relative URI to a relative URI\n var id = schema.$id || schema.id;\n var base = urilib.resolve(options.base||anonymousBase, id||'');\n if(!ctx){\n ctx = new SchemaContext(schema, options, [], base, Object.create(this.schemas));\n if (!ctx.schemas[base]) {\n ctx.schemas[base] = schema;\n }\n var found = scanSchema(base, schema);\n for(var n in found.id){\n var sch = found.id[n];\n ctx.schemas[n] = sch;\n }\n }\n if(options.required && instance===undefined){\n var result = new ValidatorResult(instance, schema, options, ctx);\n result.addError('is required, but is undefined');\n return result;\n }\n var result = this.validateSchema(instance, schema, options, ctx);\n if (!result) {\n throw new Error('Result undefined');\n }else if(options.throwAll && result.errors.length){\n throw new ValidatorResultError(result);\n }\n return result;\n};\n\n/**\n* @param Object schema\n* @return mixed schema uri or false\n*/\nfunction shouldResolve(schema) {\n var ref = (typeof schema === 'string') ? schema : schema.$ref;\n if (typeof ref=='string') return ref;\n return false;\n}\n\n/**\n * Validates an instance against the schema (the actual work horse)\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @private\n * @return {ValidatorResult}\n */\nValidator.prototype.validateSchema = function validateSchema (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n\n // Support for the true/false schemas\n if(typeof schema==='boolean') {\n if(schema===true){\n // `true` is always valid\n schema = {};\n }else if(schema===false){\n // `false` is always invalid\n schema = {type: []};\n }\n }else if(!schema){\n // This might be a string\n throw new Error(\"schema is undefined\");\n }\n\n if (schema['extends']) {\n if (Array.isArray(schema['extends'])) {\n var schemaobj = {schema: schema, ctx: ctx};\n schema['extends'].forEach(this.schemaTraverser.bind(this, schemaobj));\n schema = schemaobj.schema;\n schemaobj.schema = null;\n schemaobj.ctx = null;\n schemaobj = null;\n } else {\n schema = helpers.deepMerge(schema, this.superResolve(schema['extends'], ctx));\n }\n }\n\n // If passed a string argument, load that schema URI\n var switchSchema = shouldResolve(schema);\n if (switchSchema) {\n var resolved = this.resolve(schema, switchSchema, ctx);\n var subctx = new SchemaContext(resolved.subschema, options, ctx.path, resolved.switchSchema, ctx.schemas);\n return this.validateSchema(instance, resolved.subschema, options, subctx);\n }\n\n var skipAttributes = options && options.skipAttributes || [];\n // Validate each schema attribute against the instance\n for (var key in schema) {\n if (!attribute.ignoreProperties[key] && skipAttributes.indexOf(key) < 0) {\n var validatorErr = null;\n var validator = this.attributes[key];\n if (validator) {\n validatorErr = validator.call(this, instance, schema, options, ctx);\n } else if (options.allowUnknownAttributes === false) {\n // This represents an error with the schema itself, not an invalid instance\n throw new SchemaError(\"Unsupported attribute: \" + key, schema);\n }\n if (validatorErr) {\n result.importErrors(validatorErr);\n }\n }\n }\n\n if (typeof options.rewrite == 'function') {\n var value = options.rewrite.call(this, instance, schema, options, ctx);\n result.instance = value;\n }\n return result;\n};\n\n/**\n* @private\n* @param Object schema\n* @param SchemaContext ctx\n* @returns Object schema or resolved schema\n*/\nValidator.prototype.schemaTraverser = function schemaTraverser (schemaobj, s) {\n schemaobj.schema = helpers.deepMerge(schemaobj.schema, this.superResolve(s, schemaobj.ctx));\n};\n\n/**\n* @private\n* @param Object schema\n* @param SchemaContext ctx\n* @returns Object schema or resolved schema\n*/\nValidator.prototype.superResolve = function superResolve (schema, ctx) {\n var ref = shouldResolve(schema);\n if(ref) {\n return this.resolve(schema, ref, ctx).subschema;\n }\n return schema;\n};\n\n/**\n* @private\n* @param Object schema\n* @param Object switchSchema\n* @param SchemaContext ctx\n* @return Object resolved schemas {subschema:String, switchSchema: String}\n* @throws SchemaError\n*/\nValidator.prototype.resolve = function resolve (schema, switchSchema, ctx) {\n switchSchema = ctx.resolve(switchSchema);\n // First see if the schema exists under the provided URI\n if (ctx.schemas[switchSchema]) {\n return {subschema: ctx.schemas[switchSchema], switchSchema: switchSchema};\n }\n // Else try walking the property pointer\n var parsed = urilib.parse(switchSchema);\n var fragment = parsed && parsed.hash;\n var document = fragment && fragment.length && switchSchema.substr(0, switchSchema.length - fragment.length);\n if (!document || !ctx.schemas[document]) {\n throw new SchemaError(\"no such schema <\" + switchSchema + \">\", schema);\n }\n var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n if(subschema===undefined){\n throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n }\n return {subschema: subschema, switchSchema: switchSchema};\n};\n\n/**\n * Tests whether the instance if of a certain type.\n * @private\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @param type\n * @return {boolean}\n */\nValidator.prototype.testType = function validateType (instance, schema, options, ctx, type) {\n if(type===undefined){\n return;\n }else if(type===null){\n throw new SchemaError('Unexpected null in \"type\" keyword');\n }\n if (typeof this.types[type] == 'function') {\n return this.types[type].call(this, instance);\n }\n if (type && typeof type == 'object') {\n var res = this.validateSchema(instance, type, options, ctx);\n return res === undefined || !(res && res.errors.length);\n }\n // Undefined or properties not on the list are acceptable, same as not being defined\n return true;\n};\n\nvar types = Validator.prototype.types = {};\ntypes.string = function testString (instance) {\n return typeof instance == 'string';\n};\ntypes.number = function testNumber (instance) {\n // isFinite returns false for NaN, Infinity, and -Infinity\n return typeof instance == 'number' && isFinite(instance);\n};\ntypes.integer = function testInteger (instance) {\n return (typeof instance == 'number') && instance % 1 === 0;\n};\ntypes.boolean = function testBoolean (instance) {\n return typeof instance == 'boolean';\n};\ntypes.array = function testArray (instance) {\n return Array.isArray(instance);\n};\ntypes['null'] = function testNull (instance) {\n return instance === null;\n};\ntypes.date = function testDate (instance) {\n return instance instanceof Date;\n};\ntypes.any = function testAny (instance) {\n return true;\n};\ntypes.object = function testObject (instance) {\n // TODO: fix this - see #15\n return instance && (typeof instance === 'object') && !(Array.isArray(instance)) && !(instance instanceof Date);\n};\n\nmodule.exports = Validator;\n","'use strict';\n\nvar Validator = module.exports.Validator = require('./validator');\n\nmodule.exports.ValidatorResult = require('./helpers').ValidatorResult;\nmodule.exports.ValidatorResultError = require('./helpers').ValidatorResultError;\nmodule.exports.ValidationError = require('./helpers').ValidationError;\nmodule.exports.SchemaError = require('./helpers').SchemaError;\nmodule.exports.SchemaScanResult = require('./scan').SchemaScanResult;\nmodule.exports.scan = require('./scan').scan;\n\nmodule.exports.validate = function (instance, schema, options) {\n var v = new Validator();\n return v.validate(instance, schema, options);\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","module.exports = require(\"regenerator-runtime\");\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;","import _classCallCheck from '@babel/runtime/helpers/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/createClass';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _inherits from '@babel/runtime/helpers/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';\nimport _wrapNativeSuper from '@babel/runtime/helpers/wrapNativeSuper';\nimport _classPrivateFieldSet from '@babel/runtime/helpers/classPrivateFieldSet';\nimport _classPrivateFieldGet from '@babel/runtime/helpers/classPrivateFieldGet';\nimport _slicedToArray from '@babel/runtime/helpers/slicedToArray';\nimport _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport _get from '@babel/runtime/helpers/get';\nimport { Validator } from 'jsonschema';\nimport _regeneratorRuntime from '@babel/runtime/regenerator';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';\n\nvar ElementColor = {\n H: '#000000',\n He: '#89a1a1',\n Li: '#bd77ed',\n Be: '#8fbc00',\n B: '#c18989',\n C: '#000000',\n N: '#304ff7',\n O: '#ff0d0d',\n F: '#78bc42',\n Ne: '#80a2af',\n Na: '#ab5cf2',\n Mg: '#6fcd00',\n Al: '#a99393',\n Si: '#b29478',\n P: '#ff8000',\n S: '#c99a19',\n Cl: '#1fd01f',\n Ar: '#69acba',\n K: '#8f40d4',\n Ca: '#38e900',\n Sc: '#999999',\n Ti: '#979a9e',\n V: '#99999e',\n Cr: '#8a99c7',\n Mn: '#9c7ac7',\n Fe: '#e06633',\n Co: '#d37e8e',\n Ni: '#4ece4e',\n Cu: '#c78033',\n Zn: '#7d80b0',\n Ga: '#bc8b8b',\n Ge: '#668f8f',\n As: '#b87ddd',\n Se: '#e59100',\n Br: '#a62929',\n Kr: '#59b1c9',\n Rb: '#702eb0',\n Sr: '#00ff00',\n Y: '#66afaf',\n Zr: '#71abab',\n Nb: '#67aeb4',\n Mo: '#54b5b5',\n Tc: '#3b9e9e',\n Ru: '#248f8f',\n Rh: '#0a7d8c',\n Pd: '#006985',\n Ag: '#9a9a9a',\n Cd: '#b29764',\n In: '#a67573',\n Sn: '#668080',\n Sb: '#9e63b5',\n Te: '#d47a00',\n I: '#940094',\n Xe: '#429eb0',\n Cs: '#57178f',\n Ba: '#00c900',\n La: '#5caed1',\n Ce: '#9d9d7b',\n Pr: '#8ca581',\n Nd: '#84a984',\n Pm: '#71b18a',\n Sm: '#66b68e',\n Eu: '#4ac298',\n Gd: '#37cb9e',\n Tb: '#28d1a4',\n Dy: '#1bd7a8',\n Ho: '#00e98f',\n Er: '#00e675',\n Tm: '#00d452',\n Yb: '#00bf38',\n Lu: '#00ab24',\n Hf: '#47b3ec',\n Ta: '#4da6ff',\n W: '#2194d6',\n Re: '#267dab',\n Os: '#266696',\n Ir: '#175487',\n Pt: '#9898a3',\n Au: '#c19e1c',\n Hg: '#9797ac',\n Tl: '#a6544d',\n Pb: '#575961',\n Bi: '#9e4fb5',\n Po: '#ab5c00',\n At: '#754f45',\n Rn: '#428296',\n Fr: '#420066',\n Ra: '#007d00',\n Ac: '#6aa2ec',\n Th: '#00baff',\n Pa: '#00a1ff',\n U: '#008fff',\n Np: '#0080ff',\n Pu: '#006bff',\n Am: '#545cf2',\n Cm: '#785ce3',\n Bk: '#8a4fe3',\n Cf: '#a136d4',\n Es: '#b31fd4',\n Fm: '#000000',\n Md: '#000000',\n No: '#000000',\n Lr: '#000000',\n Rf: '#47b3ec',\n Db: '#4da6ff',\n Sg: '#2194d6',\n Bh: '#267dab',\n Hs: '#266696',\n Mt: '#175487',\n Ds: '#9898a3',\n Rg: '#c19e1c',\n Cn: '#9797ac',\n Nh: '#000000',\n Fl: '#000000',\n Mc: '#000000',\n Lv: '#000000',\n Ts: '#000000',\n Og: '#000000'\n};\n\nvar elementsArray = [{\n number: 1,\n label: 'H',\n period: 1,\n group: 1,\n title: 'Hydrogen',\n state: 'gas',\n origin: 'primordial',\n type: 'diatomic',\n mass: 1.00794\n}, {\n number: 2,\n label: 'He',\n period: 1,\n group: 8,\n title: 'Helium',\n state: 'gas',\n origin: 'primordial',\n type: 'noble',\n mass: 4.0026022\n}, {\n number: 3,\n label: 'Li',\n period: 2,\n group: 1,\n title: 'Lithium',\n state: 'solid',\n origin: 'primordial',\n type: 'alkali',\n mass: 6.94\n}, {\n number: 4,\n label: 'Be',\n period: 2,\n group: 2,\n title: 'Beryllium',\n state: 'solid',\n origin: 'primordial',\n type: 'alkaline-earth',\n mass: 9.01218315\n}, {\n number: 5,\n label: 'B',\n period: 2,\n group: 3,\n title: 'Boron',\n state: 'solid',\n origin: 'primordial',\n type: 'metalloid',\n mass: 10.81\n}, {\n number: 6,\n label: 'C',\n period: 2,\n group: 4,\n title: 'Carbon',\n state: 'solid',\n origin: 'primordial',\n type: 'polyatomic',\n mass: 12.011\n}, {\n number: 7,\n label: 'N',\n period: 2,\n group: 5,\n title: 'Nitrogen',\n state: 'gas',\n origin: 'primordial',\n type: 'diatomic',\n mass: 14.007\n}, {\n number: 8,\n label: 'O',\n period: 2,\n group: 6,\n leftH: true,\n title: 'Oxygen',\n state: 'gas',\n origin: 'primordial',\n type: 'diatomic',\n mass: 15.999\n}, {\n number: 9,\n label: 'F',\n period: 2,\n group: 7,\n leftH: true,\n title: 'Fluorine',\n state: 'gas',\n origin: 'primordial',\n type: 'diatomic',\n mass: 18.9984031636\n}, {\n number: 10,\n label: 'Ne',\n period: 2,\n group: 8,\n title: 'Neon',\n state: 'gas',\n origin: 'primordial',\n type: 'noble',\n mass: 20.17976\n}, {\n number: 11,\n label: 'Na',\n period: 3,\n group: 1,\n title: 'Sodium',\n state: 'solid',\n origin: 'primordial',\n type: 'alkali',\n mass: 22.989769282\n}, {\n number: 12,\n label: 'Mg',\n period: 3,\n group: 2,\n title: 'Magnesium',\n state: 'solid',\n origin: 'primordial',\n type: 'alkaline-earth',\n mass: 24.305\n}, {\n number: 13,\n label: 'Al',\n period: 3,\n group: 3,\n title: 'Aluminium',\n state: 'solid',\n origin: 'primordial',\n type: 'post-transition',\n mass: 26.98153857\n}, {\n number: 14,\n label: 'Si',\n period: 3,\n group: 4,\n title: 'Silicon',\n state: 'solid',\n origin: 'primordial',\n type: 'metalloid',\n mass: 28.085\n}, {\n number: 15,\n label: 'P',\n period: 3,\n group: 5,\n title: 'Phosphorus',\n state: 'solid',\n origin: 'primordial',\n type: 'polyatomic',\n mass: 30.9737619985\n}, {\n number: 16,\n label: 'S',\n period: 3,\n group: 6,\n leftH: true,\n title: 'Sulfur',\n state: 'solid',\n origin: 'primordial',\n type: 'polyatomic',\n mass: 32.06\n}, {\n number: 17,\n label: 'Cl',\n period: 3,\n group: 7,\n leftH: true,\n title: 'Chlorine',\n state: 'gas',\n origin: 'primordial',\n type: 'diatomic',\n mass: 35.45\n}, {\n number: 18,\n label: 'Ar',\n period: 3,\n group: 8,\n title: 'Argon',\n state: 'gas',\n origin: 'primordial',\n type: 'noble',\n mass: 39.9481\n}, {\n number: 19,\n label: 'K',\n period: 4,\n group: 1,\n title: 'Potassium',\n state: 'solid',\n origin: 'primordial',\n type: 'alkali',\n mass: 39.09831\n}, {\n number: 20,\n label: 'Ca',\n period: 4,\n group: 2,\n title: 'Calcium',\n state: 'solid',\n origin: 'primordial',\n type: 'alkaline-earth',\n mass: 40.0784\n}, {\n number: 21,\n label: 'Sc',\n period: 4,\n group: 3,\n title: 'Scandium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 44.9559085\n}, {\n number: 22,\n label: 'Ti',\n period: 4,\n group: 4,\n title: 'Titanium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 47.8671\n}, {\n number: 23,\n label: 'V',\n period: 4,\n group: 5,\n title: 'Vanadium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 50.94151\n}, {\n number: 24,\n label: 'Cr',\n period: 4,\n group: 6,\n title: 'Chromium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 51.99616\n}, {\n number: 25,\n label: 'Mn',\n period: 4,\n group: 7,\n title: 'Manganese',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 54.9380443\n}, {\n number: 26,\n label: 'Fe',\n period: 4,\n group: 8,\n title: 'Iron',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 55.8452\n}, {\n number: 27,\n label: 'Co',\n period: 4,\n group: 8,\n title: 'Cobalt',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 58.9331944\n}, {\n number: 28,\n label: 'Ni',\n period: 4,\n group: 8,\n title: 'Nickel',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 58.69344\n}, {\n number: 29,\n label: 'Cu',\n period: 4,\n group: 1,\n title: 'Copper',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 63.5463\n}, {\n number: 30,\n label: 'Zn',\n period: 4,\n group: 2,\n title: 'Zinc',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 65.382\n}, {\n number: 31,\n label: 'Ga',\n period: 4,\n group: 3,\n title: 'Gallium',\n state: 'solid',\n origin: 'primordial',\n type: 'post-transition',\n mass: 69.7231\n}, {\n number: 32,\n label: 'Ge',\n period: 4,\n group: 4,\n title: 'Germanium',\n state: 'solid',\n origin: 'primordial',\n type: 'metalloid',\n mass: 72.6308\n}, {\n number: 33,\n label: 'As',\n period: 4,\n group: 5,\n title: 'Arsenic',\n state: 'solid',\n origin: 'primordial',\n type: 'metalloid',\n mass: 74.9215956\n}, {\n number: 34,\n label: 'Se',\n period: 4,\n group: 6,\n leftH: true,\n title: 'Selenium',\n state: 'solid',\n origin: 'primordial',\n type: 'polyatomic',\n mass: 78.9718\n}, {\n number: 35,\n label: 'Br',\n period: 4,\n group: 7,\n leftH: true,\n title: 'Bromine',\n state: 'liquid',\n origin: 'primordial',\n type: 'diatomic',\n mass: 79.904\n}, {\n number: 36,\n label: 'Kr',\n period: 4,\n group: 8,\n title: 'Krypton',\n state: 'gas',\n origin: 'primordial',\n type: 'noble',\n mass: 83.7982\n}, {\n number: 37,\n label: 'Rb',\n period: 5,\n group: 1,\n title: 'Rubidium',\n state: 'solid',\n origin: 'primordial',\n type: 'alkali',\n mass: 85.46783\n}, {\n number: 38,\n label: 'Sr',\n period: 5,\n group: 2,\n title: 'Strontium',\n state: 'solid',\n origin: 'primordial',\n type: 'alkaline-earth',\n mass: 87.621\n}, {\n number: 39,\n label: 'Y',\n period: 5,\n group: 3,\n title: 'Yttrium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 88.905842\n}, {\n number: 40,\n label: 'Zr',\n period: 5,\n group: 4,\n title: 'Zirconium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 91.2242\n}, {\n number: 41,\n label: 'Nb',\n period: 5,\n group: 5,\n title: 'Niobium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 92.906372\n}, {\n number: 42,\n label: 'Mo',\n period: 5,\n group: 6,\n title: 'Molybdenum',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 95.951\n}, {\n number: 43,\n label: 'Tc',\n period: 5,\n group: 7,\n title: 'Technetium',\n state: 'solid',\n origin: 'decay',\n type: 'transition',\n mass: 98\n}, {\n number: 44,\n label: 'Ru',\n period: 5,\n group: 8,\n title: 'Ruthenium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 101.072\n}, {\n number: 45,\n label: 'Rh',\n period: 5,\n group: 8,\n title: 'Rhodium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 102.905502\n}, {\n number: 46,\n label: 'Pd',\n period: 5,\n group: 8,\n title: 'Palladium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 106.421\n}, {\n number: 47,\n label: 'Ag',\n period: 5,\n group: 1,\n title: 'Silver',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 107.86822\n}, {\n number: 48,\n label: 'Cd',\n period: 5,\n group: 2,\n title: 'Cadmium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 112.4144\n}, {\n number: 49,\n label: 'In',\n period: 5,\n group: 3,\n title: 'Indium',\n state: 'solid',\n origin: 'primordial',\n type: 'post-transition',\n mass: 114.8181\n}, {\n number: 50,\n label: 'Sn',\n period: 5,\n group: 4,\n title: 'Tin',\n state: 'solid',\n origin: 'primordial',\n type: 'post-transition',\n mass: 118.7107\n}, {\n number: 51,\n label: 'Sb',\n period: 5,\n group: 5,\n title: 'Antimony',\n state: 'solid',\n origin: 'primordial',\n type: 'metalloid',\n mass: 121.7601\n}, {\n number: 52,\n label: 'Te',\n period: 5,\n group: 6,\n title: 'Tellurium',\n state: 'solid',\n origin: 'primordial',\n type: 'metalloid',\n mass: 127.603\n}, {\n number: 53,\n label: 'I',\n period: 5,\n group: 7,\n leftH: true,\n title: 'Iodine',\n state: 'solid',\n origin: 'primordial',\n type: 'diatomic',\n mass: 126.904473\n}, {\n number: 54,\n label: 'Xe',\n period: 5,\n group: 8,\n title: 'Xenon',\n state: 'gas',\n origin: 'primordial',\n type: 'noble',\n mass: 131.2936\n}, {\n number: 55,\n label: 'Cs',\n period: 6,\n group: 1,\n title: 'Caesium',\n state: 'solid',\n origin: 'primordial',\n type: 'alkali',\n mass: 132.905451966\n}, {\n number: 56,\n label: 'Ba',\n period: 6,\n group: 2,\n title: 'Barium',\n state: 'solid',\n origin: 'primordial',\n type: 'alkaline-earth',\n mass: 137.3277\n}, {\n number: 57,\n label: 'La',\n period: 6,\n group: 3,\n title: 'Lanthanum',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 138.905477\n}, {\n number: 58,\n label: 'Ce',\n period: 6,\n group: 3,\n title: 'Cerium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 140.1161\n}, {\n number: 59,\n label: 'Pr',\n period: 6,\n group: 3,\n title: 'Praseodymium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 140.907662\n}, {\n number: 60,\n label: 'Nd',\n period: 6,\n group: 3,\n title: 'Neodymium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 144.2423\n}, {\n number: 61,\n label: 'Pm',\n period: 6,\n group: 3,\n title: 'Promethium',\n state: 'solid',\n origin: 'decay',\n type: 'lanthanide',\n mass: 145\n}, {\n number: 62,\n label: 'Sm',\n period: 6,\n group: 3,\n title: 'Samarium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 150.362\n}, {\n number: 63,\n label: 'Eu',\n period: 6,\n group: 3,\n title: 'Europium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 151.9641\n}, {\n number: 64,\n label: 'Gd',\n period: 6,\n group: 3,\n title: 'Gadolinium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 157.253\n}, {\n number: 65,\n label: 'Tb',\n period: 6,\n group: 3,\n title: 'Terbium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 158.925352\n}, {\n number: 66,\n label: 'Dy',\n period: 6,\n group: 3,\n title: 'Dysprosium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 162.5001\n}, {\n number: 67,\n label: 'Ho',\n period: 6,\n group: 3,\n title: 'Holmium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 164.930332\n}, {\n number: 68,\n label: 'Er',\n period: 6,\n group: 3,\n title: 'Erbium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 167.2593\n}, {\n number: 69,\n label: 'Tm',\n period: 6,\n group: 3,\n title: 'Thulium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 168.934222\n}, {\n number: 70,\n label: 'Yb',\n period: 6,\n group: 3,\n title: 'Ytterbium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 173.0451\n}, {\n number: 71,\n label: 'Lu',\n period: 6,\n group: 3,\n title: 'Lutetium',\n state: 'solid',\n origin: 'primordial',\n type: 'lanthanide',\n mass: 174.96681\n}, {\n number: 72,\n label: 'Hf',\n period: 6,\n group: 4,\n title: 'Hafnium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 178.492\n}, {\n number: 73,\n label: 'Ta',\n period: 6,\n group: 5,\n title: 'Tantalum',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 180.947882\n}, {\n number: 74,\n label: 'W',\n period: 6,\n group: 6,\n title: 'Tungsten',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 183.841\n}, {\n number: 75,\n label: 'Re',\n period: 6,\n group: 7,\n title: 'Rhenium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 186.2071\n}, {\n number: 76,\n label: 'Os',\n period: 6,\n group: 8,\n title: 'Osmium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 190.233\n}, {\n number: 77,\n label: 'Ir',\n period: 6,\n group: 8,\n title: 'Iridium',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 192.2173\n}, {\n number: 78,\n label: 'Pt',\n period: 6,\n group: 8,\n title: 'Platinum',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 195.0849\n}, {\n number: 79,\n label: 'Au',\n period: 6,\n group: 1,\n title: 'Gold',\n state: 'solid',\n origin: 'primordial',\n type: 'transition',\n mass: 196.9665695\n}, {\n number: 80,\n label: 'Hg',\n period: 6,\n group: 2,\n title: 'Mercury',\n state: 'liquid',\n origin: 'primordial',\n type: 'transition',\n mass: 200.5923\n}, {\n number: 81,\n label: 'Tl',\n period: 6,\n group: 3,\n title: 'Thallium',\n state: 'solid',\n origin: 'primordial',\n type: 'post-transition',\n mass: 204.38\n}, {\n number: 82,\n label: 'Pb',\n period: 6,\n group: 4,\n title: 'Lead',\n state: 'solid',\n origin: 'primordial',\n type: 'post-transition',\n mass: 207.21\n}, {\n number: 83,\n label: 'Bi',\n period: 6,\n group: 5,\n title: 'Bismuth',\n state: 'solid',\n origin: 'primordial',\n type: 'post-transition',\n mass: 208.980401\n}, {\n number: 84,\n label: 'Po',\n period: 6,\n group: 6,\n title: 'Polonium',\n state: 'solid',\n origin: 'decay',\n type: 'post-transition',\n mass: 209\n}, {\n number: 85,\n label: 'At',\n period: 6,\n group: 7,\n title: 'Astatine',\n state: 'solid',\n origin: 'decay',\n type: 'metalloid',\n mass: 210\n}, {\n number: 86,\n label: 'Rn',\n period: 6,\n group: 8,\n title: 'Radon',\n state: 'gas',\n origin: 'decay',\n type: 'noble',\n mass: 222\n}, {\n number: 87,\n label: 'Fr',\n period: 7,\n group: 1,\n title: 'Francium',\n state: 'solid',\n origin: 'decay',\n type: 'alkali',\n mass: 223\n}, {\n number: 88,\n label: 'Ra',\n period: 7,\n group: 2,\n title: 'Radium',\n state: 'solid',\n origin: 'decay',\n type: 'alkaline-earth',\n mass: 226\n}, {\n number: 89,\n label: 'Ac',\n period: 7,\n group: 3,\n title: 'Actinium',\n state: 'solid',\n origin: 'decay',\n type: 'actinide',\n mass: 227\n}, {\n number: 90,\n label: 'Th',\n period: 7,\n group: 3,\n title: 'Thorium',\n state: 'solid',\n origin: 'primordial',\n type: 'actinide',\n mass: 232.03774\n}, {\n number: 91,\n label: 'Pa',\n period: 7,\n group: 3,\n title: 'Protactinium',\n state: 'solid',\n origin: 'decay',\n type: 'actinide',\n mass: 231.035882\n}, {\n number: 92,\n label: 'U',\n period: 7,\n group: 3,\n title: 'Uranium',\n state: 'solid',\n origin: 'primordial',\n type: 'actinide',\n mass: 238.028913\n}, {\n number: 93,\n label: 'Np',\n period: 7,\n group: 3,\n title: 'Neptunium',\n state: 'solid',\n origin: 'decay',\n type: 'actinide',\n mass: 237\n}, {\n number: 94,\n label: 'Pu',\n period: 7,\n group: 3,\n title: 'Plutonium',\n state: 'solid',\n origin: 'decay',\n type: 'actinide',\n mass: 244\n}, {\n number: 95,\n label: 'Am',\n period: 7,\n group: 3,\n title: 'Americium',\n state: 'solid',\n origin: 'synthetic',\n type: 'actinide',\n mass: 243\n}, {\n number: 96,\n label: 'Cm',\n period: 7,\n group: 3,\n title: 'Curium',\n state: 'solid',\n origin: 'synthetic',\n type: 'actinide',\n mass: 247\n}, {\n number: 97,\n label: 'Bk',\n period: 7,\n group: 3,\n title: 'Berkelium',\n state: 'solid',\n origin: 'synthetic',\n type: 'actinide',\n mass: 247\n}, {\n number: 98,\n label: 'Cf',\n period: 7,\n group: 3,\n title: 'Californium',\n state: 'solid',\n origin: 'synthetic',\n type: 'actinide',\n mass: 251\n}, {\n number: 99,\n label: 'Es',\n period: 7,\n group: 3,\n title: 'Einsteinium',\n state: 'solid',\n origin: 'synthetic',\n type: 'actinide',\n mass: 252\n}, {\n number: 100,\n label: 'Fm',\n period: 7,\n group: 3,\n title: 'Fermium',\n origin: 'synthetic',\n type: 'actinide',\n mass: 257\n}, {\n number: 101,\n label: 'Md',\n period: 7,\n group: 3,\n title: 'Mendelevium',\n origin: 'synthetic',\n type: 'actinide',\n mass: 258\n}, {\n number: 102,\n label: 'No',\n period: 7,\n group: 3,\n title: 'Nobelium',\n origin: 'synthetic',\n type: 'actinide',\n mass: 259\n}, {\n number: 103,\n label: 'Lr',\n period: 7,\n group: 3,\n title: 'Lawrencium',\n origin: 'synthetic',\n type: 'actinide',\n mass: 266\n}, {\n number: 104,\n label: 'Rf',\n period: 7,\n group: 4,\n title: 'Rutherfordium',\n origin: 'synthetic',\n type: 'transition',\n mass: 267\n}, {\n number: 105,\n label: 'Db',\n period: 7,\n group: 5,\n title: 'Dubnium',\n origin: 'synthetic',\n type: 'transition',\n mass: 268\n}, {\n number: 106,\n label: 'Sg',\n period: 7,\n group: 6,\n title: 'Seaborgium',\n origin: 'synthetic',\n type: 'transition',\n mass: 269\n}, {\n number: 107,\n label: 'Bh',\n period: 7,\n group: 7,\n title: 'Bohrium',\n origin: 'synthetic',\n type: 'transition',\n mass: 270\n}, {\n number: 108,\n label: 'Hs',\n period: 7,\n group: 8,\n title: 'Hassium',\n origin: 'synthetic',\n type: 'transition',\n mass: 269\n}, {\n number: 109,\n label: 'Mt',\n period: 7,\n group: 8,\n title: 'Meitnerium',\n origin: 'synthetic',\n mass: 278\n}, {\n number: 110,\n label: 'Ds',\n period: 7,\n group: 8,\n title: 'Darmstadtium',\n origin: 'synthetic',\n mass: 281\n}, {\n number: 111,\n label: 'Rg',\n period: 7,\n group: 1,\n title: 'Roentgenium',\n origin: 'synthetic',\n mass: 282\n}, {\n number: 112,\n label: 'Cn',\n period: 7,\n group: 2,\n title: 'Copernicium',\n origin: 'synthetic',\n type: 'transition',\n mass: 285\n}, {\n number: 113,\n label: 'Nh',\n period: 7,\n group: 3,\n title: 'Nihonium',\n origin: 'synthetic',\n mass: 286\n}, {\n number: 114,\n label: 'Fl',\n period: 7,\n group: 4,\n title: 'Flerovium',\n origin: 'synthetic',\n type: 'post-transition',\n mass: 289\n}, {\n number: 115,\n label: 'Mc',\n period: 7,\n group: 5,\n title: 'Moscovium',\n origin: 'synthetic',\n mass: 289\n}, {\n number: 116,\n label: 'Lv',\n period: 7,\n group: 6,\n title: 'Livermorium',\n origin: 'synthetic',\n mass: 293\n}, {\n number: 117,\n label: 'Ts',\n period: 7,\n group: 7,\n title: 'Tennessine',\n origin: 'synthetic',\n mass: 294\n}, {\n number: 118,\n label: 'Og',\n period: 7,\n group: 8,\n title: 'Oganesson',\n origin: 'synthetic',\n mass: 294\n}];\nvar elementsMap = elementsArray.reduce(function (acc, element) {\n acc.set(element.label, element);\n acc.set(element.number, element);\n return acc;\n}, new Map());\nvar Elements = {\n get: function get(key) {\n return elementsMap.get(key);\n },\n filter: function filter(predicate) {\n return elementsArray.filter(predicate);\n }\n};\n\nvar Generics = {\n atom: {\n any: {\n labels: ['A', 'AH']\n },\n 'no-carbon': {\n labels: ['Q', 'QH']\n },\n metal: {\n labels: ['M', 'MH']\n },\n halogen: {\n labels: ['X', 'XH']\n }\n },\n group: {\n labels: ['G', 'GH', 'G*', 'GH*'],\n acyclic: {\n labels: ['ACY', 'ACH'],\n carbo: {\n labels: ['ABC', 'ABH'],\n alkynyl: {\n labels: ['AYL', 'AYH']\n },\n alkyl: {\n labels: ['ALK', 'ALH']\n },\n alkenyl: {\n labels: ['AEL', 'AEH']\n }\n },\n hetero: {\n labels: ['AHC', 'AHH'],\n alkoxy: {\n labels: ['AOX', 'AOH']\n }\n }\n },\n cyclic: {\n labels: ['CYC', 'CYH'],\n 'no-carbon': {\n labels: ['CXX', 'CXH']\n },\n carbo: {\n labels: ['CBC', 'CBH'],\n aryl: {\n labels: ['ARY', 'ARH']\n },\n cycloalkyl: {\n labels: ['CAL', 'CAH']\n },\n cycloalkenyl: {\n labels: ['CEL', 'CEH']\n }\n },\n hetero: {\n labels: ['CHC', 'CHH'],\n aryl: {\n labels: ['HAR', 'HAH']\n }\n }\n }\n },\n special: {\n labels: ['H+', 'D', 'T', 'R', 'Pol']\n }\n};\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nvar AtomList = function () {\n function AtomList(params) {\n _classCallCheck(this, AtomList);\n _defineProperty(this, \"notList\", void 0);\n _defineProperty(this, \"ids\", void 0);\n this.notList = params.notList;\n this.ids = params.ids;\n }\n _createClass(AtomList, [{\n key: \"labelList\",\n value: function labelList() {\n var labels = [];\n var _iterator = _createForOfIteratorHelper(this.ids),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var id = _step.value;\n var currenElement = Elements.get(id);\n currenElement && labels.push(currenElement.label);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return labels;\n }\n }, {\n key: \"label\",\n value: function label() {\n var label = '[' + this.labelList().join(',') + ']';\n if (this.notList) {\n label = '!' + label;\n }\n return label;\n }\n }, {\n key: \"equals\",\n value: function equals(atomList) {\n return this.notList === atomList.notList && (this.ids || []).sort().toString() === (atomList.ids || []).sort().toString();\n }\n }]);\n return AtomList;\n}();\n\nfunction _createForOfIteratorHelper$1(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }\nfunction _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\nvar Pile = function (_Set) {\n _inherits(Pile, _Set);\n var _super = _createSuper(Pile);\n function Pile() {\n _classCallCheck(this, Pile);\n return _super.apply(this, arguments);\n }\n _createClass(Pile, [{\n key: \"find\",\n value: function find(predicate) {\n var _iterator = _createForOfIteratorHelper$1(this),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var item = _step.value;\n if (predicate(item)) return item;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return null;\n }\n }, {\n key: \"equals\",\n value: function equals(setB) {\n return this.isSuperset(setB) && setB.isSuperset(this);\n }\n }, {\n key: \"isSuperset\",\n value: function isSuperset(subset) {\n var _iterator2 = _createForOfIteratorHelper$1(subset),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var item = _step2.value;\n if (!this.has(item)) return false;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return true;\n }\n }, {\n key: \"filter\",\n value: function filter(expression) {\n return new Pile(Array.from(this).filter(expression));\n }\n }, {\n key: \"union\",\n value: function union(setB) {\n var union = new Pile(this);\n var _iterator3 = _createForOfIteratorHelper$1(setB),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var item = _step3.value;\n union.add(item);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return union;\n }\n }]);\n return Pile;\n}( _wrapNativeSuper(Set));\n\nvar Vec2 = function () {\n function Vec2() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _classCallCheck(this, Vec2);\n _defineProperty(this, \"x\", void 0);\n _defineProperty(this, \"y\", void 0);\n _defineProperty(this, \"z\", void 0);\n if (args.length === 0) {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n } else if (arguments.length === 1) {\n this.x = parseFloat(args[0].x || 0);\n this.y = parseFloat(args[0].y || 0);\n this.z = parseFloat(args[0].z || 0);\n } else if (arguments.length === 2) {\n this.x = parseFloat(args[0] || 0);\n this.y = parseFloat(args[1] || 0);\n this.z = 0;\n } else if (arguments.length === 3) {\n this.x = parseFloat(args[0]);\n this.y = parseFloat(args[1]);\n this.z = parseFloat(args[2]);\n } else {\n throw new Error('Vec2(): invalid arguments');\n }\n }\n _createClass(Vec2, [{\n key: \"length\",\n value: function length() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n }, {\n key: \"equals\",\n value: function equals(v) {\n return this.x === v.x && this.y === v.y;\n }\n }, {\n key: \"add\",\n value: function add(v) {\n return new Vec2(this.x + v.x, this.y + v.y, this.z + v.z);\n }\n }, {\n key: \"add_\",\n value: function add_(v) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n }\n }, {\n key: \"get_xy0\",\n value: function get_xy0() {\n return new Vec2(this.x, this.y);\n }\n }, {\n key: \"sub\",\n value: function sub(v) {\n return new Vec2(this.x - v.x, this.y - v.y, this.z - v.z);\n }\n }, {\n key: \"scaled\",\n value: function scaled(s) {\n return new Vec2(this.x * s, this.y * s, this.z * s);\n }\n }, {\n key: \"negated\",\n value: function negated() {\n return new Vec2(-this.x, -this.y, -this.z);\n }\n }, {\n key: \"yComplement\",\n value: function yComplement(y1) {\n y1 = y1 || 0;\n return new Vec2(this.x, y1 - this.y, this.z);\n }\n }, {\n key: \"addScaled\",\n value: function addScaled(v, f) {\n return new Vec2(this.x + v.x * f, this.y + v.y * f, this.z + v.z * f);\n }\n }, {\n key: \"normalized\",\n value: function normalized() {\n return this.scaled(1 / this.length());\n }\n }, {\n key: \"normalize\",\n value: function normalize() {\n var l = this.length();\n if (l < 0.000001) return false;\n this.x /= l;\n this.y /= l;\n return true;\n }\n }, {\n key: \"turnLeft\",\n value: function turnLeft() {\n return new Vec2(-this.y, this.x, this.z);\n }\n }, {\n key: \"coordStr\",\n value: function coordStr() {\n return this.x.toString() + ' , ' + this.y.toString();\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return '(' + this.x.toFixed(2) + ',' + this.y.toFixed(2) + ')';\n }\n }, {\n key: \"max\",\n value: function max(v) {\n console.assert(!!v);\n return Vec2.max(this, v);\n }\n }, {\n key: \"min\",\n value: function min(v) {\n return Vec2.min(this, v);\n }\n }, {\n key: \"ceil\",\n value: function ceil() {\n return new Vec2(Math.ceil(this.x), Math.ceil(this.y), Math.ceil(this.z));\n }\n }, {\n key: \"floor\",\n value: function floor() {\n return new Vec2(Math.floor(this.x), Math.floor(this.y), Math.floor(this.z));\n }\n }, {\n key: \"rotate\",\n value: function rotate(angle) {\n var sin = Math.sin(angle);\n var cos = Math.cos(angle);\n return this.rotateSC(sin, cos);\n }\n }, {\n key: \"rotateSC\",\n value: function rotateSC(sin, cos) {\n console.assert(sin === 0 || !!sin);\n console.assert(cos === 0 || !!cos);\n return new Vec2(this.x * cos - this.y * sin, this.x * sin + this.y * cos, this.z);\n }\n }, {\n key: \"oxAngle\",\n value: function oxAngle() {\n return Math.atan2(this.y, this.x);\n }\n }], [{\n key: \"dist\",\n value: function dist(a, b) {\n return Vec2.diff(a, b).length();\n }\n }, {\n key: \"max\",\n value: function max(v1, v2) {\n return new Vec2(Math.max(v1.x, v2.x), Math.max(v1.y, v2.y), Math.max(v1.z, v2.z));\n }\n }, {\n key: \"min\",\n value: function min(v1, v2) {\n return new Vec2(Math.min(v1.x, v2.x), Math.min(v1.y, v2.y), Math.min(v1.z, v2.z));\n }\n }, {\n key: \"sum\",\n value: function sum(v1, v2) {\n return new Vec2(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z);\n }\n }, {\n key: \"dot\",\n value: function dot(v1, v2) {\n return v1.x * v2.x + v1.y * v2.y;\n }\n }, {\n key: \"cross\",\n value: function cross(v1, v2) {\n return v1.x * v2.y - v1.y * v2.x;\n }\n }, {\n key: \"angle\",\n value: function angle(v1, v2) {\n return Math.atan2(Vec2.cross(v1, v2), Vec2.dot(v1, v2));\n }\n }, {\n key: \"diff\",\n value: function diff(v1, v2) {\n return new Vec2(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n }\n }, {\n key: \"lc\",\n value: function lc() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var v = new Vec2();\n for (var i = 0; i < arguments.length / 2; ++i) {\n v = v.addScaled(args[2 * i], args[2 * i + 1]);\n }\n return v;\n }\n }, {\n key: \"lc2\",\n value: function lc2(v1, f1, v2, f2) {\n return new Vec2(v1.x * f1 + v2.x * f2, v1.y * f1 + v2.y * f2, v1.z * f1 + v2.z * f2);\n }\n }, {\n key: \"centre\",\n value: function centre(v1, v2) {\n return Vec2.lc2(v1, 0.5, v2, 0.5);\n }\n }]);\n return Vec2;\n}();\n_defineProperty(Vec2, \"ZERO\", new Vec2(0, 0));\n_defineProperty(Vec2, \"UNIT\", new Vec2(1, 1));\n\nfunction getValueOrDefault(value, defaultValue) {\n return typeof value !== 'undefined' ? value : defaultValue;\n}\nfunction getPseudo(label) {\n return !Elements.get(label) && label !== 'L' && label !== 'L#' && label !== 'R#' ? label : '';\n}\nfunction radicalElectrons(radical) {\n radical -= 0;\n if (radical === Atom.PATTERN.RADICAL.DOUPLET) return 1;else if (radical === Atom.PATTERN.RADICAL.SINGLET || radical === Atom.PATTERN.RADICAL.TRIPLET) return 2;else {\n return 0;\n }\n}\nvar StereoLabel;\n(function (StereoLabel) {\n StereoLabel[\"Abs\"] = \"abs\";\n StereoLabel[\"And\"] = \"&\";\n StereoLabel[\"Or\"] = \"or\";\n})(StereoLabel || (StereoLabel = {}));\nvar Atom = function () {\n function Atom(params) {\n _classCallCheck(this, Atom);\n _defineProperty(this, \"label\", void 0);\n _defineProperty(this, \"fragment\", void 0);\n _defineProperty(this, \"atomList\", void 0);\n _defineProperty(this, \"attpnt\", void 0);\n _defineProperty(this, \"isotope\", void 0);\n _defineProperty(this, \"hCount\", void 0);\n _defineProperty(this, \"radical\", void 0);\n _defineProperty(this, \"charge\", void 0);\n _defineProperty(this, \"explicitValence\", void 0);\n _defineProperty(this, \"ringBondCount\", void 0);\n _defineProperty(this, \"unsaturatedAtom\", void 0);\n _defineProperty(this, \"substitutionCount\", void 0);\n _defineProperty(this, \"valence\", void 0);\n _defineProperty(this, \"implicitH\", void 0);\n _defineProperty(this, \"pp\", void 0);\n _defineProperty(this, \"neighbors\", void 0);\n _defineProperty(this, \"sgs\", void 0);\n _defineProperty(this, \"badConn\", void 0);\n _defineProperty(this, \"alias\", void 0);\n _defineProperty(this, \"rglabel\", void 0);\n _defineProperty(this, \"aam\", void 0);\n _defineProperty(this, \"invRet\", void 0);\n _defineProperty(this, \"exactChangeFlag\", void 0);\n _defineProperty(this, \"rxnFragmentType\", void 0);\n _defineProperty(this, \"stereoLabel\", void 0);\n _defineProperty(this, \"stereoParity\", void 0);\n _defineProperty(this, \"hasImplicitH\", void 0);\n _defineProperty(this, \"pseudo\", void 0);\n this.label = params.label;\n this.fragment = getValueOrDefault(params.fragment, -1);\n this.alias = getValueOrDefault(params.alias, Atom.attrlist.alias);\n this.isotope = getValueOrDefault(params.isotope, Atom.attrlist.isotope);\n this.radical = getValueOrDefault(params.radical, Atom.attrlist.radical);\n this.charge = getValueOrDefault(params.charge, Atom.attrlist.charge);\n this.rglabel = getValueOrDefault(params.rglabel, Atom.attrlist.rglabel);\n this.attpnt = getValueOrDefault(params.attpnt, Atom.attrlist.attpnt);\n this.explicitValence = getValueOrDefault(params.explicitValence, Atom.attrlist.explicitValence);\n this.valence = 0;\n this.implicitH = params.implicitH || 0;\n this.pp = params.pp ? new Vec2(params.pp) : new Vec2();\n this.sgs = new Pile();\n this.ringBondCount = getValueOrDefault(params.ringBondCount, Atom.attrlist.ringBondCount);\n this.substitutionCount = getValueOrDefault(params.substitutionCount, Atom.attrlist.substitutionCount);\n this.unsaturatedAtom = getValueOrDefault(params.unsaturatedAtom, Atom.attrlist.unsaturatedAtom);\n this.hCount = getValueOrDefault(params.hCount, Atom.attrlist.hCount);\n this.aam = getValueOrDefault(params.aam, Atom.attrlist.aam);\n this.invRet = getValueOrDefault(params.invRet, Atom.attrlist.invRet);\n this.exactChangeFlag = getValueOrDefault(params.exactChangeFlag, Atom.attrlist.exactChangeFlag);\n this.rxnFragmentType = getValueOrDefault(params.rxnFragmentType, -1);\n this.stereoLabel = getValueOrDefault(params.stereoLabel, Atom.attrlist.stereoLabel);\n this.stereoParity = getValueOrDefault(params.stereoParity, Atom.attrlist.stereoParity);\n this.atomList = params.atomList ? new AtomList(params.atomList) : null;\n this.neighbors = [];\n this.badConn = false;\n Object.defineProperty(this, 'pseudo', {\n enumerable: true,\n get: function get() {\n return getPseudo(this.label);\n }\n });\n }\n _createClass(Atom, [{\n key: \"clone\",\n value: function clone(fidMap) {\n var ret = new Atom(this);\n if (fidMap && fidMap.has(this.fragment)) ret.fragment = fidMap.get(this.fragment);\n return ret;\n }\n }, {\n key: \"isQuery\",\n value: function isQuery() {\n return this.atomList !== null || this.label === 'A' || this.attpnt || this.hCount;\n }\n }, {\n key: \"pureHydrogen\",\n value: function pureHydrogen() {\n return this.label === 'H' && this.isotope === 0;\n }\n }, {\n key: \"isPlainCarbon\",\n value: function isPlainCarbon() {\n return this.label === 'C' && this.isotope === 0 && this.radical === 0 && this.charge === 0 && this.explicitValence < 0 && this.ringBondCount === 0 && this.substitutionCount === 0 && this.unsaturatedAtom === 0 && this.hCount === 0 && !this.atomList;\n }\n }, {\n key: \"isPseudo\",\n value: function isPseudo() {\n return !this.atomList && !this.rglabel && !Elements.get(this.label);\n }\n }, {\n key: \"hasRxnProps\",\n value: function hasRxnProps() {\n return !!(this.invRet || this.exactChangeFlag || this.attpnt !== null || this.aam);\n }\n }, {\n key: \"calcValence\",\n value: function calcValence(conn) {\n var label = this.label;\n var charge = this.charge;\n if (this.isQuery()) {\n this.implicitH = 0;\n return true;\n }\n var element = Elements.get(label);\n if (!element) {\n this.implicitH = 0;\n return true;\n }\n var groupno = element.group;\n var rad = radicalElectrons(this.radical);\n var valence = conn;\n var hyd = 0;\n var absCharge = Math.abs(charge);\n if (groupno === 1) {\n if (label === 'H' || label === 'Li' || label === 'Na' || label === 'K' || label === 'Rb' || label === 'Cs' || label === 'Fr') {\n valence = 1;\n hyd = 1 - rad - conn - absCharge;\n }\n } else if (groupno === 2) {\n if (conn + rad + absCharge === 2 || conn + rad + absCharge === 0) valence = 2;else hyd = -1;\n } else if (groupno === 3) {\n if (label === 'B' || label === 'Al' || label === 'Ga' || label === 'In') {\n if (charge === -1) {\n valence = 4;\n hyd = 4 - rad - conn;\n } else {\n valence = 3;\n hyd = 3 - rad - conn - absCharge;\n }\n } else if (label === 'Tl') {\n if (charge === -1) {\n if (rad + conn <= 2) {\n valence = 2;\n hyd = 2 - rad - conn;\n } else {\n valence = 4;\n hyd = 4 - rad - conn;\n }\n } else if (charge === -2) {\n if (rad + conn <= 3) {\n valence = 3;\n hyd = 3 - rad - conn;\n } else {\n valence = 5;\n hyd = 5 - rad - conn;\n }\n } else if (rad + conn + absCharge <= 1) {\n valence = 1;\n hyd = 1 - rad - conn - absCharge;\n } else {\n valence = 3;\n hyd = 3 - rad - conn - absCharge;\n }\n }\n } else if (groupno === 4) {\n if (label === 'C' || label === 'Si' || label === 'Ge') {\n valence = 4;\n hyd = 4 - rad - conn - absCharge;\n } else if (label === 'Sn' || label === 'Pb') {\n if (conn + rad + absCharge <= 2) {\n valence = 2;\n hyd = 2 - rad - conn - absCharge;\n } else {\n valence = 4;\n hyd = 4 - rad - conn - absCharge;\n }\n }\n } else if (groupno === 5) {\n if (label === 'N' || label === 'P') {\n if (charge === 1) {\n valence = 4;\n hyd = 4 - rad - conn;\n } else if (charge === 2) {\n valence = 3;\n hyd = 3 - rad - conn;\n } else if (label === 'N' || rad + conn + absCharge <= 3) {\n valence = 3;\n hyd = 3 - rad - conn - absCharge;\n } else {\n valence = 5;\n hyd = 5 - rad - conn - absCharge;\n }\n } else if (label === 'Bi' || label === 'Sb' || label === 'As') {\n if (charge === 1) {\n if (rad + conn <= 2 && label !== 'As') {\n valence = 2;\n hyd = 2 - rad - conn;\n } else {\n valence = 4;\n hyd = 4 - rad - conn;\n }\n } else if (charge === 2) {\n valence = 3;\n hyd = 3 - rad - conn;\n } else if (rad + conn <= 3) {\n valence = 3;\n hyd = 3 - rad - conn - absCharge;\n } else {\n valence = 5;\n hyd = 5 - rad - conn - absCharge;\n }\n }\n } else if (groupno === 6) {\n if (label === 'O') {\n if (charge >= 1) {\n valence = 3;\n hyd = 3 - rad - conn;\n } else {\n valence = 2;\n hyd = 2 - rad - conn - absCharge;\n }\n } else if (label === 'S' || label === 'Se' || label === 'Po') {\n if (charge === 1) {\n if (conn <= 3) {\n valence = 3;\n hyd = 3 - rad - conn;\n } else {\n valence = 5;\n hyd = 5 - rad - conn;\n }\n } else if (conn + rad + absCharge <= 2) {\n valence = 2;\n hyd = 2 - rad - conn - absCharge;\n } else if (conn + rad + absCharge <= 4) {\n valence = 4;\n hyd = 4 - rad - conn - absCharge;\n } else {\n valence = 6;\n hyd = 6 - rad - conn - absCharge;\n }\n } else if (label === 'Te') {\n if (charge === -1) {\n if (conn <= 2) {\n valence = 2;\n hyd = 2 - rad - conn - absCharge;\n }\n } else if (charge === 0 || charge === 2) {\n if (conn <= 2) {\n valence = 2;\n hyd = 2 - rad - conn - absCharge;\n } else if (conn <= 4) {\n valence = 4;\n hyd = 4 - rad - conn - absCharge;\n } else if (charge === 0 && conn <= 6) {\n valence = 6;\n hyd = 6 - rad - conn - absCharge;\n } else {\n hyd = -1;\n }\n }\n }\n } else if (groupno === 7) {\n if (label === 'F') {\n valence = 1;\n hyd = 1 - rad - conn - absCharge;\n } else if (label === 'Cl' || label === 'Br' || label === 'I' || label === 'At') {\n if (charge === 1) {\n if (conn <= 2) {\n valence = 2;\n hyd = 2 - rad - conn;\n } else if (conn === 3 || conn === 5 || conn >= 7) {\n hyd = -1;\n }\n } else if (charge === 0) {\n if (conn <= 1) {\n valence = 1;\n hyd = 1 - rad - conn;\n } else if (conn === 2 || conn === 4 || conn === 6) {\n if (rad === 1) {\n valence = conn;\n hyd = 0;\n } else {\n hyd = -1;\n }\n } else if (conn > 7) {\n hyd = -1;\n }\n }\n }\n } else if (groupno === 8) {\n if (conn + rad + absCharge === 0) valence = 1;else hyd = -1;\n }\n this.valence = valence;\n this.implicitH = hyd;\n if (this.implicitH < 0) {\n this.valence = conn;\n this.implicitH = 0;\n this.badConn = true;\n return false;\n }\n return true;\n }\n }, {\n key: \"calcValenceMinusHyd\",\n value: function calcValenceMinusHyd(conn) {\n var charge = this.charge;\n var label = this.label;\n var element = Elements.get(this.label);\n if (!element) {\n console.assert('Element ' + label + ' unknown');\n this.implicitH = 0;\n return 0;\n }\n var groupno = element.group;\n var rad = radicalElectrons(this.radical);\n if (groupno === 3) {\n if (label === 'B' || label === 'Al' || label === 'Ga' || label === 'In') {\n if (charge === -1) {\n if (rad + conn <= 4) return rad + conn;\n }\n }\n } else if (groupno === 5) {\n if (label === 'N' || label === 'P') {\n if (charge === 1) return rad + conn;\n if (charge === 2) return rad + conn;\n } else if (label === 'Sb' || label === 'Bi' || label === 'As') {\n if (charge === 1) return rad + conn;else if (charge === 2) return rad + conn;\n }\n } else if (groupno === 6) {\n if (label === 'O') {\n if (charge >= 1) return rad + conn;\n } else if (label === 'S' || label === 'Se' || label === 'Po') {\n if (charge === 1) return rad + conn;\n }\n } else if (groupno === 7) {\n if (label === 'Cl' || label === 'Br' || label === 'I' || label === 'At') {\n if (charge === 1) return rad + conn;\n }\n }\n return rad + conn + Math.abs(charge);\n }\n }], [{\n key: \"getAttrHash\",\n value: function getAttrHash(atom) {\n var attrs = {};\n for (var attr in Atom.attrlist) {\n if (typeof atom[attr] !== 'undefined') attrs[attr] = atom[attr];\n }\n return attrs;\n }\n }, {\n key: \"attrGetDefault\",\n value: function attrGetDefault(attr) {\n if (attr in Atom.attrlist) return Atom.attrlist[attr];\n return console.assert(false, 'Attribute unknown');\n }\n }]);\n return Atom;\n}();\n_defineProperty(Atom, \"PATTERN\", {\n RADICAL: {\n NONE: 0,\n SINGLET: 1,\n DOUPLET: 2,\n TRIPLET: 3\n },\n STEREO_PARITY: {\n NONE: 0,\n ODD: 1,\n EVEN: 2,\n EITHER: 3\n }\n});\n_defineProperty(Atom, \"attrlist\", {\n alias: null,\n label: 'C',\n isotope: 0,\n radical: 0,\n charge: 0,\n explicitValence: -1,\n ringBondCount: 0,\n substitutionCount: 0,\n unsaturatedAtom: 0,\n hCount: 0,\n atomList: null,\n invRet: 0,\n exactChangeFlag: 0,\n rglabel: null,\n attpnt: null,\n aam: 0,\n stereoLabel: null,\n stereoParity: 0\n});\n\nvar Bond = function () {\n function Bond(params) {\n _classCallCheck(this, Bond);\n _defineProperty(this, \"begin\", void 0);\n _defineProperty(this, \"end\", void 0);\n _defineProperty(this, \"type\", void 0);\n _defineProperty(this, \"xxx\", void 0);\n _defineProperty(this, \"stereo\", void 0);\n _defineProperty(this, \"topology\", void 0);\n _defineProperty(this, \"reactingCenterStatus\", void 0);\n _defineProperty(this, \"len\", void 0);\n _defineProperty(this, \"sb\", void 0);\n _defineProperty(this, \"sa\", void 0);\n _defineProperty(this, \"hb1\", void 0);\n _defineProperty(this, \"hb2\", void 0);\n _defineProperty(this, \"angle\", void 0);\n _defineProperty(this, \"center\", void 0);\n this.begin = params.begin;\n this.end = params.end;\n this.type = params.type;\n this.xxx = params.xxx || '';\n this.stereo = Bond.PATTERN.STEREO.NONE;\n this.topology = Bond.PATTERN.TOPOLOGY.EITHER;\n this.reactingCenterStatus = 0;\n this.len = 0;\n this.sb = 0;\n this.sa = 0;\n this.angle = 0;\n if (params.stereo) this.stereo = params.stereo;\n if (params.topology) this.topology = params.topology;\n if (params.reactingCenterStatus) this.reactingCenterStatus = params.reactingCenterStatus;\n this.center = new Vec2();\n }\n _createClass(Bond, [{\n key: \"hasRxnProps\",\n value: function hasRxnProps() {\n return !!this.reactingCenterStatus;\n }\n }, {\n key: \"getCenter\",\n value: function getCenter(struct) {\n var p1 = struct.atoms.get(this.begin).pp;\n var p2 = struct.atoms.get(this.end).pp;\n return Vec2.lc2(p1, 0.5, p2, 0.5);\n }\n }, {\n key: \"getDir\",\n value: function getDir(struct) {\n var p1 = struct.atoms.get(this.begin).pp;\n var p2 = struct.atoms.get(this.end).pp;\n return p2.sub(p1).normalized();\n }\n }, {\n key: \"clone\",\n value: function clone(aidMap) {\n var cp = new Bond(this);\n if (aidMap) {\n cp.begin = aidMap.get(cp.begin);\n cp.end = aidMap.get(cp.end);\n }\n return cp;\n }\n }], [{\n key: \"getAttrHash\",\n value: function getAttrHash(bond) {\n var attrs = {};\n for (var attr in Bond.attrlist) {\n if (bond[attr]) {\n attrs[attr] = bond[attr];\n }\n }\n return attrs;\n }\n }, {\n key: \"attrGetDefault\",\n value: function attrGetDefault(attr) {\n if (attr in Bond.attrlist) {\n return Bond.attrlist[attr];\n }\n }\n }]);\n return Bond;\n}();\n_defineProperty(Bond, \"PATTERN\", {\n TYPE: {\n SINGLE: 1,\n DOUBLE: 2,\n TRIPLE: 3,\n AROMATIC: 4,\n SINGLE_OR_DOUBLE: 5,\n SINGLE_OR_AROMATIC: 6,\n DOUBLE_OR_AROMATIC: 7,\n ANY: 8,\n DATIVE: 9,\n HYDROGEN: 10\n },\n STEREO: {\n NONE: 0,\n UP: 1,\n EITHER: 4,\n DOWN: 6,\n CIS_TRANS: 3\n },\n TOPOLOGY: {\n EITHER: 0,\n RING: 1,\n CHAIN: 2\n },\n REACTING_CENTER: {\n NOT_CENTER: -1,\n UNMARKED: 0,\n CENTER: 1,\n UNCHANGED: 2,\n MADE_OR_BROKEN: 4,\n ORDER_CHANGED: 8,\n MADE_OR_BROKEN_AND_CHANGED: 12\n }\n});\n_defineProperty(Bond, \"attrlist\", {\n type: Bond.PATTERN.TYPE.SINGLE,\n stereo: Bond.PATTERN.STEREO.NONE,\n topology: Bond.PATTERN.TOPOLOGY.EITHER,\n reactingCenterStatus: Bond.PATTERN.REACTING_CENTER.UNMARKED\n});\n\nvar StereoFlag;\n(function (StereoFlag) {\n StereoFlag[\"Mixed\"] = \"MIXED\";\n StereoFlag[\"Abs\"] = \"ABS\";\n StereoFlag[\"And\"] = \"AND\";\n StereoFlag[\"Or\"] = \"OR\";\n})(StereoFlag || (StereoFlag = {}));\nfunction calcStereoFlag(struct, stereoAids) {\n if (!stereoAids || stereoAids.length === 0) return undefined;\n var filteredStereoAtoms = stereoAids.map(function (aid) {\n return struct.atoms.get(aid);\n }).filter(function (atom) {\n return atom === null || atom === void 0 ? void 0 : atom.stereoLabel;\n });\n if (!filteredStereoAtoms.length) return undefined;\n var atom = filteredStereoAtoms[0];\n var stereoLabel = atom.stereoLabel;\n var hasAnotherLabel = filteredStereoAtoms.some(function (atom) {\n return (atom === null || atom === void 0 ? void 0 : atom.stereoLabel) !== stereoLabel;\n });\n var stereoFlag;\n if (hasAnotherLabel) {\n stereoFlag = StereoFlag.Mixed;\n } else {\n var _stereoLabel$match;\n var label = (_stereoLabel$match = stereoLabel.match(/\\D+/g)) === null || _stereoLabel$match === void 0 ? void 0 : _stereoLabel$match[0];\n switch (label) {\n case StereoLabel.Abs:\n {\n stereoFlag = StereoFlag.Abs;\n break;\n }\n case StereoLabel.And:\n {\n stereoFlag = StereoFlag.And;\n break;\n }\n case StereoLabel.Or:\n {\n stereoFlag = StereoFlag.Or;\n break;\n }\n default:\n {\n throw new Error(\"Unsupported stereo label: \".concat(label, \".\"));\n }\n }\n }\n return stereoFlag;\n}\nvar _enhancedStereoFlag = new WeakMap();\nvar Fragment = function () {\n _createClass(Fragment, [{\n key: \"enhancedStereoFlag\",\n get: function get() {\n return _classPrivateFieldGet(this, _enhancedStereoFlag);\n }\n }]);\n function Fragment(stereoFlagPosition) {\n _classCallCheck(this, Fragment);\n _enhancedStereoFlag.set(this, {\n writable: true,\n value: void 0\n });\n _defineProperty(this, \"stereoFlagPosition\", void 0);\n _defineProperty(this, \"stereoAtoms\", []);\n this.stereoFlagPosition = stereoFlagPosition;\n }\n _createClass(Fragment, [{\n key: \"clone\",\n value: function clone(aidMap) {\n var fr = new Fragment(this.stereoFlagPosition);\n fr.stereoAtoms = this.stereoAtoms.map(function (aid) {\n return aidMap.get(aid);\n });\n _classPrivateFieldSet(fr, _enhancedStereoFlag, _classPrivateFieldGet(this, _enhancedStereoFlag));\n return fr;\n }\n }, {\n key: \"updateStereoFlag\",\n value: function updateStereoFlag(struct) {\n _classPrivateFieldSet(this, _enhancedStereoFlag, calcStereoFlag(struct, this.stereoAtoms));\n return _classPrivateFieldGet(this, _enhancedStereoFlag);\n }\n }, {\n key: \"updateStereoAtom\",\n value: function updateStereoAtom(struct, aid, frId, isAdd) {\n var _struct$atoms$get;\n if (isAdd && !this.stereoAtoms.includes(aid)) this.stereoAtoms.push(aid);\n if (!isAdd && (((_struct$atoms$get = struct.atoms.get(aid)) === null || _struct$atoms$get === void 0 ? void 0 : _struct$atoms$get.fragment) !== frId || !Array.from(struct.bonds.values()).filter(function (bond) {\n return bond.stereo && bond.type !== Bond.PATTERN.TYPE.DOUBLE;\n }).some(function (bond) {\n return bond.begin === aid;\n }))) {\n this.stereoAtoms = this.stereoAtoms.filter(function (item) {\n return item !== aid;\n });\n }\n _classPrivateFieldSet(this, _enhancedStereoFlag, calcStereoFlag(struct, this.stereoAtoms));\n }\n }], [{\n key: \"getDefaultStereoFlagPosition\",\n value: function getDefaultStereoFlagPosition(struct, fragmentId) {\n var fragment = struct.getFragment(fragmentId);\n if (!fragment) return undefined;\n var bb = fragment.getCoordBoundingBox();\n return new Vec2(bb.max.x, bb.min.y - 1);\n }\n }]);\n return Fragment;\n}();\n\nvar HalfBond = function HalfBond(begin, end, bid) {\n _classCallCheck(this, HalfBond);\n _defineProperty(this, \"begin\", void 0);\n _defineProperty(this, \"end\", void 0);\n _defineProperty(this, \"bid\", void 0);\n _defineProperty(this, \"dir\", void 0);\n _defineProperty(this, \"norm\", void 0);\n _defineProperty(this, \"ang\", void 0);\n _defineProperty(this, \"p\", void 0);\n _defineProperty(this, \"loop\", void 0);\n _defineProperty(this, \"contra\", void 0);\n _defineProperty(this, \"next\", void 0);\n _defineProperty(this, \"leftSin\", void 0);\n _defineProperty(this, \"leftCos\", void 0);\n _defineProperty(this, \"leftNeighbor\", void 0);\n _defineProperty(this, \"rightSin\", void 0);\n _defineProperty(this, \"rightCos\", void 0);\n _defineProperty(this, \"rightNeighbor\", void 0);\n console.assert(arguments.length === 3, 'Invalid parameter number!');\n this.begin = begin;\n this.end = end;\n this.bid = bid;\n this.dir = new Vec2();\n this.norm = new Vec2();\n this.ang = 0;\n this.p = new Vec2();\n this.loop = -1;\n this.contra = -1;\n this.next = -1;\n this.leftSin = 0;\n this.leftCos = 0;\n this.leftNeighbor = 0;\n this.rightSin = 0;\n this.rightCos = 0;\n this.rightNeighbor = 0;\n};\n\nvar Loop = function Loop(hbs, struct, isConvex) {\n var _this = this;\n _classCallCheck(this, Loop);\n _defineProperty(this, \"hbs\", void 0);\n _defineProperty(this, \"dblBonds\", void 0);\n _defineProperty(this, \"aromatic\", void 0);\n _defineProperty(this, \"convex\", void 0);\n this.hbs = hbs;\n this.dblBonds = 0;\n this.aromatic = true;\n this.convex = isConvex || false;\n hbs.forEach(function (hb) {\n var bond = struct.bonds.get(struct.halfBonds.get(hb).bid);\n if (bond.type !== Bond.PATTERN.TYPE.AROMATIC) _this.aromatic = false;\n if (bond.type === Bond.PATTERN.TYPE.DOUBLE) _this.dblBonds++;\n });\n};\n\nvar RGroup = function () {\n function RGroup(params) {\n _classCallCheck(this, RGroup);\n _defineProperty(this, \"frags\", void 0);\n _defineProperty(this, \"resth\", void 0);\n _defineProperty(this, \"range\", void 0);\n _defineProperty(this, \"ifthen\", void 0);\n this.frags = new Pile();\n this.resth = (params === null || params === void 0 ? void 0 : params.resth) || false;\n this.range = (params === null || params === void 0 ? void 0 : params.range) || '';\n this.ifthen = (params === null || params === void 0 ? void 0 : params.ifthen) || 0;\n }\n _createClass(RGroup, [{\n key: \"getAttrs\",\n value: function getAttrs() {\n return {\n resth: this.resth,\n range: this.range,\n ifthen: this.ifthen\n };\n }\n }, {\n key: \"clone\",\n value: function clone(fidMap) {\n var ret = new RGroup(this);\n this.frags.forEach(function (fid) {\n ret.frags.add(fidMap ? fidMap.get(fid) : fid);\n });\n return ret;\n }\n }], [{\n key: \"findRGroupByFragment\",\n value: function findRGroupByFragment(rgroups, frid) {\n return rgroups.find(function (_rgid, rgroup) {\n return rgroup.frags.has(frid);\n });\n }\n }]);\n return RGroup;\n}();\n\nvar RxnArrowMode;\n(function (RxnArrowMode) {\n RxnArrowMode[\"simple\"] = \"simple\";\n RxnArrowMode[\"equilibrium\"] = \"equilibrium\";\n})(RxnArrowMode || (RxnArrowMode = {}));\nvar RxnArrow = function () {\n function RxnArrow(pp) {\n var mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : RxnArrowMode.simple;\n _classCallCheck(this, RxnArrow);\n _defineProperty(this, \"pp\", void 0);\n _defineProperty(this, \"mode\", void 0);\n this.pp = pp;\n this.mode = mode;\n }\n _createClass(RxnArrow, [{\n key: \"clone\",\n value: function clone() {\n return new RxnArrow(this.pp, this.mode);\n }\n }]);\n return RxnArrow;\n}();\n\nvar RxnPlus = function () {\n function RxnPlus(params) {\n _classCallCheck(this, RxnPlus);\n _defineProperty(this, \"pp\", void 0);\n this.pp = params !== null && params !== void 0 && params.pp ? new Vec2(params.pp) : new Vec2();\n }\n _createClass(RxnPlus, [{\n key: \"clone\",\n value: function clone() {\n return new RxnPlus(this);\n }\n }]);\n return RxnPlus;\n}();\n\nvar Box2Abs = function () {\n function Box2Abs() {\n _classCallCheck(this, Box2Abs);\n _defineProperty(this, \"p0\", void 0);\n _defineProperty(this, \"p1\", void 0);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && 'min' in args[0] && 'max' in args[0]) {\n this.p0 = args[0].min;\n this.p1 = args[0].max;\n }\n if (args.length === 2) {\n this.p0 = args[0];\n this.p1 = args[1];\n } else if (args.length === 4) {\n this.p0 = new Vec2(args[0], args[1]);\n this.p1 = new Vec2(args[2], args[3]);\n } else if (args.length === 0) {\n this.p0 = new Vec2();\n this.p1 = new Vec2();\n } else {\n throw new Error('Box2Abs constructor only accepts 4 numbers or 2 vectors or no args!');\n }\n }\n _createClass(Box2Abs, [{\n key: \"toString\",\n value: function toString() {\n return this.p0.toString() + ' ' + this.p1.toString();\n }\n }, {\n key: \"clone\",\n value: function clone() {\n return new Box2Abs(this.p0, this.p1);\n }\n }, {\n key: \"extend\",\n value: function extend(lp, rb) {\n rb = rb || lp;\n return new Box2Abs(this.p0.sub(lp), this.p1.add(rb));\n }\n }, {\n key: \"include\",\n value: function include(p) {\n console.assert(!!p);\n return new Box2Abs(this.p0.min(p), this.p1.max(p));\n }\n }, {\n key: \"contains\",\n value: function contains(p) {\n var ext = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.0;\n console.assert(!!p);\n return p.x >= this.p0.x - ext && p.x <= this.p1.x + ext && p.y >= this.p0.y - ext && p.y <= this.p1.y + ext;\n }\n }, {\n key: \"translate\",\n value: function translate(d) {\n return new Box2Abs(this.p0.add(d), this.p1.add(d));\n }\n }, {\n key: \"transform\",\n value: function transform(f, options) {\n console.assert(!!f);\n return new Box2Abs(f(this.p0, options), f(this.p1, options));\n }\n }, {\n key: \"sz\",\n value: function sz() {\n return this.p1.sub(this.p0);\n }\n }, {\n key: \"centre\",\n value: function centre() {\n return Vec2.centre(this.p0, this.p1);\n }\n }, {\n key: \"pos\",\n value: function pos() {\n return this.p0;\n }\n }], [{\n key: \"fromRelBox\",\n value: function fromRelBox(relBox) {\n return new Box2Abs(relBox.x, relBox.y, relBox.x + relBox.width, relBox.y + relBox.height);\n }\n }, {\n key: \"union\",\n value: function union(b1, b2) {\n return new Box2Abs(Vec2.min(b1.p0, b2.p0), Vec2.max(b1.p1, b2.p1));\n }\n }, {\n key: \"segmentIntersection\",\n value: function segmentIntersection(a, b, c, d) {\n var dc = (a.x - c.x) * (b.y - c.y) - (a.y - c.y) * (b.x - c.x);\n var dd = (a.x - d.x) * (b.y - d.y) - (a.y - d.y) * (b.x - d.x);\n var da = (c.x - a.x) * (d.y - a.y) - (c.y - a.y) * (d.x - a.x);\n var db = (c.x - b.x) * (d.y - b.y) - (c.y - b.y) * (d.x - b.x);\n return dc * dd <= 0 && da * db <= 0;\n }\n }]);\n return Box2Abs;\n}();\n\nvar SGroupBracketParams = function SGroupBracketParams(c, d, w, h) {\n _classCallCheck(this, SGroupBracketParams);\n _defineProperty(this, \"c\", void 0);\n _defineProperty(this, \"d\", void 0);\n _defineProperty(this, \"n\", void 0);\n _defineProperty(this, \"w\", void 0);\n _defineProperty(this, \"h\", void 0);\n this.c = c;\n this.d = d;\n this.n = d.rotateSC(1, 0);\n this.w = w;\n this.h = h;\n};\nvar SGroup = function () {\n function SGroup(type) {\n _classCallCheck(this, SGroup);\n _defineProperty(this, \"type\", void 0);\n _defineProperty(this, \"id\", void 0);\n _defineProperty(this, \"label\", void 0);\n _defineProperty(this, \"bracketBox\", void 0);\n _defineProperty(this, \"bracketDir\", void 0);\n _defineProperty(this, \"areas\", void 0);\n _defineProperty(this, \"highlight\", void 0);\n _defineProperty(this, \"highlighting\", void 0);\n _defineProperty(this, \"selected\", void 0);\n _defineProperty(this, \"selectionPlate\", void 0);\n _defineProperty(this, \"atoms\", void 0);\n _defineProperty(this, \"atomSet\", void 0);\n _defineProperty(this, \"parentAtomSet\", void 0);\n _defineProperty(this, \"patoms\", void 0);\n _defineProperty(this, \"allAtoms\", void 0);\n _defineProperty(this, \"bonds\", void 0);\n _defineProperty(this, \"xBonds\", void 0);\n _defineProperty(this, \"neiAtoms\", void 0);\n _defineProperty(this, \"pp\", void 0);\n _defineProperty(this, \"data\", void 0);\n this.type = type;\n this.id = -1;\n this.label = -1;\n this.bracketBox = null;\n this.bracketDir = new Vec2(1, 0);\n this.areas = [];\n this.highlight = false;\n this.highlighting = null;\n this.selected = false;\n this.selectionPlate = null;\n this.atoms = [];\n this.patoms = [];\n this.bonds = [];\n this.xBonds = [];\n this.neiAtoms = [];\n this.pp = null;\n this.data = {\n mul: 1,\n connectivity: 'ht',\n name: '',\n subscript: 'n',\n attached: false,\n absolute: true,\n showUnits: false,\n nCharsToDisplay: -1,\n tagChar: '',\n daspPos: 1,\n fieldType: 'F',\n fieldName: '',\n fieldValue: '',\n units: '',\n query: '',\n queryOp: ''\n };\n }\n _createClass(SGroup, [{\n key: \"getAttr\",\n value: function getAttr(attr) {\n return this.data[attr];\n }\n }, {\n key: \"getAttrs\",\n value: function getAttrs() {\n var _this = this;\n var attrs = {};\n Object.keys(this.data).forEach(function (attr) {\n attrs[attr] = _this.data[attr];\n });\n return attrs;\n }\n }, {\n key: \"setAttr\",\n value: function setAttr(attr, value) {\n var oldValue = this.data[attr];\n this.data[attr] = value;\n return oldValue;\n }\n }, {\n key: \"checkAttr\",\n value: function checkAttr(attr, value) {\n return this.data[attr] === value;\n }\n }, {\n key: \"updateOffset\",\n value: function updateOffset(offset) {\n this.pp = Vec2.sum(this.bracketBox.p1, offset);\n }\n }, {\n key: \"calculatePP\",\n value: function calculatePP(struct) {\n var topLeftPoint = this.bracketBox.p1.add(new Vec2(0.5, 0.5));\n var sgroups = Array.from(struct.sgroups.values());\n for (var i = 0; i < struct.sgroups.size; ++i) {\n if (!descriptorIntersects(sgroups, topLeftPoint)) break;\n topLeftPoint = topLeftPoint.add(new Vec2(0, 0.5));\n }\n if (this.data.fieldName === 'INDIGO_CIP_DESC' && this.atoms.length === 1) {\n var _struct$atoms$get;\n var sAtom = this.atoms[0];\n var sAtomPP = (_struct$atoms$get = struct.atoms.get(sAtom)) === null || _struct$atoms$get === void 0 ? void 0 : _struct$atoms$get.pp;\n if (sAtomPP) {\n topLeftPoint = sAtomPP;\n }\n }\n this.pp = topLeftPoint;\n }\n }], [{\n key: \"getOffset\",\n value: function getOffset(sgroup) {\n if (!(sgroup !== null && sgroup !== void 0 && sgroup.pp)) return null;\n return Vec2.diff(sgroup.pp, sgroup.bracketBox.p1);\n }\n }, {\n key: \"filterAtoms\",\n value: function filterAtoms(atoms, map) {\n var newAtoms = [];\n for (var i = 0; i < atoms.length; ++i) {\n var aid = atoms[i];\n if (typeof map[aid] !== 'number') newAtoms.push(aid);else if (map[aid] >= 0) newAtoms.push(map[aid]);else newAtoms.push(-1);\n }\n return newAtoms;\n }\n }, {\n key: \"removeNegative\",\n value: function removeNegative(atoms) {\n var newAtoms = [];\n for (var j = 0; j < atoms.length; ++j) {\n if (atoms[j] >= 0) newAtoms.push(atoms[j]);\n }\n return newAtoms;\n }\n }, {\n key: \"filter\",\n value: function filter(_mol, sg, atomMap) {\n sg.atoms = SGroup.removeNegative(SGroup.filterAtoms(sg.atoms, atomMap));\n }\n }, {\n key: \"clone\",\n value: function clone(sgroup, aidMap) {\n var cp = new SGroup(sgroup.type);\n Object.keys(sgroup.data).forEach(function (field) {\n cp.data[field] = sgroup.data[field];\n });\n cp.atoms = sgroup.atoms.map(function (elem) {\n return aidMap.get(elem);\n });\n cp.pp = sgroup.pp;\n cp.bracketBox = sgroup.bracketBox;\n cp.patoms = null;\n cp.bonds = null;\n cp.allAtoms = sgroup.allAtoms;\n return cp;\n }\n }, {\n key: \"addAtom\",\n value: function addAtom(sgroup, aid) {\n sgroup.atoms.push(aid);\n }\n }, {\n key: \"removeAtom\",\n value: function removeAtom(sgroup, aid) {\n for (var i = 0; i < sgroup.atoms.length; ++i) {\n if (sgroup.atoms[i] === aid) {\n sgroup.atoms.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"getCrossBonds\",\n value: function getCrossBonds(mol, parentAtomSet) {\n var crossBonds = {};\n mol.bonds.forEach(function (bond, bid) {\n if (parentAtomSet.has(bond.begin) && !parentAtomSet.has(bond.end)) {\n if (!crossBonds[bond.begin]) {\n crossBonds[bond.begin] = [];\n }\n crossBonds[bond.begin].push(bid);\n } else if (parentAtomSet.has(bond.end) && !parentAtomSet.has(bond.begin)) {\n if (!crossBonds[bond.end]) {\n crossBonds[bond.end] = [];\n }\n crossBonds[bond.end].push(bid);\n }\n });\n return crossBonds;\n }\n }, {\n key: \"bracketPos\",\n value: function bracketPos(sGroup, mol, crossBondsPerAtom) {\n var atoms = sGroup.atoms;\n var crossBonds = Object.values(crossBondsPerAtom).flat();\n if (!crossBonds || crossBonds.length !== 2) {\n sGroup.bracketDir = new Vec2(1, 0);\n } else {\n var p1 = mol.bonds.get(crossBonds[0]).getCenter(mol);\n var p2 = mol.bonds.get(crossBonds[1]).getCenter(mol);\n sGroup.bracketDir = Vec2.diff(p2, p1).normalized();\n }\n var d = sGroup.bracketDir;\n var braketBox = null;\n var contentBoxes = [];\n atoms.forEach(function (aid) {\n var atom = mol.atoms.get(aid);\n var pos = new Vec2(atom.pp);\n var ext = new Vec2(0.05 * 3, 0.05 * 3);\n var bba = new Box2Abs(pos, pos).extend(ext, ext);\n contentBoxes.push(bba);\n });\n contentBoxes.forEach(function (bba) {\n var bbb = null;\n [bba.p0.x, bba.p1.x].forEach(function (x) {\n [bba.p0.y, bba.p1.y].forEach(function (y) {\n var v = new Vec2(x, y);\n var p = new Vec2(Vec2.dot(v, d), Vec2.dot(v, d.rotateSC(1, 0)));\n bbb = !bbb ? new Box2Abs(p, p) : bbb.include(p);\n });\n });\n braketBox = !braketBox ? bbb : Box2Abs.union(braketBox, bbb);\n });\n var vext = new Vec2(0.2, 0.4);\n if (braketBox) braketBox = braketBox.extend(vext, vext);\n sGroup.bracketBox = braketBox;\n }\n }, {\n key: \"getBracketParameters\",\n value: function getBracketParameters(mol, crossBondsPerAtom, atomSet, bb, d, n) {\n var brackets = [];\n var crossBondsPerAtomValues = Object.values(crossBondsPerAtom);\n var crossBonds = crossBondsPerAtomValues.flat();\n if (crossBonds.length < 2) {\n (function () {\n d = d || new Vec2(1, 0);\n n = n || d.rotateSC(1, 0);\n var bracketWidth = Math.min(0.25, bb.sz().x * 0.3);\n var cl = Vec2.lc2(d, bb.p0.x, n, 0.5 * (bb.p0.y + bb.p1.y));\n var cr = Vec2.lc2(d, bb.p1.x, n, 0.5 * (bb.p0.y + bb.p1.y));\n var bracketHeight = bb.sz().y;\n brackets.push(new SGroupBracketParams(cl, d.negated(), bracketWidth, bracketHeight), new SGroupBracketParams(cr, d, bracketWidth, bracketHeight));\n })();\n } else if (crossBonds.length === 2 && crossBondsPerAtomValues.length === 2) {\n (function () {\n var b1 = mol.bonds.get(crossBonds[0]);\n var b2 = mol.bonds.get(crossBonds[1]);\n var cl0 = b1.getCenter(mol);\n var cr0 = b2.getCenter(mol);\n var dr = Vec2.diff(cr0, cl0).normalized();\n var dl = dr.negated();\n var bracketWidth = 0.25;\n var bracketHeight = 1.5;\n brackets.push(new SGroupBracketParams(cl0.addScaled(dl, 0), dl, bracketWidth, bracketHeight), new SGroupBracketParams(cr0.addScaled(dr, 0), dr, bracketWidth, bracketHeight));\n })();\n } else {\n (function () {\n for (var i = 0; i < crossBonds.length; ++i) {\n var b = mol.bonds.get(crossBonds[i]);\n var c = b.getCenter(mol);\n var d = atomSet.has(b.begin) ? b.getDir(mol) : b.getDir(mol).negated();\n brackets.push(new SGroupBracketParams(c, d, 0.2, 1.0));\n }\n })();\n }\n return brackets;\n }\n }, {\n key: \"getObjBBox\",\n value: function getObjBBox(atoms, mol) {\n var a0 = mol.atoms.get(atoms[0]).pp;\n var bb = new Box2Abs(a0, a0);\n for (var i = 1; i < atoms.length; ++i) {\n var aid = atoms[i];\n var atom = mol.atoms.get(aid);\n var p = atom.pp;\n bb = bb.include(p);\n }\n return bb;\n }\n }, {\n key: \"getAtoms\",\n value: function getAtoms(mol, sg) {\n if (!sg.allAtoms) return sg.atoms;\n var atoms = [];\n mol.atoms.forEach(function (_atom, aid) {\n atoms.push(aid);\n });\n return atoms;\n }\n }, {\n key: \"getBonds\",\n value: function getBonds(mol, sg) {\n var atoms = SGroup.getAtoms(mol, sg);\n var bonds = [];\n mol.bonds.forEach(function (bond, bid) {\n if (atoms.indexOf(bond.begin) >= 0 && atoms.indexOf(bond.end) >= 0) bonds.push(bid);\n });\n return bonds;\n }\n }, {\n key: \"prepareMulForSaving\",\n value: function prepareMulForSaving(sgroup, mol) {\n sgroup.atoms.sort(function (a, b) {\n return a - b;\n });\n sgroup.atomSet = new Pile(sgroup.atoms);\n sgroup.parentAtomSet = new Pile(sgroup.atomSet);\n var inBonds = [];\n var xBonds = [];\n mol.bonds.forEach(function (bond, bid) {\n if (sgroup.parentAtomSet.has(bond.begin) && sgroup.parentAtomSet.has(bond.end)) inBonds.push(bid);else if (sgroup.parentAtomSet.has(bond.begin) || sgroup.parentAtomSet.has(bond.end)) xBonds.push(bid);\n });\n if (xBonds.length !== 0 && xBonds.length !== 2) throw Error('Unsupported cross-bonds number');\n var xAtom1 = -1;\n var xAtom2 = -1;\n var crossBond = null;\n if (xBonds.length === 2) {\n var bond1 = mol.bonds.get(xBonds[0]);\n xAtom1 = sgroup.parentAtomSet.has(bond1.begin) ? bond1.begin : bond1.end;\n var bond2 = mol.bonds.get(xBonds[1]);\n xAtom2 = sgroup.parentAtomSet.has(bond2.begin) ? bond2.begin : bond2.end;\n crossBond = bond2;\n }\n var tailAtom = xAtom2;\n var newAtoms = [];\n var _loop = function _loop() {\n var amap = {};\n sgroup.atoms.forEach(function (aid) {\n var atom = mol.atoms.get(aid);\n var aid2 = mol.atoms.add(new Atom(atom));\n newAtoms.push(aid2);\n sgroup.atomSet.add(aid2);\n amap[aid] = aid2;\n });\n inBonds.forEach(function (bid) {\n var bond = mol.bonds.get(bid);\n var newBond = new Bond(bond);\n newBond.begin = amap[newBond.begin];\n newBond.end = amap[newBond.end];\n mol.bonds.add(newBond);\n });\n if (crossBond !== null) {\n newCrossBond = new Bond(crossBond);\n newCrossBond.begin = tailAtom;\n newCrossBond.end = amap[xAtom1];\n mol.bonds.add(newCrossBond);\n tailAtom = amap[xAtom2];\n }\n };\n for (var j = 0; j < sgroup.data.mul - 1; j++) {\n var newCrossBond;\n _loop();\n }\n if (tailAtom >= 0) {\n var xBond2 = mol.bonds.get(xBonds[1]);\n if (xBond2.begin === xAtom2) xBond2.begin = tailAtom;else xBond2.end = tailAtom;\n }\n sgroup.bonds = xBonds;\n newAtoms.forEach(function (aid) {\n mol.sGroupForest.getPathToRoot(sgroup.id).reverse().forEach(function (sgid) {\n mol.atomAddToSGroup(sgid, aid);\n });\n });\n }\n }, {\n key: \"getMassCentre\",\n value: function getMassCentre(mol, atoms) {\n var c = new Vec2();\n for (var i = 0; i < atoms.length; ++i) {\n c = c.addScaled(mol.atoms.get(atoms[i]).pp, 1.0 / atoms.length);\n }\n return c;\n }\n }]);\n return SGroup;\n}();\n_defineProperty(SGroup, \"TYPES\", {\n SUP: 'SUP',\n MUL: 'MUL',\n SRU: 'SRU',\n MON: 'MON',\n MER: 'MER',\n COP: 'COP',\n CRO: 'CRO',\n MOD: 'MOD',\n GRA: 'GRA',\n COM: 'COM',\n MIX: 'MIX',\n FOR: 'FOR',\n DAT: 'DAT',\n ANY: 'ANY',\n GEN: 'GEN'\n});\nfunction descriptorIntersects(sgroups, topLeftPoint) {\n return sgroups.some(function (sg) {\n if (!sg.pp) return false;\n var sgBottomRightPoint = sg.pp.add(new Vec2(0.5, 0.5));\n var bottomRightPoint = topLeftPoint.add(new Vec2(0.5, 0.5));\n return Box2Abs.segmentIntersection(sg.pp, sgBottomRightPoint, topLeftPoint, bottomRightPoint);\n });\n}\n\nvar SGroupForest = function () {\n function SGroupForest() {\n _classCallCheck(this, SGroupForest);\n _defineProperty(this, \"parent\", void 0);\n _defineProperty(this, \"children\", void 0);\n _defineProperty(this, \"atomSets\", void 0);\n this.parent = new Map();\n this.children = new Map();\n this.children.set(-1, []);\n this.atomSets = new Map();\n }\n _createClass(SGroupForest, [{\n key: \"getSGroupsBFS\",\n value: function getSGroupsBFS() {\n var order = [];\n var queue = Array.from(this.children.get(-1));\n while (queue.length > 0) {\n var id = queue.shift();\n if (typeof id !== 'number') {\n break;\n }\n var children = this.children.get(id);\n if (typeof children === 'undefined') {\n break;\n }\n children.forEach(function (id) {\n queue.push(id);\n });\n order.push(id);\n }\n return order;\n }\n }, {\n key: \"getAtomSetRelations\",\n value: function getAtomSetRelations(newId, atoms) {\n var _this = this;\n var isStrictSuperset = new Map();\n var isSubset = new Map();\n this.atomSets[\"delete\"](newId);\n this.atomSets.forEach(function (atomSet, id) {\n isSubset.set(id, atomSet.isSuperset(atoms));\n isStrictSuperset.set(id, atoms.isSuperset(atomSet) && !atomSet.equals(atoms));\n });\n var parents = Array.from(this.atomSets.keys()).filter(function (sgid) {\n if (!isSubset.get(sgid)) {\n return false;\n }\n var childs = _this.children.get(sgid);\n return childs && childs.findIndex(function (childId) {\n return isSubset.get(childId);\n }) < 0;\n });\n var children = Array.from(this.atomSets.keys()).filter(function (id) {\n return isStrictSuperset.get(id) && !isStrictSuperset.get(_this.parent.get(id));\n });\n return {\n children: children,\n parent: parents.length === 0 ? -1 : parents[0]\n };\n }\n }, {\n key: \"getPathToRoot\",\n value: function getPathToRoot(sgid) {\n var path = [];\n for (var id = sgid; id >= 0; id = this.parent.get(id)) {\n console.assert(path.indexOf(id) < 0, 'SGroupForest: loop detected');\n path.push(id);\n }\n return path;\n }\n }, {\n key: \"insert\",\n value: function insert(_ref, parent, children) {\n var _this2 = this,\n _this$children$get;\n var id = _ref.id,\n atoms = _ref.atoms;\n console.assert(!this.parent.has(id), 'sgid already present in the forest');\n console.assert(!this.children.has(id), 'sgid already present in the forest');\n if (!parent || !children) {\n var guess = this.getAtomSetRelations(id, new Pile(atoms));\n parent = guess.parent;\n children = guess.children;\n }\n children.forEach(function (childId) {\n _this2.resetParentLink(childId, id);\n });\n this.children.set(id, children);\n this.parent.set(id, parent);\n (_this$children$get = this.children.get(parent)) === null || _this$children$get === void 0 ? void 0 : _this$children$get.push(id);\n this.atomSets.set(id, new Pile(atoms));\n return {\n parent: parent,\n children: children\n };\n }\n }, {\n key: \"resetParentLink\",\n value: function resetParentLink(childId, id) {\n var parentId = this.parent.get(childId);\n if (typeof parentId === 'undefined') {\n return;\n }\n var childs = this.children.get(parentId);\n if (!childs) {\n return;\n }\n var childIndex = childs.indexOf(childId);\n childs.splice(childIndex, 1);\n this.parent.set(childId, id);\n }\n }, {\n key: \"remove\",\n value: function remove(id) {\n var _this$children$get2,\n _this3 = this;\n console.assert(this.parent.has(id), 'sgid is not in the forest');\n console.assert(this.children.has(id), 'sgid is not in the forest');\n var parentId = this.parent.get(id);\n var childs = this.children.get(parentId);\n (_this$children$get2 = this.children.get(id)) === null || _this$children$get2 === void 0 ? void 0 : _this$children$get2.forEach(function (childId) {\n var _this3$children$get;\n _this3.parent.set(childId, parentId);\n (_this3$children$get = _this3.children.get(parentId)) === null || _this3$children$get === void 0 ? void 0 : _this3$children$get.push(childId);\n });\n var i = childs.indexOf(id);\n childs.splice(i, 1);\n this.children[\"delete\"](id);\n this.parent[\"delete\"](id);\n this.atomSets[\"delete\"](id);\n }\n }]);\n return SGroupForest;\n}();\nfunction checkOverlapping(struct, atoms) {\n var sgroups = atoms.reduce(function (res, aid) {\n var atom = struct.atoms.get(aid);\n return res.union(atom.sgs);\n }, new Pile());\n return Array.from(sgroups).some(function (sid) {\n var sg = struct.sgroups.get(sid);\n if (sg.type === 'DAT') return false;\n var sgAtoms = SGroup.getAtoms(struct, sg);\n return sgAtoms.length < atoms.length ? sgAtoms.findIndex(function (aid) {\n return atoms.indexOf(aid) === -1;\n }) >= 0 : atoms.findIndex(function (aid) {\n return sgAtoms.indexOf(aid) === -1;\n }) >= 0;\n });\n}\n\nvar SimpleObjectMode;\n(function (SimpleObjectMode) {\n SimpleObjectMode[\"ellipse\"] = \"ellipse\";\n SimpleObjectMode[\"rectangle\"] = \"rectangle\";\n SimpleObjectMode[\"line\"] = \"line\";\n})(SimpleObjectMode || (SimpleObjectMode = {}));\nvar SimpleObject = function () {\n function SimpleObject(params) {\n _classCallCheck(this, SimpleObject);\n _defineProperty(this, \"pos\", void 0);\n _defineProperty(this, \"mode\", void 0);\n params = params || {};\n this.pos = [];\n if (params.pos) {\n for (var i = 0; i < params.pos.length; i++) {\n var currentP = params.pos[i];\n this.pos[i] = currentP ? new Vec2(params.pos[i]) : new Vec2();\n }\n }\n this.mode = params.mode;\n }\n _createClass(SimpleObject, [{\n key: \"clone\",\n value: function clone() {\n return new SimpleObject(this);\n }\n }, {\n key: \"center\",\n value: function center() {\n switch (this.mode) {\n case SimpleObjectMode.rectangle:\n {\n return Vec2.centre(this.pos[0], this.pos[1]);\n }\n default:\n return this.pos[0];\n }\n }\n }]);\n return SimpleObject;\n}();\n\nfunction _createForOfIteratorHelper$2(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen); }\nfunction _arrayLikeToArray$2(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\nvar Pool = function (_Map) {\n _inherits(Pool, _Map);\n var _super = _createSuper$1(Pool);\n function Pool() {\n var _this;\n _classCallCheck(this, Pool);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"nextId\", 0);\n return _this;\n }\n _createClass(Pool, [{\n key: \"add\",\n value: function add(item) {\n var id = this.nextId++;\n _get(_getPrototypeOf(Pool.prototype), \"set\", this).call(this, id, item);\n return id;\n }\n }, {\n key: \"newId\",\n value: function newId() {\n return this.nextId++;\n }\n }, {\n key: \"keyOf\",\n value: function keyOf(item) {\n var _iterator = _createForOfIteratorHelper$2(this.entries()),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n key = _step$value[0],\n value = _step$value[1];\n if (value === item) return key;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return null;\n }\n }, {\n key: \"find\",\n value: function find(predicate) {\n var _iterator2 = _createForOfIteratorHelper$2(this.entries()),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _step2$value = _slicedToArray(_step2.value, 2),\n key = _step2$value[0],\n value = _step2$value[1];\n if (predicate(key, value)) return key;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return null;\n }\n }, {\n key: \"filter\",\n value: function filter(predicate) {\n return new Pool(Array.from(this).filter(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n return predicate(key, value);\n }));\n }\n }, {\n key: \"some\",\n value: function some(predicate) {\n var _iterator3 = _createForOfIteratorHelper$2(this.values()),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var value = _step3.value;\n if (predicate(value)) {\n return true;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return false;\n }\n }]);\n return Pool;\n}( _wrapNativeSuper(Map));\n\nfunction arrayAddIfMissing(array, item) {\n for (var i = 0; i < array.length; ++i) {\n if (array[i] === item) return false;\n }\n array.push(item);\n return true;\n}\nvar Struct = function () {\n function Struct() {\n _classCallCheck(this, Struct);\n _defineProperty(this, \"atoms\", void 0);\n _defineProperty(this, \"bonds\", void 0);\n _defineProperty(this, \"sgroups\", void 0);\n _defineProperty(this, \"halfBonds\", void 0);\n _defineProperty(this, \"loops\", void 0);\n _defineProperty(this, \"isReaction\", void 0);\n _defineProperty(this, \"rxnArrows\", void 0);\n _defineProperty(this, \"rxnPluses\", void 0);\n _defineProperty(this, \"frags\", void 0);\n _defineProperty(this, \"rgroups\", void 0);\n _defineProperty(this, \"name\", void 0);\n _defineProperty(this, \"sGroupForest\", void 0);\n _defineProperty(this, \"simpleObjects\", void 0);\n _defineProperty(this, \"texts\", void 0);\n this.atoms = new Pool();\n this.bonds = new Pool();\n this.sgroups = new Pool();\n this.halfBonds = new Pool();\n this.loops = new Pool();\n this.isReaction = false;\n this.rxnArrows = new Pool();\n this.rxnPluses = new Pool();\n this.frags = new Pool();\n this.rgroups = new Pool();\n this.name = '';\n this.sGroupForest = new SGroupForest();\n this.simpleObjects = new Pool();\n this.texts = new Pool();\n }\n _createClass(Struct, [{\n key: \"hasRxnProps\",\n value: function hasRxnProps() {\n return !!(this.atoms.find(function (_aid, atom) {\n return atom.hasRxnProps();\n }) || this.bonds.find(function (_bid, bond) {\n return bond.hasRxnProps();\n }));\n }\n }, {\n key: \"hasRxnArrow\",\n value: function hasRxnArrow() {\n return this.rxnArrows.size === 1;\n }\n }, {\n key: \"hasRxnPluses\",\n value: function hasRxnPluses() {\n return this.rxnPluses.size > 0;\n }\n }, {\n key: \"isRxn\",\n value: function isRxn() {\n return this.hasRxnArrow() || this.hasRxnPluses();\n }\n }, {\n key: \"isBlank\",\n value: function isBlank() {\n return this.atoms.size === 0 && this.rxnArrows.size === 0 && this.rxnPluses.size === 0 && this.simpleObjects.size === 0 && this.texts.size === 0;\n }\n }, {\n key: \"clone\",\n value: function clone(atomSet, bondSet, dropRxnSymbols, aidMap, simpleObjectsSet, textsSet) {\n return this.mergeInto(new Struct(), atomSet, bondSet, dropRxnSymbols, false, aidMap, simpleObjectsSet, textsSet);\n }\n }, {\n key: \"getScaffold\",\n value: function getScaffold() {\n var _this = this;\n var atomSet = new Pile();\n this.atoms.forEach(function (_atom, aid) {\n atomSet.add(aid);\n });\n this.rgroups.forEach(function (rg) {\n rg.frags.forEach(function (_fnum, fid) {\n _this.atoms.forEach(function (atom, aid) {\n if (atom.fragment === fid) atomSet[\"delete\"](aid);\n });\n });\n });\n return this.clone(atomSet);\n }\n }, {\n key: \"getFragmentIds\",\n value: function getFragmentIds(fid) {\n var atomSet = new Pile();\n this.atoms.forEach(function (atom, aid) {\n if (atom.fragment === fid) atomSet.add(aid);\n });\n return atomSet;\n }\n }, {\n key: \"getFragment\",\n value: function getFragment(fid) {\n return this.clone(this.getFragmentIds(fid), null, true);\n }\n }, {\n key: \"mergeInto\",\n value: function mergeInto(cp, atomSet, bondSet, dropRxnSymbols, keepAllRGroups, aidMap, simpleObjectsSet, textsSet) {\n var _this2 = this;\n atomSet = atomSet || new Pile(this.atoms.keys());\n bondSet = bondSet || new Pile(this.bonds.keys());\n simpleObjectsSet = simpleObjectsSet || new Pile(this.simpleObjects.keys());\n textsSet = textsSet || new Pile(this.texts.keys());\n aidMap = aidMap || new Map();\n bondSet = bondSet.filter(function (bid) {\n var bond = _this2.bonds.get(bid);\n return atomSet.has(bond.begin) && atomSet.has(bond.end);\n });\n var fidMask = new Pile();\n this.atoms.forEach(function (atom, aid) {\n if (atomSet.has(aid)) fidMask.add(atom.fragment);\n });\n var fidMap = new Map();\n this.frags.forEach(function (_frag, fid) {\n if (fidMask.has(fid)) fidMap.set(fid, cp.frags.add(null));\n });\n var rgroupsIds = [];\n this.rgroups.forEach(function (rgroup, rgid) {\n var keepGroup = keepAllRGroups;\n if (!keepGroup) {\n rgroup.frags.forEach(function (_fnum, fid) {\n rgroupsIds.push(fid);\n if (fidMask.has(fid)) keepGroup = true;\n });\n if (!keepGroup) return;\n }\n var rg = cp.rgroups.get(rgid);\n if (rg) {\n rgroup.frags.forEach(function (_fnum, fid) {\n rgroupsIds.push(fid);\n if (fidMask.has(fid)) rg.frags.add(fidMap.get(fid));\n });\n } else {\n cp.rgroups.set(rgid, rgroup.clone(fidMap));\n }\n });\n this.atoms.forEach(function (atom, aid) {\n if (atomSet.has(aid) && rgroupsIds.indexOf(atom.fragment) === -1) aidMap.set(aid, cp.atoms.add(atom.clone(fidMap)));\n });\n this.atoms.forEach(function (atom, aid) {\n if (atomSet.has(aid) && rgroupsIds.indexOf(atom.fragment) !== -1) aidMap.set(aid, cp.atoms.add(atom.clone(fidMap)));\n });\n fidMap.forEach(function (newfid, oldfid) {\n var frags = JSON.parse(JSON.stringify(_this2.frags.get(oldfid)));\n if (frags && Object.keys(frags).length !== 0) {\n cp.frags.set(newfid, _this2.frags.get(oldfid).clone(aidMap));\n }\n });\n var bidMap = new Map();\n this.bonds.forEach(function (bond, bid) {\n if (bondSet.has(bid)) bidMap.set(bid, cp.bonds.add(bond.clone(aidMap)));\n });\n this.sgroups.forEach(function (sg) {\n if (sg.atoms.some(function (aid) {\n return !atomSet.has(aid);\n })) return;\n sg = SGroup.clone(sg, aidMap);\n var id = cp.sgroups.add(sg);\n sg.id = id;\n sg.atoms.forEach(function (aid) {\n cp.atoms.get(aid).sgs.add(id);\n });\n if (sg.type === 'DAT') cp.sGroupForest.insert(sg, -1, []);else cp.sGroupForest.insert(sg);\n });\n simpleObjectsSet.forEach(function (soid) {\n cp.simpleObjects.add(_this2.simpleObjects.get(soid).clone());\n });\n textsSet.forEach(function (id) {\n cp.texts.add(_this2.texts.get(id).clone());\n });\n if (!dropRxnSymbols) {\n cp.isReaction = this.isReaction;\n this.rxnArrows.forEach(function (item) {\n cp.rxnArrows.add(item.clone());\n });\n this.rxnPluses.forEach(function (item) {\n cp.rxnPluses.add(item.clone());\n });\n }\n return cp;\n }\n }, {\n key: \"prepareLoopStructure\",\n value: function prepareLoopStructure() {\n this.initHalfBonds();\n this.initNeighbors();\n this.updateHalfBonds(Array.from(this.atoms.keys()));\n this.sortNeighbors(Array.from(this.atoms.keys()));\n this.findLoops();\n }\n }, {\n key: \"atomAddToSGroup\",\n value: function atomAddToSGroup(sgid, aid) {\n SGroup.addAtom(this.sgroups.get(sgid), aid);\n this.atoms.get(aid).sgs.add(sgid);\n }\n }, {\n key: \"calcConn\",\n value: function calcConn(atom) {\n var conn = 0;\n for (var i = 0; i < atom.neighbors.length; ++i) {\n var hb = this.halfBonds.get(atom.neighbors[i]);\n var bond = this.bonds.get(hb.bid);\n switch (bond.type) {\n case Bond.PATTERN.TYPE.SINGLE:\n conn += 1;\n break;\n case Bond.PATTERN.TYPE.DOUBLE:\n conn += 2;\n break;\n case Bond.PATTERN.TYPE.TRIPLE:\n conn += 3;\n break;\n case Bond.PATTERN.TYPE.DATIVE:\n break;\n case Bond.PATTERN.TYPE.HYDROGEN:\n break;\n case Bond.PATTERN.TYPE.AROMATIC:\n if (atom.neighbors.length === 1) return [-1, true];\n return [atom.neighbors.length, true];\n default:\n return [-1, false];\n }\n }\n return [conn, false];\n }\n }, {\n key: \"findBondId\",\n value: function findBondId(begin, end) {\n return this.bonds.find(function (_bid, bond) {\n return bond.begin === begin && bond.end === end || bond.begin === end && bond.end === begin;\n });\n }\n }, {\n key: \"initNeighbors\",\n value: function initNeighbors() {\n var _this3 = this;\n this.atoms.forEach(function (atom) {\n atom.neighbors = [];\n });\n this.bonds.forEach(function (bond) {\n var a1 = _this3.atoms.get(bond.begin);\n var a2 = _this3.atoms.get(bond.end);\n a1.neighbors.push(bond.hb1);\n a2.neighbors.push(bond.hb2);\n });\n }\n }, {\n key: \"bondInitHalfBonds\",\n value: function bondInitHalfBonds(bid, bond) {\n bond = bond || this.bonds.get(bid);\n bond.hb1 = 2 * bid;\n bond.hb2 = 2 * bid + 1;\n this.halfBonds.set(bond.hb1, new HalfBond(bond.begin, bond.end, bid));\n this.halfBonds.set(bond.hb2, new HalfBond(bond.end, bond.begin, bid));\n var hb1 = this.halfBonds.get(bond.hb1);\n var hb2 = this.halfBonds.get(bond.hb2);\n hb1.contra = bond.hb2;\n hb2.contra = bond.hb1;\n }\n }, {\n key: \"halfBondUpdate\",\n value: function halfBondUpdate(hbid) {\n var hb = this.halfBonds.get(hbid);\n var p1 = this.atoms.get(hb.begin).pp;\n var p2 = this.atoms.get(hb.end).pp;\n var d = Vec2.diff(p2, p1).normalized();\n hb.dir = Vec2.dist(p2, p1) > 1e-4 ? d : new Vec2(1, 0);\n hb.norm = hb.dir.turnLeft();\n hb.ang = hb.dir.oxAngle();\n if (hb.loop < 0) hb.loop = -1;\n }\n }, {\n key: \"initHalfBonds\",\n value: function initHalfBonds() {\n var _this4 = this;\n this.halfBonds.clear();\n this.bonds.forEach(function (bond, bid) {\n _this4.bondInitHalfBonds(bid, bond);\n });\n }\n }, {\n key: \"setHbNext\",\n value: function setHbNext(hbid, next) {\n this.halfBonds.get(this.halfBonds.get(hbid).contra).next = next;\n }\n }, {\n key: \"halfBondSetAngle\",\n value: function halfBondSetAngle(hbid, left) {\n var hb = this.halfBonds.get(hbid);\n var hbl = this.halfBonds.get(left);\n hbl.rightCos = Vec2.dot(hbl.dir, hb.dir);\n hb.leftCos = Vec2.dot(hbl.dir, hb.dir);\n hbl.rightSin = Vec2.cross(hbl.dir, hb.dir);\n hb.leftSin = Vec2.cross(hbl.dir, hb.dir);\n hb.leftNeighbor = left;\n hbl.rightNeighbor = hbid;\n }\n }, {\n key: \"atomAddNeighbor\",\n value: function atomAddNeighbor(hbid) {\n var hb = this.halfBonds.get(hbid);\n var atom = this.atoms.get(hb.begin);\n for (var i = 0; i < atom.neighbors.length; ++i) {\n if (this.halfBonds.get(atom.neighbors[i]).ang > hb.ang) break;\n }\n atom.neighbors.splice(i, 0, hbid);\n var ir = atom.neighbors[(i + 1) % atom.neighbors.length];\n var il = atom.neighbors[(i + atom.neighbors.length - 1) % atom.neighbors.length];\n this.setHbNext(il, hbid);\n this.setHbNext(hbid, ir);\n this.halfBondSetAngle(hbid, il);\n this.halfBondSetAngle(ir, hbid);\n }\n }, {\n key: \"atomSortNeighbors\",\n value: function atomSortNeighbors(aid) {\n var _this5 = this;\n var atom = this.atoms.get(aid);\n var halfBonds = this.halfBonds;\n atom.neighbors.sort(function (nei, nei2) {\n return halfBonds.get(nei).ang - halfBonds.get(nei2).ang;\n }).forEach(function (nei, i) {\n var nextNei = atom.neighbors[(i + 1) % atom.neighbors.length];\n _this5.halfBonds.get(_this5.halfBonds.get(nei).contra).next = nextNei;\n _this5.halfBondSetAngle(nextNei, nei);\n });\n }\n }, {\n key: \"sortNeighbors\",\n value: function sortNeighbors(list) {\n var _this6 = this;\n if (!list) {\n this.atoms.forEach(function (_atom, aid) {\n _this6.atomSortNeighbors(aid);\n });\n } else {\n list.forEach(function (aid) {\n _this6.atomSortNeighbors(aid);\n });\n }\n }\n }, {\n key: \"atomUpdateHalfBonds\",\n value: function atomUpdateHalfBonds(aid) {\n var _this7 = this;\n this.atoms.get(aid).neighbors.forEach(function (hbid) {\n _this7.halfBondUpdate(hbid);\n _this7.halfBondUpdate(_this7.halfBonds.get(hbid).contra);\n });\n }\n }, {\n key: \"updateHalfBonds\",\n value: function updateHalfBonds(list) {\n var _this8 = this;\n if (!list) {\n this.atoms.forEach(function (_atom, aid) {\n _this8.atomUpdateHalfBonds(aid);\n });\n } else {\n list.forEach(function (aid) {\n _this8.atomUpdateHalfBonds(aid);\n });\n }\n }\n }, {\n key: \"sGroupsRecalcCrossBonds\",\n value: function sGroupsRecalcCrossBonds() {\n var _this9 = this;\n this.sgroups.forEach(function (sg) {\n sg.xBonds = [];\n sg.neiAtoms = [];\n });\n this.bonds.forEach(function (bond, bid) {\n var a1 = _this9.atoms.get(bond.begin);\n var a2 = _this9.atoms.get(bond.end);\n a1.sgs.forEach(function (sgid) {\n if (!a2.sgs.has(sgid)) {\n var sg = _this9.sgroups.get(sgid);\n sg.xBonds.push(bid);\n arrayAddIfMissing(sg.neiAtoms, bond.end);\n }\n });\n a2.sgs.forEach(function (sgid) {\n if (!a1.sgs.has(sgid)) {\n var sg = _this9.sgroups.get(sgid);\n sg.xBonds.push(bid);\n arrayAddIfMissing(sg.neiAtoms, bond.begin);\n }\n });\n });\n }\n }, {\n key: \"sGroupDelete\",\n value: function sGroupDelete(sgid) {\n var _this10 = this;\n this.sgroups.get(sgid).atoms.forEach(function (atom) {\n _this10.atoms.get(atom).sgs[\"delete\"](sgid);\n });\n this.sGroupForest.remove(sgid);\n this.sgroups[\"delete\"](sgid);\n }\n }, {\n key: \"atomSetPos\",\n value: function atomSetPos(id, pp) {\n var item = this.atoms.get(id);\n item.pp = pp;\n }\n }, {\n key: \"rxnPlusSetPos\",\n value: function rxnPlusSetPos(id, pp) {\n var item = this.rxnPluses.get(id);\n item.pp = pp;\n }\n }, {\n key: \"rxnArrowSetPos\",\n value: function rxnArrowSetPos(id, pp) {\n var item = this.rxnArrows.get(id);\n if (item) {\n item.pp = pp;\n }\n }\n }, {\n key: \"simpleObjectSetPos\",\n value: function simpleObjectSetPos(id, pos) {\n var item = this.simpleObjects.get(id);\n item.pos = pos;\n }\n }, {\n key: \"textSetPosition\",\n value: function textSetPosition(id, position) {\n var item = this.texts.get(id);\n if (item) {\n item.position = position;\n }\n }\n }, {\n key: \"getCoordBoundingBox\",\n value: function getCoordBoundingBox(atomSet) {\n var bb = null;\n function extend(pp) {\n if (!bb) {\n bb = {\n min: pp,\n max: pp\n };\n } else {\n bb.min = Vec2.min(bb.min, pp);\n bb.max = Vec2.max(bb.max, pp);\n }\n }\n var global = !atomSet || atomSet.size === 0;\n this.atoms.forEach(function (atom, aid) {\n if (global || atomSet.has(aid)) extend(atom.pp);\n });\n if (global) {\n this.rxnPluses.forEach(function (item) {\n extend(item.pp);\n });\n this.rxnArrows.forEach(function (item) {\n extend(item.pp);\n });\n }\n if (!bb && global) {\n bb = {\n min: new Vec2(0, 0),\n max: new Vec2(1, 1)\n };\n }\n return bb;\n }\n }, {\n key: \"getCoordBoundingBoxObj\",\n value: function getCoordBoundingBoxObj() {\n var bb = null;\n function extend(pp) {\n if (!bb) {\n bb = {\n min: new Vec2(pp),\n max: new Vec2(pp)\n };\n } else {\n bb.min = Vec2.min(bb.min, pp);\n bb.max = Vec2.max(bb.max, pp);\n }\n }\n this.atoms.forEach(function (atom) {\n extend(atom.pp);\n });\n return bb;\n }\n }, {\n key: \"getBondLengthData\",\n value: function getBondLengthData() {\n var _this11 = this;\n var totalLength = 0;\n var cnt = 0;\n this.bonds.forEach(function (bond) {\n totalLength += Vec2.dist(_this11.atoms.get(bond.begin).pp, _this11.atoms.get(bond.end).pp);\n cnt++;\n });\n return {\n cnt: cnt,\n totalLength: totalLength\n };\n }\n }, {\n key: \"getAvgBondLength\",\n value: function getAvgBondLength() {\n var bld = this.getBondLengthData();\n return bld.cnt > 0 ? bld.totalLength / bld.cnt : -1;\n }\n }, {\n key: \"getAvgClosestAtomDistance\",\n value: function getAvgClosestAtomDistance() {\n var totalDist = 0;\n var minDist;\n var dist = 0;\n var keys = Array.from(this.atoms.keys());\n var k;\n var j;\n for (k = 0; k < keys.length; ++k) {\n minDist = -1;\n for (j = 0; j < keys.length; ++j) {\n if (j === k) continue;\n dist = Vec2.dist(this.atoms.get(keys[j]).pp, this.atoms.get(keys[k]).pp);\n if (minDist < 0 || minDist > dist) minDist = dist;\n }\n totalDist += minDist;\n }\n return keys.length > 0 ? totalDist / keys.length : -1;\n }\n }, {\n key: \"checkBondExists\",\n value: function checkBondExists(begin, end) {\n var key = this.bonds.find(function (_bid, bond) {\n return bond.begin === begin && bond.end === end || bond.end === begin && bond.begin === end;\n });\n return key !== undefined;\n }\n }, {\n key: \"findConnectedComponent\",\n value: function findConnectedComponent(firstaid) {\n var _this12 = this;\n var list = [firstaid];\n var ids = new Pile();\n while (list.length > 0) {\n var aid = list.pop();\n ids.add(aid);\n var atom = this.atoms.get(aid);\n atom.neighbors.forEach(function (nei) {\n var neiId = _this12.halfBonds.get(nei).end;\n if (!ids.has(neiId)) list.push(neiId);\n });\n }\n return ids;\n }\n }, {\n key: \"findConnectedComponents\",\n value: function findConnectedComponents(discardExistingFragments) {\n var _this13 = this;\n if (!this.halfBonds.size) {\n this.initHalfBonds();\n this.initNeighbors();\n this.updateHalfBonds(Array.from(this.atoms.keys()));\n this.sortNeighbors(Array.from(this.atoms.keys()));\n }\n var addedAtoms = new Pile();\n var components = [];\n this.atoms.forEach(function (atom, aid) {\n if ((discardExistingFragments || atom.fragment < 0) && !addedAtoms.has(aid)) {\n var component = _this13.findConnectedComponent(aid);\n components.push(component);\n addedAtoms = addedAtoms.union(component);\n }\n });\n return components;\n }\n }, {\n key: \"markFragment\",\n value: function markFragment(idSet) {\n var _this14 = this;\n var frag = new Fragment();\n var fid = this.frags.add(frag);\n idSet.forEach(function (aid) {\n var atom = _this14.atoms.get(aid);\n if (atom.stereoLabel) frag.updateStereoAtom(_this14, aid, fid, true);\n atom.fragment = fid;\n });\n }\n }, {\n key: \"markFragments\",\n value: function markFragments() {\n var _this15 = this;\n var components = this.findConnectedComponents();\n components.forEach(function (comp) {\n _this15.markFragment(comp);\n });\n }\n }, {\n key: \"scale\",\n value: function scale(_scale) {\n if (_scale === 1) return;\n this.atoms.forEach(function (atom) {\n atom.pp = atom.pp.scaled(_scale);\n });\n this.rxnPluses.forEach(function (item) {\n item.pp = item.pp.scaled(_scale);\n });\n this.rxnArrows.forEach(function (item) {\n item.pp = item.pp.scaled(_scale);\n });\n this.sgroups.forEach(function (item) {\n item.pp = item.pp ? item.pp.scaled(_scale) : null;\n });\n }\n }, {\n key: \"rescale\",\n value: function rescale() {\n var avg = this.getAvgBondLength();\n if (avg < 0 && !this.isReaction)\n avg = this.getAvgClosestAtomDistance();\n if (avg < 1e-3) avg = 1;\n var scale = 1 / avg;\n this.scale(scale);\n }\n }, {\n key: \"loopHasSelfIntersections\",\n value: function loopHasSelfIntersections(hbs) {\n for (var i = 0; i < hbs.length; ++i) {\n var hbi = this.halfBonds.get(hbs[i]);\n var ai = this.atoms.get(hbi.begin).pp;\n var bi = this.atoms.get(hbi.end).pp;\n var set = new Pile([hbi.begin, hbi.end]);\n for (var j = i + 2; j < hbs.length; ++j) {\n var hbj = this.halfBonds.get(hbs[j]);\n if (set.has(hbj.begin) || set.has(hbj.end)) continue;\n var aj = this.atoms.get(hbj.begin).pp;\n var bj = this.atoms.get(hbj.end).pp;\n if (Box2Abs.segmentIntersection(ai, bi, aj, bj)) return true;\n }\n }\n return false;\n }\n }, {\n key: \"partitionLoop\",\n value: function partitionLoop(loop) {\n var subloops = [];\n var continueFlag = true;\n while (continueFlag) {\n var atomToHalfBond = {};\n continueFlag = false;\n for (var l = 0; l < loop.length; ++l) {\n var hbid = loop[l];\n var aid1 = this.halfBonds.get(hbid).begin;\n var aid2 = this.halfBonds.get(hbid).end;\n if (aid2 in atomToHalfBond) {\n var s = atomToHalfBond[aid2];\n var subloop = loop.slice(s, l + 1);\n subloops.push(subloop);\n if (l < loop.length)\n loop.splice(s, l - s + 1);\n continueFlag = true;\n break;\n }\n atomToHalfBond[aid1] = l;\n }\n if (!continueFlag) subloops.push(loop);\n }\n return subloops;\n }\n }, {\n key: \"halfBondAngle\",\n value: function halfBondAngle(hbid1, hbid2) {\n var hba = this.halfBonds.get(hbid1);\n var hbb = this.halfBonds.get(hbid2);\n return Math.atan2(Vec2.cross(hba.dir, hbb.dir), Vec2.dot(hba.dir, hbb.dir));\n }\n }, {\n key: \"loopIsConvex\",\n value: function loopIsConvex(loop) {\n var _this16 = this;\n return loop.every(function (item, k, loopArr) {\n var angle = _this16.halfBondAngle(item, loopArr[(k + 1) % loopArr.length]);\n return angle <= 0;\n });\n }\n }, {\n key: \"loopIsInner\",\n value: function loopIsInner(loop) {\n var _this17 = this;\n var totalAngle = 2 * Math.PI;\n loop.forEach(function (hbida, k, loopArr) {\n var hbidb = loopArr[(k + 1) % loopArr.length];\n var hbb = _this17.halfBonds.get(hbidb);\n var angle = _this17.halfBondAngle(hbida, hbidb);\n totalAngle += hbb.contra === hbida ? Math.PI : angle;\n });\n return Math.abs(totalAngle) < Math.PI;\n }\n }, {\n key: \"findLoops\",\n value: function findLoops() {\n var _this18 = this;\n var newLoops = [];\n var bondsToMark = new Pile();\n var hbIdNext, c, loop;\n this.halfBonds.forEach(function (hb, hbId) {\n if (hb.loop !== -1) return;\n for (hbIdNext = hbId, c = 0, loop = []; c <= _this18.halfBonds.size; hbIdNext = _this18.halfBonds.get(hbIdNext).next, ++c) {\n if (!(c > 0 && hbIdNext === hbId)) {\n loop.push(hbIdNext);\n continue;\n }\n var subloops = _this18.partitionLoop(loop);\n subloops.forEach(function (loop) {\n var loopId;\n if (_this18.loopIsInner(loop) && !_this18.loopHasSelfIntersections(loop)) {\n loopId = Math.min.apply(Math, _toConsumableArray(loop));\n _this18.loops.set(loopId, new Loop(loop, _this18, _this18.loopIsConvex(loop)));\n } else {\n loopId = -2;\n }\n loop.forEach(function (hbid) {\n _this18.halfBonds.get(hbid).loop = loopId;\n bondsToMark.add(_this18.halfBonds.get(hbid).bid);\n });\n if (loopId >= 0) newLoops.push(loopId);\n });\n break;\n }\n });\n return {\n newLoops: newLoops,\n bondsToMark: Array.from(bondsToMark)\n };\n }\n }, {\n key: \"calcImplicitHydrogen\",\n value: function calcImplicitHydrogen(aid) {\n var atom = this.atoms.get(aid);\n var _this$calcConn = this.calcConn(atom),\n _this$calcConn2 = _slicedToArray(_this$calcConn, 2),\n conn = _this$calcConn2[0],\n isAromatic = _this$calcConn2[1];\n var correctConn = conn;\n atom.badConn = false;\n if (isAromatic) {\n if (atom.label === 'C' && atom.charge === 0) {\n if (conn === 3) {\n atom.implicitH = -radicalElectrons(atom.radical);\n return;\n }\n if (conn === 2) {\n atom.implicitH = 1 - radicalElectrons(atom.radical);\n return;\n }\n } else if (atom.label === 'O' && atom.charge === 0 || atom.label === 'N' && atom.charge === 0 && conn === 3 || atom.label === 'N' && atom.charge === 1 && conn === 3 || atom.label === 'S' && atom.charge === 0 && conn === 3) {\n atom.implicitH = 0;\n return;\n } else if (!atom.hasImplicitH) {\n correctConn++;\n }\n }\n if (correctConn < 0 || atom.isQuery()) {\n atom.implicitH = 0;\n return;\n }\n if (atom.explicitValence >= 0) {\n var elem = Elements.get(atom.label);\n atom.implicitH = !!elem ? atom.explicitValence - atom.calcValenceMinusHyd(correctConn) : 0;\n if (atom.implicitH < 0) {\n atom.implicitH = 0;\n atom.badConn = true;\n }\n } else {\n atom.calcValence(correctConn);\n }\n }\n }, {\n key: \"setImplicitHydrogen\",\n value: function setImplicitHydrogen(list) {\n var _this19 = this;\n this.sgroups.forEach(function (item) {\n if (item.data.fieldName === 'MRV_IMPLICIT_H') _this19.atoms.get(item.atoms[0]).hasImplicitH = true;\n });\n if (!list) {\n this.atoms.forEach(function (_atom, aid) {\n _this19.calcImplicitHydrogen(aid);\n });\n } else {\n list.forEach(function (aid) {\n if (_this19.atoms.get(aid)) {\n _this19.calcImplicitHydrogen(aid);\n }\n });\n }\n }\n }, {\n key: \"atomGetNeighbors\",\n value: function atomGetNeighbors(aid) {\n var _this$atoms$get,\n _this20 = this;\n return (_this$atoms$get = this.atoms.get(aid)) === null || _this$atoms$get === void 0 ? void 0 : _this$atoms$get.neighbors.map(function (nei) {\n var hb = _this20.halfBonds.get(nei);\n return {\n aid: hb.end,\n bid: hb.bid\n };\n });\n }\n }, {\n key: \"getComponents\",\n value: function getComponents() {\n var _this21 = this;\n var connectedComponents = this.findConnectedComponents(true);\n var barriers = [];\n var arrowPos = null;\n this.rxnArrows.forEach(function (item) {\n arrowPos = item.pp.x;\n });\n this.rxnPluses.forEach(function (item) {\n barriers.push(item.pp.x);\n });\n if (arrowPos !== null) barriers.push(arrowPos);\n barriers.sort(function (a, b) {\n return a - b;\n });\n var components = [];\n connectedComponents.forEach(function (component) {\n var bb = _this21.getCoordBoundingBox(component);\n var c = Vec2.lc2(bb.min, 0.5, bb.max, 0.5);\n var j = 0;\n while (c.x > barriers[j]) {\n ++j;\n }\n components[j] = components[j] || new Pile();\n components[j] = components[j].union(component);\n });\n var reactants = [];\n var products = [];\n components.forEach(function (component) {\n if (!component) {\n return;\n }\n var rxnFragmentType = _this21.defineRxnFragmentTypeForAtomset(component, arrowPos || 0);\n if (rxnFragmentType === 1) reactants.push(component);else products.push(component);\n });\n return {\n reactants: reactants,\n products: products\n };\n }\n }, {\n key: \"defineRxnFragmentTypeForAtomset\",\n value: function defineRxnFragmentTypeForAtomset(atomset, arrowpos) {\n var bb = this.getCoordBoundingBox(atomset);\n var c = Vec2.lc2(bb.min, 0.5, bb.max, 0.5);\n return c.x < arrowpos ? 1 : 2;\n }\n }, {\n key: \"getBondFragment\",\n value: function getBondFragment(bid) {\n var _this$bonds$get, _this$atoms$get2;\n var aid = (_this$bonds$get = this.bonds.get(bid)) === null || _this$bonds$get === void 0 ? void 0 : _this$bonds$get.begin;\n return aid && ((_this$atoms$get2 = this.atoms.get(aid)) === null || _this$atoms$get2 === void 0 ? void 0 : _this$atoms$get2.fragment);\n }\n }]);\n return Struct;\n}();\n\nvar TextCommand;\n(function (TextCommand) {\n TextCommand[\"Bold\"] = \"BOLD\";\n TextCommand[\"Italic\"] = \"ITALIC\";\n TextCommand[\"Subscript\"] = \"SUBSCRIPT\";\n TextCommand[\"Superscript\"] = \"SUPERSCRIPT\";\n})(TextCommand || (TextCommand = {}));\nvar Text = function () {\n function Text(params) {\n _classCallCheck(this, Text);\n _defineProperty(this, \"content\", void 0);\n _defineProperty(this, \"position\", void 0);\n params = params || {};\n this.content = params.content || '';\n this.position = params.position ? new Vec2(params.position) : new Vec2();\n }\n _createClass(Text, [{\n key: \"clone\",\n value: function clone() {\n return new Text(this);\n }\n }]);\n return Text;\n}();\n\nfunction arrowToGraph(arrowNode) {\n var coord = arrowNode.center;\n return {\n type: 'arrow',\n location: [coord.x, coord.y, coord.z],\n prop: arrowNode.data,\n mode: arrowNode.mode\n };\n}\nfunction plusToGraph(plusNode) {\n var coord = plusNode.center;\n return {\n type: 'plus',\n location: [coord.x, coord.y, coord.z],\n prop: plusNode.data\n };\n}\n\nfunction ifDef(target, key, value, defaultValue) {\n if (value !== undefined && value !== null && value !== defaultValue && !(Array.isArray(value) && value.length === 0)) target[key] = value;\n}\n\nfunction headerToGraph(struct) {\n var header = {};\n ifDef(header, 'moleculeName', struct.name, '');\n ifDef(header, 'creatorProgram', null, '');\n ifDef(header, 'comment', null, '');\n return Object.keys(header).length !== 0 ? header : null;\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nfunction fromRlabel(rg) {\n var res = [];\n var rgi;\n var val;\n for (rgi = 0; rgi < 32; rgi++) {\n if (rg & 1 << rgi) {\n val = rgi + 1;\n res.push(val);\n }\n }\n return res;\n}\nfunction moleculeToGraph(struct) {\n var body = {\n atoms: Array.from(struct.atoms.values()).map(function (atom) {\n if (atom.label === 'R#') return rglabelToGraph(atom);\n if (atom.label === 'L#') return atomListToGraph(atom);\n return atomToGraph(atom);\n })\n };\n if (struct.bonds.size !== 0) body.bonds = Array.from(struct.bonds.values()).map(bondToGraph);\n if (struct.sgroups.size !== 0) body.sgroups = Array.from(struct.sgroups.values()).map(function (sGroup) {\n return sgroupToGraph(struct, sGroup);\n });\n var fragment = struct.frags.get(0);\n if (fragment) {\n ifDef(body, 'stereoFlagPosition', fragment.stereoFlagPosition, null);\n }\n return _objectSpread({\n type: 'molecule'\n }, body);\n}\nfunction atomToGraph(source) {\n var result = {};\n ifDef(result, 'label', source.label);\n ifDef(result, 'alias', source.alias);\n ifDef(result, 'location', [source.pp.x, source.pp.y, source.pp.z]);\n ifDef(result, 'charge', source.charge, 0);\n ifDef(result, 'explicitValence', source.explicitValence, -1);\n ifDef(result, 'isotope', source.isotope, 0);\n ifDef(result, 'radical', source.radical, 0);\n ifDef(result, 'attachmentPoints', source.attpnt, 0);\n ifDef(result, 'stereoLabel', source.stereoLabel, null);\n ifDef(result, 'stereoParity', source.stereoCare, 0);\n ifDef(result, 'weight', source.weight, 0);\n ifDef(result, 'ringBondCount', source.ringBondCount, 0);\n ifDef(result, 'substitutionCount', source.substitutionCount, 0);\n ifDef(result, 'unsaturatedAtom', !!source.unsaturatedAtom, false);\n ifDef(result, 'hCount', source.hCount, 0);\n ifDef(result, 'mapping', parseInt(source.aam), 0);\n ifDef(result, 'invRet', source.invRet, 0);\n ifDef(result, 'exactChangeFlag', !!source.exactChangeFlag, false);\n return result;\n}\nfunction rglabelToGraph(source) {\n var result = {\n type: 'rg-label'\n };\n ifDef(result, 'location', [source.pp.x, source.pp.y, source.pp.z]);\n ifDef(result, 'attachmentPoints', source.attpnt, 0);\n var refsToRGroups = fromRlabel(source.rglabel).map(function (rgnumber) {\n return \"rg-\".concat(rgnumber);\n });\n ifDef(result, '$refs', refsToRGroups);\n return result;\n}\nfunction atomListToGraph(source) {\n var result = {\n type: 'atom-list'\n };\n ifDef(result, 'location', [source.pp.x, source.pp.y, source.pp.z]);\n ifDef(result, 'attachmentPoints', source.attpnt, 0);\n ifDef(result, 'elements', source.atomList.labelList());\n ifDef(result, 'notList', source.atomList.notList, false);\n return result;\n}\nfunction bondToGraph(source) {\n var result = {};\n ifDef(result, 'type', source.type);\n ifDef(result, 'atoms', [source.begin, source.end]);\n ifDef(result, 'stereo', source.stereo, 0);\n ifDef(result, 'topology', source.topology, 0);\n ifDef(result, 'center', source.reactingCenterStatus, 0);\n return result;\n}\nfunction sgroupToGraph(struct, source) {\n var result = {};\n ifDef(result, 'type', source.type);\n ifDef(result, 'atoms', source.atoms);\n switch (source.type) {\n case 'GEN':\n break;\n case 'MUL':\n {\n ifDef(result, 'mul', source.data.mul || 1);\n break;\n }\n case 'SRU':\n {\n ifDef(result, 'subscript', source.data.subscript || 'n');\n ifDef(result, 'connectivity', source.data.connectivity.toUpperCase() || 'ht');\n break;\n }\n case 'SUP':\n {\n ifDef(result, 'name', source.data.name || '');\n break;\n }\n case 'DAT':\n {\n var data = source.data;\n ifDef(result, 'placement', data.absolute, true);\n ifDef(result, 'display', data.attached, false);\n ifDef(result, 'context', data.context);\n ifDef(result, 'fieldName', data.fieldName);\n ifDef(result, 'fieldData', data.fieldValue);\n ifDef(result, 'bonds', SGroup.getBonds(struct, source));\n break;\n }\n }\n return result;\n}\n\nfunction toRlabel(values) {\n var res = 0;\n values.forEach(function (val) {\n var rgi = val - 1;\n res |= 1 << rgi;\n });\n return res;\n}\nfunction moleculeToStruct(graphItem) {\n var struct = new Struct();\n graphItem.atoms.forEach(function (atom) {\n if (atom.type === 'rg-label') struct.atoms.add(rglabelToStruct(atom));\n if (atom.type === 'atom-list') struct.atoms.add(atomListToStruct(atom));\n if (!atom.type) struct.atoms.add(atomToStruct(atom));\n });\n if (graphItem.bonds) graphItem.bonds.forEach(function (bond) {\n return struct.bonds.add(bondToStruct(bond));\n });\n if (graphItem.sgroups) graphItem.sgroups.forEach(function (sgroup) {\n return struct.sgroups.add(sgroupToStruct(sgroup));\n });\n struct.initHalfBonds();\n struct.initNeighbors();\n struct.markFragments();\n return struct;\n}\nfunction atomToStruct(source) {\n var params = {};\n ifDef(params, 'label', source.label);\n ifDef(params, 'alias', source.alias);\n ifDef(params, 'pp', {\n x: source.location[0],\n y: source.location[1],\n z: source.location[2] || 0.0\n });\n ifDef(params, 'charge', source.charge);\n ifDef(params, 'explicitValence', source.explicitValence);\n ifDef(params, 'isotope', source.isotope);\n ifDef(params, 'radical', source.radical);\n ifDef(params, 'attpnt', source.attachmentPoints);\n ifDef(params, 'stereoLabel', source.stereoLabel);\n ifDef(params, 'stereoParity', source.stereoParity);\n ifDef(params, 'weight', source.weight);\n ifDef(params, 'ringBondCount', source.ringBondCount);\n ifDef(params, 'substitutionCount', source.substitutionCount);\n ifDef(params, 'unsaturatedAtom', source.unsaturatedAtom);\n ifDef(params, 'hCount', source.hCount);\n ifDef(params, 'aam', source.mapping);\n ifDef(params, 'invRet', source.invRet);\n ifDef(params, 'exactChangeFlag', !!source.exactChangeFlag);\n return new Atom(params);\n}\nfunction rglabelToStruct(source) {\n var params = {};\n params.label = 'R#';\n ifDef(params, 'pp', {\n x: source.location[0],\n y: source.location[1],\n z: source.location[2] || 0.0\n });\n ifDef(params, 'attpnt', source.attachmentPoints);\n var rglabel = toRlabel(source.$refs.map(function (el) {\n return parseInt(el.slice(3));\n }));\n ifDef(params, 'rglabel', rglabel);\n return new Atom(params);\n}\nfunction atomListToStruct(source) {\n var params = {};\n params.label = 'L#';\n ifDef(params, 'pp', {\n x: source.location[0],\n y: source.location[1],\n z: source.location[2] || 0.0\n });\n ifDef(params, 'attpnt', source.attachmentPoints);\n var ids = source.elements.map(function (el) {\n var _Elements$get;\n return (_Elements$get = Elements.get(el)) === null || _Elements$get === void 0 ? void 0 : _Elements$get.number;\n }).filter(function (id) {\n return id;\n });\n ifDef(params, 'atomList', {\n ids: ids,\n notList: source.notList\n });\n return new Atom(params);\n}\nfunction bondToStruct(source) {\n var params = {};\n ifDef(params, 'type', source.type);\n ifDef(params, 'topology', source.topology);\n ifDef(params, 'reactingCenterStatus', source.center);\n ifDef(params, 'stereo', source.stereo);\n ifDef(params, 'begin', source.atoms[0]);\n ifDef(params, 'end', source.atoms[1]);\n return new Bond(params);\n}\nfunction sgroupToStruct(source) {\n var sgroup = new SGroup(source.type);\n ifDef(sgroup, 'atoms', source.atoms);\n switch (source.type) {\n case 'GEN':\n break;\n case 'MUL':\n {\n ifDef(sgroup.data, 'mul', source.mul);\n break;\n }\n case 'SRU':\n {\n ifDef(sgroup.data, 'subscript', source.subscript);\n ifDef(sgroup.data, 'connectivity', source.connectivity.toLowerCase());\n break;\n }\n case 'SUP':\n {\n ifDef(sgroup.data, 'name', source.name);\n break;\n }\n case 'DAT':\n {\n ifDef(sgroup.data, 'absolute', source.placement);\n ifDef(sgroup.data, 'attached', source.display);\n ifDef(sgroup.data, 'context', source.context);\n ifDef(sgroup.data, 'fieldName', source.fieldName);\n ifDef(sgroup.data, 'fieldValue', source.fieldData);\n break;\n }\n }\n return sgroup;\n}\n\nfunction _createForOfIteratorHelper$3(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$3(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray$3(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$3(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$3(o, minLen); }\nfunction _arrayLikeToArray$3(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction prepareStructForGraph(struct) {\n var graphNodes = [];\n var rgFrags = new Set();\n var _iterator = _createForOfIteratorHelper$3(struct.rgroups.entries()),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n rgnumber = _step$value[0],\n rgroup = _step$value[1];\n rgroup.frags.forEach(function (frid) {\n return rgFrags.add(frid);\n });\n var fragsAtoms = Array.from(rgroup.frags.values()).reduce(function (res, frid) {\n return res.union(struct.getFragmentIds(frid));\n }, new Pile());\n graphNodes.push({\n type: 'rgroup',\n fragment: struct.clone(fragsAtoms),\n center: getFragmentCenter(struct, fragsAtoms),\n data: {\n rgnumber: rgnumber,\n rgroup: rgroup\n }\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n Array.from(struct.frags.keys()).filter(function (fid) {\n return !rgFrags.has(fid);\n }).forEach(function (fid) {\n var fragAtoms = struct.getFragmentIds(fid);\n graphNodes.push({\n type: 'molecule',\n fragment: struct.clone(fragAtoms),\n center: getFragmentCenter(struct, fragAtoms)\n });\n });\n struct.rxnArrows.forEach(function (item) {\n graphNodes.push({\n type: 'arrow',\n center: item.pp,\n data: {},\n mode: item.mode\n });\n });\n struct.rxnPluses.forEach(function (item) {\n graphNodes.push({\n type: 'plus',\n center: item.pp,\n data: {}\n });\n });\n struct.simpleObjects.forEach(function (item) {\n graphNodes.push({\n type: 'simpleObject',\n center: item.pos[0],\n data: {\n mode: item.mode,\n pos: item.pos\n }\n });\n });\n struct.texts.forEach(function (item) {\n graphNodes.push({\n type: 'text',\n center: item.position,\n data: {\n content: item.content,\n position: item.position\n }\n });\n });\n return graphNodes.sort(function (a, b) {\n return a.center.x - b.center.x;\n });\n}\nfunction getFragmentCenter(struct, atomSet) {\n var bb = struct.getCoordBoundingBox(atomSet);\n return Vec2.centre(bb.min, bb.max);\n}\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nfunction rgroupToGraph(struct, data) {\n var body = _objectSpread$1({\n rlogic: rgroupLogicToGraph(data.rgnumber, data.rgroup)\n }, moleculeToGraph(struct));\n return _objectSpread$1(_objectSpread$1({}, body), {}, {\n type: 'rgroup'\n });\n}\nfunction rgroupLogicToGraph(rgnumber, rglogic) {\n var result = {};\n ifDef(result, 'number', rgnumber);\n ifDef(result, 'range', rglogic.range, '');\n ifDef(result, 'resth', rglogic.resth, false);\n ifDef(result, 'ifthen', rglogic.ifthen, 0);\n return result;\n}\n\nfunction rgroupToStruct(graphItem) {\n var struct = moleculeToStruct(graphItem);\n var rgroup = rgroupLogicToStruct(graphItem.rlogic);\n struct.frags.forEach(function (_value, key) {\n rgroup.frags.add(key);\n });\n if (graphItem.rlogic) struct.rgroups.set(graphItem.rlogic.number, rgroup);\n return struct;\n}\nfunction rgroupLogicToStruct(rglogic) {\n var params = {};\n ifDef(params, 'range', rglogic.range);\n ifDef(params, 'resth', rglogic.resth);\n ifDef(params, 'ifthen', rglogic.ifthen);\n return new RGroup(params);\n}\n\nfunction rxnToStruct(graphItem, struct) {\n if (graphItem.type === 'arrow') {\n struct.rxnArrows.add(new RxnArrow(new Vec2(graphItem.location[0], graphItem.location[1], graphItem.location[2]), graphItem.mode));\n } else {\n struct.rxnPluses.add(new RxnPlus({\n pp: {\n x: graphItem.location[0],\n y: graphItem.location[1],\n z: graphItem.location[2]\n }\n }));\n }\n return struct;\n}\n\nfunction simpleObjectToGraph(simpleObjectNode) {\n return {\n type: 'simpleObject',\n data: simpleObjectNode.data\n };\n}\n\nfunction simpleObjectToStruct(graphItem, struct) {\n var object = graphItem.data.mode === 'circle' ? circleToEllipse(graphItem) : graphItem.data;\n struct.simpleObjects.add(new SimpleObject(object));\n return struct;\n}\nfunction circleToEllipse(graphItem) {\n var radius = Vec2.dist(graphItem.data.pos[1], graphItem.data.pos[0]);\n var pos0 = graphItem.data.pos[0];\n return {\n mode: SimpleObjectMode.ellipse,\n pos: [{\n x: pos0.x - Math.abs(radius),\n y: pos0.y - Math.abs(radius),\n z: pos0.z - Math.abs(radius)\n }, {\n x: pos0.x + Math.abs(radius),\n y: pos0.y + Math.abs(radius),\n z: pos0.z + Math.abs(radius)\n }]\n };\n}\n\nfunction textToGraph(textNode) {\n return {\n type: 'text',\n data: textNode.data\n };\n}\n\nfunction textToStruct(graphItem, struct) {\n var object = graphItem.data;\n struct.texts.add(new Text(object));\n return struct;\n}\n\nvar $schema = \"http://json-schema.org/draft-07/schema#\";\nvar title = \"ket\";\nvar description = \"Ketcher format schema\";\nvar type = \"object\";\nvar required = [\n\t\"root\"\n];\nvar properties = {\n\troot: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"nodes\"\n\t\t],\n\t\tproperties: {\n\t\t\tnodes: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tminItems: 1,\n\t\t\t\titems: {\n\t\t\t\t\toneOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$ref: \"#/definitions/simpleObject\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$ref: \"#/definitions/text\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$ref: \"#/definitions/arrow\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$ref: \"#/definitions/plus\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\trequired: [\n\t\t\t\t\t\t\t\t\"$ref\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t$ref: {\n\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t\tpattern: \"^(mol\\\\d+|rg[1-9]\\\\d*)\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nvar patternProperties = {\n\t\"^rg[1-9]\\\\d*\": {\n\t\t$ref: \"#/definitions/rgroup\"\n\t},\n\t\"^mol\\\\d+\": {\n\t\t$ref: \"#/definitions/molecule\"\n\t}\n};\nvar additionalProperties = false;\nvar definitions = {\n\trsite: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"type\",\n\t\t\t\"location\"\n\t\t],\n\t\tproperties: {\n\t\t\ttype: {\n\t\t\t\t\"const\": \"rg-label\"\n\t\t\t},\n\t\t\tlocation: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tminItems: 2,\n\t\t\t\tmaxItems: 3,\n\t\t\t\titems: {\n\t\t\t\t\ttype: \"number\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t$refs: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tpattern: \"^rg-[1-9]\\\\d*\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tattachmentPoints: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t0,\n\t\t\t\t\t1,\n\t\t\t\t\t2,\n\t\t\t\t\t3\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t},\n\tatom: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"label\"\n\t\t],\n\t\tproperties: {\n\t\t\tlabel: {\n\t\t\t\ttype: \"string\"\n\t\t\t},\n\t\t\tlocation: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tminItems: 2,\n\t\t\t\tmaxItems: 3,\n\t\t\t\titems: {\n\t\t\t\t\ttype: \"number\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tcharge: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\tminimum: -1000,\n\t\t\t\tmaximum: 1000\n\t\t\t},\n\t\t\texplicitValence: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t-1,\n\t\t\t\t\t0,\n\t\t\t\t\t1,\n\t\t\t\t\t2,\n\t\t\t\t\t3,\n\t\t\t\t\t4,\n\t\t\t\t\t5,\n\t\t\t\t\t6,\n\t\t\t\t\t7,\n\t\t\t\t\t8,\n\t\t\t\t\t9,\n\t\t\t\t\t10,\n\t\t\t\t\t11,\n\t\t\t\t\t12\n\t\t\t\t]\n\t\t\t},\n\t\t\tisotope: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\tminimum: 0,\n\t\t\t\tmaximum: 1000\n\t\t\t},\n\t\t\tradical: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t0,\n\t\t\t\t\t2,\n\t\t\t\t\t1,\n\t\t\t\t\t3\n\t\t\t\t]\n\t\t\t},\n\t\t\tattachmentPoints: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t0,\n\t\t\t\t\t1,\n\t\t\t\t\t2,\n\t\t\t\t\t3\n\t\t\t\t]\n\t\t\t},\n\t\t\tstereoLabel: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tpattern: \"(?:(?:^&|or)[0-9]+$)|(?:^abs$)\"\n\t\t\t},\n\t\t\tstereoParity: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t0,\n\t\t\t\t\t1,\n\t\t\t\t\t2,\n\t\t\t\t\t3\n\t\t\t\t]\n\t\t\t},\n\t\t\tringBondCount: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t0,\n\t\t\t\t\t-2,\n\t\t\t\t\t-1,\n\t\t\t\t\t2,\n\t\t\t\t\t3,\n\t\t\t\t\t4\n\t\t\t\t]\n\t\t\t},\n\t\t\tsubstitutionCount: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t0,\n\t\t\t\t\t-2,\n\t\t\t\t\t-1,\n\t\t\t\t\t1,\n\t\t\t\t\t2,\n\t\t\t\t\t3,\n\t\t\t\t\t4,\n\t\t\t\t\t5,\n\t\t\t\t\t6\n\t\t\t\t]\n\t\t\t},\n\t\t\tunsaturatedAtom: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t},\n\t\t\thCount: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t-1,\n\t\t\t\t\t0,\n\t\t\t\t\t1,\n\t\t\t\t\t2,\n\t\t\t\t\t3,\n\t\t\t\t\t4,\n\t\t\t\t\t5\n\t\t\t\t]\n\t\t\t},\n\t\t\tmapping: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\tminimum: 0\n\t\t\t},\n\t\t\tinvRet: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t0,\n\t\t\t\t\t1,\n\t\t\t\t\t2\n\t\t\t\t]\n\t\t\t},\n\t\t\texactChangeFlag: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\tadditionalProperties: false\n\t},\n\tatomlist: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"type\",\n\t\t\t\"location\"\n\t\t],\n\t\tproperties: {\n\t\t\ttype: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"atom-list\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tnotList: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t},\n\t\t\tlocation: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tminItems: 2,\n\t\t\t\tmaxItems: 3,\n\t\t\t\titems: {\n\t\t\t\t\ttype: \"number\"\n\t\t\t\t}\n\t\t\t},\n\t\t\telements: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tminItems: 2,\n\t\t\t\titems: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tminLength: 1\n\t\t\t\t}\n\t\t\t},\n\t\t\tattachmentPoints: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t0,\n\t\t\t\t\t1,\n\t\t\t\t\t2,\n\t\t\t\t\t3\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t},\n\tbond: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"atoms\",\n\t\t\t\"type\"\n\t\t],\n\t\tproperties: {\n\t\t\ttype: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t1,\n\t\t\t\t\t2,\n\t\t\t\t\t3,\n\t\t\t\t\t4,\n\t\t\t\t\t5,\n\t\t\t\t\t6,\n\t\t\t\t\t7,\n\t\t\t\t\t8,\n\t\t\t\t\t9,\n\t\t\t\t\t10,\n\t\t\t\t\t11,\n\t\t\t\t\t12\n\t\t\t\t]\n\t\t\t},\n\t\t\tatoms: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tminItems: 2,\n\t\t\t\tmaxItems: 2,\n\t\t\t\titems: {\n\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\tminimum: 0,\n\t\t\t\t\tuniqueItems: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tstereo: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t0,\n\t\t\t\t\t1,\n\t\t\t\t\t3,\n\t\t\t\t\t4,\n\t\t\t\t\t6\n\t\t\t\t]\n\t\t\t},\n\t\t\ttopology: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t0,\n\t\t\t\t\t1,\n\t\t\t\t\t2\n\t\t\t\t]\n\t\t\t},\n\t\t\tcenter: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t0,\n\t\t\t\t\t-1,\n\t\t\t\t\t1,\n\t\t\t\t\t2,\n\t\t\t\t\t4,\n\t\t\t\t\t8,\n\t\t\t\t\t12\n\t\t\t\t]\n\t\t\t},\n\t\t\tstereobox: {\n\t\t\t\ttype: \"integer\",\n\t\t\t\t\"enum\": [\n\t\t\t\t\t0,\n\t\t\t\t\t1\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t},\n\trgroup: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"rlogic\",\n\t\t\t\"type\"\n\t\t],\n\t\tproperties: {\n\t\t\ttype: {\n\t\t\t\t\"const\": \"rgroup\"\n\t\t\t},\n\t\t\trlogic: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"number\"\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\tnumber: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 1\n\t\t\t\t\t},\n\t\t\t\t\trange: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tmaxLength: 50,\n\t\t\t\t\t\t\"default\": \"\"\n\t\t\t\t\t},\n\t\t\t\t\tresth: {\n\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\"default\": false\n\t\t\t\t\t},\n\t\t\t\t\tifthen: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\"default\": 0\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tallOf: [\n\t\t\t{\n\t\t\t\t$ref: \"#/definitions/structure\"\n\t\t\t}\n\t\t]\n\t},\n\tmolecule: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"type\"\n\t\t],\n\t\tproperties: {\n\t\t\ttype: {\n\t\t\t\t\"const\": \"molecule\"\n\t\t\t}\n\t\t},\n\t\tallOf: [\n\t\t\t{\n\t\t\t\t$ref: \"#/definitions/structure\"\n\t\t\t}\n\t\t]\n\t},\n\tstructure: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"atoms\"\n\t\t],\n\t\tproperties: {\n\t\t\tstereoFlagPosition: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"x\",\n\t\t\t\t\t\"y\"\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\tx: {\n\t\t\t\t\t\ttype: \"number\"\n\t\t\t\t\t},\n\t\t\t\t\ty: {\n\t\t\t\t\t\ttype: \"number\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tatoms: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: {\n\t\t\t\t\toneOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$ref: \"#/definitions/atom\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$ref: \"#/definitions/rsite\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$ref: \"#/definitions/atomlist\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\tbonds: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: {\n\t\t\t\t\t$ref: \"#/definitions/bond\"\n\t\t\t\t}\n\t\t\t},\n\t\t\thighlight: {\n\t\t\t\t$ref: \"#/definitions/subset\"\n\t\t\t},\n\t\t\tselection: {\n\t\t\t\t$ref: \"#/definitions/subset\"\n\t\t\t},\n\t\t\tsgroups: {\n\t\t\t\t$ref: \"#/definitions/sgroups\"\n\t\t\t}\n\t\t}\n\t},\n\tsubset: {\n\t\ttype: \"array\",\n\t\tminItems: 1,\n\t\tmaxItems: 2,\n\t\titems: {\n\t\t\toneOf: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"object\",\n\t\t\t\t\trequired: [\n\t\t\t\t\t\t\"entityType\",\n\t\t\t\t\t\t\"items\"\n\t\t\t\t\t],\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tentityType: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\"const\": \"atoms\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t\tuniqueItems: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"object\",\n\t\t\t\t\trequired: [\n\t\t\t\t\t\t\"entityType\",\n\t\t\t\t\t\t\"items\"\n\t\t\t\t\t],\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tentityType: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\"const\": \"bonds\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t\tuniqueItems: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t},\n\tsgroups: {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t\trequired: [\n\t\t\t\t\"atoms\",\n\t\t\t\t\"type\"\n\t\t\t],\n\t\t\tproperties: {\n\t\t\t\tatoms: {\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: {\n\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\tminimum: 0\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttype: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\"enum\": [\n\t\t\t\t\t\t\"GEN\",\n\t\t\t\t\t\t\"MUL\",\n\t\t\t\t\t\t\"SRU\",\n\t\t\t\t\t\t\"SUP\",\n\t\t\t\t\t\t\"DAT\"\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"if\": {\n\t\t\t\tproperties: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\t\"const\": \"DAT\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tthen: {\n\t\t\t\trequired: [\n\t\t\t\t\t\"fieldName\"\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\"enum\": [\n\t\t\t\t\t\t\t\"Fragment\",\n\t\t\t\t\t\t\t\"Multifragment\",\n\t\t\t\t\t\t\t\"Bond\",\n\t\t\t\t\t\t\t\"Atom\",\n\t\t\t\t\t\t\t\"Group\"\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tfieldName: {\n\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t},\n\t\t\t\t\tfieldValue: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tdisplay: {\n\t\t\t\t\t\ttype: \"boolean\"\n\t\t\t\t\t},\n\t\t\t\t\tplacement: {\n\t\t\t\t\t\ttype: \"boolean\"\n\t\t\t\t\t},\n\t\t\t\t\tbonds: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"integer\",\n\t\t\t\t\t\t\tminimum: 0\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tplus: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"type\",\n\t\t\t\"location\"\n\t\t],\n\t\tproperties: {\n\t\t\ttype: {\n\t\t\t\t\"const\": \"plus\"\n\t\t\t},\n\t\t\tlocation: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tminItems: 2,\n\t\t\t\tmaxItems: 3,\n\t\t\t\titems: {\n\t\t\t\t\ttype: \"number\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tarrow: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"type\",\n\t\t\t\"location\"\n\t\t],\n\t\tproperties: {\n\t\t\ttype: {\n\t\t\t\t\"const\": \"arrow\"\n\t\t\t},\n\t\t\tlocation: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tminItems: 2,\n\t\t\t\tmaxItems: 3,\n\t\t\t\titems: {\n\t\t\t\t\ttype: \"number\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tsimpleObject: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"type\",\n\t\t\t\"data\"\n\t\t],\n\t\tproperties: {\n\t\t\ttype: {\n\t\t\t\t\"const\": \"simpleObject\"\n\t\t\t},\n\t\t\tdata: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"mode\"\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\tmode: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\"enum\": [\n\t\t\t\t\t\t\t\"line\",\n\t\t\t\t\t\t\t\"rectangle\",\n\t\t\t\t\t\t\t\"circle\",\n\t\t\t\t\t\t\t\"ellipse\",\n\t\t\t\t\t\t\t\"polyline\"\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"if\": {\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\"const\": \"polyline\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthen: {\n\t\t\t\t\trequired: [\n\t\t\t\t\t\t\"pos\"\n\t\t\t\t\t],\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tpos: {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\tminItems: 2,\n\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\trequired: [\n\t\t\t\t\t\t\t\t\t\"x\",\n\t\t\t\t\t\t\t\t\t\"y\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tx: {\n\t\t\t\t\t\t\t\t\t\ttype: \"number\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ty: {\n\t\t\t\t\t\t\t\t\t\ttype: \"number\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tz: {\n\t\t\t\t\t\t\t\t\t\ttype: \"number\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"else\": {\n\t\t\t\t\trequired: [\n\t\t\t\t\t\t\"pos\"\n\t\t\t\t\t],\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tpos: {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\tminItems: 2,\n\t\t\t\t\t\t\tmaxItems: 2,\n\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\trequired: [\n\t\t\t\t\t\t\t\t\t\"x\",\n\t\t\t\t\t\t\t\t\t\"y\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tx: {\n\t\t\t\t\t\t\t\t\t\ttype: \"number\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ty: {\n\t\t\t\t\t\t\t\t\t\ttype: \"number\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tz: {\n\t\t\t\t\t\t\t\t\t\ttype: \"number\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\ttext: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"type\",\n\t\t\t\"data\"\n\t\t],\n\t\tproperties: {\n\t\t\ttype: {\n\t\t\t\t\"const\": \"text\"\n\t\t\t},\n\t\t\tdata: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"content\",\n\t\t\t\t\t\"position\"\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\tcontent: {\n\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t},\n\t\t\t\t\tposition: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\trequired: [\n\t\t\t\t\t\t\t\"x\",\n\t\t\t\t\t\t\t\"y\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tx: {\n\t\t\t\t\t\t\t\ttype: \"number\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ty: {\n\t\t\t\t\t\t\t\ttype: \"number\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nvar schema = {\n\t$schema: $schema,\n\ttitle: title,\n\tdescription: description,\n\ttype: type,\n\trequired: required,\n\tproperties: properties,\n\tpatternProperties: patternProperties,\n\tadditionalProperties: additionalProperties,\n\tdefinitions: definitions\n};\n\nfunction validate(graph) {\n var validator = new Validator();\n var result = validator.validate(graph, schema);\n return result.valid;\n}\n\nfunction parseNode(node, struct) {\n var type = node.type;\n switch (type) {\n case 'arrow':\n rxnToStruct(node, struct);\n break;\n case 'plus':\n rxnToStruct(node, struct);\n break;\n case 'simpleObject':\n simpleObjectToStruct(node, struct);\n break;\n case 'molecule':\n var currentStruct = moleculeToStruct(node);\n if (node.stereoFlagPosition) {\n var fragment = currentStruct.frags.get(0);\n fragment.stereoFlagPosition = new Vec2(node.stereoFlagPosition);\n }\n currentStruct.mergeInto(struct);\n break;\n case 'rgroup':\n rgroupToStruct(node).mergeInto(struct);\n break;\n case 'text':\n textToStruct(node, struct);\n break;\n }\n}\nvar KetSerializer = function () {\n function KetSerializer() {\n _classCallCheck(this, KetSerializer);\n }\n _createClass(KetSerializer, [{\n key: \"deserialize\",\n value: function deserialize(content) {\n var resultingStruct = new Struct();\n var graph = JSON.parse(content);\n if (!validate(graph)) {\n throw new Error('Cannot deserialize input JSON.');\n }\n resultingStruct.name = graph.header ? graph.header.moleculeName : null;\n var nodes = graph.root.nodes;\n Object.keys(nodes).forEach(function (i) {\n if (nodes[i].type) parseNode(nodes[i], resultingStruct);else if (nodes[i].$ref) parseNode(graph[nodes[i].$ref], resultingStruct);\n });\n return resultingStruct;\n }\n }, {\n key: \"serialize\",\n value: function serialize(struct) {\n var result = {\n root: {\n nodes: []\n }\n };\n var header = headerToGraph(struct);\n if (header) result.header = header;\n var graphNodes = prepareStructForGraph(struct);\n var moleculeId = 0;\n graphNodes.forEach(function (item) {\n switch (item.type) {\n case 'molecule':\n {\n result.root.nodes.push({\n $ref: \"mol\".concat(moleculeId)\n });\n result[\"mol\".concat(moleculeId++)] = moleculeToGraph(item.fragment);\n break;\n }\n case 'rgroup':\n {\n result.root.nodes.push({\n $ref: \"rg\".concat(item.data.rgnumber)\n });\n result[\"rg\".concat(item.data.rgnumber)] = rgroupToGraph(item.fragment, item.data);\n break;\n }\n case 'plus':\n {\n result.root.nodes.push(plusToGraph(item));\n break;\n }\n case 'arrow':\n {\n result.root.nodes.push(arrowToGraph(item));\n break;\n }\n case 'simpleObject':\n {\n result.root.nodes.push(simpleObjectToGraph(item));\n break;\n }\n case 'text':\n {\n result.root.nodes.push(textToGraph(item));\n break;\n }\n }\n });\n return JSON.stringify(result, null, 4);\n }\n }]);\n return KetSerializer;\n}();\n\nfunction paddedNum(number, width, precision) {\n number = parseFloat(number);\n var numStr = number.toFixed(precision || 0).replace(',', '.');\n if (numStr.length > width) throw new Error('number does not fit');\n return numStr.padStart(width);\n}\nfunction parseDecimalInt(str) {\n var val = parseInt(str, 10);\n return isNaN(val) ? 0 : val;\n}\nfunction partitionLine(\nstr,\nparts,\nwithspace) {\n var res = [];\n for (var i = 0, shift = 0; i < parts.length; ++i) {\n res.push(str.slice(shift, shift + parts[i]));\n if (withspace) shift++;\n shift += parts[i];\n }\n return res;\n}\nfunction partitionLineFixed(\nstr,\nitemLength,\nwithspace) {\n var res = [];\n for (var shift = 0; shift < str.length; shift += itemLength) {\n res.push(str.slice(shift, shift + itemLength));\n if (withspace) shift++;\n }\n return res;\n}\nvar fmtInfo = {\n bondTypeMap: {\n 1: Bond.PATTERN.TYPE.SINGLE,\n 2: Bond.PATTERN.TYPE.DOUBLE,\n 3: Bond.PATTERN.TYPE.TRIPLE,\n 4: Bond.PATTERN.TYPE.AROMATIC,\n 5: Bond.PATTERN.TYPE.SINGLE_OR_DOUBLE,\n 6: Bond.PATTERN.TYPE.SINGLE_OR_AROMATIC,\n 7: Bond.PATTERN.TYPE.DOUBLE_OR_AROMATIC,\n 8: Bond.PATTERN.TYPE.ANY,\n 9: Bond.PATTERN.TYPE.DATIVE,\n 10: Bond.PATTERN.TYPE.HYDROGEN\n },\n bondStereoMap: {\n 0: Bond.PATTERN.STEREO.NONE,\n 1: Bond.PATTERN.STEREO.UP,\n 4: Bond.PATTERN.STEREO.EITHER,\n 6: Bond.PATTERN.STEREO.DOWN,\n 3: Bond.PATTERN.STEREO.CIS_TRANS\n },\n v30bondStereoMap: {\n 0: Bond.PATTERN.STEREO.NONE,\n 1: Bond.PATTERN.STEREO.UP,\n 2: Bond.PATTERN.STEREO.EITHER,\n 3: Bond.PATTERN.STEREO.DOWN\n },\n bondTopologyMap: {\n 0: Bond.PATTERN.TOPOLOGY.EITHER,\n 1: Bond.PATTERN.TOPOLOGY.RING,\n 2: Bond.PATTERN.TOPOLOGY.CHAIN\n },\n countsLinePartition: [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6],\n atomLinePartition: [10, 10, 10, 1, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],\n bondLinePartition: [3, 3, 3, 3, 3, 3, 3],\n atomListHeaderPartition: [3, 1, 1, 4, 1, 1],\n atomListHeaderLength: 11,\n atomListHeaderItemLength: 4,\n chargeMap: [0, +3, +2, +1, 0, -1, -2, -3],\n valenceMap: [undefined, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0],\n implicitHydrogenMap: [undefined, 0, 1, 2, 3, 4],\n v30atomPropMap: {\n CHG: 'charge',\n RAD: 'radical',\n MASS: 'isotope',\n VAL: 'explicitValence',\n HCOUNT: 'hCount',\n INVRET: 'invRet',\n SUBST: 'substitutionCount',\n UNSAT: 'unsaturatedAtom',\n RBCNT: 'ringBondCount'\n },\n rxnItemsPartition: [3, 3, 3]\n};\nvar FRAGMENT = {\n NONE: 0,\n REACTANT: 1,\n PRODUCT: 2,\n AGENT: 3\n};\nfunction rxnMerge(mols, nReactants, nProducts, nAgents, shouldReactionRelayout)\n{\n var ret = new Struct();\n var bbReact = [],\n bbAgent = [],\n bbProd = [];\n var molReact = [],\n molAgent = [],\n molProd = [];\n var j;\n var bondLengthData = {\n cnt: 0,\n totalLength: 0\n };\n for (j = 0; j < mols.length; ++j) {\n var mol = mols[j];\n var bondLengthDataMol = mol.getBondLengthData();\n bondLengthData.cnt += bondLengthDataMol.cnt;\n bondLengthData.totalLength += bondLengthDataMol.totalLength;\n }\n {\n var avgBondLength = 1 / (bondLengthData.cnt == 0 ? 1 : bondLengthData.totalLength / bondLengthData.cnt);\n for (j = 0; j < mols.length; ++j) {\n mol = mols[j];\n mol.scale(avgBondLength);\n }\n }\n for (j = 0; j < mols.length; ++j) {\n mol = mols[j];\n var bb = mol.getCoordBoundingBoxObj();\n if (!bb) continue;\n var fragmentType = j < nReactants ? FRAGMENT.REACTANT\n : j < nReactants + nProducts ? FRAGMENT.PRODUCT : FRAGMENT.AGENT;\n if (fragmentType == FRAGMENT.REACTANT) {\n bbReact.push(bb);\n molReact.push(mol);\n } else if (fragmentType == FRAGMENT.AGENT) {\n bbAgent.push(bb);\n molAgent.push(mol);\n } else if (fragmentType == FRAGMENT.PRODUCT) {\n bbProd.push(bb);\n molProd.push(mol);\n }\n mol.atoms.forEach(function (atom) {\n atom.rxnFragmentType = fragmentType;\n });\n }\n function shiftMol(ret, mol, bb, xorig, over) {\n var d = new Vec2(xorig - bb.min.x, over ? 1 - bb.min.y : -(bb.min.y + bb.max.y) / 2);\n mol.atoms.forEach(function (atom) {\n atom.pp.add_(d);\n });\n mol.sgroups.forEach(function (item) {\n if (item.pp) item.pp.add_(d);\n });\n bb.min.add_(d);\n bb.max.add_(d);\n mol.mergeInto(ret);\n return bb.max.x - bb.min.x;\n }\n if (shouldReactionRelayout) {\n var xorig = 0;\n for (j = 0; j < molReact.length; ++j) {\n xorig += shiftMol(ret, molReact[j], bbReact[j], xorig, false) + 2.0;\n }\n xorig += 2.0;\n for (j = 0; j < molAgent.length; ++j) {\n xorig += shiftMol(ret, molAgent[j], bbAgent[j], xorig, true) + 2.0;\n }\n xorig += 2.0;\n for (j = 0; j < molProd.length; ++j) {\n xorig += shiftMol(ret, molProd[j], bbProd[j], xorig, false) + 2.0;\n }\n } else {\n for (j = 0; j < molReact.length; ++j) {\n molReact[j].mergeInto(ret);\n }\n for (j = 0; j < molAgent.length; ++j) {\n molAgent[j].mergeInto(ret);\n }\n for (j = 0; j < molProd.length; ++j) {\n molProd[j].mergeInto(ret);\n }\n }\n var bb1;\n var bb2;\n var x;\n var y;\n var bbReactAll = null;\n var bbProdAll = null;\n for (j = 0; j < bbReact.length - 1; ++j) {\n bb1 = bbReact[j];\n bb2 = bbReact[j + 1];\n x = (bb1.max.x + bb2.min.x) / 2;\n y = (bb1.max.y + bb1.min.y + bb2.max.y + bb2.min.y) / 4;\n ret.rxnPluses.add(new RxnPlus({\n pp: new Vec2(x, y)\n }));\n }\n for (j = 0; j < bbReact.length; ++j) {\n if (j == 0) {\n bbReactAll = {};\n bbReactAll.max = new Vec2(bbReact[j].max);\n bbReactAll.min = new Vec2(bbReact[j].min);\n } else {\n bbReactAll.max = Vec2.max(bbReactAll.max, bbReact[j].max);\n bbReactAll.min = Vec2.min(bbReactAll.min, bbReact[j].min);\n }\n }\n for (j = 0; j < bbProd.length - 1; ++j) {\n bb1 = bbProd[j];\n bb2 = bbProd[j + 1];\n x = (bb1.max.x + bb2.min.x) / 2;\n y = (bb1.max.y + bb1.min.y + bb2.max.y + bb2.min.y) / 4;\n ret.rxnPluses.add(new RxnPlus({\n pp: new Vec2(x, y)\n }));\n }\n for (j = 0; j < bbProd.length; ++j) {\n if (j == 0) {\n bbProdAll = {};\n bbProdAll.max = new Vec2(bbProd[j].max);\n bbProdAll.min = new Vec2(bbProd[j].min);\n } else {\n bbProdAll.max = Vec2.max(bbProdAll.max, bbProd[j].max);\n bbProdAll.min = Vec2.min(bbProdAll.min, bbProd[j].min);\n }\n }\n bb1 = bbReactAll;\n bb2 = bbProdAll;\n if (!bb1 && !bb2) {\n ret.rxnArrows.add(new RxnArrow(new Vec2(0, 0)));\n } else {\n var v1 = bb1 ? new Vec2(bb1.max.x, (bb1.max.y + bb1.min.y) / 2) : null;\n var v2 = bb2 ? new Vec2(bb2.min.x, (bb2.max.y + bb2.min.y) / 2) : null;\n var defaultOffset = 3;\n if (!v1) v1 = new Vec2(v2.x - defaultOffset, v2.y);\n if (!v2) v2 = new Vec2(v1.x + defaultOffset, v1.y);\n ret.rxnArrows.add(new RxnArrow(Vec2.lc2(v1, 0.5, v2, 0.5)));\n }\n ret.isReaction = true;\n return ret;\n}\nvar utils = {\n fmtInfo: fmtInfo,\n paddedNum: paddedNum,\n parseDecimalInt: parseDecimalInt,\n partitionLine: partitionLine,\n partitionLineFixed: partitionLineFixed,\n rxnMerge: rxnMerge\n};\n\nfunction _createForOfIteratorHelper$4(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$4(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray$4(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$4(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$4(o, minLen); }\nfunction _arrayLikeToArray$4(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction readKeyValuePairs(str, valueString) {\n var ret = new Pool();\n var partition = utils.partitionLineFixed(str, 3, true);\n var count = utils.parseDecimalInt(partition[0]);\n for (var i = 0; i < count; ++i) {\n var key = utils.parseDecimalInt(partition[2 * i + 1]) - 1;\n var value = valueString ? partition[2 * i + 2].trim() : utils.parseDecimalInt(partition[2 * i + 2]);\n ret.set(key, value);\n }\n return ret;\n}\nfunction readKeyMultiValuePairs(str, valueString) {\n var ret = [];\n var partition = utils.partitionLineFixed(str, 3, true);\n var count = utils.parseDecimalInt(partition[0]);\n for (var i = 0; i < count; ++i) {\n ret.push([\n utils.parseDecimalInt(partition[2 * i + 1]) - 1, valueString ? partition[2 * i + 2].trim() : utils.parseDecimalInt(partition[2 * i + 2])\n ]);\n }\n return ret;\n}\nfunction postLoadMul(sgroup, mol, atomMap) {\n sgroup.data.mul = sgroup.data.subscript - 0;\n var atomReductionMap = {};\n sgroup.atoms = SGroup.filterAtoms(sgroup.atoms, atomMap);\n sgroup.patoms = SGroup.filterAtoms(sgroup.patoms, atomMap);\n for (var k = 1; k < sgroup.data.mul; ++k) {\n for (var m = 0; m < sgroup.patoms.length; ++m) {\n var raid = sgroup.atoms[k * sgroup.patoms.length + m];\n if (raid < 0) continue;\n if (sgroup.patoms[m] < 0) throw new Error('parent atom missing');\n atomReductionMap[raid] = sgroup.patoms[m];\n }\n }\n sgroup.patoms = SGroup.removeNegative(sgroup.patoms);\n var patomsMap = identityMap(sgroup.patoms);\n var bondsToRemove = [];\n mol.bonds.forEach(function (bond, bid) {\n var beginIn = (bond.begin in atomReductionMap);\n var endIn = (bond.end in atomReductionMap);\n if (beginIn && endIn || beginIn && bond.end in patomsMap || endIn && bond.begin in patomsMap) bondsToRemove.push(bid);\n else if (beginIn) bond.begin = atomReductionMap[bond.begin];else if (endIn) bond.end = atomReductionMap[bond.end];\n }, sgroup);\n for (var b = 0; b < bondsToRemove.length; ++b) {\n mol.bonds[\"delete\"](bondsToRemove[b]);\n }\n for (var a in atomReductionMap) {\n mol.atoms[\"delete\"](+a);\n atomMap[a] = -1;\n }\n sgroup.atoms = sgroup.patoms;\n sgroup.patoms = null;\n}\nfunction postLoadSru(sgroup) {\n sgroup.data.connectivity = (sgroup.data.connectivity || 'EU').trim().toLowerCase();\n}\nfunction postLoadSup(sgroup) {\n sgroup.data.name = (sgroup.data.subscript || '').trim();\n sgroup.data.subscript = '';\n}\nfunction postLoadGen(sgroup, mol, atomMap) {\n}\nfunction postLoadDat(sgroup, mol) {\n if (!sgroup.data.absolute) sgroup.pp = sgroup.pp.add(SGroup.getMassCentre(mol, sgroup.atoms));\n}\nfunction postLoadMon(sgroup) {\n}\nfunction postLoadMer(sgroup) {\n}\nfunction postLoadCop(sgroup) {\n}\nfunction postLoadCro(sgroup) {\n}\nfunction postLoadMod(sgroup) {\n}\nfunction postLoadGra(sgroup) {\n}\nfunction postLoadCom(sgroup) {\n}\nfunction postLoadMix(sgroup) {\n}\nfunction postLoadFor(sgroup) {\n}\nfunction postLoadAny(sgroup) {\n}\nfunction loadSGroup(mol, sg, atomMap) {\n var postLoadMap = {\n SUP: postLoadSup,\n MUL: postLoadMul,\n SRU: postLoadSru,\n MON: postLoadMon,\n MER: postLoadMer,\n COP: postLoadCop,\n CRO: postLoadCro,\n MOD: postLoadMod,\n GRA: postLoadGra,\n COM: postLoadCom,\n MIX: postLoadMix,\n FOR: postLoadFor,\n DAT: postLoadDat,\n ANY: postLoadAny,\n GEN: postLoadGen\n };\n sg.id = mol.sgroups.add(sg);\n postLoadMap[sg.type](sg, mol, atomMap);\n for (var s = 0; s < sg.atoms.length; ++s) {\n if (mol.atoms.has(sg.atoms[s])) mol.atoms.get(sg.atoms[s]).sgs.add(sg.id);\n }\n if (sg.type === 'DAT') mol.sGroupForest.insert(sg, -1, []);else mol.sGroupForest.insert(sg);\n return sg.id;\n}\nfunction initSGroup(sGroups, propData) {\n var kv = readKeyValuePairs(propData, true);\n var _iterator = _createForOfIteratorHelper$4(kv),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n key = _step$value[0],\n type = _step$value[1];\n var sg = new SGroup(type);\n sg.number = key;\n sGroups[key] = sg;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\nfunction applySGroupProp(sGroups, propName, propData, numeric, core) {\n var kv = readKeyValuePairs(propData, !numeric);\n var _iterator2 = _createForOfIteratorHelper$4(kv.keys()),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var key = _step2.value;\n (core ? sGroups[key] : sGroups[key].data)[propName] = kv.get(key);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n}\nfunction applySGroupArrayProp(sGroups, propName, propData, shift) {\n var sid = utils.parseDecimalInt(propData.slice(1, 4)) - 1;\n var num = utils.parseDecimalInt(propData.slice(4, 8));\n var part = toIntArray(utils.partitionLineFixed(propData.slice(8), 3, true));\n if (part.length !== num) throw new Error('File format invalid');\n if (shift) part = part.map(function (v) {\n return v + shift;\n });\n sGroups[sid][propName] = sGroups[sid][propName].concat(part);\n}\nfunction applyDataSGroupName(sg, name) {\n sg.data.fieldName = name;\n}\nfunction applyDataSGroupQuery(sg, query) {\n sg.data.query = query;\n}\nfunction applyDataSGroupQueryOp(sg, queryOp) {\n sg.data.queryOp = queryOp;\n}\nfunction applyDataSGroupDesc(sGroups, propData) {\n var split = utils.partitionLine(propData, [4, 31, 2, 20, 2, 3], false);\n var id = utils.parseDecimalInt(split[0]) - 1;\n var fieldName = split[1].trim();\n var fieldType = split[2].trim();\n var units = split[3].trim();\n var query = split[4].trim();\n var queryOp = split[5].trim();\n var sGroup = sGroups[id];\n sGroup.data.fieldType = fieldType;\n sGroup.data.fieldName = fieldName;\n sGroup.data.units = units;\n sGroup.data.query = query;\n sGroup.data.queryOp = queryOp;\n}\nfunction applyDataSGroupInfo(sg, propData) {\n var split = utils.partitionLine(propData, [10\n , 10\n , 4\n , 1\n , 1\n , 1\n , 3\n , 3\n , 3\n , 3\n , 2\n , 3\n , 2\n ], false);\n var x = parseFloat(split[0]);\n var y = parseFloat(split[1]);\n var attached = split[3].trim() == 'A';\n var absolute = split[4].trim() == 'A';\n var showUnits = split[5].trim() == 'U';\n var nCharsToDisplay = split[7].trim();\n nCharsToDisplay = nCharsToDisplay == 'ALL' ? -1 : utils.parseDecimalInt(nCharsToDisplay);\n var tagChar = split[10].trim();\n var daspPos = utils.parseDecimalInt(split[11].trim());\n sg.pp = new Vec2(x, -y);\n sg.data.attached = attached;\n sg.data.absolute = absolute;\n sg.data.showUnits = showUnits;\n sg.data.nCharsToDisplay = nCharsToDisplay;\n sg.data.tagChar = tagChar;\n sg.data.daspPos = daspPos;\n}\nfunction applyDataSGroupInfoLine(sGroups, propData) {\n var id = utils.parseDecimalInt(propData.substr(0, 4)) - 1;\n var sg = sGroups[id];\n applyDataSGroupInfo(sg, propData.substr(5));\n}\nfunction applyDataSGroupData(sg, data, finalize) {\n sg.data.fieldValue = (sg.data.fieldValue || '') + data;\n if (finalize) {\n sg.data.fieldValue = trimRight(sg.data.fieldValue);\n if (sg.data.fieldValue.startsWith('\"') && sg.data.fieldValue.endsWith('\"')) sg.data.fieldValue = sg.data.fieldValue.substr(1, sg.data.fieldValue.length - 2);\n }\n}\nfunction applyDataSGroupDataLine(sGroups, propData, finalize) {\n var id = utils.parseDecimalInt(propData.substr(0, 5)) - 1;\n var data = propData.substr(5);\n var sg = sGroups[id];\n applyDataSGroupData(sg, data, finalize);\n}\nfunction toIntArray(strArray) {\n var ret = [];\n for (var j = 0; j < strArray.length; ++j) {\n ret[j] = utils.parseDecimalInt(strArray[j]);\n }\n return ret;\n}\nfunction trimRight(str) {\n return str.replace(/\\s+$/, '');\n}\nfunction identityMap(array) {\n var map = {};\n for (var i = 0; i < array.length; ++i) {\n map[array[i]] = array[i];\n }\n return map;\n}\nvar sGroup = {\n readKeyValuePairs: readKeyValuePairs,\n readKeyMultiValuePairs: readKeyMultiValuePairs,\n loadSGroup: loadSGroup,\n initSGroup: initSGroup,\n applySGroupProp: applySGroupProp,\n applySGroupArrayProp: applySGroupArrayProp,\n applyDataSGroupName: applyDataSGroupName,\n applyDataSGroupQuery: applyDataSGroupQuery,\n applyDataSGroupQueryOp: applyDataSGroupQueryOp,\n applyDataSGroupDesc: applyDataSGroupDesc,\n applyDataSGroupInfo: applyDataSGroupInfo,\n applyDataSGroupData: applyDataSGroupData,\n applyDataSGroupInfoLine: applyDataSGroupInfoLine,\n applyDataSGroupDataLine: applyDataSGroupDataLine\n};\n\nfunction parseAtomLine(atomLine) {\n var atomSplit = utils.partitionLine(atomLine, utils.fmtInfo.atomLinePartition);\n var params = {\n pp: new Vec2(parseFloat(atomSplit[0]), -parseFloat(atomSplit[1]), parseFloat(atomSplit[2])),\n label: atomSplit[4].trim(),\n explicitValence: utils.fmtInfo.valenceMap[utils.parseDecimalInt(atomSplit[10])],\n massDifference: utils.parseDecimalInt(atomSplit[5]),\n charge: utils.fmtInfo.chargeMap[utils.parseDecimalInt(atomSplit[6])],\n hCount: utils.parseDecimalInt(utils.parseDecimalInt(atomSplit[8])),\n stereoCare: utils.parseDecimalInt(atomSplit[9]) != 0,\n aam: utils.parseDecimalInt(atomSplit[14]),\n invRet: utils.parseDecimalInt(atomSplit[15]),\n exactChangeFlag: utils.parseDecimalInt(atomSplit[16]) != 0\n };\n return new Atom(params);\n}\nfunction parseBondLine(bondLine) {\n var bondSplit = utils.partitionLine(bondLine, utils.fmtInfo.bondLinePartition);\n var params = {\n begin: utils.parseDecimalInt(bondSplit[0]) - 1,\n end: utils.parseDecimalInt(bondSplit[1]) - 1,\n type: utils.fmtInfo.bondTypeMap[utils.parseDecimalInt(bondSplit[2])],\n stereo: utils.fmtInfo.bondStereoMap[utils.parseDecimalInt(bondSplit[3])],\n xxx: bondSplit[4],\n topology: utils.fmtInfo.bondTopologyMap[utils.parseDecimalInt(bondSplit[5])],\n reactingCenterStatus: utils.parseDecimalInt(bondSplit[6])\n };\n return new Bond(params);\n}\nfunction parseAtomListLine(\natomListLine) {\n var split = utils.partitionLine(atomListLine, utils.fmtInfo.atomListHeaderPartition);\n var number = utils.parseDecimalInt(split[0]) - 1;\n var notList = split[2].trim() == 'T';\n var count = utils.parseDecimalInt(split[4].trim());\n var ids = atomListLine.slice(utils.fmtInfo.atomListHeaderLength);\n var list = [];\n var itemLength = utils.fmtInfo.atomListHeaderItemLength;\n for (var i = 0; i < count; ++i) {\n list[i] = utils.parseDecimalInt(ids.slice(i * itemLength, (i + 1) * itemLength - 1));\n }\n return {\n aid: number,\n atomList: new AtomList({\n notList: notList,\n ids: list\n })\n };\n}\nfunction parsePropertyLines(ctab, ctabLines, shift, end, sGroups, rLogic) {\n var props = new Pool();\n while (shift < end) {\n var line = ctabLines[shift];\n if (line.charAt(0) == 'A') {\n var propValue = ctabLines[++shift];\n var isPseudo = /'.+'/.test(propValue);\n if (isPseudo && !props.get('pseudo')) props.set('pseudo', new Pool());\n if (!isPseudo && !props.get('alias')) props.set('alias', new Pool());\n if (isPseudo) propValue = propValue.replace(/'/g, '');\n props.get(isPseudo ? 'pseudo' : 'alias').set(utils.parseDecimalInt(line.slice(3, 6)) - 1, propValue);\n } else if (line.charAt(0) == 'M') {\n var type = line.slice(3, 6);\n var propertyData = line.slice(6);\n if (type == 'END') {\n break;\n } else if (type == 'CHG') {\n if (!props.get('charge')) props.set('charge', sGroup.readKeyValuePairs(propertyData));\n } else if (type == 'RAD') {\n if (!props.get('radical')) props.set('radical', sGroup.readKeyValuePairs(propertyData));\n } else if (type == 'ISO') {\n if (!props.get('isotope')) props.set('isotope', sGroup.readKeyValuePairs(propertyData));\n } else if (type == 'RBC') {\n if (!props.get('ringBondCount')) props.set('ringBondCount', sGroup.readKeyValuePairs(propertyData));\n } else if (type == 'SUB') {\n if (!props.get('substitutionCount')) props.set('substitutionCount', sGroup.readKeyValuePairs(propertyData));\n } else if (type == 'UNS') {\n if (!props.get('unsaturatedAtom')) props.set('unsaturatedAtom', sGroup.readKeyValuePairs(propertyData));\n } else if (type == 'RGP') {\n if (!props.get('rglabel')) props.set('rglabel', new Pool());\n var rglabels = props.get('rglabel');\n var a2rs = sGroup.readKeyMultiValuePairs(propertyData);\n for (var a2ri = 0; a2ri < a2rs.length; a2ri++) {\n var a2r = a2rs[a2ri];\n rglabels.set(a2r[0], (rglabels.get(a2r[0]) || 0) | 1 << a2r[1] - 1);\n }\n } else if (type == 'LOG') {\n propertyData = propertyData.slice(4);\n var rgid = utils.parseDecimalInt(propertyData.slice(0, 3).trim());\n var iii = utils.parseDecimalInt(propertyData.slice(4, 7).trim());\n var hhh = utils.parseDecimalInt(propertyData.slice(8, 11).trim());\n var ooo = propertyData.slice(12).trim();\n var logic = {};\n if (iii > 0) logic.ifthen = iii;\n logic.resth = hhh == 1;\n logic.range = ooo;\n rLogic[rgid] = logic;\n } else if (type == 'APO') {\n if (!props.get('attpnt')) props.set('attpnt', sGroup.readKeyValuePairs(propertyData));\n } else if (type == 'ALS') {\n var pool = parsePropertyLineAtomList(utils.partitionLine(propertyData, [1, 3, 3, 1, 1, 1]), utils.partitionLineFixed(propertyData.slice(10), 4, false));\n if (!props.get('atomList')) props.set('atomList', new Pool());\n if (!props.get('label')) props.set('label', new Pool());\n pool.forEach(function (atomList, aid) {\n props.get('label').set(aid, 'L#');\n props.get('atomList').set(aid, atomList);\n });\n } else if (type == 'STY') {\n sGroup.initSGroup(sGroups, propertyData);\n } else if (type == 'SST') {\n sGroup.applySGroupProp(sGroups, 'subtype', propertyData);\n } else if (type == 'SLB') {\n sGroup.applySGroupProp(sGroups, 'label', propertyData, true);\n } else if (type == 'SPL') {\n sGroup.applySGroupProp(sGroups, 'parent', propertyData, true, true);\n } else if (type == 'SCN') {\n sGroup.applySGroupProp(sGroups, 'connectivity', propertyData);\n } else if (type == 'SAL') {\n sGroup.applySGroupArrayProp(sGroups, 'atoms', propertyData, -1);\n } else if (type == 'SBL') {\n sGroup.applySGroupArrayProp(sGroups, 'bonds', propertyData, -1);\n } else if (type == 'SPA') {\n sGroup.applySGroupArrayProp(sGroups, 'patoms', propertyData, -1);\n } else if (type == 'SMT') {\n var sid = utils.parseDecimalInt(propertyData.slice(0, 4)) - 1;\n sGroups[sid].data.subscript = propertyData.slice(4).trim();\n } else if (type == 'SDT') {\n sGroup.applyDataSGroupDesc(sGroups, propertyData);\n } else if (type == 'SDD') {\n sGroup.applyDataSGroupInfoLine(sGroups, propertyData);\n } else if (type == 'SCD') {\n sGroup.applyDataSGroupDataLine(sGroups, propertyData, false);\n } else if (type == 'SED') {\n sGroup.applyDataSGroupDataLine(sGroups, propertyData, true);\n }\n }\n ++shift;\n }\n return props;\n}\nfunction applyAtomProp(atoms, values, propId) {\n values.forEach(function (propVal, aid) {\n atoms.get(aid)[propId] = propVal;\n });\n}\nfunction parseCTabV2000(ctabLines, countsSplit) {\n var ctab = new Struct();\n var i;\n var atomCount = utils.parseDecimalInt(countsSplit[0]);\n var bondCount = utils.parseDecimalInt(countsSplit[1]);\n var atomListCount = utils.parseDecimalInt(countsSplit[2]);\n var isAbs = utils.parseDecimalInt(countsSplit[4]) === 1;\n var isAnd = utils.parseDecimalInt(countsSplit[4]) === 0;\n var stextLinesCount = utils.parseDecimalInt(countsSplit[5]);\n var propertyLinesCount = utils.parseDecimalInt(countsSplit[10]);\n var shift = 0;\n var atomLines = ctabLines.slice(shift, shift + atomCount);\n shift += atomCount;\n var bondLines = ctabLines.slice(shift, shift + bondCount);\n shift += bondCount;\n var atomListLines = ctabLines.slice(shift, shift + atomListCount);\n shift += atomListCount + stextLinesCount;\n var atoms = atomLines.map(parseAtomLine);\n atoms.forEach(function (atom) {\n return ctab.atoms.add(atom);\n });\n var bonds = bondLines.map(parseBondLine);\n bonds.forEach(function (bond) {\n if (bond.stereo && isAbs) ctab.atoms.get(bond.begin).stereoLabel = StereoLabel.Abs;\n if (bond.stereo && isAnd) ctab.atoms.get(bond.begin).stereoLabel = \"\".concat(StereoLabel.And, \"1\");\n ctab.bonds.add(bond);\n });\n var atomLists = atomListLines.map(parseAtomListLine);\n atomLists.forEach(function (pair) {\n ctab.atoms.get(pair.aid).atomList = pair.atomList;\n ctab.atoms.get(pair.aid).label = 'L#';\n });\n var sGroups = {};\n var rLogic = {};\n var props = parsePropertyLines(ctab, ctabLines, shift, Math.min(ctabLines.length, shift + propertyLinesCount), sGroups, rLogic);\n props.forEach(function (values, propId) {\n applyAtomProp(ctab.atoms, values, propId);\n });\n var atomMap = {};\n var sid;\n for (sid in sGroups) {\n var sg = sGroups[sid];\n if (sg.type === 'DAT' && sg.atoms.length === 0) {\n var parent = sGroups[sid].parent;\n if (parent >= 0) {\n var psg = sGroups[parent - 1];\n if (psg.type === 'GEN') sg.atoms = [].slice.call(psg.atoms);\n }\n }\n }\n for (sid in sGroups) {\n sGroup.loadSGroup(ctab, sGroups[sid], atomMap);\n }\n var emptyGroups = [];\n for (sid in sGroups) {\n SGroup.filter(ctab, sGroups[sid], atomMap);\n if (sGroups[sid].atoms.length === 0 && !sGroups[sid].allAtoms) emptyGroups.push(+sid);\n }\n for (i = 0; i < emptyGroups.length; ++i) {\n ctab.sGroupForest.remove(emptyGroups[i]);\n ctab.sgroups[\"delete\"](emptyGroups[i]);\n }\n for (var id in rLogic) {\n var rgid = parseInt(id, 10);\n ctab.rgroups.set(rgid, new RGroup(rLogic[rgid]));\n }\n return ctab;\n}\nfunction parseRg2000(\nctabLines)\n{\n ctabLines = ctabLines.slice(7);\n if (ctabLines[0].trim() !== '$CTAB') throw new Error('RGFile format invalid');\n var i = 1;\n while (ctabLines[i].charAt(0) !== '$') {\n i++;\n }\n if (ctabLines[i].trim() !== '$END CTAB') throw new Error('RGFile format invalid');\n var coreLines = ctabLines.slice(1, i);\n ctabLines = ctabLines.slice(i + 1);\n var fragmentLines = {};\n while (true) {\n if (ctabLines.length === 0) throw new Error('Unexpected end of file');\n var line = ctabLines[0].trim();\n if (line === '$END MOL') {\n ctabLines = ctabLines.slice(1);\n break;\n }\n if (line !== '$RGP') throw new Error('RGFile format invalid');\n var rgid = parseInt(ctabLines[1].trim(), 10);\n fragmentLines[rgid] = [];\n ctabLines = ctabLines.slice(2);\n while (true) {\n if (ctabLines.length === 0) throw new Error('Unexpected end of file');\n line = ctabLines[0].trim();\n if (line === '$END RGP') {\n ctabLines = ctabLines.slice(1);\n break;\n }\n if (line !== '$CTAB') throw new Error('RGFile format invalid');\n i = 1;\n while (ctabLines[i].charAt(0) !== '$') {\n i++;\n }\n if (ctabLines[i].trim() !== '$END CTAB') throw new Error('RGFile format invalid');\n fragmentLines[rgid].push(ctabLines.slice(1, i));\n ctabLines = ctabLines.slice(i + 1);\n }\n }\n var core = parseCTab(coreLines);\n var frag = {};\n {\n for (var strId in fragmentLines) {\n var id = parseInt(strId, 10);\n frag[id] = [];\n for (var j = 0; j < fragmentLines[id].length; ++j) {\n frag[id].push(parseCTab(fragmentLines[id][j]));\n }\n }\n }\n return rgMerge(core, frag);\n}\nfunction parseRxn2000(\nctabLines, shouldReactionRelayout)\n{\n ctabLines = ctabLines.slice(4);\n var countsSplit = utils.partitionLine(ctabLines[0], utils.fmtInfo.rxnItemsPartition);\n var nReactants = countsSplit[0] - 0,\n nProducts = countsSplit[1] - 0,\n nAgents = countsSplit[2] - 0;\n ctabLines = ctabLines.slice(1);\n var mols = [];\n while (ctabLines.length > 0 && ctabLines[0].substr(0, 4) == '$MOL') {\n ctabLines = ctabLines.slice(1);\n var n = 0;\n while (n < ctabLines.length && ctabLines[n].substr(0, 4) != '$MOL') {\n n++;\n }\n var lines = ctabLines.slice(0, n);\n var struct;\n if (lines[0].search('\\\\$MDL') == 0) {\n struct = parseRg2000(lines);\n } else {\n struct = parseCTab(lines.slice(3));\n struct.name = lines[0].trim();\n }\n mols.push(struct);\n ctabLines = ctabLines.slice(n);\n }\n return utils.rxnMerge(mols, nReactants, nProducts, nAgents, shouldReactionRelayout);\n}\nfunction parseCTab(\nctabLines)\n{\n var countsSplit = utils.partitionLine(ctabLines[0], utils.fmtInfo.countsLinePartition);\n ctabLines = ctabLines.slice(1);\n return parseCTabV2000(ctabLines, countsSplit);\n}\nfunction rgMerge(scaffold, rgroups)\n{\n var ret = new Struct();\n scaffold.mergeInto(ret, null, null, false, true);\n Object.keys(rgroups).forEach(function (id) {\n var rgid = parseInt(id, 10);\n var _loop = function _loop(j) {\n var ctab = rgroups[rgid][j];\n ctab.rgroups.set(rgid, new RGroup());\n var frag = {};\n var frid = ctab.frags.add(frag);\n ctab.rgroups.get(rgid).frags.add(frid);\n ctab.atoms.forEach(function (atom) {\n atom.fragment = frid;\n });\n ctab.mergeInto(ret);\n };\n for (var j = 0; j < rgroups[rgid].length; ++j) {\n _loop(j);\n }\n });\n return ret;\n}\nfunction labelsListToIds(labels) {\n var ids = [];\n for (var i = 0; i < labels.length; ++i) {\n var element = Elements.get(labels[i].trim());\n if (element) {\n ids.push(element.number);\n }\n }\n return ids;\n}\nfunction parsePropertyLineAtomList(hdr, lst) {\n var aid = utils.parseDecimalInt(hdr[1]) - 1;\n var count = utils.parseDecimalInt(hdr[2]);\n var notList = hdr[4].trim() == 'T';\n var ids = labelsListToIds(lst.slice(0, count));\n var ret = new Pool();\n ret.set(aid, new AtomList({\n notList: notList,\n ids: ids\n }));\n return ret;\n}\nvar v2000 = {\n parseCTabV2000: parseCTabV2000,\n parseRg2000: parseRg2000,\n parseRxn2000: parseRxn2000\n};\n\nfunction parseAtomLineV3000(line) {\n var split, subsplit, key, value, i;\n split = spaceparsplit(line);\n var params = {\n pp: new Vec2(parseFloat(split[2]), -parseFloat(split[3]), parseFloat(split[4])),\n aam: split[5].trim()\n };\n var label = split[1].trim();\n if (label.charAt(0) == '\"' && label.charAt(label.length - 1) == '\"') label = label.substr(1, label.length - 2);\n if (label.charAt(label.length - 1) == ']') {\n label = label.substr(0, label.length - 1);\n var atomListParams = {};\n atomListParams.notList = false;\n if (label.substr(0, 5) == 'NOT [') {\n atomListParams.notList = true;\n label = label.substr(5);\n } else if (label.charAt(0) != '[') {\n throw new Error(\"Error: atom list expected, found '\" + label + \"'\");\n } else {\n label = label.substr(1);\n }\n atomListParams.ids = labelsListToIds$1(label.split(','));\n params['atomList'] = new AtomList(atomListParams);\n params['label'] = 'L#';\n } else {\n params['label'] = label;\n }\n split.splice(0, 6);\n for (i = 0; i < split.length; ++i) {\n subsplit = splitonce(split[i], '=');\n key = subsplit[0];\n value = subsplit[1];\n if (key in utils.fmtInfo.v30atomPropMap) {\n var ival = utils.parseDecimalInt(value);\n if (key == 'VAL') {\n if (ival == 0) continue;\n if (ival == -1) ival = 0;\n }\n params[utils.fmtInfo.v30atomPropMap[key]] = ival;\n } else if (key == 'RGROUPS') {\n value = value.trim().substr(1, value.length - 2);\n var rgrsplit = value.split(' ').slice(1);\n params.rglabel = 0;\n for (var j = 0; j < rgrsplit.length; ++j) {\n params.rglabel |= 1 << rgrsplit[j] - 1;\n }\n } else if (key == 'ATTCHPT') {\n params.attpnt = value.trim() - 0;\n }\n }\n return new Atom(params);\n}\nfunction parseBondLineV3000(line) {\n var split, subsplit, key, value, i;\n split = spaceparsplit(line);\n var params = {\n begin: utils.parseDecimalInt(split[2]) - 1,\n end: utils.parseDecimalInt(split[3]) - 1,\n type: utils.fmtInfo.bondTypeMap[utils.parseDecimalInt(split[1])]\n };\n split.splice(0, 4);\n for (i = 0; i < split.length; ++i) {\n subsplit = splitonce(split[i], '=');\n key = subsplit[0];\n value = subsplit[1];\n if (key == 'CFG') {\n params.stereo = utils.fmtInfo.v30bondStereoMap[utils.parseDecimalInt(value)];\n if (params.type == Bond.PATTERN.TYPE.DOUBLE && params.stereo == Bond.PATTERN.STEREO.EITHER) params.stereo = Bond.PATTERN.STEREO.CIS_TRANS;\n } else if (key == 'TOPO') {\n params.topology = utils.fmtInfo.bondTopologyMap[utils.parseDecimalInt(value)];\n } else if (key == 'RXCTR') {\n params.reactingCenterStatus = utils.parseDecimalInt(value);\n } else if (key == 'STBOX') {\n params.stereoCare = utils.parseDecimalInt(value);\n }\n }\n return new Bond(params);\n}\nfunction v3000parseCollection(ctab, ctabLines, shift) {\n shift++;\n while (ctabLines[shift].trim() != 'M V30 END COLLECTION') {\n shift++;\n }\n shift++;\n return shift;\n}\nfunction v3000parseSGroup(ctab, ctabLines, sgroups, atomMap, shift) {\n var line = '';\n shift++;\n while (shift < ctabLines.length) {\n line = stripV30(ctabLines[shift++]).trim();\n if (line.trim() == 'END SGROUP') return shift;\n while (line.charAt(line.length - 1) == '-') {\n line = (line.substr(0, line.length - 1) + stripV30(ctabLines[shift++])).trim();\n }\n var split = splitSGroupDef(line);\n var type = split[1];\n var sg = new SGroup(type);\n sg.number = split[0] - 0;\n sg.type = type;\n sg.label = split[2] - 0;\n sgroups[sg.number] = sg;\n var props = {};\n for (var i = 3; i < split.length; ++i) {\n var subsplit = splitonce(split[i], '=');\n if (subsplit.length != 2) throw new Error(\"A record of form AAA=BBB or AAA=(...) expected, got '\" + split[i] + \"'\");\n var name = subsplit[0];\n if (!(name in props)) props[name] = [];\n props[name].push(subsplit[1]);\n }\n sg.atoms = parseBracedNumberList(props['ATOMS'][0], -1);\n if (props['PATOMS']) sg.patoms = parseBracedNumberList(props['PATOMS'][0], -1);\n sg.bonds = props['BONDS'] ? parseBracedNumberList(props['BONDS'][0], -1) : [];\n var brkxyzStrs = props['BRKXYZ'];\n sg.brkxyz = [];\n if (brkxyzStrs) {\n for (var j = 0; j < brkxyzStrs.length; ++j) {\n sg.brkxyz.push(parseBracedNumberList(brkxyzStrs[j]));\n }\n }\n if (props['MULT']) sg.data.subscript = props['MULT'][0] - 0;\n if (props['LABEL']) sg.data.subscript = props['LABEL'][0].trim();\n if (props['CONNECT']) sg.data.connectivity = props['CONNECT'][0].toLowerCase();\n if (props['FIELDDISP']) sGroup.applyDataSGroupInfo(sg, stripQuotes(props['FIELDDISP'][0]));\n if (props['FIELDDATA']) sGroup.applyDataSGroupData(sg, props['FIELDDATA'][0], true);\n if (props['FIELDNAME']) sGroup.applyDataSGroupName(sg, props['FIELDNAME'][0]);\n if (props['QUERYTYPE']) sGroup.applyDataSGroupQuery(sg, props['QUERYTYPE'][0]);\n if (props['QUERYOP']) sGroup.applyDataSGroupQueryOp(sg, props['QUERYOP'][0]);\n sGroup.loadSGroup(ctab, sg, atomMap);\n }\n throw new Error('S-group declaration incomplete.');\n}\nfunction parseCTabV3000(ctabLines, norgroups) {\n var ctab = new Struct();\n var shift = 0;\n if (ctabLines[shift++].trim() != 'M V30 BEGIN CTAB') throw Error('CTAB V3000 invalid');\n if (ctabLines[shift].slice(0, 13) != 'M V30 COUNTS') throw Error('CTAB V3000 invalid');\n var vals = ctabLines[shift].slice(14).split(' ');\n var isAbs = utils.parseDecimalInt(vals[4]) === 1;\n shift++;\n if (ctabLines[shift].trim() == 'M V30 BEGIN ATOM') {\n shift++;\n var line;\n while (shift < ctabLines.length) {\n line = stripV30(ctabLines[shift++]).trim();\n if (line == 'END ATOM') break;\n while (line.charAt(line.length - 1) == '-') {\n line = (line.substring(0, line.length - 1) + stripV30(ctabLines[shift++])).trim();\n }\n ctab.atoms.add(parseAtomLineV3000(line));\n }\n if (ctabLines[shift].trim() == 'M V30 BEGIN BOND') {\n shift++;\n while (shift < ctabLines.length) {\n line = stripV30(ctabLines[shift++]).trim();\n if (line == 'END BOND') break;\n while (line.charAt(line.length - 1) == '-') {\n line = (line.substring(0, line.length - 1) + stripV30(ctabLines[shift++])).trim();\n }\n var bond = parseBondLineV3000(line);\n if (bond.stereo && isAbs) ctab.atoms.get(bond.begin).stereoLabel = 'abs';\n ctab.bonds.add(bond);\n }\n }\n var sgroups = {};\n var atomMap = {};\n while (ctabLines[shift].trim() != 'M V30 END CTAB') {\n if (ctabLines[shift].trim() == 'M V30 BEGIN COLLECTION')\n shift = v3000parseCollection(ctab, ctabLines, shift);else if (ctabLines[shift].trim() == 'M V30 BEGIN SGROUP') shift = v3000parseSGroup(ctab, ctabLines, sgroups, atomMap, shift);else throw Error('CTAB V3000 invalid');\n }\n }\n if (ctabLines[shift++].trim() != 'M V30 END CTAB') throw Error('CTAB V3000 invalid');\n if (!norgroups) readRGroups3000(ctab, ctabLines.slice(shift));\n return ctab;\n}\nfunction readRGroups3000(ctab,\nctabLines)\n{\n var rfrags = {};\n var rLogic = {};\n var shift = 0;\n while (shift < ctabLines.length && ctabLines[shift].search('M V30 BEGIN RGROUP') == 0) {\n var id = ctabLines[shift++].split(' ').pop();\n rfrags[id] = [];\n rLogic[id] = {};\n while (true) {\n var line = ctabLines[shift].trim();\n if (line.search('M V30 RLOGIC') == 0) {\n line = line.slice(13);\n var rlsplit = line.trim().split(/\\s+/g);\n var iii = utils.parseDecimalInt(rlsplit[0]);\n var hhh = utils.parseDecimalInt(rlsplit[1]);\n var ooo = rlsplit.slice(2).join(' ');\n var logic = {};\n if (iii > 0) logic.ifthen = iii;\n logic.resth = hhh == 1;\n logic.range = ooo;\n rLogic[id] = logic;\n shift++;\n continue;\n }\n if (line != 'M V30 BEGIN CTAB') throw Error('CTAB V3000 invalid');\n for (var i = 0; i < ctabLines.length; ++i) {\n if (ctabLines[shift + i].trim() == 'M V30 END CTAB') break;\n }\n var lines = ctabLines.slice(shift, shift + i + 1);\n var rfrag = parseCTabV3000(lines, true);\n rfrags[id].push(rfrag);\n shift = shift + i + 1;\n if (ctabLines[shift].trim() == 'M V30 END RGROUP') {\n shift++;\n break;\n }\n }\n }\n Object.keys(rfrags).forEach(function (rgid) {\n rfrags[rgid].forEach(function (rg) {\n rg.rgroups.set(rgid, new RGroup(rLogic[rgid]));\n var frid = rg.frags.add({});\n rg.rgroups.get(rgid).frags.add(frid);\n rg.atoms.forEach(function (atom) {\n atom.fragment = frid;\n });\n rg.mergeInto(ctab);\n });\n });\n}\nfunction parseRxn3000(\nctabLines, shouldReactionRelayout)\n{\n ctabLines = ctabLines.slice(4);\n var countsSplit = ctabLines[0].split(/\\s+/g).slice(3);\n var nReactants = countsSplit[0] - 0,\n nProducts = countsSplit[1] - 0,\n nAgents = countsSplit.length > 2 ? countsSplit[2] - 0 : 0;\n function findCtabEnd(i) {\n for (var j = i; j < ctabLines.length; ++j) {\n if (ctabLines[j].trim() == 'M V30 END CTAB') return j;\n }\n return void 0;\n }\n function findRGroupEnd(i) {\n for (var j = i; j < ctabLines.length; ++j) {\n if (ctabLines[j].trim() == 'M V30 END RGROUP') return j;\n }\n return void 0;\n }\n var molLinesReactants = [];\n var molLinesProducts = [];\n var current = null;\n var rGroups = [];\n for (var i = 0; i < ctabLines.length; ++i) {\n var line = ctabLines[i].trim();\n var j;\n if (line.startsWith('M V30 COUNTS')) ; else if (line == 'M END') {\n break;\n } else if (line == 'M V30 BEGIN PRODUCT') {\n current = molLinesProducts;\n } else if (line == 'M V30 END PRODUCT') {\n current = null;\n } else if (line == 'M V30 BEGIN REACTANT') {\n current = molLinesReactants;\n } else if (line == 'M V30 END REACTANT') {\n current = null;\n } else if (line.startsWith('M V30 BEGIN RGROUP')) {\n j = findRGroupEnd(i);\n rGroups.push(ctabLines.slice(i, j + 1));\n i = j;\n } else if (line == 'M V30 BEGIN CTAB') {\n j = findCtabEnd(i);\n current.push(ctabLines.slice(i, j + 1));\n i = j;\n } else {\n throw new Error('line unrecognized: ' + line);\n }\n }\n var mols = [];\n var molLines = molLinesReactants.concat(molLinesProducts);\n for (j = 0; j < molLines.length; ++j) {\n var mol = parseCTabV3000(molLines[j], countsSplit);\n mols.push(mol);\n }\n var ctab = utils.rxnMerge(mols, nReactants, nProducts, nAgents, shouldReactionRelayout);\n readRGroups3000(ctab, function (array) {\n var res = [];\n for (var k = 0; k < array.length; ++k) {\n res = res.concat(array[k]);\n }\n return res;\n }(rGroups));\n return ctab;\n}\nfunction spaceparsplit(line) {\n var split = [];\n var pc = 0;\n var c;\n var i;\n var i0 = -1;\n var quoted = false;\n for (i = 0; i < line.length; ++i) {\n c = line[i];\n if (c == '(') pc++;else if (c == ')') pc--;\n if (c == '\"') quoted = !quoted;\n if (!quoted && line[i] == ' ' && pc == 0) {\n if (i > i0 + 1) split.push(line.slice(i0 + 1, i));\n i0 = i;\n }\n }\n if (i > i0 + 1) split.push(line.slice(i0 + 1, i));\n return split;\n}\nfunction stripQuotes(str) {\n if (str[0] === '\"' && str[str.length - 1] === '\"') return str.substr(1, str.length - 2);\n return str;\n}\nfunction splitonce(line, delim) {\n var p = line.indexOf(delim);\n return [line.slice(0, p), line.slice(p + 1)];\n}\nfunction splitSGroupDef(line) {\n var split = [];\n var braceBalance = 0;\n var quoted = false;\n for (var i = 0; i < line.length; ++i) {\n var c = line.charAt(i);\n if (c == '\"') {\n quoted = !quoted;\n } else if (!quoted) {\n if (c == '(') {\n braceBalance++;\n } else if (c == ')') {\n braceBalance--;\n } else if (c == ' ' && braceBalance == 0) {\n split.push(line.slice(0, i));\n line = line.slice(i + 1).trim();\n i = 0;\n }\n }\n }\n if (braceBalance != 0) throw new Error('Brace balance broken. S-group properies invalid!');\n if (line.length > 0) split.push(line.trim());\n return split;\n}\nfunction parseBracedNumberList(line, shift) {\n if (!line) return null;\n var list = [];\n line = line.trim();\n line = line.substr(1, line.length - 2);\n var split = line.split(' ');\n shift = shift || 0;\n for (var i = 1; i < split.length; ++i) {\n var value = parseInt(split[i]);\n if (!isNaN(value))\n list.push(value + shift);\n }\n return list;\n}\nfunction stripV30(line) {\n if (line.slice(0, 7) != 'M V30 ') throw new Error('Prefix invalid');\n return line.slice(7);\n}\nfunction labelsListToIds$1(labels) {\n var ids = [];\n for (var i = 0; i < labels.length; ++i) {\n var element = Elements.get(labels[i].trim());\n if (element) {\n ids.push(element.number);\n }\n }\n return ids;\n}\nvar v3000 = {\n parseCTabV3000: parseCTabV3000,\n readRGroups3000: readRGroups3000,\n parseRxn3000: parseRxn3000\n};\n\nvar loadRGroupFragments = true;\nfunction parseMol(\nctabLines)\n{\n if (ctabLines[0].search('\\\\$MDL') === 0) {\n var _struct = v2000.parseRg2000(ctabLines);\n _struct.name = ctabLines[3].trim();\n return _struct;\n }\n var struct = parseCTab$1(ctabLines.slice(3));\n struct.name = ctabLines[0].trim();\n return struct;\n}\nfunction parseCTab$1(\nctabLines)\n{\n var countsSplit = partitionLine$1(ctabLines[0], utils.fmtInfo.countsLinePartition);\n var version = countsSplit[11].trim();\n ctabLines = ctabLines.slice(1);\n if (version === 'V2000') return v2000.parseCTabV2000(ctabLines, countsSplit);else if (version === 'V3000') return v3000.parseCTabV3000(ctabLines, !loadRGroupFragments);else throw new Error('Molfile version unknown: ' + version);\n}\nfunction parseRxn(\nctabLines, shouldReactionRelayout)\n{\n var split = ctabLines[0].trim().split(' ');\n if (split.length > 1 && split[1] === 'V3000') return v3000.parseRxn3000(ctabLines, shouldReactionRelayout);\n var struct = v2000.parseRxn2000(ctabLines, shouldReactionRelayout);\n struct.name = ctabLines[1].trim();\n return struct;\n}\nvar prepareForSaving = {\n MUL: SGroup.prepareMulForSaving,\n SRU: prepareSruForSaving,\n SUP: prepareSupForSaving,\n DAT: prepareDatForSaving,\n GEN: prepareGenForSaving\n};\nfunction prepareSruForSaving(sgroup, mol) {\n var xBonds = [];\n mol.bonds.forEach(function (bond, bid) {\n var a1 = mol.atoms.get(bond.begin);\n var a2 = mol.atoms.get(bond.end);\n if (a1.sgs.has(sgroup.id) && !a2.sgs.has(sgroup.id) || a2.sgs.has(sgroup.id) && !a1.sgs.has(sgroup.id))\n xBonds.push(bid);\n }, sgroup);\n if (xBonds.length !== 0 && xBonds.length !== 2) {\n throw {\n id: sgroup.id,\n 'error-type': 'cross-bond-number',\n message: 'Unsupported cross-bonds number'\n };\n }\n sgroup.bonds = xBonds;\n}\nfunction prepareSupForSaving(sgroup, mol) {\n var xBonds = [];\n mol.bonds.forEach(function (bond, bid) {\n var a1 = mol.atoms.get(bond.begin);\n var a2 = mol.atoms.get(bond.end);\n if (a1.sgs.has(sgroup.id) && !a2.sgs.has(sgroup.id) || a2.sgs.has(sgroup.id) && !a1.sgs.has(sgroup.id))\n xBonds.push(bid);\n }, sgroup);\n sgroup.bonds = xBonds;\n}\nfunction prepareGenForSaving(sgroup, mol) {\n}\nfunction prepareDatForSaving(sgroup, mol) {\n sgroup.atoms = SGroup.getAtoms(mol, sgroup);\n}\nvar saveToMolfile = {\n MUL: saveMulToMolfile,\n SRU: saveSruToMolfile,\n SUP: saveSupToMolfile,\n DAT: saveDatToMolfile,\n GEN: saveGenToMolfile\n};\nfunction saveMulToMolfile(sgroup, mol, sgMap, atomMap, bondMap) {\n var idstr = (sgMap[sgroup.id] + '').padStart(3);\n var lines = [];\n lines = lines.concat(makeAtomBondLines('SAL', idstr, Array.from(sgroup.atomSet.values()), atomMap));\n lines = lines.concat(makeAtomBondLines('SPA', idstr, Array.from(sgroup.parentAtomSet.values()), atomMap));\n lines = lines.concat(makeAtomBondLines('SBL', idstr, sgroup.bonds, bondMap));\n var smtLine = 'M SMT ' + idstr + ' ' + sgroup.data.mul;\n lines.push(smtLine);\n lines = lines.concat(bracketsToMolfile(mol, sgroup, idstr));\n return lines.join('\\n');\n}\nfunction saveSruToMolfile(sgroup, mol, sgMap, atomMap, bondMap) {\n var idstr = (sgMap[sgroup.id] + '').padStart(3);\n var lines = [];\n lines = lines.concat(makeAtomBondLines('SAL', idstr, sgroup.atoms, atomMap));\n lines = lines.concat(makeAtomBondLines('SBL', idstr, sgroup.bonds, bondMap));\n lines = lines.concat(bracketsToMolfile(mol, sgroup, idstr));\n return lines.join('\\n');\n}\nfunction saveSupToMolfile(sgroup, mol, sgMap, atomMap, bondMap) {\n var idstr = (sgMap[sgroup.id] + '').padStart(3);\n var lines = [];\n lines = lines.concat(makeAtomBondLines('SAL', idstr, sgroup.atoms, atomMap));\n lines = lines.concat(makeAtomBondLines('SBL', idstr, sgroup.bonds, bondMap));\n if (sgroup.data.name && sgroup.data.name !== '') lines.push('M SMT ' + idstr + ' ' + sgroup.data.name);\n return lines.join('\\n');\n}\nfunction saveDatToMolfile(sgroup, mol, sgMap, atomMap) {\n var idstr = (sgMap[sgroup.id] + '').padStart(3);\n var data = sgroup.data;\n var pp = sgroup.pp;\n if (!data.absolute) pp = pp.sub(SGroup.getMassCentre(mol, sgroup.atoms));\n var lines = [];\n lines = lines.concat(makeAtomBondLines('SAL', idstr, sgroup.atoms, atomMap));\n var sdtLine = 'M SDT ' + idstr + ' ' + (data.fieldName || '').padEnd(30) + (data.fieldType || '').padStart(2) + (data.units || '').padEnd(20) + (data.query || '').padStart(2);\n if (data.queryOp)\n sdtLine += data.queryOp.padEnd(80 - 65);\n lines.push(sdtLine);\n var sddLine = 'M SDD ' + idstr + ' ' + utils.paddedNum(pp.x, 10, 4) + utils.paddedNum(-pp.y, 10, 4) + ' ' + (\n data.attached ? 'A' : 'D') + (\n data.absolute ? 'A' : 'R') + (\n data.showUnits ? 'U' : ' ') +\n ' ' + (\n data.nCharnCharsToDisplay >= 0 ? utils.paddedNum(data.nCharnCharsToDisplay, 3) : 'ALL') +\n ' 1 ' + (\n data.tagChar || ' ') +\n ' ' + utils.paddedNum(data.daspPos, 1) +\n ' ';\n lines.push(sddLine);\n var val = normalizeNewlines(data.fieldValue).replace(/\\n*$/, '');\n var charsPerLine = 69;\n val.split('\\n').forEach(function (chars) {\n while (chars.length > charsPerLine) {\n lines.push('M SCD ' + idstr + ' ' + chars.slice(0, charsPerLine));\n chars = chars.slice(charsPerLine);\n }\n lines.push('M SED ' + idstr + ' ' + chars);\n });\n return lines.join('\\n');\n}\nfunction saveGenToMolfile(sgroup, mol, sgMap, atomMap, bondMap) {\n var idstr = (sgMap[sgroup.id] + '').padStart(3);\n var lines = [];\n lines = lines.concat(makeAtomBondLines('SAL', idstr, sgroup.atoms, atomMap));\n lines = lines.concat(makeAtomBondLines('SBL', idstr, sgroup.bonds, bondMap));\n lines = lines.concat(bracketsToMolfile(mol, sgroup, idstr));\n return lines.join('\\n');\n}\nfunction makeAtomBondLines(prefix, idstr, ids, map) {\n if (!ids) return [];\n var lines = [];\n for (var i = 0; i < Math.floor((ids.length + 14) / 15); ++i) {\n var rem = Math.min(ids.length - 15 * i, 15);\n var salLine = 'M ' + prefix + ' ' + idstr + ' ' + utils.paddedNum(rem, 2);\n for (var j = 0; j < rem; ++j) {\n salLine += ' ' + utils.paddedNum(map[ids[i * 15 + j]], 3);\n }\n lines.push(salLine);\n }\n return lines;\n}\nfunction bracketsToMolfile(mol, sg, idstr) {\n var atomSet = new Pile(sg.atoms);\n var crossBonds = SGroup.getCrossBonds(mol, atomSet);\n SGroup.bracketPos(sg, mol, crossBonds);\n var bb = sg.bracketBox;\n var d = sg.bracketDir;\n var n = d.rotateSC(1, 0);\n var brackets = SGroup.getBracketParameters(mol, crossBonds, atomSet, bb, d, n);\n var lines = [];\n for (var i = 0; i < brackets.length; ++i) {\n var bracket = brackets[i];\n var a0 = bracket.c.addScaled(bracket.n, -0.5 * bracket.h).yComplement();\n var a1 = bracket.c.addScaled(bracket.n, 0.5 * bracket.h).yComplement();\n var line = 'M SDI ' + idstr + utils.paddedNum(4, 3);\n var coord = [a0.x, a0.y, a1.x, a1.y];\n for (var j = 0; j < coord.length; ++j) {\n line += utils.paddedNum(coord[j], 10, 4);\n }\n lines.push(line);\n }\n return lines;\n}\nvar nlRe = /\\r\\n|[\\n\\r]/g;\nfunction normalizeNewlines(str) {\n return str.replace(nlRe, '\\n');\n}\nfunction partitionLine$1(\nstr,\nparts,\nwithspace) {\n var res = [];\n for (var i = 0, shift = 0; i < parts.length; ++i) {\n res.push(str.slice(shift, shift + parts[i]));\n if (withspace) shift++;\n shift += parts[i];\n }\n return res;\n}\nvar common = {\n parseCTab: parseCTab$1,\n parseMol: parseMol,\n parseRxn: parseRxn,\n prepareForSaving: prepareForSaving,\n saveToMolfile: saveToMolfile\n};\n\nvar END_V2000 = '2D 1 1.00000 0.00000 0';\nvar Molfile = function () {\n function Molfile() {\n _classCallCheck(this, Molfile);\n _defineProperty(this, \"molecule\", void 0);\n _defineProperty(this, \"molfile\", void 0);\n _defineProperty(this, \"reaction\", void 0);\n _defineProperty(this, \"mapping\", void 0);\n _defineProperty(this, \"bondMapping\", void 0);\n this.molecule = null;\n this.molfile = null;\n this.reaction = false;\n this.mapping = {};\n this.bondMapping = {};\n }\n _createClass(Molfile, [{\n key: \"parseCTFile\",\n value: function parseCTFile(molfileLines, shouldReactionRelayout) {\n var ret;\n if (molfileLines[0].search('\\\\$RXN') === 0) {\n ret = common.parseRxn(molfileLines, shouldReactionRelayout);\n } else {\n ret = common.parseMol(molfileLines);\n }\n ret.initHalfBonds();\n ret.initNeighbors();\n return ret;\n }\n }, {\n key: \"prepareSGroups\",\n value: function prepareSGroups(skipErrors, preserveIndigoDesc) {\n var mol = this.molecule;\n var toRemove = [];\n var errors = 0;\n this.molecule.sGroupForest.getSGroupsBFS().reverse().forEach(function (id) {\n var sgroup = mol.sgroups.get(id);\n var errorIgnore = false;\n try {\n common.prepareForSaving[sgroup.type](sgroup, mol);\n } catch (ex) {\n if (!skipErrors || typeof ex.id != 'number') {\n throw new Error(\"Error: \".concat(ex.message));\n }\n errorIgnore = true;\n }\n if (errorIgnore || !preserveIndigoDesc && /^INDIGO_.+_DESC$/i.test(sgroup.data.fieldName)) {\n errors += errorIgnore;\n toRemove.push(sgroup.id);\n }\n }, this);\n if (errors) {\n throw new Error('Warning: ' + errors + ' invalid S-groups were detected. They will be omitted.');\n }\n for (var i = 0; i < toRemove.length; ++i) {\n mol.sGroupDelete(toRemove[i]);\n }\n }\n }, {\n key: \"getCTab\",\n value: function getCTab(molecule, rgroups) {\n this.molecule = molecule.clone();\n this.prepareSGroups(false, false);\n this.molfile = '';\n this.writeCTab2000(rgroups);\n return this.molfile;\n }\n }, {\n key: \"saveMolecule\",\n value: function saveMolecule(molecule, skipSGroupErrors, norgroups, preserveIndigoDesc) {\n var _this = this;\n this.reaction = molecule.hasRxnArrow();\n this.molfile = '' + molecule.name;\n if (this.reaction) {\n if (molecule.rgroups.size > 0) {\n throw new Error('Reactions with r-groups are not supported at the moment');\n }\n var components = molecule.getComponents();\n var reactants = components.reactants;\n var products = components.products;\n var all = reactants.concat(products);\n this.molfile = '$RXN\\n' + molecule.name + '\\n\\n\\n' + utils.paddedNum(reactants.length, 3) + utils.paddedNum(products.length, 3) + utils.paddedNum(0, 3) + '\\n';\n for (var i = 0; i < all.length; ++i) {\n var saver = new Molfile();\n var submol = molecule.clone(all[i], null, true);\n var molfile = saver.saveMolecule(submol, false, true);\n this.molfile += '$MOL\\n' + molfile;\n }\n return this.molfile;\n }\n if (molecule.rgroups.size > 0) {\n if (norgroups) {\n molecule = molecule.getScaffold();\n } else {\n var scaffold = new Molfile().getCTab(molecule.getScaffold(), molecule.rgroups);\n this.molfile = '$MDL REV 1\\n$MOL\\n$HDR\\n' + molecule.name + '\\n\\n\\n$END HDR\\n';\n this.molfile += '$CTAB\\n' + scaffold + '$END CTAB\\n';\n molecule.rgroups.forEach(function (rg, rgid) {\n _this.molfile += '$RGP\\n';\n _this.writePaddedNumber(rgid, 3);\n _this.molfile += '\\n';\n rg.frags.forEach(function (fid) {\n var group = new Molfile().getCTab(molecule.getFragment(fid));\n _this.molfile += '$CTAB\\n' + group + '$END CTAB\\n';\n });\n _this.molfile += '$END RGP\\n';\n });\n this.molfile += '$END MOL\\n';\n return this.molfile;\n }\n }\n this.molecule = molecule.clone();\n this.prepareSGroups(skipSGroupErrors, preserveIndigoDesc);\n this.writeHeader();\n this.writeCTab2000();\n return this.molfile;\n }\n }, {\n key: \"writeHeader\",\n value: function writeHeader() {\n var date = new Date();\n this.writeCR();\n this.writeWhiteSpace(2);\n this.write('Ketcher');\n this.writeWhiteSpace();\n this.writeCR((date.getMonth() + 1 + '').padStart(2) + (date.getDate() + '').padStart(2) + (date.getFullYear() % 100 + '').padStart(2) + (date.getHours() + '').padStart(2) + (date.getMinutes() + '').padStart(2) + END_V2000);\n this.writeCR();\n }\n }, {\n key: \"write\",\n value: function write(str) {\n this.molfile += str;\n }\n }, {\n key: \"writeCR\",\n value: function writeCR(str) {\n if (arguments.length === 0) {\n str = '';\n }\n this.molfile += str + '\\n';\n }\n }, {\n key: \"writeWhiteSpace\",\n value: function writeWhiteSpace() {\n var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n if (arguments.length === 0) {\n length = 1;\n }\n this.write(' '.repeat(Math.max(length, 0)));\n }\n }, {\n key: \"writePadded\",\n value: function writePadded(str, width) {\n this.write(str);\n this.writeWhiteSpace(width - str.length);\n }\n }, {\n key: \"writePaddedNumber\",\n value: function writePaddedNumber(number, width) {\n var str = (number - 0).toString();\n this.writeWhiteSpace(width - str.length);\n this.write(str);\n }\n }, {\n key: \"writePaddedFloat\",\n value: function writePaddedFloat(number, width, precision) {\n this.write(utils.paddedNum(number, width, precision));\n }\n }, {\n key: \"writeCTab2000Header\",\n value: function writeCTab2000Header() {\n this.writePaddedNumber(this.molecule.atoms.size, 3);\n this.writePaddedNumber(this.molecule.bonds.size, 3);\n this.writePaddedNumber(0, 3);\n this.writePaddedNumber(0, 3);\n var isAbsFlag = Array.from(this.molecule.frags.values()).some(function (fr) {\n return fr ? fr.enhancedStereoFlag === StereoFlag.Abs : false;\n });\n this.writePaddedNumber(isAbsFlag ? 1 : 0, 3);\n this.writePaddedNumber(0, 3);\n this.writeWhiteSpace(12);\n this.writePaddedNumber(999, 3);\n this.writeCR(' V2000');\n }\n }, {\n key: \"writeCTab2000\",\n value: function writeCTab2000(rgroups) {\n var _this2 = this;\n this.writeCTab2000Header();\n this.mapping = {};\n var i = 1;\n var atomsIds = [];\n var atomsProps = [];\n this.molecule.atoms.forEach(function (atom, id) {\n var label = atom.label;\n if (atom.atomList != null) {\n label = 'L';\n atomsIds.push(id);\n } else if (atom['pseudo']) {\n if (atom['pseudo'].length > 3) {\n label = 'A';\n atomsProps.push({\n id: id,\n value: \"'\".concat(atom['pseudo'], \"'\")\n });\n }\n } else if (atom['alias']) {\n atomsProps.push({\n id: id,\n value: atom['alias']\n });\n } else if (!Elements.get(atom.label) && ['A', 'Q', 'X', '*', 'R#'].indexOf(atom.label) === -1) {\n label = 'C';\n atomsProps.push({\n id: id,\n value: atom.label\n });\n }\n _this2.writeAtom(atom, label);\n _this2.mapping[id] = i++;\n }, this);\n this.bondMapping = {};\n i = 1;\n this.molecule.bonds.forEach(function (bond, id) {\n _this2.bondMapping[id] = i++;\n _this2.writeBond(bond);\n }, this);\n while (atomsProps.length > 0) {\n this.writeAtomProps(atomsProps[0]);\n atomsProps.splice(0, 1);\n }\n var chargeList = [];\n var isotopeList = [];\n var radicalList = [];\n var rglabelList = [];\n var rglogicList = [];\n var aplabelList = [];\n var rbcountList = [];\n var unsaturatedList = [];\n var substcountList = [];\n this.molecule.atoms.forEach(function (atom, id) {\n if (atom.charge !== 0) {\n chargeList.push([id, atom.charge]);\n }\n if (atom.isotope !== 0) {\n isotopeList.push([id, atom.isotope]);\n }\n if (atom.radical !== 0) {\n radicalList.push([id, atom.radical]);\n }\n if (atom.rglabel != null && atom.label === 'R#') {\n for (var rgi = 0; rgi < 32; rgi++) {\n if (atom.rglabel & 1 << rgi) {\n rglabelList.push([id, rgi + 1]);\n }\n }\n }\n if (atom.attpnt != null) {\n aplabelList.push([id, atom.attpnt]);\n }\n if (atom.ringBondCount !== 0) {\n rbcountList.push([id, atom.ringBondCount]);\n }\n if (atom.substitutionCount !== 0) {\n substcountList.push([id, atom.substitutionCount]);\n }\n if (atom.unsaturatedAtom !== 0) {\n unsaturatedList.push([id, atom.unsaturatedAtom]);\n }\n });\n if (rgroups) {\n rgroups.forEach(function (rg, rgid) {\n if (rg.resth || rg.ifthen > 0 || rg.range.length > 0) {\n var line = ' 1 ' + utils.paddedNum(rgid, 3) + ' ' + utils.paddedNum(rg.ifthen, 3) + ' ' + utils.paddedNum(rg.resth ? 1 : 0, 3) + ' ' + rg.range;\n rglogicList.push(line);\n }\n });\n }\n this.writeAtomPropList('M CHG', chargeList);\n this.writeAtomPropList('M ISO', isotopeList);\n this.writeAtomPropList('M RAD', radicalList);\n this.writeAtomPropList('M RGP', rglabelList);\n for (var j = 0; j < rglogicList.length; ++j) {\n this.write('M LOG' + rglogicList[j] + '\\n');\n }\n this.writeAtomPropList('M APO', aplabelList);\n this.writeAtomPropList('M RBC', rbcountList);\n this.writeAtomPropList('M SUB', substcountList);\n this.writeAtomPropList('M UNS', unsaturatedList);\n if (atomsIds.length > 0) {\n for (var _j = 0; _j < atomsIds.length; ++_j) {\n var atomId = atomsIds[_j];\n var atomList = this.molecule.atoms.get(atomId).atomList;\n this.write('M ALS');\n this.writePaddedNumber(atomId + 1, 4);\n this.writePaddedNumber(atomList.ids.length, 3);\n this.writeWhiteSpace();\n this.write(atomList.notList ? 'T' : 'F');\n var labelList = atomList.labelList();\n for (var k = 0; k < labelList.length; ++k) {\n this.writeWhiteSpace();\n this.writePadded(labelList[k], 3);\n }\n this.writeCR();\n }\n }\n var sgmap = {};\n var cnt = 1;\n var sgmapback = {};\n var sgorder = this.molecule.sGroupForest.getSGroupsBFS();\n sgorder.forEach(function (id) {\n sgmapback[cnt] = id;\n sgmap[id] = cnt++;\n });\n for (var q = 1; q < cnt; ++q) {\n var id = sgmapback[q];\n var sgroup = this.molecule.sgroups.get(id);\n this.write('M STY');\n this.writePaddedNumber(1, 3);\n this.writeWhiteSpace(1);\n this.writePaddedNumber(q, 3);\n this.writeWhiteSpace(1);\n this.writePadded(sgroup.type, 3);\n this.writeCR();\n this.write('M SLB');\n this.writePaddedNumber(1, 3);\n this.writeWhiteSpace(1);\n this.writePaddedNumber(q, 3);\n this.writeWhiteSpace(1);\n this.writePaddedNumber(q, 3);\n this.writeCR();\n var parentId = this.molecule.sGroupForest.parent.get(id);\n if (parentId >= 0) {\n this.write('M SPL');\n this.writePaddedNumber(1, 3);\n this.writeWhiteSpace(1);\n this.writePaddedNumber(q, 3);\n this.writeWhiteSpace(1);\n this.writePaddedNumber(sgmap[parentId], 3);\n this.writeCR();\n }\n if (sgroup.type === 'SRU' && sgroup.data.connectivity) {\n var connectivity = \" \".concat(q.toString().padStart(3), \" \").concat((sgroup.data.connectivity || '').padEnd(3));\n this.write('M SCN');\n this.writePaddedNumber(1, 3);\n this.write(connectivity.toUpperCase());\n this.writeCR();\n }\n if (sgroup.type === 'SRU') {\n this.write('M SMT ');\n this.writePaddedNumber(q, 3);\n this.writeWhiteSpace();\n this.write(sgroup.data.subscript || 'n');\n this.writeCR();\n }\n this.writeCR(common.saveToMolfile[sgroup.type](sgroup, this.molecule, sgmap, this.mapping, this.bondMapping));\n }\n this.writeCR('M END');\n }\n }, {\n key: \"writeAtom\",\n value: function writeAtom(atom, atomLabel) {\n this.writePaddedFloat(atom.pp.x, 10, 4);\n this.writePaddedFloat(-atom.pp.y, 10, 4);\n this.writePaddedFloat(atom.pp.z, 10, 4);\n this.writeWhiteSpace();\n this.writePadded(atomLabel, 3);\n this.writePaddedNumber(0, 2);\n this.writePaddedNumber(0, 3);\n this.writePaddedNumber(0, 3);\n if (typeof atom.hCount === 'undefined') {\n atom.hCount = 0;\n }\n this.writePaddedNumber(atom.hCount, 3);\n if (typeof atom.stereoCare === 'undefined') {\n atom.stereoCare = 0;\n }\n this.writePaddedNumber(atom.stereoCare, 3);\n var number;\n if (atom.explicitValence < 0) {\n number = 0;\n } else if (atom.explicitValence === 0) {\n number = 15;\n } else {\n number = atom.explicitValence;\n }\n this.writePaddedNumber(number, 3);\n this.writePaddedNumber(0, 3);\n this.writePaddedNumber(0, 3);\n this.writePaddedNumber(0, 3);\n if (typeof atom.aam === 'undefined') {\n atom.aam = 0;\n }\n this.writePaddedNumber(atom.aam, 3);\n if (typeof atom.invRet === 'undefined') {\n atom.invRet = 0;\n }\n this.writePaddedNumber(atom.invRet, 3);\n if (typeof atom.exactChangeFlag === 'undefined') {\n atom.exactChangeFlag = 0;\n }\n this.writePaddedNumber(atom.exactChangeFlag, 3);\n this.writeCR();\n }\n }, {\n key: \"writeBond\",\n value: function writeBond(bond) {\n this.writePaddedNumber(this.mapping[bond.begin], 3);\n this.writePaddedNumber(this.mapping[bond.end], 3);\n this.writePaddedNumber(bond.type, 3);\n if (typeof bond.stereo === 'undefined') {\n bond.stereo = 0;\n }\n this.writePaddedNumber(bond.stereo, 3);\n this.writePadded(bond.xxx, 3);\n if (typeof bond.topology === 'undefined') {\n bond.topology = 0;\n }\n this.writePaddedNumber(bond.topology, 3);\n if (typeof bond.reactingCenterStatus === 'undefined') {\n bond.reactingCenterStatus = 0;\n }\n this.writePaddedNumber(bond.reactingCenterStatus, 3);\n this.writeCR();\n }\n }, {\n key: \"writeAtomProps\",\n value: function writeAtomProps(props) {\n this.write('A ');\n this.writePaddedNumber(props.id + 1, 3);\n this.writeCR();\n this.writeCR(props.value);\n }\n }, {\n key: \"writeAtomPropList\",\n value: function writeAtomPropList(propId, values) {\n var _this3 = this;\n while (values.length > 0) {\n var part = [];\n while (values.length > 0 && part.length < 8) {\n part.push(values[0]);\n values.splice(0, 1);\n }\n this.write(propId);\n this.writePaddedNumber(part.length, 3);\n part.forEach(function (value) {\n _this3.writeWhiteSpace();\n _this3.writePaddedNumber(_this3.mapping[value[0]], 3);\n _this3.writeWhiteSpace();\n _this3.writePaddedNumber(value[1], 3);\n });\n this.writeCR();\n }\n }\n }]);\n return Molfile;\n}();\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar MolSerializer = function () {\n function MolSerializer(options) {\n _classCallCheck(this, MolSerializer);\n _defineProperty(this, \"options\", void 0);\n this.options = _objectSpread$2(_objectSpread$2({}, MolSerializer.DefaultOptions), options);\n }\n _createClass(MolSerializer, [{\n key: \"deserialize\",\n value: function deserialize(content) {\n var molfile = new Molfile();\n var lines = content === null || content === void 0 ? void 0 : content.split(/\\r\\n|[\\n\\r]/g);\n try {\n return molfile.parseCTFile(lines, this.options.reactionRelayout);\n } catch (ex) {\n if (this.options.badHeaderRecover) {\n try {\n return molfile.parseCTFile(lines.slice(1), this.options.reactionRelayout);\n } catch (ex1) {\n }\n try {\n return molfile.parseCTFile([''].concat(lines), this.options.reactionRelayout);\n } catch (ex2) {\n }\n }\n throw ex;\n }\n }\n }, {\n key: \"serialize\",\n value: function serialize(struct) {\n return new Molfile().saveMolecule(struct, this.options.ignoreErrors, this.options.noRgroups, this.options.preserveIndigoDesc);\n }\n }]);\n return MolSerializer;\n}();\n_defineProperty(MolSerializer, \"DefaultOptions\", {\n badHeaderRecover: false,\n ignoreErrors: false,\n noRgroups: false,\n preserveIndigoDesc: false,\n reactionRelayout: false\n});\n\nfunction CisTrans(mol, neighborsFunc, context) {\n this.molecule = mol;\n this.bonds = new Pool();\n this.getNeighbors = neighborsFunc;\n this.context = context;\n}\nCisTrans.PARITY = {\n NONE: 0,\n CIS: 1,\n TRANS: 2\n};\nCisTrans.prototype.each = function (func) {\n this.bonds.forEach(func);\n};\nCisTrans.prototype.getParity = function (idx) {\n return this.bonds.get(idx).parity;\n};\nCisTrans.prototype.getSubstituents = function (idx) {\n return this.bonds.get(idx).substituents;\n};\nCisTrans.prototype.sameside = function (beg, end, neiBeg, neiEnd) {\n var diff = Vec2.diff(beg, end);\n var norm = new Vec2(-diff.y, diff.x);\n if (!norm.normalize()) return 0;\n var normBeg = Vec2.diff(neiBeg, beg);\n var normEnd = Vec2.diff(neiEnd, end);\n if (!normBeg.normalize()) return 0;\n if (!normEnd.normalize()) return 0;\n var prodBeg = Vec2.dot(normBeg, norm);\n var prodEnd = Vec2.dot(normEnd, norm);\n if (Math.abs(prodBeg) < 0.001 || Math.abs(prodEnd) < 0.001) return 0;\n return prodBeg * prodEnd > 0 ? 1 : -1;\n};\nCisTrans.prototype.samesides = function (iBeg, iEnd, iNeiBeg, iNeiEnd) {\n return this.sameside(this.molecule.atoms.get(iBeg).pp, this.molecule.atoms.get(iEnd).pp, this.molecule.atoms.get(iNeiBeg).pp, this.molecule.atoms.get(iNeiEnd).pp);\n};\nCisTrans.prototype.sortSubstituents = function (substituents) {\n var h0 = this.molecule.atoms.get(substituents[0]).pureHydrogen();\n var h1 = substituents[1] < 0 || this.molecule.atoms.get(substituents[1]).pureHydrogen();\n var h2 = this.molecule.atoms.get(substituents[2]).pureHydrogen();\n var h3 = substituents[3] < 0 || this.molecule.atoms.get(substituents[3]).pureHydrogen();\n if (h0 && h1) return false;\n if (h2 && h3) return false;\n if (h1) {\n substituents[1] = -1;\n } else if (h0) {\n substituents[0] = substituents[1];\n substituents[1] = -1;\n } else if (substituents[0] > substituents[1]) {\n swap(substituents, 0, 1);\n }\n if (h3) {\n substituents[3] = -1;\n } else if (h2) {\n substituents[2] = substituents[3];\n substituents[3] = -1;\n } else if (substituents[2] > substituents[3]) {\n swap(substituents, 2, 3);\n }\n return true;\n};\nCisTrans.prototype.isGeomStereoBond = function (bondIdx, substituents) {\n var bond = this.molecule.bonds.get(bondIdx);\n if (bond.type != Bond.PATTERN.TYPE.DOUBLE) return false;\n var label1 = this.molecule.atoms.get(bond.begin).label;\n var label2 = this.molecule.atoms.get(bond.end).label;\n if (label1 != 'C' && label1 != 'N' && label1 != 'Si' && label1 != 'Ge') return false;\n if (label2 != 'C' && label2 != 'N' && label2 != 'Si' && label2 != 'Ge') return false;\n var neiBegin = this.getNeighbors.call(this.context, bond.begin);\n var neiЕnd = this.getNeighbors.call(this.context, bond.end);\n if (neiBegin.length < 2 || neiBegin.length > 3 || neiЕnd.length < 2 || neiЕnd.length > 3) return false;\n substituents[0] = -1;\n substituents[1] = -1;\n substituents[2] = -1;\n substituents[3] = -1;\n var i;\n var nei;\n for (i = 0; i < neiBegin.length; i++) {\n nei = neiBegin[i];\n if (nei.bid == bondIdx) continue;\n if (this.molecule.bonds.get(nei.bid).type != Bond.PATTERN.TYPE.SINGLE) return false;\n if (substituents[0] == -1) substituents[0] = nei.aid;\n else substituents[1] = nei.aid;\n }\n for (i = 0; i < neiЕnd.length; i++) {\n nei = neiЕnd[i];\n if (nei.bid == bondIdx) continue;\n if (this.molecule.bonds.get(nei.bid).type != Bond.PATTERN.TYPE.SINGLE) return false;\n if (substituents[2] == -1) substituents[2] = nei.aid;\n else substituents[3] = nei.aid;\n }\n if (substituents[1] != -1 && this.samesides(bond.begin, bond.end, substituents[0], substituents[1]) != -1) return false;\n if (substituents[3] != -1 && this.samesides(bond.begin, bond.end, substituents[2], substituents[3]) != -1) return false;\n return true;\n};\nCisTrans.prototype.build = function (excludeBonds) {\n var _this = this;\n this.molecule.bonds.forEach(function (bond, bid) {\n var ct = {\n parity: 0,\n substituents: []\n };\n _this.bonds.set(bid, ct);\n if (Array.isArray(excludeBonds) && excludeBonds[bid]) return;\n if (!_this.isGeomStereoBond(bid, ct.substituents)) return;\n if (!_this.sortSubstituents(ct.substituents)) return;\n var sign = _this.samesides(bond.begin, bond.end, ct.substituents[0], ct.substituents[2]);\n if (sign === 1) ct.parity = CisTrans.PARITY.CIS;else if (sign === -1) ct.parity = CisTrans.PARITY.TRANS;\n });\n};\nfunction swap(arr, i1, i2) {\n var tmp = arr[i1];\n arr[i1] = arr[i2];\n arr[i2] = tmp;\n}\n\nfunction Dfs(mol, atomData, components, nReactants) {\n var _this = this;\n this.molecule = mol;\n this.atom_data = atomData;\n this.components = components;\n this.nComponentsInReactants = -1;\n this.nReactants = nReactants;\n this.vertices = new Array(this.molecule.atoms.size);\n this.molecule.atoms.forEach(function (atom, aid) {\n _this.vertices[aid] = new Dfs.VertexDesc();\n }, this);\n this.edges = new Array(this.molecule.bonds.size);\n this.molecule.bonds.forEach(function (bond, bid) {\n _this.edges[bid] = new Dfs.EdgeDesc();\n }, this);\n this.v_seq = [];\n}\nDfs.VertexDesc = function () {\n this.dfs_state = 0;\n this.parent_vertex = 0;\n this.parent_edge = 0;\n this.branches = 0;\n};\nDfs.EdgeDesc = function () {\n this.opening_cycles = 0;\n this.closing_cycle = 0;\n};\nDfs.SeqElem = function (vIdx, parVertex, parEdge) {\n this.idx = vIdx;\n this.parent_vertex = parVertex;\n this.parent_edge = parEdge;\n};\nDfs.prototype.walk = function () {\n var _this2 = this;\n var vStack = [];\n var i, j;\n var cid = 0;\n var component = 0;\n while (true) {\n if (vStack.length < 1) {\n var selected = -1;\n while (cid < this.components.length && selected == -1) {\n selected = this.components[cid].find(function (aid) {\n if (_this2.vertices[aid].dfs_state === 0) {\n selected = aid;\n return true;\n }\n return false;\n });\n if (selected === null) {\n selected = -1;\n cid++;\n }\n if (cid == this.nReactants) this.nComponentsInReactants = component;\n }\n if (selected < -1) {\n this.molecule.atoms.find(function (aid) {\n if (_this2.vertices[aid].dfs_state === 0) {\n selected = aid;\n return true;\n }\n return false;\n });\n }\n if (selected == -1) break;\n this.vertices[selected].parent_vertex = -1;\n this.vertices[selected].parent_edge = -1;\n vStack.push(selected);\n component++;\n }\n var vIdx = vStack.pop();\n var parentVertex = this.vertices[vIdx].parent_vertex;\n var seqElem = new Dfs.SeqElem(vIdx, parentVertex, this.vertices[vIdx].parent_edge);\n this.v_seq.push(seqElem);\n this.vertices[vIdx].dfs_state = 2;\n var atomD = this.atom_data[vIdx];\n for (i = 0; i < atomD.neighbours.length; i++) {\n var neiIdx = atomD.neighbours[i].aid;\n var edgeIdx = atomD.neighbours[i].bid;\n if (neiIdx == parentVertex) continue;\n if (this.vertices[neiIdx].dfs_state == 2) {\n this.edges[edgeIdx].closing_cycle = 1;\n j = vIdx;\n while (j != -1 && this.vertices[j].parent_vertex != neiIdx) {\n j = this.vertices[j].parent_vertex;\n }\n if (j == -1) throw new Error('cycle unwind error');\n this.edges[this.vertices[j].parent_edge].opening_cycles++;\n this.vertices[vIdx].branches++;\n seqElem = new Dfs.SeqElem(neiIdx, vIdx, edgeIdx);\n this.v_seq.push(seqElem);\n } else {\n if (this.vertices[neiIdx].dfs_state == 1) {\n j = vStack.indexOf(neiIdx);\n if (j == -1)\n throw new Error('internal: removing vertex from stack');\n vStack.splice(j, 1);\n var parent = this.vertices[neiIdx].parent_vertex;\n if (parent >= 0)\n this.vertices[parent].branches--;\n }\n this.vertices[vIdx].branches++;\n this.vertices[neiIdx].parent_vertex = vIdx;\n this.vertices[neiIdx].parent_edge = edgeIdx;\n this.vertices[neiIdx].dfs_state = 1;\n vStack.push(neiIdx);\n }\n }\n }\n};\nDfs.prototype.edgeClosingCycle = function (eIdx) {\n return this.edges[eIdx].closing_cycle !== 0;\n};\nDfs.prototype.numBranches = function (vIdx) {\n return this.vertices[vIdx].branches;\n};\nDfs.prototype.numOpeningCycles = function (eIdx) {\n return this.edges[eIdx].opening_cycles;\n};\nDfs.prototype.toString = function () {\n var str = '';\n this.v_seq.forEach(function (seqElem) {\n str += seqElem.idx + ' -> ';\n });\n str += '*';\n return str;\n};\n\nfunction Stereocenters(mol, neighborsFunc, context) {\n this.molecule = mol;\n this.atoms = new Pool();\n this.getNeighbors = neighborsFunc;\n this.context = context;\n}\nStereocenters.prototype.each = function (func, context) {\n this.atoms.forEach(func, context);\n};\nStereocenters.prototype.buildFromBonds = function (\nignoreErrors) {\n var _this = this;\n var atoms = this.molecule.atoms;\n var bonds = this.molecule.bonds;\n var alleneMask = new Pile();\n atoms.forEach(function (atom, aid) {\n var neiList = _this.getNeighbors.call(_this.context, aid);\n if (neiList.length !== 2) return false;\n var nei1 = neiList[0];\n var nei2 = neiList[1];\n if ([aid, nei1.aid, nei2.aid].findIndex(function (aid) {\n return ['C', 'Si'].indexOf(atoms.get(aid).label) < 0;\n }, _this) >= 0) return false;\n if ([nei1.bid, nei2.bid].findIndex(function (bid) {\n return bonds.get(bid).type !== Bond.PATTERN.TYPE.DOUBLE;\n }, _this) >= 0) return false;\n var nei1nei = _this.getNeighbors.call(_this.context, nei1.aid).filter(function (nei) {\n return nei.aid != aid;\n });\n var nei2nei = _this.getNeighbors.call(_this.context, nei2.aid).filter(function (nei) {\n return nei.aid != aid;\n });\n if (nei1nei.length < 1 || nei1nei.length > 2 || nei2nei.length < 1 || nei2nei.length > 2) return false;\n if (nei1nei.concat(nei2nei).findIndex(function (nei) {\n return bonds.get(nei.bid).type != Bond.PATTERN.TYPE.SINGLE;\n }, _this) >= 0) return false;\n if (nei1nei.concat(nei2nei).findIndex(function (nei) {\n return bonds.get(nei.bid).stereo == Bond.PATTERN.STEREO.EITHER;\n }, _this) >= 0) return false;\n alleneMask.add(nei1.aid).add(nei2.aid);\n return true;\n });\n if (alleneMask.size > 0)\n atoms.forEach(function (atom, aid) {\n if (alleneMask.has(aid)) return;\n var neiList = _this.getNeighbors.call(_this.context, aid);\n var stereocenter = false;\n neiList.find(function (nei) {\n var bond = this.molecule.bonds.get(nei.bid);\n if (bond.type === Bond.PATTERN.TYPE.SINGLE && bond.begin == aid) {\n if (bond.stereo === Bond.PATTERN.STEREO.UP || bond.stereo == Bond.PATTERN.STEREO.DOWN) {\n stereocenter = true;\n return true;\n }\n }\n return false;\n }, _this);\n if (!stereocenter) return;\n if (ignoreErrors) _this.buildOneCenter(aid\n );else _this.buildOneCenter(aid\n );\n });\n};\nStereocenters.allowed_stereocenters = [{\n elem: 'C',\n charge: 0,\n degree: 3,\n n_double_bonds: 0,\n implicit_degree: 4\n}, {\n elem: 'C',\n charge: 0,\n degree: 4,\n n_double_bonds: 0,\n implicit_degree: 4\n}, {\n elem: 'Si',\n charge: 0,\n degree: 3,\n n_double_bonds: 0,\n implicit_degree: 4\n}, {\n elem: 'Si',\n charge: 0,\n degree: 4,\n n_double_bonds: 0,\n implicit_degree: 4\n}, {\n elem: 'N',\n charge: 1,\n degree: 3,\n n_double_bonds: 0,\n implicit_degree: 4\n}, {\n elem: 'N',\n charge: 1,\n degree: 4,\n n_double_bonds: 0,\n implicit_degree: 4\n}, {\n elem: 'N',\n charge: 0,\n degree: 3,\n n_double_bonds: 0,\n implicit_degree: 3\n}, {\n elem: 'S',\n charge: 0,\n degree: 4,\n n_double_bonds: 2,\n implicit_degree: 4\n}, {\n elem: 'S',\n charge: 1,\n degree: 3,\n n_double_bonds: 0,\n implicit_degree: 3\n}, {\n elem: 'S',\n charge: 0,\n degree: 3,\n n_double_bonds: 1,\n implicit_degree: 3\n}, {\n elem: 'P',\n charge: 0,\n degree: 3,\n n_double_bonds: 0,\n implicit_degree: 3\n}, {\n elem: 'P',\n charge: 1,\n degree: 4,\n n_double_bonds: 0,\n implicit_degree: 4\n}, {\n elem: 'P',\n charge: 0,\n degree: 4,\n n_double_bonds: 1,\n implicit_degree: 4\n}];\nStereocenters.prototype.buildOneCenter = function (atomIdx\n) {\n var _this2 = this;\n var atom = this.molecule.atoms.get(atomIdx);\n var neiList = this.getNeighbors.call(this.context, atomIdx);\n var degree = neiList.length;\n var implicitDegree = -1;\n var stereocenter = {\n group: 0,\n type: 0,\n pyramid: []\n };\n var edgeIds = [];\n var lastAtomDir = 0;\n var nDoubleBonds = 0;\n stereocenter.pyramid[0] = -1;\n stereocenter.pyramid[1] = -1;\n stereocenter.pyramid[2] = -1;\n stereocenter.pyramid[3] = -1;\n var nPureHydrogens = 0;\n if (degree > 4) throw new Error('stereocenter with %d bonds are not supported' + degree);\n neiList.forEach(function (nei, neiIdx) {\n var neiAtom = _this2.molecule.atoms.get(nei.aid);\n var bond = _this2.molecule.bonds.get(nei.bid);\n edgeIds[neiIdx] = {\n edge_idx: nei.bid,\n nei_idx: nei.aid,\n rank: nei.aid,\n vec: Vec2.diff(neiAtom.pp, atom.pp).yComplement()\n };\n if (neiAtom.pureHydrogen()) {\n nPureHydrogens++;\n edgeIds[neiIdx].rank = 10000;\n } else if (neiAtom.label === 'H') {\n edgeIds[neiIdx].rank = 5000;\n }\n if (!edgeIds[neiIdx].vec.normalize()) throw new Error('zero bond length');\n if (bond.type === Bond.PATTERN.TYPE.TRIPLE) throw new Error('non-single bonds not allowed near stereocenter');else if (bond.type === Bond.PATTERN.TYPE.AROMATIC) throw new Error('aromatic bonds not allowed near stereocenter');else if (bond.type === Bond.PATTERN.TYPE.DOUBLE) nDoubleBonds++;\n });\n Stereocenters.allowed_stereocenters.find(function (as) {\n if (as.elem === atom.label && as.charge === atom.charge && as.degree === degree && as.n_double_bonds === nDoubleBonds) {\n implicitDegree = as.implicit_degree;\n return true;\n }\n return false;\n });\n if (implicitDegree === -1) throw new Error('unknown stereocenter configuration: ' + atom.label + ', charge ' + atom.charge + ', ' + degree + ' bonds (' + nDoubleBonds + ' double)');\n if (degree === 4 && nPureHydrogens > 1) throw new Error(nPureHydrogens + ' hydrogens near stereocenter');\n if (degree === 3 && implicitDegree === 4 && nPureHydrogens > 0) throw new Error('have hydrogen(s) besides implicit hydrogen near stereocenter');\n if (degree === 4) {\n if (edgeIds[0].rank > edgeIds[1].rank) swap$1(edgeIds, 0, 1);\n if (edgeIds[1].rank > edgeIds[2].rank) swap$1(edgeIds, 1, 2);\n if (edgeIds[2].rank > edgeIds[3].rank) swap$1(edgeIds, 2, 3);\n if (edgeIds[1].rank > edgeIds[2].rank) swap$1(edgeIds, 1, 2);\n if (edgeIds[0].rank > edgeIds[1].rank) swap$1(edgeIds, 0, 1);\n if (edgeIds[1].rank > edgeIds[2].rank) swap$1(edgeIds, 1, 2);\n var main1 = -1;\n var main2 = -1;\n var side1 = -1;\n var side2 = -1;\n var mainDir = 0;\n for (var neiIdx = 0; neiIdx < 4; neiIdx++) {\n var stereo = this.getBondStereo(atomIdx, edgeIds[neiIdx].edge_idx);\n if (stereo === Bond.PATTERN.STEREO.UP || stereo == Bond.PATTERN.STEREO.DOWN) {\n main1 = neiIdx;\n mainDir = stereo;\n break;\n }\n }\n if (main1 === -1) throw new Error('none of 4 bonds going from stereocenter is stereobond');\n var xyz1, xyz2;\n if (main2 === -1) {\n xyz1 = Stereocenters.xyzzy(edgeIds[main1].vec, edgeIds[(main1 + 1) % 4].vec, edgeIds[(main1 + 2) % 4].vec);\n xyz2 = Stereocenters.xyzzy(edgeIds[main1].vec, edgeIds[(main1 + 1) % 4].vec, edgeIds[(main1 + 3) % 4].vec);\n if (xyz1 + xyz2 == 3 || xyz1 + xyz2 == 12) {\n main2 = (main1 + 1) % 4;\n side1 = (main1 + 2) % 4;\n side2 = (main1 + 3) % 4;\n }\n }\n if (main2 == -1) {\n xyz1 = Stereocenters.xyzzy(edgeIds[main1].vec, edgeIds[(main1 + 2) % 4].vec, edgeIds[(main1 + 1) % 4].vec);\n xyz2 = Stereocenters.xyzzy(edgeIds[main1].vec, edgeIds[(main1 + 2) % 4].vec, edgeIds[(main1 + 3) % 4].vec);\n if (xyz1 + xyz2 == 3 || xyz1 + xyz2 == 12) {\n main2 = (main1 + 2) % 4;\n side1 = (main1 + 1) % 4;\n side2 = (main1 + 3) % 4;\n }\n }\n if (main2 == -1) {\n xyz1 = Stereocenters.xyzzy(edgeIds[main1].vec, edgeIds[(main1 + 3) % 4].vec, edgeIds[(main1 + 1) % 4].vec);\n xyz2 = Stereocenters.xyzzy(edgeIds[main1].vec, edgeIds[(main1 + 3) % 4].vec, edgeIds[(main1 + 2) % 4].vec);\n if (xyz1 + xyz2 == 3 || xyz1 + xyz2 == 12) {\n main2 = (main1 + 3) % 4;\n side1 = (main1 + 2) % 4;\n side2 = (main1 + 1) % 4;\n }\n }\n if (main2 == -1) throw new Error('internal error: can not find opposite bond');\n if (mainDir == Bond.PATTERN.STEREO.UP && this.getBondStereo(atomIdx, edgeIds[main2].edge_idx) == Bond.PATTERN.STEREO.DOWN) throw new Error('stereo types of the opposite bonds mismatch');\n if (mainDir == Bond.PATTERN.STEREO.DOWN && this.getBondStereo(atomIdx, edgeIds[main2].edge_idx) == Bond.PATTERN.STEREO.UP) throw new Error('stereo types of the opposite bonds mismatch');\n if (mainDir == this.getBondStereo(atomIdx, edgeIds[side1].edge_idx)) throw new Error('stereo types of non-opposite bonds match');\n if (mainDir == this.getBondStereo(atomIdx, edgeIds[side2].edge_idx)) throw new Error('stereo types of non-opposite bonds match');\n if (main1 == 3 || main2 == 3) lastAtomDir = mainDir;else lastAtomDir = mainDir == Bond.PATTERN.STEREO.UP ? Bond.PATTERN.STEREO.DOWN : Bond.PATTERN.STEREO.UP;\n sign = Stereocenters.sign(edgeIds[0].vec, edgeIds[1].vec, edgeIds[2].vec);\n if (lastAtomDir == Bond.PATTERN.STEREO.UP && sign > 0 || lastAtomDir == Bond.PATTERN.STEREO.DOWN && sign < 0) {\n stereocenter.pyramid[0] = edgeIds[0].nei_idx;\n stereocenter.pyramid[1] = edgeIds[1].nei_idx;\n stereocenter.pyramid[2] = edgeIds[2].nei_idx;\n } else {\n stereocenter.pyramid[0] = edgeIds[0].nei_idx;\n stereocenter.pyramid[1] = edgeIds[2].nei_idx;\n stereocenter.pyramid[2] = edgeIds[1].nei_idx;\n }\n stereocenter.pyramid[3] = edgeIds[3].nei_idx;\n } else if (degree === 3) {\n if (edgeIds[0].rank > edgeIds[1].rank) swap$1(edgeIds, 0, 1);\n if (edgeIds[1].rank > edgeIds[2].rank) swap$1(edgeIds, 1, 2);\n if (edgeIds[0].rank > edgeIds[1].rank) swap$1(edgeIds, 0, 1);\n var stereo0 = this.getBondStereo(atomIdx, edgeIds[0].edge_idx);\n var stereo1 = this.getBondStereo(atomIdx, edgeIds[1].edge_idx);\n var stereo2 = this.getBondStereo(atomIdx, edgeIds[2].edge_idx);\n var nUp = 0;\n var nDown = 0;\n nUp += stereo0 === Bond.PATTERN.STEREO.UP ? 1 : 0;\n nUp += stereo1 === Bond.PATTERN.STEREO.UP ? 1 : 0;\n nUp += stereo2 === Bond.PATTERN.STEREO.UP ? 1 : 0;\n nDown += stereo0 === Bond.PATTERN.STEREO.DOWN ? 1 : 0;\n nDown += stereo1 === Bond.PATTERN.STEREO.DOWN ? 1 : 0;\n nDown += stereo2 === Bond.PATTERN.STEREO.DOWN ? 1 : 0;\n if (implicitDegree == 4) {\n if (nUp == 3) throw new Error('all 3 bonds up near stereoatom');\n if (nDown == 3) throw new Error('all 3 bonds down near stereoatom');\n if (nUp == 0 && nDown == 0) throw new Error('no up/down bonds near stereoatom -- indefinite case');\n if (nUp == 1 && nDown == 1) throw new Error('one bond up, one bond down -- indefinite case');\n mainDir = 0;\n if (nUp == 2) {\n lastAtomDir = Bond.PATTERN.STEREO.DOWN;\n } else if (nDown == 2) {\n lastAtomDir = Bond.PATTERN.STEREO.UP;\n } else {\n main1 = -1;\n side1 = -1;\n side2 = -1;\n for (neiIdx = 0; neiIdx < 3; neiIdx++) {\n dir = this.getBondStereo(atomIdx, edgeIds[neiIdx].edge_idx);\n if (dir == Bond.PATTERN.STEREO.UP || dir == Bond.PATTERN.STEREO.DOWN) {\n main1 = neiIdx;\n mainDir = dir;\n side1 = (neiIdx + 1) % 3;\n side2 = (neiIdx + 2) % 3;\n break;\n }\n }\n if (main1 == -1) throw new Error('internal error: can not find up or down bond');\n var xyz = Stereocenters.xyzzy(edgeIds[side1].vec, edgeIds[side2].vec, edgeIds[main1].vec);\n if (xyz == 3 || xyz == 4) throw new Error('degenerate case for 3 bonds near stereoatom');\n if (xyz == 1) lastAtomDir = mainDir;else lastAtomDir = mainDir == Bond.PATTERN.STEREO.UP ? Bond.PATTERN.STEREO.DOWN : Bond.PATTERN.STEREO.UP;\n }\n var sign = Stereocenters.sign(edgeIds[0].vec, edgeIds[1].vec, edgeIds[2].vec);\n if (lastAtomDir == Bond.PATTERN.STEREO.UP && sign > 0 || lastAtomDir == Bond.PATTERN.STEREO.DOWN && sign < 0) {\n stereocenter.pyramid[0] = edgeIds[0].nei_idx;\n stereocenter.pyramid[1] = edgeIds[1].nei_idx;\n stereocenter.pyramid[2] = edgeIds[2].nei_idx;\n } else {\n stereocenter.pyramid[0] = edgeIds[0].nei_idx;\n stereocenter.pyramid[1] = edgeIds[2].nei_idx;\n stereocenter.pyramid[2] = edgeIds[1].nei_idx;\n }\n stereocenter.pyramid[3] = -1;\n } else {\n var dir;\n if (nDown > 0 && nUp > 0) throw new Error('one bond up, one bond down -- indefinite case');else if (nDown == 0 && nUp == 0) throw new Error('no up-down bonds attached to stereocenter');else if (nUp > 0) dir = 1;else dir = -1;\n if (Stereocenters.xyzzy(edgeIds[0].vec, edgeIds[1].vec, edgeIds[2].vec) === 1 || Stereocenters.xyzzy(edgeIds[0].vec, edgeIds[2].vec, edgeIds[1].vec) === 1 || Stereocenters.xyzzy(edgeIds[2].vec, edgeIds[1].vec, edgeIds[0].vec) === 1)\n dir = -dir;\n sign = Stereocenters.sign(edgeIds[0].vec, edgeIds[1].vec, edgeIds[2].vec);\n if (sign == dir) {\n stereocenter.pyramid[0] = edgeIds[0].nei_idx;\n stereocenter.pyramid[1] = edgeIds[2].nei_idx;\n stereocenter.pyramid[2] = edgeIds[1].nei_idx;\n } else {\n stereocenter.pyramid[0] = edgeIds[0].nei_idx;\n stereocenter.pyramid[1] = edgeIds[1].nei_idx;\n stereocenter.pyramid[2] = edgeIds[2].nei_idx;\n }\n stereocenter.pyramid[3] = -1;\n }\n }\n this.atoms.set(atomIdx, stereocenter);\n};\nStereocenters.prototype.getBondStereo = function (centerIdx, edgeIdx) {\n var bond = this.molecule.bonds.get(edgeIdx);\n if (centerIdx != bond.begin)\n return 0;\n return bond.stereo;\n};\nStereocenters.xyzzy = function (v1, v2, u) {\n var eps = 0.001;\n var sine1 = Vec2.cross(v1, v2);\n var cosine1 = Vec2.dot(v1, v2);\n var sine2 = Vec2.cross(v1, u);\n var cosine2 = Vec2.dot(v1, u);\n if (Math.abs(sine1) < eps) {\n if (Math.abs(sine2) < eps) throw new Error('degenerate case -- bonds overlap');\n return sine2 > 0 ? 4 : 8;\n }\n if (sine1 * sine2 < -eps * eps) return 2;\n if (cosine2 < cosine1) return 2;\n return 1;\n};\nStereocenters.sign = function (v1, v2, v3) {\n var res = (v1.x - v3.x) * (v2.y - v3.y) - (v1.y - v3.y) * (v2.x - v3.x);\n var eps = 0.001;\n if (res > eps) return 1;\n if (res < -eps) return -1;\n throw new Error('degenerate triangle');\n};\nStereocenters.isPyramidMappingRigid = function (mapping) {\n var arr = mapping.slice();\n var rigid = true;\n if (arr[0] > arr[1]) {\n swap$1(arr, 0, 1);\n rigid = !rigid;\n }\n if (arr[1] > arr[2]) {\n swap$1(arr, 1, 2);\n rigid = !rigid;\n }\n if (arr[2] > arr[3]) {\n swap$1(arr, 2, 3);\n rigid = !rigid;\n }\n if (arr[1] > arr[2]) {\n swap$1(arr, 1, 2);\n rigid = !rigid;\n }\n if (arr[0] > arr[1]) {\n swap$1(arr, 0, 1);\n rigid = !rigid;\n }\n if (arr[1] > arr[2]) {\n swap$1(arr, 1, 2);\n rigid = !rigid;\n }\n return rigid;\n};\nfunction swap$1(arr, i1, i2) {\n var tmp = arr[i1];\n arr[i1] = arr[i2];\n arr[i2] = tmp;\n}\n\nfunction Smiles() {\n this.smiles = '';\n this.writtenAtoms = [];\n this.writtenComponents = 0;\n this.ignoreErrors = false;\n}\nSmiles._Atom = function (hСount) {\n this.neighbours = [];\n this.aromatic = false;\n this.lowercase = false;\n this.chirality = 0;\n this.branch_cnt = 0;\n this.paren_written = false;\n this.h_count = hСount;\n this.parent = -1;\n};\nSmiles.prototype.isBondInRing = function (bid) {\n return this.inLoop[bid];\n};\nSmiles.prototype.saveMolecule = function (struct, ignoreErrors) {\n var _this = this;\n var i, j, k;\n if (!ignoreErrors) this.ignoreErrors = ignoreErrors;\n struct = struct.clone(undefined, undefined, !struct.hasRxnArrow(),\n undefined, undefined, undefined);\n struct.initHalfBonds();\n struct.initNeighbors();\n struct.sortNeighbors();\n struct.setImplicitHydrogen();\n struct.sgroups.forEach(function (sg) {\n if (sg.type === 'MUL') {\n try {\n SGroup.prepareMulForSaving(sg, struct);\n } catch (ex) {\n throw Error('Bad s-group (' + ex.message + ')');\n }\n }\n });\n this.atoms = new Array(struct.atoms.size);\n struct.atoms.forEach(function (atom, aid) {\n _this.atoms[aid] = new Smiles._Atom(atom.implicitH);\n });\n var allowedLowercase = ['B', 'C', 'N', 'O', 'P', 'S', 'Se', 'As'];\n struct.bonds.forEach(function (bond, bid) {\n if (bond.type === Bond.PATTERN.TYPE.AROMATIC) {\n _this.atoms[bond.begin].aromatic = true;\n if (allowedLowercase.indexOf(struct.atoms.get(bond.begin).label) !== -1) _this.atoms[bond.begin].lowercase = true;\n _this.atoms[bond.end].aromatic = true;\n if (allowedLowercase.indexOf(struct.atoms.get(bond.end).label) !== -1) _this.atoms[bond.end].lowercase = true;\n }\n _this.atoms[bond.begin].neighbours.push({\n aid: bond.end,\n bid: bid\n });\n _this.atoms[bond.end].neighbours.push({\n aid: bond.begin,\n bid: bid\n });\n });\n this.inLoop = function () {\n struct.prepareLoopStructure();\n var bondsInLoops = new Pile();\n struct.loops.forEach(function (loop) {\n if (loop.hbs.length <= 6) {\n var hbids = loop.hbs.map(function (hbid) {\n return struct.halfBonds.get(hbid).bid;\n });\n bondsInLoops = bondsInLoops.union(new Pile(hbids));\n }\n });\n var inLoop = {};\n bondsInLoops.forEach(function (bid) {\n inLoop[bid] = 1;\n });\n return inLoop;\n }();\n this.touchedCistransbonds = 0;\n this.markCisTrans(struct);\n var components = struct.getComponents();\n var componentsAll = components.reactants.concat(components.products);\n var walk = new Dfs(struct, this.atoms, componentsAll, components.reactants.length);\n walk.walk();\n this.atoms.forEach(function (atom) {\n atom.neighbours = [];\n });\n for (i = 0; i < walk.v_seq.length; i++) {\n var seqEl = walk.v_seq[i];\n var vIdx = seqEl.idx;\n var eIdx = seqEl.parent_edge;\n var vPrevIdx = seqEl.parent_vertex;\n if (eIdx >= 0) {\n var atom = this.atoms[vIdx];\n var openingCycles = walk.numOpeningCycles(eIdx);\n for (j = 0; j < openingCycles; j++) {\n this.atoms[vPrevIdx].neighbours.push({\n aid: -1,\n bid: -1\n });\n }\n if (walk.edgeClosingCycle(eIdx)) {\n for (k = 0; k < atom.neighbours.length; k++) {\n if (atom.neighbours[k].aid === -1) {\n atom.neighbours[k].aid = vPrevIdx;\n atom.neighbours[k].bid = eIdx;\n break;\n }\n }\n if (k === atom.neighbours.length) throw new Error('internal: can not put closing bond to its place');\n } else {\n atom.neighbours.push({\n aid: vPrevIdx,\n bid: eIdx\n });\n atom.parent = vPrevIdx;\n }\n this.atoms[vPrevIdx].neighbours.push({\n aid: vIdx,\n bid: eIdx\n });\n }\n }\n try {\n var stereocenters = new Stereocenters(struct, function (idx) {\n return this.atoms[idx].neighbours;\n }, this);\n stereocenters.buildFromBonds(this.ignoreErrors);\n stereocenters.each(function (sc, atomIdx) {\n var implicitHIdx = -1;\n if (sc.pyramid[3] == -1) implicitHIdx = 3;\n var pyramidMapping = [];\n var counter = 0;\n var atom = _this.atoms[atomIdx];\n if (atom.parent != -1) {\n for (k = 0; k < 4; k++) {\n if (sc.pyramid[k] == atom.parent) {\n pyramidMapping[counter++] = k;\n break;\n }\n }\n }\n if (implicitHIdx != -1) pyramidMapping[counter++] = implicitHIdx;\n for (j = 0; j != atom.neighbours.length; j++) {\n if (atom.neighbours[j].aid == atom.parent) continue;\n for (k = 0; k < 4; k++) {\n if (atom.neighbours[j].aid == sc.pyramid[k]) {\n if (counter >= 4) throw new Error('internal: pyramid overflow');\n pyramidMapping[counter++] = k;\n break;\n }\n }\n }\n if (counter == 4) {\n counter = pyramidMapping[0];\n pyramidMapping[0] = pyramidMapping[1];\n pyramidMapping[1] = pyramidMapping[2];\n pyramidMapping[2] = pyramidMapping[3];\n pyramidMapping[3] = counter;\n } else if (counter != 3) {\n throw new Error('cannot calculate chirality');\n }\n if (Stereocenters.isPyramidMappingRigid(pyramidMapping)) _this.atoms[atomIdx].chirality = 1;else _this.atoms[atomIdx].chirality = 2;\n });\n } catch (ex) {\n }\n var cycleNumbers = [];\n cycleNumbers.push(0);\n var firstComponent = true;\n for (i = 0; i < walk.v_seq.length; i++) {\n seqEl = walk.v_seq[i];\n vIdx = seqEl.idx;\n eIdx = seqEl.parent_edge;\n vPrevIdx = seqEl.parent_vertex;\n var writeAtom = true;\n if (vPrevIdx >= 0) {\n if (walk.numBranches(vPrevIdx) > 1) {\n if (this.atoms[vPrevIdx].branch_cnt > 0 && this.atoms[vPrevIdx].paren_written) this.smiles += ')';\n }\n openingCycles = walk.numOpeningCycles(eIdx);\n for (j = 0; j < openingCycles; j++) {\n for (k = 1; k < cycleNumbers.length; k++) {\n if (cycleNumbers[k] == -1)\n break;\n }\n if (k == cycleNumbers.length) cycleNumbers.push(vPrevIdx);else cycleNumbers[k] = vPrevIdx;\n this.writeCycleNumber(k);\n }\n if (vPrevIdx >= 0) {\n var branches = walk.numBranches(vPrevIdx);\n if (branches > 1 && this.atoms[vPrevIdx].branch_cnt < branches - 1) {\n if (walk.edgeClosingCycle(eIdx)) {\n this.atoms[vPrevIdx].paren_written = false;\n } else {\n this.smiles += '(';\n this.atoms[vPrevIdx].paren_written = true;\n }\n }\n this.atoms[vPrevIdx].branch_cnt++;\n if (this.atoms[vPrevIdx].branch_cnt > branches) throw new Error('unexpected branch');\n }\n var bond = struct.bonds.get(eIdx);\n var dir = 0;\n if (bond.type == Bond.PATTERN.TYPE.SINGLE) dir = this.calcBondDirection(struct, eIdx, vPrevIdx);\n if (dir == 1 && vIdx == bond.end || dir == 2 && vIdx == bond.begin) this.smiles += '/';else if (dir == 2 && vIdx == bond.end || dir == 1 && vIdx == bond.begin) this.smiles += '\\\\';else if (bond.type == Bond.PATTERN.TYPE.ANY) {\n this.smiles += '~';\n } else if (bond.type == Bond.PATTERN.TYPE.DOUBLE) {\n this.smiles += '=';\n } else if (bond.type == Bond.PATTERN.TYPE.TRIPLE) {\n this.smiles += '#';\n } else if (bond.type == Bond.PATTERN.TYPE.SINGLE_OR_AROMATIC) {\n this.smiles += '-,:';\n } else if (bond.type == Bond.PATTERN.TYPE.DOUBLE_OR_AROMATIC) {\n this.smiles += '=,:';\n } else if (bond.type == Bond.PATTERN.TYPE.SINGLE_OR_DOUBLE) {\n this.smiles += '-,=';\n } else if (bond.type == Bond.PATTERN.TYPE.AROMATIC && (!this.atoms[bond.begin].lowercase || !this.atoms[bond.end].lowercase || !this.isBondInRing(eIdx))) this.smiles += ':';\n else if (bond.type == Bond.PATTERN.TYPE.SINGLE && this.atoms[bond.begin].aromatic && this.atoms[bond.end].aromatic) this.smiles += '-';\n if (walk.edgeClosingCycle(eIdx)) {\n for (j = 1; j < cycleNumbers.length; j++) {\n if (cycleNumbers[j] == vIdx) break;\n }\n if (j == cycleNumbers.length) throw new Error('cycle number not found');\n this.writeCycleNumber(j);\n cycleNumbers[j] = -1;\n writeAtom = false;\n }\n } else {\n if (!firstComponent) {\n this.smiles += this.writtenComponents === walk.nComponentsInReactants && walk.nReactants !== 0 ? '>>' : '.';\n }\n firstComponent = false;\n this.writtenComponents++;\n }\n if (writeAtom) {\n this.writeAtom(struct, vIdx, this.atoms[vIdx].aromatic, this.atoms[vIdx].lowercase, this.atoms[vIdx].chirality);\n this.writtenAtoms.push(seqEl.idx);\n }\n }\n this.comma = false;\n this.writeRadicals(struct);\n if (this.comma) this.smiles += '|';\n return this.smiles;\n};\nSmiles.prototype.writeCycleNumber = function (n) {\n if (n > 0 && n < 10) this.smiles += n;else if (n >= 10 && n < 100) this.smiles += '%' + n;else if (n >= 100 && n < 1000) this.smiles += '%%' + n;else throw new Error('bad cycle number: ' + n);\n};\nSmiles.prototype.writeAtom = function (mol, idx, aromatic, lowercase, chirality) {\n var atom = mol.atoms.get(idx);\n var needBrackets = false;\n var hydro = -1;\n var aam = 0;\n if (atom.label == 'A') {\n this.smiles += '*';\n return;\n }\n if (atom.label == 'R' || atom.label == 'R#') {\n this.smiles += '[*]';\n return;\n }\n aam = atom.aam;\n if (atom.label != 'C' && atom.label != 'P' && atom.label != 'N' && atom.label != 'S' && atom.label != 'O' && atom.label != 'Cl' && atom.label != 'F' && atom.label != 'Br' && atom.label != 'B' && atom.label != 'I') needBrackets = true;\n if (atom.explicitValence >= 0 || atom.radical != 0 || chirality > 0 || aromatic && atom.label != 'C' && atom.label != 'O' || aromatic && atom.label == 'C' && this.atoms[idx].neighbours.length < 3 && this.atoms[idx].h_count == 0) hydro = this.atoms[idx].h_count;\n var label = atom.label;\n if (atom.atomList && !atom.atomList.notList) {\n label = atom.atomList.label();\n needBrackets = false;\n } else if (atom.isPseudo() || atom.atomList && atom.atomList.notList) {\n label = '*';\n needBrackets = true;\n } else if (chirality || atom.charge != 0 || atom.isotope > 0 || hydro >= 0 || aam > 0) {\n needBrackets = true;\n }\n if (needBrackets) {\n if (hydro == -1) hydro = this.atoms[idx].h_count;\n this.smiles += '[';\n }\n if (atom.isotope > 0) this.smiles += atom.isotope;\n if (lowercase) this.smiles += label.toLowerCase();else this.smiles += label;\n if (chirality > 0) {\n if (chirality == 1) this.smiles += '@';\n else this.smiles += '@@';\n if (atom.implicitH > 1) throw new Error(atom.implicitH + ' implicit H near stereocenter');\n }\n if (atom.label != 'H') {\n if (hydro > 1 || hydro == 0 && !needBrackets) this.smiles += 'H' + hydro;else if (hydro == 1) this.smiles += 'H';\n }\n if (atom.charge > 1) this.smiles += '+' + atom.charge;else if (atom.charge < -1) this.smiles += atom.charge;else if (atom.charge == 1) this.smiles += '+';else if (atom.charge == -1) this.smiles += '-';\n if (aam > 0) this.smiles += ':' + aam;\n if (needBrackets) this.smiles += ']';\n};\nSmiles.prototype.markCisTrans = function (mol) {\n var _this2 = this;\n this.cis_trans = new CisTrans(mol, function (idx) {\n return this.atoms[idx].neighbours;\n }, this);\n this.cis_trans.build();\n this.dbonds = new Array(mol.bonds.size);\n mol.bonds.forEach(function (bond, bid) {\n _this2.dbonds[bid] = {\n ctbond_beg: -1,\n ctbond_end: -1,\n saved: 0\n };\n });\n this.cis_trans.each(function (ct, bid) {\n var bond = mol.bonds.get(bid);\n if (ct.parity !== 0 && !_this2.isBondInRing(bid)) {\n var neiBeg = _this2.atoms[bond.begin].neighbours;\n var neiEnd = _this2.atoms[bond.end].neighbours;\n var aromFailBeg = true;\n var aromFailEnd = true;\n neiBeg.forEach(function (nei) {\n if (nei.bid !== bid && mol.bonds.get(nei.bid).type === Bond.PATTERN.TYPE.SINGLE) aromFailBeg = false;\n });\n neiEnd.forEach(function (nei) {\n if (nei.bid !== bid && mol.bonds.get(nei.bid).type === Bond.PATTERN.TYPE.SINGLE) aromFailEnd = false;\n });\n if (aromFailBeg || aromFailEnd) return;\n neiBeg.forEach(function (nei) {\n if (nei.bid === bid) return;\n if (mol.bonds.get(nei.bid).begin === bond.begin) _this2.dbonds[nei.bid].ctbond_beg = bid;else _this2.dbonds[nei.bid].ctbond_end = bid;\n });\n neiEnd.forEach(function (nei) {\n if (nei.bid === bid) return;\n if (mol.bonds.get(nei.bid).begin === bond.end) _this2.dbonds[nei.bid].ctbond_beg = bid;else _this2.dbonds[nei.bid].ctbond_end = bid;\n });\n }\n });\n};\nSmiles.prototype.updateSideBonds = function (mol, bondIdx) {\n var bond = mol.bonds.get(bondIdx);\n var subst = this.cis_trans.getSubstituents(bondIdx);\n var parity = this.cis_trans.getParity(bondIdx);\n var sidebonds = [-1, -1, -1, -1];\n sidebonds[0] = mol.findBondId(subst[0], bond.begin);\n if (subst[1] != -1) sidebonds[1] = mol.findBondId(subst[1], bond.begin);\n sidebonds[2] = mol.findBondId(subst[2], bond.end);\n if (subst[3] != -1) sidebonds[3] = mol.findBondId(subst[3], bond.end);\n var n1 = 0;\n var n2 = 0;\n var n3 = 0;\n var n4 = 0;\n if (this.dbonds[sidebonds[0]].saved != 0) {\n if (this.dbonds[sidebonds[0]].saved == 1 && mol.bonds.get(sidebonds[0]).begin == bond.begin || this.dbonds[sidebonds[0]].saved == 2 && mol.bonds.get(sidebonds[0]).end == bond.begin) n1++;else n2++;\n }\n if (sidebonds[1] != -1 && this.dbonds[sidebonds[1]].saved != 0) {\n if (this.dbonds[sidebonds[1]].saved == 2 && mol.bonds.get(sidebonds[1]).begin == bond.begin || this.dbonds[sidebonds[1]].saved == 1 && mol.bonds.get(sidebonds[1]).end == bond.begin) n1++;else n2++;\n }\n if (this.dbonds[sidebonds[2]].saved != 0) {\n if (this.dbonds[sidebonds[2]].saved == 1 && mol.bonds.get(sidebonds[2]).begin == bond.end || this.dbonds[sidebonds[2]].saved == 2 && mol.bonds.get(sidebonds[2]).end == bond.end) n3++;else n4++;\n }\n if (sidebonds[3] != -1 && this.dbonds[sidebonds[3]].saved != 0) {\n if (this.dbonds[sidebonds[3]].saved == 2 && mol.bonds.get(sidebonds[3]).begin == bond.end || this.dbonds[sidebonds[3]].saved == 1 && mol.bonds.get(sidebonds[3]).end == bond.end) n3++;else n4++;\n }\n if (parity == CisTrans.PARITY.CIS) {\n n1 += n3;\n n2 += n4;\n } else {\n n1 += n4;\n n2 += n3;\n }\n if (n1 > 0 && n2 > 0) throw new Error('incompatible cis-trans configuration');\n if (n1 == 0 && n2 == 0) return false;\n if (n1 > 0) {\n this.dbonds[sidebonds[0]].saved = mol.bonds.get(sidebonds[0]).begin == bond.begin ? 1 : 2;\n if (sidebonds[1] != -1) {\n this.dbonds[sidebonds[1]].saved = mol.bonds.get(sidebonds[1]).begin == bond.begin ? 2 : 1;\n }\n this.dbonds[sidebonds[2]].saved = mol.bonds.get(sidebonds[2]).begin == bond.end == (parity == CisTrans.PARITY.CIS) ? 1 : 2;\n if (sidebonds[3] != -1) {\n this.dbonds[sidebonds[3]].saved = mol.bonds.get(sidebonds[3]).begin == bond.end == (parity == CisTrans.PARITY.CIS) ? 2 : 1;\n }\n }\n if (n2 > 0) {\n this.dbonds[sidebonds[0]].saved = mol.bonds.get(sidebonds[0]).begin == bond.begin ? 2 : 1;\n if (sidebonds[1] != -1) {\n this.dbonds[sidebonds[1]].saved = mol.bonds.get(sidebonds[1]).begin == bond.begin ? 1 : 2;\n }\n this.dbonds[sidebonds[2]].saved = mol.bonds.get(sidebonds[2]).begin == bond.end == (parity == CisTrans.PARITY.CIS) ? 2 : 1;\n if (sidebonds[3] != -1) {\n this.dbonds[sidebonds[3]].saved = mol.bonds.get(sidebonds[3]).begin == bond.end == (parity == CisTrans.PARITY.CIS) ? 1 : 2;\n }\n }\n return true;\n};\nSmiles.prototype.calcBondDirection = function (mol, idx, vprev) {\n var _this3 = this;\n var ntouched;\n if (this.dbonds[idx].ctbond_beg == -1 && this.dbonds[idx].ctbond_end == -1) return 0;\n if (mol.bonds.get(idx).type != Bond.PATTERN.TYPE.SINGLE) throw new Error('internal: directed bond type ' + mol.bonds.get(idx).type);\n while (true) {\n ntouched = 0;\n this.cis_trans.each(function (ct, bid) {\n if (ct.parity !== 0 && !_this3.isBondInRing(bid)) {\n if (_this3.updateSideBonds(mol, bid)) ntouched++;\n }\n });\n if (ntouched === this.touchedCistransbonds) break;\n this.touchedCistransbonds = ntouched;\n }\n if (this.dbonds[idx].saved === 0) {\n if (vprev === mol.bonds.get(idx).begin) this.dbonds[idx].saved = 1;else this.dbonds[idx].saved = 2;\n }\n return this.dbonds[idx].saved;\n};\nSmiles.prototype.writeRadicals = function (mol) {\n var marked = new Array(this.writtenAtoms.length);\n var i, j;\n for (i = 0; i < this.writtenAtoms.length; i++) {\n if (marked[i]) continue;\n var radical = mol.atoms.get(this.writtenAtoms[i]).radical;\n if (radical == 0) continue;\n if (this.comma) {\n this.smiles += ',';\n } else {\n this.smiles += ' |';\n this.comma = true;\n }\n if (radical == Atom.PATTERN.RADICAL.SINGLET) this.smiles += '^3:';else if (radical == Atom.PATTERN.RADICAL.DOUPLET) this.smiles += '^1:';\n else this.smiles += '^4:';\n this.smiles += i;\n for (j = i + 1; j < this.writtenAtoms.length; j++) {\n if (mol.atoms.get(this.writtenAtoms[j]).radical == radical) {\n marked[j] = true;\n this.smiles += ',' + j;\n }\n }\n }\n};\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar SmiSerializer = function () {\n function SmiSerializer(options) {\n _classCallCheck(this, SmiSerializer);\n _defineProperty(this, \"options\", void 0);\n this.options = _objectSpread$3(_objectSpread$3({}, SmiSerializer.DefaultOptions), options);\n }\n _createClass(SmiSerializer, [{\n key: \"deserialize\",\n value: function deserialize(_content) {\n throw new Error('Not implemented yet.');\n }\n }, {\n key: \"serialize\",\n value: function serialize(struct) {\n return new Smiles().saveMolecule(struct, this.options.ignoreErrors);\n }\n }]);\n return SmiSerializer;\n}();\n_defineProperty(SmiSerializer, \"DefaultOptions\", {\n ignoreErrors: false\n});\n\nvar DelimeterRegex = /^[^]+?\\$\\$\\$\\$$/gm;\nvar SdfSerializer = function () {\n function SdfSerializer() {\n _classCallCheck(this, SdfSerializer);\n }\n _createClass(SdfSerializer, [{\n key: \"deserialize\",\n value: function deserialize(content) {\n var m;\n var result = [];\n var molSerializer = new MolSerializer();\n while ((m = DelimeterRegex.exec(content)) !== null) {\n var chunk = m[0].replace(/\\r/g, '').trim();\n var end = chunk.indexOf('M END');\n if (end !== -1) {\n var propChunks = chunk.substr(end + 7).trim().split(/^$\\n?/m);\n var struct = molSerializer.deserialize(chunk.substring(0, end + 6));\n var props = propChunks.reduce(function (acc, pc) {\n var m = pc.match(/^> [ \\d]*<(\\S+)>/);\n if (m) {\n var field = m[1];\n var value = pc.split('\\n')[1].trim();\n acc[field] = Number.isFinite(value) ? +value : value.toString();\n }\n return acc;\n }, {});\n result.push({\n struct: struct,\n props: props\n });\n }\n }\n return result;\n }\n }, {\n key: \"serialize\",\n value: function serialize(sdfItems) {\n var molSerializer = new MolSerializer();\n return sdfItems.reduce(function (res, item) {\n res += molSerializer.serialize(item.struct);\n Object.keys(item.props).forEach(function (prop) {\n res += '> <' + prop + '>\\n';\n res += item.props[prop] + '\\n\\n';\n });\n return res + '$$$$';\n }, '');\n }\n }]);\n return SdfSerializer;\n}();\n\nvar ChemicalMimeType;\n(function (ChemicalMimeType) {\n ChemicalMimeType[\"Mol\"] = \"chemical/x-mdl-molfile\";\n ChemicalMimeType[\"Rxn\"] = \"chemical/x-mdl-rxnfile\";\n ChemicalMimeType[\"DaylightSmiles\"] = \"chemical/x-daylight-smiles\";\n ChemicalMimeType[\"ExtendedSmiles\"] = \"chemical/x-chemaxon-cxsmiles\";\n ChemicalMimeType[\"DaylightSmarts\"] = \"chemical/x-daylight-smarts\";\n ChemicalMimeType[\"InChI\"] = \"chemical/x-inchi\";\n ChemicalMimeType[\"InChIAuxInfo\"] = \"chemical/x-inchi-aux\";\n ChemicalMimeType[\"CDXML\"] = \"chemical/x-cdxml\";\n ChemicalMimeType[\"CML\"] = \"chemical/x-cml\";\n ChemicalMimeType[\"KET\"] = \"application/json\";\n})(ChemicalMimeType || (ChemicalMimeType = {}));\n\nfunction scaled2obj(v, options) {\n return v.scaled(1 / options.scale);\n}\nfunction obj2scaled(v, options) {\n return v.scaled(options.scale);\n}\nvar Scale = {\n scaled2obj: scaled2obj,\n obj2scaled: obj2scaled\n};\n\nfunction isCorrectStereoCenter(bond, beginNeighs, endNeighs, struct) {\n var beginAtom = struct.atoms.get(bond.begin);\n var EndAtomNeigh = NaN;\n if ((endNeighs === null || endNeighs === void 0 ? void 0 : endNeighs.length) === 2) {\n EndAtomNeigh = endNeighs[0].aid === bond.begin ? endNeighs[1].aid : endNeighs[0].aid;\n }\n if (bond.stereo > 0) {\n var _struct$atomGetNeighb;\n if ((endNeighs === null || endNeighs === void 0 ? void 0 : endNeighs.length) === 1 && (beginNeighs === null || beginNeighs === void 0 ? void 0 : beginNeighs.length) === 2 && Number(beginAtom === null || beginAtom === void 0 ? void 0 : beginAtom.implicitH) % 2 === 0) {\n return false;\n }\n if ((endNeighs === null || endNeighs === void 0 ? void 0 : endNeighs.length) === 2 && (beginNeighs === null || beginNeighs === void 0 ? void 0 : beginNeighs.length) === 2 && Number(beginAtom === null || beginAtom === void 0 ? void 0 : beginAtom.implicitH) % 2 === 0 && ((_struct$atomGetNeighb = struct.atomGetNeighbors(EndAtomNeigh)) === null || _struct$atomGetNeighb === void 0 ? void 0 : _struct$atomGetNeighb.length) === 1) {\n return false;\n }\n if ((beginNeighs === null || beginNeighs === void 0 ? void 0 : beginNeighs.length) === 1) {\n return false;\n }\n return true;\n } else {\n return false;\n }\n}\nvar StereoValidator = {\n isCorrectStereoCenter: isCorrectStereoCenter\n};\n\nfunction pollDeferred(process, complete, timeGap, startTimeGap) {\n return new Promise(function (resolve, reject) {\n function iterate() {\n process().then(function (val) {\n try {\n if (complete(val)) resolve(val);else setTimeout(iterate, timeGap);\n } catch (e) {\n reject(e);\n }\n }, function (err) {\n return reject(err);\n });\n }\n setTimeout(iterate, startTimeGap || 0);\n });\n}\nfunction parametrizeUrl(url, params) {\n return url.replace(/:(\\w+)/g, function (_, val) {\n return params[val];\n });\n}\nfunction request(method, url, data, headers, responseHandler) {\n var requestUrl = url;\n if (data && method === 'GET') requestUrl = parametrizeUrl(url, data);\n var response = fetch(requestUrl, {\n method: method,\n headers: Object.assign({\n Accept: 'application/json'\n }, headers),\n body: method !== 'GET' ? data : undefined,\n credentials: 'same-origin'\n });\n if (responseHandler) {\n response = responseHandler(response);\n } else {\n response = response.then(function (response) {\n return response.json().then(function (res) {\n return response.ok ? res : Promise.reject(res.error);\n });\n });\n }\n return response[\"catch\"](function (err) {\n throw Error(err);\n });\n}\nfunction indigoCall(method, url, baseUrl, defaultOptions) {\n return function (data, options, responseHandler) {\n var body = Object.assign({}, data);\n body.options = Object.assign(body.options || {}, defaultOptions, options);\n return request(method, baseUrl + url, JSON.stringify(body), {\n 'Content-Type': 'application/json'\n }, responseHandler);\n };\n}\nvar RemoteStructService = function () {\n function RemoteStructService(apiPath, defaultOptions) {\n _classCallCheck(this, RemoteStructService);\n _defineProperty(this, \"apiPath\", void 0);\n _defineProperty(this, \"defaultOptions\", void 0);\n this.apiPath = apiPath;\n this.defaultOptions = defaultOptions;\n }\n _createClass(RemoteStructService, [{\n key: \"info\",\n value: function () {\n var _info = _asyncToGenerator( _regeneratorRuntime.mark(function _callee() {\n var indigoVersion, imagoVersions, isAvailable, response;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n isAvailable = false;\n _context.prev = 1;\n _context.next = 4;\n return request('GET', this.apiPath + 'info');\n case 4:\n response = _context.sent;\n indigoVersion = response['indigo_version'];\n imagoVersions = response['imago_versions'];\n isAvailable = true;\n _context.next = 15;\n break;\n case 10:\n _context.prev = 10;\n _context.t0 = _context[\"catch\"](1);\n indigoVersion = '';\n imagoVersions = [];\n isAvailable = false;\n case 15:\n return _context.abrupt(\"return\", {\n indigoVersion: indigoVersion,\n imagoVersions: imagoVersions,\n isAvailable: isAvailable\n });\n case 16:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 10]]);\n }));\n function info() {\n return _info.apply(this, arguments);\n }\n return info;\n }()\n }, {\n key: \"convert\",\n value: function convert(data, options) {\n return indigoCall('POST', 'indigo/convert', this.apiPath, this.defaultOptions)(data, options);\n }\n }, {\n key: \"layout\",\n value: function layout(data, options) {\n return indigoCall('POST', 'indigo/layout', this.apiPath, this.defaultOptions)(data, options);\n }\n }, {\n key: \"clean\",\n value: function clean(data, options) {\n return indigoCall('POST', 'indigo/clean', this.apiPath, this.defaultOptions)(data, options);\n }\n }, {\n key: \"aromatize\",\n value: function aromatize(data, options) {\n return indigoCall('POST', 'indigo/aromatize', this.apiPath, this.defaultOptions)(data, options);\n }\n }, {\n key: \"dearomatize\",\n value: function dearomatize(data, options) {\n return indigoCall('POST', 'indigo/dearomatize', this.apiPath, this.defaultOptions)(data, options);\n }\n }, {\n key: \"calculateCip\",\n value: function calculateCip(data, options) {\n return indigoCall('POST', 'indigo/calculate_cip', this.apiPath, this.defaultOptions)(data, options);\n }\n }, {\n key: \"automap\",\n value: function automap(data, options) {\n return indigoCall('POST', 'indigo/automap', this.apiPath, this.defaultOptions)(data, options);\n }\n }, {\n key: \"check\",\n value: function check(data, options) {\n return indigoCall('POST', 'indigo/check', this.apiPath, this.defaultOptions)(data, options);\n }\n }, {\n key: \"calculate\",\n value: function calculate(data, options) {\n return indigoCall('POST', 'indigo/calculate', this.apiPath, this.defaultOptions)(data, options);\n }\n }, {\n key: \"recognize\",\n value: function recognize(blob, version) {\n var parVersion = version ? \"?version=\".concat(version) : '';\n var req = request('POST', this.apiPath + \"imago/uploads\".concat(parVersion), blob, {\n 'Content-Type': blob.type || 'application/octet-stream'\n });\n var status = request.bind(null, 'GET', this.apiPath + 'imago/uploads/:id');\n return req.then(function (data) {\n return pollDeferred(status.bind(null, {\n id: data.upload_id\n }), function (response) {\n if (response.state === 'FAILURE') throw response;\n return response.state === 'SUCCESS';\n }, 500, 300);\n }).then(function (response) {\n return {\n struct: response.metadata.mol_str\n };\n });\n }\n }, {\n key: \"generateImageAsBase64\",\n value: function generateImageAsBase64(data, options) {\n var outputFormat = (options === null || options === void 0 ? void 0 : options.outputFormat) || 'png';\n return indigoCall('POST', 'indigo/render', this.apiPath, this.defaultOptions)({\n struct: data\n }, {\n 'render-output-format': outputFormat\n }, function (response) {\n return response.then(function (resp) {\n return resp.text();\n })\n .then(function (text) {\n if (outputFormat === 'svg') {\n return btoa(text);\n } else {\n return text;\n }\n });\n });\n }\n }]);\n return RemoteStructService;\n}();\n\nvar RemoteStructServiceProvider = function () {\n function RemoteStructServiceProvider(apiPath) {\n _classCallCheck(this, RemoteStructServiceProvider);\n _defineProperty(this, \"apiPath\", void 0);\n _defineProperty(this, \"mode\", 'remote');\n var currentApiPath = apiPath;\n var params = new URLSearchParams(document.location.search);\n if (params.has('api_path')) {\n currentApiPath = params.get('api_path');\n }\n this.apiPath = !currentApiPath || /\\/$/.test(currentApiPath) ? currentApiPath : currentApiPath + '/';\n }\n _createClass(RemoteStructServiceProvider, [{\n key: \"createStructService\",\n value: function createStructService(options) {\n return new RemoteStructService(this.apiPath, options);\n }\n }]);\n return RemoteStructServiceProvider;\n}();\n\nvar SupportedFormatProperties = function SupportedFormatProperties(name, mime, extensions, supportsCoords, options) {\n _classCallCheck(this, SupportedFormatProperties);\n _defineProperty(this, \"name\", void 0);\n _defineProperty(this, \"mime\", void 0);\n _defineProperty(this, \"extensions\", void 0);\n _defineProperty(this, \"supportsCoords\", void 0);\n _defineProperty(this, \"options\", void 0);\n this.name = name;\n this.mime = mime;\n this.extensions = extensions;\n this.supportsCoords = supportsCoords || false;\n this.options = options || {};\n};\n\nvar formatProperties = {\n mol: new SupportedFormatProperties('MDL Molfile V2000', ChemicalMimeType.Mol, ['.mol'], true),\n molV3000: new SupportedFormatProperties('MDL Molfile V3000', ChemicalMimeType.Mol, ['.mol'], true, {\n 'molfile-saving-mode': '3000'\n }),\n rxn: new SupportedFormatProperties('MDL Rxnfile V2000', ChemicalMimeType.Rxn, ['.rxn'], true),\n rxnV3000: new SupportedFormatProperties('MDL Rxnfile V3000', ChemicalMimeType.Rxn, ['.rxn'], true, {\n 'molfile-saving-mode': '3000'\n }),\n smiles: new SupportedFormatProperties('Daylight SMILES', ChemicalMimeType.DaylightSmiles, ['.smi', '.smiles']),\n smilesExt: new SupportedFormatProperties('Extended SMILES', ChemicalMimeType.ExtendedSmiles, ['.cxsmi', '.cxsmiles']),\n smarts: new SupportedFormatProperties('Daylight SMARTS', ChemicalMimeType.DaylightSmarts, ['.smarts']),\n inChI: new SupportedFormatProperties('InChI', ChemicalMimeType.InChI, ['.inchi']),\n inChIAuxInfo: new SupportedFormatProperties('InChI AuxInfo', ChemicalMimeType.InChIAuxInfo, ['.inchi']),\n cml: new SupportedFormatProperties('CML', ChemicalMimeType.CML, ['.cml', '.mrv'], true),\n graph: new SupportedFormatProperties('Graph Format', ChemicalMimeType.KET, ['.ket']),\n cdxml: new SupportedFormatProperties('CDXML', ChemicalMimeType.CDXML, ['.cdxml'], true)\n};\nfunction getPropertiesByFormat(format) {\n return formatProperties[format];\n}\n\nvar GraphFormatter = function () {\n function GraphFormatter(serializer) {\n _classCallCheck(this, GraphFormatter);\n _defineProperty(this, \"serializer\", void 0);\n this.serializer = serializer;\n }\n _createClass(GraphFormatter, [{\n key: \"getStructureFromStructAsync\",\n value: function () {\n var _getStructureFromStructAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(struct) {\n var graph;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n graph = this.serializer.serialize(struct);\n return _context.abrupt(\"return\", graph);\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n function getStructureFromStructAsync(_x) {\n return _getStructureFromStructAsync.apply(this, arguments);\n }\n return getStructureFromStructAsync;\n }()\n }, {\n key: \"getStructureFromStringAsync\",\n value: function () {\n var _getStructureFromStringAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee2(content) {\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", this.serializer.deserialize(content));\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n function getStructureFromStringAsync(_x2) {\n return _getStructureFromStringAsync.apply(this, arguments);\n }\n return getStructureFromStringAsync;\n }()\n }]);\n return GraphFormatter;\n}();\n\nvar MolfileV2000Formatter = function () {\n function MolfileV2000Formatter(molfileManager) {\n _classCallCheck(this, MolfileV2000Formatter);\n _defineProperty(this, \"molfileManager\", void 0);\n this.molfileManager = molfileManager;\n }\n _createClass(MolfileV2000Formatter, [{\n key: \"getStructureFromStructAsync\",\n value: function () {\n var _getStructureFromStructAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(struct) {\n var stringifiedMolfile;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n stringifiedMolfile = this.molfileManager.serialize(struct);\n return _context.abrupt(\"return\", stringifiedMolfile);\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n function getStructureFromStructAsync(_x) {\n return _getStructureFromStructAsync.apply(this, arguments);\n }\n return getStructureFromStructAsync;\n }()\n }, {\n key: \"getStructureFromStringAsync\",\n value: function () {\n var _getStructureFromStringAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee2(stringifiedStruct) {\n var struct;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n struct = this.molfileManager.deserialize(stringifiedStruct);\n return _context2.abrupt(\"return\", struct);\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n function getStructureFromStringAsync(_x2) {\n return _getStructureFromStringAsync.apply(this, arguments);\n }\n return getStructureFromStringAsync;\n }()\n }]);\n return MolfileV2000Formatter;\n}();\n\nvar RxnFormatter = function () {\n function RxnFormatter(molfileManager) {\n _classCallCheck(this, RxnFormatter);\n _defineProperty(this, \"molfileManager\", void 0);\n this.molfileManager = molfileManager;\n }\n _createClass(RxnFormatter, [{\n key: \"getStructureFromStructAsync\",\n value: function () {\n var _getStructureFromStructAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(struct) {\n var stringifiedMolfile;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n stringifiedMolfile = this.molfileManager.serialize(struct);\n return _context.abrupt(\"return\", stringifiedMolfile);\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n function getStructureFromStructAsync(_x) {\n return _getStructureFromStructAsync.apply(this, arguments);\n }\n return getStructureFromStructAsync;\n }()\n }, {\n key: \"getStructureFromStringAsync\",\n value: function () {\n var _getStructureFromStringAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee2(stringifiedStruct) {\n var struct;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n struct = this.molfileManager.deserialize(stringifiedStruct);\n return _context2.abrupt(\"return\", struct);\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n function getStructureFromStringAsync(_x2) {\n return _getStructureFromStringAsync.apply(this, arguments);\n }\n return getStructureFromStringAsync;\n }()\n }]);\n return RxnFormatter;\n}();\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar ServerFormatter = function () {\n function ServerFormatter(structService, molfileManager, format, options) {\n _classCallCheck(this, ServerFormatter);\n _defineProperty(this, \"structService\", void 0);\n _defineProperty(this, \"molfileManager\", void 0);\n _defineProperty(this, \"format\", void 0);\n _defineProperty(this, \"options\", void 0);\n this.structService = structService;\n this.molfileManager = molfileManager;\n this.format = format;\n this.options = options;\n }\n _createClass(ServerFormatter, [{\n key: \"getStructureFromStructAsync\",\n value: function () {\n var _getStructureFromStructAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(struct) {\n var infoResult, formatProperties, stringifiedStruct, convertResult, message;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.structService.info();\n case 2:\n infoResult = _context.sent;\n if (infoResult.isAvailable) {\n _context.next = 5;\n break;\n }\n throw new Error('Server is not available');\n case 5:\n formatProperties = getPropertiesByFormat(this.format);\n _context.prev = 6;\n stringifiedStruct = this.molfileManager.serialize(struct);\n _context.next = 10;\n return this.structService.convert({\n struct: stringifiedStruct,\n output_format: formatProperties.mime\n }, _objectSpread$4(_objectSpread$4({}, this.options), formatProperties.options));\n case 10:\n convertResult = _context.sent;\n return _context.abrupt(\"return\", convertResult.struct);\n case 14:\n _context.prev = 14;\n _context.t0 = _context[\"catch\"](6);\n if (_context.t0.message === 'Server is not compatible') {\n message = \"\".concat(formatProperties.name, \" is not supported.\");\n } else {\n message = \"Convert error!\\n\".concat(_context.t0.message || _context.t0);\n }\n throw new Error(message);\n case 18:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[6, 14]]);\n }));\n function getStructureFromStructAsync(_x) {\n return _getStructureFromStructAsync.apply(this, arguments);\n }\n return getStructureFromStructAsync;\n }()\n }, {\n key: \"getStructureFromStringAsync\",\n value: function () {\n var _getStructureFromStringAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee2(stringifiedStruct) {\n var infoResult, promise, data, withCoords, result, parsedStruct, formatError;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.structService.info();\n case 2:\n infoResult = _context2.sent;\n if (infoResult.isAvailable) {\n _context2.next = 5;\n break;\n }\n throw new Error('Server is not available');\n case 5:\n data = {\n struct: undefined,\n output_format: getPropertiesByFormat('mol').mime\n };\n withCoords = getPropertiesByFormat(this.format).supportsCoords;\n if (withCoords) {\n promise = this.structService.convert;\n data.struct = stringifiedStruct;\n } else {\n promise = this.structService.layout;\n data.struct = stringifiedStruct.trim();\n }\n _context2.prev = 8;\n _context2.next = 11;\n return promise(data, this.options);\n case 11:\n result = _context2.sent;\n parsedStruct = this.molfileManager.deserialize(result.struct);\n if (!withCoords) {\n parsedStruct.rescale();\n }\n return _context2.abrupt(\"return\", parsedStruct);\n case 17:\n _context2.prev = 17;\n _context2.t0 = _context2[\"catch\"](8);\n if (!(_context2.t0.message !== 'Server is not compatible')) {\n _context2.next = 21;\n break;\n }\n throw Error(\"Convert error!\\n\".concat(_context2.t0.message || _context2.t0));\n case 21:\n formatError = this.format === 'smiles' ? \"\".concat(getPropertiesByFormat('smilesExt').name, \" and opening of \").concat(getPropertiesByFormat('smiles').name) : getPropertiesByFormat(this.format).name;\n throw Error(\"\".concat(formatError, \" is not supported in standalone mode.\"));\n case 23:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[8, 17]]);\n }));\n function getStructureFromStringAsync(_x2) {\n return _getStructureFromStringAsync.apply(this, arguments);\n }\n return getStructureFromStringAsync;\n }()\n }]);\n return ServerFormatter;\n}();\n\nvar SmilesFormatter = function () {\n function SmilesFormatter(smiSerializer,\n structService, molfileManager, format, options) {\n _classCallCheck(this, SmilesFormatter);\n _defineProperty(this, \"smiSerializer\", void 0);\n _defineProperty(this, \"structService\", void 0);\n _defineProperty(this, \"molfileManager\", void 0);\n _defineProperty(this, \"format\", void 0);\n _defineProperty(this, \"options\", void 0);\n this.smiSerializer = smiSerializer;\n this.structService = structService;\n this.molfileManager = molfileManager;\n this.format = format;\n this.options = options;\n }\n _createClass(SmilesFormatter, [{\n key: \"getStructureFromStructAsync\",\n value: function () {\n var _getStructureFromStructAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(struct) {\n var stringifiedMolfile;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n stringifiedMolfile = this.smiSerializer.serialize(struct);\n return _context.abrupt(\"return\", stringifiedMolfile);\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n function getStructureFromStructAsync(_x) {\n return _getStructureFromStructAsync.apply(this, arguments);\n }\n return getStructureFromStructAsync;\n }()\n }, {\n key: \"getStructureFromStringAsync\",\n value: function getStructureFromStringAsync(stringifiedStruct) {\n var serverFormatter = new ServerFormatter(this.structService, this.molfileManager, this.format, this.options);\n return serverFormatter.getStructureFromStringAsync(stringifiedStruct);\n }\n }]);\n return SmilesFormatter;\n}();\n\nvar FormatterFactory = function () {\n function FormatterFactory(structService) {\n _classCallCheck(this, FormatterFactory);\n _defineProperty(this, \"structService\", void 0);\n this.structService = structService;\n }\n _createClass(FormatterFactory, [{\n key: \"separateOptions\",\n value: function separateOptions(options) {\n if (!options) {\n return [{}, {}];\n }\n var reactionRelayout = options.reactionRelayout,\n badHeaderRecover = options.badHeaderRecover,\n structServiceOptions = _objectWithoutProperties(options, [\"reactionRelayout\", \"badHeaderRecover\"]);\n var molfileParseOptions = {};\n if (typeof reactionRelayout === 'boolean') {\n molfileParseOptions.reactionRelayout = reactionRelayout;\n }\n if (typeof badHeaderRecover === 'boolean') {\n molfileParseOptions.badHeaderRecover = badHeaderRecover;\n }\n return [molfileParseOptions, structServiceOptions];\n }\n }, {\n key: \"create\",\n value: function create(format, options) {\n var _this$separateOptions = this.separateOptions(options),\n _this$separateOptions2 = _slicedToArray(_this$separateOptions, 2),\n molSerializerOptions = _this$separateOptions2[0],\n structServiceOptions = _this$separateOptions2[1];\n var formatter;\n switch (format) {\n case 'graph':\n formatter = new GraphFormatter(new KetSerializer());\n break;\n case 'mol':\n formatter = new MolfileV2000Formatter(new MolSerializer(molSerializerOptions));\n break;\n case 'rxn':\n formatter = new RxnFormatter(new MolSerializer(molSerializerOptions));\n break;\n case 'smiles':\n formatter = new SmilesFormatter(new SmiSerializer(),\n this.structService, new MolSerializer(molSerializerOptions), format, structServiceOptions);\n break;\n case 'cml':\n case 'inChIAuxInfo':\n case 'inChI':\n case 'molV3000':\n case 'rxnV3000':\n case 'smilesExt':\n case 'smarts':\n case 'cdxml':\n default:\n formatter = new ServerFormatter(this.structService, new MolSerializer(molSerializerOptions), format, structServiceOptions);\n }\n return formatter;\n }\n }]);\n return FormatterFactory;\n}();\n\nfunction identifyStructFormat(stringifiedStruct) {\n var sanitizedString = stringifiedStruct.trim();\n try {\n if (JSON.parse(sanitizedString)) {\n return 'graph';\n }\n } catch (er) {}\n if (sanitizedString.indexOf('$RXN') !== -1) {\n return 'rxn';\n }\n var match = sanitizedString.match(/^(M {2}END|\\$END MOL)$/m);\n if (match) {\n var end = (match.index || 0) + match[0].length;\n if (end === sanitizedString.length || sanitizedString.slice(end, end + 20).search(/^\\$(MOL|END CTAB)$/m) !== -1) {\n return 'mol';\n }\n }\n if (sanitizedString[0] === '<' && sanitizedString.indexOf('<molecule') !== -1) {\n return 'cml';\n }\n if (sanitizedString.slice(0, 5) === 'InChI') {\n return 'inChI';\n }\n if (sanitizedString.indexOf('\\n') === -1) {\n return 'smiles';\n }\n if (sanitizedString.indexOf('<CDXML') !== -1) {\n return 'cdxml';\n }\n return 'mol';\n}\n\nexport { Atom, AtomList, Bond, Box2Abs, ChemicalMimeType, ElementColor, Elements, FormatterFactory, Fragment, Generics, HalfBond, KetSerializer, Loop, MolSerializer, Pile, Pool, RGroup, RemoteStructService, RemoteStructServiceProvider, RxnArrow, RxnArrowMode, RxnPlus, SGroup, SGroupBracketParams, SGroupForest, Scale, SdfSerializer, SimpleObject, SimpleObjectMode, SmiSerializer, StereoFlag, StereoLabel, StereoValidator, Struct, Text, TextCommand, Vec2, checkOverlapping, formatProperties, getPropertiesByFormat, identifyStructFormat, ifDef, radicalElectrons };\n//# sourceMappingURL=index.modern.js.map\n","import {\n AromatizeCommandData,\n AutomapCommandData,\n CalculateCipCommandData,\n CalculateCommandData,\n CheckCommandData,\n CleanCommandData,\n Command,\n CommandOptions,\n ConvertCommandData,\n DearomatizeCommandData,\n GenerateImageCommandData,\n InputMessage,\n LayoutCommandData,\n OutputMessage,\n SupportedFormat\n} from './indigoWorker.types'\nimport {\n AromatizeData,\n AromatizeResult,\n AutomapData,\n AutomapResult,\n CalculateCipData,\n CalculateCipResult,\n CalculateData,\n CalculateResult,\n CheckData,\n CheckResult,\n ChemicalMimeType,\n CleanData,\n CleanResult,\n ConvertData,\n ConvertResult,\n DearomatizeData,\n DearomatizeResult,\n GenerateImageOptions,\n InfoResult,\n LayoutData,\n LayoutResult,\n RecognizeResult,\n StructService,\n StructServiceOptions\n} from 'ketcher-core'\n\n/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n// @ts-ignore\nimport IndigoWorker from 'web-worker:./IndigoWorker'\n\ninterface KeyValuePair {\n [key: string]: number | string | boolean | object\n}\n\nfunction convertMimeTypeToOutputFormat(\n mimeType: ChemicalMimeType\n): SupportedFormat {\n let format: SupportedFormat\n switch (mimeType) {\n case ChemicalMimeType.Mol: {\n format = SupportedFormat.Mol\n break\n }\n case ChemicalMimeType.Rxn: {\n format = SupportedFormat.Rxn\n break\n }\n case ChemicalMimeType.DaylightSmiles:\n case ChemicalMimeType.ExtendedSmiles: {\n format = SupportedFormat.Smiles\n break\n }\n case ChemicalMimeType.DaylightSmarts: {\n format = SupportedFormat.Smarts\n break\n }\n case ChemicalMimeType.InChI: {\n format = SupportedFormat.InChI\n break\n }\n case ChemicalMimeType.InChIAuxInfo: {\n format = SupportedFormat.InChIAuxInfo\n break\n }\n case ChemicalMimeType.CML: {\n format = SupportedFormat.CML\n break\n }\n case ChemicalMimeType.CDXML: {\n format = SupportedFormat.CDXML\n break\n }\n default: {\n throw new Error('Unsupported chemical mime type')\n }\n }\n\n return format\n}\n\nfunction mapCalculatedPropertyName(property: string) {\n let mappedProperty: string | undefined\n switch (property) {\n case 'gross-formula': {\n mappedProperty = 'gross'\n break\n }\n default:\n mappedProperty = property\n break\n }\n\n return mappedProperty\n}\n\nfunction mapWarningGroup(property: string) {\n let mappedProperty: string | undefined\n switch (property) {\n case 'OVERLAP_BOND': {\n mappedProperty = 'overlapping_bonds'\n break\n }\n default:\n mappedProperty = property.toLowerCase()\n break\n }\n\n return mappedProperty\n}\n\nclass IndigoService implements StructService {\n private readonly defaultOptions: StructServiceOptions\n\n constructor(defaultOptions: StructServiceOptions) {\n this.defaultOptions = defaultOptions\n }\n\n info(): Promise<InfoResult> {\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: InfoResult = {\n indigoVersion: msg.payload!,\n imagoVersions: [],\n isAvailable: true\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n worker.postMessage({ type: Command.Info })\n })\n }\n\n convert(\n data: ConvertData,\n options?: StructServiceOptions\n ): Promise<ConvertResult> {\n const { output_format, struct } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: ConvertResult = {\n struct: msg.payload!,\n format: output_format\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: ConvertCommandData = {\n struct,\n format,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<ConvertCommandData> = {\n type: Command.Convert,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n layout(\n data: LayoutData,\n options?: StructServiceOptions\n ): Promise<LayoutResult> {\n const { struct } = data\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: LayoutResult = {\n struct: msg.payload!,\n format: ChemicalMimeType.Mol\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: LayoutCommandData = {\n struct,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<LayoutCommandData> = {\n type: Command.Layout,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n clean(data: CleanData, options?: StructServiceOptions): Promise<CleanResult> {\n const { struct, selected } = data\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: CleanResult = {\n struct: msg.payload!,\n format: ChemicalMimeType.Mol\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: CleanCommandData = {\n struct,\n options: commandOptions,\n selectedAtoms: selected || []\n }\n\n const inputMessage: InputMessage<CleanCommandData> = {\n type: Command.Clean,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n aromatize(\n data: AromatizeData,\n options?: StructServiceOptions\n ): Promise<AromatizeResult> {\n const { struct } = data\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: AromatizeResult = {\n struct: msg.payload!,\n format: ChemicalMimeType.Mol\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: AromatizeCommandData = {\n struct,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<AromatizeCommandData> = {\n type: Command.Aromatize,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n dearomatize(\n data: DearomatizeData,\n options?: StructServiceOptions\n ): Promise<DearomatizeResult> {\n const { struct } = data\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: AromatizeResult = {\n struct: msg.payload!,\n format: ChemicalMimeType.Mol\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: DearomatizeCommandData = {\n struct,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<DearomatizeCommandData> = {\n type: Command.Dearomatize,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n calculateCip(\n data: CalculateCipData,\n options?: StructServiceOptions\n ): Promise<CalculateCipResult> {\n const { struct } = data\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: CalculateCipResult = {\n struct: msg.payload!,\n format: ChemicalMimeType.Mol\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: CalculateCipCommandData = {\n struct,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<CalculateCipCommandData> = {\n type: Command.CalculateCip,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n automap(\n data: AutomapData,\n options?: StructServiceOptions\n ): Promise<AutomapResult> {\n const { mode, struct } = data\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: AutomapResult = {\n struct: msg.payload!,\n format: ChemicalMimeType.Mol\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: AutomapCommandData = {\n struct,\n mode,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<CalculateCipCommandData> = {\n type: Command.Automap,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n check(data: CheckData, options?: StructServiceOptions): Promise<CheckResult> {\n const { types, struct } = data\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const warnings = JSON.parse(msg.payload!) as KeyValuePair\n\n const result: CheckResult = Object.entries(warnings).reduce(\n (acc, curr) => {\n const [key, value] = curr\n const mappedPropertyName = mapWarningGroup(key)\n acc[mappedPropertyName] = value\n\n return acc\n },\n {}\n )\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: CheckCommandData = {\n struct,\n types,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<CheckCommandData> = {\n type: Command.Check,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n calculate(\n data: CalculateData,\n options?: StructServiceOptions\n ): Promise<CalculateResult> {\n const { properties, struct, selected } = data\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const calculatedProperties = JSON.parse(msg.payload!) as KeyValuePair\n const result: CalculateResult = Object.entries(\n calculatedProperties\n ).reduce((acc, curr) => {\n const [key, value] = curr\n const mappedPropertyName = mapCalculatedPropertyName(key)\n if (properties.includes(mappedPropertyName)) {\n acc[mappedPropertyName] = value\n }\n\n return acc\n }, {})\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: CalculateCommandData = {\n struct,\n properties,\n options: commandOptions,\n selectedAtoms: selected || []\n }\n\n const inputMessage: InputMessage<CalculateCommandData> = {\n type: Command.Calculate,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n // @ts-ignore\n recognize(blob: Blob, version: string): Promise<RecognizeResult> {\n return Promise.reject('Not supported in standalone mode')\n }\n\n generateImageAsBase64(\n data: string,\n options: GenerateImageOptions = { outputFormat: 'png' }\n ): Promise<string> {\n const { outputFormat, ...restOptions } = options\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n resolve(msg.payload!)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...restOptions\n }\n\n const commandData: GenerateImageCommandData = {\n struct: data,\n outputFormat: outputFormat || 'png',\n options: commandOptions\n }\n\n const inputMessage: InputMessage<GenerateImageCommandData> = {\n type: Command.GenerateImageAsBase64,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n}\n\nexport default IndigoService\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n ServiceMode,\n StructService,\n StructServiceOptions,\n StructServiceProvider\n} from 'ketcher-core'\n\nimport StandaloneStructService from './StandaloneStructService'\n\nclass StandaloneStructServiceProvider implements StructServiceProvider {\n mode: ServiceMode = 'standalone'\n\n // @ts-ignore\n createStructService(options: StructServiceOptions): StructService {\n return new StandaloneStructService(options)\n }\n}\nexport default StandaloneStructServiceProvider\n"],"names":["Command","SupportedFormat","_typeof","uri","urilib","require$$0","ValidatorResult","SchemaError","attribute","require$$1","require$$2","undefined","_unsupportedIterableToArray","_arrayLikeToArray","_classCallCheck","_defineProperty","_createClass","_unsupportedIterableToArray$1","_arrayLikeToArray$1","_isNativeReflectConstruct","_getPrototypeOf","_possibleConstructorReturn","_inherits","_wrapNativeSuper","_classPrivateFieldGet","_classPrivateFieldSet","_isNativeReflectConstruct$1","_assertThisInitialized","_get","_slicedToArray","_toConsumableArray","Validator","_asyncToGenerator","_regeneratorRuntime","_objectWithoutProperties","convertMimeTypeToOutputFormat","mimeType","format","ChemicalMimeType","Mol","Rxn","DaylightSmiles","ExtendedSmiles","Smiles","DaylightSmarts","Smarts","InChI","InChIAuxInfo","CML","CDXML","Error","mapCalculatedPropertyName","property","mappedProperty","mapWarningGroup","toLowerCase","IndigoService","defaultOptions","Promise","resolve","reject","worker","IndigoWorker","onmessage","e","terminate","msg","data","hasError","result","indigoVersion","payload","imagoVersions","isAvailable","error","postMessage","type","Info","options","output_format","struct","commandOptions","commandData","inputMessage","Convert","Layout","selected","selectedAtoms","Clean","Aromatize","Dearomatize","CalculateCip","mode","Automap","types","warnings","JSON","parse","Object","entries","reduce","acc","curr","key","value","mappedPropertyName","Check","properties","calculatedProperties","includes","Calculate","blob","version","outputFormat","restOptions","GenerateImageAsBase64","StandaloneStructServiceProvider","StandaloneStructService"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/infrastructure/services/struct/indigoWorker.types.ts","../src/infrastructure/services/struct/standaloneStructService.ts","../src/infrastructure/services/struct/standaloneStructServiceProvider.ts"],"sourcesContent":["/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nexport enum Command {\n Info = 'info',\n Convert = 'convert',\n Layout = 'layout',\n Clean = 'clean',\n Aromatize = 'aromatize',\n Dearomatize = 'dearomatize',\n CalculateCip = 'calculateCip',\n Automap = 'automap',\n Check = 'check',\n Calculate = 'calculate',\n GenerateImageAsBase64 = 'generateImageAsBase64'\n}\n\nexport enum SupportedFormat {\n Rxn = 'rxnfile',\n Mol = 'molfile',\n Smiles = 'smiles',\n Smarts = 'smarts',\n CML = 'cml',\n InChI = 'inchi',\n InChIAuxInfo = 'inchi-aux',\n Ket = 'ket',\n CDXML = 'cdxml'\n}\n\nexport interface WithStruct {\n struct: string\n}\n\nexport interface WithFormat {\n format: SupportedFormat\n}\n\nexport interface WithSelection {\n selectedAtoms: Array<number>\n}\n\nexport interface CheckCommandData extends CommandData, WithStruct {\n types: Array<string>\n}\n\nexport interface CommandData {\n options: CommandOptions\n}\n\nexport interface ConvertCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface GenerateImageCommandData extends CommandData, WithStruct {\n outputFormat: 'png' | 'svg'\n backgroundColor?: string\n}\n\nexport interface LayoutCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface CleanCommandData\n extends CommandData,\n WithStruct,\n WithSelection,\n WithFormat {}\n\nexport interface AromatizeCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface DearomatizeCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface CalculateCipCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface CalculateCommandData\n extends CommandData,\n WithStruct,\n WithSelection {\n properties: Array<string>\n}\n\nexport interface AutomapCommandData\n extends CommandData,\n WithStruct,\n WithFormat {\n mode: string\n}\n\nexport interface CommandOptions {\n [key: string]: string | number | boolean | undefined\n}\n\nexport interface OutputMessage<T> {\n hasError?: boolean\n payload?: T\n error?: string\n}\nexport interface InputMessage<T> {\n type: Command\n data: T\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n AromatizeCommandData,\n AutomapCommandData,\n CalculateCipCommandData,\n CalculateCommandData,\n CheckCommandData,\n CleanCommandData,\n Command,\n CommandOptions,\n ConvertCommandData,\n DearomatizeCommandData,\n GenerateImageCommandData,\n InputMessage,\n LayoutCommandData,\n OutputMessage,\n SupportedFormat\n} from './indigoWorker.types'\nimport {\n AromatizeData,\n AromatizeResult,\n AutomapData,\n AutomapResult,\n CalculateCipData,\n CalculateCipResult,\n CalculateData,\n CalculateResult,\n CheckData,\n CheckResult,\n ChemicalMimeType,\n CleanData,\n CleanResult,\n ConvertData,\n ConvertResult,\n DearomatizeData,\n DearomatizeResult,\n GenerateImageOptions,\n InfoResult,\n LayoutData,\n LayoutResult,\n RecognizeResult,\n StructService,\n StructServiceOptions\n} from 'ketcher-core'\n\n// @ts-ignore\nimport IndigoWorker from 'web-worker:./indigoWorker'\n\ninterface KeyValuePair {\n [key: string]: number | string | boolean | object\n}\n\nfunction convertMimeTypeToOutputFormat(\n mimeType: ChemicalMimeType\n): SupportedFormat {\n let format: SupportedFormat\n switch (mimeType) {\n case ChemicalMimeType.Mol: {\n format = SupportedFormat.Mol\n break\n }\n case ChemicalMimeType.Rxn: {\n format = SupportedFormat.Rxn\n break\n }\n case ChemicalMimeType.DaylightSmiles:\n case ChemicalMimeType.ExtendedSmiles: {\n format = SupportedFormat.Smiles\n break\n }\n case ChemicalMimeType.DaylightSmarts: {\n format = SupportedFormat.Smarts\n break\n }\n case ChemicalMimeType.InChI: {\n format = SupportedFormat.InChI\n break\n }\n case ChemicalMimeType.InChIAuxInfo: {\n format = SupportedFormat.InChIAuxInfo\n break\n }\n case ChemicalMimeType.CML: {\n format = SupportedFormat.CML\n break\n }\n case ChemicalMimeType.KET: {\n format = SupportedFormat.Ket\n break\n }\n case ChemicalMimeType.CDXML: {\n format = SupportedFormat.CDXML\n break\n }\n default: {\n throw new Error('Unsupported chemical mime type')\n }\n }\n\n return format\n}\n\nfunction mapCalculatedPropertyName(property: string) {\n let mappedProperty: string | undefined\n switch (property) {\n case 'gross-formula': {\n mappedProperty = 'gross'\n break\n }\n default:\n mappedProperty = property\n break\n }\n\n return mappedProperty\n}\n\nfunction mapWarningGroup(property: string) {\n let mappedProperty: string | undefined\n switch (property) {\n case 'OVERLAP_BOND': {\n mappedProperty = 'overlapping_bonds'\n break\n }\n default:\n mappedProperty = property.toLowerCase()\n break\n }\n\n return mappedProperty\n}\n\nclass IndigoService implements StructService {\n private readonly defaultOptions: StructServiceOptions\n\n constructor(defaultOptions: StructServiceOptions) {\n this.defaultOptions = defaultOptions\n }\n\n info(): Promise<InfoResult> {\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: InfoResult = {\n indigoVersion: msg.payload!,\n imagoVersions: [],\n isAvailable: true\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n worker.postMessage({ type: Command.Info })\n })\n }\n\n convert(\n data: ConvertData,\n options?: StructServiceOptions\n ): Promise<ConvertResult> {\n const { output_format, struct } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: ConvertResult = {\n struct: msg.payload!,\n format: output_format\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: ConvertCommandData = {\n struct,\n format,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<ConvertCommandData> = {\n type: Command.Convert,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n layout(\n data: LayoutData,\n options?: StructServiceOptions\n ): Promise<LayoutResult> {\n const { struct, output_format } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: LayoutResult = {\n struct: msg.payload!,\n format: ChemicalMimeType.Mol\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: LayoutCommandData = {\n struct,\n format,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<LayoutCommandData> = {\n type: Command.Layout,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n clean(data: CleanData, options?: StructServiceOptions): Promise<CleanResult> {\n const { struct, selected, output_format } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: CleanResult = {\n struct: msg.payload!,\n format: ChemicalMimeType.Mol\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: CleanCommandData = {\n struct,\n format,\n options: commandOptions,\n selectedAtoms: selected || []\n }\n\n const inputMessage: InputMessage<CleanCommandData> = {\n type: Command.Clean,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n aromatize(\n data: AromatizeData,\n options?: StructServiceOptions\n ): Promise<AromatizeResult> {\n const { struct, output_format } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: AromatizeResult = {\n struct: msg.payload!,\n format: ChemicalMimeType.Mol\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: AromatizeCommandData = {\n struct,\n format,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<AromatizeCommandData> = {\n type: Command.Aromatize,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n dearomatize(\n data: DearomatizeData,\n options?: StructServiceOptions\n ): Promise<DearomatizeResult> {\n const { struct, output_format } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: AromatizeResult = {\n struct: msg.payload!,\n format: ChemicalMimeType.Mol\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: DearomatizeCommandData = {\n struct,\n format,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<DearomatizeCommandData> = {\n type: Command.Dearomatize,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n calculateCip(\n data: CalculateCipData,\n options?: StructServiceOptions\n ): Promise<CalculateCipResult> {\n const { struct, output_format } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: CalculateCipResult = {\n struct: msg.payload!,\n format: ChemicalMimeType.Mol\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: CalculateCipCommandData = {\n struct,\n format,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<CalculateCipCommandData> = {\n type: Command.CalculateCip,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n automap(\n data: AutomapData,\n options?: StructServiceOptions\n ): Promise<AutomapResult> {\n const { mode, struct, output_format } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const result: AutomapResult = {\n struct: msg.payload!,\n format: ChemicalMimeType.Mol\n }\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: AutomapCommandData = {\n struct,\n format,\n mode,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<CalculateCipCommandData> = {\n type: Command.Automap,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n check(data: CheckData, options?: StructServiceOptions): Promise<CheckResult> {\n const { types, struct } = data\n\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const warnings = JSON.parse(msg.payload!) as KeyValuePair\n\n const result: CheckResult = Object.entries(warnings).reduce(\n (acc, curr) => {\n const [key, value] = curr\n const mappedPropertyName = mapWarningGroup(key)\n acc[mappedPropertyName] = value\n\n return acc\n },\n {}\n )\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: CheckCommandData = {\n struct,\n types,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<CheckCommandData> = {\n type: Command.Check,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n calculate(\n data: CalculateData,\n options?: StructServiceOptions\n ): Promise<CalculateResult> {\n const { properties, struct, selected } = data\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n const calculatedProperties = JSON.parse(msg.payload!) as KeyValuePair\n const result: CalculateResult = Object.entries(\n calculatedProperties\n ).reduce((acc, curr) => {\n const [key, value] = curr\n const mappedPropertyName = mapCalculatedPropertyName(key)\n if (properties.includes(mappedPropertyName)) {\n acc[mappedPropertyName] = value\n }\n\n return acc\n }, {})\n resolve(result)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options\n }\n\n const commandData: CalculateCommandData = {\n struct,\n properties,\n options: commandOptions,\n selectedAtoms: selected || []\n }\n\n const inputMessage: InputMessage<CalculateCommandData> = {\n type: Command.Calculate,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n\n // @ts-ignore\n recognize(blob: Blob, version: string): Promise<RecognizeResult> {\n return Promise.reject('Not supported in standalone mode')\n }\n\n generateImageAsBase64(\n data: string,\n options: GenerateImageOptions = { outputFormat: 'png', backgroundColor: '' }\n ): Promise<string> {\n const { outputFormat, backgroundColor, ...restOptions } = options\n return new Promise((resolve, reject) => {\n const worker: Worker = new IndigoWorker()\n\n worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n worker.terminate()\n const msg: OutputMessage<string> = e.data\n if (!msg.hasError) {\n resolve(msg.payload!)\n } else {\n reject(msg.error)\n }\n }\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...restOptions\n }\n\n const commandData: GenerateImageCommandData = {\n struct: data,\n outputFormat: outputFormat || 'png',\n backgroundColor: backgroundColor,\n options: commandOptions\n }\n\n const inputMessage: InputMessage<GenerateImageCommandData> = {\n type: Command.GenerateImageAsBase64,\n data: commandData\n }\n\n worker.postMessage(inputMessage)\n })\n }\n}\n\nexport default IndigoService\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n ServiceMode,\n StructService,\n StructServiceOptions,\n StructServiceProvider\n} from 'ketcher-core'\n\nimport StandaloneStructService from './standaloneStructService'\n\nclass StandaloneStructServiceProvider implements StructServiceProvider {\n mode: ServiceMode = 'standalone'\n\n createStructService(options: StructServiceOptions): StructService {\n return new StandaloneStructService(options)\n }\n}\nexport default StandaloneStructServiceProvider\n"],"names":["Command","SupportedFormat","convertMimeTypeToOutputFormat","mimeType","format","ChemicalMimeType","Mol","Rxn","DaylightSmiles","ExtendedSmiles","Smiles","DaylightSmarts","Smarts","InChI","InChIAuxInfo","CML","KET","Ket","CDXML","Error","mapCalculatedPropertyName","property","mappedProperty","mapWarningGroup","toLowerCase","IndigoService","defaultOptions","Promise","resolve","reject","worker","IndigoWorker","onmessage","e","terminate","msg","data","hasError","result","indigoVersion","payload","imagoVersions","isAvailable","error","postMessage","type","Info","options","output_format","struct","commandOptions","commandData","inputMessage","Convert","Layout","selected","selectedAtoms","Clean","Aromatize","Dearomatize","CalculateCip","mode","Automap","types","warnings","JSON","parse","Object","entries","reduce","acc","curr","key","value","mappedPropertyName","Check","properties","calculatedProperties","includes","Calculate","blob","version","outputFormat","backgroundColor","restOptions","GenerateImageAsBase64","StandaloneStructServiceProvider","StandaloneStructService"],"mappings":"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"}